(57)【要約】ユニバーサルスクリーンコーデックを提供するための方法及びシステムが説明される。１つの方法は、複数のスクリーンフレームを含むスクリーンコンテンツを受信するステップであって、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、複数のタイプのスクリーンコンテンツを含む、ステップを含む。当該方法は、規格ベースのコーデックに準拠する符号化ビットストリームを生成するために、１つのコーデックを用いて、前記複数のタイプのスクリーンコンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップをさらに含む。前記複数のタイプのスクリーンコンテンツは、テキストコンテンツ、ビデオコンテンツ、又は画像コンテンツを含み得る。様々なコンテンツタイプを含むブロックが、個々に及び集合的に、符号化され得る。
2016534654.tif 000002
【特許請求の範囲】
【請求項１】
複数のスクリーンフレームを含むスクリーンコンテンツを受信するステップであって、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、複数のタイプのスクリーンコンテンツを含む、ステップと、
規格ベースのコーデックに準拠する符号化ビットストリームを生成するために、１つのコーデックを用いて、前記複数のタイプのスクリーンコンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップと、
を含む方法。
【請求項２】
前記複数のタイプのスクリーンコンテンツは、テキストコンテンツ、画像コンテンツ、及びビデオコンテンツを含む、請求項１記載の方法。
【請求項３】
前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップは、
前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを、複数の領域に分離するステップと、
前記複数の領域のうちの第１の領域が第１のコンテンツタイプを含み、前記複数の領域のうちの第２の領域が第２のコンテンツタイプを含むと判定するステップであって、前記第１のコンテンツタイプ及び前記第２のコンテンツタイプは、前記複数のタイプに含まれている、ステップと、
前記第１のコンテンツタイプ及び前記第２のコンテンツタイプに基づくパラメータを用いて、前記第１の領域及び前記第２の領域を別々に符号化して、第１の符号化領域及び第２の符号化領域を生成するステップと、
結合された符号化フレームをエントロピ符号化部に渡すステップであって、前記結合された符号化フレームは、前記第１の符号化領域及び前記第２の符号化領域を少なくとも含む、ステップと、
前記エントロピ符号化部において、前記結合された符号化フレームから、前記の符号化された少なくとも１つのスクリーンフレームを生成するステップと、
を含む、請求項１記載の方法。
【請求項４】
前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップは、
フレームプレ解析を実行するステップと、
前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームに含まれるマクロブロックを処理するステップと、
前記マクロブロックの各々に対してエントロピ符号化を実行することにより、前記の符号化された少なくとも１つのスクリーンフレームを生成するステップと、
を含む、請求項１記載の方法。
【請求項５】
前記の符号化された少なくとも１つのスクリーンフレームと前記の符号化された少なくとも１つのスクリーンフレームを説明するメタデータとを、リモートシステムに送信するステップ
をさらに含む、請求項１記載の方法。
【請求項６】
前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップは、
コンテンツタイプに少なくとも部分的に基づいて、動き推定プロセスを実行するステップ
を含む、請求項１記載の方法。
【請求項７】
前記動き推定プロセスは、重み付き動き推定プロセスを含む、請求項６記載の方法。
【請求項８】
前記動き推定プロセスは、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームに含まれるビデオコンテンツに対してダウンサンプリングを実行する、請求項６記載の方法。
【請求項９】
コンピューティングシステムであって、
プログラマブル回路と、
コンピュータ実行可能な命令を含むメモリであって、前記コンピュータ実行可能な命令は、実行されると、前記コンピューティングシステムに、
複数のスクリーンフレームをエンコーダに提供させ、ここで、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、複数のタイプのスクリーンコンテンツを含み、
規格ベースのコーデックに準拠する符号化ビットストリームを生成させるために、１つのコーデックを用いて、前記複数のタイプのスクリーンコンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化させる、
メモリと、
を含むコンピューティングシステム
を備えたシステム。
【請求項１０】
コンピュータ実行可能な命令を記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ実行可能な命令は、コンピューティングシステムにより実行されると、前記コンピューティングシステムに、
複数のスクリーンフレームを含むスクリーンコンテンツを受信するステップであって、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、テキストコンテンツ、ビデオコンテンツ、及び画像コンテンツを含む、ステップと、
規格ベースのコーデックに準拠する符号化ビットストリームを生成するために、１つのコーデックを用いて、前記テキストコンテンツ、前記ビデオコンテンツ、及び前記画像コンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップと、
を含む方法を実行させる、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングシステムによりディスプレイ上にユーザに対して表示されるスクリーンコンテンツ、又は情報を説明するデータは、一般に、複数の異なるタイプのコンテンツを含む。これらは、例えば、テキストコンテンツ、ビデオコンテンツ、静的画像（例えば、ウィンドウ又は他のＧＵＩ要素の表示）、及び、スライド又は他のプレゼンテーション資料を含み得る。例えば、２以上のリモートコンピューティングシステムが、共通の表示を共有できるように、スクリーンコンテンツが、ますます、リモートで配信されるようになってきており、２人のリモートに位置する個人が、同じスクリーンを同時に閲覧することが可能になっている、又は、電話会議においてスクリーンが複数人の個人間で共有されるようになっている。スクリーンコンテンツがリモートで配信されるので、増大するスクリーン解像度に起因して、帯域幅を節約し伝送の効率を向上させるために、このコンテンツを、その本来のビットマップサイズよりも小さいサイズに圧縮することが望ましい。
【０００２】
スクリーンコンテンツ等のグラフィカルデータについて、複数の圧縮解像度が存在するが、これらの圧縮解像度は、可変のスクリーンコンテンツとともに使用するには不十分である。例えば、従来のＭＰＥＧ（moving  picture  experts  group）コーデックは、ビデオコンテンツについて満足のいく圧縮を提供している。なぜならば、その圧縮解像度は、連続するフレーム間の差に依拠するからである。さらに、多くのデバイスは、符号化データを効率的に復号することができるＭＰＥＧデコーダを統合している。しかしながら、ＭＰＥＧ符号化は、やはり時間とともに変化し得る非ビデオコンテンツについては十分なデータ圧縮を提供せず、したがって、スクリーンコンテンツについては、特にリモートスクリーン表示については、通常使用されない。
【０００３】
上記問題に対処するために、コーデック群の混合が、グラフィカルデータのリモート配信のために使用され得る。例えば、テキストデータについては、可逆コーデック（lossless  codec）が使用され得るのに対し、スクリーン背景データ又はビデオデータについては、それらのデータを圧縮する不可逆コーデック（lossy  codec）が使用され得る（例えば、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４）。さらに、いくつかの場合において、不可逆圧縮は、段階的に（on  a  progressive  basis）実行され得る。しかしながら、混合コーデックのこの使用は、問題を生じさせる。第１に、グラフィカルデータを符号化するために、２以上のコーデックが使用されるので、複数の異なるコーデックが、グラフィカルデータを受信するリモートコンピューティングシステムにおいても使用される。特にリモートコンピューティングシステムがシンクライアントデバイスである場合、そのような全てのコーデックが、ネイティブハードウェアによりサポートされている可能性は低い。したがって、汎用プロセッサ上で復号するソフトウェアが実行されるが、これは、多くのコンピューティングリソースを要するものであり、かなりの電力を消費する。さらに、スクリーン画像の異なる領域における損失レベル及び異なる処理技術を有する異なるコーデックの使用を理由として、グラフィカルな残影（remnant）又はアーチファクトが、低帯域幅状況において発生し得る。
【発明の概要】
【０００４】
要約すると、本開示は、スクリーンコンテンツのために使用されるユニバーサルコーデック（universal  codec）に関する。詳細には、本開示は、一般に、複数の異なるタイプのスクリーンコンテンツを含むスクリーンフレーム等のスクリーンコンテンツを処理するための方法及びシステムに関する。そのようなスクリーンコンテンツは、テキストコンテンツ、ビデオコンテンツ、画像コンテンツ、特殊エフェクト（special  effect）コンテンツ、又は他のタイプのコンテンツを含み得る。このユニバーサルコーデックは、規格ベースのコーデック（standards-based  codec）に準拠し得るものであり、これにより、符号化されたスクリーンコンテンツを受信するコンピューティングシステムは、そのようなコンピューティングシステムに通常組み込まれる専用処理ユニットを用いて、そのコンテンツを復号することが可能になり、電力を大量に消費するソフトウェア復号プロセスを避けることが可能になる。
【０００５】
第１の態様において、方法は、複数のスクリーンフレームを含むスクリーンコンテンツを受信するステップであって、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、複数のタイプのスクリーンコンテンツを含む、ステップを含む。当該方法は、規格ベースのコーデックに準拠する符号化ビットストリームを生成するために、１つのコーデックを用いて、前記複数のタイプのスクリーンコンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップをさらに含む。
【０００６】
第２の態様において、システムは、プログラマブル回路と、コンピュータ実行可能な命令を含むメモリと、を有するコンピューティングシステムを含む。前記コンピュータ実行可能な命令は、実行されると、前記コンピューティングシステムに、複数のスクリーンフレームをエンコーダに提供させ、ここで、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、複数のタイプのスクリーンコンテンツを含む。前記コンピュータ実行可能な命令は、前記コンピューティングシステムに、さらに、規格ベースのコーデックに準拠する符号化ビットストリームを生成させるために、１つのコーデックを用いて、前記複数のタイプのスクリーンコンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化させる。
【０００７】
第３の態様において、コンピュータ実行可能な命令を記憶しているコンピュータ読み取り可能な記憶媒体が開示される。前記コンピュータ実行可能な命令は、コンピューティングシステムにより実行されると、前記コンピューティングシステムに、複数のスクリーンフレームを含むスクリーンコンテンツを受信するステップであって、前記複数のスクリーンフレームのうちの少なくとも１つのスクリーンフレームは、テキストコンテンツ、ビデオコンテンツ、及び画像コンテンツを含む、ステップを含む方法を実行させる。前記方法は、規格ベースのコーデックに準拠する符号化ビットストリームを生成するために、１つのコーデックを用いて、前記テキストコンテンツ、前記ビデオコンテンツ、及び前記画像コンテンツを含む、前記複数のスクリーンフレームのうちの前記少なくとも１つのスクリーンフレームを符号化するステップをさらに含む。
【０００８】
この発明の概要は、発明を実施するための形態において以下でさらに説明するコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
【図面の簡単な説明】
【０００９】
【図１】リモートソースからコンピューティングシステムにおいて受信されるグラフィカルデータが処理されるシステムの例示的な概略構成を示す図。
【図２】複数のコーデックを利用する例示的なリモートデスクトッププロトコルパイプライン構成を示す図。
【図３】本開示の例示的な実施形態に従った、ユニバーサルスクリーンコンテンツコーデックを利用する例示的なリモートデスクトッププロトコルパイプライン構成を示す図。
【図４】図３の構成内でのデータフローの論理図。
【図５】例示的な実施形態に従った、ユニバーサルスクリーンコンテンツコーデックを実装するために実行される例示的なプロセスのセットのフローチャート。
【図６】例示的な実施形態に従った、ユニバーサルスクリーンコンテンツコーデックの一実装の詳細なアーキテクチャ図。
【図７】例示的な実施形態に従った、ビデオコンテンツエンコーダにおいて使用される例示的なデータフローを示す図。
【図８】例示的な実施形態に従った、画像コンテンツエンコーダにおいて使用される例示的なデータフローを示す図。
【図９】例示的な実施形態に従った、特殊エフェクトコンテンツエンコーダにおいて使用される例示的なデータフローを示す図。
【図１０】例示的な実施形態に従った、テキストコンテンツエンコーダにおいて使用される例示的なデータフローを示す図。
【図１１】例示的な実施形態に従った、図７に示されるビデオコンテンツエンコーダの動き推定コンポーネント内での例示的なデータフローを示す図。
【図１２】例示的な実施形態に従った、図１１のビデオ動き推定コンポーネントにおいて使用される矩形動き探索の論理図。
【図１３】例示的な実施形態に従った、図１１のビデオ動き推定コンポーネントにおいて使用される菱形動き探索の論理図。
【図１４】例示的な実施形態に従った、図１０のテキスト動き推定コンポーネントにおいて使用される逆六角形動き探索の論理図。
【図１５】例えば、図９及び図１０の特殊エフェクトコンテンツエンコーダ及びテキストコンテンツエンコーダにそれぞれ組み込まれる動きベクトル平滑化フィルタの例示的なアーキテクチャを示す図。
【図１６】例示的な実施形態に従った、図８の画像コンテンツエンコーダに含まれる動き推定コンポーネントの例示的なアーキテクチャを示す図。
【図１７】例示的な実施形態に従った、図１６の動き推定コンポーネントにおいて使用される矩形動き探索の論理図。
【図１８】本発明の実施形態を実施することができるコンピューティングデバイスの例示的な物理コンポーネントを示すブロック図。
【図１９Ａ】本発明の実施形態を実施することができるモバイルコンピューティングデバイスの簡略化されたブロック図。
【図１９Ｂ】本発明の実施形態を実施することができるモバイルコンピューティングデバイスの簡略化されたブロック図。
【図２０】本発明の実施形態を実施することができる分散コンピューティングシステムの簡略化されたブロック図。
【発明を実施するための形態】
【００１０】
簡潔に上述したように、本発明の実施形態は、スクリーンコンテンツのために使用されるユニバーサルコーデックを対象とする。詳細には、本開示は、一般に、複数の異なるタイプのスクリーンコンテンツを含むスクリーンフレーム等のスクリーンコンテンツを処理するための方法及びシステムに関する。そのようなスクリーンコンテンツは、テキストコンテンツ、ビデオコンテンツ、画像コンテンツ、特殊エフェクトコンテンツ、又は他のタイプのコンテンツを含み得る。このユニバーサルコーデックは、規格ベースのコーデックに準拠し得るものであり、これにより、符号化されたスクリーンコンテンツを受信するコンピューティングシステムは、そのようなコンピューティングシステムに通常組み込まれる専用処理ユニットを用いて、そのコンテンツを復号することが可能になり、電力を大量に消費するソフトウェア復号プロセスを避けることが可能になる。
【００１１】
リモートスクリーン表示システムにおけるいくつかの制限に対処するために、リモートデスクトッププロトコル（ＲＤＰ）が、ワシントン州レッドモンドのマイクロソフト（登録商標）コーポレーションにより策定された。このプロトコルにおいて、スクリーンフレームが解析され、異なるコンテンツが異なって分類される。ＲＤＰが使用される場合、後続の再構成及び表示のために圧縮されてリモートシステムに送信されるスクリーンコンテンツのタイプに基づいて、コーデック群の混合集合が適用され得る。例えば、スクリーンのテキスト部分については、可逆コーデックが使用され得るのに対し、画像データ及び背景データについては、画質を段階的に改善させるために、プログレッシブコーデック（progressive  codec）が使用される。スクリーンコンテンツのビデオ部分は、ＭＰＥＧ４  ＡＶＣ／Ｈ．２６４等の規格ベースのビデオコーデックを用いて符号化される。そのような規格ベースのコーデックは、従来では、ビデオコンテンツ又は他の１つのタイプのコンテンツを符号化することに制限されていた。したがって、複数のコーデックの集合を使用することにより、ＲＤＰは、各コンテンツタイプを異なるように処理することが可能になり、急激に変化する可能性が低いコンテンツの品質を維持することができるようにしつつ、より動的な変化するコンテンツ（例えば、ビデオ）のより低い品質を可能にしている。しかしながら、コーデックのこの混合集合は、符号化して送信する側のコンピューティングデバイス及び受信して復号する側のコンピューティングシステムの両方に、使用される全てのコーデックに準拠するよう要求することにより、エンコーダ及びデコーダの両方において、計算の複雑さをもたらす。さらに、コーデックのこの混合は、特に低帯域幅状況において、スクリーンコンテンツ内の視覚的アーチファクトをしばしばもたらす。
【００１２】
いくつかの実施形態においては、既存のＲＤＰソリューションとは対照的に、本開示のユニバーサルコーデックは、その出力ビットストリームが、ＭＰＥＧベースのコーデック等の特定の規格ベースのコーデックに準拠するように、構成される。したがって、複数のコンテンツタイプが送信される場合によく見られるような複数のコーデックを使用するのではなく、１つのコーデックが使用され得、その符号化は、送信される特定のタイプのコンテンツ向けに合わせられる。これは、異なるコーデックを用いて符号化された領域間の境界で生じ得るスクリーン画質の可能性のある不一致を防止させる。そのビットストリームを受信したコンピューティングシステムは、受信したビットストリームを復号するために、通常使用されるハードウェアデコーダを利用することができる。さらに、可逆コーデックと不可逆コーデックとの間の異なる属性を理由として、混合コーデックのビットレートを制御することは難しい。これは、受信側コンピュータの汎用プロセッサにおいてビットストリームを復号するのを避けさせ、結果として、受信側コンピュータの電力消費を低下させる。
【００１３】
本開示のいくつかの実施形態において、ユニバーサルコーデックは、特定の領域の属性を取得するためのヒューリスティックヒストグラム処理（heuristical  histogram  processing）又は動き推定を含むフレームプレ解析モジュール（frame  pre-analysis  module）を用いて実装される。分類部（classifier）は、フレームの各特定の領域におけるコンテンツのタイプを判定して、それらのコンテンツタイプを、異なるマクロブロックに分離することができる。これらのマクロブロックは、コンテンツのタイプに基づく異なるパラメータ及び品質を用いて符号化され得、異なるように（例えば、異なる動き推定技術を用いて）処理され得る。しかしながら、コンテンツの各タイプは、結果として生じる出力が、規格ベースのコーデックに準拠するビットストリームとして提供されるように、概して符号化される。そのような規格ベースのコーデックの一例は、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４であり得るが、ＨＥＶＣ／Ｈ．２６５等の他のコーデックが使用されてもよい。
【００１４】
図１は、リモートスクリーンコンテンツ配信を実行することができ、ユニバーサルコーデックを実装することができるシステム１００の例示的な概略構成を示している。図示されるように、システム１００は、コンピューティングデバイス１０２を含む。コンピューティングデバイス１０２は、ＣＰＵ等のプログラマブル回路１０４を含む。コンピューティングデバイス１０２は、プログラマブル回路１０４により実行可能なコンピューティング命令を記憶するよう構成されるメモリ１０６をさらに含む。コンピューティングデバイス１０２として使用するのに適したコンピューティングシステムの例示的なタイプは、図１２〜図１４に関連して以下で説明される。
【００１５】
一般に、メモリ１０６は、リモートデスクトッププロトコルソフトウェア１０８及びエンコーダ１１０を含む。リモートデスクトッププロトコルソフトウェア１０８は、一般に、コンピューティングデバイス１０２のローカルディスプレイ１１２上に提示されるスクリーンコンテンツを、リモートデバイス１２０として示されるリモートコンピューティングデバイス上で再現するよう構成される。いくつかの実施形態において、リモートデスクトッププロトコルソフトウェア１０８は、ワシントン州レッドモンドのマイクロソフト（登録商標）コーポレーションにより策定されたリモートデスクトッププロトコル（ＲＤＰ）に準拠するコンテンツを生成する。
【００１６】
以下でより詳細に説明するように、エンコーダ１１０は、複数のコンテンツタイプ（例えば、テキスト、ビデオ、画像）から構成されるコンテンツが、リモートデバイス１２０への送信のために圧縮されるように、そのようなコンテンツにユニバーサルコンテンツコーデックを適用するよう構成され得る。例示的な実施形態において、エンコーダ１１０は、ＭＰＥＧベースのコーデック等の規格ベースのコーデックに準拠するビットストリームを生成することができる。特定の例において、エンコーダ１１０は、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４コーデック又はＨＥＶＣ／Ｈ．２６５コーデック等の１以上のコーデックに準拠し得る。他のタイプの規格ベースの符号化方式又はコーデックが使用されてもよい。
【００１７】
図１に示されるように、符号化されたスクリーンコンテンツが、コンピューティングデバイス１０２の通信インタフェース１１４を介して、リモートデバイス１２０に送信され得る。通信インタフェース１１４は、符号化されたスクリーンコンテンツを、通信接続１１６（例えば、インターネット）を介して、リモートデバイス１２０の通信インタフェース１３４に提供する。一般に、以下で説明するように、通信接続１１６は、例えば、追加のトラフィックが、通信接続１１６を形成するネットワーク上で発生することに起因して、予測できない利用可能な帯域幅を有し得る。したがって、異なる品質のデータが、通信接続１１６を介して送信され得る。
【００１８】
本開示のコンテキストでは、いくつかの実施形態において、リモートデバイス１２０は、ＣＰＵ等のメインプログラマブル回路１２４及び専用プログラマブル回路１２５を含む。例示的な実施形態において、専用プログラマブル回路１２５は、特定の規格（例えば、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４）を有するコンテンツを符号化又は復号するよう設計されたＭＰＥＧデコーダ等の規格ベースのデコーダである。特定の実施形態において、リモートデバイス１２０は、コンピューティングデバイス１０２に対してローカルにあるクライアントデバイス又はコンピューティングデバイス１０２からリモートにあるクライアントデバイスに対応し、スクリーンコンテンツを受信するために使用可能なクライアントデバイスとして動作する。したがって、リモートデバイス１２０の観点からは、コンピューティングデバイス１０２は、グラフィカルコンテンツ（例えば、表示コンテンツ）のリモートソースに対応する。
【００１９】
さらに、リモートデバイス１２０は、メモリ１２６及びディスプレイ１２８を含む。メモリ１２６は、リモートデスクトップクライアント１３０及び表示バッファ１３２を含む。リモートデスクトップクライアント１３０は、例えば、コンピューティングデバイス１０２から受信されるスクリーンコンテンツを受信して復号するよう構成されるソフトウェアコンポーネントであり得る。いくつかの実施形態において、リモートデスクトップクライアント１３０は、リモートスクリーンをディスプレイ１２８上に提示するために、スクリーンコンテンツを受信して処理するよう構成される。スクリーンコンテンツは、いくつかの実施形態において、ワシントン州レッドモンドのマイクロソフト（登録商標）コーポレーションにより策定されたリモートデスクトッププロトコルに従って送信され得る。表示バッファ１３２は、アップデートが利用可能なときに領域が選択されて置換され得るディスプレイ１２８上に、例えばビットマップとして表示されるスクリーンコンテンツの現在のコピーを、メモリ内に記憶する。
【００２０】
次に図２を参照すると、ＲＤＰプロトコルを実装する例示的なパイプライン構成２００が示されている。図２に見られるように、パイプライン構成２００は、ＲＤＰパイプライン２０２を含む。ＲＤＰパイプライン２０２は、スクリーンキャプチャコンポーネント（図示せず）からスクリーン画像を受信する入力モジュール２０４を含む。スクリーンキャプチャコンポーネントは、そのようなスクリーン画像（フレーム）をＲＤＰパイプライン２０２に渡す。違い及び差分処理部（difference  and  delta  processor）２０６は、現フレームと直前フレームとの間の差を求め、キャッシュ処理部２０８は、後続フレームとの比較のために、現フレームをキャッシュする。動き処理部２１０は、隣接フレーム間でなされた動きの量を求める。
【００２１】
図示される実施形態において、分類コンポーネント２１２は、各スクリーンフレーム内のコンテンツを、ビデオコンテンツ２１４、スクリーン画像又は背景コンテンツ２１６、又はテキストコンテンツ２１８のいずれかとして分類する。例えば、特定のスクリーンフレームは、複数のマクロブロックに分割され得、各マクロブロックは、そのマクロブロック内のコンテンツに応じて分類される。例えば、ビデオコンテンツ２１４は、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４等のＭＰＥＧベースのコーデックに従って符号化を実行するものとして図示されているビデオエンコーダ２２０に渡される。スクリーン画像又は背景コンテンツ２１６は、低品質画像データが最初に符号化されてリモートシステムに提供され、次いで、帯域幅が許容する限り経時的に改善される反復的改善符号化プロセス（iteratively  improving  encoding  process）を実行するプログレッシブエンコーダ２２２に渡される。さらに、テキストコンテンツ２１８は、クリアな可逆コーデックを用いてテキストを符号化するテキストエンコーダ２２４に提供される。ビデオエンコーダ２２０、プログレッシブエンコーダ２２２、及びテキストエンコーダ２２４の各々からの符号化されたコンテンツが、ＲＤＰパイプライン２０２内の多重化部２２６に渡され、多重化部２２６は、それらのマクロブロックを集約し、リモートシステムへの対応するビットストリームを出力する。
【００２２】
対照的に、図３は、本開示の例示的な実施形態に従った、ユニバーサルスクリーンコンテンツコーデックを利用する例示的なリモートデスクトッププロトコルパイプライン構成３００を示している。図３に見られるように、パイプライン構成３００は、ＲＤＰパイプライン３０２を含む。ＲＤＰパイプライン３０２は、スクリーンキャプチャコンポーネント（図示せず）からスクリーン画像を受信する入力モジュール３０４を含む。スクリーンキャプチャコンポーネントは、そのようなスクリーン画像（フレーム）をＲＤＰパイプライン３０２に渡す。ＲＤＰパイプライン３０２は、キャプチャされたフレームの全てをユニバーサルエンコーダ３０６に渡し、ユニバーサルエンコーダ３０６は、共通のユニバーサルスクリーンコンテンツコーデックを用いて、スクリーンフレーム全体を符号化する。ユニバーサルエンコーダ３０６からの出力が、ＲＤＰパイプライン３０２内の出力モジュール３０８に提供され、出力モジュール３０８が、今度は、受信側デバイスのハードウェアデコーダ（例えば、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４ハードウェアデコーダ）を用いて容易に復号することができる、１つの規格ベースのコーデックに準拠するビットストリームを出力する。
【００２３】
次に図４を参照すると、図３のパイプライン構成３００内でのデータフロー４００の論理図が示されている。図示されるように、ＲＤＰパイプライン３０２は、キャプチャされたスクリーンフレームを受信し、そのようなスクリーンフレームデータをコーデック前処理部４０４に提供するＲＤＰスケジューリング部４０２を含む。コーデック前処理部４０４は、フルスクリーンフレームを、スクリーン未処理データ（screen  raw  data）４０６として、ビットレート情報及び色変換情報、並びに低複雑度でデータを符号化するかどうかを指示するフラグとともに、ユニバーサルエンコーダ３０６に送信する。ユニバーサルエンコーダ３０６は、フルスクリーンコーデックユニット４０８において、スクリーン未処理データ４０６及び関連する符号化情報を受信する。フルスクリーンコーデックユニット４０８は、フルスクリーンフレームの符号化バージョンを生成することにより、符号化ビットストリーム４１０及びその符号化を説明するメタデータ４１２を生成する。符号化を説明するメタデータ４１２は、例えば、ＲＤＰパイプライン３０２内のコーデック後処理部４１４に提供される量子化パラメータ（ＱＰ）を含む。さらに、ＱＰを使用して、キャプチャを止めるかキャプチャを続けるかを決定することもできる。一般に、これは、コーデック後処理部４１４に、符号化されたスクリーンフレームの品質を通知する。コーデック後処理部４１４は、ＲＤＰスケジューリング部４０２が、スクリーンフレームの符号化を再スケジューリングできるように、量子化パラメータに基づいて、符号化のための１以上のパラメータを調整するようＲＤＰスケジューリング部４０２に指示することができ（例えば、品質が、利用可能な帯域幅に基づいて不十分である場合等に）。コーデック後処理部４１４はまた、後続スクリーンフレームの解析及びスケジューリングにおける使用のために、符号化ビットストリームをＲＤＰスケジューリング部に提供する。
【００２４】
スクリーンフレーム全体が受け入れ可能であるとコーデック後処理部４１４が判定すると、コーデック後処理部４１４は、符号化ビットストリーム４１０及びメタデータ４１２が表示のためにリモートシステムに送信される準備ができていると多重化部４１６に指示し、多重化部４１６は、送信のために、ビデオを、任意の他の付随データ（例えば、オーディオデータ又は他のデータ）と結合する。代替的に、コーデック後処理部４１４は、符号化ビットストリーム４１０を送信するよう多重化部４１６に指示することを選択してもよく、画像を経時的に段階的に改善することを試みるようＲＤＰスケジューリング部４０２に指示してもよい。このループプロセスは、コーデック後処理部４１４により判定される、品質の予め定められた閾値に達するまで、又は、フレームのための十分な帯域幅が存在しなくなるまで（その時点において、コーデック後処理部４１４は、品質閾値に達したかどうかにかかわらず、スクリーンフレームを送信するよう多重化４１６にシグナリングする）、概して繰り返され得る。
【００２５】
次に図５を参照すると、例示的な実施形態に従った、ユニバーサルスクリーンコンテンツコーデックを実装するために実行される例示的な方法５００のフローチャートが示されている。方法５００は、一般に、各スクリーンフレームがキャプチャされた後であって、表示のためにリモートコンピューティングシステムに送信される前に、各スクリーンフレームに対して実行されるシーケンシャルな動作のセットとして実施される。方法５００の動作は、いくつかの実施形態において、図４のフルスクリーンコーデックユニット４０８により実行され得る。
【００２６】
図示される実施形態において、フルスクリーンフレームが、入力動作５０２において受信され、フレームプレ解析動作５０４に渡される。フレームプレ解析動作５０４は、入力スクリーンフレームのサイズ、コンテンツタイプ、及び、入力フレームスクリーンを説明する他のメタデータ等の、入力スクリーンフレームの属性を算出する。フレームプレ解析動作５０４は、１６×１６ブロックサイズ等の特定のブロックサイズの符号ユニットを出力する。イントラ／インターマクロブロック処理動作５０６は、モード決定、様々なタイプの動き予測（以下でより詳細に説明する）、及びスクリーンフレームに含まれる様々なタイプのコンテンツの各々のための具体的な符号化プロセスを、各マクロブロックに対して実行する。エントロピ符号化部５０８は、イントラ／インターマクロブロック処理動作５０６の様々なコンテンツ符号化プロセスから、符号化データ及び残差係数を受信し、スクリーンコンテンツ又はグラフィカルコンテンツのために使用可能な選択された規格ベースのコーデックに一般に準拠するフォーマットで、スクリーンフレームの最終的な統合された符号化を提供する。
【００２７】
図６は、例示的な実施形態に従った、フレームプレ解析動作５０４及びイントラ／インターマクロブロック処理動作５０６の詳細を示している。プレ解析動作５０４において、シーン変化検出プロセス６０２は、シーンが前のスクリーンフレームに対して変化したかどうかを判定する。フレームが最初のフレーム又はシーン変化ポイントでない場合、フレーム間に、（すなわち、フレーム全体が再符号化されるよりも少ない、）利用され得る何らかの差が存在する。したがって、未処理スクリーンフレームが、簡易動き推定プロセス（simple  motion  estimation  process）６０４に渡され、簡易動き推定プロセス６０４は、前のスクリーンフレームに対する、スクリーンフレーム内の要素の差分絶対値和（ＳＡＤ）及び動きベクトル（ＭＶ）を生成する。
【００２８】
スクリーンフレームが、新たなフレーム又は新たなシーンである場合、又は簡易動き推定プロセス６０４における動き推定パラメータに基づく場合、フレームタイプ判定プロセス６０６は、フレームが、Ｉフレームに対応するかＰフレームに対応するかＢフレームに対応するかを判定する。一般に、Ｉフレームは、参照フレームに対応し、完全に指定されたピクチャ（fully-specified  picture）として規定される。Ｉフレームは、例えば、最初のフレーム又はシーン変化フレームであり得る。Ｐフレームは、前方予測ピクチャを規定するために使用されるのに対し、Ｂフレームは、双方向予測ピクチャを規定するために使用される。Ｐフレーム及びＢフレームは、動きベクトル及び変換係数として表現される。
【００２９】
フレームがＩフレームである場合、フレームは、ヒューリスティックヒストグラムプロセス６０８に渡され、ヒューリスティックヒストグラムプロセス６０８は、入力されたフルスクリーンコンテンツのヒストグラムを算出する。Ｉフレーム解析プロセス６１０は、算出されたヒストグラムと、同じくヒューリスティックヒストグラムプロセス６０８において算出された平均絶対差と、に基づいて、フレームの特定の領域（マクロブロック）内のデータがビデオデータに対応するか画像データに対応するかテキストデータに対応するか特殊エフェクトデータに対応するかを検出するために決定木において使用され得る、分類プロセス６１２により使用されるデータを生成する。
【００３０】
フレームがＰフレームである場合、フレームは、Ｐフレームクラスタリングプロセス６１４に渡され、Ｐフレームクラスタリングプロセス６１４は、差分絶対値和及び動きベクトルを使用して、分類情報を統合する。Ｐフレーム解析プロセス６１６は、次いで、フレームを解析して、分類プロセス６１２がフレームの各マクロブロック内のコンテンツのタイプを判定するのを助けるメタデータを生成する。同様に、フレームがＢフレームである場合、フレームは、Ｂフレームクラスタリングプロセス６１８に渡され、Ｂフレームクラスタリングプロセス６１８は、差分絶対値和及び動きベクトルを使用して、差分絶対値和情報を統合する。Ｂフレーム解析プロセス６２０は、次いで、フレームを解析して、分類プロセス６１２がフレームの各マクロブロック内のコンテンツのタイプを判定するのを助けるメタデータを生成する。Ｐフレーム及びＢフレームの場合、これらは、テキストコンテンツタイプに対応する可能性が低いことに留意されたい。なぜならば、これらは、前のフレームからの差として規定される動き変化フレームを表し、（例えば、ビデオ又は画像の動きにおけるような、）フレーム間の動きを符号化するよう意図されているからである。
【００３１】
分類プロセス６１２は、解析プロセス６１０、６１６、６２０により生成されたメタデータを使用して、メタデータ及びマクロブロックデータを、イントラ／インターマクロブロック処理動作５０６における様々なコンテンツ符号化プロセスに出力する。コンテンツ符号化プロセスは、例えば、様々なタイプのコンテンツに対して実行される符号化をカスタマイズして、ユニバーサルコーデックが、１つのフレーム内に存在するコンテンツのタイプに基づいてそのフレーム内の品質を選択的に変えることを可能にするために、使用され得る。詳細には、図示される実施形態において、分類プロセス６１２は、ビデオコンテンツ６２２をビデオマクロブロック符号化プロセス６２４にルーティングし、スクリーン及び背景コンテンツ６２６をスクリーン及び背景マクロブロック符号化プロセス６２８にルーティングし、特殊エフェクトコンテンツ６３０を特殊エフェクトマクロブロック符号化プロセス６３２にルーティングし、テキストコンテンツ６３４をテキストマクロブロック符号化プロセス６３６にルーティングする。一般に、符号化プロセス６２４、６２８、６３２、６３６の各々は、異なるモード決定及び動き推定アルゴリズムを使用して、各マクロブロックを異なるように符号化することができる。そのような符号化プロセスの例は、図７〜図１０に関連して以下でさらに説明される。符号化プロセス６２４、６２８、６３２、６３６の各々は、符号化されたコンテンツをエントロピ符号化部５０８にルーティングすることができ、エントロピ符号化部５０８は、上述したように、符号化されたマクロブロックを結合し、ビットストリームとしてリモートシステムに送信するために、規格ベースのコーデックに準拠するようにスクリーンフレーム全体を符号化する。
【００３２】
次に図７を参照すると、ビデオエンコーダ７００において使用される例示的なデータフローが示されている。例示的な実施形態において、ビデオエンコーダ７００を使用して、図６のビデオマクロブロック符号化プロセス６２４を実行することができる。一般に、ビデオエンコーダ７００は、ビデオエンコーダにおいて受信されたモード決定に基づいて、イントラマクロブロックコンテンツ７０２とインターマクロブロックコンテンツ７０４とを分離する。イントラマクロブロックコンテンツ７０２に関して、これがビデオデータであることが既知であるので、高複雑度イントラマクロブロック予測動作７０６が使用され、これは、全てのモード（例えば、１６×１６モード、８×８モード、及び４×４モード）のためのイントラ予測が実行され得ることを意味する。インターマクロブロックコンテンツ７０４に関して、ハイブリッド動き推定動作７０８が使用される。ハイブリッド動き推定動作７０８は、フレームにわたる正しい／正確な動き及び視覚品質の維持を確実にするために、インターマクロブロックコンテンツ７０４に関わるブロックにわたる結合推定（combined  estimation）に基づく動き推定を実行する。ほとんどのＲＤＰコンテンツはすでに圧縮されているので、このハイブリッド動き推定動作７０８は、従来のビデオコンテンツに関してよりも高い圧縮比をもたらす。
【００３３】
高複雑度イントラマクロブロック予測動作７０６又はハイブリッド動き推定動作７０８の後、変換及び量子化動作７１０が実行され、逆量子化及び逆変換動作７１２が実行される。さらなる動き予測動作７１４がさらに実行され、予測された動きが適応ループフィルタ７１６に渡される。いくつかの実施形態において、適応ループフィルタ７１６は、適応デブロッキングフィルタとして実装され、結果として生じる符号化された画像をさらに改善させる。結果として生じた画像ブロックが、次いで、ピクチャ参照キャッシュ７１８に渡され、ピクチャ参照キャッシュ７１８は、集約されたスクリーンフレームを記憶する。ピクチャ参照キャッシュ７１８は、例えば、動き推定プロセスにおいて使用されるマクロブロック間比較を可能にするために、ハイブリッド動き推定動作７０８による使用のためにも提供されることに留意されたい。
【００３４】
次に図８を参照すると、画像コンテンツエンコーダ８００において使用される例示的なデータフローが示されている。例示的な実施形態において、画像コンテンツエンコーダ８００を使用して、図６のスクリーン及び背景マクロブロック符号化プロセス６２８を実行することができる。一般に、画像コンテンツエンコーダ８００は、上述したビデオエンコーダと同様に、画像コンテンツエンコーダ８００において受信されたモード決定に基づいて、イントラマクロブロックコンテンツ８０２とインターマクロブロックコンテンツ８０４とを分離する。画像コンテンツエンコーダ８００は、ビデオエンコーダ７００に類似する高複雑度イントラマクロブロック予測動作８０６を含む。しかしながら、画像コンテンツエンコーダ８００は、ビデオエンコーダにより実行されるハイブリッド動き推定ではなく、簡易動き推定動作８０８及び大局的動き推定動作（global  motion  estimation  operation）８１０を含む。一般に、大局的動き推定動作８１０は、例えば、文書がスクロールされた場合やウィンドウが移動された場合等、画像の大部分が動くより大きなスケールの動きのために使用され得るのに対し、簡易動き推定動作８０８は、スクリーン上で発生するより小さなスケールの動きのために使用可能であり得る。大局的動き推定動作８１０の使用は、フレーム間の動きを判定するために小さな領域に対する計算を実行する従来のビデオエンコーダよりも効率よく高精度の動き推定を可能にする。いくつかの実施形態において、簡易動き推定動作８０８及び大局的動き推定動作８１０は、図１６に示されるように、以下のように実行され得る。
【００３５】
ビデオエンコーダと同様に、高複雑度イントラマクロブロック予測動作８０６又は大局的動き推定動作８１０の後、変換及び量子化動作８１２が実行され、逆量子化及び逆変換動作８１４が実行される。さらなる動き予測動作８１６がさらに実行され、予測された動きが適応ループフィルタ８１８に渡される。いくつかの実施形態において、適応ループフィルタ８１８は、適応デブロッキングフィルタとして実装され、結果として生じる符号化された画像をさらに改善させる。結果として生じた画像ブロックが、次いで、ピクチャ参照キャッシュ７１８に渡され、ピクチャ参照キャッシュ７１８は、全てのタイプのマクロブロックを含む集約されたスクリーンフレームを記憶する。ピクチャ参照キャッシュ７１８は、例えば、動き推定プロセスにおいて使用されるマクロブロック間比較を可能にするために、簡易動き推定動作８０８による使用のためにも提供されることに留意されたい。
【００３６】
次に図９を参照すると、特殊エフェクトコンテンツエンコーダ９００において使用される例示的なデータフローが示されている。特殊エフェクトとは、一般に、フェードインエフェクト／フェードアウトエフェクト等の、プレゼンテーションにおいて生じ得る特定のエフェクトを指す。特殊エフェクトのための特定の別個の圧縮方策を使用することにより、そのようなエフェクトのより高い圧縮が可能になり、より効率的な符号化ビットストリームにつながる。例示的な実施形態において、特殊エフェクトコンテンツエンコーダ９００を使用して、図６の特殊エフェクトマクロブロック符号化プロセス６３２を実行することができる。
【００３７】
一般に、特殊エフェクトコンテンツエンコーダ９００は、上述したビデオエンコーダ７００及び画像コンテンツエンコーダ８００と同様に、特殊エフェクトコンテンツエンコーダ９００において受信されたモード決定に基づいて、イントラマクロブロックコンテンツ９０２とインターマクロブロックコンテンツ９０４とを分離する。特殊エフェクトコンテンツエンコーダ９００は、上述したものに類似する高複雑度イントラマクロブロック予測動作９０６を含む。しかしながら、特殊エフェクトコンテンツエンコーダ９００においては、ハイブリッド動き推定又は簡易動き推定ではなく、重み付き動き推定動作９０８が実行され、その後に、動きベクトル平滑化フィルタ動作９１０が実行される。重み付き動き推定動作９０８は、輝度変化及び簡易動き検出を利用して、フレーム間の変化を検出するための計算集約的なビデオ符号化の使用を要することなく、そのような特殊エフェクトを検出する。動きベクトル平滑化フィルタ動作は、動きベクトルの符号化性能を改善させることに加えて、特殊エフェクトスクリーンコンテンツの視覚品質を改善させるために、提供される。動きベクトル平滑化フィルタ動作９１０を実行するために使用することができる動きベクトル平滑化フィルタの一例が、図１５に示され、以下でより詳細に説明される。いくつかの実施形態において、重み付き動き推定動作９０８及び動きベクトル平滑化フィルタ動作９１０の使用は、そのような変化の符号化に関してかなりの（例えば、最大約２０倍の又は約２０倍を超える）性能変化を提供する。
【００３８】
ビデオエンコーダ７００及び画像コンテンツエンコーダ８００と同様に、高複雑度イントラマクロブロック予測動作９０６又は動きベクトル平滑化フィルタ動作９１０の後、変換及び量子化動作９１２が実行され、逆量子化及び逆変換動作９１４が実行される。さらなる動き予測動作９１６がさらに実行され、予測された動きが適応ループフィルタ９１８に渡される。いくつかの実施形態において、適応ループフィルタ９１８は、適応デブロッキングフィルタとして実装され、結果として生じる符号化された画像をさらに改善させる。結果として生じた画像ブロックが、次いで、ピクチャ参照キャッシュ７１８に渡される。ピクチャ参照キャッシュ７１８は、例えば、動き推定プロセスにおいて使用されるマクロブロック間比較を可能にするために、重み付き動き推定動作９０８による使用のためにも提供されることに留意されたい。
【００３９】
図１０を参照すると、テキストコンテンツエンコーダ１０００において使用される例示的なデータフローが示されている。例示的な実施形態において、テキストコンテンツエンコーダ１０００を使用して、図６のテキストマクロブロック符号化プロセス６３６を実行することができる。エンコーダ７００〜９００に関して説明したように、テキストコンテンツエンコーダ１０００は、テキストコンテンツエンコーダ１０００において受信されたモード決定に基づいて、イントラマクロブロックコンテンツ１００２とインターマクロブロックコンテンツ１００４とを分離する。テキストコンテンツエンコーダ１０００は、イントラマクロブロックコンテンツ１００２に対して低複雑度動き予測動作１００６を実行する。なぜならば、このコンテンツは、一般に、低複雑度であるからである。詳細には、いくつかの実施形態において、低複雑度動き予測動作１００６は、４×４予測モードのみを実行する。インターマクロブロックコンテンツ１００４に関して、テキストコンテンツエンコーダ１０００は、テキスト動き推定動作１００８を実行し、テキスト動き推定動作１００８は、今度は、いくつかの実施形態において、逆六角形動き推定（inverse  hexagon  motion  estimation）を実行する。そのような動き推定の一例が、図１４においてグラフィカルに示されており、垂直方向の動き推定、水平方向の動き推定、及び角度の動き推定（angled  motion  estimation）が、テキストブロックに対して実行される。テキスト動き推定動作１００８に続いて、動きベクトル平滑化フィルタ１０１０が適用され得、これは、図１５に例に示されるようなものであり得、以下でより詳細に説明される。
【００４０】
エンコーダ７００〜９００と同様に、低複雑度動き予測動作１００６又は動きベクトル平滑化フィルタ動作１０１０の後、変換及び量子化動作１０１２が実行され、逆量子化及び逆変換動作１０１４が実行される。さらなる動き予測動作１０１６がさらに実行される。結果として生じたテキストブロックが、次いで、ピクチャ参照キャッシュ７１８に渡され、ピクチャ参照キャッシュ７１８は、集約されたスクリーンフレームを記憶する。ピクチャ参照キャッシュ７１８は、例えば、動き推定プロセスにおいて使用されるマクロブロック間比較を可能にするために、テキスト動き推定動作１００８による使用のためにも提供されることに留意されたい。
【００４１】
図７〜図１０を概括的に参照すると、各スクリーンフレーム内で検出されたコンテンツの異なるタイプに基づいて、異なる動き推定が実行され得ることに留意されたい。さらに、前述したように、スクリーンフレームの画像部分、テキスト部分、及びビデオ部分の可読性又はピクチャ品質を保証するために、各ブロックのための異なる品質パラメータが使用され得る。例えば、上記のエンコーダの各々は、異なる品質を表す異なる量子化パラメータ（ＱＰ）値を有する符号化データを生成するよう構成され得る。詳細には、テキストエンコーダ１０００は、低ＱＰ値（したがって高品質）を有する符号化テキストを生成するよう構成され得るのに対し、ビデオデータは、（符号化されたコンテンツをリモートデバイスに送信するために符号化する側のコンピューティングシステムに利用可能な帯域幅に応じた）比例的により高いＱＰ値及びより低い品質を提供するように、ビデオエンコーダ７００により符号化され得る。次に図１１〜図１７を参照すると、上述したエンコーダにより実行される様々な動き推定プロセスに関するさらなる詳細が提供されている。
【００４２】
図１１を参照すると、具体的には、動き推定コンポーネント１１００が、図７のビデオエンコーダ７００等のビデオエンコーダ７００において使用され得る。いくつかの実施形態において、動き推定コンポーネント１１００は、図７のハイブリッド動き推定動作７０８を実行することができる。図１１に見られるように、初期動き推定が、矩形動き推定（square  motion  estimation）１１０２を用いて実行される。矩形動き推定１１０２では、垂直方向の動き推定及び水平方向の動き推定が、マクロブロック内のコンテンツに対して実行される。これは、スクリーンフレーム内の様々なコンテンツのＸ−Ｙの動きを示す動きベクトルのセットが生成されることをもたらす。例えば、図１２に見られるように、矩形動き推定１１０２は、動いているオブジェクトの中間点の動きを表す「ＰＭＶ」として示されている動きベクトルを検出するために使用される。高速スキップ判定１１０４は、この動き推定が、ビデオコンテンツ内のオブジェクトの動きを表すのに十分であるかどうかを判定する。一般に、これは、小さな動きしかない場合であり、多くのビデオフレームのために使用され得る。しかしながら、矩形動き推定１１０２が受け入れ可能でない場合、スクリーンマクロブロックは、ダウンサンプリングコンポーネント１１０６に渡される。ダウンサンプリングコンポーネント１１０６は、ダウンサンプリング動作１１０８、ダウンサンプリングプレーン動き推定１１１０、及び動きベクトル生成動作１１１２を含む。このダウンサンプリングされた動きベクトルのセットが、次いで、菱形動き推定（diamond  motion  estimation）１１１４に提供される。菱形動き推定１１１４は、動きが推定されるべき点の周囲でサンプリングされた斜め方向に離間した（diagonally-spaced）点群の中間点から規定される動きベクトルを生成する。そのような菱形動き推定の一例が、図１３に示されており、そのような菱形動き推定では、ダウンサンプリング後に、斜め方向の動きが検出され得、それにより、そのような動き算出の効率性を増大させる。
【００４３】
菱形動き推定１１１４の後、又は、ダウンサンプリングは必要でないと高速スキップ判定１１０４が判定した場合（例えば、矩形動き推定１１０２に従った動き推定が、すでに十分である場合）、終了動作１１１８が、そのマクロブロックに関する動き推定の完了を指示する。
【００４４】
図１４は、例示的な実施形態に従った、図１０のテキスト動き推定コンポーネントにおいて使用される逆六角形動き推定１４００の論理図である。図１４に示されるように、使用される逆六角形動き推定１４００は、周波数領域において相互相関が従う六角形格子（hexagonal  lattice）に対してサンプリングを実行し、マクロブロック全体のサブセルが、テキストデータの非整数の角度の変化又は動きをレジストレーションする（register）ために、格子上に規定される。これは、テキストコンテンツエンコーダ１０００のコンテキストにおいて利用されるとき、テキストの角度の動きのより正確な追跡を可能にする。
【００４５】
図１５は、いくつかの実施形態において、図９及び図１０の動きベクトル平滑化フィルタ９１０、１０１０をそれぞれ実装するために使用することができる動きベクトル平滑化フィルタ１５００の例示的なアーキテクチャを示している。図示される実施形態において、動きベクトル平滑化フィルタは、動きベクトル入力動作１５０２において、動きベクトルを受信し、動きベクトルを、ローパスフィルタ１５０４及び動きベクトルキャッシュウィンドウ１５０６にルーティングする。ローパスフィルタ１５０４は、マクロブロック内に存在する動きベクトルの垂直成分及び水平成分をフィルタリングするために使用される。動きベクトルキャッシュウィンドウ１５０６は、過去の隣接フィルタ（neighbor  filter）を記憶し、過去の隣接フィルタは、前の隣接動きベクトルを平滑化するためにローパスフィルタ１５０４にも渡される。重み付きメディアンフィルタ１５０８は、フィルタ不良（filter  fault）を防止し、符号化された動きが平滑化されることを確実にするために、マクロブロックの隣接セクションの中の隣接動きベクトルのさらなる平滑化を提供する。したがって、過去の動きベクトル及びフィルタの使用は、重み付きメディアンフィルタ１５０８のおかげで、特殊エフェクト又は他の変化との調和（conformance）が保たれることを確実にする平滑な動きを可能にする。
【００４６】
図１６は、例示的な実施形態に従った、図８の画像コンテンツエンコーダに含まれ得る動き推定コンポーネント１６００の例示的なアーキテクチャを示している。例えば、動き推定コンポーネント１６００は、画像コンテンツエンコーダ８００の簡易動き推定動作８０８及び大局的動き推定動作８１０の両方を実行するために使用される。図示される実施形態において、簡易動き推定を実現するために、最初に、矩形動き推定動作１６０２が、インターマクロブロックコンテンツにわたって実行される。矩形動き推定動作１６０２は、図１７に見られるように、コンテンツ内の各位置について、その位置を取り囲む４つの周囲点の動きに基づいて、ベクトルを決定する。動きベクトル及びインターマクロブロックコンテンツが、次いで、大局的動き推定動作１６０４に渡される。大局的動き推定動作１６０４は、動きモデル推定動作１６０６及び勾配画像算出動作１６０８を含む。詳細には、矩形動き推定動作１６０２からの動きベクトルは、大局的な動きを追跡するために、動きモデル推定動作１６０６に渡され、勾配画像は、画像の大局的な動きを決定するのを助けるために使用され得る。この構成は、背景画像に対して特に有用である、又は、スクリーンの大きな画像又は部分が同調して動く他の場合に特に有用である。
【００４７】
図１８〜図２０及び関連する記載は、本発明の実施形態を実施することができる多様な動作環境の説明を提供する。しかしながら、図１８〜図２０に関して図示及び説明されるデバイス及びシステムは、例及び例示を目的とするものであり、本明細書に記載の本発明の実施形態を実施するために利用することができる多数のコンピューティングデバイス構成を限定するものではない。
【００４８】
図１８は、本発明の実施形態を実施することができるコンピューティングデバイス１８００の物理コンポーネント（すなわち、ハードウェア）を示すブロック図である。以下で説明するコンピューティングデバイスコンポーネントは、図１のリモートデバイス１０２、１２０等の上述したコンピューティングデバイスとして動作するのに適したものであり得る。基本的構成において、コンピューティングデバイス１８００は、少なくとも１つの処理ユニット１８０２及びシステムメモリ１８０４を含み得る。コンピューティングデバイスの構成及びタイプに応じて、システムメモリ１８０４は、揮発性ストレージ（例えば、ランダムアクセスメモリ）、不揮発性ストレージ（例えば、読み取り専用メモリ）、フラッシュメモリ、又はこれらのメモリの任意の組合せを含み得るが、これらに限定されるものではない。システムメモリ１８０４は、図１に関連して上述した、詳細には図２〜図１７に関連して説明した符号化に関連するリモートデスクトッププロトコルソフトウェア１０８及びエンコーダ１１０等のソフトウェアアプリケーション１８２０を実行するのに適したオペレーティングシステム１８０５及び１以上のプログラムモジュール１８０６を含み得る。オペレーティングシステム１８０５は、例えば、コンピューティングデバイス１８００の動作を制御するのに適したものであり得る。さらに、本発明の実施形態は、グラフィックスライブラリ、他のオペレーティングシステム、又は任意の他のアプリケーションプログラムとともに実施することができるが、いかなる特定のアプリケーション又はシステムに限定されるものではない。この基本的構成が、図１８において、破線１８０８内のコンポーネントにより示されている。コンピューティングデバイス１８００は、さらなる特徴又は機能を有することができる。例えば、コンピューティングデバイス１８００はまた、例えば、磁気ディスク、光ディスク、又はテープ等のさらなるデータ記憶デバイス（着脱可能及び／又は着脱不可能）を含み得る。そのようなさらなる記憶デバイスが、図１８において、着脱可能な記憶デバイス１８０９及び着脱不可能な記憶デバイス１８１０により示されている。
【００４９】
上述したように、複数のプログラムモジュール及びデータファイルが、システムメモリ１８０４に記憶され得る。プログラムモジュール１８０６（例えば、リモートデスクトッププロトコルソフトウェア１０８及びエンコーダ１１０）は、処理ユニット１８０２上で実行されている間、本明細書で説明した、ユニバーサルコーデックエンコーダ又はデコーダの動作を含むがこれらに限定されないプロセスを実行することができる。本発明の実施形態に従って使用され得る、特にスクリーンコンテンツを生成するために使用され得る他のプログラムモジュールは、電子メール及び連絡帳アプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、描画又はコンピュータ支援アプリケーションプログラム等を含み得る。
【００５０】
さらに、本発明の実施形態は、ディスクリート電子素子を含む電子回路、論理ゲートを含むパッケージ電子チップ又は集積電子チップ、マイクロプロセッサを利用する回路、又は、電子素子若しくはマイクロプロセッサを含む単一のチップにおいて、実施することができる。例えば、本発明の実施形態は、図１８に示されるコンポーネントの各々又は多くが単一の集積回路上に集積され得るシステムオンチップ（ＳＯＣ）を介して実施することができる。そのようなＳＯＣデバイスは、１以上の処理ユニット、グラフィックスユニット、通信ユニット、システム仮想化ユニット、及び様々なアプリケーション機能を含み得、これらの全てが、単一の集積回路として、チップ基板上に集積される（すなわち、「焼き付けられる」）。リモートデスクトッププロトコルソフトウェア１０８及びエンコーダ１１０に関して本明細書で説明した機能は、ＳＯＣを介して動作する場合、コンピューティングデバイス１８００の他のコンポーネントとともに単一の集積回路（チップ）上に集積された特定用途向けロジックを介して動作することができる。本発明の実施形態はまた、例えば、機械的技術、光学的技術、流体技術、及び量子技術を含むがこれらに限定されない、ＡＮＤ、ＯＲ、及びＮＯＴ等の論理演算を実行することができる他の技術を用いて実施することができる。さらに、本発明の実施形態は、汎用コンピュータ又は任意の他の回路若しくはシステムにおいて実施することができる。
【００５１】
コンピューティングデバイス１８００はまた、キーボード、マウス、ペン、サウンド入力デバイス、音声入力デバイス、タッチ入力デバイス、スワイプ入力デバイス等といった１以上の入力デバイス１８１２を有することができる。ディスプレイ、スピーカ、プリンタ等といった１以上の出力デバイス１８１４も含まれ得る。前述のデバイスは例であり、他のデバイスが使用されてもよい。コンピューティングデバイス１８００は、他のコンピューティングデバイス１８１８との通信を可能にする１以上の通信接続１８１６を含み得る。適切な通信接続１８１６の例は、ＲＦ送信機回路、ＲＦ受信機回路、及び／又はＲＦトランシーバ回路；ユニバーサルシリアルバス（ＵＳＢ）ポート、パラレルポート、及び／又はシリアルポートを含むが、これらに限定されるものではない。
【００５２】
本明細書で使用されるコンピュータ読み取り可能な媒体という用語は、コンピュータ記憶媒体を含み得る。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、又はプログラムモジュール等の情報を記憶するために任意の方法又は技術により実装された、揮発性及び不揮発性の着脱可能及び着脱不可能な媒体を含み得る。システムメモリ１８０４、着脱可能な記憶デバイス１８０９、及び着脱不可能な記憶デバイス１８１０は全て、コンピュータ記憶媒体の例（すなわち、メモリストレージ）である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、電気的に消去可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、又は、情報を記憶するために使用することができ、コンピューティングデバイス１８００がアクセスできる任意の他の製品を含み得る。そのようなコンピュータ記憶媒体はいずれも、コンピューティングデバイス１８００の一部であり得る。コンピュータ記憶媒体は、搬送波、他の伝搬信号又は変調されたデータ信号を含まない。
【００５３】
通信媒体は、搬送波又は他の伝送機構等の変調されたデータ信号内のコンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータにより具現化され得、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定又は変更された１以上の特徴のセットを有する信号を表し得る。限定ではなく例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、無線周波数（ＲＦ）、赤外線、及び他の無線媒体等の無線媒体と、を含み得る。
【００５４】
図１９Ａ及び図１９Ｂは、本発明の実施形態を実施することができる、例えば、携帯電話機、スマートフォン、タブレットパーソナルコンピュータ、ラップトップコンピュータ等といったモバイルコンピューティングデバイス１９００を示している。図１９Ａを参照すると、実施形態を実施するためのモバイルコンピューティングデバイス１９００の一実施形態が示されている。基本的構成において、モバイルコンピューティングデバイス１９００は、入力要素及び出力要素の両方を有するハンドヘルドコンピュータである。モバイルコンピューティングデバイス１９００は、通常、ディスプレイ１９０５と、ユーザがモバイルコンピューティングデバイス１９００に情報を入力することを可能にする１以上の入力ボタン１９１０と、を含む。モバイルコンピューティングデバイス１９００のディスプレイ１９０５は、入力デバイス（例えば、タッチスクリーンディスプレイ）としても機能することができる。オプションの側面入力要素１９１５が含まれる場合、側面入力要素１９１５は、さらなるユーザ入力を可能にする。側面入力要素１９１５は、回転型スイッチ、ボタン、又は任意の他のタイプの手動入力要素であり得る。代替実施形態において、モバイルコンピューティングデバイス１９００は、より多くの又はより少ない入力要素を組み込んでもよい。例えば、ディスプレイ１９０５は、いくつかの実施形態においては、タッチスクリーンでなくてもよい。さらに別の代替実施形態において、モバイルコンピューティングデバイス１９００は、セルラ電話機等のポータブル電話機システムである。モバイルコンピューティングデバイス１９００はまた、オプションのキーパッド１９３５を含んでもよい。オプションのキーパッド１９３５は、物理キーパッドであってもよいし、タッチスクリーンディスプレイ上に生成される「ソフト」キーパッドであってもよい。様々な実施形態において、出力要素は、グラフィカルユーザインタフェース（ＧＵＩ）、視覚的インジケータ１９２０（例えば、発光ダイオード）、及び／又はオーディオトランスデューサ１９２５（例えば、スピーカ）を表示するためのディスプレイ１９０５を含む。いくつかの実施形態において、モバイルコンピューティングデバイス１９００は、触覚フィードバックをユーザに提供するための振動トランスデューサを組み込む。さらに別の実施形態において、モバイルコンピューティングデバイス１９００は、外部デバイスとの間で信号を送受信するための、オーディオ入力ポート（例えば、マイクロフォンジャック）、オーディオ出力ポート（例えば、ヘッドフォンジャック）、及びビデオ出力ポート（例えば、ＨＤＭＩ（登録商標）ポート）等の入力ポート及び／又は出力ポートを組み込む。
【００５５】
図１９Ｂは、モバイルコンピューティングデバイスの一実施形態のアーキテクチャを示すブロック図である。すなわち、モバイルコンピューティングデバイス１９００は、いくつかの実施形態を実装するためのシステム（すなわち、アーキテクチャ）１９０２を組み込むことができる。一実施形態において、システム１９０２は、１以上のアプリケーション（例えば、ブラウザ、電子メール、カレンダ、連絡帳マネージャ、メッセージングクライアント、ゲーム、及びメディアクライアント／プレーヤ）を実行することができる「スマートフォン」として実装される。いくつかの実施形態において、システム１９０２は、一体化された携帯情報端末（ＰＤＡ）及び無線電話機等のコンピューティングデバイスとして一体化される。
【００５６】
１以上のアプリケーションプログラム１９６６は、メモリ１９６２にロードされて、オペレーティングシステム１９６４上で又はオペレーティングシステム１９６４に関連付けられて実行され得る。アプリケーションプログラムの例は、電話ダイヤラプログラム（phone  dialer  program）、電子メールプログラム、個人情報管理（ＰＩＭ）プログラム、ワードプロセッシングプログラム、スプレッドシードプログラム、インターネットブラウザプログラム、メッセージングプログラム等を含む。システム１９０２はまた、メモリ１９６２内に不揮発記憶領域１９６８を含む。不揮発記憶領域１９６８を使用して、システム１９０２に電力供給されない場合にも失われるべきでない永続的情報を記憶することができる。アプリケーションプログラム１９６６は、不揮発記憶領域１９６８内の、電子メールアプリケーション等により使用される電子メールメッセージ又は他のメッセージ等の情報を使用し、そのような情報を不揮発記憶領域１９６８に記憶することができる。同期アプリケーション（図示せず）が、システム１９０２上に存在し、ホストコンピュータ上に存在する対応する同期アプリケーションとインタラクトして、不揮発記憶領域１９６８に記憶される情報を、ホストコンピュータに記憶される対応する情報と同期させた状態に保つようにプログラムされる。本明細書で説明したリモートデスクトッププロトコルソフトウェア１０８（及び／若しくは任意的にエンコーダ１１０、又はリモートデバイス１２０）を含む他のアプリケーションも、メモリ１９６２にロードされて、モバイルコンピューティングデバイス１９００上で実行され得ることを理解すべきである。いくつかの類似するシステムにおいて、逆のプロセスが、システム１９０２を介して実行され得る。このシステムは、ユニバーサルスクリーンコンテンツコーデックを用いて生成されたビットストリームを復号するためのリモートデバイス１２０として動作する。
【００５７】
システム１９０２は、１以上のバッテリとして実装することができる電源１９７０を有する。電源１９７０は、バッテリを補充又は再充電するＡＣアダプタ又は電力供給用ドッキングクレードル等の外部電源をさらに含んでもよい。
【００５８】
システム１９０２はまた、無線周波数通信を送受信する機能を実行する無線機１９７２を含み得る。無線機１９７２は、通信キャリア又はサービスプロバイダを介するシステム１９０２と「外部環境（outside  world）」との間の無線接続を円滑にする。無線機１９７２との間の通信は、オペレーティングシステム１９６４の制御の下で実行される。すなわち、無線機１９７２により受信される通信は、オペレーティングシステム１９６４を介してアプリケーションプログラム１９６６に伝達され得、逆も同様である。
【００５９】
視覚的インジケータ１９２０を使用して、視覚的通知を提供することができる、且つ／あるいは、オーディオインタフェース１９７４を使用して、オーディオトランスデューサ１９２５を介して可聴通知を再生することができる。例示される実施形態において、視覚的インジケータ１９２０は、発光ダイオード（ＬＥＤ）であり、オーディオトランスデューサ１９２５は、スピーカである。これらのデバイスは、電源１９７０に直接接続され得るので、これらのデバイスは、アクティブ化されると、プロセッサ１９６０及び他のコンポーネントが、バッテリ電力を節約するためにシャットダウンし得る場合であっても、通知機構により指示される期間の間保たれる。ＬＥＤは、ユーザが、デバイスの電源オンステータスを指示するアクションを取るまで、無制限に保たれるようにプログラムされ得る。オーディオインタフェース１９７４を使用して、ユーザへの可聴信号を提供し、ユーザからの可聴信号を受信する。例えば、オーディオインタフェース１９７４は、オーディオトランスデューサ１９２５に接続されることに加えて、例えば電話会話を円滑にするための、可聴入力を受信するマイクロフォンにも接続され得る。本発明の実施形態に従うと、マイクロフォンは、以下で説明するように、通知の制御を容易にするためのオーディオセンサとしても機能することができる。システム１９０２は、静止画像、ビデオストリーム等を記録する、オンボードカメラ１９３０の動作を可能にするビデオインタフェース１９７６をさらに含み得る。
【００６０】
システム１９０２を実装するモバイルコンピューティングデバイス１９００は、さらなる特徴又は機能を有することができる。例えば、モバイルコンピューティングデバイス１９００は、磁気ディスク、光ディスク、又はテープ等のさらなるデータ記憶デバイス（着脱可能又は着脱不可能）を含み得る。そのようなさらなる記憶デバイスが、図１９Ｂにおいて、不揮発記憶領域１９６８により示されている。
【００６１】
モバイルコンピューティングデバイス１９００により生成又はキャプチャされ、システム１９０２を介して記憶されるデータ／情報は、上述したように、モバイルコンピューティングデバイス１９００上にローカルに記憶されることもあるし、そのようなデータは、無線機１９７２を介して又はモバイルコンピューティングデバイス１９００とモバイルコンピューティングデバイス１９００に関連付けられた別のコンピューティングデバイス、例えば、インターネット等の分散コンピューティングネットワークにおけるサーバコンピュータとの間の有線接続を介して、デバイスによりアクセスされ得る任意の数の記憶媒体に記憶されることもある。そのようなデータ／情報は、無線機１９７２を介して又は分散コンピューティングネットワークを介して、モバイルコンピューティングデバイス１９００によりアクセスされ得ることを理解すべきである。同様に、そのようなデータ／情報は、電子メールシステム及び協調型データ／情報共有システムを含む周知のデータ／情報転送及び記憶手段に従って、記憶及び使用のためにコンピューティングデバイス間で容易に転送され得る。
【００６２】
図２０は、上述したように、リモートソースから、コンピューティングデバイス２００４、タブレット２００６、又はモバイルデバイス２００８等のコンピューティングシステムにおいて受信されたデータを処理するためのシステムのアーキテクチャの一実施形態を示している。サーバデバイス２００２において表示されるコンテンツは、異なる通信チャネル又は他のストレージタイプに記憶され得る。例えば、様々な文書が、ディレクトリサービス２０２２、ウェブポータル２０２４、メールボックスサービス２０２６、インスタントメッセージングストア２０２８、又はソーシャルネットワーキングサイト２０３０を用いて記憶され得る。リモートデスクトッププロトコルソフトウェア１０８は、例えば、ウェブを介して、例えば、ネットワーク２０１５を介して、リモートシステムにおいて表示される、ＲＤＰ準拠の、ＭＰＥＧ準拠の（又は、他の規格準拠の）データストリームを生成することができる。例えば、クライアントコンピューティングデバイスは、コンピューティングデバイス１０２又はリモートデバイス１２０として実装され得、パーソナルコンピュータ２００４、タブレットコンピューティングデバイス２００６、及び／又はモバイルコンピューティングデバイス２００８（例えば、スマートフォン）内で具現化され得る。コンピューティングデバイス１０２、１２０、１８００、１８００、２００２、２００４、２００６、２００８のこれら実施形態のいずれも、グラフィック発生側システムにおける前処理又は受信側コンピューティングシステムにおける後処理のために使用可能なグラフィカルデータを受信することに加えて、ストア２０１６からコンテンツを取得することができる。
【００６３】
本発明の実施形態は、例えば、本発明の実施形態に従った方法、システム、及びコンピュータプログラム製品のブロック図及び／又は動作図を参照して上述されている。ブロック内に記される機能／動作は、フローチャートに示される順番以外で生じることもある。例えば、連続して示されている２つのブロックは、実際には、係わる機能／動作に応じて、実質的に並行して実行されることもあるし、時には逆の順番で実行されることもある。
【００６４】
本出願で提供される１以上の実施形態の説明及び例示は、特許請求される本発明の範囲をいかなるようにも限定又は制限するよう意図されるものではない。本出願において提供される実施形態、例、及び詳細は、特許請求される発明のベストモードを有することを伝えるとともに、他の者が特許請求される発明のベストモードを生産及び使用するのに十分なものと考えられる。特許請求される発明は、本出願において提供されるいかなる実施形態、例、又は詳細に限定されるものとして解釈されるべきではない。組み合わせて図示及び説明されているか別々に図示及び説明されているかにかかわらず、様々な特徴（構造的特徴及び方法的特徴の両方）は、特徴の特定のセットを有する実施形態を作り出すために、選択的に包含又は除外されることが意図されている。本出願の説明及び例示が提供されたが、当業者であれば、特許請求される発明のより広い範囲から逸脱しない、本出願において具現化されている一般の創造的コンセプトのより広い態様の主旨に含まれる変形実施形態、変更実施形態、及び代替実施形態を想起することができるであろう。
【図１】
2016534654.tif 000003
【図２】
2016534654.tif 000004
【図３】
2016534654.tif 000005
【図４】
2016534654.tif 000006
【図５】
2016534654.tif 000007
【図６】
2016534654.tif 000008
【図７】
2016534654.tif 000009
【図８】
2016534654.tif 000010
【図９】
2016534654.tif 000011
【図１０】
2016534654.tif 000012
【図１１】
2016534654.tif 000013
【図１２】
2016534654.tif 000014
【図１３】
2016534654.tif 000015
【図１４】
2016534654.tif 000016
【図１５】
2016534654.tif 000017
【図１６】
2016534654.tif 000018
【図１７】
2016534654.tif 000019
【図１８】
2016534654.tif 000020
【図１９Ａ】
2016534654.tif 000021
【図１９Ｂ】
2016534654.tif 000022
【図２０】
2016534654.tif 000023
【国際調査報告】
2016534654.tif 000024
2016534654.tif 000025
2016534654.tif 000026
2016534654.tif 000027