関連出願
[0001] 本出願は、2012年1月6日に出願され、そのすべての内容が参照によりここに組み込まれている米国仮出願番号第61/583,914号の利益を主張する。
[0002] 本開示は、ソースデバイスとシンクデバイスとの間でデータを送信するための技法に関しており、より具体的には、シンクデバイスからソースデバイスへのユーザ入力データの送信をサポートする技法およびプロトコルに関する。
[0003] ワイヤレスディスプレイ(WD)またはWi−Fiディスプレイ(WFD)システムは、ソースデバイスおよび1つまたは複数のシンクデバイスを含む。ソースデバイスおよびシンクデバイスの各々は、ワイヤレス通信能力を有するモバイルデバイスまたはワイヤード(wired)デバイスのどちらかでありうる。ソースおよび(1つまたは複数の)シンクのうちの1つまたは複数は、例えば、モバイル電話、タブレットコンピュータ、ワイヤレス通信カードを有する携帯用コンピュータ、携帯情報端末(PDA)、携帯用メディアプレイヤ、または、いわゆる「スマート」フォンおよび「スマート」パッドまたはタブレット、あるいは他のタイプのワイヤレス通信デバイスを含む、無線通信能力を有する他のそのようなデバイスを含むことができる。ソースデバイスおよびシンクデバイスのうちの1つまたは複数はまた、通信能力を含む、テレビ、デスクトップコンピュータ、モニタ、プロジェクタ等のようなワイヤードデバイスも含むことができる。
[0004] ソースデバイスは、音声映像(AV)データのような、メディアデータを特定のメディア共有セッションに参加する(1つまたは複数の)シンクデバイスのうちの1つまたは複数に伝送する。メディアデータは、ソースデバイスの局所的(local)ディスプレイとシンクデバイスのディスプレイの各々との両方でプレイバックされうる。より具体的には、参加するシンクデバイスの各々は、そのスクリーンおよび音声機器上で受信されたメディアデータをレンダリングする(render)。
[0005] 概して、本開示は、ワイヤレスディスプレイ(WD)システムにおけるソースデバイスおよび1つまたは複数のシンクデバイスがユーザインタフェースバックチャネル(User Interface Back Channel:UIBC)をわたる(over)双方向通信をサポートするためにUIBCを拡張することを有効にする技法に関する。ソースおよびシンクデバイスは、現在開発中にある、ワイヤレスHD、ワイヤレスホームデジタルインタフェース(WHDI)、WiGig、ワイヤレスUSBおよびWi−Fiディスプレイ(WFD)規格のような、規格に準拠するWD通信技法をインプリメントし(implement)うる。WFD規格についての追加の情報は、Wi−Fiアライアンス技術協会、ディスプレイタスクグループ(Wi−Fi Alliance Technical Committee, Display Task Group)のWi−Fiアライアンス「Wi−Fi Display Specification draft version 1.31」に見受けられることができ、これは、全体として参照によりここに組み込まれている。WDシステムは、ソースデバイスが、1つまたは複数のシンクデバイスのうちの1つに接続されている1つまたは複数の周辺装置と通信することを可能にするために拡張されたUIBCを利用することができる。例えばシンクデバイスおよび/またはシンク周辺装置が、ソースデバイスよりもユーザに近く位置付けられ、その結果、周辺装置のシンクデバイスへの接続をソースデバイスへのものよりも便利にしている場合、ソースデバイスがシンク周辺装置と通信することを有効にすることは有利でありうる。本開示の技法は、ソースがシンクデバイスとのワイヤレス通信範囲内にあるとき、ソースデバイスが周辺のシンクデバイスと通信することができる「ワイヤレスドッキング(wireless docking)」を可能にすることができる。しかしながら現在のWFD規格は、ソースデバイスが様々なタイプの入力デバイス以外のシンク周辺装置と通信することができるメカニズムを含まない。
[0006] 本開示の態様は、シンクデバイスとして動作するように、ならびにソースデバイスに、およびソースデバイスからUIBCを使用して周辺データをトンネリングする(tunnel)ように構成された計算デバイスに関する。周辺データをトンネリングするために、UIBCは、ユーザ入力の追加の「トンネリング」カテゴリをサポートするように拡張される。例として、ソースおよびシンクデバイスは、シンク周辺装置の周辺デバイスコマンドを含む、周辺データをカプセル化するために追加のトンネリングUIBC入力カテゴリを有するUIBCパケットを利用することができる。UIBCトンネリングカテゴリで識別されるUIBCパケット内の周辺データをカプセル化することによって、周辺装置は、シンクデバイスがUIBCを使用してソースデバイスに転送する(transfer)ことができる(包括的(generic)とは反対の)本来の周辺インタフェースコマンド(例えば、周辺データの一部を備えることができるUSB、Bluetooth(登録商標)、およびPS2コマンド)を発する(issue)ことができる。ソースデバイスは、UIBCトンネリングされた周辺データをカプセル化解除(decapsulate)することができ、周辺装置が直接ホストに接続されているかのように、いずれかのカプセル化解除されたコマンドおよび/またはデータを解釈することができる。同様に、ソースデバイスは、例えば、ソースデバイスのホストインタフェースコントローラから周辺データを受信し、シンクにカプセル化された周辺データを送信することができる。シンクは、周辺データをカプセル化解除し、シンクに接続されている、周辺装置に周辺データを送信することができる。
[0007] 1つの例では、方法は、計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、UIBCを使用して、計算デバイスからカプセル化された周辺データを受信することと、周辺データをカプセル化解除することと、を備える。
[0008] 別の例では、方法は、計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、周辺データを受信することと、周辺データをカプセル化することと、UIBCを使用して計算デバイスにカプセル化された周辺データを送信することと、を備える。
[0009] 別の例では、第1の計算デバイスは、第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立し、UIBCを使用して、第2の計算からカプセル化された周辺データを受信し、周辺データをカプセル化解除するように構成されたユーザインタフェースバックチャネル(UIBC)モジュールを備える。
[0010] 別の例では、第1の計算デバイスは、第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立し、周辺データを受信し、周辺データをカプセル化し、UIBCを使用して、第2の計算デバイスにカプセル化された周辺データを送信するように構成されたユーザインタフェースバックチャネル(UIBC)モジュールを備える。
[0011] 別の例では、第1の計算デバイスは、第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立するための手段と、UIBCを使用して、第2の計算デバイスからカプセル化された周辺データを受信するための手段と、周辺データをカプセル化解除するための手段と、を備える。
[0012] 別の例では、第1の計算デバイスは、第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立するための手段と、周辺データを受信するための手段と、周辺データをカプセル化するための手段と、UIBCを使用して、第2の計算デバイスにカプセル化された周辺データを送信するための手段と、を備える。
[0013] 別の例では、コンピュータ可読記憶媒体は、ソースデバイスにおいて実行されたときに、1つまたは複数のプロセッサに、計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、UIBCを使用して、計算デバイスからカプセル化された周辺データを受信することと、周辺データをカプセル化解除することと、を行わせる命令を記憶する。
[0014] 別の例では、コンピュータ可読記憶媒体は、シンクデバイスにおいて実行されたときに、1つまたは複数のプロセッサに、計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、周辺データを受信することと、周辺データをカプセル化することと、UIBCを使用して計算デバイスにカプセル化された周辺データを送信することとを行わせる命令を記憶する。
[0015] 本開示の1つまたは複数の例の詳細は、添付図面および以下の記述において述べられている。他の特徴、オブジェクト、および利点は、記述、図面、および特許請求の範囲から明らかになる。
本開示の技法にしたがって、周辺データの双方向トンネリングをインプリメントすることができる、実例となるワイヤレスディスプレイ(WD)ソース/シンクシステム100を例示するブロック図である。
本開示の技法にしたがって、周辺データの双方向トンネリングをインプリメントすることができる、実例となるソース/シンクシステム101を例示するブロック図である。
WDシステムのためのデータ通信モデルまたはプロトコルスタックの例を例示するブロック図である。
本開示の技法にしたがって、双方向周辺データトンネリングをサポートするWFDシステムの様々なコンポーネントを例示する概略図である。
シンクデバイスとソースデバイスとの間でカプセル化された周辺データを送信するように使用されることができる、双方向トンネリングパケット400の例を例示する概略図である。
本開示の技法にしたがって、双方向トンネリングパケットのペイロードデータを例示する概略図である。
能力ネゴシエーションセッション(capabilities negotiations session)の一部として、ソースデバイス520とシンクデバイス560との間の例示的なメッセージ転送シーケンスを例示するブロック図である。
本開示の技法にしたがって能力ネゴシエーションを行うための、ソースデバイス520とシンクデバイス560との間の実例となるリアルタイムストリーミングプロトコル(RTSP)メッセージ転送シーケンスを例示する概略図である。
本開示の技法にしたがって、カプセル化された周辺データの双方向トンネリングをインプリメントすることができるソースデバイスの例を例示するブロック図である。
ソースデバイスへの、およびソースデバイスからの周辺データの双方向トンネリングをサポートするための技法をインプリメントするシンクデバイスの例を例示するブロック図である。
本開示の技法にしたがって、周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。
周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。
周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。
周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。
詳細な説明
[0030] 本開示は、概して、ソースデバイスがシンクデバイスと通信することができるシステムに関する。ソースデバイスおよびシンクデバイスはワイヤレス通信をサポートすることができる。通信セッションの一部として、ソースデバイスは、シンクデバイスに音声および映像データを送信することができ、シンクデバイスは、シンクデバイスで受信されたユーザ入力をワイヤレスソースデバイスに返送することができる。この方法で、シンクデバイスのユーザは、ソースデバイスを制御し、ソースデバイスからシンクデバイスに送信されているコンテンツを制御することができる。
[0031] 本開示の技法にしたがって、携帯電話のような計算デバイスを有するユーザは、オフィスのような環境に歩き込み、その環境で、彼または彼女の主要な処理エンジンとして携帯電話を利用する接続された周辺デバイスのアレイ(array)を有するシンクデバイスを使用することができる。1つの例として、ユーザは、携帯電話に記憶されたファイルを有し、Eメールを介してそれらを送信する前にそれらのファイルを編集することを求めうる。しかしながら、ユーザは、より大きなディスプレイとフルサイズのキーボードを有するデスクトップコンピュータ上でそのようなタスクを行うことを好みうる。キーボードに加えて、デスクトップは、ユーザインタフェースデバイス、記憶デバイス、プリンタ、および他のそのような周辺デバイスを含む関連付けられた周辺デバイスのグループを有することができる。本開示の技法にしたがって、ユーザは、携帯電話上でアプリケーションを作動させるためにデスクトップコンピュータを利用することができる。この方法で、処理の大部分が携帯電話で生じている間、ユーザはデスクトップコンピュータ上での動作のユーザエクスペリエンス(user experience)を表示されることができる。そのような動作環境では、処理の大部分がその電話で生じている間にユーザが、デスクトップのエクスペリエンスを忠実に思い起こさせるユーザエクスペリエンスを有するように、その電話は、デスクトップコンピュータの周辺デバイスとインタフェースで接続することができる必要がありうる。
[0032] 本開示の技法は、ユーザ入力チャネル(UIC)としても称されうる、UIBCをわたった双方向通信を有効にするために、「トンネリング」カテゴリとして称される、新たな入力カテゴリを加えることによって、ユーザ入力バックチャネル(UIBC)を双方向になるように拡張する。したがって、本開示の技法は、いくつかの事例では、ユーザに、複数のシンクデバイスのシンク周辺デバイスのアレイだけでなくそれらのデータにもアクセスすることができる便宜性を与えることができる。明らかになるように、電話およびデスクトップを用いた上記で与えられた具体的な例は、本開示の技法が使用されうる環境およびデバイスの多くの例のうちの1つでしかない。
[0033] UICを使用して、シンクデバイスは、不可知の方法(agnostic manner)で、ソースデバイスと、シンクデバイスに接続された周辺装置との間でシンクデバイスに接続された周辺装置のデータを送信および受信することができる。ソースデバイスは、周辺装置から受信されたデータの処理を有効にするためにインストールされたシンクデバイスと関連付けられた周辺装置のドライバを有することができる。いくつかの構成では、シンクデバイスもまた、インストールされているけれども制限された能力を持つ周辺ドライバ(peripheral drivers)を有することができる。シンクデバイスは、本開示で記述されている技法にしたがって、周辺デバイスとインタフェースで接続し、周辺装置に対してデータをカプセル化および回送(forward)することができる。ソースデバイスおよびシンクデバイスは、特定の周辺インタフェース技術の周辺データの双方向トンネリングをサポートするために、トンネリングを利用することにネゴシエートおよび合意するリアルタイムストリーミングプロトコル(RTSP)に基づく制御プロシージャを利用することができる。ソースデバイスおよびシンクデバイスはまた、各シンクデバイス、および各シンクデバイスに接続された周辺装置を識別するためにトンネリングコンテキスト情報を交換することができる。ソースデバイスおよびシンクデバイスは、UIC周辺装置をカプセル化し、TCP/IP接続をわたってデータを伝送することができる。ソースデバイスおよびシンクデバイスは、カプセル化された周辺データを送信するときにトンネリングコンテキスト情報を含むUIC特有ヘッダを送信することができる。共有ヘッダは、そのデータを周辺データとして識別することができ、ヘッダはさらに、特定のシンクデバイスだけでなく特定の周辺装置を識別する情報を含むことができる。
[0034] 図1Aは、本開示の技法にしたがって、周辺データの双方向トンネリングをインプリメントすることができる、実例となるワイヤレスディスプレイ(WD)ソース/シンクシステム100を例示するブロック図である。図1Aで提示されているように、システム100は、通信チャネル150を介してシンクデバイス160と通信するソースデバイス120を含む。ソースデバイス120は、音声/映像(A/V)データを記憶するメモリ121、ディスプレイ122、スピーカ123、(エンコーダ124としても称される)音声/映像エンコーダ124、音声/映像制御モジュール125、送信機/受信機(TX/RX)ユニット126、ホストインタフェースコントローラ127(HICs127)、およびドライバ128を含むことができる。シンクデバイス160は、ディスプレイ162、スピーカ163、(デコーダ164としても称される)音声/映像デコーダ164、ホストインタフェースコントローラ165(HICs165)、送信機/受信機ユニット166、ユニット入力(UI)デバイス167、ユーザ入力処理モジュール(UIPM)168、およびドライバ169を含むことができる。シンクデバイス160は、1つまたは複数の周辺デバイス170に接続されることができる。例示されたコンポーネントは、単にソース/シンクシステム100のための1つの実例となる構成の構成要素となる。他の構成は、例示されるものよりも少ないコンポーネントを含むことができる、あるいは例示されるものよりも追加のコンポーネント含むことができる。
[0035] 図1Aの例において、ソースデバイス120は、ディスプレイ122上に音声/映像データの映像部分をディスプレイすることができ、スピーカ123で音声/映像データの音声部分を出力することができる。音声/映像データは、メモリ121に局所的に記憶され、ファイルサーバ、Blu−ray(登録商標)ディスク、またはDVD、のような外部記憶媒体からアクセスされ、あるいは、インターネットのようなネットワーク接続を介してソースデバイス120にストリーミングされることができる。いくつかの事例では、音声/映像データは、ソースデバイス120のマイクロフォンおよびカメラを介してリアルタイムに捕捉されうる。音声/映像データは、動画、テレビ番組、または音楽のようなマルチメディアコンテンツを含むことができるけれども、ソースデバイス120によって生成されたリアルタイムコンテンツを含むこともできる。そのようなリアルタイムコンテンツは、例えば、ソースデバイス120上で作動するアプリケーションによって作り出されうる。より詳細に記述されることになるように、いくつかの事例では、そのようなリアルタイムコンテンツは、いくつかの例において、ユーザが選択するのに利用可能なユーザ入力オプションの映像フレームを含むことができる。いくつかの事例では、音声/映像データは、映像のフレームに重ね合わせられたユーザ入力オプションを有する動画またはTVプログラムの映像フレームのような、異なるタイプのコンテンツの組み合わせである映像フレームを含むことができる。
[0036] ディスプレイ122およびスピーカ123を局所的に介して音声/映像データをレンダリングすることに加えて、ソースデバイス120の音声/映像エンコーダ124は、音声/映像データを符号化することができ、送信機/受信機ユニット126は、シンクデバイス160に通信チャネル150をわたって符号化されたデータを送信することができる。シンクデバイス160の送信機/受信機ユニット166は、符号化されたデータを受信し、音声/映像デコーダ164は、符号化されたデータを復号し、ディスプレイ162およびスピーカ163を介して復号されたデータを出力する。この方法で、ディスプレイ122およびスピーカ123によってレンダリングされている音声および映像データは、同時にディスプレイ162およびスピーカ163によってレンダリングされうる。音声データおよび映像データはフレーム内で配列され、音声フレームは、レンダリングされるとき、映像フレームと時間同期されうる。
[0037] 音声/映像エンコーダ124および音声/映像デコーダ164は、MPEG4、Part10、アドバンスト映像コーディング(AVC)、または時としてH.265規格と呼ばれる新興の高効率映像コーディング(HEVC)規格として代わりに称される、ITU−T H.264規格のような、あらゆる数の音声および映像圧縮規格をインプリメントしうる。一般的に言えば、音声/映像デコーダ164は、音声/映像エンコーダ124の相互コーディング(reciprocal coding)動作を実行するように構成される。図1Aでは図示されていないけれども、いくつかの態様では、A/Vエンコーダ124およびA/Vデコーダ164は、各々音声エンコーダおよびデコーダと一体化し、共通のデータストリームまたは別個のデータストリームにおける音声および映像の両方の符号化を取り扱うために、適切なMUX−DEMUXユニットまたは他のハードウェアおよびソフトウェアを含むことができる。
[0038] 以下でより詳細に記述されることになるように、A/Vエンコーダ124はまた、上記で記述されたような映像圧縮規格をインプリメントすることに加えて、他の符号化機能を行うこともできる。例えば、A/Vエンコーダ124は、A/Vデータがシンクデバイス160に送信される前にA/Vデータに様々なタイプのメタデータを加えることができる。いくつかの事例では、A/Vデータは、符号化された形態でソースデバイス120に記憶される、あるいはソースデバイス120で受信されることができ、それによりA/Vエンコーダ124によるさらなる圧縮を要求しない。
[0039] 図1Aは、音声ペイロードデータおよび映像ペイロードデータを別個で搬送する通信チャネル150を図示しているけれども、いくつかの事例では、映像ペイロードデータおよび音声ペイロードデータは共通のデータストリームの一部でありうることは理解されるべきである。適用可能である場合、MUX−DEMUXユニットは、ITU.H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに従うことができる。音声/映像エンコーダ124および音声/映像デコーダ164は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらのあらゆる組み合わせとしてインプリメントされうる。音声/映像エンコーダ124および音声/映像デコーダ164の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることができ、それらのどちらかは、組み合わされたエンコーダ/デコーダ(CODEC)の一部として一体化されうる。
[0040] ディスプレイ122およびディスプレイ162は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々な映像出力デバイスのいずれも備えることができる。スピーカ123は、ヘッドフォン、単一スピーカシステム、マルチスピーカシステム、またはサラウンド音響システムのような様々な音声出力デバイスのいずれも備えることができる。加えて、ディスプレイ122およびスピーカ123は、ソースデバイス120の一部として図示され、ディスプレイ162およびスピーカ163は、シンクデバイス160の一部として図示されているけれども、ソースデバイス120およびシンクデバイス160は、実際にデバイスのシステムでありうる。1つの例として、ディスプレイ162はテレビであることができ、スピーカ163はサラウンド音響システムであることができ、デコーダ164は、ディスプレイ162およびスピーカ163にワイヤード(wired)またはワイヤレスのどちらかで接続された外部ボックスの一部であることができる。他の事例では、シンクデバイス160は、タブレットコンピュータまたはスマートフォンのような単一デバイスでありうる。また他のケースでは、ソースデバイス160およびシンクデバイス120は、例えば両方がスマートフォン、タブレットコンピュータである等、類似のデバイスである。このケースでは、1つのデバイスはソースとして動作し、もう一方はシンクとして動作しうる。これらの役割は、後の通信セッションで逆にされる(be reversed)ことさえできる。
[0041] スピーカ123およびスピーカ163は、ヘッドフォン、単一スピーカシステム、マルチスピーカシステム、またはサラウンド音響システムのような様々な音声出力デバイスのいずれも備えることができる。加えて、ディスプレイ122およびスピーカ163は、ソースデバイス120の一部として図示され、ディスプレイ162およびスピーカ163は、シンクデバイス160の一部として図示されているけれども、ソースデバイス120およびシンクデバイス160は、実際にデバイスのシステムでありうる。1つの例として、ディスプレイ162はテレビであることができ、スピーカ163はサラウンド音響システムであることができ、A/Vデコーダ164は、ディスプレイ162およびスピーカ163にワイヤードまたはワイヤレスのどちらかで接続された外部ボックスの一部であることができる。
[0042] 他の事例では、シンクデバイス160は、タブレットコンピュータまたはスマートフォンのような単一デバイスでありうる。また他のケースでは、ソースデバイス120およびシンクデバイス160は、例えば両方がスマートフォン、タブレットコンピュータである等、類似のデバイスでありうる。このケースでは、1つのデバイスはソースデバイスとして動作し、もう一方はシンクデバイスとして動作しうる。これらの役割は、後の通信セッションで逆にされることができる。また他のケースでは、ソースデバイス120は、スマートフォン、ラップトップ、またはタブレットコンピュータのようなモバイルデバイスを備えることができ、シンクデバイス160は、(例えば、AC電力コードを有する)より固定されたデバイスを備えることができ、そのケースではソースデバイス120は、シンクデバイス160を介して1つまたは複数の視聴する人(viewer)への表示のために音声および映像データを配信することができる。
[0043] ソースデバイス120およびシンクデバイス160は、ホストインタフェースコントローラ127および164をそれぞれ含むことができる。ホストインタフェースコントローラ127および165は、例えば、USB、BLUETOOTH(登録商標)、セキュアデジタル入力出力(SDIO)、シリアルATアタッチメント(SATA)、FIREWIREデバイス、外部シリアルATA(ESATA)デバイス、または計算デバイスに接続されうる周辺デバイスのあらゆる他のタイプ等の、様々なインタフェースをわたってソースデバイス120およびシンクデバイス160が周辺デバイス170と通信することを可能にする1つまたは複数のインタフェースコントローラを備えることができる。いくつかの、さらにより具体的な例では、周辺デバイス170は、デジタルカメラ、ワイヤレスドック(wireless docks)、セキュアデジタルカードリーダ、外部ハードドライブ、および/またはフラッシュドライブのようなデバイスを含むことができる。
[0044] ドライバ128および169は、ホストインタフェースコントローラ127および165をそれぞれ制御することができる。ドライバ128および169は各々、ソフトウェア、ハードウェア、ファームウェア、またはホストインタフェースコントローラ127および165を制御するように使用されることができるあらゆる他の技術を備えることができる。いくつかの例では、ドライバ128は、周辺デバイス170のインタフェースのいくつかまたは全てを使用して接続されるデバイスをサポートすることができるドライバであることができる。ドライバ169は、ドライバ128と比較されると、ドライバ128の機能のサブセットのみを含みうる、「軽量」のドライバを備えることができる。例として、ドライバ169は、周辺デバイス170の各々の1つまたは複数のインタフェースを列挙し、UICデータをカプセル化およびカプセル化解除する能力を含むことができる。しかしながら、ドライバ169は、インタフェース特有パケットを解釈する、あるいは周辺デバイス170のうちの1つの特定のインタフェースを選択する、能力に欠けうる。この方法で、ドライバ169およびホストインタフェースコントローラ165は、ドライバ128およびホストインタフェースコントローラ127と比較されるとより少ない周辺データの処理を行いうる。低減された処理は、その結果として、シンクデバイス160が、周辺デバイス170と通信するために、より少ない電力を消費すること、および/またはより簡素なハードウェアを使用することを有効にしうる。より簡素なハードウェアおよび/またはシンクデバイス160の低減された処理は、いくつかのケースでは、シンクデバイス160の電力消費を低減することができる。
[0045] 送信機/受信機ユニット126および送信機/受信機ユニット166は各々、様々なミキサ、フィルタ、増幅器、および信号変調のために設計された他のコンポーネントを、1つまたは複数のアンテナおよび、データを送信および受信するために設計された他のコンポーネントと同様に含むことができる。通信チャネル150は、ソースデバイス120からシンクデバイス160に映像データを送信するための、あらゆる適した通信媒体または異なる通信媒体の集合を概して表す。通信チャネル150は、大抵、比較的短距離の通信チャネルであり、定義された2.4GHz、3.6GHz、5GHz、60GHz、または超高帯域(UWB)周波数帯域構造をインプリメントするような、Wi−Fi、Bluetooth等に類似する物理チャネル構造をインプリメントすることができる。しかしながら、通信チャネル150は、この点で必ずしも限定されず、無線周波数(RF)スペクトルまたは1つまたは複数の物理送信ラインのようなあらゆるワイヤレスまたはワイヤード通信媒体、あるいはワイヤレスおよびワイヤード媒体のあらゆる組み合わせを備えることができる。他の例では、通信チャネル150は、ワイヤードまたはワイヤレスローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークのような、パケットに基づくネットワークの一部を形成さえしうる。加えて、通信チャネル150は、ピアツーピアリンクを生成するためにソースデバイス120およびシンクデバイス160によって使用されうる。
[0046] ソースデバイス120およびシンクデバイス160は、例えば、リアルタイムストリーミングプロトコル(RTSP)制御メッセージを使用する能力ネゴシエーションにしたがって通信セッションを確立することができる。1つの例では、通信セッションを確立するための要求は、シンクデバイス160にソースデバイス120によって伝送されうる。一度メディア共有セッションが確立されると、ソースデバイス120は、リアルタイム転送プロトコル(RTP)を使用して参加しているシンクデバイス160に、例えば音声映像(AV)データのようなメディアデータを送信する。シンクデバイス160は、そのディスプレイおよび音声機器(図1Aには図示せず)上で受信されたメディアデータをレンダリングする。
[0047] ソースデバイス120およびシンクデバイス160はその後、IEEE802.11ファミリの規格のうちの規格のような通信プロトコルを使用して、通信チャネル150をわたって通信することができる。1つの例では、通信チャネル150は、ネットワーク通信チャネルでありうる。この例では、通信サービスプロバイダが、ネットワークハブとして基地局を使用して1つまたは複数のネットワークを中心的に動作させ、管理することができる。ソースデバイス120およびシンクデバイス160は、例えば、ソースデバイス120およびシンクデバイス160が、ワイヤレスアクセスポイントまたはいわゆるホットスポット(hotspots)のような媒介(intermediary)を使用することなく互いに直接通信するように、Wi−FiダイレクトまたはWi−Fiディスプレイ(WFD)規格にしたがって通信することができる。ソースデバイス120およびシンクデバイス160はまた、ネットワーク輻輳(congestion)を回避または低減するために、トンネルされた直接リンクセットアップ(tunneled direct link setup)(TDLS)を確立することもできる。WFDおよびTDLSは、比較的短距離の通信セッションをセットアップするように意図されている。このコンテキストにおける比較的短距離とは、例えば、雑音のある、または妨害された環境において、デバイス間の距離が約35メートルよりも小さいまたは約20メートルよりも小さい等、さらに短くなりうるけれども、約70メートルよりも小さいことを称しうる。
[0048] 本開示の技法は、時に触れてWFDに関係して記述されうるけれども、これらの技法の態様はまた、他の通信プロトコルとも互換性がありうると考慮される。限定ではなく例としてソースデバイス120とシンクデバイスとの間のワイヤレス通信は、直交周波数分割多重(OFDM)技法を利用することができる。幅広い種類の他のワイヤレス通信技法はまた、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、符号分割多元接続(CDMA)、またはOFDM、FDMA、TDMA、および/またはCDMAのあらゆる組み合わせに限定されないけれどもそれらを含み、使用されることができる。
[0049] ソースデバイス120から受信されたデータを復号およびレンダリングすることに加えて、シンクデバイス160は、ユーザ入力デバイス167からユーザ入力を受信することもできる。ユーザ入力デバイス167は、例えば、キーボード、マウス、トラックボール(trackball)またはトラックパッド、タッチスクリーン、ボイスコマンド認識モジュール、またはあらゆる他のそのようなユーザ入力デバイスでありうる。UIPM172は、ソースデバイス120が処理できるデータパケット構造に、ユーザ入力デバイス170によって受信されるユーザ入力コマンドをフォーマットする。そのようなデータパケットは、通信チャネル150をわたってソースデバイス120に送信機/受信機166によって送信される。送信機/受信機ユニット126は、データパケットを受信し、A/V制御モジュール130は、ユーザ入力デバイス167によって受信されたユーザ入力コマンドを解釈するためにデータパケットを解析する。データパケットにおいて受信されたコマンドに基づいて、A/V制御モジュール125は、符号化および送信されているコンテンツを変更しうる。この方法で、シンクデバイス160のユーザは、遠隔で、ならびにソースデバイス120と直接相互動作することなく、ソースデバイス120によって送信されている音声ペイロードデータおよび映像ペイロードデータを制御することができる。
[0050] 加えて、シンクデバイス160のユーザは、ソースデバイス120上のアプリケーションを開始および制御することができることがある。例えば、シンクデバイス160のユーザは、ソースデバイス120に記憶された写真編集アプリケーションを開始し、ソースデバイス120に局所的に記憶されている写真を編集するためのアプリケーションを使用することができる。シンクデバイス160は、実際に写真がソースデバイス120で編集されている間に写真がシンクデバイス160で局所的に編集されているように見える、ならびに感じるユーザエクスペリエンスをユーザに表示することができる。そのような構成を使用して、デバイスユーザは、いくつかのデバイスで使用する1つのデバイスの能力を活用することができる。例えば、ソースデバイス120は、大容量のメモリおよび高性能の処理能力を有するスマートフォンであることができ、ソースデバイス120のユーザは、スマートフォンが通常使用される全ての設定および状況においてスマートフォンを使用することができる。動画を視聴しているとき、ユーザは、より大きなディスプレイスクリーンを有するデバイスで動画を視聴することを望み、そのケースでは、シンクデバイス160がタブレットコンピュータでありうる。emailを伝送またはemailに応答したいとき、ユーザは、物理的なキーボードを有するデバイスを使用することを望み、そのケースではシンクデバイス160はラップトップでありうる。両方の事例において、ユーザがシンクデバイス160と相互動作するけれども大量の処理が、依然としてソースデバイス120によって行われうる。ソースデバイス120およびシンクデバイス160は、通信チャネル150をわたったあらゆる所与のセッションにおいてデバイスの能力をネゴシエートおよび/または識別するために使用されるデータのような、制御データを送信することによって2方向の相互動作を容易にすることができる。
[0051] いくつかの構成では、A/V制御モジュール125は、ソースデバイス125の動作システムによって実施されている動作システムプロセスでありうる。しかしながら他の構成では、A/V制御モジュール125は、ソースデバイス120上で作動するアプリケーションのソフトウェアプロセスでありうる。そのような構成では、ユーザ入力コマンドは、ソースデバイス120上で作動する動作システムとは反対に、シンクデバイス160のユーザがソースデバイス120上で作動するアプリケーションと直接相互動作するように、ソフトウェアプロセスによって解釈されうる。動作システムと反対にアプリケーションと直接相互動作することによって、シンクデバイス160のユーザは、ソースデバイス120の動作システムに生来属していないコマンドのライブラリへのアクセスを有すことができる。加えて、アプリケーションと直接相互動作することは、コマンドが異なるプラットフォーム上で作動するデバイスによってより容易に送信および処理されうることを有効にする。
[0052] ソースデバイス120は、ワイヤレスシンクデバイス160で適用されるユーザ入力に応答することができる。そのような相互動作のアプリケーション設定では、ワイヤレスシンクデバイス160で適用されるユーザ入力は、通信チャネル150をわたってワイヤレスディスプレイソースに伝送し返されうる。1つの例では、UIBCとしても称される、逆チャネルアーキテクチャは、シンクデバイス160がシンクデバイス160で適用されるユーザ入力をソースデバイス120に送信することを有効にするようにインプリメントされうる。逆チャネルアーキテクチャは、ユーザ入力をトランスポートするためのより上部のレイヤメッセージ、およびシンクデバイス160およびソースデバイス120でユーザインタフェース能力をネゴシエートするためのより下部のレイヤフレームを含むことができる。UIBCは、シンクデバイス160とソースデバイス120との間のインターネットプロトコル(IP)トランスポートレイヤをわたって存在しうる。この方法で、UIBCは、開放型システム間相互接続(OSI)通信モデルにおいてトランスポートレイヤよりも上部にありうる。1つの例では、OSI通信は、7つのレイヤ(1−物理、2−データリンク、3−ネットワーク、4−トランスポート、5−セッション、6−プレゼンテーション、および7−アプリケーション)を含む。この例では、トランスポートレイヤよりも上にあることは、レイヤ5、6、および7を称する。信頼性のある送信を促すために、ならびにユーザ入力データを含むデータパケットのシーケンス配信において、UIBCは、TCIP/IPまたはUDPのような他のパケットに基づく通信プロトコルの最上部で作動するように構成されうる。UDPおよびTCPは、OSIレイヤアーキテクチャと並行で動作しうる。TCP/IPは、シンクデバイス160およびソースデバイス120がパケット損失のイベントにおいて再送信技法をインプリメントすること有効にすることができる。
[0053] 本開示の技法は、概して、例えばシンクデバイス160のような、シンクデバイスと関連付けられた入力デバイスのデータおよび入力データを送信するための一方向通信チャネルとしてWFD規格内で定義されている、UIBCを拡張することに関する。本開示の技法は、シンクデバイス160に接続された、例えば周辺デバイス170のようなシンク周辺装置からソースデバイス120に通信チャネル150を介して、周辺データを送信するための双方向通信チャネルをサポートすることを含むようにUIBCを拡張する。同様に、ソースデバイス120は、通信チャネル150を介して周辺デバイス170に周辺データを送信することができる。より具体的には、通信チャネル150は、「トンネリング」をサポートするように拡張されうる。本開示のコンテキストでは、トンネリングは、UIBCのデータ接続内で周辺データをカプセル化することを称しうる。
[0054] 本開示の技法にしたがって、ソースデバイス120またはシンクデバイス160は、第1のデバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立し、UIBCを使用して第1のデバイスからカプセル化された周辺データを受信し、周辺データをカプセル化解除するように構成されうる。ソースデバイス120またはシンクデバイス160はまた、本開示の技法にしたがって、第1のデバイスへの双方向UIBCを確立し、周辺データを受信し、周辺データをカプセル化し、ならびにUIBCを使用して第1のデバイスに周辺データを送信するように構成されるUIBCモジュールを含むこともできる。ソースデバイス120またはシンクデバイス160はまた、第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立し、周辺データを受信し、周辺データをカプセル化し、ならびにUIBCを使用して第2の計算デバイスに周辺データを送信するように構成されるUIBCモジュールを含むこともできる。
[0055] カプセル化された周辺データの双方向送信をサポートするように拡張されていることに加えて、UIBCは、クロスプラットフォームのユーザ入力データを含む、様々なタイプのユーザ入力データをトランスポートするように設計されうる。例えば、ソースデバイス120は、iOS(登録商標)動作システムを作動させ、一方でシンクデバイス160は、Android(登録商標)またはWindows(登録商標)のような別の動作システムを作動させる。プラットフォームに関わらず、UIPM168は、A/V制御モジュール125に理解可能な形態で、受信されたユーザ入力をカプセル化することができる。多くの異なるタイプのユーザ入力フォーマットは、多数の異なるタイプのソースおよびシンクデバイスが、プロトコルを有効に使うことを可能にするように、UIBCによってサポートされうる。包括的入力フォーマットは定義され、プラットフォーム特有入力フォーマットは両方ともサポートされ、それにより、ユーザ入力がUIBCによってソースデバイス120とシンクデバイス160との間で通信されることができる方法で柔軟性(flexibility)を提供する。
[0056] 図1Aの例では、ソースデバイス120は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、WIFIが有効にされたテレビ、または音声および映像データを送信することができるあらゆる他のデバイスを備えることができる。シンクデバイス160は同様に、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、WIFIが有効にされたテレビ、または音声および映像データを受信し、ユーザ入力データを受信することができるあらゆる他のデバイスを備えることができる。いくつかの事例では、シンクデバイス160は、ディスプレイ162、スピーカ163、UIデバイス167、A/Vエンコーダ164、および別個であるけれども対話型のデバイスの全ての部分のような、デバイスのシステムを含むことができる。ソースデバイス120は、同様に、単一のデバイスよりもむしろデバイスのシステムでありうる。
[0057] 本開示では、ソースデバイスという用語は、概して、音声/映像データを送信しているデバイスを称するように使用され、シンクデバイスという用語は、概して、ソースデバイスから音声/映像データを受信しているデバイスを称するように使用される。多くのケースでは、ソースデバイス120およびシンクデバイス160は、ソースとして動作する1つのデバイスとシンクとして動作する他のデバイスとを有する、同様の、または同一のデバイスでありうる。さらに、これらの役割は、異なる通信セッションでは逆にされうる。したがって、1つの通信セッションにおけるシンクデバイスは、後の通信セッションにおけるソースデバイスであることができ、またその逆も同様である。ソースデバイス120とシンクデバイス160の両方は、通信チャネル150をわたったワイヤレス通信をサポートするデバイスでありうる。
[0058] 図1Bは、本開示の技法にしたがって、周辺データの双方向トンネリングをインプリメントすることができる、実例となるソース/シンクシステム101を例示するブロック図である。ソース/シンクシステム101は、ソースデバイス120およびシンクデバイス160を含み、その各々は、図1Aに関して上で記述された方法で機能および動作することができる。ソース/シンクシステム101はさらに、シンクデバイス180を含む。上で記述されたシンクデバイス160と同様の方法で、シンクデバイス180は、ソースデバイス120から音声および映像データを受信することができる。シンクデバイス160およびソースデバイス120は、確立されたUICをわたってカプセル化された周辺データを送信および受信することができる。
[0059] いくつかの構成では、シンクデバイス160およびシンクデバイス180は、互いに独立して動作することができ、ソースデバイス120における音声および映像データ出力は、シンクデバイス160およびシンクデバイス180で同時に出力されうる。代わりの構成では、シンクデバイス160は、主要のシンクデバイスであり、シンクデバイス180は二次的なシンクデバイスでありうる。そのような実例となる構成では、シンクデバイス160およびシンクデバイス180は結合され、シンクデバイス160が映像データをディスプレイしうる一方で、シンクデバイス180は対応する音声データを出力する。
[0060] 図2は、WDシステムのためのデータ通信モデルまたはプロトコルスタックの例を例示するブロック図である。データ通信モデル200は、インプリメントされるWDシステムにおいてソースデバイスとシンクデバイスとの間でデータを送信するために使用されるデータと制御プロトコルとの間の相互動作を例示している。1つの例では、WDシステム100はデータ通信モデル200を使用することができる。データ通信モデル200は、物理(PHY)レイヤ202、メディアアクセス制御(MAC)レイヤ(204)、インターネットプロトコル(IP)206、ユーザデータグラムプロトコル(UDP)208、リアルタイムプロトコル(RTP)210、MPEG2トランスポートストリーム(MPEG2−TS)212、コンテンツ保護214、パケット化エレメンタリストリーム(PES)パケット化216、映像コデック(codec)218、音声コデック220、トランスポート制御プロトコル(TCP)222、リアルタイムストリーミングプロトコル(RTSP)224、双方向周辺データトンネル228、ヒューマンインタフェースデバイス定数(human interface device constants)230、包括的ユーザ入力232、および性能分析234を含む。
[0061] 物理レイヤ202およびMACレイヤ204は、WDシステムにおける通信のために使用される物理シグナリング、アドレス指定、チャネルアクセス制御を定義することができる。物理レイヤ202およびMACレイヤ204は、例えば、2.4GHz、3.6GHz、5GHz、60GHz、で定義された米国連邦通信委員会の帯域のような、通信のために使用される周波数帯域構造、または超高帯域(UWB)周波数帯域構造を定義しうる。物理レイヤ202およびMAC204は、例えば、アナログおよびデジタル振幅変調技法、周波数変調技法、位相変調技法、およびそれらの組み合わせ、のようなデータ変調技法を定義することもできる。物理レイヤ202およびMAC204はまた、例えば時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、符号分割多元接続(CDMA)、またはOFDM、FDMA、TDMA、および/またはCDMAのあらゆる組み合わせのような多重化技法を定義しうる。1つの例では、物理レイヤ202および媒体アクセス制御レイヤ204は、WFDによって提供されるもののような、Wi−Fi(例えば、IEEE802.11−2007および802.11n−2009x)規格によって定義されうる。他の例では、物理レイヤ202およびが媒体アクセス制御レイヤ204は、ワイヤレスHD、ワイヤレスホームデジタルインタフェース(WHDI)、WiGig、およびワイヤレスUSBのいずれかによって定義されうる。
[0062] インターネットプロトコル(IP)206、ユーザデータグラムプロトコル(UDP)208、リアルタイムプロトコル(RTP)210、トランスポート制御プロトコル(TCP)222、リアルタイムストリーミングプロトコル(RTSP)224は、WDシステムにおいて使用されるパケット構造およびカプセル化を定義し、インターネットエンジニアリングタスクフォース(IETF)によって維持されている規格にしたがって定義されうる。
[0063] RTSP224は、能力をネゴシエートし、セッションを確立し、セッション維持と管理を行うために、ソースデバイス120およびシンクデバイス160によって使用されうる。ソースデバイス120およびシンクデバイス160は、UIBCをわたったトンネリングをサポートするために、ソースデバイス120およびシンクデバイス160の能力をネゴシエートするように、RTSPメッセージトランザクション(transaction)を使用して双方向周辺データトンネル228を確立することができる。双方向周辺データトンネル228を確立するためのRTSPネゴシエーションの使用は、メディア共有セッションおよび/またはUIBCを確立するためのRTSPネゴシエーションプロセスを使用することに類似しうる。
[0064] 例えば、ソースデバイス120は、シンクデバイス160に、ソースデバイス120にとって興味深い能力のリストを指定する能力要求メッセージ(例えば、RTSP GET_PARAMETER要求メッセージ)を伝送しうる。本開示の技法にしたがって、能力要求メッセージは、UIBCをわたったカプセル化された周辺データの双方向トンネリングをサポートする能力を含むことができる。シンクデバイス160は、ソースデバイス120に、双方向周辺データトンネルをサポートする能力を能力応答メッセージ(例えば、RTSP GET_PARAMETER応答メッセージ)で応答することができる。例として、能力応答メッセージは、シンクデバイス160がUIBCをわたった周辺データの双方向トンネリングをサポートする場合、「はい」を示しうる。ソースデバイス120はその後、シンクデバイス160にトンネルが周辺データをカプセル化するために使用されることになることを示す肯定応答要求メッセージ(例えば、RTSP SET_PARAMETER要求メッセージ)を伝送しうる。シンクデバイス160は、ソースデバイス120に、フィードバックチャネルがメディア共有セッション中に使用されることになることを肯定応答する肯定応答メッセージ(例えば、RTSP SET_PARAMETER応答メッセージ)で応答しうる。一度ソースデバイス120およびシンクデバイス160がUICを利用することに合意すると、
[0065] 映像コデック218は、WDシステムによって使用されうる映像データコーディング技法を定義しうる。映像コデック218は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264、VP8および高効率映像コーディング(HEVC)のような映像圧縮規格のあらゆる数をインプリメントしうる。いくつかの事例では、WDシステムが圧縮のビデオデータまたは非圧縮のビデオデータのどちらかを使用しうることは留意されるべきである。
[0066] 音声コデック220は、WDシステムによって使用されうる音声データコーディング技法を定義しうる。音声データは、Dolbyおよびデジタルシアターシステムによって発展されたもののようなマルチチャネルフォーマットを使用してコード化されうる。音声データは、圧縮または非圧縮されたフォーマットを使用してコード化されうる。圧縮された音声フォーマットの例は、MPEG−1、2音声レイヤIIおよびIII、AC−3、AACを含む。非圧縮された音声フォーマットの例は、パルス−コード変調(PCM)音声フォーマットを含む。
[0067] パケット化エレメンタリストリーム(PES)パケット化216およびMPEG2トランスポートストリーム(MPEG2−TS)212は、どのようにコード化された音声および映像データがパケット化および送信されるかを定義することができる。パケット化エレメンタリストリーム(PES)パケット化216およびMPEG−TS212は、MPEG−2Part1にしたがって定義されうる。他の例では、音声および映像データは、他のパケット化およびトランスポートストリームプロトコルにしたがってパケット化および送信されうる。コンテンツ保護214は、音声または映像データの認可されていないコピーに対する保護を提供することができる。1つの例では、コンテンツ保護214は、高帯域幅デジタルコンテンツ保護2.0仕様にしたがって定義されうる。双方向周辺データトンネル228は、どのように周辺データがカプセル化され、送信されるかを定義しうる。
[0068] 図3は、本開示の技法にしたがって、双方向周辺データトンネリングをサポートするWFDシステムの様々なコンポーネントを例示する概略図である。図3の例は、ソースデバイス302およびシンクデバイス352を含む。ソースデバイス302およびシンクデバイス302は、RTSP制御チャネル304、音声視覚(AV)チャネル306、およびユーザ相互動作チャネル308、の3つのチャネルを介して接続されうる。ユーザ相互動作チャネルは、周辺データの双方向トンネリングをさらにサポートしうるUIBCチャネルを備えることができる。ソースデバイス302およびシンクデバイス352は、AVチャネル306をわたって音声および映像データを伝送および受信することができ、RTSPチャネル304をわたった能力ネゴシエーションに携わりうる。
[0069] 図3の例では、シンクデバイス352は、SDIOホストブレイクアウト364、USBホストブレイクアウト366、およびBLUETOOTHホストブレイクアウト358を備えるそれぞれのホストコントローラに接続されうる、SDデバイス354、USBデバイス356、およびBLUETOOTHデバイス358を含む周辺装置を含むことができる。シンクデバイス302は、SDIOホストドライバ314、USBホストドライバ316、およびBluetoothホストドライバ318のような多くのホストドライバを含むことができる。SDIOホストドライバ314、USBホストドライバ316、およびBluetoothホストドライバ318の各々はまた、対応するインタフェースに対するそれぞれのホストインタフェースコントローラを通信または制御することができる。
[0070] SDIOホストドライバ314、USBホストドライバ316、Bluetoothホストドライバ318、SDIOホストブレイクアウト364、USBホストブレイクアウト366、およびBluetoothホストブレイクアウト368は、ユーザ相互動作チャネル308をわたって、本開示の技法にしたがって、カプセル化された周辺データを伝送または受信することができる。より具体的には、ソースデバイス302または/およびシンクデバイス352は、TCP/IPおよび/またはUDPを使用してカプセル化された周辺データを送信または受信することができる。いくつかの例では、SDIOホストブレイクアウト365、USBホストブレイクアウト366、およびBluetoothホストブレイクアウト、ならびに他のホストブレイクアウト(この例では図示せず)は、ユーザ相互動作チャネル308をわたったUIBC接続を確立する前にSDデバイス354、USBデバイス356、およびBluetoothデバイス358のインタフェースを列挙することができる。
[0071] 別の例では、ソースデバイス302は、カプセル化されたWFDデータを受信し、そのデータをカプセル化解除し、SDIOホストドライバ314、USBホストドライバ316、および/またはBLUETOOTHホストドライバ318(「ホストドライバ314、316、318」)のような適切なホストドライバにカプセル化解除された周辺データを転送することができる。ソースデバイス302は、ホストドライバ314、316、318のうちの1つまたは複数からの追加の周辺データまたはコマンドで応答することができる。ソースデバイス302はさらに、ユーザインタフェースチャネル308を介してシンクデバイス352にデータおよび/またはコマンドを送信することができる。
[0072] 図4は、シンクデバイスとソースデバイスとの間でカプセル化された周辺データを送信するように使用されることができる、双方向トンネリングパケット400の例を例示する概略図である。データパケットヘッダ402の例が図4において例示されている。数0−15はデータパケットヘッダ402内でビット位置を識別し、数0、16、および32は、データパケットヘッダ402における別個のフィールド間のビットオフセットを識別する。データパケットヘッダ402は、バージョンフィールド、タイムスタンプフラグ(「T」)、リザーブされたフィールド、入力カテゴリフィールド、長さフィールド、およびオプションのタイムスタンプフィールドを含む。図4の例では、バージョンフィールドは、シンクデバイスによってインプリメントされる特定の通信プロトコルのバージョンを示すことができる3ビットフィールドである。バージョンフィールドにおける値は、どのようにペイロードデータ404を解析するかと同様に、どのようにデータパケットヘッダ402のリマインダを解析するか、をソースデバイスに知らせることができる。タイムスタンプフラグは、任意のタイムスタンプフィールドがデータパケットヘッダ402に存在するか否かを示す1ビットフィールドである。タイムスタンプフラグは、例えば、タイムスタンプフィールドが存在することを示すための「1」を含むことができ、タイムスタンプフィールドが存在しないことを示すための「0」を含むことができる。リザーブされたフィールドは、バージョンフィールドにおいて識別される特定のプロトコルの将来のバージョンによる使用のためにリザーブされる8ビットフィールドである。
[0073] 図4の例では、入力カテゴリフィールドは、双方向トンネリングパケット400に含まれるペイロードデータ404のための入力カテゴリを識別するための4ビットフィールドである。入力カテゴリフィールドの値は、ペイロードデータ404に含まれるデータのタイプ、およびどのようにペイロードデータ404がフォーマットされるかをソースデバイスに識別する。このフォーマットに基づいて、ソースデバイスはどのようにペイロードデータ404を解析するかを決定する。ペイロードデータ404の構造は、図5に関係して以下でより詳細に論じられる。
[0074] 1つの例として、入力カテゴリフィールドは、ペイロードデータ404がソースデバイスおよびシンクデバイスの両方によって実施されるプロトコルで定義される包括的情報要素を使用してフォーマットされることを示すための包括的入力カテゴリを識別することができる。別の例として、入力カテゴリフィールドは、ペイロードデータ404が、入力データがシンクデバイスにおいて受信されるユーザインタフェースのタイプに基づいてフォーマットされることを示すためのヒューマンインタフェースデバイスコマンド(HIDC)入力カテゴリを識別することができる。別の例として、入力カテゴリフィールドは、ペイロードデータ404が、ソースデバイスまたはシンクデバイスのどちらかによって使用されるオペレーティングシステム(OS)のタイプに基づいてフォーマットされることを示すためのOS特有入力カテゴリを識別することができる。本開示の技法にしたがって、入力カテゴリフィールドはまた、ペイロード404が、例えば、図1のソースデバイス120またはシンクデバイス160からのカプセル化された周辺データを含むことを示すためのトンネリング入力カテゴリを識別することができる。トンネリング入力カテゴリは、包括的ユーザ入力およびHIDCユーザ入力からそのパケットにおけるペイロードデータを区別する。包括的またはHIDCユーザ入力のケースでは、シンクデバイスに伝送される後のメディアデータへのユーザ入力の影響は通常、どのようにメディアデータがシンクデバイスにおいてユーザに表示されるか、例えばズームおよびパン(pan)の動作、に関する。
[0075] タイムスタンプフィールドは、存在するとき、ソースデバイスによって生成され、シンクデバイスに送信されるメディアデータに関連付けられたタイムスタンプを含むことができる、任意の16ビットフィールドを備えることができる。例えば、ソースデバイス120は、シンクデバイス160にメディアデータパケットを送信する前にメディアデータパケットにタイムスタンプを適用している。存在するとき、データパケットヘッダ402におけるタイムスタンプフィールドは、シンクデバイス160がソースデバイスに双方向トンネリングパケット400を送信する前にシンクデバイス160において受信される最新のメディアデータパケットを識別するタイムスタンプを含むことができる。他の例では、タイムスタンプフィールドは、シンクデバイス160において受信される異なるメディアデータパケットを識別するタイムスタンプを含むことができる。タイムスタンプ値は、ソースデバイスがどのメディアデータパケットがレポートされた性能の低下を経験したかを識別し、WFDシステムにおける往復遅延(roundtrip delay)を計算することを可能にすることができる。
[0076] 長さフィールドは、双方向トンネリングパケット400の長さを示すための16ビットフィールドを備えることができる。長さフィールドの値に基づいて、ソースデバイス120は、UIBCパケットの終わり、および新たな、後のパケットの始まりを識別することができる。図4において例示されるフィードバックパケット400におけるフィールドの数およびサイズは単なる説明のためのものである。他の例では、UIBCパケットは、図4において例示される双方向トンネリングパケット400におけるものよりも大きいまたは小さいサイズを有するフィールドを含むことができ、ならびに/あるいは、図4において例示される双方向トンネリングパケット400よりも多いまたは少ないフィールドを含むことができる。
[0077] 双方向トンネリングパケット400は、本開示の技法にしたがって、UICを介して、シンクデバイス160からソースデバイス120に(図1A)、またはソースデバイス120からシンクデバイス160に送信されることができる。この方法で、双方向周辺データトンネルは、シンクデバイス160とソースデバイス120との間でインプリメントされるUIBC逆チャネルアーキテクチャの能力を拡張することができる。UIBC上でピギーバックする(piggyback)ために、「トンネリング」と呼ばれる新たな入力カテゴリが、UIBCパケットのペイロードデータがカプセル化された周辺データを含むことを示すためにWFDにおいて定義されるUIBCデータパケットヘッダを用いて利用されうる。
[0078] ドライバ128およびドライバ169は、双方向トンネリングパケット400に、および双方向トンネリングパケット400から周辺データをカプセル化およびカプセル化解除することを担いうる。ドライバ128およびドライバ169はまた、双方向トンネリングパケット400のフォーマットを確認するために、パケットのソースまたは宛先を決定するために、ならびに、例えば周辺デバイス170のどの周辺デバイスと双方向トンネリングパケット400が関連付けられているかを決定するために、双方向トンネリングパケット400のデータパケットヘッダ402のペイロードデータ404を調べることができる。
[0079] ソースデバイス120またはシンクデバイス160がカプセル化された周辺データを受信する例では、ドライバ128またはドライバ169は、ペイロードデータ404をカプセル化解除し、ペイロードデータ404に基づいてインタフェース特有パケットを構築することができる。インタフェース特有パケットは、USBパケットのようなパケット、またはホストインタフェースコントローラ127および165が特定のインタフェースをわたって通信するために利用することができる別のデータユニットを備えることができる。ホストインタフェースコントローラ127または165はさらに、ドライバ128またはドライバ169が構築するインタフェース特有パケットを解析または処理することができる。例として、ホストインタフェースコントローラ165は、周辺デバイス170にインタフェース特有パケットを送信することができる。
[0080] 双方向トンネリングパケット400のフォーマットを有するパケットからインタフェース特有パケットを構築するために、ドライバ128またはドライバ169は、ペイロードデータ400のみを残して、双方向トンネリングパケット400からデータパケットヘッダ402を取り除くことができる。ドライバ128または169はまた、ペイロードデータ404にUSBパケットヘッダのようなインタフェース特有ヘッダを加えることができる。ドライバ128またはドライバ169が双方向トンネリングパケット400の形態でカプセル化された周辺データを受信する例では、ドライバ128または169は、双方向トンネリングパケット400のペイロードデータ404がインタフェース特有パケットの一部を備えることを決定することができる。ドライバ128または169は、単一のインタフェース特有パケットを形成するために双方向のトンネリングパケット400のフォーマットを有する複数パケットのペイロードを組み合わせることができる。別の例では、ドライバ128または169は、周辺データを受信し、インタフェース特有パケットに基づいて、双方向トンネリングパケット400のフォーマットを有するパケットを構築することができる。双方向トンネリングパケットを構築するために、ドライバ128は、インタフェース特有パケットからあらゆるインタフェース特有パケットヘッダを取り除き、データパケットヘッダ402のフォーマットを有するヘッダを加えることができる。
[0081] ドライバ128または169はまた、単一のインタフェース特有パケットに基づいて、双方向トンネリングパケット400のフォーマットを有する複数パケットを構築することができる。ドライバ128または169は、複数のより小さな部分にインタフェース特有パケットのペイロードを分割し、複数の双方向トンネリングパケットの各々のペイロードデータとしてそのより小さな部分を使用することができる。ドライバ128または169は、例えば、インタフェース特有パケットのペイロードが大き過ぎて双方向トンネリングパケット400のペイロードデータ404に適合できない場合、複数の双方向トンネリングパケットにインタフェース特有パケットを分割することができる。いくつかの例では、ドライバ128または169は、ペイロードデータ404における同じシンクデバイスの複数の異なるシンク周辺装置のためのデータを含むことができる。
[0082] いくつかの例では、データパケットデータ404は、特定の周辺デバイスおよび特定のシンクデバイスを示す情報を含むことができる。シンクデバイスを示す情報は、「逆トンネリング識別子(reverse tunneling identifier)」として称され、特定の周辺デバイスを示す情報は、「回送トンネル識別子(forwarding tunnel identifier)」として称されうる。シンクデバイス160がカプセル化された周辺データを受信するとき、シンクデバイス160は、周辺デバイス170のどの周辺デバイスにペイロードデータ304を回送すべきかを決定するために、ペイロードデータ4040の回送トンネリング識別子を調べることができる。ソースデバイス120が双方向トンネリングパケット400のフォーマットを有するカプセル化された周辺データを受信するとき、ソースデバイス120は、1つよりも多いシンクデバイスが存在するケースで、どの特定のシンクデバイスがそのパケットを送信したかを決定するために、データパケットヘッダ402に含まれる逆トンネリング識別子を調べることができる。
[0083] 図5は、本開示の技法にしたがって、双方向トンネリングパケットのペイロードデータを例示する概略図である。図5は、データパケットヘッダ402およびペイロードデータ404を含む双方向トンネリングパケット400を例示している。双方向トンネリングパケットのペイロードデータ404は、双方向トンネリングパケットに特有であり、例えば、包括的、かつHIDC入力カテゴリ値を有するパケットのような、異なる入力カテゴリ値を有するUIBCパケットとは区別できるフォーマットを有することができる。特に、双方向トンネリングパケット400のペイロードデータ404は、トンネルIDフィールド440、長さフィールド442、および記述フィールド446を含むことができる。
[0084] 1オクテットのサイズである、トンネルIDフィールド440の値は、回送トンネリング識別子または逆トンネリング識別子のどちらかの値を示すことができる。トンネルIDフィールドの値が転送トンネリング識別子を示しているか逆トンネリング識別子を示しているかは、ソースデバイスがシンクデバイスに双方向トンネリングパケット400を伝送するか、その逆かに依存する。ソースデバイスがシンクデバイスに双方向トンネリングパケット400を伝送する場合、トンネルIDの値は、どの周辺装置にシンクデバイスが記述フィールド446でカプセル化されたデータを伝送すべきかを示す逆トンネリング識別子を備える。シンクデバイスがソースデバイスに双方向トンネリングパケット400を伝送する場合、トンネルIDフィールド440の値は、どのシンクデバイスおよびシンクデバイスの周辺装置が記述フィールド446でカプセル化されたデータを伝送するかを示す回送トンネリング識別子を示す。
[0085] ソースがシンクに双方向トンネリングパケット400を伝送するケース、またはその逆のケースのどちらかで、2オクテットのサイズである長さフィールド442は、周辺データを含み、かつ長さフィールド442に続く記述フィールド442の(オクテットでの)サイズを示す。いくつかの例では、ソースデバイスまたはシンクデバイスは、3つのフィールドの複数のセットを含むための十分な余地がペイロードデータに存在する場合、トンネルID、長さ、および記述フィールドの複数のセットを含むことができる。1つの例として、ソースデバイスは、トンネルID、長さ、および記述フィールドの複数のセットを含むことができ、各セットは、同じシンクデバイスの異なる周辺装置に関するデータに対応しうる。ペイロードデータ404にトンネルID、長さ、および記述フィールドの複数のセットを含むことは、シンクデバイスの各周辺デバイスのための追加のUIBCパケットを送信しなければならないオーバーヘッドを回避することができる。
[0086] 図6は、能力ネゴシエーションセッションの一部として、ソースデバイス520とシンクデバイス560との間の例示的なメッセージ転送シーケンスを例示するブロック図である。ソースデバイス520は、概して、図1Aのソースデバイス120に関して上で記述されたものと同じ方法で動作することができ、シンクデバイス560は、概して、図1Aのシンクデバイス160に関して上で記述されたものと同じ方法で動作することができる。ソースデバイス520およびシンクデバイス560が接続を確立した後に、ソースデバイス520およびシンクデバイス560は、能力ネゴシエーション交換の一部としてそれらの後の通信セッションのために使用されるべきパラメータのセットを決定することができる。いくつかの例では、ソースデバイス520およびシンクデバイス560は、本開示の技法にしたがって周辺データの双方向トンネリングを使用すべきか否かに関してネゴシエートすることができる。
[0087] ソースデバイス520およびシンクデバイス560は、メッセージのシーケンスを利用することによって能力をネゴシエートすることができる。メッセージは、例えばRTSPメッセージでありうる。各RTSPメッセージは、簡素なテキスト文字の一続き(plaintext character strings)をさらに備えることができるボディを含むことができる。ネゴシエーションのいずれのステージでも、RTSP要求メッセージの受信側はRTSP OK以外のRTSPステータスコードを含むRTSP応答で応答することができ、このケースでは、メッセージ交換は、パラメータの異なるセットで再試行されることができる、あるいは能力ネゴシエーションセッションが終了されうる。
[0088] ソースデバイス520は、シンクデバイス560がサポートするRTSP方法のセットを決定するために、シンクデバイス560に第1のメッセージ(RTSP OPTION要求メッセージ)を伝送することができる。ソースデバイス520からの第1のメッセージの受信の際、シンクデバイス560は、シンク560によってサポートされているRTSP方法をリストする第2のメッセージ(RTSP OPTION応答メッセージ)で応答することができる。第2のメッセージはまた、RTSP OKステータスコードを含むことができる。
[0089] ソースデバイス520に第2のメッセージを伝送した後、シンクデバイス560は、ソースデバイス520がサポートするRTSP方法のセットを決定するために、第3のメッセージ(RTSP OPTION要求メッセージ)を伝送することができる。シンクデバイス560からの第3のメッセージの受信の際、ソースデバイス520は、ソースデバイス520によってサポートされているRTSP方法をリストする第4のメッセージ(RTSP OPTION応答メッセージ)で応答することができる。第4のメッセージはまた、RTSP OKステータスコードを含むことができる。
[0090] 第4のメッセージを伝送した後、ソースデバイス520は、ソースデバイス520にとって興味深い能力のリストを指定する第5のメッセージ(例えば、RTSP GET_PARAMETER要求メッセージ)を伝送することができる。シンクデバイス560は、第6のメッセージ(RTSP GET_PARAMETER応答メッセージ)で応答することができる。第6のメッセージは、RTSPステータスコードを含むことができる。RTSPステータスコードがOKである場合、第6のメッセージはまた、シンクデバイス560によってサポートされている第5のメッセージに指定されたパラメータへの応答パラメータを含むこともできる。シンクデバイス560は、シンクデバイス560がサポートしない第5のメッセージにおけるパラメータを無視することができる。
[0091] 第6のメッセージに基づいて、ソース520は、通信セッションのために使用されるべきパラメータの最適なセットを決定し、シンクデバイス560に第7のメッセージ(RTSP SET_PARAMETER要求メッセージ)を伝送することができる。第7のメッセージは、ソースデバイス520とシンクデバイス560との間の通信セッション中に使用されるべきパラメータセットを含むことができる。第7のメッセージは、通信セッションをセットアップするためにRTSPセットアップ要求において使用されるべきユニバーサルリソース識別子(URI)を記述するwfd−presentation−urlを含むことができる。wfd−presentation−urlは、シンクデバイス560がセッション確立交換中に後のメッセージのために使用することができるURIを指定する。このパラメータで指定されるwfd−url0およびwfd−url1の値は、第7のメッセージ内のwfd−client−rtp−portsにおけるrtp−port0値およびrtp−port1値の値に対応することができる。第7のメッセージの受信の際に、シンクデバイス560は、第7のメッセージに指定されているようにパラメータを設定することが成功したかどうかを示すRTSPステータスコードを有する第8のメッセージで応答することができる。
[0092] 図7は、本開示の技法にしたがって能力ネゴシエーションを行うための、ソースデバイス520とシンクデバイス560との間の例示的なリアルタイムストリーミングプロトコル(RTSP)メッセージの転送シーケンスを例示する概略図である。ソースデバイス520とシンクデバイス560との間で伝送されるRTSPメッセージは、ヘッダと簡素なテキストのボディから成る。ボディのフォーマットは厳格に定義されておらず、本開示の技法にしたがって追加のテキストデータを含むように変更されうる。図7のRTSPメッセージの各々の中の合間の中のテキストは、各メッセージの例示的なボディを表す。
[0093] 図7の例は、どのようにRTSP能力ネゴシエーションがUIBCをわたった双方向の通信およびトンネリングをサポートするために拡張されうるかを例示している。図7のメッセージ転送シーケンスは、図6に関して上で記述された転送シーケンスのより詳細なビューを提供するように意図されている。しかしながら図7の例では、メッセージシーケンスは、典型的なUIBCネゴシエーションシーケンスを例示している。しかしながら、図7はまた、双方向トンネリング能力が本開示の技法にしたがってサポートされているように記述されうる。
[0094] UIBC能力ネゴシエーションを開始するために、ソースデバイス520はGET_PARAMETER要求1aを送信する。GET_PARAMETER要求1aを受信することに応答して、シンクデバイス560はソースデバイス520にGET_PARAMETER応答1bを送信する。GET_PARAMETER応答1bはシンクデバイス560がサポートする入力カテゴリのリストを識別する。以前、UIBCは、「包括的」および「HIDC(ヒューマンインタフェースデバイスクラス)」、の2つの一般的なカテゴリをサポートしていた。双方向(つまり、UIC)通信をサポートするために、GET_PARAMETER応答1bは、図7ではGET_PARAMETER応答1bと関係して例示されている追加の「トンネリング」カテゴリを含むように拡張されうる。GET_PARAMETER応答メッセージ内へのトンネリングカテゴリの包含は、シンクデバイス560がシンクデバイス560の特定の周辺装置の周辺データの双方向トンネリングをサポートすることをソースデバイス520に示すことができる。サポートされた入力カテゴリの各々に関して、GET_PARAMETER応答1bはまた、その入力タイプのためのサポートされた能力の関連付けられたリスト(例えば、包括的入力タイプのための「generic_cap_list」およびHIDC入力タイプのための「hidc_cap_list」)を含むことができる。GET_PARAMETER応答1bはまた、TCP/IPポート番号を示すポートフィールドを含むことができる。シンクデバイス560は、ポートフィールドの値によって示されるTCP/IPポート番号でソースデバイス520からカプセル化された周辺データを受信することができる。
[0095] 双方向トンネリングをサポートするために、GET_PARAMETER応答メッセージ1bはまた、「input_interface」フィールドとしても称されうる、入力インタフェースフィールドを含むように拡張されうる。追加のinput_interfaceフィールドはまた、GET_PARAMETER応答1bと関係して上で例示されている。入力インタフェースフィールドは、インタフェース値を含むことができる。インタフェース値は、シンクデバイス560の周辺デバイスと関連付けられた特定の周辺インタフェースを示すことができる。例として、入力インタフェースフィールドの値は、SDIO、USB、BLUETOOTH、または他の周辺インタフェースのうちの1つを含むことができる。
[0096] 双方向トンネリングをサポートするために、GET_PARAMETER応答メッセージ1bはまた、「forwarding_tunnel_ID」としても称されうる、回送トンネル識別子フィールドを含むように拡張されうる。回送トンネル識別子は、UIBC能力ネゴシエーション中に送信されるRTSP GET_PARAMETER応答メッセージのボディの一部を備える追加のテキストのキーの値のペア(入力カテゴリおよび入力インタフェースと共に)を備えることができる。図7の例で、RTSPメッセージの新たな回送トンネル識別子のシンタックスは、「forwarding_tunnel_ID=#」であることができ、ここにおいて「#」は、シンクデバイスの特定の周辺デバイスに割り当てられた回送トンネルの値である。
[0097] 回送トンネル識別子フィールドは、シンクデバイス(例えば、シンク560)に接続される周辺デバイスのインタフェースまたは特定の周辺デバイスを識別することができる。例として、シンクデバイス560のBLUETOOTH周辺装置は、「1」の識別子を有しうる一方で、マウスのようなUSB周辺装置は「3」の識別子を有することができる。回送トンネル識別子は、UICを使用してソースデバイスからカプセル化された周辺データを受信するシンクデバイスが、シンク560が1つよりも多い接続された周辺装置を有する場合に受信されたUIC周辺データがどの周辺装置に回送されるべきかを識別することを可能にする。
[0098] いくつかの例では、1つの周辺装置は、シンクデバイス560およびソースデバイス520が通信することができる複数のエンドポイントを含むことができる。デバイスのエンドポイントは、シンクデバイス560と接続された周辺デバイスとの間の1つまたは複数の異なる論理的なデータ接続を表すことができる。例えば、USB周辺装置は、バルクエンドポイント(bulk endpoint)、ならびに等時性エンドポイント(isochronous endpoint)を含むことができる。バルクエンドポイントは、ある特定のデータ転送特性を有する一方で、等時性エンドポイントは、データ転送特性の異なるセットを有することができる。シンク周辺デバイスが複数のエンドポイントを有する例では、シンクデバイス560は、GET_PARAMETER応答1bにおいて周辺装置の複数のエンドポイントについての情報を通信することができる。シンクデバイス560は、複数のポート値のリストを送信することができ、各ポートフィールドは、シンク周辺装置の特定のエンドポイントに対応しうる。シンクデバイス560はまた、複数の回送トンネル識別子のリストを送信することができる。各回送トンネル識別子は、シンクデバイス560の特定のエンドポイントに対応することができる。
[0099] シンクデバイス560のホストインタフェースコントローラ165およびドライバ169(図1A)は各接続された周辺デバイスの各々のエンドポイントを列挙することができる。シンクデバイス560は、GET_PARAMETER応答1bがシンクデバイス560に接続された特定の周辺デバイスの各々の1つのエンドポイントの各々のリストを含むように、接続された周辺デバイスのエンドポイントを列挙することができる。GET_PARAMETER応答1bはまた、エンドポイントの各々に関するタイプ(例えば等時性、バルク等)を識別することができる追加のコンテキスト情報を含むことができる。
[00100] 図7では、メッセージ2a「SET_PARAMETER REQUEST」は、RTSP UIBC能力ネゴシエーションの第2のメッセージの例である。メッセージ1bと同様に、メッセージ2aは、サポートされた入力カテゴリ(例えば、トンネリング)のリスト、およびシンクデバイス560がサポートするUIBCデバイスについての関連するデバイス情報を含む。メッセージ1bと同様に、双方向周辺データのカプセル化をサポートするために、メッセージ2aは「トンネリング」入力カテゴリ含むようにinput_category_listフィールドを拡張することができる。サポートされた入力カテゴリの第2のリストのサポートされた入力カテゴリの各々は、サポートされた能力の関連付けられたリスト(例えば、generic_cap_listおよびhidc_cap_list)を有することができる。メッセージ1bと同様に、メッセージ2aはまた、ポートフィールドを含む。ポートフィールドの値は、ソースデバイス520が特定のシンク周辺デバイスまたはエンドポイントのためのカプセル化された周辺データを受信することができる特定のポートを示す。図7で例示されている例では、ポートフィールドの値は1002であり、これは、ソースデバイス520がTCP/IPポート1002上でシンクデバイス560の周辺デバイスについてのカプセル化された周辺データを受信することをサポートすることを示すことができる。
[0100] メッセージ2aはまた、ソースデバイス520によってサポートされる入力カテゴリおよびタイプを識別するけれども、それは、ソースデバイス520によってサポートされている全ての入力カテゴリおよび入力タイプの総合的なリストであるわけではない。その代わりに、メッセージ2a「SET_PARAMETER REQUEST」は、シンクデバイス560によってサポートされているとして、メッセージ1b「GET_PARAMETER RESPONSE」で識別されたそれらの入力カテゴリおよび入力タイプのみを識別することができる。この方法で、メッセージ2a、SET_PARAMETER REQUEST、で識別される入力カテゴリおよび入力タイプは、メッセージ1bで識別された入力カテゴリおよび入力タイプのサブセットの構成要素となることができる。図7で例示されている例では、メッセージ2aはまた、入力カテゴリリストにトンネリング入力カテゴリを含む。トンネリング入力カテゴリの包含は、シンクデバイス560に、ソースデバイス520がまた、カプセル化された周辺データの双方向のトンネリングをサポートすることを示す。
[0101] SET_PARAMETER REQUEST 2aで図示されているフィールドに加えて、ソースデバイス520は、「reverse_tunnel_id」としても称されうる逆トンネル識別子でGET_PARAMETER RESPONSE 1bに応答することができる。逆トンネル識別子は、回送トンネル識別子に類似しうる。逆トンネル識別子は、双方向周辺データカプセル化をサポートするために使用されることができ、ソースデバイス520に、シンクデバイス560のような特定のシンクデバイスを識別することができる。図7の例では、メッセージデバイス520は、「2」の値を有する逆トンネル識別子を含む。各シンクデバイス(例えば、シンクデバイス560)は、UICパケットの伝送側としてその特定のシンクデバイスを識別するために、ソースデバイス520に送信されるあらゆるUICパケットに逆トンネリング識別子を含むことができる。ソースデバイス520が2つ以上のシンクデバイスと通信しているとき、ソースデバイス520は、複数のシンクデバイスの各々からのUICパケットを識別するために逆トンネル識別子値を利用することができる。
[0102] シンクデバイス560が、ソースデバイス520がメッセージ2aで送信するUICパラメータと合意する場合、シンクデバイス560は、SET_PARAMETER RESPONSEメッセージ2bを送信することができる。SET_PARAMETER RESPONSEメッセージ2bを受信することに応答して、ソースデバイス520は、UIBCがメッセージ1a、1b、および2aにおいて以前にネゴシエートされたパラメータで有効にされることになることを承認するSET_PARAMETER REQUESTメッセージ3aを送信することができる。SET_PARAMETER REQUESTメッセージ3aを受信することに応答して、シンクデバイス560は、SET_PARAMETER RESPONSEメッセージ3bを送信することができる。SET_PARAMETER RESPONSE3bは、シンクデバイス560がUICをわたった通信に携わる準備ができていることをソースデバイス520に肯定応答することができる。
[0103] 一度ソースデバイス520およびシンクデバイス560がUICパラメータのセットに関して合意したとすると、ソースデバイス520およびシンクデバイス560はUICをわたってデータを送信することができる。シンクデバイス560およびソースデバイス520が両方ともUICトンネルに合意したために、両方のデバイスはUIC接続が、一方向とは反対に双方向であるだろうことを知っている。ソースデバイス520および560は、RTSP能力ネゴシエーション中に合意された(1つまたは複数の)ポートをわたってUICデータを伝送することができる。各UICパケットは、特定のシンクデバイスを示すことができる逆トンネル識別子、またはシンクデバイス560に接続された特定の周辺装置または周辺インタフェースを識別することができる回送トンネル識別子を含むことができる。
[0104] ソースデバイス520は、1度よりも多く図7で例示されているようにRTSP通信およびUIC能力ネゴシエーションに携わることができる。例として、ソースデバイス520は、ソースデバイス520が通信している各シンクデバイスに接続された周辺デバイス毎に一度RTSP UIC能力ネゴシエーションに携わりうる。複数の能力ネゴシエーションは、各周辺デバイスに異なる回送トンネル識別子を割り当て、ソースデバイス520が通信することができる複数のシンクデバイスの各シンクデバイスに逆トンネリング識別子を割り当てるために使用されうる。
[0105] 図8は、本開示の技法にしたがって、カプセル化された周辺データの双方向トンネリングをインプリメントすることができるソースデバイスの例を例示するブロック図である。ソースデバイス600は、図2で提供されたデータ通信モデルを組み込むWDシステムの一部でありうる。ソースデバイス600は、トランスポート、ストレージ、および/またはディスプレイのためのメディアデータを符号化および/または復号するように構成されうる。ソースデバイス600は、メモリ602、ディスプレイプロセッサ604、局所的ディスプレイ606、音声プロセッサ608、スピーカ610、映像エンコーダ612、映像パケタイザ(packetizer)614、音声エンコーダ616、音声パケタイザ618、A/Vマルチプレクサ(mux)620、トランスポートモジュール622、モデム624、制御モジュール626、フィードバックデパケタイザ(de-packetizer)628、およびフィードバックモジュール630を含む。ソースデバイス600のコンポーネントは、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらのあらゆる組み合わせのような、様々な適した回路のいずれかとしてインプリメントされうる。
[0106] メモリ602は、圧縮または非圧縮されたフォーマットにおいて、メディアデータの形態でA/V画像データを記憶することができる。メモリ602は、全体のメディアデータファイルを記憶することができる、あるいは、例えば別のデバイスまたはソースからストリーミングされたメディアデータファイルの一部を単に記憶するより小さなバッファを備えることができる。メモリ602は、シンクロナス動的ランダムアクセスメモリ(SDRAM)、読み出し専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電子的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、FLASHメモリ等のようなランダムアクセスメモリ(RAM)に限定されないけれども含む、幅広い種類の揮発性または非揮発性メモリのいずれかも備えることができる。メモリ602は、メディアデータを、他の種類のデータと同様に、記憶するためのコンピュータ可読記憶媒体を備えることができる。加えて、メモリ602は、本開示で記述されている様々な技法を行うことの一部としてプロセッサによって実施されるプログラムコードおよび命令を記憶することができる。
[0107] ディスプレイプロセッサ604は、捕捉された映像フレームを取得し、局所的ディスプレイ606上の表示のために映像データを処理することができる。ディスプレイ606は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、またはソースデバイス600のユーザに映像データを表示することができる別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスの1つを備える。
[0108] オーディオプロセッサ608は、音声捕捉された音声サンプルを取得し、スピーカ610への出力のために音声データを処理することができる。スピーカ610は、ヘッドフォン、単一スピーカシステム、マルチスピーカシステム、またはサラウンド音響システムのような様々な音声出力デバイスのいずれも備えることができる。
[0109] 映像エンコーダ612は、メモリ602から映像データを取得し、所望の映像フォーマットに映像データを符号化することができる。映像エンコーダ612は、図2と関係して上で記述された映像コデック218の態様をインプリメントするように使用されるハードウェアとソフトウェアの組み合わせでありうる。映像エンコーダ612は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264、VP8、および高効率映像コーディング(HEVC)のような映像圧縮規格のあらゆる数にしたがって映像を符号化することができる。いくつかのケースでは、映像エンコーダ612は、映像データが損失のない、または損失の多い(lossy)圧縮技法を使用して圧縮されるように映像を符号化することができることは留意されるべきである。
[0110] 映像パケタイザ614は、符号化された映像データをパケット化することができる。1つの例では、映像パケタイザ614は、MPEG−2Part1にしたがって定義されたような符号化された映像データをパケット化することができる。他の例では、映像データは、他のパケット化プロトコルにしたがってパケット化されうる。映像パケタイザ614は、図2と関係して上で記述されたパケット化エレメンタリストリーム(PES)パケット化216の態様をインプリメントするように使用されるハードウェアとソフトウェアの組み合わせでありうる。
[0111] 音声エンコーダ616は、メモリ602から音声データを取得し、所望の音声フォーマットに音声データを符号化することができる。音声エンコーダ616は、図2と関係して上で記述された音声コデック220の態様をインプリメントするように使用されるハードウェアとソフトウェアの組み合わせでありうる。音声データは、Dolbyおよびデジタルシアターシステムによって発展されたもののようなマルチチャネルフォーマットを使用してコード化されうる。音声データは、圧縮または非圧縮されたフォーマットを使用してコード化されうる。圧縮された音声フォーマットの例は、MPEG−1、2、音声レイヤIIおよびIII、AC−3、AACを含む。非圧縮された音声フォーマットの例は、パルス−コード変調(PCM)音声フォーマットを含む。
[0112] 音声パケタイザ618は、符号化された音声データをパケット化することができる。1つの例では、音声パケタイザ618は、MPEG―2Part1にしたがって定義されたような符号化された音声データをパケット化することができる。他の例では、音声データは、他のパケット化プロトコルにしたがってパケット化されうる。音声パケタイザ618は、図2と関係して上で記述されたパケット化エレメンタリストリーム(PES)パケット化216の態様をインプリメントするように使用されるハードウェアとソフトウェアの組み合わせでありうる。
[0113] A/Vマルチプレクサ620は、共有データストリームの一部として映像ペイロードデータおよび音声ペイロードデータを組み合わせるための多重化技法を適用することができる。1つの例では、A/Vマルチプレクサ620は、MPEG―2Part1にしたがって定義されるMPEG2トランスポートストリームとしてパケット化されたエレメンタリ映像および音声ストリームをカプセル化することができる。A/Vマルチプレクサ620は、エラー訂正技法と同様に音声および映像パケットに対して同期を提供することができる。
[0114] トランスポートモジュール622は、シンクデバイスへのトランスポートのためにメディアデータを処理することができる。さらにトランスポートモジュール622は、シンクデバイスから受信されたパケットを、それらがさらに処理されうるように処理することができる。例えば、トランスポートモジュール622は、IP、TCP、UDP、RTP、およびRTSPを使用して通信するように構成されうる。例えば、トランスポートモジュール622はさらに、シンクデバイスへの、あるいはネットワークをわたった通信のためのMPEG2−TSをカプセル化することができる。
[0115] モデム624は、WDシステムで利用される物理およびMACレイヤにしたがって物理およびMACレイヤ処理を行うように構成されうる。図2を参照して記述されるように。物理およびMACレイヤは、WDシステムにおける通信のために使用される物理シグナリング、アドレス指定(addressing)、およびチャネルアクセス制御を定義することができる。1つの例では、モデム624は、WFDによって提供されるもののような、Wi−Fi(例えば、IEEE 802.11x)規格によって定義された物理およびMACレイヤのための物理レイヤおよびMACレイヤ処理を行うように構成されうる。他の例では、モデム624は、ワイヤレスHD、WiMedia、ワイヤレスホームデジタルインタフェース(WHDI)、WiGig、およびワイヤレスUSB、のいずれかのための物理レイヤおよびMACレイヤ処理を行うように構成されうる。
[0116] 制御モジュール626は、ソースデバイス600通信制御機能を行うように構成されうる。通信制御機能は、シンクデバイスと能力をネゴシエートすることと、シンクデバイスとのセッションを確立することと、ならびにセッション維持および管理に関しうる。制御モジュール626は、シンクデバイスと通信するためにRTSPを使用することができる。さらに、制御モジュール626は、UIBC上のトンネリング入力カテゴリをサポートするためにソースデバイス600およびシンクデバイスの能力をネゴシエートするように、RTSPメッセージトランザクションを使用してUIBCを確立することができる。いくつかの例では、制御モジュール626は、本開示の技法にしたがって、カプセル化された周辺データの双方向トンネルを確立することができる。
[0117] ユーザ入力モジュール628は、トンネリングパケットを含みうる、UIBCパケットから、ヒューマンインタフェースデバイスコマンド(HIDC)、包括的ユーザ入力、OS特有ユーザ入力、およびカプセル化された情報を解析することができる。1つの例では、ユーザ入力パケットは、図4と関係して記述されたメッセージフォーマットを使用することができる。この例では、ユーザ入力デパケタイザ628は、どのようにユーザ入力パケットヘッダにおけるユーザ入力カテゴリフィールドの値に部分的に基づいてユーザ入力パケットを解析するかを決定することができる。1つの例として、ユーザ入力カテゴリフィールドは、フィードバックパケットペイロードデータが包括的情報要素を使用してフォーマットされることを示すために包括的入力カテゴリを識別することができる。別の例として、ユーザ入力カテゴリフィールドは、ヒューマンインタフェースデバイスコマンド(HIDC)入力カテゴリを識別することができる。別の例として、ユーザ入力カテゴリフィールドは、ペイロードデータが、ソースデバイスまたはシンクデバイスのどちらかによって使用されるオペレーティングシステム(OS)のタイプに基づいてフォーマットされることを示すためのOS特有入力カテゴリを識別することができる。
[0118] 別の例では、ユーザ入力モジュール628は、ユーザ入力パケットのヘッダのユーザ入力カテゴリフィールドに基づいてカプセル化された周辺データを識別することができる。ユーザ入力モジュール628がカプセル化されたデータを識別する場合、ドライバ632は、図4と関係して上で記述された方法で周辺データをカプセル化解除することができる。いくつかの例では、ドライバ632は、1つまたは複数の受信されたユーザ入力パケットのペイロードを組み合わせ、組み合わせられたペイロードにインタフェース特有ヘッダを加えることができる。ホストインタフェースコントローラ630は、インタフェース特有パケットを処理することができる。いくつかの例では、メモリ602は、ディスプレイプロセッサ604がデータへの動作を実行することができるように、パケットのデータの少なくともいくつかを記憶することができる。
[0119] ホストインタフェースコントローラ630はまた、インタフェース特有パケットを構築することができる。ドライバ632は、本開示の技法にしたがって、より小さなパケットにインタフェース特有パケットを分け、UICを使用してそのより小さなパケットをカプセル化することができる。ユーザ入力モジュール628は、ドライバ632からカプセル化された周辺データを受信することができ、トランスポートモジュール632は、UICをわたり、モデム624を使用してカプセルされた周辺装置を送信することができる。
[0120] 図9は、ソースデバイスへの、およびソースデバイスからの周辺データの双方向トンネリングをサポートするための技法をインプリメントするシンクデバイスの例を例示するブロック図である。シンクデバイス700は、図2で提供されるデータ通信モデルを組み込むWDシステムの一部でありうる。1つの例では、シンクデバイス700は、ソースデバイス600とのWDシステムを形成することができる。シンクデバイス700は、モデム702、トランスポートモジュール704、A/Vデマルチプレクサ(demux)706、映像デパケタイザ708、映像デコーダ710、ディスプレイプロセッサ712、ディスプレイ714、音声デパケタイザ716、音声デコーダ718、音声プロセッサ720、スピーカ722、ユーザ入力モジュール724、制御モジュール730、ドライバ734、およびホストインタフェースコントローラ736を含む。シンクデバイス700のコンポーネントは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらのあらゆる組み合わせのような、様々な適した回路のいずれかとしてインプリメントされうる。
[0121] モデム702は、WDシステムで利用される物理およびMACレイヤにしたがって物理およびMACレイヤ処理を行うように構成されうる。図2を参照して記述されるように。物理およびMACレイヤは、WDシステムにおける通信のために使用される物理シグナリング、アドレス指定、およびチャネルアクセス制御を定義することができる。1つの例では、モデム702は、WFDによって提供されるもののような、Wi−Fi(例えば、IEEE802.11x)規格によって定義された物理およびMACレイヤのための物理レイヤおよびMACレイヤ処理を行うように構成されうる。他の例では、モデム702は、ワイヤレスHD、WiMedia、ワイヤレスホームデジタルインタフェース(WHDI)、WiGig、およびワイヤレスUSB、のいずれかのための物理レイヤおよびMACレイヤ処理を行うように構成されうる。
[0122] トランスポートモジュール704は、ソースデバイスから受信されたメディアデータを処理することができる。さらに、トランスポートモジュール704は、ソースデバイスへのトランスポートのためにUIBCパケットを処理することができる。例えば、トランスポートモジュール704は、IP、TCP、UDP、RTP、およびRTSPを使用して通信するように構成されうる。加えて、トランスポート704は、IP、TCP、UDP、RTP、およびRSTPパケットのあらゆる組み合わせにおけるタイムスタンプ値を含むことができる。
[0123] A/Vデマルチプレクサ706は、データストリームから映像ペイロードデータおよび音声ペイロードデータを区別するための逆多重化技法を適用することができる。1つの例では、A/Vマルチプレクサ706は、MPEG―2Part1にしたがって定義されるMPEG2トランスポートストリームのパケット化されたエレメンタリ映像および音声ストリームを区別することができる。
[0124] 映像デパケタイザ708および映像デコーダ710は、ここで記述されているパケット化およびコーディング技法をインプリメントする映像パケタイザおよび映像エンコーダの互恵的(reciprocal)処理を行い、ディスプレイプロセッサ712に映像データを出力することができる。
[0125] ディスプレイプロセッサ712は、捕捉された映像フレームを取得し、ディスプレイ714上での表示のために映像データを処理することができる。ディスプレイ714は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイのような、様々なディスプレイデバイスの1つを備えることができる。
[0126] 音声デパケタイザ716および音声デコーダ718は、ここで記述されているパケット化およびコーディング技法をインプリメントする音声パケタイザおよび音声エンコーダの互恵的処理を行い、ディスプレイプロセッサ720に音声データを出力することができる。
[0127] 音声プロセッサ720は、音声デコーダから音声データを取得し、スピーカ722への出力のために音声データを処理することができる。スピーカ722は、ヘッドフォン、単一スピーカシステム、マルチスピーカシステム、またはサラウンド音響システムのような様々な音声出力デバイスのいずれも備えることができる。
[0128] ユーザ入力デバイス724は、例えば、キーボード、マウス、トラックボールまたはトラックパッド、タッチスクリーン、ボイスコマンド認識モジュール、またはあらゆる他のそのようなユーザ入力デバイスによって受信されたユーザ入力コマンドをフォーマットすることができる。1つの例では、ユーザ入力モジュール724は、図2と関係して上で記述されたヒューマンインタフェースデバイスコマンド(HIDC)230、包括的ユーザ入力232、OS特有ユーザ入力234、および双方向周辺データトンネル228にしたがって定義されるフォーマットにしたがってユーザ入力コマンドをフォーマットすることができる。
[0129] ユーザ入力モジュール724はまた、ユーザ入力パケットのヘッダのユーザ入力フィールドに基づいて、トランスポートモジュール724からの周辺データを識別することができる。ドライバ734は、ホストインタフェースコントローラが処理し、周辺デバイス736に送信することができる1つまたは複数のインタフェース特有パケットに周辺データをカプセル化解除することができる。別の例では、周辺デバイス736は、周辺データをホストインタフェースコントローラ736に送信することができる。ドライバ734は、ホストインタフェースコントローラ736を制御、またはホストインタフェースコントローラ736と相互動作することができ、双方向UICパケットに周辺データをカプセル化することができる。ユーザ入力モジュール724は、トランスポートモジュール704に双方向UICパケットを送信することができ、トランスポートモジュール704は、モデム702を使用してパケットを送信することができる。
[0130] 制御モジュール730は、通信制御機能を行うように構成されうる。通信制御機能は、ソースデバイスと能力をネゴシエートすることと、ソースデバイスとのセッションを確立することと、ならびにセッション維持および管理に関しうる。制御モジュール730は、ソースデバイスと通信するためにRTSPを使用することができる。さらに、制御モジュール730は、UIBCおよびUIBC上のトンネリング入力カテゴリをサポートするためにシンクデバイス700およびソースデバイスの能力をネゴシエートするように、RTSPメッセージトランザクションを使用して周辺データのカプセル化をサポートする、双方向UICのような、UIBCを確立しうる。双方向UICを確立するためのRTSPネゴシエーションの使用は、メディア共有セッションを確立するためにRTSPネゴシエーションプロセスを使用することに類似しうる。
[0131] 図10は、本開示の技法にしたがって、周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。本技法では、ソースデバイスは、シンクデバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することができる(801)。ソースデバイスは、UIBCを使用してシンクデバイスからカプセル化された周辺データを受信することができる(802)。ソースデバイスはその後、周辺データをカプセル化解除することができる(803)。いくつかの例では、ソースデバイスは、ソースデバイスのホストインタフェースコントローラ(例えば、図1Aのホストインタフェースコントローラ165および127のうちの1つ)にカプセル化解除された周辺データを送信することができる。ソースデバイスはまた、ソースデバイスへのシンクデバイスの周辺デバイスを識別するトンネル識別子値を受信することができる。いくつかの例では、周辺データはUIBCパケットにカプセル化されうる。いくつかの例では、ソースデバイスはまた、ソースデバイスへのシンクデバイスの周辺デバイスを識別するトンネル識別子値を受信することができる。
[0132] 図11は、本開示の技法にしたがって、周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。本技法では、シンクデバイスは、ソースデバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することができる(821)。シンクデバイスは、UIBCを使用してソースデバイスからカプセル化された周辺データを受信することができる(822)。シンクデバイスはその後、周辺データをカプセル化解除することができる(823)。いくつかの例では、シンクデバイスは周辺デバイス(例えば、図1Aの周辺デバイス170ののうちの1つ)にカプセル化解除された周辺データを送信することができる。いくつかの例では、シンクデバイスはまた、第1のデバイスへの双方向UIBCを確立する前にシンクデバイスに接続される周辺デバイスのインタフェースを列挙することができる。いくつかの例では、シンクデバイスは、シンクデバイスの周辺デバイスを識別するソースデバイスからトンネル識別子値を受信することができる。
[0133] カプセル化された周辺データは、ここで記述されているあらゆるメッセージフォーマットにしたがってフォーマットされ、ここで記述されているあらゆるタイプの情報を含むことができる。例えば、周辺データは、図4と関係して記述されたメッセージフォーマットにしたがってフォーマットされうる。
[0134] 図12は、周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。シンクデバイスは、ソースデバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することができる(901)。シンクデバイスは、周辺データを受信し(902)、周辺データをカプセル化することができる(903)。シンクデバイスはまた、UIBCを使用してソースデバイスにカプセル化された周辺データを送信することもできる(904)。いくつかの例では、シンクデバイスはシンクデバイスの周辺デバイス(例えば、図1Aの周辺デバイス170のうちの1つ)から周辺データを受信することができる。ある例では、シンクデバイスは、ソースのデバイスへの双方向UIBCを確立する前にシンクデバイスに接続されている周辺デバイスのインタフェースを列挙することができる。いくつかの例では、シンクデバイスはまた、シンクデバイスの周辺デバイスを識別するトンネル識別子値をソースデバイスに送信することができる。
[0135] 図13は、周辺データの双方向トンネリングをサポートするための技法を例示するフローチャートである。ソースデバイスは、シンクデバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することができる(921)。ソースデバイスは、周辺データを受信し(922)、周辺データをカプセル化することができる(923)。ソースデバイスはまた、UIBCを使用してシンクデバイスにカプセル化された周辺データを送信することができる(924)。いくつかの例では、ソースデバイスは、ホストインタフェースコントローラ(例えば、図1Aのホストインタフェースコントローラ165および127のうちの1つ)から周辺データを受信することもできる。いくつかの例では、ソースデバイスは、シンクデバイスの周辺デバイスを識別するトンネル識別子値をシンクデバイスに送信することができる。
[0136] カプセル化された周辺データは、ここで記述されているあらゆるメッセージフォーマットにしたがってフォーマットされ、ここで記述されているあらゆるタイプの情報を含むことができる。例えば、周辺データは、図4と関係して記述されたメッセージフォーマットにしたがってフォーマットされうる。
[0137] 1つまたは複数の例では、記述された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらのあらゆる組み合わせでインプリメントされうる。ソフトウェアでインプリメントされる場合、機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶または送信されうる。コンピュータ可読媒体は、1つの場所から別の場所へのコンピュータプログラムの転送を容易にするあらゆる媒体を含むコンピュータデータ記憶媒体または通信媒体の両方を含みうる。いくつかの例では、コンピュータ可読媒体は、非トランジトリなコンピュータ可読媒体を備えうる。データ記憶媒体は、本開示において記述された技法のインプリメンテーションのための命令、コード、および/またはデータ構造を読み取るために、1つまたは複数のコンピュータ、あるいは1つまたは複数のプロセッサによってアクセスされることができるあらゆる利用可能な媒体でありうる。
[0138] 限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形態で所望のプログラムコードを記憶または搬送するために使用されることができ、かつコンピュータによってアクセスされうるあらゆる他の媒体のような、非トランジトリな媒体を備えることができる。また、いずれの接続手段もコンピュータ可読媒体と適切に名づけられる。ディスク(disk)およびディスク(disc)は、ここで使用される場合、コンパクト・ディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、磁気的にデータを再生するが、ディスク(disc)は通常、レーザーを用いて光学的にデータを再生する。上記の組み合わせは、また、コンピュータ可読媒体の範囲内に含まれるべきである。
[0139] コードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは、他の同等な集積またはディスクリートな論理回路、のような1つまたは複数のプロセッサによって実施されうる。したがって、ここで使用されるような「プロセッサ」という用語は、前述の構造、またはここで記述されている技法のインプリメンテーションに適したあらゆる他の構造のいずれかを称しうる。さらに、いくつかの態様では、ここで記述されている機能は、符号化および復号化のために構成された専用ハードウェアモジュールおよび/またはソフトウェアモジュール内で提供されうる、または、組み合わせられたコデックに組み込まれうる。また、技法は、1つまたは複数の回路または論理要素において十分にインプリメントされることができる。
[0140] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い種類のデバイスまたは装置においてインプリメントされうる。様々なコンポーネント、モジュール、またはユニットは、開示された技法を行うように構成されたデバイスの機能的な態様を強調するために本開示で記述されているけれども、必ずしも異なるハードウェアユニットによる実現を要求しない。むしろ、上で記述されたように、様々なユニットはコデックハードウェアユニットで組み合わせられうる、あるいは、適したソフトウェアおよび/またはファームウェアと関連して、上で記述された1つまたは複数のプロセッサを含む、対話型(interoperative)ハードウェアユニットの集合によって提供されうる。
[0141] 本発明の様々な実施形態が記述されてきた。これらおよび他の実施形態は、特許請求の範囲の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、
前記UIBCを使用して、前記計算デバイスからカプセル化された周辺データを受信することと、
前記周辺データをカプセル化解除することと、
を備える方法。
[C2]前記計算デバイスは、シンクデバイスを備え、
前記カプセル化された周辺データを受信することは、前記UIBCを使用して、ソースデバイスにおいて、前記シンクデバイスから前記カプセル化された周辺データを受信することを備える、C1に記載の方法。
[C3]前記ソースデバイスのホストインタフェースコントローラに前記カプセル化解除された周辺データを送信すること、をさらに備える、C2に記載の方法。
[C4]前記方法は、
周辺デバイスを識別するトンネル識別子値を受信すること、
をさらに備える、C1に記載の方法。
[C5]前記計算デバイスは、ソースデバイスを備え、前記カプセル化された周辺データを受信することは、前記UIBCを使用して、シンクデバイスおいて、前記ソースデバイスから前記カプセル化された周辺データを受信することを備える、C1に記載の方法。
[C6]前記ソースデバイスへの前記双方向UIBCを確立する前に、前記シンクデバイスに接続される周辺デバイスのインタフェースを列挙すること、をさらに備える、C5に記載の方法。
[C7]前記シンクデバイスに接続される周辺デバイスに前記カプセル化解除された周辺データを送信すること、
をさらに備える、C5に記載の方法。
[C8]前記カプセル化された周辺データは、UIBCパケットにカプセル化される、C1に記載の方法。
[C9]計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、
周辺データを受信することと、
前記周辺データをカプセル化することと、
前記UIBCを使用して、前記計算デバイスに前記カプセル化された周辺データを送信することと、
を備える方法。
[C10]前記計算デバイスは、ソースデバイスを備え、前記カプセル化された周辺データを送信することは、前記UIBCを使用して、シンクデバイスから前記ソースデバイスに、前記周辺データを送信することを備える、C9に記載の方法。
[C11]前記周辺データを受信することは、前記シンクデバイスの周辺デバイスから前記周辺データを受信することを備える、C10に記載の方法。
[C12]前記方法は、
前記ソースデバイスへの前記双方向UIBCを確立する前に、前記シンクデバイスの周辺デバイスのインタフェースを列挙すること、
をさらに備える、C10に記載の方法。
[C13]前記方法は、
周辺デバイスを識別するトンネル識別子値を送信すること、
をさらに備える、C9に記載の方法。
[C14]前記計算デバイスは、シンクデバイスを備え、前記カプセル化された周辺データを送信することは、前記UIBCを使用して、ソースデバイスから前記シンクデバイスに、前記周辺データを送信することを備える、C9に記載の方法。
[C15]前記周辺データを受信することは、ホストインタフェースコントローラから前記周辺データを受信することを備える、C14に記載の方法。
[C16]前記カプセル化された周辺データは、UIBCパケットにカプセル化される、C9に記載の方法。
[C17]第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立し、
前記UIBCを使用して、前記第2の計算デバイスからカプセル化された周辺データを受信し、
前記周辺データをカプセル化解除する、
ように構成されたユーザインタフェースバックチャネル(UIBC)モジュールを備える、第1の計算デバイス。
[C18]前記第1の計算デバイスは、ソースデバイスを備え、前記第2の計算デバイスはシンクデバイスを備え、前記カプセル化された周辺データを受信するために、前記UIBCモジュールは、
前記UIBCを使用して、前記ソースデバイスにおいて、前記シンクデバイスから前記カプセル化された周辺データを受信する、
ように構成される、C17に記載の第1の計算デバイス。
[C19]前記UIBCモジュールは、
前記ソースデバイスのホストインタフェースコントローラに前記カプセル化解除された周辺データを送信する、
ようにさらに構成される、C18に記載の第1の計算デバイス。
[C20]前記UIBCモジュールは、
周辺デバイスを識別するトンネル識別子値を受信する、
ようにさらに構成される、C17に記載の第1の計算デバイス。
[C21]前記第1の計算デバイスは、シンクデバイスを備え、前記第2の計算デバイスはソースデバイスを備え、前記カプセル化された周辺データを受信するために、前記UIBCモジュールは、
前記UIBCを使用して、前記シンクデバイスにおいて、前記ソースデバイスから前記カプセル化された周辺データを受信する、
ように構成される、C17に記載の第1の計算デバイス。
[C22]前記UIBCモジュールは、
前記第2のデバイスへの前記双方向UIBCを確立する前に、前記シンクデバイスの周辺デバイスのインタフェースを列挙するようにさらに構成される、C21に記載の第1の計算デバイス。
[C23]前記UIBCモジュールは、
前記シンクデバイスに接続される周辺デバイスに前記カプセル化解除された周辺データを送信する、
ようにさらに構成される、C21に記載の第1の計算デバイス。
[C24]前記カプセル化された周辺データは、UIBCパケットにカプセル化される、C17に記載の第1の計算デバイス。
[C25]第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立し、
周辺データを受信し、
前記周辺データをカプセル化し、
前記UIBCを使用して、前記第2の計算デバイスに前記カプセル化された周辺データを送信する、
ように構成されたユーザインタフェースバックチャネル(UIBC)モジュールを備える第1の計算デバイス。
[C26]前記第1の計算デバイスは、シンクデバイスを備え、前記第2の計算デバイスはソースデバイスを備え、前記カプセル化された周辺データを送信するために、前記UIBCモジュールは、
前記UIBCを使用して、前記シンクデバイスから前記ソースデバイスに前記周辺データを送信する、
ように構成される、C25に記載の第1の計算デバイス。
[C27]前記周辺データを受信するために、前記UIBCモジュールは、
前記シンクデバイスの周辺デバイスから前記周辺データを受信するように構成される、C26に記載の第1の計算デバイス。
[C28]前記UIBCモジュールは、
前記ソースデバイスへの前記双方向UIBCを確立する前に、前記シンクデバイスに接続される周辺デバイスのインタフェースを列挙する、
ようにさらに構成されるC26に記載の第1の計算デバイス。
[C29]前記UIBCモジュールは、
周辺デバイスを識別するトンネル識別子値を送信する、
ようにさらに構成される、C26に記載の第1の計算デバイス。
[C30]前記第1の計算デバイスは、ソースデバイスを備え、前記第2の計算デバイスはシンクデバイスを備え、前記カプセル化された周辺データを受信するために、前記UIBCモジュールは、
前記UIBCを使用して、前記ソースデバイスにおいて、前記シンクデバイスから前記カプセル化された周辺データを受信する、
ように構成される、C25に記載の第1の計算デバイス。
[C31]前記周辺データを受信するために、前記UIBCモジュールは、
ホストインタフェースコントローラから前記周辺データを受信する、
ようにさらに構成される、C25に記載の第1の計算デバイス。
[C32]前記カプセル化された周辺データは、UIBCパケットにカプセル化される、C25に記載の第1の計算デバイス。
[C33]第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立するための手段と、
前記UIBCを使用して、前記第2の計算デバイスからカプセル化された周辺データを受信するための手段と、
前記周辺データをカプセル化解除するための手段と、
を備える、第1の計算デバイス。
[C34]第2の計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立するための手段と、
周辺データを受信するための手段と、
前記周辺データをカプセル化するための手段と、
前記UIBCを使用して、前記第2の計算デバイスに前記カプセル化された周辺データを送信するための手段と、
を備える第1の計算デバイス。
[C35]命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、
前記UIBCを使用して、前記計算デバイスからカプセル化された周辺データを受信することと、
前記周辺データをカプセル化解除することと、
を行わせる、コンピュータ可読記憶媒体。
[C36]命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
計算デバイスへの双方向ユーザインタフェースバックチャネル(UIBC)を確立することと、
周辺データを受信することと、
前記周辺データをカプセル化することと、
前記UIBCを使用して、前記計算デバイスに前記カプセル化された周辺データを送信することと、
を行わせる、コンピュータ可読記憶媒体。