(57)【特許請求の範囲】
【請求項１】
ソースデバイスであって、
通信インターフェースと、
実行可能コードを記憶するメモリと、
前記通信インターフェースと前記メモリとに通信可能に結合された少なくとも１つのプロセッサと
を備え、
ここにおいて、前記少なくとも１つのプロセッサおよび前記メモリは、
複数のグラフィックス領域フレームをキャプチャすることと、前記グラフィックス領域フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備え、ここにおいて、前記複数のグラフィックス領域フレームは、レンダリングされたグラフィックスを備えない、
シンクデバイスにおいて、非知覚可能なスクリーン間レイテンシでのスクリーンミラーリングを可能にするために、前記フレームの複数の特性に基づいて、圧縮技法を、（ａ）フレームを前記フレームよりも小さい複数のステージに分割し、前記複数のステージを順次送信するように構成されたスケーラブルテクスチャストリーミング、（ｂ）互いとは異なるデータを含んでいる２つの連続するフレームの部分を識別するために差分コード化ロケーションを使用するフレームベース予測、（ｃ）フレームドロッピング、および（ｄ）データ圧縮、から選択するための適応圧縮パイプラインを使用することによって、前記複数のグラフィックス領域フレームを圧縮することと、
前記圧縮されたフレームを、前記通信インターフェースを介して前記シンクデバイスに送信することと、
非知覚可能なスクリーン間レイテンシで、前記シンクデバイスにおいて表示される、前記圧縮されたフレームの対応するレンダリングされた画像と時間同期して、前記グラフィックス領域フレームのレンダリングされた画像を表示することと、
を行うように構成された、
ソースデバイス。
【請求項２】
前記フレームドロッピングについて、前記少なくとも１つのプロセッサおよびメモリは、
前記複数のグラフィックス領域フレームのうちの第１のフレームが、前記複数のグラフィックス領域フレームの先頭にある所定の数の第２のフレームに続くこと、
前記第１のフレームがテクスチャを備えないこと、
前記第１のフレームと前記第１のフレームの前のフレームとが同じコマンドトークンを備えること、
前記第１のフレームの所定の数の前のフレームのうちの少なくとも１つのフレームがドロップされないこと、または
前記ソースデバイスと前記シンクデバイスとの間の通信遅延がしきい値持続時間よりも大きいこと、
のうちの少なくとも１つを備える所定の条件に関して前記第１のフレームをドロップするようにさらに構成された、請求項１に記載のソースデバイス。
【請求項３】
前記スケーラブルテクスチャストリーミングについて、前記少なくとも１つのプロセッサおよびメモリは、
前記複数のグラフィックス領域フレームのうちの第１のフレームを複数のステージに分割することと、ここにおいて、前記第１のフレームがテクスチャを備える、
前記複数のステージを備える前記圧縮されたフレームを前記シンクデバイスに順次送信することと、ここにおいて、前記第１のフレームが、前記ステージの連続補間によって前記シンクデバイスにおいてレンダリングされるように構成された、
を行うようにさらに構成された、請求項１に記載のソースデバイス。
【請求項４】
前記フレームベース予測について、前記少なくとも１つのプロセッサおよびメモリは、
前記複数のグラフィックス領域フレームのうちの２つの連続するフレームが、長さが等しい場合、
前記２つの連続するフレームの１つまたは複数の同じロケーションを決定することと、ここで、前記同じロケーションが異なるデータを有する、
前記異なるデータに対応する前記ロケーションを符号化することと、
前記符号化されたロケーションと前記異なるデータとを備える前記圧縮されたフレームを前記シンクデバイスに送信することと
を行うようにさらに構成された、請求項１に記載のソースデバイス。
【請求項５】
前記複数のグラフィックス領域フレームのうちの第１のフレームがテクスチャを備える場合、前記少なくとも１つのプロセッサおよびメモリが、
前記テクスチャのアルファチャネルから赤緑および青（ＲＧＢ）画像を分離することと、
ロッシー圧縮を利用して前記ＲＧＢ画像を圧縮することと、
前記アルファチャネルのコンテンツに基づいて、ロッシー圧縮によって前記アルファチャネルを選択的に圧縮することと
を行うようにさらに構成された、請求項１に記載のソースデバイス。
【請求項６】
前記グラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、請求項１に記載のソースデバイス。
【請求項７】
前記特性は、フレーム番号、フレーム長、隣接フレーム間のデータの差、テクスチャの存在、フレーム中に含まれているコマンドトークンの数、およびプレゼンテーションタイムスタンプを備える、請求項１に記載のソースデバイス。
【請求項８】
シンクデバイスであって、
通信インターフェースと、
実行可能コードを備えるメモリと、
前記通信インターフェースと前記メモリとに通信可能に結合された少なくとも１つのプロセッサと
を備え、
ここにおいて、前記少なくとも１つのプロセッサおよび前記メモリは、
前記通信インターフェースを介してソースデバイスから、レンダリングされたグラフィックスを備えない複数のグラフィックス領域フレームを受信することと、
ここにおいて、前記グラフィックス領域フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備え、前記複数のグラフィックス領域フレームが、圧縮技法を、（ａ）フレームを前記フレームよりも小さい複数のステージに分割し、前記複数のステージを順次送信するように構成されたスケーラブルテクスチャストリーミング、（ｂ）互いとは異なるデータを含んでいる２つの連続するフレームの部分を識別するために差分コード化ロケーションを使用するフレームベース予測、（ｃ）フレームドロッピング、および（ｄ）データ圧縮、から選択するための適応圧縮パイプラインを使用することによって圧縮される、
前記複数のフレームの各々のタイムスタンプに基づいて、前記複数のグラフィックス領域フレームのうちの１つまたは複数を表示することを控えることによって、非知覚可能なスクリーン間レイテンシで、前記ソースデバイスにおいて表示される対応するレンダリングされた画像と時間同期して、前記複数のグラフィックス領域フレームのうちの少なくともいくつかのもののレンダリングされた画像を表示することと、
を行うように構成された、
シンクデバイス。
【請求項９】
前記少なくとも１つのプロセッサおよび前記メモリは、前記複数のグラフィックス領域フレームのうちの第１のフレームが前記第１のフレームの前記タイムスタンプの後に受信された場合、前記第１のフレームを表示することを控えるようにさらに構成された、請求項８に記載のシンクデバイス。
【請求項１０】
前記少なくとも１つのプロセッサおよび前記メモリが、前記第１のフレームをレンダリングするようにさらに構成された、請求項９に記載のシンクデバイス。
【請求項１１】
前記少なくとも１つのプロセッサおよび前記メモリは、前記複数のグラフィックス領域フレームのうちのあるフレームが前記フレームのタイムスタンプの後に前記シンクデバイスに到着した場合、前記フレームを表示することを控えるようにさらに構成された、請求項８に記載のシンクデバイス。
【請求項１２】
前記１つまたは複数のグラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、請求項８に記載のシンクデバイス。
【請求項１３】
ソースデバイスにおいて動作可能なスクリーンミラーリングの方法であって、
スクリーンコンテンツの複数のグラフィックス領域フレームをキャプチャすることと、前記フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備え、ここにおいて、前記複数のグラフィックス領域フレームは、レンダリングされたグラフィックスを備えない、
シンクデバイスにおいて、非知覚可能なスクリーン間レイテンシでのスクリーンミラーリングを可能にするために、前記フレームの複数の特性に基づいて、圧縮技法を、（ａ）フレームを前記フレームよりも小さい複数のステージに分割し、前記複数のステージを順次送信するように構成されたスケーラブルテクスチャストリーミング、（ｂ）互いとは異なるデータを含んでいる２つの連続するフレームの部分を識別するために差分コード化ロケーションを使用するフレームベース予測、（ｃ）フレームドロッピング、および（ｄ）データ圧縮、から選択するための適応圧縮パイプラインを使用することによって、前記複数のグラフィックス領域フレームを圧縮することと、
前記圧縮されたフレームを、前記ソースデバイスの通信インターフェースを介して前記シンクデバイスに送信することと、
非知覚可能なスクリーン間レイテンシで、前記シンクデバイスにおいて表示される、前記圧縮されたフレームの対応するレンダリングされた画像と時間同期して、前記フレームのレンダリングされた画像を表示することと、
を備える、方法。
【請求項１４】
前記フレームドロッピングについて、前記圧縮することは、
前記複数のグラフィックス領域フレームのうちの第１のフレームが、前記複数のフレームの先頭にある所定の数の第２のフレームに続くこと、
前記第１のフレームがテクスチャを備えないこと、
前記第１のフレームと前記第１のフレームの前のフレームとが同じコマンドトークンを備えること、
前記第１のフレームの所定の数の前のフレームのうちの少なくとも１つのフレームがドロップされないこと、または
前記ソースデバイスと前記シンクデバイスとの間の通信遅延がしきい値持続時間よりも大きいこと、
のうちの少なくとも１つを備える所定の条件に関して前記第１のフレームをドロップすることを備える、請求項１３に記載の方法。
【請求項１５】
前記スケーラブルテクスチャストリーミングについて、前記圧縮することは、
前記複数のグラフィックス領域フレームのうちの第１のフレームを複数のステージに分割することと、ここにおいて、前記第１のフレームがテクスチャを備える、
前記複数のステージを備える前記圧縮されたフレームを前記シンクデバイスに順次送信することと、ここにおいて、前記第１のフレームが、前記ステージの連続補間によって前記シンクデバイスにおいてレンダリングされる、
を備える、請求項１３に記載の方法。
【請求項１６】
前記フレームベース予測について、前記圧縮することは、
前記複数のグラフィックス領域フレームのうちの２つの連続するフレームが、長さが等しい場合、
前記２つの連続するフレームの１つまたは複数の同じロケーションを決定することと、ここで、前記同じロケーションが異なるデータを有する、
前記異なるデータに対応する前記ロケーションを符号化することと、
前記符号化されたロケーションと前記異なるデータとを備える前記圧縮されたフレームを前記シンクデバイスに送信することと
を備える、請求項１３に記載の方法。
【請求項１７】
前記圧縮することは、
前記複数のグラフィックス領域フレームのうちの第１のフレームがテクスチャを備える場合、
前記テクスチャのアルファチャネルから赤緑および青（ＲＧＢ）画像を分離することと、
ロッシー圧縮を利用して前記ＲＧＢ画像を圧縮することと、
前記アルファチャネルのコンテンツに基づいて、ロッシー圧縮によって前記アルファチャネルを選択的に圧縮することと
を備える、請求項１３に記載の方法。
【請求項１８】
前記グラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、請求項１３に記載の方法。
【請求項１９】
前記特性は、フレーム番号、フレーム長、隣接フレーム間のデータの差、テクスチャの存在、フレーム中に含まれているコマンドトークンの数、およびプレゼンテーションタイムスタンプを備える、請求項１３に記載の方法。
【請求項２０】
シンクデバイスにおいて動作可能なスクリーンミラーリングの方法であって、
前記シンクデバイスの通信インターフェースを介してソースデバイスから、レンダリングされたグラフィックスを備えない複数のグラフィックス領域フレームを受信することと、
ここにおいて、前記グラフィックス領域フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備え、前記複数のグラフィックス領域フレームが、圧縮技法を、（ａ）フレームを前記フレームよりも小さい複数のステージに分割し、前記複数のステージを順次送信するように構成されたスケーラブルテクスチャストリーミング、（ｂ）互いとは異なるデータを含んでいる２つの連続するフレームの部分を識別するために差分コード化ロケーションを使用するフレームベース予測、（ｃ）フレームドロッピング、および（ｄ）データ圧縮、から選択するための適応圧縮パイプラインを使用することによって前記ソースデバイスにおいて圧縮される、
前記複数のグラフィックス領域フレームの各々のタイムスタンプに基づいて、前記複数のグラフィックス領域フレームのうちの１つまたは複数を表示することを控えることによって、非知覚可能なスクリーン間レイテンシで、前記ソースデバイスにおいて表示される対応するレンダリングされた画像と時間同期して、前記複数のグラフィックス領域フレームのうちの少なくともいくつかのもののレンダリングされた画像を表示することと、
を備える、方法。
【請求項２１】
前記複数のグラフィックス領域フレームのうちの第１のフレームが前記第１のフレームの前記タイムスタンプの後に受信された場合、前記第１のフレームを表示することを控えることをさらに備える、請求項２０に記載の方法。
【請求項２２】
前記第１のフレームをレンダリングすることをさらに備える、請求項２１に記載の方法。
【請求項２３】
前記複数のグラフィックス領域フレームのうちのあるフレームが前記フレームのタイムスタンプの後に前記シンクデバイスに到着した場合、前記フレームを表示することを控えることをさらに備える、請求項２０に記載の方法。
【請求項２４】
前記１つまたは複数のグラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、２０１５年５月２８日に米国特許商標庁に出願された仮出願第６２／１６７，７６５号、および２０１５年１２月３日に米国特許商標庁に出願された非仮出願第１４／９５８，３３６号の優先権および利益を主張する。
【０００２】
[0002]以下で説明される技術は、一般に、ビデオまたはスクリーンコンテンツデータを低レイテンシでソースデバイスからシンク（sink）デバイスにストリーミングすることに関する。
【背景技術】
【０００３】
[0003]現代の電子デバイスでは、ユーザが、ビデオ、オーディオ、および／またはグラフィックスコンテンツなど、コンテンツを、ある電子デバイスから別の電子デバイス上でワイヤレス表示することを望むことが時々生じる。多くの事例では、コンテンツをワイヤレスに伝達する能力も望まれる。概して、そのようなワイヤレスディスプレイシステムでは、第１のワイヤレスデバイス「ソースデバイス」が、ワイヤレスリンクを介して、コンテンツが再生または表示され得る第２のワイヤレスデバイス「シンクデバイス」にコンテンツを与え得る。コンテンツは、ディスプレイまたはスクリーンミラーリング（screen mirroring）としても知られる、ソースデバイスのローカルディスプレイとシンクデバイスのディスプレイの両方において同時に再生され得る。
【０００４】
[0004]２つのデバイス間のワイヤレス接続を形成するワイヤレス機能を利用することによって、ソースデバイスは、ソースデバイスに最初に記憶されるかまたはストリーミングされるコンテンツを表示する、シンクデバイス（たとえば、デジタルテレビジョン、プロジェクタ、オーディオ／ビデオ受信機、高解像度ディスプレイなど）のより良いディスプレイおよび／またはオーディオ機能を利用することができる。そのような技術に対する需要が増加し続けるにつれて、研究および開発がユーザエクスペリエンスを進化および向上させ続ける。
【発明の概要】
【０００５】
[0005]以下は、本開示の１つまたは複数の態様の基本的理解を与えるために、そのような態様の簡略化された概要を提示する。この概要は、本開示のすべての企図された特徴の包括的な概観ではなく、本開示のすべての態様の主要または重要な要素を識別するものでも、本開示のいずれかまたはすべての態様の範囲を定めるものでもない。その唯一の目的は、後で提示されるより詳細な説明の導入として、本開示の１つまたは複数の態様のいくつかの概念を簡略化された形で提示することである。
【０００６】
[0006]本開示の態様は、ソースデバイスとシンクデバイスとの間の低レイテンシスクリーンミラーリングを達成するために適応圧縮パイプライン（adaptive compression pipeline）を利用するグラフィックス領域送信方法に関する。
【０００７】
[0007]本開示の一態様では、ソースデバイスは、通信インターフェースと、実行可能コードを記憶するメモリと、通信インターフェースとメモリとに通信可能に結合された少なくとも１つのプロセッサとを含む。少なくとも１つのプロセッサおよびメモリは、複数のグラフィックス領域フレームをキャプチャするように構成され、グラフィックス領域フレームの各々は、１つまたは複数のグラフィックスコマンドトークン（command token）を含む。少なくとも１つのプロセッサおよびメモリは、複数のグラフィックス領域フレームの１つまたは複数の特性に基づいて、フレームを圧縮するために、適応圧縮パイプラインを利用するように構成される。適応圧縮パイプラインは、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング（frame dropping）、またはデータ圧縮のうちの少なくとも１つを実行するように構成される。少なくとも１つのプロセッサおよびメモリは、圧縮されたフレームを、通信インターフェースを介してシンクデバイスに送信することと、シンクデバイスにおいて表示される、圧縮されたフレームの対応するレンダリングされた画像と時間同期して、グラフィックス領域フレームのレンダリングされた画像を表示することとを行うように構成される。
【０００８】
[0008]本開示の一態様では、シンクデバイスは、通信インターフェースと、実行可能コードを含むメモリと、通信インターフェースとメモリとに通信可能に結合された少なくとも１つのプロセッサとを含む。少なくとも１つのプロセッサおよびメモリは、通信インターフェースを介してソースデバイスから複数のグラフィックス領域フレームを受信するように構成される。グラフィックス領域フレームの各々は、１つまたは複数のグラフィックスコマンドトークンを含み、複数のグラフィックス領域フレームは、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを含む適応圧縮パイプラインによって圧縮される。少なくとも１つのプロセッサおよびメモリは、複数のフレームの各々のタイムスタンプに基づいて、複数のグラフィックス領域フレームのうちの少なくともいくつかを選択的に表示するように構成される。
【０００９】
[0009]本開示の態様は、ソースデバイスにおいて動作可能なスクリーンミラーリングの方法を提供する。例示的なソースデバイスは、スクリーンコンテンツの複数のグラフィックス領域フレームをキャプチャし、フレームの各々は、１つまたは複数のグラフィックスコマンドトークンを含む。ソースデバイスは、複数のグラフィックス領域フレームの１つまたは複数の特性に基づいて、フレームを圧縮するために、適応圧縮パイプラインを利用する。適応圧縮パイプラインは、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを実行するように構成される。ソースデバイスは、圧縮されたフレームを、ソースデバイスの通信インターフェースを介してシンクデバイスに送信し、シンクデバイスにおいて表示される、圧縮されたフレームの対応するレンダリングされた画像と時間同期して、フレームのレンダリングされた画像を表示する。
【００１０】
[0010]本開示の態様は、シンクデバイスにおいて動作可能なスクリーンミラーリングの方法を提供する。例示的なシンクデバイスは、シンクデバイスの通信インターフェースを介してソースデバイスから複数のグラフィックス領域フレームを受信する。グラフィックス領域フレームの各々は、１つまたは複数のグラフィックスコマンドトークンを含み、複数のグラフィックス領域フレームは、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを含む適応圧縮パイプラインによってソースデバイスにおいて圧縮される。シンクデバイスは、複数のグラフィックス領域フレームの各々のタイムスタンプに基づいて、複数のグラフィックス領域フレームのうちの少なくともいくつかを選択的に表示する。
【００１１】
[0011]本発明のこれらおよび他の態様は、以下の発明を実施するための形態を検討すればより十分に理解されよう。本発明の特定の例示的な実施形態の以下の説明を添付の図と併せて検討すれば、当業者には、本発明の他の態様、特徴、および実施形態が明らかになろう。本発明の特徴が、以下のいくつかの実施形態および図に関連して説明され得るが、本発明のすべての実施形態は、本明細書で説明される有利な特徴のうちの１つまたは複数を含むことができる。言い換えれば、１つまたは複数の実施形態が、いくつかの有利な特徴を有するものとして説明され得るが、そのような特徴のうちの１つまたは複数は、本明細書で説明される本発明の様々な実施形態に従っても使用され得る。同様に、例示的な実施形態が、以下ではデバイス、システム、または方法の実施形態として説明され得るが、そのような例示的な実施形態は、様々なデバイス、システム、および方法で実装され得ることを理解されたい。
【図面の簡単な説明】
【００１２】
【図１】[0012]本開示の１つまたは複数の態様による、ソースデバイスが、グラフィックスコマンドを含む圧縮されたグラフィックス領域フレームを、通信チャネルを介してシンクデバイスに送信するように構成された、例示的なスクリーンミラーリングシステムのブロック図。
【図２】[0013]本開示の一態様による、コマンドフレームの一例を示す図。
【図３】本開示の一態様による、コマンドフレームの一例を示す図。
【図４】[0014]本開示の一態様による、適用例のためのスクリーン共有またはミラーリングを開始するときの経時的フレームサイズを示すグラフ。
【図５】[0015]本開示の態様による、適応圧縮パイプラインを利用するスクリーンミラーリング方法を示すフローチャート。
【図６】[0016]本開示の一態様による、適応圧縮パイプラインを示すフローチャート。
【図７】[0017]本開示の態様による、ビデオをストリーミングするように構成されたソースデバイスの選ばれた構成要素を示すブロック図。
【図８】[0018]本開示の一態様による、ソースデバイス内の例示的なフレームデータフローを示すブロック図。
【図９】[0019]本開示の一態様による、スクリーンミラーリングを実行するように構成されたシンクデバイスの選ばれた構成要素を示すブロック図。
【図１０】[0020]本開示のいくつかの態様による、グラフィックスパイプライン圧縮方法を示すフローチャート。
【図１１】[0021]本開示の一態様による、ソースデバイスにおけるフレームドロッピング方法を示すフローチャート。
【図１２】[0022]本開示の一態様による、フレームのスケーラブルテクスチャストリーミングプロセスを示す図。
【図１３】[0023]本開示の一態様による、フレームベース予測において利用される、同じ長さをもつ２つのフレームとフレームのフレーム構造とを示す図。
【図１４】[0024]本開示の一態様による、シンク側フレームドロッピング方法を示すフローチャート。
【発明を実施するための形態】
【００１３】
[0025]添付の図面に関して以下に記載される説明は、様々な構成を説明するものであり、本明細書で説明される概念および特徴が実施され得る構成のみを表すものではない。以下の説明は、様々な概念の完全な理解を与えるための具体的な詳細を含む。ただし、これらの概念はこれらの具体的な詳細なしに実施され得ることが当業者には明らかであろう。いくつかの事例では、説明される概念および特徴を不明瞭にしないように、よく知られている回路、構造、技法および構成要素がブロック図の形式で示される。
【００１４】
[0026]本開示全体にわたって提示される様々な概念および特徴は、多種多様なワイヤレス通信システム、ネットワークアーキテクチャ、および通信規格にわたって実装され得る。次に図１を参照すると、本開示の１つまたは複数の技法による、例示的なワイヤレスディスプレイシステム１００の図が示されている。ワイヤレスディスプレイシステム１００は、ワイヤレス通信チャネル１０６を介したソースデバイス１０２からシンクデバイス１０４への、グラフィックスコマンドを含んでいるグラフィックス領域フレームのワイヤレス送信を可能にするために、適応圧縮パイプラインを利用する。適応圧縮パイプラインは、送信のレイテンシを低減するように構成される。本開示の様々な態様が、ワイヤレス通信チャネルを利用するワイヤレスディスプレイシステムを用いて示されているが、概念は、ワイヤレス通信チャネルに限定されず、非ワイヤレス通信チャネルを用いて実装され得る。
【００１５】
[0027]ソースデバイス１０２は、通信チャネル１０６を介してシンクデバイス１０４にスクリーンコンテンツデータ１０８（たとえば、ビデオおよびオーディオ／ビジュアルメディア）を送信するように構成された電子デバイスであり得る。ソースデバイス１０２の例としては、限定はしないが、スマートフォンまたは他のモバイルハンドセット、タブレットコンピュータ、ラップトップコンピュータ、電子リーダー、デジタルビデオレコーダ（ＤＶＲ）、デスクトップコンピュータ、ウェアラブルコンピューティングデバイス（たとえば、スマートウォッチ、スマートグラスなど）、および／あるいは少なくとも部分的にワイヤレス通信を通して通信する他の通信／コンピューティングデバイスなどのデバイスがある。
【００１６】
[0028]シンクデバイス１０４は、ソースデバイス１０２から通信チャネル１０６を介して伝達または送信されたスクリーンコンテンツデータ１０８（たとえば、ストリーミングビデオまたはオーディオ／ビジュアルメディア）を受信するように適応された電子デバイスであり得る。シンクデバイス１０４の例としては、限定はしないが、スマートフォンまたは他のモバイルハンドセット、タブレットコンピュータ、ラップトップコンピュータ、電子リーダー、デジタルビデオレコーダ（ＤＶＲ）、デスクトップコンピュータ、ウェアラブルコンピューティングデバイス（たとえば、スマートウォッチ、スマートグラスなど）、テレビジョン、モニタ、ならびに／あるいは視覚ディスプレイをもつおよびワイヤレス通信機能をもつ他の通信／コンピューティングデバイスなどのデバイスがある。
【００１７】
[0029]ワイヤレス通信チャネル１０６は、ソースデバイス１０２とシンクデバイス１０４との間の通信信号を伝搬することが可能な１つまたは複数のチャネルを含み得る。いくつかの例では、通信チャネル１０６はワイヤレス通信チャネルであり得る。たとえば、ワイヤレス通信チャネル１０６は、２．４ＧＨｚ帯域、５ＧＨｚ帯域、６０ＧＨｚ帯域、または他の認可／無認可周波数帯域など、１つまたは複数の周波数帯域における無線周波数通信において実装され得る。いくつかの例では、通信チャネル１０６は、（Ｗｉｒｅｌｅｓｓ  ＵＳＢプロモーターグループによって促進されるような）ワイヤレスユニバーサルシリアルバス（ＷＵＳＢ）、（Ｗｉ−Ｆｉ  Ａｌｌｉａｎｃｅ（登録商標）によって促進されるような）Ｗｉ−Ｆｉ（登録商標）、（ワイヤレスギガビットアライアンスによって促進されるような）ＷｉＧｉｇ、および／または米国電気電子技術者協会（ＩＥＥＥ）８０２．１１規格のセット（たとえば、８０２．１１、８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇ、８０２．１１ｎ、８０２．１１ａｃ、８０２．１１ａｄ、８０２．１１ｍｃなど）など、規格、プロトコル、または技術の１つまたは複数のセット、ならびに１つまたは複数の他の規格、プロトコル、または技術に準拠し得る。２．４ＧＨｚ帯域、５ＧＨｚ帯域、および６０ＧＨｚ帯域など、使用される周波数帯域は、本開示では、それらが、Ｗｉ−Ｆｉ、ＷｉＧｉｇ、任意の１つまたは複数のＩＥＥＥ８０２．１１プロトコル、あるいは他の適用可能な規格またはプロトコルに照らして理解されるように定義され得る。
【００１８】
[0030]図１によって示されるように、ソースデバイス１０２は、伝達されるべきスクリーンコンテンツデータ１０８を有し得る。ソースデバイス１０２は、スクリーンコンテンツデータ１０８（たとえば、ビデオ）をワイヤレス通信チャネル１０６を介してシンクデバイス１０４に伝達または送信することができ、シンクデバイス１０４は、対応するスクリーンコンテンツデータ１０９を表示し得る。ソースデバイス１０２とシンクデバイス１０４とは、スクリーンコンテンツデータ１０８、１０９が時間同期様式で両方のデバイス上に表示され（たとえば、同時に表示され）得るように、時間基準１１０に時間同期され得る。
【００１９】
[0031]本開示のいくつかの態様では、スクリーンコンテンツデータ１０８を、分解されたグラフィックス領域フレームとしてシンクデバイス１０４にストリーミングするために、「グラフィックス領域」送信方法がソースデバイス１０２によって使用され得る。グラフィックス領域送信は、グラフィックスコマンドトークン（たとえば、ＯｐｅｎＧＬコマンド）および／またはテクスチャ要素の形態のスクリーンコンテンツデータ１０８（たとえば、ビデオ）をソースデバイスにおいて（たとえば、ソースデバイス１０２のＧＰＵの入力において）キャプチャすることと、通信チャネル１０６を介してシンクデバイス１０４にコマンドトークンとテクスチャ要素とを伝達することとによって達成され得る。
【００２０】
[0032]グラフィックス領域送信規格の一例は、グラフィックス（たとえば、２Ｄおよび３Ｄグラフィックス、またはビデオ）をレンダリングするためのＡＰＩ（アプリケーションプログラミングインターフェース）の仕様である、ＯｐｅｎＧＬ（オープングラフィックスライブラリ）である。ＯｐｅｎＧＬ実装は、ＯｐｅｎＧＬアーキテクチャ検討委員会（Architectural Review Board）によって維持される仕様によって定義されたＡＰＩを実装するライブラリを提供する。コマンドトークンは、１つのＯｐｅｎＧＬコマンドに対応するバイトまたはデータのグループである。シンクデバイス１０４（たとえば、シンクデバイス１０４におけるＧＰＵ）は、コマンドトークンとテクスチャ要素とを表示可能なフレームにレンダリングし、レンダリングされたフレームをシンクデバイス１０４のディスプレイ上に出力し得る。テクスチャ要素は、レンダリングされた画像中のオブジェクトの対応する表面上にマッピングされ得る。テクスチャ要素は、照明効果、色、テクスチャ、パターンなど、様々な詳細をオブジェクトに追加することができる。この「グラフィックス領域」送信方法は、本開示では、グラフィックスオフローディング方法と呼ばれることがある。
【００２１】
[0033]本明細書では、グラフィックコマンドトークン（たとえば、ＯｐｅｎＧＬコマンド）を含んでいるフレームは、グラフィックス領域フレームと呼ばれ、レンダリングされたグラフィックスまたは画像を含んでいる表示可能なフレームまたはレンダリングされたフレームとは異なる。レンダリングされた画像またはフレームは、表示されるべき画像の各ピクセルのデータを含んでいる。レンダリングされたグラフィックスの非限定的な例は、ラスタグラフィックスおよびビットマップグラフィックスである。本明細書では、レンダリングされたフレームは、ディスプレイ、モニタ、または他のディスプレイ媒体を介して閲覧可能な複数のピクセルを表すデータ構造である。しかしながら、グラフィックス領域送信方法では、シンクデバイス１０４は、グラフィックコマンドトークンとテクスチャ要素とを受信し、受信されたグラフィックスコマンドトークンに基づいて、ファイナライズされた画像（たとえば、表示可能なフレーム）をレンダリングするために、一連の計算および／または数学的近似を実行する。このレンダリングプロセス中に、表示される画像中の各ピクセルの色値を決定するために、画像全体の空間、テクスチャ、および／または照明情報が組み合わせられる。
【００２２】
[0034]グラフィックス領域送信方法は、いくつかの態様では、レンダリングされた画像送信とは異なる。たとえば、シンクデバイス１０４が、ソースデバイス１０２よりも大きい解像度をもつディスプレイを採用する場合、シンクデバイス１０４は、同様の品質でより高い解像度においてグラフィックス領域フレームをレンダリングするために、グラフィックスコマンドトークン（たとえば、ＯｐｅｎＧＬコマンドのトークン）とテクスチャ要素とを採用することができる。別の例としては、ソースデバイス１０２が、いくつかの異なるフレームをレンダリングするためにシンクデバイス１０４によって採用されるべきテクスチャ要素を単一回（a single time）送ることを可能にする、複数のフレーム中で使用され得るテクスチャ要素を送る能力がある。本開示のいくつかの態様では、グラフィックス領域送信方法は、ソースデバイス１０２において適応圧縮パイプライン（たとえば、グラフィックス圧縮パイプライン）を利用し得る。適応圧縮パイプラインは、グラフィックスコマンド（グラフィックス領域フレーム）を受信および処理し、将来の処理のためにコマンドを記憶するかまたは直ちにコマンドを実行し得る。適応圧縮パイプラインの例が、以下で詳細に説明される。
【００２３】
[0035]図２を参照すると、本開示の少なくとも１つの例による、グラフィックス領域送信方法を使用して、スクリーンコンテンツデータ１０８（たとえば、ビデオまたはオーディオ／ビジュアルメディア）をシンクデバイス１０４にストリーミングするための、ソースデバイス１０２によって出力され得るグラフィックス領域フレーム２００の一例を示すブロック図が示されている。図示のように、グラフィックス領域フレーム２００は、フレーム開始フィールド２０２と、フレームデータフィールド２０４と、フレーム終了フィールド２０６とを含むことができる。１つの特定の例では、グラフィックス領域フレーム２００はＯｐｅｎＧＬコマンドフレームであり得る。
【００２４】
[0036]フレーム開始フィールド２０２は、開始フラグ２０８と、フレーム番号フィールド２１２とを含み得る。フレーム開始フィールド２０２は、（たとえば、データストリームまたは送信内の）グラフィックス領域フレーム２００の開始を示し得る。フレーム番号フィールド２１２は、グラフィックス領域フレーム２００のシーケンス番号を示し得る。フレーム番号フィールド２１２の値は、後続のフレームについて増分し得る。たとえば、フレーム番号フィールド２１２の値は、現在フレームについてｆであり、次のフレームについてｆ＋１であり得る（たとえば、ｆは非負整数である）。
【００２５】
[0037]フレームデータフィールド２０４は、１つまたは複数のグラフィックスコマンドトークン２１４Ａ〜２１４Ｎ（総称して、「トークン２１４」）を含み得る。トークン２１４の各々は、グラフィックスコマンドの特定のトークンに対応し得る。トークン２１４のうちのトークンの一例のさらなる詳細が、図３を参照しながら以下で与えられる。
【００２６】
[0038]フレーム終了フィールド２０６は、終了フラグ２１６と、フレーム番号フィールド２２０とを含み得る。終了フラグ２１６は、（たとえば、データストリーム内の）フレーム終了フィールド２０６の開始を示し得る。フレーム番号フィールド２２０は、コマンドフレーム２００のシーケンス番号を示し得る。一例では、フレーム番号フィールド２１２および２２０は、受信機が、いずれかのまたは両方のフィールドを見ることによってフレーム番号を決定し得るように、同じフレーム番号を有し得る。
【００２７】
[0039]図３は、本開示の１つまたは複数の態様による、グラフィックスコマンドトークンの一例のさらなる詳細を示す図である。図３に示されているように、トークン２１４は、トークンヘッダフィールド３０２と、トークンデータフィールド３０４とを含み得る。トークンヘッダフィールド３０２は、トークン２１４の１つまたは複数の特性を示し得る。いくつかの例では、トークンヘッダフィールド３０２は、１２バイトまたは他の好適な長さなど、固定の長さを有し得る。図３に示されているように、トークンヘッダフィールド３０２は、トークンタイプフィールド３０６と、トークンデータサイズフィールド３０８とを含み得る。トークンタイプフィールド３０６は、グラフィックスコマンドのセットの間のどのグラフィックスコマンドがトークン２１４に対応するかを示し得る。すなわち、トークンタイプフィールド３０６は、トークン２１４がどのグラフィックスコマンドのトークンであるかを示し得る。トークンデータサイズフィールド３０８は、（たとえば、バイト単位での）トークンデータフィールド３０４のサイズを示し得る。
【００２８】
[0040]トークンデータフィールド３０４は、トークン２１４のための１つまたは複数の引数またはデータを示し得る。たとえば、トークンタイプフィールド３０６によって示されたグラフィックスコマンドタイプが２つの引数を取る場合、トークンデータフィールド３０４は、２つの引数のためのデータを含み得る。トークンデータフィールド３０４はまた、対応するフレームが表示される特定の時間を示すタイムスタンプ（たとえば、プレゼンテーションタイムスタンプ）を含み得る。
【００２９】
[0041]上述のように、グラフィックス領域送信は、ソースデバイス１０２が、グラフィックスコマンドトークン（たとえば、ＯｐｅｎＧＬコマンドトークン）とテクスチャ要素とを送信することを可能にし、ここで、同じテクスチャ要素が、１つまたは複数のフレーム中で使用され得る。そのようなグラフィックス領域送信は、ソースデバイス１０２が、いくつかの異なるフレームをレンダリングするためにシンクデバイス１０４によって採用されるべきテクスチャ要素を単一回送信することを可能にすることができる。いくつかの事例では、テクスチャ要素は、グラフィックスコマンドトークンと比較して、サイズが比較的大きくなり得る。テクスチャ要素の比較的大きいサイズは、ソースデバイス１０２によって送信されるデータのピークを生じることがある。
【００３０】
[0042]たとえば、図４は、ある適用例のためのスクリーン共有またはミラーリングを実行するときの経時的グラフィックス領域フレームサイズを示すグラフである。たとえば、適用例は、ビデオゲーム、ビデオストリーミング、スライドショーなどであり得る。図示のように、たとえば、ゲームプレイまたはオーディオ／ビデオストリーミング中にいくつかのデータピークがある。たとえば、最初に、ゲームが開始されるときに送信されるデータの約１９メガバイト（ＭＢ）のピーク４０２がある。これは、ゲームのバックグラウンド、およびゲームにおいてフレームをレンダリングするために使用される異なるオブジェクトなど、いくつかのテクスチャ要素を含み得る。これらのテクスチャ要素は、一般に、シンクデバイス１０４がゲームを表示し始めることができる前に、シンクデバイス１０４において利用可能である必要がある。他のデータピーク４０４および４０６も、ゲームの他の時間中に生じることがある。比較的より大きいデータピークのほかに、（たとえば、グラフィックスコマンドトークンをもつ）他のグラフィックス領域フレームは、サイズが比較的小さくなり得る。いくつかの事例では、データピークにおける比較的大きいフレームが、送信の遅延を生じ得る。たとえば、利用可能帯域幅またはビットレートが２００メガビット毎秒（Ｍｂｐｓ）であると仮定すると、ソースデバイス１０２によって送信されたデータとシンクデバイス１０４によって受信されたデータとの間に有意な遅延があることになる。
【００３１】
[0043]ソースデバイス１０２において送信されたデータとシンクデバイス１０４に到着するデータと間の上記で説明された遅延は、ソースデバイスにおいて表示されるビデオまたは画像とシンクデバイスのそれとの間のレイテンシを引き起こし得る。そのような遅延は、本明細書では、スクリーンミラーリングレイテンシと呼ばれる。望ましくなく長いスクリーンミラーリングレイテンシは、たとえば、高度対話型適用例およびビデオゲーミングなど、いくつかの適用例に悪影響を及ぼすことがある。
【００３２】
[0044]本開示の態様によれば、ソースデバイスは、０または小さい（たとえば、非知覚可能な（non-perceptible)））スクリーン間レイテンシをもつスクリーンミラーリングを実行することができる適応圧縮パイプラインを利用してシンクデバイスへのグラフィックスレンダリングをオフロードするように構成される。たとえば、小さいまたは非知覚可能なスクリーン間レイテンシは５ミリ秒以下であり得る。スクリーン間レイテンシ（またはディスプレイ間レイテンシ）は、ソースデバイス上に表示されるフレームとシンクデバイス上に表示される対応するフレームと間のレイテンシまたは時間遅延を指す。適応圧縮パイプラインは、スクリーン間レイテンシを低減するために、様々な圧縮ツールまたは技法を選択的に利用するように構成され得る。これらの圧縮ツールの例としては、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、ならびにロスレスおよび／またはロッシー（lossy）圧縮技法がある。これらの圧縮ツールおよび技法の適用例が、以下でより詳細に説明される。
【００３３】
[0045]図５および図６は、本開示の態様による、適応圧縮パイプラインを利用するスクリーンミラーリング方法５００を示すフローチャートである。スクリーンミラーリング方法５００は、図１、図７、および／または図８のいずれかに示されているソースデバイス、あるいは任意の好適な装置によって実行され得る。ブロック５０２において、ソースデバイスは、スクリーンコンテンツデータまたはビデオデータの複数のグラフィックス領域フレームをキャプチャする。たとえば、ソースデバイスにおいて動作する１つまたは複数のアプリケーション（たとえば、図６のアプリケーションモジュール６２０）は、１つまたは複数のグラフィカルコマンドトークン（たとえば、ＯｐｅｎＧＬコマンドトークン）とテクスチャとを生成し得る。これらのグラフィカルコマンドトークンは、さらなる処理のために、１つまたは複数のグラフィックス領域フレームに記憶および／またはグループ化され得る。ここで、各キャプチャされたフレームは、１つまたは複数のグラフィックスコマンドトークンおよび／またはテクスチャを含む。たとえば、スクリーンコンテンツデータは、図１のビデオデータ１０８または任意の好適なストリーミングメディアデータであり得る。ソースデバイスは、ソースデバイスのＧＰＵ（たとえば、図７および図８のＧＰＵ６０８）の入力において、フレームの対応するグラフィックスコマンドトークンおよび／またはテクスチャを保持し、送信し、伝達し、および／または記憶することによって、グラフィックス領域フレームをキャプチャするために、データストリーミングモジュール６１０を利用し得る。キャプチャされたグラフィックス領域フレームは、さらなる処理のために、メモリストレージ（たとえば、図７の記憶媒体６０６）において記憶され得る。
【００３４】
[0046]ブロック５０４において、ソースデバイスは、複数のグラフィックス領域フレームの１つまたは複数の特性に基づいて、フレームを処理または圧縮するために、適応圧縮パイプラインを利用する。たとえば、ソースデバイスは、図６に示されている適応圧縮パイプラインを実装し得る。適応圧縮パイプラインは、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、および／またはロッシー／ロスレスデータ圧縮のうちの少なくとも１つによって、フレームを処理または圧縮し得る。図６を参照すると、ブロック５１０において、ソースデバイスは、データストリーミング論理６２４（図８参照）を利用して、フレームの特性を決定する。特性の非限定的な例としては、フレーム番号、フレーム長、隣接フレーム間のデータの差および／または類似度、テクスチャの存在、フレーム中に含まれているコマンドトークンの数、ならびにプレゼンテーションタイムスタンプがある。フレームの特性に基づいて、ソースデバイスは、スケーラブルテクスチャストリーミング（ブロック５１４）、フレームベース予測（ブロック５１６）、フレームドロッピング（ブロック５１８）、またはロッシー／ロスレスデータ圧縮（ブロック５２０）を利用して、フレームを圧縮し得る。これらの圧縮ツールおよび技法の各々は、フレームのサイズを圧縮または低減するために、ソースデバイスによって利用され得、以下でさらに詳細に説明される。
【００３５】
[0047]再び図５を参照すると、ブロック５０６において、ソースデバイスは、圧縮されたグラフィックス領域フレームを、通信インターフェースを介してシンクデバイスに送信する。シンクデバイスは、図１のシンクデバイス１０４または任意の好適な装置であり得る。一例では、ソースデバイスは、圧縮されたフレームを送信するために、送信機６１４（図７および図８）を利用し得る。圧縮されたフレームは、ワイヤレス通信チャネルを通した送信のために、送信機６１４のバッファにロードされ、好適な信号に処理（たとえば、デジタルアナログ変換、変調および周波数変換）され得る。
【００３６】
[0048]ブロック５０８において、ソースデバイスは、シンクデバイスにおいて表示される、圧縮されたフレームの対応するレンダリングされた画像と時間同期して、グラフィックス領域フレームのレンダリングされた画像を表示する。レンダリングされた画像は、表示された画像間のタイムラグが所定のしきい値内（たとえば、５ミリ秒以下）にあるとき、時間同期されると考えられる。１つの特定の例では、レンダリングされた画像は同時に表示され得る。たとえば、ソースデバイスは、ＧＰＵ６０８（図８）を利用してグラフィックス領域フレームをレンダリングし得、レンダリングされた画像をディスプレイ６２２（図８）上に表示する。ソースデバイスとシンクデバイスとは、両方のデバイスが、たとえば、フレームのプレゼンテーションタイムスタンプに従って、望まれる画像を実質的に同じ時間に表示することができるように、共通時間基準に時間的に同期され得る。
【００３７】
[0049]図５および図６を参照しながら説明された方法５００に従って、説明される適応圧縮パイプラインは、グラフィックス領域フレーム（すなわち、コマンドトークンを含むフレーム）が、非圧縮フレームに対してより少ない時間で、通信チャネルを通して圧縮および送信されることを可能にする。したがって、スクリーンミラーリングレイテンシが低減され得る。グラフィックスパイプラインの低減されたレイテンシは、デバイス間の知覚可能な遅延なしに、ソースデバイスとシンクデバイスの両方上のグラフィックス領域フレームの同期された表示を可能にする。
【００３８】
[0050]図７は、本開示の一態様による、ソースデバイス６００の選ばれた構成要素を示すブロック図である。ソースデバイス６００は、通信インターフェース６０４と記憶媒体６０６とに動作可能に結合された、またはそれらと電気通信するように配置された処理回路６０２を含む。処理回路６０２は、データを取得し、処理しおよび／または送り、データアクセスおよび記憶を制御し、コマンドを発行し、他の所望の動作を制御するように構成された回路を含む。処理回路６０２は、適切な媒体によって与えられた所望のプログラミングを実装するように適応された回路、ならびに／または、たとえば、図５、図６、および図８〜図１３において本開示で説明される１つまたは複数の機能およびプロセスを実行するように適応された回路を含み得る。
【００３９】
[0051]たとえば、処理回路６０２は、１つまたは複数のプロセッサ、１つまたは複数のコントローラ、ならびに／あるいは実行可能ソフトウェア、プログラミング、コードを実行するように、および／または特定の機能を実行するように構成された他の構造として実装され得る。処理回路６０２の例としては、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理構成要素、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明される機能を実行するように設計されたそれらの任意の組合せがあり得る。汎用プロセッサは、マイクロプロセッサ、ならびに任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械を含み得る。処理回路６０２はまた、ＤＳＰとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、ＡＳＩＣとマイクロプロセッサ、あるいは任意の他の数の様々な構成など、コンピューティング構成要素の組合せとして実装され得る。処理回路６０２のこれらの例は説明のためのものであり、本開示の範囲内の他の好適な構成も企図される。
【００４０】
[0052]処理回路６０２は、記憶媒体６０６に記憶され得るプログラミングまたはコードの実行を含む、データを処理するために適応された回路を含むことができる。本明細書で使用される「プログラミング」という用語は、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、限定はしないが、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行スレッド、プロシージャ、関数などを含むと広く解釈されたい。
【００４１】
[0053]いくつかの事例では、処理回路６０２は、グラフィックス処理ユニット（ＧＰＵ）６０８および／あるいはビデオデータストリーミング回路またはモジュール６１０を含み得る。ＧＰＵ６０８は、概して、ユーザインターフェース、スクリーン、モニタ、または出力デバイスによる表示のために、１つまたは複数のグラフィックスコマンドトークン１つおよび／またはテクスチャ要素に基づいて、グラフィックスデータを処理し、グラフィックスまたはスクリーンコンテンツデータのフレームをレンダリングするように適応された回路および／またはプログラミング（たとえば、記憶媒体６０６に記憶されたプログラミング）を含む。
【００４２】
[0054]データストリーミング回路／モジュール６１０は、グラフィックスコマンドトークンおよびテクスチャ要素の形態のビデオデータまたはスクリーンコンテンツデータをシンクデバイスにストリーミングするように適応された回路および／またはプログラミング（たとえば、記憶媒体６０６に記憶されたプログラミング）を含み得る。いくつかの例では、データストリーミング回路／モジュール６１０は、１つまたは複数のグラフィックスコマンドトークンおよび／またはテクスチャを、図２のグラフィックス領域フレーム２００など、コマンドフレーム中にカプセル化し得る。いくつかの例では、データストリーミング回路／モジュール６１０は、ＧＰＵ６０８または他のグラフィック処理回路の入力において、グラフィックスコマンドトークンおよび／またはテクスチャ要素をキャプチャし得る。いくつかの例では、データストリーミング回路／モジュール６１０は、本明細書において以下でより詳細に説明されるように、グラフィックスコマンドフレームの特性に基づいて、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、および／またはロッシー／ロスレスデータ圧縮のうちの１つまたは複数を利用してフレームを圧縮するように構成された適応圧縮パイプラインを実装し得る。本明細書で使用される、ソースデバイス６００に関連する回路および／またはプログラミングならびに実行されるプロセスへの言及は、一般に論理（たとえば、論理ゲートおよび／またはデータ構造論理）と呼ばれることがある。
【００４３】
[0055]通信インターフェース６０４は、ソースデバイス６００のワイヤレス通信を可能にするように構成される。たとえば、通信インターフェース６０４は、１つまたは複数のシンクデバイスに関して双方向に情報の通信を可能にするように適応された回路および／またはプログラミングを含み得る。通信インターフェース６０４は、１つまたは複数のアンテナ（図示せず）に結合され得、少なくとも１つの受信機６１２（たとえば、１つまたは複数の受信機チェーン）および／または少なくとも１つの送信機６１４（たとえば、１つまたは複数の送信機チェーン）を含むワイヤレストランシーバ回路を含む。本開示のいくつかの態様では、通信インターフェース６０４は、ワイヤード通信（たとえば、ユニバーサルシリアルバス（ＵＳＢ）、イーサネット（登録商標）、ＰＣＩ  Ｅｘｐｒｅｓｓ、Ｔｈｕｎｄｅｒｂｏｌｔなど）のための好適な送信機および受信機を含み得る。
【００４４】
[0056]記憶媒体６０６は、プロセッサ実行可能コードまたは命令（たとえば、ソフトウェア、ファームウェア）などのプログラミング、電子データ、データベース、あるいは他のデジタル情報を記憶するための１つまたは複数のプロセッサ可読デバイスを表し得る。記憶媒体６０６はまた、圧縮パイプライン動作６１８など、プログラミングまたはコードを実行するときに処理回路６０２によって操作または処理されるデータ（たとえば、スクリーンコンテンツデータ、スケーラブルストリーミングフラグ、フレーム）を記憶するために使用され得る。記憶媒体６０６は、ポータブルまたは固定ストレージデバイス、光ストレージデバイス、ならびにプログラミングまたはコードを記憶し、含有し、および／または搬送することが可能な様々な他の媒体を含む、汎用または専用プロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、記憶媒体６０６は、磁気ストレージデバイス（たとえば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ）、光記憶媒体（たとえば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ））、スマートカード、フラッシュメモリデバイス（たとえば、カード、スティック、キードライブ）、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ（登録商標））、レジスタ、リムーバブルディスク、および／またはプログラミングを記憶するための他の媒体などのプロセッサ可読非一時的記憶媒体、ならびにそれらの任意の組合せを含み得る。
【００４５】
[0057]記憶媒体６０６は、処理回路６０２のうちの少なくとも一部が記憶媒体６０６から情報を読み取り、記憶媒体６０６に情報を書き込むことができるように処理回路６０２に結合され得る。すなわち、記憶媒体６０６は、記憶媒体６０６が処理回路６０２によって少なくともアクセス可能であるように処理回路６０２に結合され得、記憶媒体６０６が処理回路６０２と一体である例、および／または記憶媒体６０６が処理回路６０２とは別個である（たとえば、ソースデバイス６００に常駐する、ソースデバイス６００の外部にある、複数のエンティティにわたって分散される）例を含む。
【００４６】
[0058]記憶媒体６０６は、その上に記憶されたプログラミングまたはコードを含み得る。そのようなプログラミングは、処理回路６０２によって実行されたとき、処理回路６０２に、たとえば、図１、図５、図６、および図１０〜図１３において本明細書で説明される様々な機能および／またはプロセスステップのうちの１つまたは複数を実行させることができる。少なくともいくつかの例では、記憶媒体６０６はデータストリーミング動作６１６を含み得る。データストリーミング動作６１６は、処理回路６０２に、グラフィックスコマンドトークンとテクスチャ要素とを含んでいるグラフィックス領域フレームの形態のスクリーンコンテンツデータ（たとえば、ビデオデータ）を、通信インターフェース６０４を介してシンクデバイスにストリーミングさせるように適応される。いくつかの例では、データストリーミング動作６１６は、処理回路６０２に、本明細書において以下でより詳細に説明されるように、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはロッシー／ロスレスデータ圧縮のうちの１つまたは複数を利用して、グラフィックスコマンドトークンとテクスチャとを含んでいるフレームの１つまたは複数の特性に基づいて、フレームを適応的に圧縮させるように適応された圧縮パイプライン動作６１８を含み得る。記憶媒体６０６は、データストリーミング動作によって生成または利用されるデータをも含み得る。たとえば、記憶媒体６０６は、スケーラブルストリーミングがフレームに適用されるべきであるか否かを示すためのスケーラブルストリーミングフラグを有し得る。
【００４７】
[0059]記憶媒体６０６は、それぞれ、ソースデバイス６００を製造する団体によって提供されるアプリケーション、またはソースデバイス６００上で動作するプログラミング、および／またはソースデバイス６００とともに使用するためにサードパーティによって開発されたアプリケーションを表し得る、アプリケーションモジュール６２０をも含み得る。アプリケーションモジュール６２０の例としては、ゲーミング、ショッピング、移動経路設定、地図、オーディオおよび／またはビデオプレゼンテーション、ワードプロセシング、スプレッドシート、音声および／または通話、天気などのためのアプリケーションがあり得る。１つまたは複数のアプリケーションモジュール６２０は、アプリケーションモジュールおよびアプリケーションに関連するテクスチャ要素（テクスチャ）を含むかまたは生成し得る。
【００４８】
[0060]一例では、アプリケーションモジュール６２０のゲームアプリケーションが、落下する果物（たとえば、スイカ、アボカド、パイナップルなど）のスライシングを伴う場合、果物の各タイプならびにバックグラウンドのグラフィカル表現を含み得る、ゲームアプリケーションに関連するテクスチャ要素があり得る。そのようなテクスチャ要素は、それらの対応するカラーチャネルの異なる色空間におよび異なるビット深度で記憶され得る。
【００４９】
[0061]本開示の１つまたは複数の態様によれば、処理回路６０２は、本明細書で説明されるソースデバイスのいずれかまたはすべてについてのプロセス、機能、ステップおよび／またはルーチンのいずれかまたはすべてを（独立してまたは記憶媒体６０６と連携して）実行するように適応される。本明細書で使用される、処理回路６０２に関する「適応される」または「構成される」という用語は、たとえば、図５、図６、および図１０〜図１３において本明細書で説明される様々な特徴に従って、処理回路６０２が、特定のプロセス、機能、ステップおよび／またはルーチンを実行するように（記憶媒体６０６と連携して）構成、採用、実装、および／またはプログラムされることのうちの１つまたは複数を指すことがある。
【００５０】
[0062]図８は、本開示の一態様による、ソースデバイス６００内の例示的なデータフローを示すブロック図である。ソースデバイス６００は、図７のソースデバイスと同じであり得る。図示のように、ソースデバイス６００のアプリケーションモジュール６２０のうちの１つまたは複数は、グラフィックスコマンドトークンとテクスチャとを含んでいるグラフィックス領域フレームを、たとえば、ＧＰＵ６０８に出力し得る。いくつかの例では、ＧＰＵ６０８は、これらのフレームをレンダリングし、レンダリングされたビデオまたは画像をディスプレイ６２２または出力デバイスに出力し得る。いくつかの例では、ＧＰＵ６０８は、グラフィックス領域フレームをレンダリングしないが、それらをシンクデバイスにストリーミングすることがある。本開示の１つまたは複数の態様によれば、（たとえば、データストリーミング回路／モジュール６１０および／またはデータストリーミング動作６１６によって実装される）データストリーミング論理６２４が、ＧＰＵ６０８の入力においてグラフィックス領域フレームをキャプチャし得る。キャプチャされたフレームは、記憶媒体６０６において記憶されるかまたはデータストリーミング論理６２４中にバッファされ得る。データストリーミング論理６２４は、グラフィックス領域フレームの特性に基づいて、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、および／またはロッシー／ロスレスデータ圧縮のうちの少なくとも１つを実行するように実装された適応圧縮パイプラインを利用してフレームを圧縮し得る。圧縮されたフレームは送信機６１４に出力される。一例では、データストリーミング論理６２４は、フレームのシーケンスを構成する複数のフレームに関連する圧縮されたグラフィックスコマンドトークンとテクスチャとを生成し得る。送信機６１４は、グラフィックスコマンドトークンとテクスチャとを含んでいる圧縮されたフレームを、シンクデバイス（たとえば、図９のシンクデバイス７００）に出力することができる。
【００５１】
[0063]図９は、本開示の一態様による、スクリーンミラーリングを実行するように構成されたシンクデバイス７００の選ばれた構成要素を示すブロック図である。シンクデバイス７００は、通信インターフェース７０４と記憶媒体７０６とに動作可能に結合された、またはそれらと電気通信するように配置された処理回路７０２を含む。処理回路７０２は、データを取得し、処理し、送信しおよび／または受信し、データアクセスおよび記憶を制御し、コマンドを発行し、他の所望の動作を制御するように構成された回路を含む。処理回路７０２は、適切な媒体によって与えられた所望のプログラミングを実装するように適応された回路、ならびに／または、たとえば、図１および図１４において本開示で説明される１つまたは複数の機能を実行するように適応された回路を含み得る。シンクデバイス７００のいくつかの構成要素はソースデバイス６００の構成要素と同様であり、冗長な説明は簡潔のために省略される。
【００５２】
[0064]いくつかの事例では、処理回路７０２は、グラフィックス処理ユニット（ＧＰＵ）７０８および／あるいはデータストリーミング回路またはモジュール７１０を含み得る。ＧＰＵ７０８は、概して、ディスプレイ７１１または出力デバイスによる表示のために、１つまたは複数のグラフィックスコマンドトークンおよびテクスチャ要素に基づいて、グラフィックスデータを処理し、ビデオデータまたはスクリーンコンテンツデータのグラフィックス領域フレームをレンダリングするために適応された回路および／またはプログラミング（たとえば、記憶媒体７０６に記憶されたプログラミング）を含む。
【００５３】
[0065]データストリーミング回路／モジュール７１０は、グラフィックスコマンドトークンおよび／またはテクスチャ要素を含んでいるグラフィックス領域フレーム（たとえば、図２のフレーム２００）をソースデバイス（たとえば、ソースデバイス６００）から受信するように適応された回路および／またはプログラミング（たとえば、記憶媒体７０６に記憶されたプログラミング）を含み得る。データストリーミング回路／モジュール７１０は、グラフィックスコマンドトークンおよび／またはテクスチャを含んでいるグラフィックス領域フレームをＧＰＵ７０８に与え得、ＧＰＵ７０８は、ディスプレイ７１１によって表示されるべきフレームをレンダリングする。いくつかの例では、データストリーミング回路／モジュール７１０は、フレームのプレゼンテーションタイムスタンプに基づいて１つまたは複数のフレームをドロップするように構成された回路を含み得る。
【００５４】
[0066]通信インターフェース７０４は、ソースデバイスとのワイヤレス通信を可能にするように構成される。たとえば、通信インターフェース７０４は、１つまたは複数のソースデバイス６００に関して双方向に情報の通信を可能にするように適応された回路および／またはプログラミングを含み得る。通信インターフェース７０４は、１つまたは複数のアンテナ（図示せず）に結合され得、少なくとも１つの受信機７１２（たとえば、１つまたは複数の受信機チェーン）および／または少なくとも１つの送信機７１４（たとえば、１つまたは複数の送信機チェーン）を含むワイヤレストランシーバ回路を含む。
【００５５】
[0067]記憶媒体７０６は、プロセッサ実行可能コードまたは命令（たとえば、ソフトウェア、ファームウェア）などのプログラミング、電子データ、データベース、あるいは他のデジタル情報を記憶するための１つまたは複数のプロセッサ可読デバイスを表し得る。記憶媒体７０６はまた、プログラミングまたはコードを実行するときに処理回路７０２によって操作されるデータ（たとえば、ソースデバイスから受信されたグラフィックス領域フレーム）を記憶するために使用され得る。記憶媒体７０６は、ポータブルまたは固定ストレージデバイス、光ストレージデバイス、ならびにプログラミングまたはコードを記憶し、含有し、および／または搬送することが可能な様々な他の媒体を含む、汎用または専用プロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、記憶媒体７０６は、磁気ストレージデバイス（たとえば、ハードディスク、フロッピーディスク、磁気ストリップ）、光記憶媒体（たとえば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ））、スマートカード、フラッシュメモリデバイス（たとえば、カード、スティック、キードライブ）、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、リムーバブルディスク、および／またはプログラミングを記憶するための他の媒体などのプロセッサ可読非一時的記憶媒体、ならびにそれらの任意の組合せを含み得る。
【００５６】
[0068]記憶媒体７０６は、その上に記憶されたプログラミングを含み得る。そのようなプログラミングは、処理回路７０２によって実行されたとき、処理回路７０２に、本明細書で説明される様々な機能および／またはプロセスステップのうちの１つまたは複数を実行させることができる。少なくともいくつかの例では、記憶媒体７０６はデータストリーミング動作７１６を含み得る。データストリーミング動作７１６は、処理回路７０２に、グラフィックスコマンドトークンとテクスチャ要素とを含んでいるフレームの形態のストリームビデオデータまたはスクリーンコンテンツデータを、通信インターフェース７０４を介してソースデバイスから受信させるように適応される。
【００５７】
[0069]記憶媒体７０６は、それぞれ、シンクデバイス７００を製造する団体によって提供されるアプリケーション、またはシンクデバイス７００上で動作するプログラミング、および／またはシンクデバイス７００とともに使用するためにサードパーティによって開発されたアプリケーションを表し得る、アプリケーションモジュール７２０をも含み得る。アプリケーションモジュール７２０の例としては、ゲーミング、ショッピング、移動経路設定、地図、オーディオおよび／またはビデオプレゼンテーション、ワードプロセシング、スプレッドシート、音声および／または通話、天気などのためのアプリケーションがあり得る。
【００５８】
[0070]本開示の１つまたは複数の態様によれば、処理回路７０２は、本明細書で説明されるシンクデバイスのいずれかまたはすべてについてのプロセス、機能、ステップおよび／またはルーチンのいずれかまたはすべてを（独立してまたは記憶媒体７０６と連携して）実行するように適応される。本明細書で使用される、処理回路７０２に関する「適応される」または「構成される」という用語は、たとえば、図１４において本明細書で説明される様々な特徴に従って、処理回路７０２が、特定のプロセス、機能、ステップおよび／またはルーチンを実行するように（記憶媒体７０６と連携して）構成、採用、実装、および／またはプログラムされることのうちの１つまたは複数を指すことがある。
【００５９】
[0071]図１０は、本開示のいくつかの態様による、適応圧縮パイプライン８００を示す図である。この適応圧縮パイプライン８００は、図１、図７、および図８のいずれかに示されているソースデバイス、あるいは任意の好適な装置において実装され得る。１つの特定の例では、ソースデバイス６００は、図５のスクリーンミラーリング方法５００を実行する間、（ブロック５０４において）グラフィックス領域フレームを処理または圧縮するために適応圧縮パイプライン８００を利用するように構成され得る。グラフィックスコマンドトークンおよび／またはテクスチャを含んでいるグラフィックス領域フレーム（たとえば、ＯｐｅｎＧＬフレーム）が到着したとき、適応圧縮パイプライン８００は、送信のレイテンシを低減するために、より少ない時間でフレームがシンクデバイスに送信され得るように、様々な圧縮ツールまたは技法を利用して、フレームのサイズを適応的に圧縮または低減することができる。
【００６０】
[0072]決定ブロック８０２において、ソースデバイスは、フレームドロッピングがフレームに適用されるか否かを決定するために、それの処理回路６０２を利用し得る。フレームがいくつかの基準を満たす場合、フレームはブロック８０４においてドロップされる。フレームがドロップされるとき、それは、シンクデバイスにストリーミングまたは送信されないが、依然として、ソースデバイスにおいてレンダリングおよび／または表示され得る。図１１を参照すると、以下の条件の全部または一部が満たされる場合、フレームはドロップされ得る。ブロック９０２において、フレームがビデオストリームの最初のｍ個のフレームのうちの１つであるか否かが決定される。一例では、ｍの値は、２またはそれ以上、あるいは任意の好適な値に等しくなり得る。ブロック９０４において、フレームがテクスチャまたはテクスチャ要素を含んでいるか否かが決定される。たとえば、テクスチャは、レンダリングされたフレーム中のオブジェクトの表面の詳細、表面テクスチャまたは色を与え得る。ブロック９０６において、フレームがそれの前のフレームと同じグラフィックスコマンドトークンを有するか否かが決定される。たとえば、フレーム番号ｆが、フレーム番号ｆ＋１と同じグラフィックスコマンドトークンを有し得る。ブロック９０８において、前のｑ個のフレームのうちの少なくとも１つのフレームがドロップされなかったか否かが決定される。たとえば、ｑの値は、２またはそれ以上、あるいは任意の好適な数に等しくなり得る。ブロック９１０において、ソースデバイスとシンクデバイスとの間の通信遅延があるしきい値よりも大きいか否かが決定される。一例では、しきい値（すなわち、最大許容スクリーン間遅延）は５ミリ秒であり得る。本開示の一態様では、ソースデバイスは、送られる現在フレームのプレゼンテーションタイムスタンプを、ソースデバイス上の現在のシステム時間と比較することによって、遅延を決定し得る。これは、送信遅延が考慮に入れられるとき、スクリーン間遅延計算のための良好なヒューリスティックを与える。
【００６１】
[0073]１つの特定の例では、図１１のすべての条件が満たされるとき、フレームはドロップされ得、他の場合、フレームはドロップされない。いくつかの例では、図１１のいくつかの条件のみが満たされるとき、フレームはドロップされ得る。図１１の条件は、順次任意の順序でおよび／または並列に検査され、図に示されている特定の順序に限定されないことがある。本開示のいくつかの態様では、条件のうちのいくつかが省略され得、他の条件が追加され得る。フレームドロッピングに関するより多くの情報が、２０１５年１月５日に米国特許商標庁に出願された同時係属特許出願第１４／５８９，４８１号において見つけられ得る。
【００６２】
[0074]再び図１０を参照すると、決定ブロック８０６において、ソースデバイスは、グラフィックス領域フレームがテクスチャを有するか否かを決定するために、それの処理回路６０２を利用し得る。フレームがテクスチャを有する場合、ソースデバイスは決定ブロック８０８に進み、他の場合、ソースデバイスは決定ブロック８１８に進む。ブロック８０８において、ソースデバイスは、テクスチャを含んでいるフレームにロッシーデータ圧縮を適用すべきか否かを決定するために、それの処理回路６０２を利用し得る。ブロック８１０において、ソースデバイスは、テクスチャに対応するフレームのデータにロッシー圧縮を適用し、フレームの他のデータにロスレス圧縮を適用するために、それの処理回路６０２を利用し得る。たとえば、ソースデバイスは、ロッシーＪＰＥＧ（ジョイントフォトグラフィックエキスパートグループ）フォーマットを使用してテクスチャを圧縮し得る。
【００６３】
[0075]グラフィックスでは、ピクセルは、赤、緑、および青（ＲＧＢ）のための３つのチャネルと１つのアルファチャネルとによって表され得る。アルファチャネルは、ピクセルのＲ色、Ｇ色、およびＢ色が、その２つがオーバーレイされ、一方が他方の上にあるとき、別のピクセルとどのようにマージされるかを定義する、透明度を指定する。１つの特定の例では、ソースデバイスは、フレームのＲＧＢ画像（ＲＧＢチャネル）をアルファチャネルから分離し、ＲＧＢ画像をＪＰＥＧ画像として圧縮する。一例では、圧縮されたＪＰＥＧ画像サイズは２３ビットで表され得る。ソースデバイスは、アルファチャネルのコンテンツに基づいてアルファチャネルを選択的に圧縮し得る。たとえば、アルファチャネルがすべて１を含んでいる（すなわち、データビットがすべて１に等しい）場合、ソースデバイスは、０の値（または所定の値）をもつアルファフラグを含むフレームをシンクデバイスに送信するが、アルファチャネルデータを送らないことがある。アルファチャネルがすべて１を含んでいるとは限らない（すなわち、１および０データ）場合、ソースデバイスは、アルファチャネルをＪＰＥＧグレースケール画像に圧縮し、ＪＰＥＧグレースケール画像と１の値（または所定の値）をもつアルファフラグとを含むフレームをシンクデバイスに送信し得る。
【００６４】
[0076]決定ブロック８１２において、ソースデバイスは、ソースデバイスによって維持されるスケーラブルストリーミングフラグに基づいてスケーラブルテクスチャストリーミングを適用すべきか否かを決定するために、それの処理回路６０２を利用し得る。たとえば、スケーラブルストリーミングフラグは、スケーラブルテクスチャストリーミングを有効にするために、第１の値（たとえば、スケーラブルストリーミングフラグ＝１）に設定されるか、またはスケーラブルテクスチャストリーミングを無効にするために、第２の値（たとえば、スケーラブルストリーミングフラグ＝０）に設定され得る。スケーラブルストリーミングフラグは、ソースデバイスとシンクデバイスと間の通信帯域幅、および／またはシンクデバイスによって与えられた任意のフィードバックに基づいて設定され得る。たとえば、帯域幅があるしきい値を下回るとき、ソースデバイスはスケーラブルテクスチャストリーミングを有効にし得る。一例では、シンクデバイスにおけるレンダリング品質が不十分（たとえば、過大なレンダリングアーティファクト（excessive rendering artifacts））であるとき、ソースデバイスはスケーラブルテクスチャストリーミングを無効にし得る。スケーラブルテクスチャストリーミングの一例が、図１２において以下で説明される。
【００６５】
[0077]ブロック８１４において、ソースデバイスは、本開示の一態様に従ってスケーラブルテクスチャストリーミングを実行するために、それの処理回路６０２を利用し得る。図１２を参照すると、スケーラブルテクスチャストリーミングにおいて、ソースデバイスは、フレーム１００２をいくつかの小さいステージ１００４またはレイヤに分割し得る。小さいステージ１００４の各々は、データサイズが元のフレーム１００２よりも小さい。次いで、ソースデバイスは、小さいステージ１００４を順次別々に、通信チャネル（たとえば、Ｗｉ−Ｆｉチャネル、セルラー接続）を介してシンクデバイスに送信する。シンクデバイスは、受信された第１のステージに基づいて、元のフレーム１００２の低品質画像またはフレーム１００６を再構築またはレンダリングし得る。たとえば、低品質画像１００６は、元のフレームよりも低い解像度を有し得る。後のステージは、漸進的により良い品質の画像（たとえば、画像１００８および１０１０）が構築され得るように、シンクデバイスに改良ビットまたはデータを与える。一例では、シンクデバイスは、画像を生成するために、ステージに連続補間を適用し得る。最終的に、すべてのステージを用いて構築されたフレーム１０１２の品質は、元のフレーム１００２の実質的に同じ画像品質に近づくかまたはそれを有し得る。
【００６６】
[0078]再び図１０を参照すると、ブロック８１６において、ソースデバイスは、スケーラブルストリーミングフラグが設定されないとき、テクスチャを含んでいないグラフィックス領域フレームのデータ（たとえば、コマンドトークン）にロスレス圧縮を適用するために、それの処理回路６０２を利用し得る。いくつかの例では、ｚｌｉｂ、ＬＺ４、およびＬＺＯ（Ｌｅｍｐｅｌ−Ｚｉｖ−Ｏｂｅｒｈｕｍｅｒ）など、一般に知られているロスレスデータ圧縮技法が使用され得る。データ圧縮を適用することは、より小さいフレームをストリーミングすることによって送信レイテンシを低減し得るが、データ圧縮を実行することは、処理時間を増加させ得る。したがって、ソースデバイスは、チャネル帯域幅、および圧縮を実行する処理時間など、いくつかの基準に基づいて、圧縮（たとえば、ｚｌｉｂ、ＬＺ４、およびＬＺＯ）を選択的に適用し得る。概して、ソースデバイスは、圧縮を実行する処理時間と圧縮されたフレームの送信時間とを考慮に入れながら、データ圧縮が全体的なレイテンシを低減することができる場合、データ圧縮を適用するように選択し得る。
【００６７】
[0079]決定ブロック８１８において、ソースデバイスは、グラフィックス領域フレームの長さに基づいて、フレームベース予測を実行すべきか否かを決定するために、それの処理回路６０２を利用し得る。本開示の一態様では、現在フレーム（たとえば、フレームｆ＋１）とそれの前のフレーム（たとえば、フレームｆ）とが同じ長さを有する場合、ソースデバイスは、ブロック８２０において、現在フレームのサイズを圧縮または低減するためにフレームベース予測を実行するために、それの処理回路６０２を利用し得る。図１３は、同じ長さを有する２つの連続するフレーム１１０２および１１０４（フレームｆおよびフレームｆ＋１）に関するフレームベース予測を示す図である。例示的な例では、２つのフレームが異なるデータを含んでいるロケーションは、バイトロケーション７０、７１、７２、８０、１１３、１１４、１５８、１５９、１６０、１６１、および１８８であり得る。本開示の一態様では、ソースデバイスは、これらのロケーションを、７０、１、１、８、３３、１、４４、１、１、１、および２７として差分符号化し得る。この特定の例では、第１のロケーションがロケーション７０であるので、第２のロケーション７１は、１（すなわち、７１＝７０＋１）として符号化され得る。同様に、第３のロケーション７２は、１（すなわち、７２＝７１＋１）として符号化され得、第４のロケーション８０は、８（すなわち、８０＝７２＋８）として符号化され得、以下同様である。本開示の他の態様では、他の符号化方式が使用され得る。
【００６８】
[0080]本開示の様々な態様では、ソースデバイスは、任意の好適なコーディング方式を使用して、差分ロケーション（すなわち、異なるデータを有するフレームの同じロケーション）を符号化し得る。１つの特定の例では、ソースデバイスは、指数ゴロムコーディングを使用して差分ロケーションを符号化し得る。１つの特定の例では、符号化された差分ロケーションは、００００００１０００１１０（すなわち、ロケーション７０）、１、１、０００１０００、０００００１００００１、１になり、以下同様である。符号化の後、ソースデバイスは、コード化差分ロケーションとこれらのロケーションの新規／異なるデータとをもつフレーム１１０６（図１３）をシンクデバイスに送信する。
【００６９】
[0081]図１３を参照すると、フレームベース予測において、グラフィックス領域フレーム構造１１０６は、フレームヘッダ１１０８と、サイズフィールド１１１０と、差分コード化ロケーションフィールド１１１２と、新規データフィールド１１１４とを含む。フレームヘッダ１１０８は、フレームの開始をマークし、このフレームに適用されるフレーム圧縮の適用例（たとえば、フレームベース予測）を示す。サイズフィールド１１１０は、コード化ロケーションのサイズを示す。特定の一例では、サイズフィールド１１１０のサイズは２バイト（２Ｂ）であり得る。コード化ロケーション自体は、長さが可変であり得る。これらの２バイトは、シンクデバイスのデコーダが、差分コード化ロケーションを含んでいるバイト数をパース（parse）するのを助ける。差分コード化ロケーションフィールド１１１２は、フレームが新規データ（すなわち、異なるデータ）を含んでいるロケーションを示す。新規データフィールド１１１４は、新規データの値を与える。したがって、シンクデバイスは、前のフレームｆと、異なる／新規データのロケーションを含んでいるフレーム１１０６とに基づいて、フレームｆ＋１を構築し得る。フレーム１１０６は、送信レイテンシが低減され得るような、フレームｆ＋１  １１０４よりも小さいサイズまたは長さを有し得る。
【００７０】
[0082]再び図１０を参照すると、決定ブロック８１８において、ソースデバイスがフレームベース予測を実行しないことを決定した場合、ソースデバイスは、上記で説明されたように、ブロック８１６において、フレームに対してロスレス圧縮を実行する。図１０〜図１３に示されているグラフィックコマンドフレーム圧縮ツールおよび技法は網羅的でない。本開示のいくつかの態様では、ソースデバイスは、これらのフレーム圧縮ツールの一部を実装しないことがあり、本開示の範囲内の他の好適なフレーム圧縮ツールを含み得る。
【００７１】
[0083]０レイテンシまたは非知覚可能レイテンシスクリーンミラーリングを達成するために、ソースデバイスとシンクデバイスとは、それらのデバイスが、特定のフレームがディスプレイまたはスクリーン上にレンダリングおよび／または表示される時間を調節および制御することができるように、グローバルクロックソース（たとえば、図１の時間基準１１０）に同期され得る。いくつかの例では、シンクデバイスは、ソースデバイスから受信されたデータから時間を導出し得る。本開示では、非知覚可能レイテンシスクリーンミラーリングは、５ミリ秒未満のレイテンシ、または人間の閲覧者が、ソースデバイスによって表示される画像とシンクデバイスによって表示される画像との間の顕著な遅延を知覚することができないレイテンシを有し得る。一例では、ソースデバイスとシンクデバイスとは、ネットワークタイムプロトコル（ＮＴＰ：Network Time Protocol）を使用して、好適なクロックソースに同期され得る。一例では、ソースデバイスとシンクデバイスとは、両方のデバイスが接続される同じＷｉ−Ｆｉネットワークからのタイミング同期機能（ＴＳＦ：Timing Synchronization Function）を使用して、クロックソースに同期され得る。本開示の一態様では、フレームがオーディオコンポーネントとビデオコンポーネントとを有する場合、オーディオコンポーネントは、ソース側でアプリケーションレイヤにおいて早期にキャプチャされ得る。オーディオデータがシンク側に到着したとき、それらは、ビデオ再生を同期させるために使用される同じグローバルクロックソースに同期される。グローバルクロックソースは、ＮＴＰ、ＴＳＦ、またはＷｉ−Ｆｉに基づき得る。
【００７２】
[0084]図１４は、本開示の一態様による、シンク側フレームドロッピング方法１２００を示すフローチャートである。シンク側フレームドロッピング方法１２００は、図９のシンクデバイス７００または任意の好適な装置によって実行され得る。ブロック１２０２において、シンクデバイスは、ソースデバイス（たとえば、図１のソースデバイス１０２）から１つまたは複数のグラフィックス領域フレームを受信するために、それの通信インターフェース７０４（図９）を利用し得る。たとえば、フレームの各々は、図２に示されているフレーム２００と同様に、もう１つのグラフィックスコマンドトークンおよび／またはテクスチャを含み得る。フレームは、図６および図１０で説明された適応圧縮パイプラインと同様の適応圧縮パイプラインによってソースデバイスにおいて圧縮され得る。適応圧縮パイプラインは、図１０〜図１３において上記で説明されたように、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはロッシー／ロスレスデータ圧縮を使用して、フレームを圧縮または処理するように構成され得る。
【００７３】
[0085]ブロック１２０４において、シンクデバイスは、たとえば、それの処理回路６０２および／またはＧＰＵ６０８（図７）を利用して、表示のためにグラフィックス領域フレームをレンダリングする。決定ブロック１２０６において、フレームがそれのプレゼンテーションタイムスタンプの後に到着した場合、シンクデバイスは、ブロック１２０８においてこのフレームを表示せず、他の場合、シンクデバイスは、ブロック１２１０においてフレームを表示する。シンクデバイスが、ドロップされたフレームを表示することを控える（たとえば、表示されないか、見合わせられるか、ドロップされるか、または廃棄される）とき、シンクデバイスは、依然として、たとえば、それのＧＰＵによって、ドロップされたフレームのグラフィックスコマンドを実行し得る。
【００７４】
[0086]上記で説明された態様、構成、および実施形態が具体的な詳細および委細とともに説明されたが、図１〜図１４に示されている構成要素、ステップ、特徴および／または機能のうちの１つまたは複数は、単一の構成要素、ステップ、特徴または機能に再構成されおよび／または組み合わせられるか、あるいはいくつかの構成要素、ステップ、または機能で実施され得る。また、本開示から逸脱することなく追加の要素、構成要素、ステップ、および／または機能が追加されるかまたは利用されないことがある。図１、図７、図８、および／または図９に示されている装置、デバイスおよび／または構成要素は、図１、図５、図６および／または図１０〜図１４で説明された方法、特徴、パラメータ、および／またはステップのうちの１つまたは複数を実行または採用するように構成され得る。本明細書で説明された新規のアルゴリズムおよびプロシージャはまた、効率的にソフトウェアで実装されおよび／またはハードウェアに組み込まれるか、またはそれらの組合せであり得る。
【００７５】
[0087]本開示の特徴が、いくつかの実施形態および図に関連して説明されていることがあるが、本開示のすべての実施形態は、本明細書で説明された有利な特徴のうちの１つまたは複数を含むことができる。言い換えれば、１つまたは複数の実施形態が、いくつかの有利な特徴を有するものとして説明されていることがあるが、そのような特徴のうちの１つまたは複数は、本明細書で説明される様々な実施形態のいずれに従っても使用され得る。同様に、例示的な実施形態が、本明細書ではデバイス、システム、または方法の実施形態として説明されていることがあるが、そのような例示的な実施形態は、様々なデバイス、システム、および方法で実装され得ることを理解されたい。
【００７６】
[0088]また、少なくともいくつかの実装形態が、フローチャート、流れ図、構造図、またはブロック図として示されたプロセスとして説明されたことに留意されたい。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実行され得る。さらに、動作の順序は並べ替えられ得る。プロセスは、それの動作が完了したときに終了する。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、それの終了は呼出し関数またはメイン関数への関数の復帰に対応する。本明細書で説明された様々な方法は、プロセッサ可読記憶媒体に記憶され、１つまたは複数のプロセッサ、機械および／またはデバイスによって実行され得る、プログラミング（たとえば、命令および／またはデータ）によって部分的にまたは完全に実装され得る。
【００７７】
[0089]さらに、本明細書で開示される実施形態に関して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せとして実装され得ることを、当業者は諒解されよう。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して説明された。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。
【００７８】
[0090]本明細書で説明され、添付の図面に示された例に関連する様々な特徴は、本開示の範囲から逸脱することなく、異なる例および実装形態において実装され得る。したがって、ある特定の構造および構成が説明され、添付の図面に示されたが、説明された実施形態への様々な他の追加および変更、ならびにそれらの実施形態からの削除は当業者には明らかであるので、そのような実施形態は例示的にすぎず、本開示の範囲を限定するものではない。したがって、本開示の範囲は、以下の特許請求の範囲の文字通りの文言、および法的均等物によってのみ決定される。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ソースデバイスであって、
通信インターフェースと、
実行可能コードを記憶するメモリと、
前記通信インターフェースと前記メモリとに通信可能に結合された少なくとも１つのプロセッサと
を備え、
ここにおいて、前記少なくとも１つのプロセッサおよび前記メモリは、
複数のグラフィックス領域フレームをキャプチャすることと、前記グラフィックス領域フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備える、
前記複数のグラフィックス領域フレームの１つまたは複数の特性に基づいて前記フレームを圧縮するために、適応圧縮パイプラインを利用することと、ここにおいて、前記適応圧縮パイプラインが、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを実行するように構成された、
前記圧縮されたフレームを、前記通信インターフェースを介してシンクデバイスに送信することと、
前記シンクデバイスにおいて表示される、前記圧縮されたフレームの対応するレンダリングされた画像と時間同期して、前記グラフィックス領域フレームのレンダリングされた画像を表示することと
を行うように構成された、
ソースデバイス。
［Ｃ２］
フレームドロッピングについて、前記少なくとも１つのプロセッサおよびメモリは、
前記複数のグラフィックス領域フレームのうちの第１のフレームが、前記複数のグラフィックス領域フレームに先行する所定の数の第２のフレームに続くこと、
前記第１のフレームがテクスチャを備えないこと、
前記第１のフレームと前記第１のフレームの前のフレームとが同じコマンドトークンを備えること、
前記第１のフレームの所定の数の前のフレームのうちの少なくとも１つのフレームがドロップされないこと、または
前記ソースデバイスと前記シンクデバイスとの間の通信遅延がしきい値持続時間よりも大きいこと、
のうちの少なくとも１つを備える所定の条件に関して前記第１のフレームをドロップするようにさらに構成された、Ｃ１に記載のソースデバイス。
［Ｃ３］
スケーラブルテクスチャストリーミングについて、前記少なくとも１つのプロセッサおよびメモリは、
前記複数のグラフィックス領域フレームのうちの第１のフレームを複数のステージに分割することと、ここにおいて、前記第１のフレームがテクスチャを備える、
前記複数のステージを備える前記圧縮されたフレームを前記シンクデバイスに順次送信することと、ここにおいて、前記第１のフレームが、前記ステージの連続補間によって前記シンクデバイスにおいてレンダリングされるように構成された、
を行うようにさらに構成された、Ｃ１に記載のソースデバイス。
［Ｃ４］
フレームベース予測について、前記少なくとも１つのプロセッサおよびメモリは、
前記複数のグラフィックス領域フレームのうちの２つの連続するフレームが長さが等しい場合、
前記２つの連続するフレームの１つまたは複数の同じロケーションを決定することと、ここで、前記同じロケーションが異なるデータを有する、
前記異なるデータに対応する前記ロケーションを符号化することと、
前記符号化されたロケーションと前記異なるデータとを備える前記圧縮されたフレームを前記シンクデバイスに送信することと
を行うようにさらに構成された、Ｃ１に記載のソースデバイス。
［Ｃ５］
前記複数のグラフィックス領域フレームのうちの第１のフレームがテクスチャを備える場合、前記少なくとも１つのプロセッサおよびメモリが、
前記テクスチャのアルファチャネルから赤緑および青（ＲＧＢ）画像を分離することと、
ロッシー圧縮を利用して前記ＲＧＢ画像を圧縮することと、
前記アルファチャネルのコンテンツに基づいて、ロッシー圧縮によって前記アルファチャネルを選択的に圧縮することと
を行うようにさらに構成された、Ｃ１に記載のソースデバイス。
［Ｃ６］
前記グラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、Ｃ１に記載のソースデバイス。
［Ｃ７］
前記複数のグラフィックス領域フレームが、レンダリングされたグラフィックスを備えない、Ｃ１に記載のソースデバイス。
［Ｃ８］
シンクデバイスであって、
通信インターフェースと、
実行可能コードを備えるメモリと、
前記通信インターフェースと前記メモリとに通信可能に結合された少なくとも１つのプロセッサと
を備え、
ここにおいて、前記少なくとも１つのプロセッサおよび前記メモリは、
前記通信インターフェースを介してソースデバイスから複数のグラフィックス領域フレームを受信することと、
ここにおいて、前記グラフィックス領域フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備え、前記複数のグラフィックス領域フレームが、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを備える適応圧縮パイプラインによって圧縮される、
前記複数のフレームの各々のタイムスタンプに基づいて、前記複数のグラフィックス領域フレームのうちの少なくともいくつかを選択的に表示することと
を行うように構成された、
シンクデバイス。
［Ｃ９］
前記少なくとも１つのプロセッサおよび前記メモリは、前記複数のグラフィックス領域フレームのうちの第１のフレームが前記第１のフレームの前記タイムスタンプの後に受信された場合、前記第１のフレームを表示することを控えるようにさらに構成された、Ｃ８に記載のシンクデバイス。
［Ｃ１０］
前記少なくとも１つのプロセッサおよび前記メモリが、前記第１のフレームをレンダリングするようにさらに構成された、Ｃ９に記載のシンクデバイス。
［Ｃ１１］
前記少なくとも１つのプロセッサおよび前記メモリは、前記複数のグラフィックス領域フレームのうちのあるフレームが前記フレームのタイムスタンプの後に前記シンクデバイスに到着した場合、前記フレームを表示することを控えるようにさらに構成された、Ｃ８に記載のシンクデバイス。
［Ｃ１２］
前記１つまたは複数のグラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、Ｃ８に記載のシンクデバイス。
［Ｃ１３］
前記複数のグラフィックス領域フレームが、レンダリングされたグラフィックスを備えない、Ｃ８に記載のシンクデバイス。
［Ｃ１４］
ソースデバイスにおいて動作可能なスクリーンミラーリングの方法であって、
スクリーンコンテンツの複数のグラフィックス領域フレームをキャプチャすることと、前記フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備える、
前記複数のグラフィックス領域フレームの１つまたは複数の特性に基づいて前記フレームを圧縮するために、適応圧縮パイプラインを利用することと、ここにおいて、前記適応圧縮パイプラインが、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを実行するように構成された、
前記圧縮されたフレームを、前記ソースデバイスの通信インターフェースを介してシンクデバイスに送信することと、
前記シンクデバイスにおいて表示される、前記圧縮されたフレームの対応するレンダリングされた画像と時間同期して、前記フレームのレンダリングされた画像を表示することと
を備える、方法。
［Ｃ１５］
フレームドロッピングについて、前記適応圧縮パイプラインを利用することは、
前記複数のグラフィックス領域フレームのうちの第１のフレームが、前記複数のフレームに先行する所定の数の第２のフレームに続くこと、
前記第１のフレームがテクスチャを備えないこと、
前記第１のフレームと前記第１のフレームの前のフレームとが同じコマンドトークンを備えること、
前記第１のフレームの所定の数の前のフレームのうちの少なくとも１つのフレームがドロップされないこと、または
前記ソースデバイスと前記シンクデバイスとの間の通信遅延がしきい値持続時間よりも大きいこと、
のうちの少なくとも１つを備える所定の条件に関して前記第１のフレームをドロップすることを備える、Ｃ１４に記載の方法。
［Ｃ１６］
スケーラブルテクスチャストリーミングについて、前記適応圧縮パイプラインを利用することは、
前記複数のグラフィックス領域フレームのうちの第１のフレームを複数のステージに分割することと、ここにおいて、前記第１のフレームがテクスチャを備える、
前記複数のステージを備える前記圧縮されたフレームを前記シンクデバイスに順次送信することと、ここにおいて、前記第１のフレームが、前記ステージの連続補間によって前記シンクデバイスにおいてレンダリングされる、
を備える、Ｃ１４に記載の方法。
［Ｃ１７］
フレームベース予測について、前記適応圧縮パイプラインを利用することは、
前記複数のグラフィックス領域フレームのうちの２つの連続するフレームが長さが等しい場合、
前記２つの連続するフレームの１つまたは複数の同じロケーションを決定することと、ここで、前記同じロケーションが異なるデータを有する、
前記異なるデータに対応する前記ロケーションを符号化することと、
前記符号化されたロケーションと前記異なるデータとを備える前記圧縮されたフレームを前記シンクデバイスに送信することと
を備える、Ｃ１４に記載の方法。
［Ｃ１８］
前記適応圧縮パイプラインを利用することは、
前記複数のグラフィックス領域フレームのうちの第１のフレームがテクスチャを備える場合、
前記テクスチャのアルファチャネルから赤緑および青（ＲＧＢ）画像を分離することと、
ロッシー圧縮を利用して前記ＲＧＢ画像を圧縮することと、
前記アルファチャネルのコンテンツに基づいて、ロッシー圧縮によって前記アルファチャネルを選択的に圧縮することと
を備える、Ｃ１４に記載の方法。
［Ｃ１９］
前記グラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、Ｃ１４に記載の方法。
［Ｃ２０］
前記複数のグラフィックス領域フレームが、レンダリングされたグラフィックスを備えない、Ｃ１４に記載の方法。
［Ｃ２１］
シンクデバイスにおいて動作可能なスクリーンミラーリングの方法であって、
前記シンクデバイスの通信インターフェースを介してソースデバイスから複数のグラフィックス領域フレームを受信することと、
ここにおいて、前記グラフィックス領域フレームの各々が、１つまたは複数のグラフィックスコマンドトークンを備え、前記複数のグラフィックス領域フレームが、スケーラブルテクスチャストリーミング、フレームベース予測、フレームドロッピング、またはデータ圧縮のうちの少なくとも１つを備える適応圧縮パイプラインによって前記ソースデバイスにおいて圧縮される、
前記複数のグラフィックス領域フレームの各々のタイムスタンプに基づいて、前記複数のグラフィックス領域フレームのうちの少なくともいくつかを選択的に表示することとを備える、方法。
［Ｃ２２］
前記複数のグラフィックス領域フレームのうちの第１のフレームが前記第１のフレームの前記タイムスタンプの後に受信された場合、前記第１のフレームを表示することを控えることをさらに備える、Ｃ２１に記載の方法。
［Ｃ２３］
前記第１のフレームをレンダリングすることをさらに備える、Ｃ２２に記載の方法。
［Ｃ２４］
前記複数のグラフィックス領域フレームのうちのあるフレームが前記フレームのタイムスタンプの後に前記シンクデバイスに到着した場合、前記フレームを表示することを控えることをさらに備える、Ｃ２１に記載の方法。
［Ｃ２５］
前記１つまたは複数のグラフィックスコマンドトークンがＯｐｅｎＧＬ（オープングラフィックスライブラリ）コマンドトークンを備える、Ｃ２１に記載の方法。
［Ｃ２６］
前記複数のグラフィックス領域フレームが、レンダリングされたグラフィックスを備えない、Ｃ２１に記載の方法。
【図１】
0006595006.tif 000002
【図２】
0006595006.tif 000003
【図３】
0006595006.tif 000004
【図４】
0006595006.tif 000005
【図５】
0006595006.tif 000006
【図６】
0006595006.tif 000007
【図７】
0006595006.tif 000008
【図８】
0006595006.tif 000009
【図９】
0006595006.tif 000010
【図１０】
0006595006.tif 000011
【図１１】
0006595006.tif 000012
【図１２】
0006595006.tif 000013
【図１３】
0006595006.tif 000014
【図１４】
0006595006.tif 000015