本出願は、その内容全体が参照により本明細書に組み込まれる、2011年10月5日に出願された「MINIMAL COGNITIVE MODE FOR WIRELESS DISPLAY DEVICES」という表題の、米国仮出願第61/543,675号の利益を主張する。
本開示は、ワイヤレスソースデバイスとワイヤレスシンクデバイスとの間でデータを送信することに関する。
ワイヤレスディスプレイ(WD)システムは、ソースデバイスと1つまたは複数のシンクデバイスとを含む。ソースデバイスとシンクデバイスの各々とは、ワイヤレス通信機能を伴うモバイルデバイスまたは有線デバイスのいずれかであり得る。たとえば、モバイルデバイスとして、ソースデバイスおよびシンクデバイスのうちの1つまたは複数は、携帯電話、ワイヤレス通信カードを伴うポータブルコンピュータ、携帯情報端末(PDA)、ポータブルメディアプレーヤ、または、いわゆる「スマート」フォンおよび「スマート」パッドもしくはタブレット、または他のタイプのワイヤレス通信デバイスを含む、ワイヤレス通信機能を伴う他のフラッシュメモリデバイスを備え得る。たとえば、有線デバイスとして、ソースデバイスおよびシンクデバイスのうちの1つまたは複数は、ワイヤレス通信機能を含む、テレビジョン、デスクトップコンピュータ、モニタ、プロジェクタなどを備え得る。
ソースデバイスは、特定の通信セッションに参加しているシンクデバイスのうちの1つまたは複数に、オーディオデータおよび/またはビデオデータなどのメディアデータを送信する。メディアデータは、ソースデバイスのローカルディスプレイと、シンクデバイスのディスプレイの各々の両方において再生され得る。より具体的には、参加しているシンクデバイスの各々は、受信されたメディアデータを、そのディスプレイおよびオーディオ機器上でレンダリング(render)する。いくつかの場合には、シンクデバイスのユーザは、タッチ入力およびリモートコントロール入力などのユーザ入力を、シンクデバイスに与えることができる。WDシステムでは、ユーザ入力は、シンクデバイスからソースデバイスに送信される。ソースデバイスは、シンクデバイスからの受信されたユーザ入力を処理し、シンクデバイスに送信される後続のメディアデータに対してユーザ入力の効果を与える(apply)。
一般に、本開示は、ワイヤレスディスプレイ(WD)システム中のシンクデバイスが、ソースデバイスの動作とソースデバイスから送信されるメディアデータのタイプとを制御することを可能にするための、技法に関する。いくつかの状況では、ソースデバイス上で動作しているいくつかのアプリケーションのために生成されるオーディオデータおよび/またはビデオデータのようなメディアデータは、たとえば、シンクデバイスのユーザが自動車を運転しているとき、シンクデバイスにおいて望まれないことがある。シンクデバイスは、通信セッションの注意の中心にあることが多いので、シンクデバイスが、通信セッションを終了するだけではなく、ソースデバイスから受信するメディアデータに対する何らかの制御権(control)を有することが有益である。したがって、本技法は、シンクデバイスが、ソースデバイスおよびソースデバイス上で動作しているアプリケーションの動作を修正するようにソースデバイスにシグナリングすることを可能にするための、最小認識(Minimal Cognitive)(MC)モード機構を提供する。
より具体的には、本技法は、シンクデバイスのホストシステムから検出された事前に定義されたトリガ情報に応答して、ソースデバイス上およびシンクデバイスにおけるユーザ入力デバイス上で動作しているアプリケーションの異なるレベルの動作を定義する、MCモード機構を提供する。ある例として、ホストシステムは、自動車ホストシステムを備えてよく、シンクデバイスは、自動車内にメディアヘッドユニットを備えてよい。事前に定義されたトリガ情報は、環境条件、ユーザの挙動、または、ホストシステム内のシンクデバイスのユーザが、その間はソースデバイスからのあるタイプのメディアデータが望まれない活動を行っていることを示すユーザ入力を含み得る。トリガ情報を検出したことに応答して、シンクデバイスは、MCモードの関連付けられるレベルのアクティブ化をソースデバイスにシグナリングして、ユーザの活動中のソースデバイスの動作を修正する。シンクデバイスにおけるユーザ入力デバイスの動作はまた、MCモードのアクティブ化されたレベルに基づいて修正され得る。
一例では、方法は、ソースデバイスによって、少なくとも1つのシンクデバイスとの接続を確立することであって、ソースデバイスおよびシンクデバイスが1つまたは複数のレベルを含むMCモードをサポートする、確立することと、ソースデバイスによって、MCモードのレベルの1つを示す信号をシンクデバイスから受信することであって、MCモードの示されるレベルが、シンクデバイスのホストシステムから検出されたトリガ情報に基づいてシンクデバイスにおいてアクティブ化される、受信することと、ソースデバイスにおいてMCモードの示されたレベルをアクティブ化することと、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにメディアデータを送信することとを備える。
別の例では、方法は、シンクデバイスによって、ソースデバイスとの接続を確立することであって、ソースデバイスおよびシンクデバイスが1つまたは複数のレベルを含むMCモードをサポートする、確立することと、シンクデバイスのホストシステムから検出されたトリガ情報に基づいて、シンクデバイスにおけるMCモードのレベルの1つをアクティブ化することと、シンクデバイスにおいてMCモードのアクティブ化されたレベルを示す信号をソースデバイスに送信することと、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにおいてメディアデータを受信することとを備える。
さらなる例では、ソースデバイスは、メディアデータを記憶するメモリと、少なくとも1つのシンクデバイスとの接続を確立するように構成されるプロセッサとを備え、ソースデバイスおよびシンクデバイスは、1つまたは複数のレベルを含むMCモードをサポートする。ソースデバイスのプロセッサはまた、MCモードのレベルの1つを示す信号をシンクデバイスから受信することであって、MCモードの示されるレベルが、シンクデバイスのホストシステムから検出されたトリガ情報に基づいてシンクデバイスにおいてアクティブ化される、受信することと、ソースデバイスにおいてMCモードの示されたレベルをアクティブ化することと、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにメディアデータを送信することとを行うように構成される。
別の例では、シンクデバイスは、メディアデータを記憶するメモリと、ソースデバイスとの接続を確立するように構成されるプロセッサとを備え、ソースデバイスおよびシンクデバイスは、1つまたは複数のレベルを含むMCモードをサポートする。シンクデバイスのプロセッサはさらに、シンクデバイスのホストシステムから検出されたトリガ情報に基づいて、シンクデバイスにおけるMCモードのレベルの1つをアクティブ化し、シンクデバイスにおいてMCモードのアクティブ化されたレベルを示す信号をソースデバイスに送信し、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにおいてメディアデータを受信するように構成される。
さらなる例では、ソースデバイスは、少なくとも1つのシンクデバイスとの接続を確立するための手段であって、ソースデバイスおよびシンクデバイスが1つまたは複数のレベルを含むMCモードをサポートする、手段と、MCモードのレベルの1つを示す信号をシンクデバイスから受信するための手段であって、MCモードの示されるレベルが、シンクデバイスのホストシステムから検出されたトリガ情報に基づいてシンクデバイスにおいてアクティブ化される、手段と、ソースデバイスにおいてMCモードの示されたレベルをアクティブ化するための手段と、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにメディアデータを送信するための手段とを備える。
追加の例では、シンクデバイスは、ソースデバイスとの接続を確立するための手段であって、ソースデバイスおよびシンクデバイスが1つまたは複数のレベルを含むMCモードをサポートする、手段と、シンクデバイスのホストシステムから検出されたトリガ情報に基づいて、シンクデバイスにおけるMCモードのレベルの1つをアクティブ化するための手段と、シンクデバイスにおいてMCモードのアクティブ化されたレベルを示す信号をソースデバイスに送信するための手段と、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにおいてメディアデータを受信するための手段とを備える。
別の例では、コンピュータ可読媒体は、ソースデバイスにおいて実行されると、プログラマブルプロセッサに、少なくとも1つのシンクデバイスとの接続を確立することであって、ソースデバイスおよびシンクデバイスが1つまたは複数のレベルを含むMCモードをサポートする、確立することと、MCモードのレベルの1つを示す信号をシンクデバイスから受信することであって、MCモードの示されるレベルが、シンクデバイスのホストシステムから検出されたトリガ情報に基づいてシンクデバイスにおいてアクティブ化される、受信することと、ソースデバイスにおいてMCモードの示されたレベルをアクティブ化することと、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、シンクデバイスにメディアデータを送信することとを行わせる、命令を備える。
さらなる例では、コンピュータ可読媒体は、シンクデバイスにおいて実行されると、プログラマブルプロセッサに、ソースデバイスとの接続を確立することであって、ソースデバイスおよびシンクデバイスが1つまたは複数のレベルを含むMCモードをサポートする、確立することと、シンクデバイスのホストシステムから検出されたトリガ情報に基づいて、シンクデバイスにおけるMCモードのレベルの1つをアクティブ化することと、シンクデバイスにおいてMCモードのアクティブ化されたレベルを示す信号をソースデバイスに送信することと、MCモードのアクティブ化されたレベルに対するソースデバイスの修正された動作に従って、ソースデバイスからメディアデータを受信することとを行わせる、命令を備える。
本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明および図面から、および特許請求の範囲から明らかになるであろう。
最小認識(MC)モードをサポートすることが可能なホストシステム内にソースデバイスとシンクデバイスとを含む、WDシステムの例を示すブロック図。
本開示の技法を実装し得るソースデバイスの例を示すブロック図。
本開示の技法を実装し得るホストシステム内のシンクデバイスの例を示すブロック図。
本開示の技法を実装し得る送信機システムと受信機システムとを示すブロック図。
ソースデバイスとシンクデバイスとの間のMCモードの機能のネゴシエーションを実行するための例示的なメッセージ転送シーケンスを示す概念図。
MCモードのアクティブ化されたレベルをシンクデバイスからソースデバイスにシグナリングするために使用され得る、例示的なデータパケットを示す概念図。
MCモードをサポートすることが可能なソースデバイスの例示的な動作を示すフローチャート。
MCモードをサポートすることが可能なシンクデバイスの例示的な動作を示すフローチャート。
詳細な説明
本開示は、ワイヤレスディスプレイ(WD)システム中のシンクデバイスが、ソースデバイスの動作とソースデバイスから送信されるメディアデータのタイプとを制御することを可能にするための、技法に関する。いくつかの状況では、ソースデバイス上で動作しているいくつかのアプリケーションのために生成されるオーディオデータおよび/またはビデオデータのようなメディアデータは、たとえば、シンクデバイスのユーザが運転しているとき、シンクデバイスにおいて望まれないことがある。シンクデバイスは、通信セッションの注意の中心(attention focal point)にあることが多いので、シンクデバイスが、通信セッションを終了するだけではなく、ソースデバイスから受信するメディアデータに対する何らかの制御権を有することが有益である。したがって、本技法は、シンクデバイスが、ソースデバイスおよびソースデバイス上で動作しているアプリケーションの動作を修正するようにソースデバイスにシグナリングすることを可能にするための、最小認識(MC)モード機構を提供する。
より具体的には、本技法は、シンクデバイスのホストシステムから検出された事前に定義されたトリガ情報に応答して、ソースデバイス上およびシンクデバイスにおけるユーザ入力デバイス上で動作しているアプリケーションの異なるレベルの動作を定義する、MCモード機構を提供する。ある例として、ホストシステムは、自動車ホストシステムを備えてよく、シンクデバイスは、自動車内にメディアヘッドユニットを備えてよい。事前に定義されたトリガ情報は、環境条件、ユーザの挙動、または、ホストシステム内のシンクデバイスのユーザが、その間はソースデバイスからのあるタイプのメディアデータが望まれない活動を行っていることを示すユーザ入力を含み得る。トリガ情報を検出したことに応答して、シンクデバイスは、MCモードの関連付けられるレベルのアクティブ化をソースデバイスにシグナリングして、ユーザの活動中のソースデバイスの動作を修正する。シンクデバイスにおけるユーザ入力デバイスの動作はまた、MCモードのアクティブ化されたレベルに基づいて修正され得る。
図1は、最小認識(MC)モードをサポートすることが可能なソースデバイス120とホストシステム180内のシンクデバイス160とを含む、WDシステム100の例を示すブロック図である。図1に示されるように、WDシステム100は、通信チャネル150を介してシンクデバイス160と通信するソースデバイス120を含む。ホストシステム180は、シンクデバイス160が動作する環境を備える。
例として、ホストシステム180は、少なくとも1つのプロセッサと自動車のユーザとホストシステム180との間のインターフェースとしての自動車のコンソール内のディスプレイとを含むメディアヘッドユニットとしてのシンクデバイス160を含む、自動車ホストシステムを備え得る。この場合、ソースデバイス120は、自動車のユーザに対して表示するために、ホストシステム180内のシンクデバイス160にメディアデータを提供する、モバイルデバイスを備え得る。別の例として、ホストシステム180は、会議場の中のプロジェクタ、モニタ、またはテレビジョンとしてシンクデバイス160を含む、会議場ホストシステムを備え得る。この場合、ソースデバイス120は、会議場における発表の聴衆に対して表示するために、ホストシステム180内のシンクデバイス160にメディアデータを提供する、モバイルデバイスを備え得る。
ソースデバイス120は、オーディオおよび/またはビデオ(A/V)データ121を記憶するメモリと、ディスプレイ122と、スピーカー123と、(エンコーダ124とも呼ばれる)オーディオおよび/またはビデオ(A/V)エンコーダ124と、オーディオおよび/またはビデオ(A/V)制御モジュール125と、送信機/受信機(TX/RX)ユニット126とを含み得る。シンクデバイス160は、ディスプレイ162と、スピーカー163と、(デコーダ164とも呼ばれる)オーディオおよび/またはビデオ(A/V)デコーダ164と、送信機/受信機ユニット166と、ユーザ入力(UI)デバイス167と、ユーザ入力処理モジュール(UIPM:user input processing module)168とを含み得る。示されたコンポーネントは、WDシステム100の1つの例示的な構成をなすにすぎない。他の構成は、示されたコンポーネントよりも少数のコンポーネントを含み得るか、または示されたコンポーネント以外の追加のコンポーネントを含み得る。
図1の例では、ソースデバイス120は、A/Vデータ121のビデオ部分をディスプレイ122に表示することができ、かつA/Vデータ121のオーディオ部分をスピーカー123に出力することができる。A/Vデータ121は、ソースデバイス120にローカルに記憶され、ファイルサーバ、ハードドライブ、外部メモリ、Blu−ray(登録商標)ディスク、DVD、または他の物理記憶媒体などの外部記憶媒体からアクセスされ得るか、またはインターネットなどのネットワーク接続を介してソースデバイス120にストリーミングされ得る。いくつかの例では、A/Vデータ121は、ソースデバイス120のカメラおよびマイクロフォンを介してリアルタイムでキャプチャされ得る。A/Vデータ121は、動画、テレビ番組、または音楽などのマルチメディアコンテンツを含み得るが、ソースデバイス120によって生成されたリアルタイムコンテンツも含み得る。そのようなリアルタイムコンテンツは、たとえば、ソースデバイス120上で動作しているアプリケーションによって生成されてよく、または、たとえば、ビデオ電話セッションの一部としてキャプチャされたビデオデータであってよい。いくつかの例では、そのようなリアルタイムコンテンツは、ユーザが選択することが可能なユーザ入力の選択肢のビデオフレームを含み得る。いくつかの例では、A/Vデータ121は、ビデオのフレーム上にオーバーレイされたユーザ入力の選択肢を有する動画またはTV番組のビデオフレームのような、異なるタイプのコンテンツの組合せであるビデオフレームを含み得る。
ディスプレイ122およびスピーカー123を介してローカルにA/Vデータ121をレンダリングすることに加えて、ソースデバイス120のA/Vエンコーダ124は、A/Vデータ121を符号化することができ、送信機/受信機ユニット126は、符号化されたデータを通信チャネル150を通じてシンクデバイス160に送信することができる。シンクデバイス160の送信機/受信機ユニット166は符号化されたデータを受信し、A/Vデコーダ164は、符号化されたデータを復号し、復号されたデータをディスプレイ162およびスピーカー163を介して出力する。このようにして、ディスプレイ122およびスピーカー123によってレンダリングされているオーディオデータおよびビデオデータは、ディスプレイ162およびスピーカー163によって同時にレンダリングされ得る。オーディオデータおよびビデオデータはフレーム中で並べられてよく、オーディオフレームは、レンダリングされるとき、ビデオフレームと時間的に同期されてよい。
A/Vエンコーダ124およびA/Vデコーダ164は、代替的にMPEG−4,Part10,Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格、または新生のhigh efficiency video coding(HEVC)規格のような、任意の数のオーディオおよびビデオ圧縮規格を実装し得る。多くの他のタイプのプロプライエタリな(proprietary)または規格化された圧縮技法も使用され得る。一般に、A/Vデコーダ164は、A/Vエンコーダ124の逆の(reciprocal)コーディング動作を実行するように構成される。図1には示されないが、いくつかの態様では、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によるさらなる圧縮を必要としないことがある。
図1は、オーディオペイロードデータとビデオペイロードデータとを別々に搬送する通信チャネル150を示すが、いくつかの例では、ビデオペイロードデータおよびオーディオペイロードデータは共通のデータストリームの一部であってもよいことを理解されたい。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。A/Vエンコーダ124およびA/Vデコーダ164は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装され得る。A/Vエンコーダ124およびA/Vデコーダ164の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれもが複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。したがって、ソースデバイス120およびシンクデバイス160の各々は、本開示の技法のうちの1つまたは複数を実行するように構成された専用の機械を備え得る。
ディスプレイ122およびディスプレイ162は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、種々のビデオ出力デバイスのいずれかを備え得る。これらまたは他の例では、ディスプレイ122および162は、それぞれ発光型ディスプレイまたは透過型ディスプレイであり得る。ディスプレイ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は、たとえば、リアルタイムストリーミングプロトコル(RTSP)制御メッセージを使用した機能のネゴシエーションに従って、通信セッションを確立することができる。ソースデバイス120およびシンクデバイス160は次いで、IEEE802.11規格ファミリーからの規格のような通信プロトコルを使用して、通信チャネル150を通じて通信し得る。ソースデバイス120およびシンクデバイス160は、たとえば、ソースデバイス120およびシンクデバイス160が、ワイヤレスアクセスポイントまたはいわゆるホットスポットのような中間物(intermediary)を使用せずに互いに直接通信するように、Wi−Fi Direct(WFD)規格に従って通信し得る。ソースデバイス120およびシンクデバイス160はまた、ネットワーク輻輳(congestion)を回避または低減するためにトンネルドダイレクトリンクセットアップ(tunneled direct link setup)(TDLS)を確立し得る。WFDおよびTDLSは、比較的短距離の通信セッションをセットアップすることを目的とする。この文脈では、比較的短距離とは、たとえば、約70メートル未満を指すことがあるが、雑音の多いまたは遮るもののある環境では、デバイス間の距離は、約35メートル未満、または約20メートル未満のように、さらに短いことがある。
本開示の技法は時々WFDに関して説明されることがあるが、これらの技法の態様は他の通信プロトコルにも適合し得ることが企図される。限定ではなく例として、ソースデバイス120とシンクデバイスとの間のワイヤレス通信は直交周波数分割多重化(OFDM)技法を利用し得る。限定はされないが、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、符号分割多元接続(CDMA)、またはOFDM、FDMA、TDMAおよび/またはCDMAの任意の組合せを含む、多種多様な他のワイヤレス通信技法も使用され得る。
ソースデバイス120から受信されたデータを復号し、レンダリングすることに加えて、シンクデバイス160はまた、ユーザ入力デバイス167からユーザ入力を受信することができる。ユーザ入力デバイス167は、たとえば、キーボード、マウス、トラックボールもしくはトラックパッド、タッチスクリーン、ボイスコマンド認識モジュール、または他のそのようなユーザ入力デバイスであり得る。UIPM168は、ユーザ入力デバイス167によって受信されたユーザ入力コマンドを、ソースデバイス120が解釈することが可能であるデータパケット構造にフォーマットする。そのようなデータパケットは、送信機/受信機166によって、通信チャネル150を通じてソースデバイス120に送信される。送信機/受信機ユニット126はデータパケットを受信し、A/V制御モジュール125は、データパケットを解析し(parse)て、ユーザ入力デバイス167によって受信されたユーザ入力コマンドを解釈する。データパケット中で受信されたコマンドに基づいて、A/V制御モジュール125は、符号化および送信されているコンテンツを変更することができる。このようにして、シンクデバイス160のユーザが、リモートで、およびソースデバイス120と直接対話することなく、ソースデバイス120によって送信されているオーディオペイロードデータとビデオペイロードデータとを制御することができる。
加えて、シンクデバイス160のユーザは、ソースデバイス120上のアプリケーションを起動し、制御することが可能であり得る。たとえば、シンクデバイス160のユーザは、ソースデバイス120に記憶された写真編集アプリケーションを起動し、そのアプリケーションを使用して、ソースデバイス120にローカルに記憶された写真を編集することが可能であり得る。シンクデバイス160は、その写真が実際はソースデバイス120上で編集されている間、その写真がシンクデバイス160上でローカルで編集されているように見え、感じられる、ユーザ体験をユーザにもたらし得る。そのような構成を使用して、デバイスユーザは、いくつかのデバイスとともに使用する1つのデバイスの機能を活用する(leverage)ことが可能であり得る。たとえば、ソースデバイス120は、大量のメモリとハイエンド処理能力とを伴うスマートフォンを備え得る。しかしながら、動画を見るとき、ユーザは、より大きいディスプレイスクリーンを伴うデバイス上で動画を見ることを望むことがあり、その場合、シンクデバイス160は、タブレットコンピュータまたはさらに大きいディスプレイデバイスもしくはテレビジョンであってよい。電子メールを送信することまたは電子メールに応答することを望むとき、ユーザは、物理キーボードを伴うデバイスを使用することを望むことがあり、その場合、シンクデバイス160はラップトップであってよい。どちらの場合にも、ユーザはシンクデバイスと対話しているが、処理の大半(bulk)は依然としてソースデバイス120によって実行され得る。ソースデバイスおよびシンクデバイスは、任意の所与のセッションにおいてデバイスの機能のネゴシエーションを行い、かつまたは機能を特定することによって、双方向の対話を支援することができる。
いくつかの構成では、A/V制御モジュール125は、ソースデバイス120のオペレーティングシステムによって実行されているオペレーティングシステムプロセスを備え得る。しかしながら、他の構成では、A/V制御モジュール125は、ソースデバイス120上で動作しているアプリケーションのソフトウェアプロセスを備え得る。そのような構成では、シンクデバイス160のユーザが、ソースデバイス120上で動作しているオペレーティングシステムではなく、ソースデバイス120上で動作しているアプリケーションと直接対話しているように、ユーザ入力コマンドはソフトウェアプロセスによって解釈されてよい。オペレーティングシステムではなくアプリケーションと直接対話することによって、シンクデバイス160のユーザは、ソースデバイス120のオペレーティングシステムに対してネイティブでないコマンドのライブラリへのアクセスを有し得る。加えて、アプリケーションと直接対話することにより、コマンドは、異なるプラットフォーム上で動作しているデバイスによってより容易に送信され、処理されることが可能になり得る。
シンクデバイス160において与えられたユーザ入力は、通信チャネル150を通じてソースデバイス120に戻され(be sent back)得る。一例では、シンクデバイス160が、シンクデバイス160において与えられたユーザ入力をソースデバイス120に送信することを可能にするために、ユーザインターフェースバックチャネル(UIBC)とも呼ばれる逆方向チャネルアーキテクチャが実装され得る。逆方向チャネルアーキテクチャは、ユーザ入力をトランスポートするための上位レイヤメッセージと、シンクデバイス160およびソースデバイス120においてユーザインターフェース機能をネゴシエートするための下位レイヤフレームとを含み得る。UIBCは、シンクデバイス160とソースデバイス120との間のインターネットプロトコル(IP)トランスポートレイヤの上に存在し得る。このようにして、UIBCは、開放型システム間相互接続(OSI)通信モデルにおいてトランスポートレイヤの上にあり得る。ユーザ入力データを含んでいるデータパケットの信頼できる送信とシーケンス配信とを促すために、UIBCは、伝送制御プロトコル/インターネットプロトコル(TCP/IP)またはユーザデータグラムプロトコル(UDP)のような、他のパケットベース通信プロトコルの上で動作するように構成され得る。UDPおよびTCPは、OSIレイヤアーキテクチャにおいて並列に動作することができる。TCP/IPは、シンクデバイス160およびソースデバイス120が、パケットロスの場合に、再送信技法を実施することを可能にできる。
UIBCは、クロスプラットフォームユーザ入力データを含む、様々なタイプのユーザ入力データをトランスポートするように設計され得る。たとえば、ソースデバイス120はiOS(登録商標)オペレーティングシステムを実行することができ、シンクデバイス160は、Android(登録商標)またはWindows(登録商標)のような、別のオペレーティングシステムを実行する。プラットフォームにかかわらず、UIPM168は、A/V制御モジュール125にとって理解可能な形態で、受信されたユーザ入力をカプセル化することができる。多くの異なるタイプのソースデバイスおよびシンクデバイスが異なるプラットフォーム上で動作するかどうかにかかわらず、それらのソースデバイスおよびシンクデバイスがプロトコルを活用することを可能にするように、いくつかの異なるタイプのユーザ入力フォーマットがUIBCによってサポートされ得る。汎用入力フォーマットが定義されてよく、かつプラットフォーム固有入力フォーマットもサポートされてよく、したがって、ユーザ入力がUIBCによってソースデバイス120とシンクデバイス160との間で通信され得る方法に柔軟性がもたらされる。
本開示の技法によれば、シンクデバイス160は、ソースデバイス120の動作および/またはソースデバイス120上で動作しているアプリケーションを制御して、レンダリングされソースデバイス120から送信されたメディアデータのタイプを修正することができる。いくつかの状況では、ソースデバイス120上で動作しているいくつかのアプリケーションのために生成される、電話呼(telephone calls)、テキストメッセージ、および他のA/Vコンテンツのようなメディアデータは、シンクデバイス160において望まれないことがある。たとえば、テキストメッセージ、およびユーザの対話を必要とする他のコンテンツは、シンクデバイス160のユーザが運転しているとき、発表を行っているとき、または、その間は気を散らせるもの(distractions)が歓迎されない、かつ/または危険である、何らかの他の活動を行っているとき、望まれないことがある。シンクデバイス160は、通信セッションの注意の中心にあることが多いので、シンクデバイス160が、通信セッションを単に終了するだけではなく、ソースデバイス120から受信するメディアデータに対する何らかの制御権を有することが有益である。したがって、本技法は、シンクデバイス160が、ソースデバイス120およびソースデバイス120上で動作しているアプリケーションの動作を修正するようにソースデバイス120にシグナリングすることを可能にするための、最小認識(MC)モード機構を提供する。
より具体的には、本技法は、ホストシステム180から検出された事前に定義されたトリガ情報に応答して、ソースデバイス120上およびシンクデバイス160におけるユーザ入力デバイス上で動作しているアプリケーションの1つまたは複数のレベルの動作を定義する、MCモード機構を提供する。事前に定義されたトリガ情報は、何らかの環境条件、ユーザの挙動、または、ホストシステム内のシンクデバイス160のユーザが、その間はソースデバイス120からのあるタイプのメディアデータが望まれない活動を行っていることを示すユーザ入力を含み得る。いくつかの場合には、シンクデバイス160は、ホストシステム180に含まれる1つまたは複数のセンサからのトリガ情報を検出することがある。たとえば、ホストシステム180が自動車ホストシステムを備える場合、トリガ情報は、車線の変更、道を曲がること、悪い気象条件(たとえば、雨または雪)、他の車両が近づいていること、または単に運転していることの、指示を含み得る。別の例として、ホストシステム180が会議場ホストシステムを備える場合、トリガ情報は、照明が弱くなったこと(dimming)、複数の人が部屋に入ったこと、または、発表が始まろうとしているというユーザ入力の、指示を含み得る。
トリガ情報を検出したことに応答して、シンクデバイス160は、MCモードの関連付けられるレベルのアクティブ化を、ソースデバイス120にシグナリングする。ソースデバイス120中のA/V制御モジュール125は次いで、受信された信号を解析して、シンクデバイス160においてアクティブ化されているMCモードのレベルを特定する。A/V制御モジュール125は、ソースデバイス120において、示されたレベルのMCモードをアクティブ化し、ソースデバイス120および/またはソースデバイス120上で動作しているアプリケーションの動作を修正して、ユーザの活動の間にレンダリングされシンクデバイス160に送信されるコンテンツのタイプを変更することができる。MCモードのアクティブ化されたレベルはまた、シンクデバイス160におけるUIデバイス167の動作を修正し、ユーザの活動の間に許容されるユーザ対話のタイプを変更するために、使用され得る。
MCモードの1つまたは複数のレベルの各々は、ソースデバイス120および/またはシンクデバイス160のどの動作が修正され得るかに従って、規則を規定する。たとえば、MCモードの所与のレベルに対する規則は、A/V制御モジュール125に、ソースデバイス120およびソースデバイス120上で動作しているアプリケーションの動作を修正させ、あるタイプのメディアデータ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツのみをレンダリングさせることができる。MCモードの所与のレベルに対する規則はまた、シンクデバイス160におけるUIデバイス167の修正された動作に、シンクデバイス160とのあるタイプのユーザ対話のみを許容させてよく、たとえば、ボイスコマンドおよびタッチコマンドを許容させ、ボイスコマンドのみを許容させ、またはコマンドを許容させなくてよい。
MCモードの機能のネゴシエーションは、通信セッションを確立する前、または通信セッションにわたる(throughout)様々な時間において、ソースデバイス120とシンクデバイス160との間で行われ得る。このネゴシエーションプロセスの一部として、ソースデバイス120およびシンクデバイス160は、通信セッションに対するMCモードを可能にすることに同意し得る。MCモードが有効である場合、シンクデバイス160は、ホストシステム180から検出されたトリガ情報に基づいて、MCモードのレベルの1つをアクティブ化することができる。シンクデバイス160は次いで、MCモードのアクティブ化されたレベルを示す信号をソースデバイス120に送信する。MCモードのアクティブ化されたレベルに基づいて、ソースデバイス120は、MCモードのアクティブ化されたレベルに対して許容されたタイプのメディアデータのみを処理するように、A/V制御125の動作を修正する。加えて、MCモードのアクティブ化されたレベルに基づいて、シンクデバイス160は、MCモードのアクティブ化されたレベルに対して許容されたタイプのユーザ入力のみを受け入れるように、UIデバイス167の動作を修正する。
本開示の技法によれば、ソースデバイス120およびシンクデバイス160は、RTSP制御メッセージを使用して、通信セッションのためのMCモードの機能のネゴシエーションを実行することができる。ソースデバイス120とシンクデバイス160の両方がMCモードをサポートする場合、ソースデバイス120は、通信セッションに対するMCモードを可能にし得る。MCモードが通信セッションに対して有効である場合、シンクデバイス160は、通信チャネル150を通じて、MCモードのアクティブ化されたレベルをソースデバイス120にシグナリングする。いくつかの場合には、シンクデバイス160は、UIBCを使用して、MCモードのアクティブ化されたレベルをソースデバイス120にシグナリングすることができる。他の場合には、シンクデバイス160は、RTSP制御メッセージを使用して、MCモードのアクティブ化されたレベルをソースデバイス120に示すことができる。
ある例として、ホストシステム180は、自動車のコンソール内のメディアヘッドユニットとしてシンクデバイス160を含む、自動車ホストシステムを備え得る。ホストシステム180は、自動車のいくつかの部分を制御し、自動車のユーザ(たとえば、運転者および/または乗員)とのインターフェースをとるように構成される、自動車のコンピュータシステムを備え得る。メディアヘッドユニットは、少なくとも1つのプロセッサと1つのディスプレイとを含んでよく、ユーザとホストシステム180との間のインターフェースとして動作してよい。この場合、ソースデバイス120は、自動車のユーザに対して表示するために、ホストシステム180内のシンクデバイス160にメディアデータを提供する、モバイルデバイスを備え得る。
一例として、ソースデバイス120は、自動車のユーザが所有するスマートフォンを備え得る。ユーザが自動車の中にいる間、スマートフォン(すなわち、ソースデバイス120)は、ユーザへの表示のために、自動車のコンソール内に埋め込まれたホストシステム180のメディアヘッドユニット(すなわち、シンクデバイス160)に、メディアデータを送信することができる。ユーザが運転しているとき、すべてのタイプのメディアデータ、特に、ユーザ対話を必要とするメディアデータが運転者への表示のためにシンクデバイス160に送信されることは、望ましくないことがある。本開示の技法は、シンクデバイス160が、自動車が運転されていること、および/または、運転が行われている環境条件もしくは交通条件という、ホストシステム180からのトリガ情報を検出し、トリガ情報と関連付けられるMCモードのレベルを決定することを可能にする。シンクデバイス160は次いで、その運転条件では気を散らせないものである、または危険ではないデータのみを含むように、ソースデバイス120から受信されるメディアデータのタイプを修正するために、ソースデバイス120にシグナリングしてMCモードのレベルを示すことができる。
別の例では、ホストシステム180は、会議場の中のプロジェクタ、モニタ、またはテレビジョンとしてシンクデバイス160を含む、会議場ホストシステムを備え得る。ホストシステム180は、会議場のいくつかの部分を制御し、会議場のユーザ(たとえば、発表者および/または聴衆)とのインターフェースをとるように構成される、会議場のコンピュータシステムを備え得る。この場合、ソースデバイス120は、発表の間に1人または複数の聴衆に対して表示するために、ホストシステム180内のシンクデバイス160にメディアデータを提供する、モバイルデバイスを備え得る。
一例として、ソースデバイス120は、会議場の中の発表者が所有するスマートフォンを備え得る。スマートフォン(すなわち、ソースデバイス120)は、聴衆への表示のために、会議場内のホストシステム180のプロジェクタ、モニタ、またはテレビジョン(すなわち、シンクデバイス160)にメディアデータを送信することができる。ユーザが発表を行っているとき、すべてのタイプのメディアデータ、特に、個人的なメディアデータが発表のすべての聴衆への表示のためにシンクデバイス160に送信されることは、望ましくないことがある。本開示の技法は、シンクデバイス160が、会議場が聴衆で満たされていること、および/または、会議場において発表が始まっていることという、ホストシステム180からのトリガ情報を検出し、トリガ情報と関連付けられるMCモードのレベルを決定することを可能にする。シンクデバイス160は次いで、個人的なデータまたは発表に関係のないデータのみを含むように、ソースデバイス120から受信されるメディアデータのタイプを修正するために、ソースデバイス120にシグナリングしてMCモードのレベルを示すことができる。
図1の例では、ソースデバイス120は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、Wi−Fi対応テレビジョン、またはオーディオデータとビデオデータとを送信することが可能な任意の他のデバイスを備え得る。ホストシステム180内のシンクデバイス160は、同様に、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、Wi−Fi対応テレビジョン、またはオーディオデータとビデオデータとを受信し、ユーザ入力データを受信することが可能な任意の他のデバイスを備え得る。いくつかの例では、シンクデバイス160は、ディスプレイ162、スピーカー163、UIデバイス167、およびA/Vエンコーダ164が、すべて、別個であるが相互動作可能なデバイスの一部であるような、複数のデバイスのシステムを含み得る。ソースデバイス120は、同様に、単一のデバイスではなく、複数のデバイスのシステムであり得る。
本開示では、ソースデバイスという用語を、一般に、A/Vデータを送信しているデバイスを指すために使用し、シンクデバイスという用語を、一般に、ソースデバイスからA/Vデータを受信しているデバイスを指すために使用する。多くの場合、ソースデバイス120およびシンクデバイス160は同様または同等のデバイスであってよく、一方のデバイスがソースとして動作し、他方がシンクとして動作する。その上、異なる通信セッションではこれらの役割が逆になることがある。したがって、1つの通信セッションにおけるシンクデバイスは後続の通信セッションではソースデバイスになることがあり、またはその逆も同様である。
いくつかの例では、WDシステム100は、シンクデバイス160およびホストシステム180に加えて、1つまたは複数のホストシステム内に1つまたは複数のシンクデバイスを含み得る。シンクデバイス160と同様に、追加のシンクデバイスは、ソースデバイス120からA/Vデータを受信し、かつ確立されたUIBCを通じてソースデバイス120にユーザコマンドを送信し得る。いくつかの構成では、複数のシンクデバイスは互いに独立に動作することができ、ソースデバイス120におけるA/Vデータ出力は、シンクデバイス160および追加のシンクデバイスの1つまたは複数において同時に出力され得る。代替構成では、シンクデバイス160は主要なシンクデバイスであってよく、追加のシンクデバイスの1つまたは複数は二次的なシンクデバイスであってよい。そのような例示的な構成では、シンクデバイス160および追加のシンクデバイスの1つが結合されてよく、シンクデバイス160はビデオデータを表示することができ、一方追加のシンクデバイスは対応するオーディオデータを出力する。加えて、いくつかの構成では、シンクデバイス160は送信されたビデオデータのみを出力することができ、一方追加のシンクデバイスは送信されたオーディオデータを出力する。
図2は、ソースデバイス220の一例を示すブロック図である。ソースデバイス220は、図1中のソースデバイス120と同様のデバイスであってよく、ソースデバイス120と同じ方法で動作し得る。ソースデバイス220は、ローカルディスプレイ222と、スピーカー223と、プロセッサ231と、ディスプレイプロセッサ235と、オーディプロセッサ236と、メモリ232と、トランスポートユニット233と、ワイヤレスモデム234と、MCモードドライバ240とを含む。図2に示されるように、ソースデバイス220は、トランスポート、記憶、および表示のためにA/Vデータを符号化および/または復号する1つまたは複数のプロセッサ(すなわち、プロセッサ231、ディスプレイプロセッサ235、およびオーディオプロセッサ236)を含み得る。メディアデータまたはA/Vデータは、たとえばメモリ232に記憶され得る。メモリ232は、A/Vファイル全体を記憶してよく、または、たとえば、別のデバイスまたはソースからストリーミングされた、A/Vファイルの一部分を記憶するにすぎないより小さいバッファを備えてよい。
トランスポートユニット233は、符号化されたA/Vデータをネットワークトランスポートのために処理し得る。たとえば、符号化されたA/Vデータは、プロセッサ231によって処理され、ネットワーク上での通信のためにトランスポートユニット233によってネットワークアクセスレイヤ(NAL)ユニットにカプセル化され得る。NALユニットは、ワイヤレスモデム234によってネットワーク接続を介してワイヤレスシンクデバイスに送信され得る。ワイヤレスモデム234は、たとえば、IEEE802.11規格ファミリーのうちの1つを実装するように構成されたWi−Fiモデムであり得る。また、ソースデバイス220は、A/Vデータをローカルで処理し、表示し得る。特に、ディスプレイプロセッサ235は、ローカルディスプレイ222で表示されるようにビデオデータを処理することができ、かつオーディオプロセッサ236は、スピーカー223での出力のためにオーディオデータを処理することができる。
図1のソースデバイス120に関して上で説明されたように、ソースデバイス220は、ユーザ入力コマンドとMCモードレベル指示とをシンクデバイスから受信し得る。たとえば、ソースデバイス220のワイヤレスモデム234は、NALユニットなどのカプセル化されたユーザ入力データパケットをシンクデバイスから受信し、カプセル化されたデータユニットをカプセル化解除(decapsulation)のためにトランスポートユニット233に送信することができる。トランスポートユニット233はNALユニットからユーザ入力データパケットを抽出することができ、プロセッサ231はデータパケットを解析してユーザ入力コマンドを抽出することができる。ユーザ入力コマンドに基づいて、プロセッサ231は、ソースデバイス220によって処理されているA/Vデータのタイプを修正する。他の例では、ソースデバイス220は、トランスポートユニット233からユーザ入力データパケットを受信し、データパケットを解析してユーザ入力コマンドを抽出し、ユーザ入力コマンドに基づいて、ソースデバイス220によって処理されているA/Vデータのタイプを修正するようにプロセッサ231に指示する、ユーザ入力ユニットまたはドライバ(図2には示されない)を含み得る。
本開示の技法によれば、ソースデバイス220のワイヤレスモデム234は、シンクデバイスからのカプセル化されたデータパケットまたは制御メッセージのいずれかにおいて、MCモードレベル指示を受信することができる。ワイヤレスモデム234は次いで、MCモードデータパケットまたは制御メッセージをトランスポートユニット233に送信することができる。図2に示されるように、MCモードユニット240は、MCモードデータパケットまたは制御メッセージをトランスポートユニット233から受信し、データパケットまたは制御メッセージを解析してMCモードレベルを抽出し、示されたMCモードレベルに基づいて、ソースデバイス220によって処理されているA/Vデータのタイプ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツを修正するようにプロセッサ231に指示する。図2ではソースデバイス220内の別個のユニットとして示されるが、他の例では、MCモードユニット240は、示されるMCモードレベルを抽出しA/Vデータの処理を修正するように、プロセッサ231内で動作することができる。このようにして、図1のA/V制御モジュール125に関して上で説明された機能は、完全にまたは部分的に、プロセッサ231およびMCモードユニット240によって実装され得る。
本開示で説明されるMCモード機構は、事前に定義されたトリガ情報がシンクデバイスによって検出されたことに応答して、ソースデバイス220の動作の1つまたは複数の異なるレベルを定義する。MCモードの1つまたは複数のレベルの各々は、ソースデバイス220のどの動作が修正され得るかに従って、規則を規定する。たとえば、MCモードの所与のレベルに対する規則は、あるタイプのメディアデータ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツのみをレンダリングするように、プロセッサ231の修正を指示する(direct)ことができる。いくつかの例では、MCモードの所与のレベルに対する規則はまた、あるタイプのユーザ対話のみを許容するように、シンクデバイスにおけるユーザ入力インターフェースの修正を指示することができる。MCモードに含まれるレベルの数は、WD通信セッション規格、たとえばWFDまたはTDLSに従って定義され得る。ある例として、WFD規格は、MC−1、MC−2、およびMC−3という3つの異なるMCモードレベルを定義し得る。他の例では、MCモードは、より多数またはより少数のレベルの動作を定義し得る。
ソースデバイス220および/またはソースデバイス220と通信しているシンクデバイスのベンダー(vender)は、レベルの各々と関連付けられる規則を設定することを担い得る。ベンダーはまた、シンクデバイスにおいて使用されるトリガ情報を割り当てて、レベルの各々を特定することを担い得る。MCモードレベルの各々と関連付けられる規則は、特定のMCモードで動作している間にシンクデバイスへの送信のためにプロセッサ231によってレンダリングされることが許容される、メディアデータのタイプを規定する。MCモードの異なるレベルに対する設定された規則は、MCモードユニット240またはメモリ232に記憶され得る。MCモードユニット240が、シンクデバイスにおいてアクティブ化されるMCモードのレベルの1つを示すデータパケットまたは制御メッセージを受信する場合、MCモードユニット240は、MCモードのアクティブ化されたレベルと関連付けられる規則によって許容されるタイプのA/Vデータ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツのみを処理するように、プロセッサ231の動作を修正する。
以下の表1は、ソースデバイス220によってレンダリングされる異なるタイプのメディアデータおよびシンクデバイスによって受信されるユーザ入力に関する、MC−1、MC−2、およびMC−3というMCモードの3つのレベルの各々に対して設定される例示的な規則を示す。
たとえば、表1によれば、MC−1レベルにおいて、関連付けられる規則は、ソースデバイス220による、電話呼および一般的なA/Vコンテンツの通常の処理と送信とを許容し得るが、ボイスコマンドテキストメッセージのみをレンダリングするように、プロセッサ231の動作を制約し得る。MC−2レベルにおいて、関連付けられる規則は、ボイスコマンド電話呼とボイスコマンドA/Vコンテンツとのみをレンダリングし、かつテキストメッセージを何らレンダリングしないように、プロセッサ231の動作を制約し得る。加えて、MC−2レベルと関連付けられる規則は、シンクデバイスにおけるユーザ対話を、ボイスコマンドのみに制約し得る。MC−3レベルにおいて、関連付けられる規則は、電話呼、テキストメッセージ、またはシンクデバイスへの送信のための一般的なA/Vコンテンツを何らレンダリングしないように、プロセッサ231の動作を制約し得る。加えて、MC−3レベルと関連付けられる規則は、シンクデバイスにおけるあらゆるユーザ対話を許容できない。他の例では、異なる規則が、MCモードレベルMC−1、MC−2、およびMC−3の1つまたは複数、または追加のMCモードレベルに対して設定され得る。
図2のプロセッサ231は、一般に、限定はされないが、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、他の等価な集積回路もしくはディスクリート論理回路、またはそれらの何らかの組合せを含む、多種多様なプロセッサのいずれかを表す。図2のメモリ232は、限定はされないが、同期ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリなどを含む、多種多様な揮発性または不揮発性メモリのいずれかを備えてよく、メモリ232は、オーディオデータ/ビデオデータならびに他の種類のデータを記憶するためのコンピュータ可読記憶媒体を備えてよい。メモリ232は、加えて、本開示で説明される様々な技法を実行することの一部として、プロセッサ231によって実行される命令とプログラムコードとを記憶し得る。
図3は、本開示の技法を実装し得るホストシステム300内のシンクデバイス360の例を示すブロック図である。ホストシステム300は、シンクデバイス180が動作する環境を備える。たとえば、ホストシステム300は、自動車のユーザ、たとえば運転者および乗員に対する表示のための、自動車のコンソール内に埋め込まれたメディアヘッドユニットとしてシンクデバイス360を含む、自動車ホストシステムを備え得る。別の例として、ホストシステム300は、会議場のユーザ、たとえば発表者および聴衆に対する表示のための、会議場の中のプロジェクタ、モニタ、またはテレビジョンとしてシンクデバイス360を含む、会議場ホストシステムを備え得る。ホストデバイス300およびシンクデバイス360は、図1のホストデバイス180およびシンクデバイス160と同様であり得る。
シンクデバイス360は、プロセッサ331と、メモリ332と、トランスポートユニット333と、ワイヤレスモデム334と、ディスプレイプロセッサ335と、ローカルディスプレイ362と、オーディオプロセッサ336と、スピーカー363と、ユーザ入力インターフェース376と、MCモードユニット378とを含む。シンクデバイス360は、ワイヤレスモデム334において、ソースデバイスから送信されたカプセル化されたデータユニットを受信する。ワイヤレスモデム334は、たとえば、IEEE802.11規格ファミリーからの1つまたは複数の規格を実装するように構成されたWi−Fiモデムであり得る。トランスポートユニット333は、カプセル化されたデータユニットをカプセル化解除することができる。たとえば、トランスポートユニット333は、カプセル化されたデータユニットから符号化されたビデオデータを抽出し、符号化されたA/Vデータを、出力のために復号されレンダリングされるように、プロセッサ331に送信し得る。ディスプレイプロセッサ335は、ローカルディスプレイ362上で表示されるように復号されたビデオデータを処理することができ、かつオーディオプロセッサ336は、スピーカー363上での出力のために復号されたオーディオデータを処理することができる。
オーディオデータとビデオデータとをレンダリングすることに加えて、ワイヤレスシンクデバイス360は、ユーザ入力インターフェース376を通じてユーザ入力データも受信することができる。ユーザ入力インターフェース376は、限定はされないが、タッチディスプレイインターフェース、キーボード、マウス、ボイスコマンドモジュール、(たとえば、カメラベースの入力キャプチャ機能をもつ)ジェスチャーキャプチャデバイス、またはいくつかのユーザ入力デバイスの任意の他のユーザ入力デバイスを含む、いくつかのユーザ入力デバイスのいずれかを表し得る。ユーザ入力インターフェース376を通じて受信されたユーザ入力は、プロセッサ331によって処理され得る。この処理は、受信されたユーザ入力コマンドを含む、データパケットを生成することを含み得る。生成されると、トランスポートユニット333は、そのデータパケットを、UIBCを通じたソースデバイスへのネットワークトランスポートのために処理し得る。
本開示の技法によれば、シンクデバイス360は、ホストシステム300からのトリガ情報を検出することができる。ホストシステム300は、環境条件、ユーザの挙動、および/またはホストシステム300からのユーザ入力を感知することが可能な、1つまたは複数のセンサ312を含み得る。MCモードユニット378は、検出されたトリガ情報を処理して、検出されたトリガ情報と関連付けられるMCモードのレベルの1つを判定する。MCモードユニット378は次いで、シンクデバイス360において判定されたレベルのMCモードをアクティブ化し、ユーザ入力インターフェース376を介した自動車のユーザによって許容される対話のタイプを修正することができ、たとえば、ボイスコマンドおよびタッチコマンドを許容し、ボイスコマンドのみを許容し、またはコマンドを許容しない。図3ではシンクデバイス360内の別個のユニットとして示されるが、他の例では、MCモードユニット378は、検出されたトリガ情報に基づいてMCモードのレベルを判定しアクティブ化するように、プロセッサ331内で動作することができる。
MCモードのレベルをアクティブ化すると、MCモードユニット378はまた、MCモードのアクティブ化されたレベルを示す信号を生成し、その信号をソースデバイスに送信するように、トランスポートユニット333に指示する。一例として、トランスポートユニット333は、データパケット内で、MCモードのアクティブ化されたレベルを示し得る。トランスポートユニット333は、そのデータパケットを、UIBCを通じたソースデバイスへのネットワークトランスポートのために処理し得る。別の例として、トランスポートユニット333は、通信チャネルを通じてソースデバイスに送信される制御メッセージ、たとえばRTSP制御メッセージ内で、MCモードのアクティブ化されたレベルを示し得る。ソースデバイスは次いで、示されたMCモードレベルに基づいて、シンクデバイス360に送信されているA/Vデータのタイプ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツを修正することができる。
一例として、ホストシステム300は、自動車のコンソール内のメディアヘッドユニットとしてシンクデバイス360を含む、自動車ホストシステムを備え得る。この場合、ホストシステム300は、自動車のいくつかの部分と自動車のユーザとの対話とを制御するように構成される、自動車のコンピュータシステムを備え得る。ホストシステム300が自動車ホストシステムを備える場合、トリガ情報は、車線の変更、道を曲がること、悪い気象条件(たとえば、雨または雪)、他の車両が近づいていること、または単に運転していることの、指示を含み得る。いくつかの例では、トリガ情報は、ホストシステム300中のセンサ312の1つを介して、またはユーザ入力インターフェース376を介して受信される、特定の環境条件または意図的なユーザの挙動、たとえば、運転していることを示すユーザ入力を備え得る。トリガ情報は、モバイルデバイスまたは他のコンピューティングデバイスを使用するときに、法律、規制、または安全な運転習慣に適合するように規則を定義する、MCモードの具体的なレベルを特定することができる。
別の例では、ホストシステム300は、会議場の中のプロジェクタ、モニタ、またはテレビジョンとしてシンクデバイス360を含む、会議場ホストシステムを備え得る。この場合、ホストシステム300は、会議場のいくつかの部分を制御し、会議場のユーザ(たとえば、発表者および/または聴衆)とのインターフェースをとるように構成される、会議場のコンピュータシステムを備え得る。ホストシステム300が会議場を備える場合、トリガ情報は、照明が弱くなったこと、複数の人が部屋に入ったこと、または、発表が始まろうとしているというユーザ入力の、指示を含み得る。いくつかの例では、トリガ情報は、ホストシステム300中のセンサ312の1つを介して、またはユーザ入力インターフェース376を介して受信される、意図的なユーザの挙動、たとえば、発表を行っていることを示すユーザ入力を備え得る。この場合、トリガ情報は、発表の間に、個人的なまたは無関係のメディアデータ、たとえば、電話呼、テキストメッセージ、または他のオーディオおよび/もしくはビデオコンテンツを発表のすべての聴衆が見ないことを確実にするように規則を定義する、MCモードの具体的なレベルを特定することができる。
本開示で説明されるMCモード機構は、事前に定義されたトリガ情報がホストシステム300から検出されたことに応答して、シンクデバイス360の動作の1つまたは複数の異なるレベルを定義する。MCモードの1つまたは複数のレベルの各々は、シンクデバイス360のどの動作が修正され得るかに従って、規則を規定する。たとえば、MCモードの所与のレベルに対する規則は、所与のMCモードレベルで動作している間に、シンクデバイス360が、どのタイプのメディアデータをソースデバイスから受信するかを決定し得る。加えて、MCモードの所与のレベルに対する規則は、あるタイプのユーザ対話のみを許容するように、たとえば、ボイスコマンドおよびタッチコマンドを許容し、ボイスコマンドのみを許容し、またはコマンドを許容しないように、シンクデバイス360におけるユーザ入力インターフェース376の修正を指示することができる。図2からのソースデバイス220に関して上で説明されたように、MCモードに含まれるレベルの数は、WD通信セッション規格、たとえばWFDまたはTDLSに従って定義され得る。
シンクデバイス360および/またはシンクデバイス360と通信しているソースデバイスのベンダーは、レベルの各々と関連付けられる規則を設定することを担い得る。ベンダーはまた、ホストシステム300からのトリガ情報を割り当てて、レベルの各々を特定することを担い得る。MCモードの異なるレベルに対する設定された規則およびトリガ情報は、MCモードユニット378またはメモリ332に記憶され得る。MCモードレベルの各々と関連付けられる規則は、ソースデバイスによってレンダリングされシンクデバイス360に送信されることが許容されるメディアデータのタイプと、特定のMCモードレベルで動作している間にシンクデバイス360において許容されるユーザ対話のタイプとを、規定する。
MCモードユニット378が、ホストシステム300内のセンサ312からトリガ情報を受信すると、MCモードユニット378は、検出されたトリガ情報と関連付けられるMCモードレベルを決定する。MCモードユニット378は次いで、シンクデバイス360において、MCモードの決定されたレベルをアクティブ化することができる。アクティブ化されたMCモードレベルに基づいて、MCモードユニット378は、MCモードのアクティブ化されたレベルと関連付けられる規則によって許容されるタイプのユーザ入力と対話とのみを受け入れるように、たとえば、ボイスコマンドおよびタッチコマンドを受け入れ、ボイスコマンドのみを受け入れ、またはコマンドを受け入れないように、ユーザ入力インターフェース376の動作を修正する。加えて、MCモードユニット378は、MCモードのアクティブ化されたレベルを示す信号を生成し、その信号をソースデバイスに送信して、MCモードレベルで動作している間にレンダリングされシンクデバイス360に送信されるデータのタイプを修正するように、トランスポートユニット333に指示する。
上の表1に関して、MC−1レベルにおいて、関連付けられる規則は、シンクデバイス360が、ソースデバイスからの電話呼と一般的なA/Vコンテンツとを受信することを許容し得るが、テキストメッセージをボイスコマンドのみに制約し得る。MC−2レベルにおいて、関連付けられる規則は、ソースデバイスから受信される電話呼と一般的なA/Vコンテンツとをボイスコマンドのみに制約し、ソースデバイスからのテキストメッセージを除去することができる。この場合、MC−2レベルと関連付けられる規則は、ユーザ入力インターフェース376を介したソースデバイス360におけるすべてのユーザ対話を、ボイスコマンドのみに制約し得る。MC−3レベルにおいて、関連付けられる規則は、ソースデバイスから受信されたすべての電話呼と、テキストメッセージと、一般的なA/Vコンテンツとを除去することができる。この場合、MC−3レベルと関連付けられる規則は、ユーザ入力インターフェース376を介したシンクデバイス360におけるあらゆるユーザ対話を許容できない。
ホストシステム300が自動車ホストシステムを備える一例として、表1のMCモードレベルによれば、ユーザが良好な条件で運転していることをシンクデバイス360がホストシステム300中のセンサ312を介して検出すると、シンクデバイス360は、MC−1のアクティブ化をソースデバイスにシグナリングして、ソースデバイスにおけるテキストメッセージングアプリケーションの動作のみを修正することができる。ユーザが悪い条件(たとえば、交通混雑または悪天候)の中で運転していることをシンクデバイス360が検出すると、シンクデバイス360は、MC−2またはMC−3のアクティブ化をソースデバイスにシグナリングして、ソースデバイスにおいて動作しているすべてのメディアデータアプリケーションの動作を修正し、かつシンクデバイス360におけるユーザ入力インターフェース376の動作を修正することができる。
図3のプロセッサ331は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、他の等価な集積回路もしくはディスクリート論理回路、またはそれらの何らかの組合せのような、広範囲のプロセッサのうちの1つまたは複数を備え得る。図3のメモリ332は、限定はされないが、同期ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリなどを含む、多種多様な揮発性または不揮発性メモリのいずれかを備えてよく、メモリ232は、オーディオデータ/ビデオデータならびに他の種類のデータを記憶するためのコンピュータ可読記憶媒体を備えてよい。メモリ332は、加えて、本開示で説明される様々な技法を実行することの一部として、プロセッサ331によって実行される命令とプログラムコードとを記憶し得る。
図4は、通信チャネル150を通じて通信するために、図1の送信機/受信機126および送信機/受信機166によって使用され得る例示的な送信機システム410と受信機システム450とを示すブロック図である。送信機システム410において、いくつかのデータストリームのトラフィックデータがデータソース412から送信(TX)データプロセッサ414に与えられる。各データストリームは、それぞれの送信アンテナを通じて送信され得る。TXデータプロセッサ414は、各データストリームのトラフィックデータを、そのデータストリーム用に選択された特定のコーディング方式に基づいてフォーマットし、コーディングし、インターリーブする。各データストリームのコーディングされたデータは、直交周波数分割多重化(OFDM)技法を使用してパイロットデータと多重化され得る。限定はされないが、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、符号分割多元接続(CDMA)、またはOFDM、FDMA、TDMAおよび/またはCDMAの任意の組合せを含む、多種多様な他のワイヤレス通信技法も使用され得る。
図4に従って、パイロットデータは通常、知られている方法で処理される知られているデータパターンであり、チャネル応答を推定するために受信機システム450において使用され得る。次いで、各データストリームの多重化されたパイロットおよびコーディングされたデータは、変調シンボルを与えるために、そのデータストリーム用に選択された特定の変調方式(たとえば、2位相シフトキーイング(BPSK)、4位相シフトキーイング(QPSK)、M−PSK、またはM−QAM(直交振幅変調)、ここでMは2のべき乗(a power of two)であり得る)に基づいて変調(たとえば、シンボルマッピング)される。各データストリームのデータレート、コーディング、および変調は、メモリ432に結合され得るプロセッサ430によって実行される命令によって決定され得る。
次いで、データストリームの変調シンボルがTX MIMOプロセッサ420に与えられ、TX MIMOプロセッサ420はさらに(たとえば、OFDM用に)その変調シンボルを処理し得る。次いで、TX MIMOプロセッサ420は、NT個の変調シンボルストリームをNT個の送信機(TMTR)422A〜422T(「送信機422」)に与え得る。いくつかの態様では、TX MIMOプロセッサ420は、データストリームのシンボルと、シンボルの送信元のアンテナとにビームフォーミング重みを適用する。送信機422の各々は、それぞれのシンボルストリームを受信し、処理して、1つまたは複数のアナログ信号を与え、さらに、それらのアナログ信号を調整(たとえば、増幅、フィルタリング、およびアップコンバート)して、MIMOチャネルを通じて送信するのに適した変調された信号を与え得る。次いで、送信機422からのNT個の変調された信号は、それぞれNT個のアンテナ424A〜424t(「アンテナ424」)から送信される。
受信機システム450では、送信される変調された信号はNR個のアンテナ452A〜452R(「アンテナ452」)によって受信され、アンテナ452の各々からの受信された信号は、受信機(RCVR)454A〜454R(「受信機454」)のそれぞれ1つに与えられる。受信機454の各々は、それぞれの受信された信号を調整(たとえば、フィルタリング、増幅、およびダウンコンバート)し、調整された信号をデジタル化してサンプルを与え、さらにそれらのサンプルを処理して、対応する「受信」シンボルストリームを与える。次いで、受信(RX)データプロセッサ460は、NR個の受信機454からNR個の受信シンボルストリームを受信し、特定の受信機処理技法に基づいて処理して、NT個の「検出」シンボルストリームを与える。次いで、RXデータプロセッサ460は、各検出シンボルストリームを復調し、デインターリーブし、復号して、データストリームのトラフィックデータを復元する。RXデータプロセッサ460による処理は、送信機システム410におけるTX MIMOプロセッサ420およびTXデータプロセッサ414によって実行される処理を補足するものである。
メモリ472と結合され得るプロセッサ470は、どのプリコーディング行列を使用すべきかを定期的に判定する。逆方向リンクメッセージは、通信リンクおよび/または受信データストリームに関する様々なタイプの情報を備え得る。次いで、逆方向リンクメッセージは、データソース436からいくつかのデータストリームのトラフィックデータも受信するTXデータプロセッサ438によって処理され、変調器480によって変調され、送信機454によって調整され、送信機システム410に戻される。
送信機システム410において、受信機システム450からの変調された信号は、アンテナ424によって受信され、受信機422によって調整され、復調器440によって復調され、受信機システム450によって送信された逆方向リンクメッセージを抽出するためにRXデータプロセッサ442によって処理される。次いで、プロセッサ430は、ビームフォーミング重みを決定するためにどのプリコーディング行列を使用すべきかを決定し、抽出されたメッセージを処理する。
図5は、ソースデバイス520とシンクデバイス560との間のMCモードの機能のネゴシエーションを実行するための例示的なメッセージ転送シーケンスを示す概念図である。MCモードの機能のネゴシエーションは、ソースデバイス520とシンクデバイス560との間のより大きい通信セッションの確立プロセスの一部として行われ得る。このセッションは、たとえば、基礎をなす接続規格としてWFDまたはTDLSとともに確立され得る。WFDまたはTDLSセッションを確立した後に、シンクデバイス560は、ソースデバイス520とのTCP接続を開始することができる。TCP接続を確立することの一部として、ソースデバイス520とシンクデバイス560との間の通信セッションを管理するために、リアルタイムストリーミングプロトコル(RTSP)を実行する制御ポートが確立され得る。
ソースデバイス520は、一般に、図1のソースデバイス120について上で説明されたのと同じ方法で動作することができ、かつシンクデバイス560は、一般に、図1のシンクデバイス160について上で説明されたのと同じ方法で動作することができる。ソースデバイス520およびシンクデバイス560が接続を確立した後、ソースデバイス520およびシンクデバイス560は、後続の通信セッションのために使用されるべきパラメータのセットを決定し、機能のネゴシエーションの交換の一部としてMCモードがサポートされるかどうかを判定することができる。
ソースデバイス520およびシンクデバイス560は、メッセージのシーケンスを通して機能をネゴシエートし得る。それらのメッセージは、たとえば、リアルタイムストリーミングプロトコル(RTSP)メッセージであり得る。そのネゴシエーションのいずれかの段階において、RTSP要求メッセージの受信側が、RTSP OK以外のRTSPステータスコードを含むRTSP応答で応答することがあり、その場合、メッセージ交換はパラメータの異なるセットを用いて再試行されてよく、または機能のネゴシエーションのセッションは終了してよい。
ソースデバイス520は、シンクデバイス560がサポートするRTSP方法のセットを決定するために、シンクデバイス560にRTSP options要求メッセージ570を送信することができる。ソースデバイス520からメッセージ570を受信すると、シンクデバイス560は、シンク560によってサポートされるRTSP方法を列挙する、RTSP options応答メッセージ572で応答することができる。メッセージ572はまた、RTSP OKステータスコードを含み得る。
ソースデバイス520にメッセージ572を送信した後に、シンクデバイス560は、ソースデバイス520がサポートするRTSP方法のセットを決定するために、RTSP options要求メッセージ574を送信することができる。シンクデバイス560からメッセージ574を受信すると、ソースデバイス520は、ソースデバイス520によってサポートされるRTSP方法を列挙する、RTSP options応答メッセージ576で応答することができる。メッセージ576はまた、RTSP OKステータスコードを含み得る。
メッセージ576を送信した後に、ソースデバイス520は、ソースデバイス520に関係のある機能のリストを規定するために、RTSP get_parameter要求メッセージ578を送信することができる。本開示の技法によれば、メッセージ578において要求される機能の1つは、シンクデバイス560がMCモードをサポートすることが可能かどうかである。たとえば、MCモード機能パラメータは、「uibc_mc_mode_capa」という名称であってよく、RTSP get_parameter要求メッセージ578は次の通りであり得る。
シンクデバイス560は、RTSPステータスコードを含み得るRTSP get_parameter応答メッセージ580で応答し得る。RTSPステータスコードがOKである場合、メッセージ580は、シンクデバイス560によってサポートされる、RTSP get_parameter要求メッセージ578中で規定されたパラメータに対する応答パラメータも含み得る。シンクデバイス560は、シンクデバイス560がサポートしない、メッセージ578中のパラメータを無視することができる。例として、シンクデバイス560は、RTSP get_parameter応答メッセージ580によって応答して、シンクデバイスがMCモードをサポートできることを宣言することができ、たとえば、uibc_mc_mode_capa:yesである。シンクデバイス20の宣言は、以下のように、ABNF(Augmented Backus-Naur Form)(拡張バッカスナウア記法)フォーマットに従い得る。
この場合、RTSP get_parameter応答メッセージ580は次の通りであり得る。
メッセージ580に基づいて、ソース520は、通信セッションのために使用されるべきパラメータの最適セットを決定することができ、シンクデバイス560にset_parameter要求メッセージ582を送信することができる。set_parameter要求メッセージ582は、ソースデバイス520とシンクデバイス560との間の通信セッション中に使用されるべきパラメータセットを含み得る。たとえば、ソースデバイス520とシンクデバイス560の両方がMCモードをサポートする場合、ソースデバイス520は、通信セッションに対するMCモードを有効にし得る。MCモードを有効にするために、ソースデバイス520は、RTSP set_parameter要求メッセージ582をシンクデバイス560に送信して、MCモードが有効にされ通信セッションの間に使用されることを示し、たとえば、uibc_mc_mode_capa:yesである。RTSP set_parameter要求メッセージ582は次の通りであり得る。
メッセージ582を受信すると、シンクデバイス560は、メッセージ582中で規定されたパラメータを設定することが成功していたかどうかを示すRTSPステータスコードを含むRTSP set_parameter応答メッセージ584で応答することができる。たとえば、シンクデバイス560が、以前の(earlier)RTSP get_parameter応答メッセージ580においてMCモードのサポートを示す場合、シンクデバイス560は、MCモードが通信セッションの間に使用されることを、ソースデバイス520に対して肯定的に応答し、たとえば、uibc_mc_mode_capa:yesである。RTSP set_parameter応答メッセージ584は次の通りであり得る。
MCモードが通信セッションに対して有効にされると、シンクデバイス560は、シンクデバイス560のホストシステムから検出されたトリガ情報に基づいて、MCモードのレベルの1つをアクティブ化し、MCモードのアクティブ化されたレベルをソースデバイス520にシグナリングする。一例では、シンクデバイス560は、RTSP制御メッセージを使用して、MCモードのアクティブ化されたレベルをソースデバイス520に示すことができる。この例では、シンクデバイス560は、MCモードレベルパラメータを含むRTSP set_parameter要求メッセージ586をソースデバイス12に送信する。たとえば、MCモードレベルパラメータは、「uibc_mc_mode」という名称であり得る。RTSP set_parameter要求メッセージ586は次の通りであり得る。
ホストシステムから検出されたトリガ情報に基づいて、MCモードの特定のレベル、たとえばMCモードレベル2(「mc−2」)をアクティブ化すると、シンクデバイス560は、MCモードのアクティブ化されたレベルを示す信号をソースデバイス520に送信し、たとえば、uibc_mc_mode:mc−2である。RTSP set_parameter要求メッセージ586は次の通りであり得る。
メッセージ586を受信すると、シンクデバイス560は、メッセージ586中で規定されたMCモードレベルを設定することが成功していたかどうかを示すRTSPステータスコードを含むRTSP set_parameter応答メッセージ588で応答することができる。たとえば、シンクデバイス560が、メッセージ586においてMCモードのアクティブ化されたレベルとしてmc−2を示す場合、ソースデバイス520は、レベル2のMCモードが通信セッションの間に使用されることを、シンクデバイス560に対して肯定的に応答し、たとえば、uibc_mc_mode:mc−2である。RTSP set_parameter応答メッセージ588は次の通りであり得る。
他の例では、シンクデバイス560およびソースデバイス520は、MCモードの特定のレベルのアクティブ化と使用とを示すために、図5に示されるように、RTSP set_parameterメッセージ586と588とを交換しなくてよい。別の例では、シンクデバイス560は代わりに、UIBCを使用して、MCモードのアクティブ化されたレベルをソースデバイス520にシグナリングすることができる。MCモードのアクティブ化されたレベルを示すためのUIBCパケットのフォーマットが、図6に関してより詳しく説明される。上述のように、ソースデバイスとシンクデバイスとの役割は、異なるセッションでは逆になるかまたは変化し得る。通信セッションをセットアップするメッセージの順序は、場合によっては、ソースとして動作するデバイスを定義し、シンクとして動作するデバイスを定義し得る。
図6は、MCモードのアクティブ化されたレベルをシンクデバイスからソースデバイスにシグナリングするために使用され得る、例示的なデータパケット600を示す概念図である。図1を参照してデータパケット600の態様が説明されるが、論じられる技法は追加のタイプのWDシステムに適用可能であり得る。データパケット600はデータパケットヘッダ610を含んでよく、その後にペイロードデータ650が続く。データパケット600は、たとえば、シンクデバイス160において受信されるユーザ入力データをシグナリングするため、または、シンクデバイス160においてアクティブ化されるMCモードレベルをシグナリングするために、シンクデバイス160からソースデバイス120に送信され得る。
ペイロードデータ650に含まれるデータのタイプ、たとえば、ユーザ入力データまたはMCモードレベルデータは、データパケットヘッダ610において識別され得る。このようにして、データパケットヘッダ610のコンテンツに基づいて、ソースデバイス120は、データパケット600のペイロードデータ650を解析して、シンクデバイス160からのユーザ入力データまたはMCモードレベルデータを識別することができる。本開示で使用する「解析」および「解析する」という用語は、一般に、ビットストリームからデータを抽出するためにビットストリームを分析するプロセスを指す。データを抽出することは、たとえば、ビットストリーム中の情報がどのようにフォーマットされているかを識別することを含み得る。以下でより詳しく説明されるように、データパケットヘッダ610は、ペイロードデータ650に対して可能な多くのフォーマットの1つを定義することができる。データパケットヘッダ610を解析することによって、ソースデバイス120は、ペイロードデータ650がどのようにフォーマットされているかということと、ユーザ入力コマンドまたはMCモードレベル指示を抽出するためにペイロードデータ650をどのように解析すべきかということとを判定することができる。
いくつかの例では、データパケットヘッダ610は、図6に示されるようにフォーマットされる、1つまたは複数のフィールド620を含み得る。フィールド620に隣接する番号0〜15ならびにビットオフセット0、16、および32は、データパケットヘッダ610内のビット位置を識別することを目的としており、データパケットヘッダ610内に含まれている情報を実際に表すことを目的としていない。データパケットヘッダ610は、バージョンフィールド621と、タイムスタンプフラグ622と、予約フィールド623と、入力カテゴリーフィールド624と、長さフィールド625と、任意選択のタイムスタンプフィールド626とを含む。図6の例では、バージョンフィールド621は、シンクデバイス160によって実装されている特定の通信プロトコルのバージョンを示し得る3ビットフィールドである。バージョンフィールド621中の値は、データパケットヘッダ610の残りをどのように解析すべきか、ならびにペイロードデータ650をどのように解析すべきかを、ソースデバイス120に通知し得る。
図6の例では、タイムスタンプフラグ(T)622は、タイムスタンプフィールド626がデータパケットヘッダ610中に存在するかどうかを示す1ビットフィールドである。存在する場合、タイムスタンプフィールド626は、ソースデバイス120によって生成され、シンクデバイス160に送信された、マルチメディアデータに基づくタイムスタンプを含む16ビットフィールドである。タイムスタンプは、たとえば、ビデオのフレームがシンクデバイス160に送信されるより前に、ソースデバイス120によってそのフレームに割り当てられる、連続値であり得る。データパケットヘッダ610を解析し、タイムスタンプフィールド626が存在するかどうか判定すると、ソースデバイス120は、タイムスタンプフィールド626中に含まれるタイムスタンプを処理する必要があるかどうかを知る。図6の例では、予約フィールド623は、バージョンフィールド621において識別される特定のプロトコルの今後のバージョンに対して予約された、8ビットフィールドである。
図6の例では、入力カテゴリーフィールド624は、ペイロードデータ650中に含まれているデータについての入力カテゴリーを識別するための4ビットフィールドである。たとえば、シンクデバイス160は、入力カテゴリーを判定するためにユーザ入力データを分類し得る。ユーザ入力データを分類することは、たとえば、コマンドの受信元のデバイスに基づくか、またはコマンド自体の性質に基づき得る。シンクデバイス160はまた、入力カテゴリーを判定するためにMCモードレベル命令を分類し得る。入力カテゴリーフィールド624の値は、場合によってはデータパケットヘッダ610の他の情報ととともに、ペイロードデータ650がどのようにフォーマットされているかをソースデバイス120に対して識別する。このフォーマッティングに基づいて、ソースデバイス120は、ペイロードデータ650を解析して、ユーザ入力コマンドまたはMCモードレベル指示を抽出することができる。
長さフィールド625は、データパケット600の長さを示すための16ビットフィールドを備え得る。データパケット600が16ビットのワードでソースデバイス120によって解析されるとき、データパケット600は16ビットの整数までパディングされ得る。長さフィールド625中に含まれている長さに基づいて、ソースデバイス120は、ペイロードデータ650の終了(すなわちデータパケット600の終了)と新しい後続のデータパケットの開始とを識別することができる。
図6の例で与えられるフィールドの様々なサイズは単に説明用であるものとし、それらのフィールドは、図6に示されるものとは異なる数のビットを使用して実装され得るものとする。加えて、データパケットヘッダ610は、上で論じられたすべてのフィールドよりも少数のフィールドを含み得るか、または上で論じられない追加のフィールドを使用し得ることも企図される。実際に、本開示の技法は、パケットの様々なデータフィールドのために使用される実際のフォーマットの観点で、柔軟性があり得る。
入力カテゴリー624は、多くの可能な入力カテゴリーの1つを識別することができる。1つのそのような入力カテゴリーは、ペイロードデータ650のユーザ入力データが、ソースデバイス120とシンクデバイス160の両方によって実行されているプロトコルにおいて定義されている汎用情報要素を使用してフォーマットされていることを示すための、汎用入力フォーマットであり得る。汎用入力フォーマットは、シンクデバイス160のユーザがアプリケーションレベルでソースデバイス120と対話することを可能にする、汎用情報要素を利用し得る。
別のそのような入力カテゴリーは、ペイロードデータ650のユーザ入力データが、入力データを受信するために使用される入力デバイスのタイプに基づいてフォーマットされていることを示すための、ヒューマンインターフェースデバイスコマンド(HIDC)入力フォーマットであり得る。デバイスのタイプの例は、キーボード、マウス、タッチ入力デバイス、ジョイスティック、カメラ、(カメラベースの入力デバイスなどの)ジェスチャー捕捉デバイス、およびリモートコントロールを含む。入力カテゴリーフィールド624中で識別され得る他のタイプの入力カテゴリーは、ペイロードデータ650中のユーザデータがシンクデバイス160において発生しなかったことを示すための転送入力フォーマット、またはオペレーティングシステム固有フォーマットと、ペイロードデータ650がボイスコマンドを含むことを示すためのボイスコマンドフォーマットとを含む。
本開示の技法によれば、さらなる入力カテゴリーは、ペイロードデータ650のユーザ入力データが、ソースデバイス120とシンクデバイス160の両方によって実行されているプロトコルにおいて定義されている命令情報要素を使用してフォーマットされていることを示すための、命令入力フォーマットであり得る。命令入力フォーマットは、シンクデバイス160におけるMCモードのアクティブ化されたレベルを示す、命令情報要素を利用することができる。
入力カテゴリーフィールド624において識別され得る入力カテゴリーが、以下の表2に含まれる。図6の例では入力カテゴリー624は4ビットであり、16個の異なる入力カテゴリーが場合によっては識別され得る。表2は3個の入力カテゴリーを定義し、残りの入力カテゴリーを予約として保持する。
たとえば、命令入力がペイロードデータ650中に存在することを、データパケットヘッダ610の入力カテゴリーフィールド624が示す場合、ペイロードデータ650は命令入力フォーマットを有し得る。したがって、ソースデバイス120は、命令入力フォーマットに従ってペイロードデータ650を解析することができる。ペイロードデータ650内での命令入力イベントは、入力イベントヘッダを含み得る。以下の表3は、MCモードレベル命令入力イベント(IE)に対する命令IEヘッダのフィールドを定義する。
命令IE識別情報(ID)フィールドは、命令タイプ、たとえばMCモード命令タイプを識別する。命令IE IDフィールドは、たとえば、長さが1オクテットであってよく、以下の表4から選択された識別情報を含み得る。この例のように、命令IE IDフィールドが8ビットである場合、(0〜255と識別される)256個の異なるタイプの命令が識別可能であり得るが、すべての256個の識別情報が必ずしも関連付けられた命令タイプを必要とするとは限らない。256個のうちの一部は、今後の使用のために予約され得る。表4では、たとえば、命令IE ID 0のみが、MCモード命令タイプを示すものとして定義される。命令IE ID 1〜255は、関連付けられた命令タイプを有さないが、今後、命令タイプを割り当てられ得る。
この例では、命令IE IDがMCモード命令タイプを示す場合、命令IEヘッダ中の長さフィールドはMCモードレベルコードフィールドの長さを識別し、一方、MCモードレベルコードフィールドは命令を表す情報要素を含む。MCモードレベルコードフィールドのフォーマッティングは、命令IE IDフィールド中のMCモード命令タイプから知られる。したがって、ソースデバイス120は、命令IE IDフィールド中で識別されるMCモード命令タイプに基づいて、MCモードレベルコードフィールドのコンテンツを解析し得る。命令IEヘッダの長さフィールドに基づいて、ソースデバイス120は、ペイロードデータ650中の命令IEの終了を判定し得る。
表4は、各々が命令タイプを識別するために使用され得る対応する命令IE IDを伴う、命令タイプの一例を与える。上で論じられたように、この例では、命令IE ID 0のみが、MCモード命令タイプを示すものとして定義される。表4中の命令IE ID 1〜255は、関連付けられた命令タイプを有さないが、今後、命令タイプを割り当てられ得る。
MCモード命令タイプと関連付けられるMCモードレベルコードフィールドは、特定のフォーマットを有し得る。MCモードレベルコードフィールドは、シンクデバイス160においてアクティブ化されているMCモードのレベルの1つを示すために、以下の表5において識別される情報要素を含み得る。
たとえば、MCモードレベルコード0は、シンクデバイス160においてアクティブ化されているMCモードレベルがないことを示す。この場合、ソースデバイス120の動作を修正するための規則は適用されない。表5によれば、MCモードレベルコード1、2、および3はそれぞれ、MCモードレベルMC−1、MC−2、およびMC−3がシンクデバイス160においてアクティブ化されていることを示す。アクティブ化されたMCモードレベルの指示に基づいて、本開示の技法は、アクティブ化されたレベルに対して設定される規則に基づいて、ソースデバイス120の動作を修正することができる。
ある例として、MC−1レベルにおいて、関連付けられる規則は、電話呼および一般的なA/Vコンテンツの通常の処理とシンクデバイス160への送信とを許容し得るが、オーディオベースのテキストメッセージのみをレンダリングするように、ソースデバイス120の動作を制約し得る。MC−2レベルにおいて、関連付けられる規則は、オーディオベースの電話呼と一般的なA/Vコンテンツとのみをレンダリングし、テキストメッセージを何らレンダリングしないように、ソースデバイス120の動作を制約し得る。加えて、MC−2レベルと関連付けられる規則は、シンクデバイス160におけるユーザ対話を、ボイスコマンドのみに制約し得る。MC−3レベルにおいて、関連付けられる規則は、シンクデバイス160への送信のための電話呼、テキストメッセージ、または一般的なA/Vコンテンツを何らレンダリングしないように、ソースデバイス120の動作を制約し得る。加えて、MC−3レベルと関連付けられる規則は、シンクデバイス160におけるあらゆるユーザ対話を許容できない。他の例では、異なる規則が、MCモードレベルMC−1、MC−2、およびMC−3の1つまたは複数に対して設定され得る。
MCモードレベルコードフィールドは、たとえば、長さが1オクテットであってよく、かつ表5から選択された識別情報を含み得る。この例のように、MCモードレベルコードフィールドが8ビットである場合、(0〜255と識別される)256個の異なるMCモードレベルが識別可能であり得るが、すべての256個の識別情報が必ずしも関連付けられたMCモードレベルを必要とするとは限らない。256個のうちの一部は、今後の使用のために予約され得る。表5において、たとえば、MCモードレベルコード0〜3のみが、異なるMCモードレベルを示すものとして定義される。MCモードレベルコード4〜255は割り当てられたMCモードレベルを有さないが、今後レベルを割り当てられ得る。
図7は、MCモードをサポートすることが可能なソースデバイスの例示的な動作を示すフローチャートである。MCモード動作が、図2からのソースデバイス220に関して説明される。他の例では、示される動作は、図1からのソースデバイス120を含む、他のソースデバイスによって実行され得る。
ソースデバイス220はまず、シンクデバイスと接続を確立する(700)。たとえば、ソースデバイス220が、自身のメディアデータを1つまたは複数の近くのシンクデバイスに通知することができ、または、ソースデバイス220のユーザが、特定のシンクデバイスへの接続を手動で設定することができる。接続が確立されると、ソースデバイス220は、シンクデバイスと機能ネゴシエーションメッセージを交換し、その接続を通じた通信セッションのパラメータをセットアップする。たとえば、機能ネゴシエーションメッセージは、RTSPメッセージを備え得る。本開示の技法によれば、ソースデバイス220は、機能要求、たとえばRTSP get_parameter要求メッセージをシンクデバイスに送信して、シンクデバイスがMCモードをサポートするかどうか判定する(702)。
たとえば、RTSP get_parameter応答メッセージにおいて示されるように、シンクデバイスがMCモードをサポートしない場合(704のいいえの分岐)、ソースデバイス220は、MCモードが通信セッションに対して有効ではないことを示す信号、たとえばRTSP set_parameter要求メッセージをシンクデバイスに送信する(706)。ソースデバイス220は次いで、プロセッサ231の通常の動作に従って、メディアデータをレンダリングしシンクデバイスへ送信することができる(708)。
たとえば、RTSP get_parameter応答メッセージにおいて示されるように、シンクデバイスがMCモードをサポートしない場合(704のはいの分岐)、ソースデバイス220は、MCモードが通信セッションに対して有効であることを示す信号、たとえばRTSP set_parameter要求メッセージをシンクデバイスに送信する(710)。MCモードが有効にされると、ソースデバイス220は、シンクデバイスにおいてアクティブ化されているMCモードのレベルを示す信号を、シンクデバイスから受信することができる(712)。たとえば、シンクデバイスは、ホストシステムからトリガ情報を検出していてよく、トリガ情報に基づいて、MCモードのレベルの1つ、たとえばMC−1、MC−2、またはMC−3をアクティブ化して、シンクデバイスにおいて受信されるメディアデータを修正していてよい。ソースデバイス220は、制御メッセージ、たとえばRTSP set_parameter要求メッセージ、またはデータパケット、たとえばMCモード命令タイプを伴うUIBCパケットのうちの1つから、MCモードの示されるレベルを受信することができる。
示されるMCモードレベルを受信すると、ソースデバイス220内のMCモードユニット240は、ソースデバイス220においてMCモードの示されたレベルをアクティブ化する(714)。MCモードユニット240は次いで、MCモードのアクティブ化されたレベルと関連付けられる規則に従って、ソースデバイス220によって処理されるA/Vデータのタイプ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツを修正するようにプロセッサ231に指示する。ソースデバイス220は次いで、MCモードのアクティブ化されたレベルに対して、プロセッサ231の修正された動作に従って、メディアデータをレンダリングしシンクデバイスへ送信することができる(716)。
図8は、MCモードをサポートすることが可能なシンクデバイスの例示的な動作を示すフローチャートである。MCモード動作が、図3からのシンクデバイス360に関して説明される。他の例では、示される動作は、図1からのシンクデバイス160を含む、他のシンクデバイスによって実行され得る。
シンクデバイス360はまず、ソースデバイスと接続を確立する(800)。たとえば、シンクデバイス360が、近くのソースデバイス220からのメディアデータの通知に応答することができ、または、シンクデバイス360のユーザが、特定のソースデバイスへの接続を手動で設定することができる。接続が確立されると、シンクデバイス360は、ソースデバイスと機能ネゴシエーションメッセージを交換し、その接続を通じた通信セッションのパラメータをセットアップする。たとえば、機能ネゴシエーションメッセージは、RTSPメッセージを備え得る。本開示の技法によれば、シンクデバイス360は、シンクデバイス360がMCモードをサポートするかどうかの指示のために、機能要求、たとえばRTSP get_parameter要求メッセージをソースデバイスから受信する(802)。
シンクデバイス360がMCモードをサポートしない場合(804のいいえの分岐)、シンクデバイス360は、MCモードがサポートされないことを示す機能応答、たとえばRTSP get_parameter応答メッセージを、ソースデバイスに送信する(806)。シンクデバイス360は次いで、MCモードが通信セッションに対して有効ではないことを示す信号、たとえばRTSP set_parameter要求メッセージを、ソースデバイスから受信する(708)。シンクデバイス360は次いで、ソースデバイスの通常の動作に従って、ソースデバイスからメディアデータを受信することができる(810)。
シンクデバイス360がMCモードをサポートしない場合(804のはいの分岐)、シンクデバイス360は、MCモードがサポートされることを示す機能応答、たとえばRTSP get_parameter応答メッセージを、ソースデバイスに送信する(812)。シンクデバイス360は次いで、MCモードが通信セッションに対して有効であることを示す信号、たとえばRTSP set_parameter要求メッセージを、ソースデバイスから受信する(814)。MCモードが有効にされると、シンクデバイス360は、ホストシステム300から検出されたトリガ情報に基づいて、MCモードのあるレベルをアクティブ化することができる(816)。たとえば、シンクデバイス360内のMCモードユニット378は、ホストシステム300のセンサ312から受信されたトリガ情報を検出し、トリガ情報に基づいて、MCモード、たとえばMC−1、MC−2、またはMC−3のレベルの1つをアクティブ化することができる。
シンクデバイス360は次いで、MCモードのアクティブ化されたレベルを示す信号をソースデバイスに送信する(818)。シンクデバイス360は、制御メッセージ、たとえばRTSP set_parameter要求メッセージ、またはデータパケット、たとえばMCモード命令タイプを伴うUIBCパケットのうちの1つを使用して、MCモードのアクティブ化されるレベルを送信することができる。シンクデバイス360は、MCモードのアクティブ化されるレベルをソースデバイスに送信して、MCモードのアクティブ化されたレベルと関連付けられる規則に従って、シンクデバイス360において受信されるA/Vデータのタイプ、たとえば、電話呼、テキストメッセージ、ならびにオーディオおよび/またはビデオコンテンツを修正する。シンクデバイス360は次いで、MCモードのアクティブ化されたレベルに対して、ソースデバイスの修正された動作に従って、メディアデータをソースデバイスから受信する(820)。加えて、MCモードユニット378は、MCモードのアクティブ化されたレベルと関連付けられる規則によって許容されるタイプのユーザ対話のみを受け入れるように、たとえば、ボイスコマンドおよびタッチコマンドを受け入れ、ボイスコマンドのみを受け入れ、またはコマンドを受け入れないように、ユーザ入力インターフェース376の動作を修正する。
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装する場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶するか、またはコンピュータ可読媒体を介して送信することができる。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータデータ記憶媒体または通信媒体を含み得る。いくつかの例では、コンピュータ可読媒体は、非一時的コンピュータ可読媒体を備え得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。
限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体のような、非一時的媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
コードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造のいずれか、または本明細書で説明する技法の実装に好適な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で与えられてよく、または複合コーデックに組み込まれてよい。また、本技法は、1つまたは複数の回路または論理要素中で完全に実装されてよい。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されたが、それらのコンポーネント、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられてよく、または相互動作するハードウェアユニットの集合によって与えられてよい。
本発明の様々な実施形態が説明されてきた。これらおよび他の実施形態は以下の特許請求の範囲内に入る。