(57)【特許請求の範囲】
【請求項１】
ソースデバイスにおいて、ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信するように構成されたシンクデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立する前に複数の事前構成された報告フォーマットを記憶すること、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのＨＩＤに関連付けられ、ここにおいて、前記ソースデバイスは、特定の複数のＨＩＤからの入力に関するＨＩＤコマンド（ＨＩＤＣ）入力報告に対するフォーマットを示すスキーマを受信せず、前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記ソースデバイスはＷＤソースである、と、
前記ソースデバイスによって、前記シンクデバイスとの前記ＵＩＢＣを確立することと、
前記ソースデバイスにおいて、前記シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケットを受信すること、前記１つまたは複数のＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤによって受信された前記ユーザ入力に対して前記シンクデバイスによって生成されたＨＩＤコマンド（ＨＩＤＣ）入力報告を備え、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記ソースデバイスによって、前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別することと、
前記ソースデバイスによって、ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースすることと、
前記ソースデバイスによって、前記ユーザ入力に応答してメディアデータを生成することと、および
前記ソースデバイスによって、前記メディアデータを前記ソースデバイスから前記シンクデバイスに送ることと、
を備える、方法。
【請求項２】
前記事前構成された報告フォーマットはスキーマを含む、請求項１に記載の方法。
【請求項３】
前記１つまたは複数のＩＰパケットを受信することは、ワイヤレス通信ネットワークを介して前記１つまたは複数のＩＰパケットを受信することを備える、請求項１に記載の方法。
【請求項４】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ（登録商標）規格に準拠する、請求項１に記載の方法。
【請求項５】
前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、請求項１に記載の方法。
【請求項６】
前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、請求項５に記載の方法。
【請求項７】
前記データは前記シンクデバイスのＩＰアドレスを備え、
前記事前構成された報告フォーマットのうちの１つを識別することは、前記シンクデバイスの前記ＩＰアドレスに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別することを備える、請求項１に記載の方法。
【請求項８】
前記データは前記ＩＰアドレスおよびソースポートを備え、
前記事前構成された報告フォーマットのうちの１つを識別することは、前記シンクデバイスの前記ＩＰアドレスおよび前記ソースポートに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別することを備える、請求項７に記載の方法。
【請求項９】
前記シンクデバイスからの前記１つまたは複数のＩＰパケットの受信に応答して、前記１つまたは複数のＩＰパケットが汎用入力メッセージまたは前記ＨＩＤＣ入力報告を備えるかを判定することをさらに備え、ここにおいて、前記汎用入力メッセージは、あるＨＩＤクラスに属するＨＩＤに対して汎用的である、請求項１に記載の方法。
【請求項１０】
シンクデバイスによって、ヒューマン入力デバイス（ＨＩＤ）によって受信されるユーザ入力の指示を受信することと、
前記シンクデバイスによって、ソースデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立すること、前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記ソースデバイスはＷＤソースである、と、
前記シンクデバイスによって、および前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成すること、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記シンクデバイスによって、前記ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケットを送ること、前記ＩＰパケットは前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備え、ここにおいて、前記シンクデバイスは、特定の複数のＨＩＤからの入力に関する前記ＨＩＤＣ入力報告に対するフォーマットを示すスキーマを前記ソースデバイスに送らない、と、
前記シンクデバイスによって、前記ソースデバイスからメディアデータを受信すること、前記メディアデータは前記ユーザ入力に基づく、と、
を備える、方法。
【請求項１１】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項１０に記載の方法。
【請求項１２】
前記ＨＩＤタイプ指示子は、前記報告フォーマットを識別する数値識別子を備える、請求項１０に記載の方法。
【請求項１３】
前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、請求項１２に記載の方法。
【請求項１４】
前記１つまたは複数のＩＰパケットを送ることは、ワイヤレス通信ネットワークを介して前記１つまたは複数のＩＰパケットを送ることを備える、請求項１０に記載の方法。
【請求項１５】
コンピューティングデバイスであって、前記コンピューティングデバイスは下記を備える、
１つまたは複数のプロセッサであって、
ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信するように構成されたシンクデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立する前に複数の事前構成された報告フォーマットを記憶すること、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのＨＩＤに関連付けられ、ここにおいて、前記コンピューティングデバイスは、特定の複数のＨＩＤからの入力に関するＨＩＤコマンド（ＨＩＤＣ）入力報告に対するフォーマットを示すスキーマを受信せず、前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記コンピューティングデバイスはＷＤソースである、と、
前記ソースデバイスによって、前記シンクデバイスとの前記ＵＩＢＣを確立することと、
前記シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケットを受信すること、前記１つまたは複数のＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤによって受信された前記ユーザ入力に対して前記シンクデバイスによって生成されたＨＩＤコマンド（ＨＩＤＣ）入力報告を備え、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別することと、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースすることと、
前記ユーザ入力に応答してメディアデータを生成することと、
を行うように構成される前記プロセッサと、
前記メディアデータを前記コンピューティングデバイスから前記シンクデバイスに送るように構成される送信機ユニット。
【請求項１６】
前記事前構成された報告フォーマットはスキーマを含む、請求項１５に記載のコンピューティングデバイス。
【請求項１７】
前記コンピューティングデバイスは、ワイヤレス通信ネットワークを介して前記１つまたは複数のＩＰパケットを受信する、請求項１５に記載のコンピューティングデバイス。
【請求項１８】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項１５に記載のコンピューティングデバイス。
【請求項１９】
前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、請求項１５に記載のコンピューティングデバイス。
【請求項２０】
前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、請求項１９に記載のコンピューティングデバイス。
【請求項２１】
前記データは前記シンクデバイスのＩＰアドレスを備え、
前記１つまたは複数のプロセッサは、前記シンクデバイスの前記ＩＰアドレスに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別するように構成されている、請求項１５に記載のコンピューティングデバイス。
【請求項２２】
前記データは前記ＩＰアドレスおよびソースポートを備え、
前記１つまたは複数のプロセッサは、前記シンクデバイスの前記ＩＰアドレスおよび前記ソースポートに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別するように構成されている、請求項２１に記載のコンピューティングデバイス。
【請求項２３】
前記１つまたは複数のプロセッサは、前記シンクデバイスからの前記１つまたは複数のＩＰパケットの受信に応答して、前記１つまたは複数のＩＰパケットが汎用入力メッセージまたは前記ＨＩＤＣ入力報告を備えるかを判定するように構成されており、ここにおいて、前記汎用入力メッセージは、あるＨＩＤクラスに属するＨＩＤに対して汎用的である、請求項１５に記載のコンピューティングデバイス。
【請求項２４】
コンピューティングデバイスであって、前記コンピューティングデバイスは下記を備える、
１つまたは複数のプロセッサであって、
ヒューマン入力デバイス（ＨＩＤ）によって受信されるユーザ入力の指示を受信することと、
ソースデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立すること、前記コンピューティングデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記ソースデバイスはＷＤソースである、と、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成すること、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケットを送ること、前記ＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備え、ここにおいて、前記コンピューティングデバイスは特定の複数のＨＩＤからの入力に関する前記ＨＩＤコマンド入力報告に対するフォーマットを示すスキーマを前記ソースデバイスに送らず、ここにおいて、前記ＨＩＤは前記特定の複数のＨＩＤのうちの１つである、と、
を行うように構成された前記プロセッサと、
前記ソースデバイスからメディアデータを受信するように構成された受信機ユニット、前記メディアデータは前記ユーザ入力に基づく。
【請求項２５】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項２４に記載のコンピューティングデバイス。
【請求項２６】
前記ＨＩＤタイプ指示子は、前記報告フォーマットを識別する数値識別子を備える、請求項２４に記載のコンピューティングデバイス。
【請求項２７】
前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、請求項２６に記載のコンピューティングデバイス。
【請求項２８】
前記１つまたは複数のＩＰパケットを送ることは、ワイヤレス通信ネットワークを介して前記１つまたは複数のＩＰパケットを送ることを備える、請求項２４に記載のコンピューティングデバイス。
【請求項２９】
コンピューティングデバイスであって、
ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信するように構成されたシンクデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立する前に複数の事前構成された報告フォーマットを記憶するための手段、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのＨＩＤに関連付けられ、ここにおいて、前記コンピューティングデバイスは、特定の複数のＨＩＤからの入力に関するＨＩＤコマンド（ＨＩＤＣ）入力報告に対するフォーマットを示すスキーマを受信せず、前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記コンピューティングデバイスはＷＤソースである、と、
前記シンクデバイスとの前記ＵＩＢＣを確立するための手段と、
前記シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケットを受信するための手段、前記１つまたは複数のＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤによって受信された前記ユーザ入力に対して前記シンクデバイスによって生成されたＨＩＤコマンド（ＨＩＤＣ）入力報告を備え、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別するための手段と、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースするための手段と、
前記ユーザ入力に応答してメディアデータを生成するための手段と、
前記メディアデータを前記コンピューティングデバイスから前記シンクデバイスに送るための手段と、
を備える、前記コンピューティングデバイス。
【請求項３０】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項２９に記載のコンピューティングデバイス。
【請求項３１】
前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、請求項２９に記載のコンピューティングデバイス。
【請求項３２】
コンピューティングデバイスであって、
ヒューマン入力デバイス（ＨＩＤ）によって受信されるユーザ入力の指示を受信するための手段と、
ソースデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立するための手段、前記コンピューティングデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記ソースデバイスはＷＤソースである、と、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成するための手段、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケットを送るための手段、前記ＩＰパケットは前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備え、ここにおいて、前記コンピューティングデバイスは、特定の複数のＨＩＤからの入力に関する前記ＨＩＤＣ入力報告に対するフォーマットを示すスキーマを前記ソースデバイスに送らず、ここにおいて、前記ＨＩＤは前記特定の複数のＨＩＤのうちの１つである、と、
前記ソースデバイスからメディアデータを受信するための手段、前記メディアデータは前記ユーザ入力に基づく、と、
を備える、前記コンピューティングデバイス。
【請求項３３】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項３２に記載のコンピューティングデバイス。
【請求項３４】
前記ＨＩＤタイプ指示子は、前記報告フォーマットのうちの１つを識別する数値識別子を備える、請求項３２に記載のコンピューティングデバイス。
【請求項３５】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されると、コンピューティングデバイスの１つまたは複数のプロセッサを、
前記コンピューティングデバイスにおいて、ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信するように構成されたシンクデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立する前に複数の事前構成された報告フォーマットを記憶すること、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのＨＩＤに関連付けられ、ここにおいて、前記コンピューティングデバイスは、特定の複数のＨＩＤからの入力に関するＨＩＤコマンド（ＨＩＤＣ）入力報告に対するフォーマットを示すスキーマを受信せず、前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記コンピューティングデバイスはＷＤソースである、と、
前記シンクデバイスとの前記ＵＩＢＣを確立することと、
前記シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケットを受信すること、前記１つまたは複数のＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤによって受信された前記ユーザ入力に対して前記シンクデバイスによって生成されたＨＩＤコマンド（ＨＩＤＣ）入力報告を備え、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別することと、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースすることと、
前記ユーザ入力に応答してメディアデータを生成することと、
前記メディアデータを前記ソースデバイスから前記シンクデバイスに送ることと、
を行うように構成する、前記コンピュータ可読記憶媒体。
【請求項３６】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項３５に記載のコンピュータ可読記憶媒体。
【請求項３７】
前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、請求項３５に記載のコンピュータ可読記憶媒体。
【請求項３８】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されると、コンピューティングデバイスの１つまたは複数のプロセッサを、
ヒューマン入力デバイス（ＨＩＤ）によって受信されるユーザ入力の指示を受信することと、
ソースデバイスとのユーザ入力バックチャネル（ＵＩＢＣ）を確立すること、前記コンピューティングデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり前記ソースデバイスはＷＤソースである、と、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成すること、前記ＨＩＤＣ入力報告は前記ＨＩＤによって受信された前記ユーザ入力を記述する、と、
前記ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケットを送ること、前記ＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備え、ここにおいて、前記コンピューティングデバイスは特定の複数のＨＩＤからの入力に関する前記ＨＩＤＣ入力報告に対するフォーマットを示すスキーマを前記ソースデバイスに送らず、ここにおいて、前記ＨＩＤは前記特定の複数のＨＩＤのうちの１つである、と、
前記ソースデバイスからメディアデータを受信すること、前記メディアデータは前記ユーザ入力に基づく、と、
を行うように構成する、前記コンピュータ可読記憶媒体。
【請求項３９】
前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、請求項３８に記載のコンピュータ可読記憶媒体。
【請求項４０】
前記ＨＩＤタイプ指示子は、前記報告フォーマットのうちの１つを識別する数値識別子を備える、請求項３８に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１１年９月１９日に出願された米国特許仮出願第６１／５３６，３９３号、および２０１２年１月５日に出願された米国特許仮出願第６１／５８３，２５４号の利益を主張するものであり、両仮出願の内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、メディアデータの移送および再生に関する。
【背景技術】
【０００３】
ワイヤレスディスプレイ（ＷＤ）システムは、ソースデバイスと１つまたは複数のシンクデバイスとを含む。ソースデバイスは、「アプリケーションサーバ」と呼ばれることもある。ソースデバイスは、ワイヤレスローカルエリアネットワーク内でメディアコンテンツを送信することが可能であるデバイスであり得る。シンクデバイスは、メディアコンテンツを受信およびレンダリングすることが可能であるデバイスであり得る。シンクデバイスは、「ディスプレイクライアント」と呼ばれることもある。ソースデバイスおよびシンクデバイスは、モバイルデバイスまたはワイヤードデバイスのいずれかであり得る。たとえば、モバイルデバイスとして、ソースデバイスおよびシンクデバイスは、携帯電話、タブレットコンピュータ、ラップトップまたは他のポータブルコンピュータ、ワイヤレス通信カードを有するポータブルコンピュータ、携帯情報端末（ＰＤＡ）、ポータブルメディアプレーヤ、カメラもしくはカムコーダのようなデジタル画像キャプチャデバイス、あるいは、いわゆる「スマート」フォンおよび「スマート」パッドもしくはタブレット、または他のタイプのワイヤレス通信デバイスを含む、ワイヤレス通信機能を有する他のデバイスを備え得る。たとえば、ワイヤードデバイスとして、ソースデバイスおよびシンクデバイスは、テレビ、デスクトップコンピュータ、モニタ、プロジェクタ、プリンタ、音声増幅器、セットトップボックス、ゲーム機、ルータ、デジタルビデオディスク（ＤＶＤ）プレーヤ、およびメディアサーバを備え得る。
【０００４】
ソースデバイスは、特定のメディアシェアセッションに参加している１つまたは複数のシンクデバイスにオーディオビデオ（ＡＶ）データのようなメディアデータを送り得る。メディアデータは、ソースデバイスのローカルディスプレイと、シンクデバイスの各々のディスプレイとの両方において再生され得る。より具体的には、参加しているシンクデバイスの各々は、受信されたメディアデータを、そのスクリーンおよびオーディオ機器上で提示するためにレンダリングし得る。場合によっては、シンクデバイスのユーザは、タッチ入力および遠隔制御入力のようなユーザ入力をシンクデバイスに与え得る。
【発明の概要】
【０００５】
一例において、ワイヤレスディスプレイ（ＷＤ）システム内のソースデバイスは、複数の事前構成された報告フォーマット（report format）を記憶する。事前構成された報告フォーマットの各々は、異なるタイプのヒューマン入力デバイス（ＨＩＤ：human input device）に関連付けられ得る。ソースデバイスは、ＷＤシステム内のシンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケットを受信し得る。１つまたは複数のＩＰパケットは、ＨＩＤコマンド（ＨＩＤＣ）入力報告を含み得る。ソースデバイスは、１つまたは複数のＩＰパケット内のデータに基づいて、事前構成された報告フォーマットのうちの１つを識別し得、ユーザ入力を確定するために識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースし得る。ソースデバイスは、その後、ユーザ入力に基づいてメディアデータを生成し得、メディアデータをシンクデバイスに送り得る。
【０００６】
一例において、本開示は、ソースデバイスにおいて、複数の事前構成された報告フォーマットを記憶することを備える方法を説明する。事前構成された報告フォーマットの各々は、異なるタイプのＨＩＤに関連付けられる。加えて、方法は、ソースデバイスにおいて、シンクデバイスから１つまたは複数のＩＰパケットを受信することを備える。１つまたは複数のＩＰパケットは、ＨＩＤＣ入力報告を備える。方法は、１つまたは複数のＩＰパケット内のデータに基づいて、事前構成された報告フォーマットのうちの１つを識別することをも備える。加えて、方法は、ユーザ入力を確定するために、識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースすることを備える。さらに、方法は、ユーザ入力に応答してメディアデータを生成することを備える。方法は、メディアデータをソースデバイスからシンクデバイスに送ることをも備える。
【０００７】
別の例において、本開示は、ＨＩＤからユーザ入力の指示を受信することを備える方法を説明する。方法は、ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤＣ入力報告を生成することをも備える。加えて、方法は、１つまたは複数のＩＰパケットをソースデバイスに送ることを備える。ＩＰパケットは、ＨＩＤＣ入力報告と、報告フォーマットを識別するＨＩＤタイプ指示子とを備える。さらに、方法は、ソースデバイスからメディアデータを受信することを備え、メディアデータはユーザ入力に基づく。
【０００８】
別の例において、本開示は、複数の事前構成された報告フォーマットを記憶するように構成されている１つまたは複数のプロセッサを備えるコンピューティングデバイスを説明する。事前構成された報告フォーマットの各々は、異なるタイプのＨＩＤに関連付けられる。１つまたは複数のプロセッサは、シンクデバイスからＩＰパケットを受信するようにも構成されている。１つまたは複数のＩＰパケットは、ＨＩＤＣ入力報告を備える。加えて、１つまたは複数のプロセッサは、１つまたは複数のＩＰパケット内のデータに基づいて、事前構成された報告フォーマットのうちの１つを識別するように構成されている。１つまたは複数のプロセッサは、ユーザ入力を確定するために、識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースするようにも構成されている。加えて、１つまたは複数のプロセッサは、ユーザ入力に応答してメディアデータを再生するように構成されている。１つまたは複数のプロセッサは、コンピューティングデバイスからシンクデバイスにメディアデータを送るようにも構成されている。
【０００９】
別の例において、本開示は、ＨＩＤからユーザ入力の指示を受信するように構成されている１つまたは複数のプロセッサを備えるコンピューティングデバイスを説明する。１つまたは複数のプロセッサは、ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤＣ入力報告を生成するようにも構成されている。加えて、１つまたは複数のプロセッサは、１つまたは複数のＩＰパケットをソースデバイスに送るように構成されている。ＩＰパケットは、ＨＩＤＣ入力報告と、報告フォーマットを識別するＨＩＤタイプ指示子とを備える。さらに、１つまたは複数のプロセッサは、ソースデバイスからメディアデータを受信するように構成されており、メディアデータはユーザ入力に基づく。
【００１０】
別の例において、本開示は、複数の事前構成された報告フォーマットを記憶するための手段を備えるコンピューティングデバイスを説明する。事前構成された報告フォーマットの各々は、異なるタイプのＨＩＤに関連付けられる。加えて、コンピューティングデバイスは、シンクデバイスから１つまたは複数のＩＰパケットを受信するための手段を備える。１つまたは複数のＩＰパケットは、ＨＩＤＣ入力報告を備える。さらに、コンピューティングデバイスは、１つまたは複数のＩＰパケット内のデータに基づいて、事前構成された報告フォーマットのうちの１つを識別するための手段を備える。コンピューティングデバイスは、ユーザ入力を確定するために、識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースするための手段をも備える。加えて、コンピューティングデバイスは、ユーザ入力に応答してメディアデータを再生するための手段を備える。コンピューティングデバイスは、メディアデータをコンピューティングデバイスからシンクデバイスに送るための手段をも備える。
【００１１】
別の例において、本開示は、ＨＩＤからユーザ入力の指示を受信するための手段を備えるコンピューティングデバイスを説明する。コンピューティングデバイスは、ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤＣ入力報告を生成するための手段をも備える。加えて、コンピューティングデバイスは、１つまたは複数のＩＰパケットをソースデバイスに送るための手段を備える。ＩＰパケットは、ＨＩＤＣ入力報告と、報告フォーマットを識別するＨＩＤタイプ指示子とを備える。さらに、コンピューティングデバイスは、ソースデバイスからメディアデータを受信するための手段を備え、メディアデータはユーザ入力に基づく。
【００１２】
別の例において、本開示は、実行されると、コンピューティングデバイスの１つまたは複数のプロセッサを、コンピューティングデバイスにおいて、複数の事前構成された報告フォーマットを記憶するように構成する命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品を説明する。事前構成された報告フォーマットの各々は、異なるタイプのＨＩＤに関連付けられる。命令は、１つまたは複数のプロセッサを、シンクデバイスからＩＰパケットを受信するようにも構成する。１つまたは複数のＩＰパケットは、ＨＩＤＣ入力報告を備える。加えて、命令は、１つまたは複数のプロセッサを、１つまたは複数のＩＰパケット内のデータに基づいて、事前構成された報告フォーマットのうちの１つを識別するように構成する。さらに、命令は、１つまたは複数のプロセッサを、ユーザ入力を確定するために、識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースするように構成する。命令は、１つまたは複数のプロセッサを、ユーザ入力に応答してメディアデータを生成するようにも構成する。加えて、命令は、１つまたは複数のプロセッサを、ソースデバイスからシンクデバイスにメディアデータを送るように構成する。
【００１３】
別の例において、本開示は、実行されると、コンピューティングデバイスの１つまたは複数のプロセッサを、ＨＩＤからユーザ入力の指示を受信するように構成する命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品を説明する。さらに、命令は、１つまたは複数のプロセッサを、ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤＣ入力報告を生成するように構成する。加えて、命令は、１つまたは複数のプロセッサを、１つまたは複数のＩＰパケットをソースデバイスに送るように構成する。ＩＰパケットは、ＨＩＤＣ入力報告と、報告フォーマットを識別するＨＩＤタイプ指示子とを備える。命令は、１つまたは複数のプロセッサを、ソースデバイスからメディアデータを受信するようにも構成し、メディアデータはユーザ入力に基づく。
【００１４】
本開示の１つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】ソースデバイスとシンクデバイスとを含むワイヤレス通信システムを示すブロック図。
【図２】本開示の１つまたは複数の技法による、ソースデバイスによって実行される一例の動作を示す流れ図。
【図３】本開示の１つまたは複数の技法による、シンクデバイスによって実行される一例の動作を示す流れ図。
【図４】本開示の１つまたは複数の技法による、シンクデバイスによって実行される別の例の動作を示す流れ図。
【図５】本開示の１つまたは複数の技法による、ソースデバイスによって実行される別の例の動作を示す流れ図。
【図６】ＵＩＢＣメッセージの一例のフォーマットを示す概念図。
【図７】汎用入力メッセージ（generic input message）のためにユーザ入力バックチャネル（ＵＩＢＣ：User Input Back Channel）をネゴシエートするためのソースデバイスとシンクデバイスとの間の一例の対話を示す通信図。
【図８】ヒューマン入力デバイスコマンド（ＨＩＤＣ）入力報告のためにＵＩＢＣをネゴシエートするためのソースデバイスとシンクデバイスとの間の一例の対話を示す通信図。
【発明を実施するための形態】
【００１６】
概して、本開示は、ワイヤレスディスプレイ（ＷＤ）システム内でユーザ入力をハンドリングするための技法を説明する。ＷＤシステムは、少なくとも２つのコンピューティングデバイスを含む。コンピューティングデバイスのうちの一方はメディアソースとしての役割を果たし、コンピューティングデバイスのうちのもう一方はメディアシンクとしての役割を果たす。メディアソースとしての役割を果たすコンピューティングデバイス（すなわち、ソースデバイス）は、符号化メディアデータを、ワイヤレスチャネルを介して、メディアシンクとしての役割を果たすコンピューティングデバイス（すなわち、シンクデバイス）に送信し得る。シンクデバイスは、符号化ビデオデータを復号して、復号されたビデオデータを表示画面上に表示し得る。
【００１７】
さらに、ＷＤシステムにおいて、シンクデバイスは、マウス、デジタルペンまたはスタイラス、キーボード、およびタッチスクリーンのようなヒューマン入力デバイス（ＨＩＤ）からユーザ入力を受信し得る。シンクデバイスは、入力メッセージをソースデバイスに送信し得る。入力メッセージは、シンクデバイスによって受け取られたユーザ入力を記述する。入力メッセージが受信されると、ソースデバイスは、入力メッセージによって記述されているユーザ入力を処理して、ユーザ入力に応答してメディアデータを生成し得る。その後、ソースデバイスはこのメディアデータをシンクデバイスに送り得る。
【００１８】
シンクデバイスは様々なタイプの入力メッセージを生成および送信し得る。たとえば、ソースデバイスとシンクデバイスとの間のセッションをセットアップしている間、シンクデバイスは、ソースデバイスに、シンクデバイスに接続されている１つまたは複数のＨＩＤを示し得る。セッションのセットアップ後、シンクデバイスは、様々なクラスのＨＩＤからのユーザ入力を記述する汎用入力メッセージを生成および送信し得る。シンクデバイスが特定のＨＩＤからユーザ入力の指示を受信すると、シンクデバイスは、その特定のＨＩＤが特定のＨＩＤクラスに属すると判定し得る。種々のＨＩＤクラスが種々の報告フォーマットに関連付けられ得る。ＨＩＤのクラスは、Ｗｉ−Ｆｉディスプレイ（ＷＦＤ）規格のような規格によって定義され得る。ＨＩＤのあるクラスに関連付けられる報告フォーマットは、そのＨＩＤクラス内のＨＩＤによって受け取られるユーザ入力を記述する汎用入力メッセージのフォーマットを指定し得る。特定のＨＩＤが特定のＨＩＤクラスに属するとシンクデバイスが判定した後、シンクデバイスは、特定のＨＩＤクラスに関連付けられる報告フォーマットに準拠する汎用入力メッセージを生成し得る。このように、汎用入力メッセージの報告フォーマットは、特定のＨＩＤクラスに属する任意のＨＩＤに対して汎用的であり得る。ソースデバイスは、汎用入力メッセージを解読するように事前構成され得る。
【００１９】
汎用入力メッセージの生成および送信に加えて、シンクデバイスは、ヒューマン入力デバイスコマンド（ＨＩＤＣ）入力報告を生成および送信し得る。シンクデバイスが、特定のＨＩＤによって検出されたユーザ入力の指示を受信すると、シンクデバイス上で作動しているドライバが、ユーザ入力を記述するＨＩＤＣ入力報告を生成し得る。ＨＩＤＣ入力報告の報告フォーマットは、特定のＨＩＤに特有であり得、その特定のＨＩＤが属するＨＩＤクラスに対して必ずしも包括的である必要はない。たとえば、２つの異なるタイプのマウスによって検出されるユーザ入力を記述するＨＩＤＣ入力報告に対しては異なる報告フォーマットがあり得る。ＨＩＤＣ入力報告の報告フォーマットは、ユニバーサルシリアルバス（ＵＳＢ）またはＢｌｕｅｔｏｏｔｈ（登録商標）規格のような様々なＨＩＤＣ規格に準拠し得る。
【００２０】
ＨＩＤＣ入力報告の生成および送信は、汎用入力メッセージの生成および送信にまさる一定の利点を有し得る。たとえば、特定のＨＩＤクラス内の特定のＨＩＤは、特定のＨＩＤクラスに関連付けられる汎用報告フォーマットを使用して記述することができないユーザ入力を受信することが可能であり得る。この例においては、ＨＩＤＣ入力報告が、そのようなユーザ入力を記述することが可能であり得る。さらに、シンクデバイスが汎用入力メッセージを生成すること、および、ソースデバイスが汎用入力メッセージをパースすることは、ＨＩＤＣ入力報告よりも複雑であり得る。このように、ＨＩＤＣ入力報告を使用することが、ソースデバイスおよびシンクデバイスが処理資源および電気エネルギーをやり取りするのに役立ち得る。
【００２１】
本開示の技法によれば、ソースデバイスは、複数の事前構成された報告フォーマットを記憶し得る。事前構成された報告フォーマットの各々は、異なるタイプのヒューマン入力デバイス（ＨＩＤ）に関連付けられる。ソースデバイスは、シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケットを受信し得る。１つまたは複数のＩＰパケットは、ＵＳＢまたはＢｌｕｅｔｏｏｔｈに準拠した入力報告のような、ＨＩＤＣ入力報告を備え得る。さらに、いくつかの例において、ソースデバイスは、ワイヤレス通信ネットワークを介して１つまたは複数のＩＰパケットを受信し得る。方法は、１つまたは複数のＩＰパケット内のデータに基づいて、事前構成された報告フォーマットのうちの１つを識別することを備え得る。ソースデバイスは、ユーザ入力を確定するために、識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースし得る。ソースデバイスは、その後、ユーザ入力に応答してメディアデータを生成し、メディアデータをソースデバイスからシンクデバイスに送り得る。
【００２２】
図１は、本開示の１つまたは複数の技法が実装され得るワイヤレスディスプレイ（ＷＤ）システム１０の一例を示すブロック図である。図１およびそれ以降の図面は、説明を目的に与えられており、本開示において広く例示され説明される技法を限定するものと見なされるべきではない。
【００２３】
図１の例において、ＷＤシステム１０は、ソースデバイス２０とシンクデバイス６０とを含み得る。ソースデバイス２０は、ワイヤレスチャネル５０を介してシンクデバイス６０と通信し得る。図１の例において、ソースデバイス２０は、少なくとも１つのアプリケーション２２と、オペレーティングシステム（ＯＳ）２４と、送信機／受信機（ＴＸ／ＲＸ）ユニット２６と、複数の報告フォーマット２８と、ＷＤセッションマネージャ３０と、ユーザ入力バックチャネル（ＵＩＢＣ）モジュール３２とを含む。ソースデバイス２０のＯＳ２４は、ＩＰスタック３４を含み得る。シンクデバイス６０は、送信機／受信機ユニット（ＴＸ／ＲＸ）６２と、メディアデコーダ６４と、少なくとも１つの出力デバイス６６と、ＷＤセッションマネージャ６８と、少なくとも１つのヒューマン入力デバイス（ＨＩＤ）７０と、少なくとも１つのＨＩＤドライバ７２と、ＵＩＢＣモジュール７４と、オペレーティングシステム（ＯＳ）７６とを含み得る。ＯＳ７６は、ＩＰスタック７８を含み得る。図示した構成要素は、ＷＤシステム１０の一例の構成を成すにすぎない。他の構成は、図示した構成要素よりも少数の構成要素を含んでもよいか、または図示した構成要素に加えてそれ以外の構成要素を含んでもよい。たとえば、ソースデバイス２０は、ディスプレイおよびスピーカのような、１つまたは複数の出力デバイスを含んでもよい。
【００２４】
ソースデバイス２０およびシンクデバイス６０の構成要素は様々な方法で実装され得る。たとえば、ソースデバイス２０およびシンクデバイス６０の１つまたは複数の構成要素は、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装され得る。１つまたは複数の態様がソフトウェアにおいて実装される例において、基礎となるハードウェア（たとえば、プログラム可能プロセッサの形態のもの）がソフトウェアを実行し得る。したがって、ソースデバイス２０およびシンクデバイス６０の各々は、本開示の技法のうちの１つまたは複数を実行するように構成された専用の機械を備え得る。
【００２５】
オペレーティングシステム２４は、ソースデバイス２０のコンピュータハードウェアを管理し得、ソースデバイス２０上で作動するコンピュータプログラムに共通のサービスを提供し得る。同様に、オペレーティングシステム７６は、シンクデバイス６０のコンピュータハードウェアを管理し得、シンクデバイス６０上で作動するコンピュータプログラムに共通のサービスを提供し得る。いくつかの例において、ＯＳ２４および／またはＯＳ７６は、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステム、ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステム、ｉＯＳ（登録商標）オペレーティングシステム、または他のブランドのオペレーティングシステムを備え得る。
【００２６】
ＷＤセッションマネージャ３０およびＷＤセッションマネージャ６８は、それぞれソースデバイス２０およびシンクデバイス６０上で作動する１つまたは複数のコンピュータプログラムを備え得る。ＷＤセッションマネージャ３０およびＷＤセッションマネージャ６８は、ワイヤレスチャネル５０を介したＷＤセッションを確立するために、それぞれＯＳ２４およびＯＳ７６によって提供されるサービスを使用し得る。ＷＤセッションマネージャ３０およびＷＤセッションマネージャ６８がＷＤセッションを確立すると、ＷＤセッションマネージャ６８およびＷＤセッションマネージャ６８は、たとえば、リアルタイムストリーミングプロトコル（ＲＴＳＰ）制御メッセージを使用して機能ネゴシエーションを実行し得る。一例において、ＷＤセッションを確立するための要求が、ＷＤセッションマネージャ３０によってシンクデバイス６０に送られ得る。ＷＤセッションが確立されると、ソースデバイス２０は、メディアデータ、たとえば、オーディオ／ビデオ（ＡＶ）データをシンクデバイス６０に送信し得る。ソースデバイス２０は、たとえば、リアルタイム転送プロトコル（ＲＴＰ）を使用してメディアデータをシンクデバイス６０に送信し得る。シンクデバイス６０は、受信されたメディアデータをそのディスプレイおよびオーディオ機器上でレンダリングし得る。
【００２７】
ＵＩＢＣモジュール３２およびＵＩＢＣモジュール７４は、それぞれソースデバイス２０およびシンクデバイス６０上で作動するコンピュータプログラムを備え得る。ＵＩＢＣモジュール３２およびＵＩＢＣモジュール７４は、ＵＩＢＣメッセージをシンクデバイス６０からソースデバイス２０に送るために、それぞれＯＳ２４およびＯＳ７６によって提供されるサービスを使用し得る。ＵＩＢＣメッセージは、汎用入力メッセージおよび／またはＨＩＤＣ入力報告を含み得る。
【００２８】
アプリケーション２２は、ソースデバイス２０上で作動する１つまたは複数のコンピュータプログラムを備え得る。アプリケーション２２は、符号化メディアデータを出力し得る。メディアデータは、オーディオデータおよび／またはビデオデータを含み得る。いくつかの例では、ソースデバイス２０は、ソースデバイス２０のカメラおよび／またはマイクロフォンを介してリアルタイムでメディアデータをキャプチャし得る。他の例では、メディアデータは、動画、テレビ番組、または音楽のような事前記録されたメディアデータであってもよい。いくつかの事例では、メディアデータは、ユーザ入力オプションが画像上にオーバーレイされている動画またはＴＶ番組の画像のような、異なるタイプのコンテンツの組合せである画像を含んでもよい。いくつかの例において、アプリケーション２２は、すでに符号化メディアデータを再符号化してもよい。言い換えれば、アプリケーション２２はメディアデータをトランスコードしてもよい。
【００２９】
アプリケーション２２は、ＯＳ２４に、符号化メディアデータをシンクデバイス６０に送信するよう命令し得る。ＯＳ２４は、符号化メディアデータをワイヤレスチャネル５０を介してシンクデバイス６０に送信するためにＴＸ／ＲＸユニット２６を使用し得る。シンクデバイス６０のＴＸ／ＲＸユニット６２が符号化メディアデータを受信し得る。メディアデコーダ６４は、符号化メディアデータを復号して、出力デバイス６６上で提示するために復号されたメディアデータを出力し得る。
【００３０】
アプリケーション２２およびメディアデコーダ６４は、代替的にＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格、または新生の高効率ビデオコーディング（ＨＥＶＣ：high efficiency video coding）規格のような、様々なオーディオおよびビデオ圧縮規格を実装するエンコーダ／デコーダ（ＣＯＤＥＣ）ユニットを含み得る。多くの他のタイプのプロプライエタリなまたは規格化された圧縮技法も使用され得る。一般的に言って、メディアデコーダ６４は、アプリケーション２２において使用されるメディアエンコーダの逆のコーディングを実行するように構成され得る。図１には示されていないが、いくつかの態様では、アプリケーション２２およびビデオデコーダ６４は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、そのようなＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）など他のプロトコルに準拠することができる。
【００３１】
出力デバイス６６は、陰極線管（ＣＲＴ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、発光ダイオード（ＬＥＤ）ディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なビデオ出力デバイスのいずれかを備え得る。これらのまたは他の例では、出力デバイス６６は、放射型ディスプレイまたは透過型ディスプレイであってよい。出力デバイス６６は、出力デバイス６６が同時に入力デバイスとディスプレイの両方であるように、タッチディスプレイをも含み得る。そのようなタッチディスプレイは、ユーザがユーザ入力を与えることを可能にする、静電容量式、抵抗式、または他のタイプのタッチパネルであり得る。代替的に、出力デバイス６６は、ヘッドフォン、シングルスピーカーシステム、マルチスピーカーシステム、またはサラウンドサウンドシステムのような、様々なオーディオ出力デバイスのいずれかを備えてもよい。
【００３２】
出力デバイス６６はシンクデバイス６０の一部として図示されているが、シンクデバイス６０は複数のデバイスから成るシステムであってもよい。一例として、出力デバイス６６はテレビであってもよく、シンクデバイス６０はワイヤードまたはワイヤレスのいずれかで出力デバイス６６に接続されている外部筐体であってもよい。他の例では、シンクデバイス６０は、タブレットコンピュータまたはスマートフォンのような、単一のデバイスであってもよい。さらに他の場合では、ソースデバイス２０およびシンクデバイス６０は同じデバイス、たとえば両方ともスマートフォン、タブレットなどである。この場合、一方のデバイスがソースとして動作してもよく、他方がシンクとして動作してもよい。これらの役割は後続の通信セッションでは逆になってもよい。さらに他の場合、ソースデバイス２０は、スマートフォン、ラップトップまたはタブレットコンピュータなど、モバイルデバイスを備えてもよく、シンクデバイス６０は、（たとえば、ＡＣ電源コードを用いた）より固定のデバイスを備えてもよく、その場合、ソースデバイス２０は、シンクデバイス６０を介した１人または複数人の観賞者への提示のためにオーディオおよびビデオデータを配信し得る。
【００３３】
ＴＸ／ＲＸユニット３２およびＴＸ／ＲＸユニット６２は、各々、様々なミキサ、フィルタ、増幅器、および信号変調のために設計された他の構成要素、ならびに、１つまたは複数のアンテナ、およびデータを送信し、受信するために設計された他の構成要素を含み得る。ワイヤレスチャネル５０は、オーディオ／ビデオデータ、制御データおよびフィードバックをソースデバイス２０とシンクデバイス６０との間で送信するのに好適な任意の通信媒体、または種々の通信媒体の集合体を表し得る。ワイヤレスチャネル５０は、ワイヤレス通信ネットワークを備え得る。ワイヤレスチャネル５０は、相対的に短距離の通信チャネルであり得、２．４ＧＨｚ、３．６ＧＨｚ、５ＧＨｚ、６０ＧＨｚまたは超広帯域（ＵＷＢ）周波数帯構造を使用して実装される、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈなどと同様の物理チャネル構造を実装し得る。ただし、ワイヤレスチャネル５０は、この点において必ずしも限定されるとは限らず、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路のような任意のワイヤレス通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備えてもよい。他の例では、ワイヤレスチャネル５０は、ワイヤードもしくはワイヤレスローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースネットワークの一部を形成してもよい。加えて、ワイヤレスチャネル５０は、ピアツーピアリンクを作成するためにソースデバイス２０およびシンクデバイス６０によって使用されてもよい。
【００３４】
ソースデバイス２０およびシンクデバイス６０は、ＩＥＥＥ８０２．１１規格ファミリーからの規格などの通信プロトコルを使用してワイヤレスチャネル５０を介して通信し得る。一例において、ワイヤレスチャネル５０は、ネットワーク通信チャネルであってもよい。この例では、通信サービス提供者が、基地局をネットワークハブとして使用して、ネットワークを集中的に運営および管理し得る。ソースデバイス２０およびシンクデバイス６０は、たとえば、ソースデバイス２０およびシンクデバイス６０が、ワイヤレスアクセスポイントまたはいわゆるホットスポットのような、中間物を使用せずに互いと直接通信するように、Ｗｉ−Ｆｉ  ＤｉｒｅｃｔまたはＷｉ−Ｆｉディスプレイ（ＷＦＤ）規格に従って通信し得る。このコンテキストでは、相対的に短い距離は、たとえば、約７０メートル未満を指すことがあるが、雑音の多いまたは遮るもののある環境では、デバイス間の距離は、約３５メートル未満、または約２０メートル未満のように、さらに短いことがある。
【００３５】
本開示の技法について時折ＷＦＤに関して説明することがあるが、これらの技法の態様は他の通信プロトコルにも適合し得ることが企図される。限定ではなく例として、ソースデバイス２０とシンクデバイス６０との間のワイヤレス通信は直交周波数分割多重化（ＯＦＤＭ）技法を利用し得る。限定はしないが、時分割多元接続（ＴＤＭＡ）、周波数分割多元接続（ＦＤＭＡ）、符号分割多元接続（ＣＤＭＡ）、またはＯＦＤＭ、ＦＤＭＡ、ＴＤＭＡおよび／もしくはＣＤＭＡの任意の組合せを含む、多種多様な他のワイヤレス通信技法も使用され得る。
【００３６】
図１の例に示すように、シンクデバイス６０は、少なくとも１つのＨＩＤ７０に動作可能に結合され得る。ＨＩＤのタイプの例は、限定はしないが、キーボード、マウス、ジョイスティック、タッチスクリーン、トラックボール、タッチセンサ式表面、キーパッド、ボタン、ビデオゲームコントローラ、遠隔制御装置、デジタルペンまたはスタイラス、ジェスチャ応答式入力デバイスまたはカメラ、および、ユーザ入力をコンピュータに与えるために人間が使用することができる他のタイプのデバイスを含み得る。ＨＩＤ７０はＨＩＤドライバ７２に関連付けられ得る。人間がＨＩＤ７０を使用してユーザ入力を与えると、ＨＩＤドライバ７２は、ＨＩＤ７０から信号を受信し得、入力報告を生成し得る。入力報告は、ＨＩＤ７０によって受信された入力を記述し得る。たとえば、ＨＩＤ７０がマウスである場合、入力報告は、マウスが５位置左に動かされ、１０位置上に動かされたと示し得る。いくつかの例において、ＨＩＤドライバ７２によって生成される入力報告は、ＵＳＢまたはＢｌｕｅｔｏｏｔｈ規格に準拠する。
【００３７】
ＨＩＤドライバ７２が入力報告を生成すると、ＨＩＤドライバ７２は入力報告をシンクデバイス６０のＯＳ７６に与え得る。入力報告が受信されるのに応答して、ＯＳ７６は、ＨＩＤ７０に関連付けられる入力イベントを受信するために、ＯＳ７６に登録しているコンピュータプログラムを識別し得る。ＯＳ７６は、その後、入力イベントを識別されたコンピュータプログラムに与え得る。入力イベントは、ＨＩＤ７０によって受信されるユーザ入力を記述するデータを含むデータオブジェクト（たとえば、オブジェクト指向プログラミング言語オブジェクト）であり得る。いくつかの例において、入力イベントは、ＯＳ７６がＨＩＤ７２によって生成された入力報告に基づいて生成する汎用入力メッセージを含み得る。他の例においては、入力イベントは、ＨＩＤ７２によって生成された入力報告に一致するＨＩＤＣ入力報告を含み得る。
【００３８】
非ＷＤシステムにおいては、識別されたコンピュータプログラムが、入力イベントを処理して、入力イベントによって記述されるユーザ入力に基づいて、出力デバイス６６においてデータを出力し得る。しかしながら、ＷＤシステム１０においては、シンクデバイス６０は、入力報告を処理する役割を担っていないものであり得る。そうではなく、ソースデバイス２０が入力報告を処理する役割を担い得る。
【００３９】
したがって、ＵＩＢＣモジュール７４が、ＨＩＤ７０に関連付けられる入力イベントを受信するためにＯＳ７６に登録し得る。ＵＩＢＣ７４がＯＳ７６から入力イベントを受信すると、ＵＩＢＣモジュール７４は、入力イベントに基づく入力メッセージを含むＵＩＢＣメッセージを生成し得る。ＵＩＢＣモジュール７４は、その後、ＵＩＢＣメッセージを、シンクデバイス６０からワイヤレスチャネル５０を介してソースデバイス２０に送るために、ＯＳ７６によって提供される１つまたは複数のサービスを使用し得る。いくつかの例において、ＯＳ７６のＩＰスタック７８が、ＵＩＢＣメッセージをパッケージして、ワイヤレスチャネル５０を介してソースデバイス２０に送信するためのＩＰパケットにし得る。このように、シンクデバイス６０は、ＨＩＤ７０からのユーザ入力の指示を受信し得る。ユーザ入力の指示が受信されるのに応答して、ＨＩＤドライバ７２は、ユーザ入力に基づいて、報告フォーマットに準拠する入力報告を生成し得る。シンクデバイス６０は、ワイヤレスチャネル５０を介してソースデバイス２０にＩＰパケットを送り得る。ＩＰパケットは、入力報告に基づく入力メッセージを含み得る。
【００４０】
ソースデバイス２０のＴＸ／ＲＸユニット２６が、ＵＩＢＣメッセージを含む１つまたは複数のＩＰパケットを受信すると、ＴＸ／ＲＸユニット２６は、１つまたは複数のＩＰパケットを、ソースデバイス２０のＯＳ２４に与え得る。ＯＳ２４のＩＰスタック３４が、その後、１つまたは複数のＩＰパケットからＵＩＢＣメッセージを取り出し得る。ＯＳ２４は、その後、ＵＩＢＣメッセージを受信するために登録している、ソースデバイス２０上で作動しているプロセスを（たとえば、１つまたは複数のＩＰパケットによって指定されるポート番号に基づいて）識別し得る。図１の例においては、ＵＩＢＣモジュール３２が、ＵＩＢＣメッセージを受信するために登録している。したがって、ＯＳ２４は、ＵＩＢＣメッセージをＵＩＢＣモジュール３２に与え得る。
【００４１】
ＵＩＢＣメッセージが受信されると、ＵＩＢＣモジュール３２は、ＵＩＢＣメッセージの内容を確定するためにＵＩＢＣメッセージをパースし得る。ＵＩＢＣメッセージが入力メッセージを含む場合、ＵＩＢＣモジュール３２は入力メッセージをパースして、入力メッセージに基づいて入力イベントを生成し得る。入力イベントは、入力メッセージに基づくデータを指定するデータオブジェクト（たとえば、オブジェクト指向プログラミング言語オブジェクト）を備え得る。ＵＩＢＣモジュール３２が入力イベントを生成すると、ＯＳ２４は、入力イベントを受信するために登録している、ソースデバイス２０上で作動している１つまたは複数のプロセスを識別し得る。ＯＳ２４は、その後、入力イベントを識別されたプロセスに与え得る。図１の例は、アプリケーション２２が入力イベントを受信するために登録していると仮定している。
【００４２】
入力イベントが受信されるのに応答して、アプリケーション２２は、入力イベントによって指定される入力メッセージによって記述されるユーザ入力に少なくとも部分的に基づいて、メディアデータを生成し得る。たとえば、ユーザ入力が、特定のオンスクリーン制御部（on-screen control）のオンスクリーンロケーションにおいてクリックイベントが発生したことを示す場合、アプリケーション２２は、オンスクリーン制御部に関連付けられる機能を実行して、対応するメディアデータを生成し得る。アプリケーション２２は、メディアデータを符号化し、その後、ＯＳ２４に、符号化メディアデータをシンクデバイス６０に送るように命令し得る。いくつかの例において、ＯＳ２４のＩＰスタック３４が、符号化メディアデータを、シンクデバイス６０に送信するための一連の１つまたは複数のＩＰパケット内にカプセル化し得る。このように、シンクデバイス６０はソースデバイス２０からメディアデータを受信し得、メディアデータはユーザ入力に基づく。シンクデバイス６０は、その後、出力デバイス６６において提示（たとえば、表示および／またはオーディオ再生）するためにメディアデータをレンダリングし得る。
【００４３】
シンクデバイス６０は、汎用入力メッセージおよびＨＩＤコマンド（ＨＩＤＣ）入力報告を、ＵＩＢＣを介してソースデバイス２０に送り得る。シンクデバイス６０にあるいくつかのＨＩＤドライバは、ＨＩＤドライバがＨＩＤからのユーザ入力の指示を受信すると、入力報告をＯＳ７６に与え得る。入力報告は、ＨＩＤによって受信されたユーザ入力を記述し得る。いくつかの例において、入力報告は、ＵＳＢまたはＢｌｕｅｔｏｏｔｈ  ＨＩＤ規格に準拠し得る。シンクデバイス６０のＯＳ７６は、ＨＩＤドライバからＯＳ７６によって受信されるいくつかの入力報告に応答して汎用入力メッセージを生成し得る。ＯＳ７６は、その後、汎用入力メッセージを指定する入力イベントをＵＩＢＣモジュール７４に与え得る。ＵＩＢＣモジュール７４が汎用入力メッセージを受信すると、ＵＩＢＣモジュール７４は、汎用入力メッセージを含むＵＩＢＣメッセージを生成し得、ＵＩＢＣメッセージを、ソースデバイス２０に送信するための待ち行列に入れ得る。
【００４４】
ＯＳ７６は、異なるＨＩＤクラス内のＨＩＤによって受信されるユーザ入力を記述する汎用入力メッセージは異なる報告フォーマットを有するが、１つのＨＩＤクラス内の異なるＨＩＤから受信されるユーザ入力を記述する汎用入力メッセージは同じ報告フォーマットを有するように、汎用入力メッセージを生成し得る。たとえば、ＯＳ７６は、様々なタイプのマウスによって受け取られるユーザ入力を記述する汎用入力メッセージを生成するために第１の報告フォーマットを使用し得る。この例において、ＯＳ７６は、様々なタイプのゲームコントローラによって受け取られるユーザ入力を記述する汎用入力メッセージを生成するために第２の報告フォーマットを使用し得る。
【００４５】
汎用入力メッセージを生成することによって、ＯＳ７６は、同じＨＩＤクラスに属する異なるＨＩＤに関連付けられる入力報告を調和させることが可能であり得る。たとえば、ＯＳ７６は、様々なタイプのマウスの入力報告を変換して、ほとんどのタイプのマウスに対して汎用的であるフォーマットにすることが可能であり得る。たとえば、第１のブランドのマウスのためのドライバは、スクロールホイールが前または後ろに動かされたかを示すために入力報告の４番目のバイトを使用し得、第２のブランドのマウスのためのドライバは、入力報告の４番目のバイトをまったく使用しないものであり得る。この例において、ＯＳ７６は、第１のブランドのマウスおよび第２のブランドのマウスのためのドライバからの入力報告を変換して、４番目のバイトがスクロールホイールが動かされたかを示す汎用入力メッセージにし得、４番目のバイトは、スクロールホイールがないマウスについては常にゼロになる。この例において、ソースデバイス２０がそのような汎用入力メッセージを解読することが可能であるために、シンクデバイス６０は、ソースデバイス２０に、入力報告がマウスからのものであることを示せば十分であり得る。
【００４６】
しかしながら、ＷＤシステム１０を、共通のタイプのＨＩＤのみを使用するように限定することは望ましくない場合がある。そうではなく、ソースデバイス２０およびシンクデバイス６０が、多種多様なＨＩＤ、同じ汎用ＨＩＤクラスに属するＨＩＤさえサポートすることが可能であるようにすることが望ましい場合がある。たとえば、２つの異なるビデオゲームコントローラが、異なる数のボタンを使用する場合がある。したがって、この例において、これら２つのビデオゲームコントローラからの入力報告が同じフォーマットを有するようにすることは可能でない場合がある。新たなＨＩＤも現れ得、ソースデバイス２０およびシンクデバイス６０が新たな現れることになるＨＩＤをサポートする柔軟性を有することが望ましい場合がある。
【００４７】
したがって、シンクデバイス６０にある何らかのＨＩＤドライバが入力報告をＵＩＢＣモジュール７４に直接与え得るか、または、ＯＳ７６が、ＨＩＤドライバからの入力報告をＵＩＢＣモジュール７４に直接与え得る。入力報告は、ＵＳＢまたはＢｌｕｅｔｏｏｔｈ規格に準拠し得る。ＨＩＤドライバから入力報告が受信されるのに応答して、ＵＩＢＣモジュール７４は、入力報告に基づく入力メッセージを含むＵＩＢＣメッセージを生成し得る。ＵＩＢＣモジュール７４は、その後、ＵＩＢＣメッセージをソースデバイス２０に送信するための待ち行列に入れ得る。ＵＩＢＣモジュール７４がＵＩＢＣメッセージをこのように生成するとき、ＵＩＢＣメッセージは、本開示においては、ＨＩＤＣ入力報告を含むと考える。このように、シンクデバイス６０は、入力報告をＵＳＢまたはＢｌｕｅｔｏｏｔｈ入力報告として、ＩＰパケットを介してソースデバイス２０に送り得る。
【００４８】
たとえば、異なるタイプのＨＩＤは異なるタイプの入力を提供し得る。したがって、異なるタイプのＨＩＤのためのドライバは、異なるタイプの入力報告を生成する可能性がある。さらに、同じＨＩＤクラスに属するＨＩＤのための異なるドライバが、フォーマットの異なる入力報告を生成する可能性がある。たとえば、第１のブランドのジョイスティックのためのドライバは、主要ジョイスティックボタンが押されたかを示すために入力報告の３２番目のビットを使用し得、第２のブランドのジョイスティックのためのドライバは、主要ジョイスティックボタンが押されたかを示すために入力報告の１６番目のビットを使用し得る。
【００４９】
シンクデバイス６０は、様々な入力経路を介して受信されるユーザ入力に関するＨＩＤＣ入力報告を生成し得る。いくつかの例において、そのような入力経路は、赤外線、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ、Ｚｉｇｂｅｅ（登録商標）、Ｗｉ−Ｆｉ、および販売元特有の入力経路を含み得る。いくつかの例において、ＨＩＤＣ入力報告は、マウスおよびキーボード入力に限定され得る。他の例において、ＨＩＤＣ入力報告は、シングルタッチタッチスクリーン、マルチタッチタッチスクリーン、ジョイスティック、カメラ、ジェスチャ検出システム、遠隔制御装置、赤外線デバイス、および／または販売元特有のタイプのＨＩＤのような、他のタイプのＨＩＤに関して生成され得る。いくつかの例において、ＨＩＤＣ入力報告は、ＲＴＳＰにおいて指定されていない場合がある。販売元特有のカテゴリのユーザ入力は、販売元特有のＨＩＤフォーマットのものであり得る。シンクデバイス６０およびソースデバイス２０は、いかなるデバイスプロットフォームによっても指定されておらず、解読されるユーザ入力のカテゴリにおいても標準化されていない、共通の販売元特有のユーザ入力インターフェースを有し得る。この場合、シンクデバイス６０は販売元のライブラリによって指定されるフォーマットにあるＨＩＤＣ入力報告を送り得る。ソースデバイス２０がそのような販売元特有のユーザ入力を受信すると、ソースデバイス２０は、そのようなユーザ入力をパースするためには、販売元特有のＨＩＤユーザ入力のライブラリを呼び出し得る。
【００５０】
上記のように、ＵＩＢＣモジュール３２は、入力メッセージを含むＵＩＢＣメッセージを受信し、入力メッセージによって記述されているユーザ入力を確定するために入力メッセージをパースし、入力メッセージによって記述されているユーザ入力に基づいて入力イベントを生成し得る。ＨＩＤＣ入力報告をパースするために、ＵＩＢＣモジュール３２は、ＨＩＤＣ入力報告が準拠する報告フォーマットを判定する必要があり得る。したがって、本開示の技法によれば、ＵＩＢＣモジュール３２は、ＨＩＤＣ入力報告を含む１つまたは複数のＩＰパケット内のデータに基づいてＵＩＢＣメッセージ内のＨＩＤＣ入力報告の報告フォーマットを判定し得る。
【００５１】
いくつかの例において、ソースデバイス２０は報告フォーマット２８を記憶し得る。いくつかの例では、ソースデバイス２０は、シンクデバイス６０とのＵＩＢＣを確立する前に報告フォーマット２８を記憶し得る。報告フォーマット２８は、特定のＨＩＤに関連付けられる報告フォーマットを記述するデータを含み得る。たとえば、報告フォーマット２８は、特定のＨＩＤに関連付けられる報告フォーマットを記述するスキーマ（たとえば、拡張マークアップ言語（ＸＭＬ）スキーマなど）を含み得る。そのような例において、ＩＰパケット内で指定される報告記述子が、ソースデバイス２０が報告フォーマット２８のうちの特定の１つに関連付ける識別子であり得る。ＨＩＤＣ入力報告をパースするために、ＵＩＢＣモジュール３２は、そのような識別子を使用して報告フォーマット２８のうちの１つを選択し得る。ソースデバイス２０は、その後、ＨＩＤＣ入力報告をパースするために、識別されたスキーマによって記述されている報告フォーマットを使用し得る。このように、シンクデバイス６０およびソースデバイス２０は、従来のＵＳＢまたはＢｌｕｅｔｏｏｔｈネゴシエーション方法を使用して交換され得るよりも単純化されたデータサブセットを交換し得る。したがって、シンクデバイス６０およびソースデバイス２０は、特定のＨＩＤからの入力に関するＨＩＤＣ入力報告に対するフォーマットを示すスキーマを交換する必要がないものであり得る。
【００５２】
ＵＩＢＣモジュール３２は、様々な識別子に基づいて報告フォーマット２８のうちの１つを識別し得る。たとえば、ＵＩＢＣメッセージは、少なくとも第１のフィールドおよび第２のフィールドを含み得る。第１のフィールドはＨＩＤＣ入力報告を含み得る。第２のフィールドは、ＨＩＤタイプ指示子を含み得る。ＨＩＤタイプ指示子は、報告フォーマット２８のうちの１つを識別する数値識別子を備え得る。別の例において、１つまたは複数のＩＰパケットが、シンクデバイス６０のＩＰアドレスを指定し得る。この例において、ＵＩＢＣモジュール３２は、シンクデバイス６０のＩＰアドレスに少なくとも部分的に基づいて報告フォーマット２８のうちの１つを識別し得る。さらに、１つまたは複数のＩＰパケットが、ソースポートを指定し得る。この例において、ＵＩＢＣモジュール３２は、シンクデバイス６０のＩＰアドレスおよびソースポートに少なくとも部分的に基づいて報告フォーマット２８のうちの１つを識別し得る。
【００５３】
他の例において、ＵＩＢＣモジュール７４は、報告記述子または報告データを含むＨＩＤＣ入力報告を生成し得る。ＨＩＤＣ入力報告の報告記述子は、報告データの報告フォーマットを記述し得る。いくつかの例において、報告記述子はスキーマを含み得る。たとえば、報告記述子は、報告データの３２番目のビットが、ＨＩＤの特定のボタンが押されたかを示すことを示し得る。ＨＩＤＣ入力報告の報告データは、ＨＩＤによって受信されるユーザ入力を記述し得る。
【００５４】
そのような例において、ＵＩＢＣモジュール３２は、ＨＩＤＣ入力報告を含むＵＩＢＣメッセージが受信されるのに応答して、ＨＩＤＣ入力報告が報告記述子または報告データを含むかを判定し得る。ＨＩＤＣ入力報告が報告記述子を含む場合、ＵＩＢＣモジュール３２は、後にＨＩＤＣ入力報告をパースするのに使用するために、報告記述子を記憶し得る。ＨＩＤＣ入力報告が報告データを含む場合、ＵＩＢＣモジュール３２は、以前に受信された報告記述子に基づいて報告データをパースし得る。
【００５５】
さらに、ＨＩＤＣ入力報告は使用状況フラグおよびＨＩＤＣ値を含み得る。ＨＩＤＣ入力報告の使用状況フラグは、ＨＩＤＣ入力報告のＨＩＤＣ値がフォーマットデータまたは報告データを含むかを示す。いくつかのそのような例において、ＨＩＤＣ入力報告は、下記表１に示すフォーマットに準拠し得る。
【表１】
0005908592.tif 000002
【００５６】
表１のＨＩＤＣ入力報告フォーマット例において、ＨＩＤＣ入力報告の「使用状況」フラグは、ＨＩＤＣ入力報告の「ＨＩＤＣ値」フィールドが報告データまたは報告記述子を含むかを示し得る。報告データは、ＨＩＤ７０のようなＨＩＤによって受け取られるユーザ入力を記述し得る。報告記述子は、報告フォーマットを記述し得る。したがって、シンクデバイス６０は、第１のＨＩＤＣ入力報告および第２のＨＩＤＣ入力報告を送り得、ソースデバイス２０はそれを受信し得る。第１のＨＩＤＣ入力報告の「使用状況」フラグは、第１のＨＩＤＣ入力報告のＨＩＤＣ値が報告記述子を備えることを示し得、第２のＨＩＤＣ入力報告の「使用状況」フラグは、第２のＨＩＤＣ入力報告のＨＩＤＣ値が報告データを備えることを示し得る。
【００５７】
ＨＩＤＣ入力報告が表１のフォーマットに準拠する例において、シンクデバイス６０が、報告データを備えるＨＩＤＣ入力報告をソースデバイス２０に送る前に、シンクデバイス６０は、報告記述子を備えるＨＩＤＣ入力報告をソースデバイス２０に送り得る。シンクデバイス６０は、ソースデバイス２０が正確なフォーマットを有することを保証するために、報告記述子をソースデバイス２０に複数回送り得る。ＵＩＢＣモジュール３２は、報告記述子をＷＤセッションの継続時間にわたって保存し、報告記述子を報告データのパースに使用し得る。
【００５８】
他の例において、ＵＩＢＣモジュール３２は、シンクデバイス６０から受信される最初のＨＩＤＣ入力報告が常に報告フォーマットを指定すること、および、シンクデバイス６０から受信される後続のＨＩＤＣ入力報告が最初のＨＩＤＣ入力報告によって記述されている報告フォーマットに従ってフォーマットされることを仮定し得る。さらに、いくつかの例において、ＵＩＢＣモジュール３２は、シンクデバイス６０の特定のポートから受信される最初のＨＩＤＣ入力報告が常に報告フォーマットを指定すること、および、シンクデバイス６０の特定のポートから受信される後続のＨＩＤＣ入力報告が最初のＨＩＤＣ入力報告によって記述されている報告フォーマットに従ってフォーマットされることを仮定し得る。
【００５９】
他の例において、各ＨＩＤＣ入力報告は２つのＨＩＤＣ値を含み得る。ＨＩＤＣ入力報告の第１のＨＩＤＣ値は報告記述子を指定し得る。ＨＩＤＣ入力報告の第２のＨＩＤＣ値は、報告記述子によって指定されるフォーマットに準拠する報告データを指定し得る。
【００６０】
いくつかの例において、シンクデバイス６０およびソースデバイス２０は、ＨＩＤＣ入力報告をサポートし得るが、ＨＩＤＣ出力報告をサポートしない場合がある。ＨＩＤＣ出力報告は、ソースデバイス２０から、キーボードのようなヒューマン入力デバイスに情報を伝達し得る。さらに、いくつかのそのような例において、シンクデバイス６０は、ＨＩＤＣ入力報告をソースデバイス２０に、割り込みベースで送り得る。したがって、ソースデバイス２０がシンクデバイス６０にＨＩＤＣ入力報告についてポーリングする必要はないものであり得る。
【００６１】
図２は、本開示の１つまたは複数の技法による、ソースデバイス２０によって実行される一例の動作２００を示す流れ図である。図２および他の図面を図１を参照して説明するが、本明細書に記載の図２および他の図面は、図１の例以外の例に適用可能であり得る。
【００６２】
図２の例において、ソースデバイス２０が複数の事前構成された報告フォーマット２８を記憶し得る（２０２）。事前構成された報告フォーマット２８の各々は、異なるタイプのＨＩＤに関連付けられ得る。加えて、ソースデバイス２０はシンクデバイス６０から１つまたは複数のＩＰパケットを受信し得る（２０４）。１つまたは複数のＩＰパケットは、ＨＩＤＣ入力報告を含み得る。ソースデバイス２０のＵＩＢＣモジュール３２は、１つまたは複数のＩＰパケット内のデータに基づいて、複数の事前構成された報告フォーマット２８から１つの事前構成された報告フォーマットを識別し得る（２０６）。次に、ＵＩＢＣモジュール３２は、ＨＩＤＣ入力報告によって記述されているユーザ入力を確定するために、識別された事前構成されたフォーマットに基づいてＨＩＤＣ入力報告をパースし得る（２０８）。ソースデバイス２０は、ユーザ入力に応答してメディアデータを生成し得る（２１０）。ソースデバイス２０は、その後、メディアデータをソースデバイス２０からシンクデバイス６０に送り得る（２１２）。メディアデータが受信されると、シンクデバイス６０は、メディアデータを復号および提示する。
【００６３】
図３は、本開示の１つまたは複数の技法による、シンクデバイスによって実行される一例の動作２５０を示す流れ図である。図３の例において、シンクデバイス６０は、ユーザ入力の指示をＨＩＤ（たとえば、ＨＩＤ７０）から受信し得る（２５２）。シンクデバイス６０にあるＵＩＢＣモジュール７４は、ユーザ入力に基づいてＨＩＤＣ入力報告を生成し得る（２５４）。いくつかの例において、ＨＩＤＣ入力報告は、ＵＳＢまたはＢｌｕｅｔｏｏｔｈ規格に準拠し得る。次に、ソースデバイス６０はシンクデバイス２０に１つまたは複数のＩＰパケットを送り得る（２５６）。ＩＰパケットは、ＨＩＤＣ入力報告と、ＨＩＤＣ入力報告をパースするための報告フォーマットを識別するＨＩＤタイプ指示子とを含み得る。その後、シンクデバイス６０は、ソースデバイス２０からメディアデータを受信し得る（２５８）。メディアデータは、ＨＩＤＣ入力報告によって記述されているユーザ入力に基づき得る。
【００６４】
図４は、本開示の１つまたは複数の技法による、シンクデバイス６０によって実行される別の例の動作３５０を示す流れ図である。動作３５０は、図３の例に示す動作２５０のより特定的な事例であり得る。
【００６５】
図４の例において、シンクデバイス６０のＷＤセッションマネージャ６８が、ＵＩＢＣを確立するためにソースデバイス２０のＷＤセッションマネージャ３０と通信する（３５１）。いくつかの例において、ソースデバイス２０のＷＤセッションマネージャ３０が、ＵＩＢＣを確立するための通信を開始する。いくつかの例において、シンクデバイス６０のＷＤセッションマネージャ６８が、ＵＩＢＣを確立するための通信を開始する。いくつかの例において、ＷＤセッションマネージャ６８およびＷＤセッションマネージャ３０は、セッション確立の間にＵＩＢＣ機能をネゴシエートし得る。後述の図７は、汎用入力メッセージのためにＵＩＢＣをネゴシエートするためのソースデバイス２０とシンクデバイス６０との間の一例の対話を示す通信図である。下記により詳細に説明する図８は、ＨＩＤＣ入力報告のためにＵＩＢＣをネゴシエートするためのソースデバイス２０とシンクデバイス６０との間の一例の対話を示す通信図である。
【００６６】
ＵＩＢＣが確立される前に、シンクデバイス６０は、それに接続されている入力デバイスにアウェアであり、これを管理し得る。タッチスクリーンおよび遠隔制御デバイスは、シンクデバイス６０に常に接続され得る。他の入力デバイス（マウスおよびキーボードのような）は、可能性として適切なプラグ・アンド・プレイ（ＰｎＰ）マネージャおよびデバイスドライバを必要としながら、接続および接続切断する。ＵＩＢＣを開始する前に、ＷＤセッションマネージャ６８は、接続されているデバイスおよびそれらの現在の状態のリストを有し得る。ＷＤセッションマネージャ６８は、ＵＩＢＣの確立の間に、このリスト内のＨＩＤをソースデバイス２０に対して識別し得る。
【００６７】
いくつかの例において、ＵＩＢＣを確立することは、以下の必要条件を仮定する。ソースデバイス２０が、シンクデバイス６０を発見している。シンクデバイス６０が、ソースデバイス２０と対になっている。ＲＴＳＰ制御ポートを用いてソースデバイス２０とシンクデバイス６０との間に伝送制御プロトコル（ＴＣＰ）接続が確立されている。すべてのＷＤ非ＵＩＢＣ機能が、ＲＴＳＰを介してソースデバイス２０とシンクデバイス６０との間でネゴシエートされている。
【００６８】
ＵＩＢＣが確立された後、シンクデバイス６０のＯＳ７６は、ＨＩＤドライバ７２から入力報告を受信し得る（３５２）。入力報告が受信されたことに応答して、ＯＳ７６は、シンクデバイス６０（３５４）のＵＩＢＣモジュール７４に入力イベントを送り得る。入力イベントは、ＯＳ７６によって受信された入力報告を含み得る。ＵＩＢＣモジュール７４が入力イベントを受信すると、ＵＩＢＣモジュール７４は、入力イベントを待ち行列内に記憶し得る。ＵＩＢＣモジュール７４は、ＵＩＢＣモジュール７４が入力イベントを待ち行列内に加えた順に入力イベントを処理する。
【００６９】
ＵＩＢＣモジュール７４が入力イベントを処理すると、ＵＩＢＣモジュール７４は、入力イベントをキャプチャすべきかを判定し得る（３５６）。ＵＩＢＣモジュール７４は、様々な方法で入力イベントをキャプチャすべきかの判定を行い得る。たとえば、ＵＩＢＣモジュール７４は、シフトキーまたはコントロールキーのキー押下に関する入力イベントをキャプチャすべきではないという判定を行ってもよい。ＵＩＢＣモジュール７４が入力イベントをキャプチャすべきではないという判定を行った場合（３５６の「いいえ」）、動作３５０は終了し得る。
【００７０】
ＵＩＢＣモジュール７４が入力イベントをキャプチャすべきという判定を行った場合（３５６の「はい」）、ＵＩＢＣモジュール７４は入力イベントをログ記録し得る（３５８）。ＵＩＢＣモジュール７４は、様々な方法で入力イベントをログ記録し得る。たとえば、ＵＩＢＣモジュール７４は、デバッグのためのＵＩＢＣテストコマンドラインインターフェース（ＣＬＩ）上で入力イベントをログ記録し得る。
【００７１】
加えて、ＵＩＢＣモジュール７４は、ＵＩＢＣメッセージを生成し得る（３６０）。ＵＩＢＣメッセージは、様々なメッセージフォーマットを有し得る。下記により詳細に説明する図６は、ＵＩＢＣメッセージの一例のメッセージフォーマットを示す。他の例において、ＵＩＢＣメッセージのメッセージフォーマットは、図６の例のメッセージフォーマットよりも単純であってもよい。たとえば、そのような他の例において、ＵＩＢＣメッセージは入力ボディ（input body）を含むだけでよい。ＵＩＢＣメッセージは、汎用入力ボディおよび／またはＨＩＤＣ入力ボディを含み得る。いくつかの例において、ＵＩＢＣメッセージは、ＵＩＢＣメッセージのＨＩＤＣ入力ボディが準拠する報告フォーマットを識別する報告記述子を含む。ＵＩＢＣモジュール７４が入力報告を処理すると、ＵＩＢＣモジュール７４は、汎用入力ボディ（すなわち、汎用入力メッセージ）またはＨＩＤＣ入力ボディ（すなわち、ＨＩＤＣ入力報告）を含むＵＩＢＣメッセージを生成し得る。
【００７２】
ＵＩＢＣモジュール７４は、デバイスプラットフォーム依存であるユーザ入力の汎用入力ボディを含むＵＩＢＣメッセージを生成し得る。たとえば、ＷＩＮＤＯＷＳ  ＭＯＢＩＬＥ（登録商標）およびＡＮＤＲＯＩＤ（登録商標）のような異なるデバイスプラットフォームは、異なるフォーマットのユーザ入力を有し得る。ユーザ入力は、ドライバレベルユーザ入力ではなく、オペレーティングシステムレベルユーザ入力として検出され送られ得る。
【００７３】
ソースデバイス２０のＵＩＢＣモジュール３２が汎用入力メッセージを受信すると、ＵＩＢＣモジュール３２は、ソースデバイス２０のデバイスプラットフォームに従って汎用入力メッセージを処理し得る。したがって、汎用入力メッセージは、ソースデバイス２０が、ＵＩＢＣモジュール７４によって受信された元の入力報告を処理することが可能である場合に有用であり得る。たとえば、ソースデバイス２０において作動しているアプリケーション（たとえば、アプリケーション２２）が複雑なユーザ対話をハンドリングし得るため、ソースデバイス２０は、タッチスクリーン上での特定シーケンスの指タッチを処理し得る。ソースデバイス２０は、いずれのポインタが使用されているかを即座に識別するポインタ識別子を使用することによって、汎用入力に対するマルチタッチモーションイベントをサポートし得る。したがって、シンクデバイス６０は、これらのマルチタッチモーションイベントを複数のポインタとして送り得、ソースデバイス２０はこれらを複数のポインタイベントとして解読し得る。
【００７４】
いくつかの例において、ＵＩＢＣモジュール７４は、ＯＳ７６によって生成されるモーションイベントをリスンし得る。そのような例において、ＵＩＢＣモジュール７４は、モーションイベントが受信されるのに応答して汎用入力ボディを含むＵＩＢＣメッセージを生成し得る。モーションイベントは、入力イベントクラスに属するデータオブジェクト（たとえば、オブジェクト指向プログラミング言語オブジェクト）であり得る。入力イベントクラスに属するオブジェクトは、モーションイベントオブジェクトまたはキーイベントオブジェクトを備え得る。モーションイベントオブジェクトは、マウス、ペン、指、およびトラックボールのような様々なタイプのＨＩＤからの動きを記録するデータを含み得る。キーイベントオブジェクトは、キー押下を記録するデータを含み得る。そのような例において、ＵＩＢＣモジュール７４は、以下の疑似コードに従ってモーションイベントオブジェクトを処理し得る。
【数１】
0005908592.tif 000003
【数２】
0005908592.tif 000004
【００７５】
上記で提供した疑似コードによれば、ＵＩＢＣモジュール７４は、モーションイベントオブジェクトがキーイベントオブジェクトであるかを判定し得る。モーションイベントオブジェクトがキーイベントオブジェクトであり、キーイベントオブジェクトがキーダウンイベントを示す場合、ＵＩＢＣモジュール７４は、押されたキーのコードをＵＴＦ−８またはＡＳＣＩＩコードに変換し、キーダウンイベントの汎用入力メッセージを生成し、汎用入力メッセージを含むＵＩＢＣメッセージを送信のために待ち行列内に入れ得る。モーションイベントオブジェクトがキーイベントオブジェクトであり、キーイベントオブジェクトがキーアップイベントを示す場合、ＵＩＢＣモジュール７４は、解放されたキーのコードをＵＴＦ−８またはＡＳＣＩＩコードに変換し、キーアップイベントの汎用入力メッセージを生成し、汎用入力メッセージを含むＵＩＢＣメッセージを送信のために待ち行列内に入れ得る。上記で提供した疑似コードにおいて、ＵＩＢＣモジュール７４は、ポインタダウンイベント、ポインタアップイベント、ポインタ移動イベント、およびスクロールイベントのような、様々なタイプのモーションイベントオブジェクトの汎用入力メッセージを生成し、送信のために待ち行列内に入れ得る。
【００７６】
上述したようなモーションイベントオブジェクトおよびキーイベントオブジェクトの処理に加えて、ＵＩＢＣモジュール７４は、他のタイプのイベントを処理し得る。たとえば、シンクデバイス６０が方向記述子を含む場合、ＵＩＢＣモジュール７４は、以下の疑似コードによって示すように、シンクデバイス６０の方向の変化を示す汎用入力メッセージを生成し得る。
【数３】
0005908592.tif 000005
【００７７】
いくつかの例において、ＵＩＢＣモジュール７４は、マルチタッチ入力の汎用入力メッセージを生成し得る。ソースデバイス２０とシンクデバイス６０の両方がマルチタッチをサポートする場合、ＵＩＢＣモジュール７４は、複数のポインタのうちのいずれがそれであるかを識別するために、ポインタの数およびインデックスパラメータが前に付くＸおよびＹ座標（たとえば、［２，１，Ｘ１，Ｙ１，２，Ｘ２，Ｙ２］）を有する、ポインタダウン、ポインタ移動、およびポインタアップのユーザ入力の追加の情報要素（ＩＥ）を生成し得る。シングルタッチについて、これらの前に付く値は１および１であり得る（たとえば、［１，１，Ｘ，Ｙ］）。
【００７８】
本開示において、ＨＩＤＣは、両方ともＵＳＢ  ＨＩＤおよびその他に基づく、様々な既存のＨＩＤ規格を使用してメッセージを送ることを指し得る。シンクデバイス６０は、ＨＩＤＣカテゴリのユーザ入力を転送し得、ユーザ入力は処理しないものであり得る。シンクデバイス６０に接続される第３のデバイスがソースデバイス２０にアウェアであることが可能であり得る。この場合、ＨＩＤデバイスは、第３のデバイスからシンクデバイス６０にメッセージを送り得、シンクデバイス６０はソースデバイス２０に直接メッセージを転送し得る。このように、ソースデバイス２０は正しいコンテキストにおいてこれらのメッセージに応答し得る。
【００７９】
いくつかの例において、ＵＩＢＣモジュール７４は、ＵＳＢキータイプデバイスのＨＩＤＣ入力ボディを含むＵＩＢＣメッセージを生成し得る。いくつかのそのような例において、ＵＩＢＣモジュール７４は、ＨＩＤドライバ７２からではなく、ＯＳ７６からのモーションイベントオブジェクトとしてユーザ入力をキャプチャし得る。ＵＩＢＣモジュール７４は、入力イベントオブジェクトに基づいてＨＩＤＣ入力報告を生成し得る。ＵＩＢＣモジュール７４は、以下の疑似コードに従ってモーションイベントオブジェクトを処理し得る。
【数４】
0005908592.tif 000006
【００８０】
上記の疑似コードによれば、ＵＩＢＣモジュール７４は、様々なタイプの移動入力を示すＨＩＤＣ入力報告を生成し得る。さらに、上記の疑似コード例において、入力イベントオブジェクトはタッチスクリーン以外のＨＩＤから生成され得る。したがって、入力イベントオブジェクトは、タッチスクリーンからのユーザ入力の入力イベントオブジェクトにおいて一般的に示されているような絶対ＸおよびＹではなく、ＸおよびＹの相対的な詳細を示し得る。
【００８１】
ＵＩＢＣモジュール７４がＵＩＢＣメッセージを生成した後、ＵＩＢＣモジュール７４は、ＵＩＢＣメッセージをＵＩＢＣ送信待ち行列に送り得る（３６２）。シンクデバイス６０のＯＳ７６は、ＵＩＢＣ送信待ち行列からＵＩＢＣメッセージを送り得る（３６４）。ＯＳ７６は、ＵＩＢＣメッセージがＵＩＢＣ送信待ち行列に加えられた順で、ＵＩＢＣ送信待ち行列からＵＩＢＣメッセージを送り得る。ＯＳ７６がＵＩＢＣメッセージを送ると、ＩＰスタック７８が、ソースデバイス２０のＩＰアドレスを宛先アドレスとして指定する１つまたは複数のＴＣＰ／ＩＰパケット内にＵＩＢＣメッセージを封入し得る。ＴＣＰ／ＩＰパケットは、ソースデバイス２０およびシンクデバイス６０がワイヤレスディスプレイセッションを確立したときに、ソースデバイス２０およびシンクデバイス６０がネゴシエートしたポート識別子を宛先ポートとして指定し得る。
【００８２】
上記で示したように、図４は、本開示と一致する一例にすぎない。他の例において、ＵＩＢＣモジュール７４は、ＨＩＤドライバ７２から直接、ＨＩＤＣ入力報告を受信し得る。ＵＩＢＣモジュール７４は、その後、ＵＩＢＣラッパ（UIBC wrapper）を追加し（たとえば、ＨＩＤＣ入力報告を含むＵＩＢＣメッセージを生成し）、その後、ＵＩＢＣメッセージをＵＩＢＣ送信待ち行列に送り得る。
【００８３】
図５は、ソースデバイス２０によって実行される別の例の動作４００を示す流れ図である。動作４００は、図２の例に示す動作２００のより特定的な事例であり得る。
【００８４】
図５の例において、ＵＩＢＣモジュール３２は、確立されたＵＩＢＣ上でＵＩＢＣメッセージを受信し得る（４０２）。ＵＩＢＣモジュール３２は、その後、ＵＩＢＣメッセージをＵＩＢＣ受信待ち行列に送り得る（４０４）。ＵＩＢＣモジュール３２は、ＵＩＢＣ受信待ち行列内のＵＩＢＣメッセージをパースし得る（４０６）。ＵＩＢＣモジュール３２は、ＵＩＢＣメッセージがＵＩＢＣ受信待ち行列に加えられる順で、ＵＩＢＣ受信待ち行列内のＵＩＢＣメッセージをパースし得る。
【００８５】
ＵＩＢＣメッセージが汎用入力ボディを含む場合、ＵＩＢＣモジュール３２は、下記表２に従ってＵＩＢＣメッセージをパースし得る。
【表２】
0005908592.tif 000007
【００８６】
表２には示していないが、汎用入力メッセージのボディは、アクティブにダウンされているポインタの数（＃）を含み得、ＸおよびＹ座標が後ろに付くポインタＩＤ（Ｎ）は、ダウンされている各ポインタを記述している。
【００８７】
ＵＩＢＣメッセージがＨＩＤＣ入力報告を含む場合、ＵＩＢＣモジュール３２は、ＵＩＢＣメッセージを含む１つまたは複数のＩＰパケットデータデータ（たとえば、ＨＩＤタイプ指示子）に基づいて、事前構成された報告フォーマットを識別し得る。ＵＩＢＣモジュール３２は、その後、ユーザ入力を確定するために、識別された事前構成された報告フォーマットに基づいてＨＩＤＣ入力報告をパースし得る。たとえば、ＵＩＢＣメッセージがＨＩＤＣ入力報告を含む場合、ＵＩＢＣモジュール３２は、下記表３に従ってＨＩＤＣ入力報告をパースし得る。表３は、マウスアクションのＨＩＤＣ入力の一例のフォーマットを示す。いくつかの例において、シンクデバイス６０は、マウスアクションの間の１０ｍｓごとにマウスアクションのＨＩＤＣ入力報告を送り得る。
【表３】
0005908592.tif 000008
【００８８】
Ｂｌｕｅｔｏｏｔｈデバイスは、そのようなＢｌｕｅｔｏｏｔｈデバイスの入力報告が、１０１０  ０００１に等しい値を有する追加のＤＡＴＡヘッダを含み得るという点を除いては、表３の入力報告例と同様の入力報告を有し得る。
【００８９】
ＵＩＢＣメッセージがパースされた後、ＵＩＢＣモジュール３２は、ＵＩＢＣメッセージが汎用入力メッセージを含むかを判定し得る（４０８）。ＵＩＢＣが汎用入力メッセージを含むという判定（４０８の「はい」）に応答して、ＵＩＢＣモジュール３２は、汎用入力メッセージに基づいて入力イベントを投入し得る（４１０）。ＵＩＢＣモジュール３２が入力イベントを投入すると、ソースデバイス２０のＯＳ２４は、入力イベントを受信するために登録しているプロセスに通知し得る。
【００９０】
いくつかの例において、ＵＩＢＣモジュール３２は、入力イベントを生成するために、汎用入力イベント内の値に対して追加の処理を実行し得る。そのような追加の処理をしなければ、入力イベント内に表されている値は、ソフトウェア２０にある適切な値と相関しない場合がある。たとえば、ＵＩＢＣメッセージは、モーション入力を示す汎用入力メッセージを含み得る。この例において、ＵＩＢＣモジュール３２は、汎用入力メッセージ内で送られるＸおよびＹ座標を正規化するために追加の処理を実行し得る。ネゴシエートされているビデオ解像度が、シンクデバイス６０のスクリーンおよびソースデバイス２０のスクリーンのビデオ解像度と一致しない場合があるため、シンクデバイス６０において検出されたモーションイベントのＸおよびＹ座標はネゴシエートされているビデオ解像度と相関しない場合がある。したがって、ＵＩＢＣモジュール３２は、シンクデバイス６０において検出されたモーションイベントのＸおよびＹ座標を、ネゴシエートされているビデオ解像度の適切なＸおよびＹ座標に正規化し得る。ＵＩＢＣモジュール３２は、以下の式を使用してＸおよびＹ座標を正規化し得る。
【数５】
0005908592.tif 000009
【数６】
0005908592.tif 000010
【００９１】
ネゴシエートされている解像度は、ＲＴＳＰトランザクションベースの機能ネゴシエーションの間にパラメータ「ｗｆｄ＿ｖｉｄｅｏ＿ｆｏｒｍａｔｓ」において指定され得る。ＵＩＢＣモジュール３２は、ネゴシエートされている解像度がソースデバイス２０のスクリーンの解像度に一致する場合には、マッピングを実行しない場合がある。
【００９２】
さらに、前のパラグラフの例において、ＵＩＢＣモジュール３２が汎用モーション入力メッセージのＸおよびＹ値を受信すると、ＵＩＢＣモジュール３２は、汎用モーション入力メッセージのＸおよびＹ値を、処理のためにソースデバイス２０のスクリーンの解像度にマッピングする場合があり、またはしない場合もある。ソースデバイス２０がネゴシエートされているビデオの解像度において汎用モーション入力メッセージのＸおよびＹ値を処理する場合、ＵＩＢＣモジュール３２は、何らマッピングを実行する必要がない。しかしながら、ソースデバイス２０がソースデバイス２０のスクリーンの解像度を基準として汎用モーション入力メッセージのＸおよびＹ値を処理する場合、ＵＩＢＣモジュール３２は、以下のマッピングを実行し得る。
【数７】
0005908592.tif 000011
【数８】
0005908592.tif 000012
【００９３】
さらに、汎用入力イベントにおいて指定されるＸおよびＹ座標は、絶対座標（すなわち、スクリーン座標）または相対座標（すなわち、Ｘおよび／またはＹの変化を反映する差分）であり得る。いくつかの例において、汎用入力イベントにおいて指定される座標が絶対座標である場合、ＵＩＢＣモジュール３２は、ソースデバイス２０にとって適切であるように、その座標を相対座標に変換するか、またはその逆を行い得る。
【００９４】
加えて、汎用入力メッセージがキーイベントを示す場合、押下されているキーの順序および数が重要であり得る。異なるオペレーティングシステムはキーに対して異なる値を使用する場合があるため、ＵＩＢＣモジュール７４およびＵＩＢＣモジュール３２は、オペレーティングシステムをアグノスティックなままにするために、汎用ＵＴＦ−８またはＡＳＣＩＩ文字を使用し得る。たとえば、大文字を送るために、シンクデバイス６０は、シフトキーが押下された後、別のキーが押下されるのを待って、適切な大文字を送り得る。いくつかの例において、単一の汎用入力メッセージ内で複数のキーコードが送られる場合がある。
【００９５】
ＵＩＢＣメッセージが汎用入力メッセージを含まない場合（４０８の「いいえ」）、ＵＩＢＣモジュール３２は、ＵＩＢＣメッセージがＨＩＤＣ入力報告を含むかを判定し得る（４１２）。ＵＩＢＣがＨＩＤＣ入力報告を含む場合（４１２の「はい」）、ＵＩＢＣモジュール３２は、ＨＩＤＣ入力報告に基づいて入力イベントを生成および投入し得る（４１４）。本開示の他の箇所に記載のように、シンクデバイス６０はＨＩＤＣ入力報告を処理しないものであり得る。そうではなく、シンクデバイス６０は、ＨＩＤＣ入力報告を生成したＨＩＤドライバからＨＩＤＣ入力報告を通過させ得る。
【００９６】
いくつかの例において、移動はＸおよびＹの相対変化であり、結果としてマウスの移動速度はわずかしか増大しないものであり得るため、ＵＩＢＣモジュール３２は、ＨＩＤＣ入力報告において送られるＸおよびＹ座標を正規化する必要がない場合がある。他の例において、ＵＩＢＣモジュール３２は、ソースデバイス２０のスクリーンの解像度とシンクデバイス６０のスクリーンの解像度との間、ネゴシエートされているスクリーン解像度とシンクデバイス６０のスクリーン解像度との間、または、ネゴシエートされているスクリーン解像度とソースデバイス２０のスクリーン解像度との間の差を反映するためにＸおよびＹ座標を正規化し得る。
【００９７】
正規化に加えて、ＨＩＤＣマウス入力報告において送られるＸおよびＹ座標は相対ＸおよびＹ座標であり得、一方で、モーションイベント座標は絶対（スクリーン座標）または相対（ＸまたはＹの変化を反映する差分）である可能性がある。いくつかのオペレーティングシステムにおいて、タッチスクリーン以外のほとんどの入力は相対であり、そのため、追加の入力デバイスが見つかり得る場合、変更は必要ない。タッチスクリーンデバイスは絶対であり得、そのため、入力デバイスがタッチスクリーンである場合、以前の絶対ＸおよびＹ座標が記録され得、相対変化のみがＨＩＤＣマウス入力報告において送られ得る。
【００９８】
ＵＩＢＣモジュール３２は、様々な方法で入力イベントを投入し得る。たとえば、ＵＩＢＣモジュール３２は、既存のドライバを介して入力イベントを投入し得る。この例において、ＵＩＢＣモジュール３２は、ＨＩＤＣ値（たとえば、汎用入力メッセージまたはＨＩＤＣ入力報告によって記述されるユーザ入力に基づく値）を、ＯＳ２４上のそれぞれのドライバに直接渡し得、それに従って処理され得る。ＯＳ２４は、入力イベントをドライバから入力イベントを受信するために登録されているアプリケーション（たとえば、アプリケーション２２）に搬送し得る。
【００９９】
別の例において、ＵＩＢＣモジュール３２は、ＨＩＤドライバを介して入力イベントを投入し得る。この例において、ＵＩＢＣモジュール３２は、ＨＩＤ値をＯＳ２４上のＨＩＤドライバに直接渡し得る。ＨＩＤドライバは、それに従ってＨＩＤ値を処理し得る。ＯＳ２４に対するＨＩＤドライバの要求も、ＵＩＢＣを介して送られ得る。
【０１００】
別の例において、ＵＩＢＣモジュール３２は、仮想ドライバを初期化し得る。仮想ドライバを初期化することによって、ＵＩＢＣモジュール３２が、多種多様な入力イベントをＯＳ２４に挿入する柔軟性を有することが可能になり得る。この例において、ＵＩＢＣモジュール３２は、入力イベントを仮想ドライバに渡し得る。仮想ドライバはＯＳ２４に密接に一体化され得、１つまたは複数の入力デバイスを表し得るため、仮想ドライバはその後、ＯＳ２４に入力イベントを送り得る。仮想ドライバは、ワイヤレスディスプレイがアクティブであるときに初期化され得るが、インストールする必要があり得る。
【０１０１】
別の例において、ＵＩＢＣモジュール３２は、ＯＳ２４に対するＯＳコマンドを介して入力イベントを投入し得る。この例において、ＵＩＢＣモジュール３２は、ＫｅｙＥｖｅｎｔおよびＭｏｔｉｏｎＥｖｅｎｔをＯＳ２４に直接送り得る。しかしながら、いくつかの例において、１つのアプリケーションが他のアプリケーションにコマンドを送ることは安全でない場合があり、各アプリケーションは基礎となるカーネルのそれ自体のインスタンスを有するため、ＯＳ２４は、ＯＳコマンドを介して入力イベントが注入されるのを阻害し得る。この手法は、仮想ドライバを実装するよりも容易であり得、待ち時間性能がより良好であり得る。以下の疑似コードは、この例に従って入力イベントを注入する一例の方法を示す。
【数９】
0005908592.tif 000013
【０１０２】
ＵＩＢＣメッセージがＨＩＤＣ入力メッセージを含まない場合（４１２の「いいえ」）、ＵＩＢＣモジュール３２は、ＵＩＢＣメッセージが記述子要求に対応するかを判定し得る（４１６）。ＵＩＢＣが記述子要求に対応するという判定（４１６の「はい」）に応答して、ＵＩＢＣモジュール３２は、ソースデバイス２０にあるＨＩＤホストに記述子を送り得る（４１８）。ＨＩＤホストは、ソースデバイス２０にある、特定のＨＩＤからの入力報告を処理するユニットであり得る。図５の例において、ＵＩＢＣメッセージが記述子要求に対応しない場合（４１６の「いいえ」）、ＵＩＢＣモジュール３２は、ＵＩＢＣ受信待ち行列からの別のＵＩＢＣメッセージを処理し得る。
【０１０３】
ＨＩＤの初期化の間、ＨＩＤホストは、ＨＩＤに関する追加の情報を要求し得る。したがって、ソースデバイス２０は、Ｇｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドをシンクデバイス６０に送り得る。シンクデバイス６０がＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドを受信すると、ＵＩＢＣモジュール７４は、ＨＩＤに関連付けられるＨＩＤドライバ（たとえば、ＨＩＤドライバ７２）にＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドを転送し得る。ＨＩＤドライバがＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドを受信すると、ＨＩＤドライバは、ＨＩＤに関する情報をＵＩＢＣモジュール７４に送り得る。ＵＩＢＣモジュール７４は、その後、ＨＩＤに関する情報を含むＵＩＢＣメッセージを生成し、送り得る。ソースデバイス２０が、ＨＩＤＣ入力報告を含む１つまたは複数のＩＰパケット内のデータに基づいて事前構成された報告フォーマットを識別することが可能であるいくつかの例において、ソースデバイス２０がそのような追加の情報を要求することは不要であり得る。
【０１０４】
初期化されると、シンクデバイス６０は、報告の記述子タイプを有するソースデバイス２０からＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドを受信し得る。ＨＩＤドライバは、下記表４および表５に示すような報告記述子を、入力報告のＨＩＤ値として送り得る。初期報告記述子の後、シンクデバイス６０は、それらがＨＩＤドライバから（または最初はＭｏｔｉｏｎＥｖｅｎｔを介して）受信されるのと同じ頻度でＨＩＤＣ入力ボディに示されるような入力報告を送信し続け得る。
【表４】
0005908592.tif 000014
【表５】
0005908592.tif 000015
【０１０５】
場合によっては、ソースデバイス２０は「Ｒｅｐｏｒｔ」以外の記述子タイプを有する追加のＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドを送り得る。シンクデバイス６０が「ＨＩＤ」の記述子タイプを有するＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒコマンドを受信する場合（ｗＶａｌｕｅ  ＝  ２１ｈ）、ＨＩＤドライバは下記表６に示すようなＨＩＤ記述子を送り得る。
【表６】
0005908592.tif 000016
【０１０６】
シンクデバイス６０がＧｅｔ＿Ｄｅｓｃｒｉｐｔｏｒ（構成）コマンドを受信する場合、ＨＩＤドライバは構成記述子、インターフェース記述子、ＨＩＤ記述子、および端点記述子を、別個のメッセージとしてこの順で送り得る。これらの記述子の例を下記表７〜表１２に記載する。
【表７】
0005908592.tif 000017
【表８】
0005908592.tif 000018
【表９】
0005908592.tif 000019
【表１０】
0005908592.tif 000020
【０１０７】
標準的なＨＩＤが使用されない場合、これらの要求が認識され得、ＵＩＢＣモジュール７４が上記のデータ値を記憶し送り得る。
【表１１】
0005908592.tif 000021
【表１２】
0005908592.tif 000022
【０１０８】
図６は、ＵＩＢＣメッセージ４５０の一例のフォーマットを示す概念図である。説明を容易にするために、以下の図６の記述は、シンクデバイス６０がＵＩＢＣメッセージ４５０を送り、ソースデバイス２０がＵＩＢＣメッセージ４５０を受信すると仮定する。
【０１０９】
図６の例において、ＵＩＢＣメッセージ４５０は、バージョンフィールドと、タイムスタンプフラグ（「Ｔ」）と、確保済みフィールドと、入力カテゴリフィールドと、タイムスタンプフィールドと、長さフィールドと、入力ボディフィールドとを含み得る。確保済みフィールドのサイズは８Ｂｉｔに等しいものであり得、ソースデバイス２０（図１）によって無視され得る。
【０１１０】
バージョンフィールドは、ＵＩＢＣメッセージ４５０のフォーマットバージョンを示し得る。バージョンフィールドのサイズは３ビットに等しいものであり得る。いくつかの例において、バージョンフィールドの予測される値は、１に等しいものであり得る。
【０１１１】
入力カテゴリフィールドは、ＵＩＢＣメッセージ４５０の入力ボディフィールドが汎用入力ボディまたはＨＩＤＣ入力ボディを含むかを示し得る。入力カテゴリフィールドのサイズは４ビットに等しいものであり得る。いくつかの例において、入力カテゴリフィールドの値が０に等しい場合、ＵＩＢＣメッセージ４５０の入力ボディフィールドは汎用入力ボディを含み得る（すなわち、汎用入力メッセージ）。そのような例において、入力カテゴリフィールドの値が１に等しい場合、ＵＩＢＣメッセージ４５０の入力ボディフィールドはＨＩＤＣ入力ボディを含み得る（すなわち、ＨＩＤＣ入力報告）。
【０１１２】
長さフィールドは、ＵＩＢＣメッセージ４５０のバイト（すなわち、オクテット）長を示し得、ＵＩＢＣメッセージ４５０の入力ボディフィールドを含む。長さフィールドのサイズは１６ビットに等しいものであり得る。ソースデバイス２０は、ＵＩＢＣメッセージ４５０が適切な長さを有することを検証するために長さフィールドを使用し得る。
【０１１３】
タイムスタンプフラグは、ソースデバイス２０がＵＩＢＣメッセージ４５０のタイムスタンプフィールドを読み出すべきであるかを示し得る。タイムスタンプフィールドのサイズは１ビットに等しいものであり得る。いくつかの例において、タイムスタンプフラグが１に等しい場合、タイムスタンプフラグは、ソースデバイス２０がＵＩＢＣメッセージ４５０のタイムスタンプフィールドを読み出すべきであることを示し得る。そのような例において、タイムスタンプフラグが０に等しい場合、タイムスタンプフラグは、ソースデバイス２０がＵＩＢＣメッセージ４５０のタイムスタンプフィールドを読み出すべきでないことを示し得る。いくつかの例において、タイムスタンプフラグの予測される値は１である。
【０１１４】
タイムスタンプフィールドは、シンクデバイス６０がＵＩＢＣメッセージ４５０に関連付けられるユーザ入力を受信した時刻を示し得る。タイムスタンプフィールドのサイズは１６ビットに等しいものであり得る。ソースデバイス２０は、ソースデバイス２０がＵＩＢＣメッセージ４５０を受信するときに後で処理するためにタイムスタンプを保存し得る。
【０１１５】
ソースデバイス２０からシンクデバイス６０へのワイヤレスチャネル５０が混雑しているとき、シンクデバイス６０において受信されるユーザ入力は、シンクデバイス６０によって表示される期限切れ表示フレームに与えられている場合がある。そのようなユーザ入力は、ソースデバイス２０において受信されるときに処理されない場合がある。他方、シンクデバイス６０からソースデバイス２０へのＵＩＢＣが混雑しているとき、シンクデバイス６０に与えられるユーザ入力は、ソースデバイス２０において受信されるのが遅すぎる場合がある。そのようなユーザ入力も、ソースデバイス２０によって処理されない場合がある。
【０１１６】
タイムスタンプフィールドは、上記の同期化問題についてソースデバイス２０に通知し得る。タイムスタンプフィールドは、ユーザ入力が受信されるときに表示されているメディアデータに関連付けられるタイムスタンプを指定し得る。上記の同期化問題を解決するには、そのようなタイムスタンプ情報を送ることで十分であり得る。
【０１１７】
図７は、汎用入力メッセージのためにＵＩＢＣをネゴシエートするためのソースデバイス２０とシンクデバイス６０との間の一例の対話を示す通信図である。図７の例では、ソースデバイス２０が、シンクデバイス６０にメッセージ５００を送る。メッセージ５００は、シンクデバイス６０のＵＩＢＣ機能パラメータを取得するための要求であり得る。シンクデバイス６０は、メッセージ５０２をソースデバイス２０に送り返すことによってメッセージ５００に応答する。メッセージ５０２は、シンクデバイス６０の、汎用入力メッセージおよびＨＩＤＣ入力報告を与える機能を示す。図７の例において、メッセージ５０２は、シンクデバイス６０がマウスおよびシングルタッチタッチスクリーンの汎用入力メッセージを与えることができることを示している（すなわち、ｇｅｎｅｒｉｃ＿ｃａｐ＿ｌｉｓｔ  ＝  Ｍｏｕｓｅ，  ＳｉｎｇｌｅＴｏｕｃｈ）。メッセージ５０２は、シンクデバイス６０が何らＨＩＤＣ入力報告を与えないことも示している（すなわち、ｈｉｄｃ＿ｃａｐ＿ｌｉｓｔ  ＝  ｎｏｎｅ）。ソースデバイス２０からの汎用入力メッセージ機能を求める要求に応答してシンクデバイス６０が、示し得る汎用入力の例は、タッチ／マウスダウン、タッチ／マウスアップ、タッチ／マウス移動、キーダウン、キーアップ、ズーム、垂直スクロール、水平スクロール、および回転を含み得る。
【０１１８】
ソースデバイス２０がメッセージ５０２を受信した後、ソースデバイス２０は、シンクデバイス６０にメッセージ５０４を送り得る。メッセージ５０４は、シンクデバイス６０に、１つまたは複数のＵＩＢＣパラメータをセットするよう命令し得る。たとえば、図７の例において、メッセージ５０４は、シンクデバイス６０に、ポート番号を１０００にセットするよう命令する。シンクデバイス６０がメッセージ５０４を受信した後、シンクデバイス６０はメッセージ５０４が示すとおりにパラメータをセットし、メッセージ５０６をソースデバイス２０に送り返し得る。メッセージ５０６は、シンクデバイス６０がメッセージ５０４に示されるとおりに１つまたは複数のＵＩＢＣパラメータをセットしたことをソースデバイス２０に確認する。
【０１１９】
その後、ソースデバイス２０は、メッセージ５０８をシンクデバイス６０に送り得る。メッセージ５０８は、シンクデバイス６０に、ＵＩＢＣがイネーブルされたことを示すようにＵＩＢＣパラメータをセットする（たとえば、ｗｆｄ＿ｕｉｂｃ＿ｓｅｔｔｉｎｇ）よう命令し得る。シンクデバイス６０は、ＵＩＢＣがイネーブルされたことを示すようにＵＩＢＣパラメータをセットし、シンクデバイス６０がメッセージ５０８において命令されるとおりにＵＩＢＣをセットしたことを確認するためのメッセージ５１０を送ることによって、メッセージ５０８に応答し得る。
【０１２０】
図８は、ヒューマン入力デバイスコマンド（ＨＩＤＣ）入力報告のためにＵＩＢＣをネゴシエートするためのソースデバイス２０とシンクデバイス６０との間の一例の対話を示す通信図である。図８の例では、ソースデバイス２０が、シンクデバイス６０にメッセージ５５０を送る。メッセージ５５０は、シンクデバイス６０のＵＩＢＣ機能パラメータ（ｗｆｄ＿ｕｉｂｃ＿ｃａｐａｂｉｌｉｔｙ）を取得するための要求であり得る。シンクデバイス６０は、メッセージ５５２をソースデバイス２０に送り返すことによってメッセージ５５０に応答する。メッセージ５５２は、シンクデバイス６０の、汎用入力メッセージおよびＨＩＤＣ入力報告を与える機能を示す。図８の例において、メッセージ５５２は、シンクデバイス６０がＢｌｕｅｔｏｏｔｈマウスおよび赤外線遠隔制御装置のＨＩＤＣ入力メッセージを与えることができることを示している（すなわち、ｈｉｄｃ＿ｃａｐ＿ｌｉｓｔ  ＝  Ｍｏｕｓｅ／ＢＴ，  ＲｅｍｏｔｅＣｏｎｔｒｏｌ／Ｉｎｆｒａｒｅｄ）。メッセージ５５２は、シンクデバイス６０が何ら汎用入力メッセージを与えないことも示している（すなわち、ｇｅｎｅｒｉｃ＿ｃａｐ＿ｌｉｓｔ  ＝  ｎｏｎｅ）。
【０１２１】
ソースデバイス２０がメッセージ５５２を受信した後、ソースデバイス２０は、シンクデバイス６０にメッセージ５５４を送り得る。メッセージ５５４は、シンクデバイス６０に、１つまたは複数のＵＩＢＣパラメータをセットするよう命令し得る。たとえば、図８の例において、メッセージ５５４は、シンクデバイス６０に、ポート番号を１０００にセットするよう命令する。シンクデバイス６０がメッセージ５５４を受信した後、シンクデバイス６０はメッセージ５５４が示すとおりにパラメータをセットし、メッセージ５５６をソースデバイス２０に送り返し得る。メッセージ５５６は、シンクデバイス６０がメッセージ５５４に示されるとおりに１つまたは複数のＵＩＢＣパラメータをセットしたことをソースデバイス２０に確認する。
【０１２２】
その後、ソースデバイス２０は、メッセージ５５８をシンクデバイス６０に送り得る。メッセージ５５８は、シンクデバイス６０に、ＵＩＢＣがイネーブルされたことを示すようにＵＩＢＣパラメータをセットする（たとえば、ｗｆｄ＿ｕｉｂｃ＿ｓｅｔｔｉｎｇ）よう命令し得る。シンクデバイス６０は、ＵＩＢＣがイネーブルされたことを示すようにＵＩＢＣパラメータをセットし、シンクデバイス６０がメッセージ５５８において命令されるとおりにＵＩＢＣをセットしたことを確認するためのメッセージ５６０を送ることによって、メッセージ５５８に応答し得る。ＰＴＳＰを介して適切な汎用またはＨＩＤＣ機能がネゴシエートされると、ＵＩＢＣ機能がイネーブルされ、シンクデバイス６０はＵＩＢＣを介してユーザ入力を部分要素として送り得る。図８の例では、ＵＩＢＣはその時点で確立されている。
【０１２３】
１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装する場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶するか、あるいはコンピュータ可読媒体を介して送信することができる。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータデータ記憶媒体または通信媒体を含み得る。いくつかの例において、コンピュータ可読媒体は、非一時的コンピュータ可読媒体を備え得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。
【０１２４】
限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリのような、非一時的媒体、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１２５】
コードは、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび／もしくはソフトウェアモジュール内に与えられ得、または複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０１２６】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび／またはファームウェアとともに、上で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされてもよく、または相互動作可能なハードウェアユニットの集合によって与えられてもよい。
【０１２７】
本発明の様々な実施形態について説明した。これらおよび他の実施形態は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  ソースデバイスにおいて、複数の事前構成された報告フォーマット、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのヒューマン入力デバイス（ＨＩＤ）に関連付けられている、を記憶することと、
前記ソースデバイスにおいて、シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記１つまたは複数のＩＰパケットはＨＩＤコマンド（ＨＩＤＣ）入力報告を備える、を受信することと、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別することと、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースすることと、
前記ユーザ入力に応答してメディアデータを生成することと、および
前記メディアデータを前記ソースデバイスから前記シンクデバイスに送ることとを備える、方法。
［Ｃ２］  前記事前構成された報告フォーマットはスキーマを含む、Ｃ１に記載の方法。
［Ｃ３］  前記１つまたは複数のＩＰパケットを受信することは、ワイヤレス通信チャネルを介して前記１つまたは複数のＩＰパケットを受信することを備える、Ｃ１に記載の方法。
［Ｃ４］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ１に記載の方法。
［Ｃ５］  前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、Ｃ１に記載の方法。
［Ｃ６］  前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、Ｃ５に記載の方法。
［Ｃ７］  前記データは前記シンクデバイスのＩＰアドレスを備え、
前記事前構成された報告フォーマットのうちの１つを識別することは、前記シンクデバイスの前記ＩＰアドレスに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別することを備える、Ｃ１に記載の方法。
［Ｃ８］  前記データは前記ＩＰアドレスおよびソースポートを備え、
前記事前構成された報告フォーマットのうちの１つを識別することは、前記シンクデバイスの前記ＩＰアドレスおよび前記ソースポートに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別することを備える、Ｃ７に記載の方法。
［Ｃ９］  前記シンクデバイスからの前記１つまたは複数のＩＰパケットの受信に応答して、前記１つまたは複数のＩＰパケットが汎用入力メッセージまたは前記ＨＩＤＣ入力報告を備えるかを判定することをさらに備え、ここにおいて、前記汎用入力メッセージは、あるＨＩＤクラスに属するＨＩＤに対して汎用的である、Ｃ１に記載の方法。
［Ｃ１０］  前記複数の事前構成された報告フォーマットを記憶することは、ユーザ入力バックチャネル（ＵＩＢＣ）を確立する前に前記複数の事前構成された報告フォーマットを記憶することを備え、
前記１つまたは複数のＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤＣ入力報告を備える、Ｃ１に記載の方法。
［Ｃ１１］  前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクであり、前記ソースデバイスはワイヤレスディスプレイ（ＷＤ）ソースである、Ｃ１に記載の方法。
［Ｃ１２］  ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信することと、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成することと、
ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記ＩＰパケットは、前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備える、を送ることと、
前記ソースデバイスからメディアデータ、前記メディアデータは前記ユーザ入力に基づく、を受信することとを備える、方法。
［Ｃ１３］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ１２に記載の方法。
［Ｃ１４］  前記ＨＩＤタイプ指示子は、前記報告フォーマットを識別する数値識別子を備える、Ｃ１２に記載の方法。
［Ｃ１５］  前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、Ｃ１４に記載の方法。
［Ｃ１６］  前記１つまたは複数のＩＰパケットを送ることは、ワイヤレス通信チャネルを介して前記１つまたは複数のＩＰパケットを送ることを備える、Ｃ１２に記載の方法。
［Ｃ１７］  １つまたは複数のプロセッサを備えるコンピューティングデバイスであって、
複数の事前構成された報告フォーマット、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのヒューマン入力デバイス（ＨＩＤ）に関連付けられている、を記憶することと、
シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記１つまたは複数のＩＰパケットはＨＩＤコマンド（ＨＩＤＣ）入力報告を備える、を受信することと、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別することと、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースすることと、
前記ユーザ入力に応答してメディアデータを生成することと、
前記メディアデータを前記コンピューティングデバイスから前記シンクデバイスに送ることと
を行うように構成されている前記コンピューティングデバイス。
［Ｃ１８］  前記事前構成された報告フォーマットはスキーマを含む、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ１９］  前記コンピューティングデバイスは、ワイヤレス通信チャネルを介して前記１つまたは複数のＩＰパケットを受信する、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２０］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２１］  前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２２］  前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、Ｃ２１に記載のコンピューティングデバイス。
［Ｃ２３］  前記データは前記シンクデバイスのＩＰアドレスを備え、
前記１つまたは複数のプロセッサは、前記シンクデバイスの前記ＩＰアドレスに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別するように構成されている、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２４］  前記データは前記ＩＰアドレスおよびソースポートを備え、
前記１つまたは複数のプロセッサは、前記シンクデバイスの前記ＩＰアドレスおよび前記ソースポートに少なくとも部分的に基づいて、前記事前構成された報告フォーマットのうちの１つを識別するように構成されている、Ｃ２３に記載のコンピューティングデバイス。
［Ｃ２５］  前記１つまたは複数のプロセッサは、前記シンクデバイスからの前記１つまたは複数のＩＰパケットの受信に応答して、前記１つまたは複数のＩＰパケットが汎用入力メッセージまたは前記ＨＩＤＣ入力報告を備えるかを判定するように構成されており、ここにおいて、前記汎用入力メッセージは、あるＨＩＤクラスに属するＨＩＤに対して汎用的である、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２６］  前記１つまたは複数のプロセッサは、ユーザ入力バックチャネル（ＵＩＢＣ）を確立する前に前記複数の事前構成された報告フォーマットを記憶するように構成されており、
前記１つまたは複数のＩＰパケットは、前記ＵＩＢＣを介して送信されるＵＩＢＣメッセージを備え、前記ＵＩＢＣメッセージは前記ＨＩＤＣ入力報告を備える、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２７］  前記コンピューティングデバイスはワイヤレスディスプレイ（ＷＤ）ソースデバイスであり、前記シンクデバイスはワイヤレスディスプレイ（ＷＤ）シンクデバイスである、Ｃ１７に記載のコンピューティングデバイス。
［Ｃ２８］  ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信することと、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成することと、
ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケットを送ることであって、前記ＩＰパケットは、前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備える、送ることと、
前記ソースデバイスからメディアデータ、前記メディアデータは前記ユーザ入力に基づく、を受信することと
を行うように構成されている１つまたは複数のプロセッサを備えるコンピューティングデバイス。
［Ｃ２９］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ２８に記載のコンピューティングデバイス。
［Ｃ３０］  前記ＨＩＤタイプ指示子は、前記報告フォーマットを識別する数値識別子を備える、Ｃ２８に記載のコンピューティングデバイス。
［Ｃ３１］  前記１つまたは複数のＩＰパケットは、前記数値識別子を指定するフィールドと、前記ＨＩＤＣ入力報告を含むフィールドとを含むメッセージを備える、Ｃ３０に記載のコンピューティングデバイス。
［Ｃ３２］  前記１つまたは複数のＩＰパケットを送ることは、ワイヤレス通信チャネルを介して前記１つまたは複数のＩＰパケットを送ることを備える、Ｃ２８に記載のコンピューティングデバイス。
［Ｃ３３］  コンピューティングデバイスであって、
複数の事前構成された報告フォーマット、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのヒューマン入力デバイス（ＨＩＤ）に関連付けられる、を記憶するための手段と、
シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記１つまたは複数のＩＰパケットはＨＩＤコマンド（ＨＩＤＣ）入力報告を備える、を受信するための手段と、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別するための手段と、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースするための手段と、
前記ユーザ入力に応答してメディアデータを生成するための手段と、
前記メディアデータを前記コンピューティングデバイスから前記シンクデバイスに送るための手段とを備える、前記コンピューティングデバイス。
［Ｃ３４］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ３３に記載のコンピューティングデバイス。
［Ｃ３５］  前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、Ｃ３３に記載のコンピューティングデバイス。
［Ｃ３６］  ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信するための手段と、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成するための手段と、
ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記ＩＰパケットは、前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備える、を送るための手段と、
前記ソースデバイスからメディアデータ、前記メディアデータは前記ユーザ入力に基づく、を受信するための手段と
を備える、コンピューティングデバイス。
［Ｃ３７］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ３６に記載のコンピューティングデバイス。
［Ｃ３８］  前記ＨＩＤタイプ指示子は、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、Ｃ３６に記載のコンピューティングデバイス。
［Ｃ３９］  命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記命令は、実行されると、コンピューティングデバイスの１つまたは複数のプロセッサを、
前記コンピューティングデバイスにおいて、複数の事前構成された報告フォーマット、ここにおいて、前記事前構成された報告フォーマットの各々は異なるタイプのヒューマン入力デバイス（ＨＩＤ）に関連付けられている、を記憶することと、
シンクデバイスから１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記１つまたは複数のＩＰパケットはＨＩＤコマンド（ＨＩＤＣ）入力報告を備える、を受信することと、
前記１つまたは複数のＩＰパケット内のデータに基づいて、前記事前構成された報告フォーマットのうちの１つを識別することと、
ユーザ入力を確定するために、前記識別された事前構成された報告フォーマットに基づいて前記ＨＩＤＣ入力報告をパースすることと、
前記ユーザ入力に応答してメディアデータを生成することと、
前記メディアデータを前記ソースデバイスから前記シンクデバイスに送ることと
を行うように構成する、前記コンピュータプログラム製品。
［Ｃ４０］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ３９に記載のコンピュータプログラム製品。
［Ｃ４１］  前記データは、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、Ｃ３９に記載のコンピュータプログラム製品。
［Ｃ４２］  命令を記憶する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記命令は、実行されると、コンピューティングデバイスの１つまたは複数のプロセッサを、
ヒューマン入力デバイス（ＨＩＤ）からユーザ入力の指示を受信することと、
前記ユーザ入力に基づいて、報告フォーマットに準拠するＨＩＤコマンド（ＨＩＤＣ）入力報告を生成することと、
ソースデバイスに１つまたは複数のインターネットプロトコル（ＩＰ）パケット、前記ＩＰパケットは、前記ＨＩＤＣ入力報告と、前記報告フォーマットを識別するＨＩＤタイプ指示子とを備える、を送ることと、
前記ソースデバイスからメディアデータ、前記メディアデータは前記ユーザ入力に基づく、を受信することと
を行うように構成する、前記コンピュータプログラム製品。
［Ｃ４３］  前記ＨＩＤＣ入力報告は、ユニバーサルシリアルバス（ＵＳＢ）規格またはＢｌｕｅｔｏｏｔｈ規格に準拠する、Ｃ４２に記載のコンピュータプログラム製品。
［Ｃ４４］  前記ＨＩＤタイプ指示子は、前記事前構成された報告フォーマットのうちの１つを識別する数値識別子を備える、Ｃ４２に記載のコンピュータプログラム製品。
【図１】
0005908592.tif 000023
【図２】
0005908592.tif 000024
【図３】
0005908592.tif 000025
【図４】
0005908592.tif 000026
【図５】
0005908592.tif 000027
【図６】
0005908592.tif 000028
【図７】
0005908592.tif 000029
【図８】
0005908592.tif 000030