(57)【特許請求の範囲】
【請求項１】
入力データストリームからのビデオデータストリームがデコーダに送信され、かつ無効なビデオデータストリームがビデオチャットアプリケーションに送信されるように、ビデオチャットセッションを検知するデバイスドライバと、
前記ビデオデータストリームを復号化する前記デコーダと、
前記復号化されたビデオデータストリームの後処理を実行する後処理プロセッサと、
前記ビデオチャットセッション中に、前記後処理されたビデオデータストリームをレンダリングし、前記無効なビデオデータストリームを受信した前記ビデオチャットアプリケーションからの前記無効なビデオデータストリームを破棄するレンダラと
を備えるグラフィックスプロセッシングユニット。
【請求項２】
前記入力データストリームは前記ビデオデータストリームとオーディオデータストリームとを含む、請求項１に記載のグラフィックスプロセッシングユニット。
【請求項３】
前記ビデオチャットアプリケーションはオーディオデータストリームと前記無効なビデオデータストリームとを受信する、請求項１または２に記載のグラフィックスプロセッシングユニット。
【請求項４】
前記デコーダは前記ビデオチャットアプリケーションのコーデックにもとづいて前記ビデオデータストリームを復号化する、請求項１から３のいずれか一項に記載のグラフィックスプロセッシングユニット。
【請求項５】
前記復号化されたビデオデータストリームを後処理することは前記ビデオデータストリームに対する任意の画像改良を含む、請求項１から４のいずれか一項に記載のグラフィックスプロセッシングユニット。
【請求項６】
複数のヒントを用いて新しいビデオチャットセッションを検知する、請求項１から５のいずれか一項に記載のグラフィックスプロセッシングユニット。
【請求項７】
ビデオチャットセッション中に、画像データをキャプチャし、前記画像データをエンコーダへ送信し、かつビデオチャットアプリケーションへ無効な画像データを送信する画像キャプチャデバイスと、
前記画像データを符号化する前記エンコーダと、
前記ビデオチャットアプリケーションからの前記無効な画像データを含むデータパケットを、前記符号化された画像データの挿入によってリパッケージするマルチプレクサと、
前記リパッケージされたデータパケットをネットワークを介して送信するネットワークロジックと
を備えるシステム。
【請求項８】
前記エンコーダは、前記ビデオチャットアプリケーションのコーデックにもとづいてビデオデータストリームを符号化する、請求項７に記載のシステム。
【請求項９】
前記ビデオチャットアプリケーションからの前記データパケットは、前記ビデオチャットセッションからの無効な画像データおよびオーディオデータを含む、請求項７または８に記載のシステム。
【請求項１０】
レンダラをさらに備え、
前記レンダラは前記ビデオチャットセッション中に前記ビデオチャットアプリケーションを用いて前記画像データをレンダリングする、請求項７から９のいずれか一項に記載のシステム。
【請求項１１】
複数のヒントを用いて新しいビデオチャットセッションを検知する、請求項７から１０のいずれか一項に記載のシステム。
【請求項１２】
ディスプレイと、
無線と、
複数の命令を格納し、前記ディスプレイに通信可能に結合したメモリと、
通信可能に前記無線および前記メモリに結合したプロセッサとを備え、
前記プロセッサが前記複数の命令を実行する場合、前記プロセッサは、アプリケーションによってビデオチャットセッションを検知すること、ネットワークを介して送信される画像データを符号化すること、および前記ネットワークから受信された複数の入力データパケットを復号化すること
を行うもので、
前記ビデオチャットセッション中の前記画像データの符号化において、グラフィックスサブシステムは、画像キャプチャデバイスからの前記画像データを符号化し、前記アプリケーションは前記画像キャプチャデバイスから無効な画像データを受信し、マルチプレクサは、前記アプリケーションからの前記無効な画像データを含むデータパケットを、前記符号化された画像データの挿入によってリパッケージし、
前記ビデオチャットセッション中の前記複数の入力データパケットの前記復号化において、ネットワークロジックは、前記複数の入力データパケットからの前記符号化された画像データをリッピングし、復号化されるように前記グラフィックスサブシステムへ前記符号化された画像データを送信し、前記ネットワークロジックは、無効な画像データを前記アプリケーションへ送信し、レンダラは、前記グラフィックスサブシステムからの前記復号化された画像データをレンダリングし、前記無効な画像データを受信した前記アプリケーションからの前記無効な画像データを破棄する
システム。
【請求項１３】
前記プロセッサはグラフィックスプロセッシングユニットである、請求項１２に記載のシステム。
【請求項１４】
前記システムはシステムオンチップである、請求項１２または１３に記載のシステム。
【請求項１５】
符号化機能および復号化機能は、前記アプリケーションの代わりに前記プロセッサによって実行される、請求項１２から１４のいずれか一項に記載のシステム。
【請求項１６】
ビデオチャットアプリケーションを含むコンピュータにおいて実行され、前記コンピュータのプロセッサを指示するコードを備えるプログラムであって、
前記コードは、
ネットワークを介して送信される画像データを符号化する手順であり、前記プロセッサが前記ビデオチャットアプリケーションの代わりに前記画像データを符号化する手順と、
前記ネットワークから受信された複数の入力データパケットを復号化する手順であり、前記符号化された画像データが前記複数の入力データパケットからリッピングされ、復号化されるべく前記プロセッサに送信される手順と、
を備え、
前記プロセッサが前記画像データを符号化する場合、前記ビデオチャットアプリケーションは無効な画像データを符号化するプログラム。
【請求項１７】
前記画像データは画像キャプチャデバイスから受信される、請求項１６に記載のプログラム。
【請求項１８】
前記プロセッサが符号化された画像データを受信する場合、前記ビデオチャットアプリケーションは複数の無効なデータパケットを受信する、請求項１６または１７に記載のプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオチャットアプリケーションは、インターネットなどのネットワークを介して少なくとも１つのコンピューティングシステムから他のコンピューティングシステムへビデオチャットデータを送信することによって、コンピューティングシステムのユーザが他のコンピューティングシステムの少なくとも１人のユーザと通信することを可能にする。ビデオチャットデータは、１つのコンピューティングシステムでコーデックを用いて符号化された後、ネットワークプロトコルにもとづいてパッケージングされ、ネットワークを介して送信されてもよい。符号化されたビデオチャットデータは、ネットワークから他のコンピューティングシステムで受信され、パッケージから抽出され、そしてコーデックを用いて復号化されてもよい。ビデオチャットデータが符号化および復号化されるので、ビデオチャットアプリケーションによって使用される特定のコーデックは、１つのコンピューティングシステムまたは他のコンピューティングシステムの他の構成要素およびモジュールに対して、明らかにされなくてもよい。
【図面の簡単な説明】
【０００２】
【図１】ビデオチャットデータプロセッシングと共に用いてもよいコンピューティングデバイスのブロック図である。
【図２】ビデオチャットデータプロセッシングを可能にする方法の処理フローチャートである。
【図３】入力ビデオチャットデータを復号化するやり方を示す例示である。
【図４】入力ビデオチャットデータを復号化するやり方を示すシステムの制御フローチャートである。
【図５】ビデオチャットデータプロセッシングを可能にする他の方法の処理フローチャートである。
【図６】キャプチャしたビデオチャットデータを符号化するやり方を示す例示である。
【図７】キャプチャしたビデオチャットデータを符号化するやり方を示すシステムの制御フローチャートである。
【図８】ビデオチャットデータを処理する例示的なシステムのブロック図である。
【図９】図８のシステムが具現化されてもよい小型フォームファクタデバイスの模式図である。
【図１０】ビデオチャットデータプロセッシングのコードを格納する、有形の持続性コンピュータ可読媒体を示すブロック図である。本開示および図面全体にわたって同一の数字を使用することにより、同様の構成要素および特徴を言及する。１００番台の数字は、図１で最初に見られる特徴を指している。２００番台の数字は、図２で最初に見られる特徴を指している。その他の図も同様である。
【発明を実施するための形態】
【０００３】
ビデオチャットデータは、ビデオチャットセッションに関連する画像、テキスト、オーディオ、およびビデオを含む。各々のビデオチャットアプリケーションは、コーデックを用いて、ビデオチャットデータのグラフィックス部分を符号化または復号化する。コーデックは、データのストリームを符号化または復号化することができるコンピューティングデバイスのソフトウェアまたはハードウェア構成要素である。場合によっては、データ圧縮を目的としてデータの符号化および復号化がおこなわれる。ビデオチャットデータのグラフィックス部分は、生ビデオデータを含む。ビデオチャットアプリケーションは、典型的に、ソフトウェアアルゴリズムを用いてコーデックを実装し、データストリームを圧縮する。コーデックを実装するべくビデオチャットアプリケーションによって用いられるソフトウェアアルゴリズムは、中央処理装置（ＣＰＵ）を用いて実行される。しかし、ハードウェア符号化および復号化機能は、グラフィックスハードウェアを介して、ほとんどのコンピューティングシステムで利用可能である。グラフィックスハードウェアは、以下に限定されるものではないが、グラフィックスプロセッシングユニット（ＧＰＵ）、固定機能ハードウェア、ビデオ符号化ロジック、ビデオ復号化ロジック、およびグラフィックエンジンを含む。
【０００４】
ビデオチャットアプリケーションは、典型的に、グラフィックスハードウェアを用いずに、符号化または復号化機能を行なう。なぜなら、グラフィックスハードウェアを有する標準インターフェースが利用可能ではないと考えられるからである。場合によっては、グラフィックスハードウェアは、ビデオチャットアプリケーションのソフトウェア符号化および復号化機能と比較した場合、より速くてより効率のよいハードウェアベースの符号化および復号化を行うことができる。加えて、ビデオチャットアプリケーションの符号化および復号化機能を実行するべくＣＰＵを用いることによって、ビデオチャット中の電力消費は比較的高くなる場合がある。さらに、ビデオチャットアプリケーションのパフォーマンスは、ＣＰＵのデータスループットに応じて、遅いまたは途切れがちのレンダリングされたビデオをもたらす場合がある。
【０００５】
本明細書中に説明された実施形態は、ビデオチャットデータプロセッシングを可能にする。いくつかの実施形態では、グラフィックスドライバ、カメラドライバ、およびネットワークドライバを、ビデオチャットアプリケーションからグラフィックスハードウェアへ、符号化機能、復号化機能、および後処理機能を転送するインテリジェンスまたはロジックによって、具現化することが可能である。このように、ビデオチャットのパフォーマンスが向上し、向上したパフォーマンスは、改善されたシステム電力消費と同様に、ユーザに提示されるビデオ、テキスト、画像、およびサウンドの改善された品質のことを指してもよい。さらに、いくつかの実施形態では、グラフィックスハードウェアを有する標準インターフェースが利用可能ではない場合、グラフィックスハードウェアがビデオチャットデータを処理してもよい。説明を容易にするために、デスティネーションコンピューティングシステムとソースコンピューティングシステムは、ビデオチャットセッション中の機能を説明するために用いられる。しかし、単一のシステムは、デスティネーションコンピューティングシステムとソースコンピューティングシステムの機能を同時に実行することができる。さらに、任意の数のコンピューティングシステムがビデオチャットセッションに参加することができる。
【０００６】
以下の説明および特許請求の範囲において、用語「結合」および「接続」は、それらの派生語とともに用いられてもよい。これらの用語が互いの同意語として意図されないことを理解する必要がある。むしろ、特定の実施形態では、「接続」は２またはそれ以上の要素が互いに、直接に物理的または電気的に接触している状態にあることを示ために用いられてもよい。「結合」は、２またはそれ以上の要素が互いに、直接に物理的または電気的に接触している状態にあることを意味してもよい。しかし、「結合」は、２またはそれ以上の要素が互いに、直接に接触してはいないが、依然として共働することまたは互いにインタラクションし合うことを意味してもよい。
【０００７】
いくつかの実施形態は、ハードウェア、ファームウェア、およびソフトウェアのうちの１つまたはそれらの組み合わせに実装されてもよい。いくつかの実施形態は、機械可読媒体に格納された命令として実装されてもよく、この命令は、本明細書中に説明されたオペレーションを行うべく、コンピューティングプラットフォームによって読み取りおよび実行されてもよい。機械可読媒体は、コンピュータなどの機械によって可読可能な形式で情報を格納または送信する任意のメカニズムを含んでもよい。例えば、機械可読媒体は、とりわけ、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、あるいは、電気的、光学的、音響的、または他の形式の伝播信号、例えば、搬送波、赤外線信号、デジタル信号、または信号の送信および／もしくは受信を行うインターフェースを含んでもよい。
【０００８】
実施形態は、実装または例である。本明細書において、「実施形態」、「１つの実施形態」、「いくつかの実施形態」、「様々な実施形態」、または「他の実施形態」に対する言及は、必ずしも本技術の実施形態全てではないが、少なくともいくつかの実施形態に含まれる、実施形態に関連して説明される特定の特徴、構造、または特性を、意味する。「実施形態」、「１つの実施形態」、または「いくつかの実施形態」の様々な外観は、必ずしも全てが同じ実施形態を指している必要はない。実施形態の要素または態様は、他の実施形態の要素または態様と組み合わせることができる。
【０００９】
本明細書中に説明および図示した構成要素、特徴、構造、特性などは、特定の実施形態または複数の実施形態に、それらの全てが含まれている必要はない。明細書が、例えば、構成要素、特徴、構造、または特性が「含まれ得る」、「含まれてもよい」、「含むことができる」、または「含まれる場合がある」ことを述べる場合、その特定の構成要素、特徴、構造、または特性が含まれていることを必要としない。明細書または特許請求の範囲が「複数の形であることを明確にしないかたち（英語の不定冠詞「ａ」または「ａｎ」に対応）」で要素について言及する場合、そのことは要素がたった１つであることを意味しない。明細書または特許請求の範囲が「追加的な」要素について言及する場合、そのことは１より大きい数の追加的な要素であることを排除しない。
【００１０】
留意しておくことは、いくつかの実施形態が特定の実装に関して説明されているが、いくつかの実施形態にもとづいて他の実装が可能なことである。加えて、図面に例示および／または本明細書中に説明された回路要素または他の特徴の構成および／または順序を、図示および記載された特定のやり方で設定する必要はない。いくつかの実施形態にもとづいて、多くの他の構成が可能である。
【００１１】
図に示す各々のシステムでは、場合によっては、要素は、各々、同一の参照番号または異なる参照番号を有することで、表された要素が異なるものおよび／または同様のものでもよいことを示唆し得る。しかし、要素は、本明細書に示されたまたは説明されたシステムのいくつかまたは全てによる異なる実装および作業を有するのに十分なほどに、融通が利いてもよい。図に示す様々な要素は、同一または異なってもよい。どれが第１の要素として言及されるか、どれが第２の要素として称されるかは任意である。
【００１２】
図１は、ビデオチャットデータプロセッシングと共に用いてもよいコンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、とりわけ、例えばラップトップコンピュータ、デスクトップコンピュータ、ウルトラブック（商標）、タブレットコンピュータ、モバイルデバイス、スマートフォン、スマートＴＶ、またはサーバであってもよい。コンピューティングデバイス１００は、ＣＰＵ１０２によって実行可能な命令を格納するメモリデバイス１０４と同様に、格納された命令を実行する中央処理装置（ＣＰＵ）１０２を備えてもよい。ＣＰＵ１０２は、バス１０６によってメモリデバイス１０４に結合してもよい。してもよい。加えて、ＣＰＵ１０２は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または任意の数の他の構成であってもよい。さらに、コンピューティングデバイス１００は、１より大きい数のＣＰＵ１０２を備えてもよい。
【００１３】
コンピューティングデバイス１００はさらにグラフィックスプロセッシングユニット（ＧＰＵ）１０８を備えてもよい。示されるように、ＣＰＵ１０２は、バス１０６を介してＧＰＵ１０８に結合してもよい。メモリデバイス１０４は、ＧＰＵ１０８によって実行可能な命令を格納してもよい。ＧＰＵ１０８は、コンピューティングデバイス１００内で、グラフィックスオペレーションを何回でも実行してもよい。例えば、ＧＰＵ１０８は、コンピューティングデバイス１００のユーザに表示されるグラフィックス画像、グラフィックスフレーム、またはビデオなどのグラフィックスデータをレンダリングまたは操作してもよい。グラフィックスデータは、ビデオチャットセッション中にレンダリングされてもよい。
【００１４】
メモリデバイス１０４は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、または任意の他の適したメモリシステムを有することができる。例えば、メモリデバイス１０４は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含んでもよい。メモリデバイス１０４は、１または複数のドライバ１１０を有する。ドライバとして、グラフィックスドライバ、ネットワークドライバ、またはカメラドライバなどのデバイスドライバを挙げることが可能である。いくつかの例において、グラフィックスエンコーダなどのハードウェア構成要素は、グラフィックスドライバの符号化モジュールによって、動作させられてもよい。同様に、いくつかの例において、グラフィックスデコーダは、グラフィックスドライバの復号化するモジュールによって操作されてもよい。コンピューティングデバイス１００は、画像キャプチャ機構１１２をさらに備える。いくつかの実施形態では、画像キャプチャ機構１１２は、カメラ、ウェブカム、ステレオカメラ、スキャナ、赤外線センサ、またはその他である。画像キャプチャ機構１１２は、ビデオチャットセッション中、ビデオデータストリームまたは画像などのグラフィックスデータをキャプチャするために用いられてもよい。
【００１５】
グラフィックスドライバ、ネットワークドライバ、カメラドライバ、またはそれらの任意の組み合わせは、ビデオチャットアプリケーションがヒントを用いてビデオチャットセッションを初期化またはビデオチャットセッションが始動したことを検知できる。場合によっては、ヒントはビデオチャットセッションの開始を示すことができる任意のアクションである。グラフィックス、ネットワーク、およびカメラドライバは、各々、ビデオチャットセッションがビデオチャットアプリケーションによって初期化されたやり方に基づいた異なるヒントを受信してもよい。例えば、ビデオチャットセッション中に表示されるビデオをレンダリングするための表面を作成するべく、グラフィックスドライバはビデオチャットアプリケーションから呼び出しを受信してもよい。そのような例において、受信された呼び出しは、入力ビデオチャットセッションのグラフィックスドライバに関するヒントとして役立つ。他の例において、カメラドライバは、ビデオチャットアプリケーションから通知またはカメラ機能へのアクセスの要求を受信してもよい。そのような例において、通知または要求は、入力ビデオチャットセッションのカメラドライバへのヒントとして役立つ。さらに、例として、ネットワークドライバは、ビデオチャットアプリケーションによって送信または受信されているデータパケットを検知してもよい。そのような例において、ビデオチャットアプリケーションへの、またはそのビデオチャットアプリケーションからのデータパケットの検出は、入力ビデオチャットセッションのネットワークドライバへのヒントとしての機能を果たすことが可能である。
【００１６】
各々のデバイスドライバのユーザモードモジュールもビデオチャットセッションの開始を示すヒントを検知するために用いてもよい。デバイスドライバのユーザモードモジュールは、カーネルモードの特権空間内ではなくコンピューティングシステムのユーザモード空間内で、デバイスドライバの実行を可能にする。ユーザモードで実行させることによって、デバイスドライバはアプリケーションプログラミングインターフェース（ＡＰＩ）を呼び出してシステムハードウェアにアクセスする。いくつかの実施形態では、デバイスドライバのユーザモードモジュールは、デバイスドライバからのサービスを要求しているアプリケーションのアイデンティティを判断してもよい。サービスを要求するアプリケーションがビデオチャットアプリケーションである場合、デバイスドライバはビデオチャットセッションが初期化されたというヒントとしてビデオチャットアプリケーションによる要求を用いてもよい。
【００１７】
ビデオチャットセッションが初期化されたというヒントが検知される場合、符号化、復号化、および後処理機能を、ビデオチャットアプリケーションからＧＰＵハードウェアへ転送することができる。典型的に、ＧＰＵハードウェアは、符号化、復号化、および後処理などの媒体機能に特化している。いくつかの例において、ビデオチャットアプリケーションによって用いられるビデオコーデックフォーマットは、ＧＰＵサブシステムのエンコーダハードウェアおよびデコーダハードウェアによって実装されてもよい。ビデオチャットアプリケーションの符号化機能、復号化機能、および後処理機能と比較した場合に、特化したＧＰＵハードウェアは、より速く、より効率のよい符号化機能、復号化機能、および後処理機能を提供することができる。典型的に、上に議論されるように、ビデオチャットアプリケーションはソフトウェアを用いてそのような機能を実装する。したがって、ビデオチャットアプリケーションのパフォーマンスはＧＰＵハードウェアを用いることによって改善されてもよい。さらに、コンピューティングデバイスは、ビデオチャットアプリケーションの符号化、復号化、および後処理機能にＧＰＵハードウェアを用いることによって、電力を節約することができる。
【００１８】
ＣＰＵ１０２は、さらに、コンピューティングデバイス１００を１または複数の入出力（Ｉ／Ｏ）デバイス１１６に接続させるＩ／Ｏデバイスインターフェース１１４に、バス１０６を介して接続されてもよい。Ｉ／Ｏデバイス１１６は、例えば、キーボードおよびポインティングデバイスを含んでもよいもので、ポインティングデバイスは、とりわけ、タッチパッドまたはタッチ画面を含んでもよい。Ｉ／Ｏデバイス１１６は、コンピューティングデバイス１００の内蔵構成要素であってもよく、またはコンピューティングデバイス１００と外部接続されるデバイスもよい。
【００１９】
ＣＰＵ１０２は、コンピューティングデバイス１００を１または複数の表示装置１２０に接続するディスプレイインターフェース１１８と、バス１０６を介してリンクしてもよい。表示装置１２０は、コンピューティングデバイス１００の内蔵構成要素であるディスプレイ画面を有してもよい。表示装置１２０は、コンピュータモニタ、テレビ、またはプロジェクタを含んでもよく、とりわけコンピューティングデバイス１００と外部接続されてもよい。
【００２０】
コンピューティングデバイス１００は、さらに、記憶デバイス１２２を備える。記憶デバイス１２２は、ハードドライブ、光学的ドライブ、サムドライブ、ドライブアレイ、またはそれらの任意の組み合わせなどの物理メモリである。記憶デバイス１２２は、リモートストレージドライブを有してもよい。記憶デバイス１２２は、さらにアプリケーション１２４を有する。アプリケーション１２４はビデオチャットアプリケーションを含んでもよい。コンピューティングデバイス１００は、さらに、バス１０６を介してネットワーク１２８にコンピューティングデバイス１００を接続するネットワークインターフェースコントローラ（ＮＩＣ）１２６を備えてもよい。ネットワーク１２８は、とりわけ、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、またはインターネットであってもよい。ネットワークを介して送信されるデータをストリーミングデータとして説明する。このストリーミングデータはネットワークプロトコルにもとづいてパケット化されているデータを含む。パケットデータは、限定されるものではないが、画像フレームおよび対応するオーディオデータを含む。
【００２１】
図１のブロック図は、コンピューティングデバイス１００が図１に示される構成要素の全てを備えているように示すことを意図していない。さらに、コンピューティングデバイス１００は、具体的な実施態様の詳細に応じて、図１に示さない任意の数の追加的な構成要素を備えてもよい。さらに、コンピューティングデバイス１００は、システムオンチップ（ＳＯＣ）として実装されてもよい。ＳＯＣ実装では、コンピューティングデバイス１００の様々な構成要素は単一のチップ基板上に組み合わせられる。
【００２２】
いくつかの実施形態では、ビデオチャットアプリケーションによって処理されたビデオをレンダリングする表面を作成するために、ビデオチャットアプリケーションはグラフィックスドライバに通知を送信してもよい。場合によっては、表面はグラフィックスデータが書かれているメモリの領域である。複数の例において、ＡＰＩ、例えばＤｉｒｅｃｔＸによって提供されるものを用いる場合、ビデオチャットアプリケーションの要求で作られた表面は、レンダリング対象表面であり、この面はＧＰＵハードウェアによって管理されないメモリの領域内に位置してもよい。その結果、ＧＰＵは、各々の表面のフラグを設定することによってビデオチャットアプリケーションの要求で作られた表面をトラッキングする。複数の例において、フラグはグラフィックスドライバソフトウェアによって格納されてもよい。加えて、複数の例において、表は、表面がトラッキングされるかどうか示すブール値と共に割り当てられた表面を示ために用いられてもよい。アプリケーションからのレンダリングオペレーションの間、アプリケーションは特定の表面がレンダリングされることを求め、グラフィックスドライバがこの表面に対して設定されたフラグを有する場合、グラフィックスドライバは、復号化データを含む表面に対してビデオ後処理を実行し、アプリケーションによって生成された表面をレンダリングしない。この処理は、表面のトラッピングとしても知られている。
【００２３】
グラフィックスドライバは、さらに、レンダリング対象表面からビデオ処理レンダリング対象表面へビデオチャットアプリケーションによって送信された作成表面通知を変更してもよい。このように、ビデオチャットアプリケーションによって作成された表面は、レンダリング対象表面からビデオ処理レンダリング対象表面に変換される。ビデオ処理レンダリング対象表面は、ＧＰＵハードウェアによって管理される。さらに、いくつかの実施形態では、ビデオ処理レンダリング対象表面はグラフィックスカードに位置してもよい。グラフィックスドライバは、さらに、復号化レンダリング対象用の追加の表面を作成してもよい。復号化レンダリング対象は、復号化されたグラフィックスデータを後処理エンジンへ送信するために用いてもよい。グラフィックスドライバは、さらに、ビデオチャットセッションがビデオチャットアプリケーションによって開始されたことをネットワークドライバとカメラドライバとに通知することができる。
【００２４】
ビデオチャットアプリケーションがアクティブ状態のビデオ通話または会議をまったく持たない場合でさえ、ネットワークドライバは任意のビデオチャットアプリケーションアクティビティ用のビデオチャットデータパケットを送信または受信するために用いられるポートをモニタリングしてもよい。ネットワークドライバがビデオチャットアプリケーションからのパケットを検知する場合、それはビデオチャットセッションをトラッキングする手段としてビデオチャットセッションからのトラフィックをマーク付けする。場合によっては、ネットワークドライバはマーカビットまたは任意の他のマーキング機構を用いることによってトラフィックをマーク付けしてもよい。ネットワークドライバは、パケットヘッダの検討またはデータ検査を介して、ビデオチャットアプリケーションからパケットを検知することができる。その後、ネットワークドライバは、ビデオチャットセッションが初期化されたことを、グラフィックスドライバとカメラドライバとに通知してもよい。
【００２５】
デバイスドライバが新しいビデオチャットセッションについて通知を受け取るやり方は、ビデオチャットセッション中にビデオチャットアプリケーションによって用いられるビデオチャット特徴と同様に、ビデオチャットセッションがビデオチャットアプリケーションによってどのように初期化されるかにもとづいて、見出される。ビデオチャットセッションでは、コンピューティングシステムはソースコンピューティングシステムおよびデスティネーションコンピューティングシステムとして指定されてもよい。場合によっては、ソースコンピューティングシステムはビデオチャットデータを送信しているコンピューティングシステムであり、その一方でデスティネーションコンピューティングシステムはビデオチャットデータを受信するコンピューティングシステムである。各々のコンピューティングシステムは、ビデオチャットセッション中に同時にソースコンピューティングシステムとデスティネーションコンピューティングシステムとの両方であってもよい。しかし、説明を容易にするために、各々のコンピューティングシステムをソースコンピューティングシステムまたはデスティネーションコンピューティングシステムとして説明する。
【００２６】
ウェブカムなどの画像キャプチャ機構がソースコンピューティングシステムには存在しないというシナリオを検討する。ソースコンピューティングシステムは、デスティネーションコンピューティングシステムにビデオチャットデータを送信してもよく、このビデオチャットデータにはオーディオおよびテキストが含まれる。この場合、画像キャプチャ機構がソースコンピューティングシステム内に存在せず、かつ処理すべきグラフィックスデータをグラフィックスハードウェアが存在しないので、グラフィックスドライバもカメラドライバもソースコンピューティングシステムでのワークフローに参加しない。したがって、ソースコンピューティングシステムのネットワークドライバは、様々なヒントの使用を介して新しいビデオチャットセッションを検知する最初のドライバであってもよい。ネットワークドライバは、新しいビデオチャットセッションの他のドライバに通知してもよい。ウェブカムの欠如によりビデオストリームがデスティネーションコンピューティングシステムに送信されない場合、デスティネーションコンピューティングシステムのグラフィックスドライバは、グラフィックスハードウェアの復号化機能または後処理機能を有効にしない。なぜなら、処理すべきグラフィックスデータがないからである。したがって、ドライバが入力ビデオチャットセッションについての通知を受けるやり方は、ビデオチャットセッションの特徴に依存する。
【００２７】
図２は、デスティネーションコンピューティングシステムでビデオチャットデータプロセッシングを可能にする方法２００の処理フローチャートである。いくつかの例において、ビデオチャットデータは、ネットワークプロトコルにもとづいて、様々なヘッダを備えたデータパケットにフォーマットされてもよい。ネットワークプロトコルとして、限定されるものではないが、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ）、インターネットプロトコル（ＩＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、またはリアルタイム通信（ＲＴＣ）プロトコルが挙げられる。ブロック２０２では、入力データパケットは前処理される。データパケットの前処理は、データパケットからビデオデータをリッピングし、このビデオデータを復号化のためにグラフィックスドライバに送信することを含む。いくつかの例において、ネットワークドライバは入力データストリームからビデオデータストリームをリッピングしてもよい。上に議論されるように、ネットワークドライバは、ポート検査または詳細なパケットヘッダ検査を介して、ビデオチャットアプリケーションに関連したパケットを検知してもよい。いくつかの実施形態において、ネットワークドライバ以外の他のモジュールは、入力データストリームからビデオデータストリームをリッピングするために用いられてもよい。
【００２８】
ブロック２０４では、無効なビデオストリームがビデオチャットアプリケーションに送信されている間に、ビデオデータストリームはグラフィックスサブシステムに送信される。いくつかの実施形態において、ネットワークドライバは、ビデオデータストリームをビデオチャットアプリケーションからグラフィックスサブシステムへルーティングするために用いられてもよい。ビデオチャットアプリケーションに送信された無効なビデオストリームは、グラフィックスハードウェアによって処理される実際のビデオデータのためのプレースホルダである。いくつかの実施形態において、入力データストリームからのオーディオデータストリームを含むパケットは、無効なビデオストリームと共にビデオチャットアプリケーションに送信される。ビデオチャットアプリケーションはオーディオデータストリームをオーディオセッションと認識し、オーディオデータストリームのレンダリングができるようにオーディオデータストリームを処理することができる。
【００２９】
いくつかの実施形態において、ネットワークドライバは共有エリアまたはメモリ上にビデオデータをリッピングしてもよい。メモリのこのエリアはグラフィックスハードウェアとネットワークドライバとによって共有されてもよい。ネットワークドライバは、共有メモリへのビデオデータをリッピングし、次に、ビデオデータがグラフィックスサブシステムにより消費されるのを待っている共有メモリにあることを、グラフィックスドライバに通知する。
【００３０】
ブロック２０６では、ビデオデータストリームはグラフィックスサブシステムを用いて処理される。いくつかの実施形態において、グラフィックスハードウェアはビデオデータストリームを受信し、次に、ストリームを復号化する。グラフィックスハードウェアは、さらに、ビデオデータに色変換、スケーリング、およびデインターレーシングなどの後処理を実行してもよい。さらに、グラフィックスサブシステムは復号化されたビデオデータストリーム上で任意の追加の画像エンハンスメント（画像改良）オペレーションを実行することができ、このような操作として、限定されるものではないが、スキントーニングと、色相、彩度、および明度の制御とが含まれる。ネットワークから受信した復号化されたビデオデータストリームの後処理をグラフィックスサブシステムが実行する一方で、ビデオチャットアプリケーションは無効なビデオストリーム上で復号化機能および後処理機能を同時に実行する。しかし、無効なストリームがプレースホルダであることから、ビデオアプリケーションに送信されたパケットはデータを含まない。その結果、データ処理はビデオチャットアプリケーションによって行われない。このように、ビデオチャットアプリケーションは、ビデオデータがビデオチャットアプリケーションに送信される時と同様のやり方で、機能する。
【００３１】
ブロック２０８では、処理ビデオデータはレンダリングされる。ビデオチャットアプリケーションがレンダリング用のグラフィックスドライバを呼び出す場合、グラフィックスドライバは、ビデオチャットアプリケーションからのプレースホルダデータが表面の上にレンダリングされないように、表面をトラッピングする。グラフィックスドライバは、グラフィックスサブシステムからの処理ビデオデータストリームを表面の上にレンダリングする。場合によっては、表面のトラッピングは、グラフィックスドライバが表面へのビデオチャットアプリケーションのアクセスを防ぐ処理のことを指す。グラフィックスドライバは、レンダリング用のビデオチャットアプリケーションから受信された任意のデータを破棄または無視してもよい。いくつかの実施形態において、表面は、ビデオチャットアプリケーションが表面を作成する要求を送信した時、グラフィックスドライバによってセットされたフラグによってトラッピングされる。ビデオチャットアプリケーションが処理用の無効なビデオストリームを受信する場合でさえ、ビデオチャットアプリケーションは、それらの表面に対してレンダリング機能を実行する。なぜなら、ビデオチャットアプリケーションは、ビデオデータストリームの復号化および後処理を処理していないことを認識していないからである。ビデオは表面からディスプレイにレンダリングされてもよい。
【００３２】
図３は、デスティネーションコンピューティングシステムで入力ビデオチャットデータを復号化するやり方を示す例示３００である。ネットワークからの入力データパケット３０２はネットワークハードウェア３０４によって受信される。いくつかの実施形態において、ネットワークドライバ３０６は、ネットワークハードウェア３０４によって受信されたビデオチャットデータを検知する。ネットワークハードウェアによって受信されたビデオチャットデータが最初に検出されると、ネットワークドライバ３０６は、グラフィックスドライバ３０８にビデオチャットセッションを通知してもよい。この通知を受信した後、グラフィックスドライバはビデオチャットアプリケーション３１０によって作られた表面をトラッキングすることができる。ネットワークドライバ３０６は、入力データストリームからのビデオデータストリームの分離をネットワークハードウェア３０４に行わせてもよい。ネットワークハードウェア３０４は、さらに、グラフィックスドライバ３０８の復号化モジュール３０８Ａへビデオデータストリームを転送してもよい。ネットワークドライバ３０６は、さらに、ビデオチャットアプリケーション３１０への無効なビデオストリームの送信をネットワークハードウェア３０４に行わせてもよい。
【００３３】
グラフィックスドライバ３０８の復号化モジュール３０８Ａは、上述したようなビデオデータストリーム上での復号化機能および後処理機能の実行を、グラフィックス復号化および後処理ハードウェア３１２に行わせる。その後、グラフィックスドライバ３０８のレンダリングモジュール３０８Ｂは、復号化データおよび後処理データのレンダリングを、ＧＰＵレンダリングハードウェア３１４に行わせる。グラフィックスドライバ３０８のレンダリングモジュール３０８Ｂは、ブロック３１０でビデオチャットアプリケーションによって送信されたデータが「ダミー」データであることに気づく。ビデオチャットアプリケーションからのビデオデータはどれも無視される。いくつかの実施形態において、グラフィックスドライバ３０８のレンダリングモジュール３０８Ｂは、グラフィックス復号化および後処理ハードウェア３１２からレンダリングされる表面に、復号化および後処理されたビデオデータストリームを書き込みする。
【００３４】
図４は、入力ビデオチャットデータを復号化するやり方を示すシステム４００の制御フローチャートである。入力データパケット３０２はシステム４００へ入力される。ネットワークドライバ３０６は、参照番号４０２でビデオデータがシステムに入力されるポートを検査する。参照番号４０４では、入力データパケットがビデオチャットパケットである場合、ビデオチャット復号化セッションが作成され、またデータはグラフィックスハードウェアに送信される。参照番号４０６で示されるように、ビデオチャットパケットが検知される場合は常に、ビデオデータはデータの各々のパケットから抽出される。参照番号４０８では、抽出されたビデオパケットは、復号化されるグラフィックスハードウェアに送信される。グラフィックスドライバの復号化モジュール３０８Ａは、ビデオデータを復号化するべく、グラフィックスハードウェアを動作させてもよい。加えて、参照番号４１０では、ネットワークドライバは、無効なビデオストリームと入力データパケットから抽出されたオーディオデータとをビデオチャットアプリケーション３１０へ送信するように、ネットワークハードウェアに命じる。
【００３５】
復号化セッションは参照番号４１２で開始されてもよい。復号化セッションに、ビデオデータストリームからの入力フレームは参照番号４１４で示されるようなグラフィックスハードウェアを用いて、継続的に復号化される。参照番号４１６では、後処理はビデオデータフレーム上で実行される。したがって、グラフィックスドライバ３０８は、復号化されたビデオデータの後処理または上に議論されたようなデータのレンダリングを、グラフィックスハードウェアに行わせてもよい。ビデオチャットアプリケーション３１０は、参照番号４１８でレンダリングされるビデオデータを送信する。しかし、ビデオチャットアプリケーションによって処理されたパケットが無効なデータパケットであったことから、ビデオチャットアプリケーション３１０からのビデオデータはレンダリングされず、結果として得られるビデオ表面は情報を含まない。グラフィックスドライバ３０８は、グラフィックスハードウェアから受信された、復号化および後処理されたフレームをレンダリングする。
【００３６】
図５は、ソースコンピューティングシステムでビデオチャットデータプロセッシングを可能にする方法５００の処理フローチャートである。デバイスドライバは、ビデオチャットセッションの開始を検知するべく、ヒントを用いてもよい。このように、ドライバは、ビデオチャットデータがグラフィックスサブシステムによって処理されてもよいように、ビデオチャットデータをリルーティングすることができる。いくつかの例において、カメラドライバは、ビデオチャットセッションが始動されたことをグラフィックスドライバとネットワークドライバとに通知することが可能であり、カメラドライバはビデオチャットアプリケーションからのアクセスの要求を検知する。
【００３７】
ブロック５０２では、ビデオデータがキャプチャされる。いくつかの実施形態において、カメラなどの画像キャプチャ機構はビデオデータをキャプチャするために用いられる。さらに、オーディオデータはマイクロホンを用いてキャプチャされてもよい。ブロック５０４では、カメラドライバは、符号化用グラフィックスサブシステムへのキャプチャしたビデオデータの送信を、画像キャプチャ機構に行わせる。とりわけ、キャプチャしたビデオデータはグラフィックスサブシステムのエンコーダに送信され得る。カメラドライバは、さらに、ビデオチャットアプリケーションへの無効なビデオデータの送信を、画像キャプチャ機構に行わせる。マイクロホンによってキャプチャしたオーディオも、ビデオチャットアプリケーションに送信され、ビデオチャットアプリケーションから結果として得られるパケットは正確なオーディオおよび無効なビデオを含む。ブロック５０６では、キャプチャしたビデオデータはグラフィックスサブシステムを用いて処理される。いくつかの実施形態において、グラフィックスドライバの符号化モジュールは、キャプチャしたビデオデータを符号化するべく、エンコーダなどのグラフィックスハードウェアを用いる。
【００３８】
ブロック５０８では、グラフィックスサブシステムからの符号化されたデータは、ネットワークを介した送信に備えられる。いくつかの実施形態において、符号化されたデータはネットワークドライバへ送信される。ネットワークハードウェアは、ネットワークを介して送信するためにビデオチャットアプリケーションから送信されたパケットをインターセプトし、グラフィックスサブシステムからの符号化されたビデオデータの挿入によってパケットをリパッケージする。その後、リパッケージされたパケットは、ネットワークプロトコルにもとづいて、ネットワークを介して送信される。いくつかの実施形態において、ネットワークハードウェアがグラフィックスサブシステムからの符号化されたデータの挿入によってパケットをリパッケージするので、ネットワークヘッダ情報は完全なままである。例えば、ネットワークサブシステムは、パケットに送信されるバイト数のトラッキングを維持すべく、パケットヘッダを用いてもよい。グラフィックスサブシステムからの符号化されたビデオデータがビデオチャットアプリケーションから送信されるパケットに挿入される場合、パケットヘッダはパケット長の変化を反映するべく修正され、これにより、正確なヘッダ情報を維持してもよい。そのようなパッケージングは、潜在的なネットワークプロトコルにもとづいて実行されなければならない。このことは、送信されたパケットの受信時に、このパケットが拒否されないことを確実にする。
【００３９】
いくつかの実施形態において、グラフィックスドライバのレンダリングモジュールは、グラフィックスサブシステムにソースコンピューティングシステムのビデオチャットアプリケーション内の受信ビデオデータと並行して、キャプチャしたビデオデータをレンダリングさせる。例えば、ビデオチャットアプリケーションのより大きな部分において受信されたビデオチャットデータをレンダリングする一方で、ユーザが自分の画像を見ることができるようにビデオチャットアプリケーションのより小さな部分においてソースビデオデータをレンダリングしてもよい。そのようなシナリオでは、グラフィックスサブシステムは、このソースデータを示すために呼び出される場合に画像キャプチャ機構によって転送される生ビデオストリームを再度用いる。いくつかの実施形態において、色空間変換およびスケーリングは、キャプチャしたソースデータが同じコンピューティングシステム上でレンダリングされる前に、グラフィックスハードウェアによって実行されてもよい。
【００４０】
図６は、ソースコンピューティングシステムで、キャプチャしたビデオチャットデータを符号化するやり方を示す例示６００である。カメラモジュール６０２は、カメラドライバ６０４およびカメラハードウェア６０６を用いて生ビデオデータのキャプチャを制御するために用いられる。カメラモジュール６０２は、ビデオチャットアプリケーション６０８に無効なビデオデータを送信する。カメラドライバ６０４は、カメラハードウェア６０６からグラフィックスサブシステムの符号化ハードウェア６１２へ、キャプチャしたビデオデータを送信させる。カメラドライバ６０４は、さらに、グラフィックスドライバの符号化モジュール６１０Ａおよびグラフィックスドライバのレンダリングモジュール６１０Ｂに、ビデオチャットセッションが始動されたことを通知してもよい。
【００４１】
グラフィックスドライバの符号化モジュール６１０Ａは、ビデオチャットアプリケーションから受信されたパケットがリパッケージされるように、ネットワークドライバ６１４と通信する。符号化されたビデオデータは、グラフィックスサブシステムの符号化ハードウェア６１２からネットワークハードウェア６１６に送信される。ネットワークドライバ６１４は、グラフィックスサブシステムの符号化ハードウェア６１２からの符号化されたビデオデータとビデオチャットアプリケーション６０８からのパケットとを組み合わせる。いくつかの実施形態において、マルチプレクサは、オーディオおよび無効なビデオを含むビデオチャットアプリケーション６０８からのデータパケットとグラフィックスサブシステムの符号化ハードウェア６１２からの符号化されたビデオデータとを組み合わせるために用いられる。マルチプレクサは、ハードウェアまたはソフトウェアに実装されてもよい。ネットワークハードウェア６１６は、ネットワークを介してリパッケージされたデータパケットを送信するために用いられる。
【００４２】
カメラドライバ６０４は、さらに、グラフィックスドライバのレンダリングモジュール６１０Ｂと通信することによって、カメラハードウェア６０６からのキャプチャしたビデオデータを、ＧＰＵサブシステムのＧＰＵレンダリングハードウェア６１８へ送信させる。レンダリングモジュール６１０Ｂは、カメラハードウェア６０６によってキャプチャしたビデオデータのレンダリングを、グラフィックスサブシステムのＧＰＵレンダリングハードウェア６１８に行わせてもよく、これにより、キャプチャしたビデオデータが同一のコンピューティングシステムでレンダリングされる。いくつかの実施形態において、ビデオチャットアプリケーション６０８は、リモートコンピューティングシステムから受信されたビデオおよびオーディオデータと並行してソースビデオデータをレンダリングする。
【００４３】
図７は、キャプチャしたビデオチャットデータを符号化するやり方を示すシステム７００の制御フローチャートである。ビデオチャットアプリケーションは、カメラモジュール６０２と同期することによって、参照番号７０２でビデオフレームをキャプチャする。いくつかの実施形態において、同期は、カメラモジュール６０２に生ビデオデータを要求することを含む。カメラモジュール６０２は、参照番号７０４で示されるような新しいビデオチャットセッションをネットワークドライバ６１４に通知する。カメラモジュール６０２は、さらに、参照番号７０６で示されるような新しいビデオチャットセッションのグラフィックスドライバの符号化モジュール６１０Ａに通知する。その後、カメラモジュール６０２は、参照番号７０８で示されるようなビデオチャットアプリケーション６０８に無効なビデオフレームを送信する。キャプチャしたビデオデータは、参照番号７１０で示されるようなグラフィックスドライバの符号化モジュール６１０Ａまで、カメラハードウェアから送信される。グラフィックスドライバの符号化モジュール６１０Ａは、参照番号７１２で示されるようなグラフィックスサブシステムの符号化ハードウェアを初期化する。その後、グラフィックスサブシステムの符号化ハードウェアは、参照番号７１４で示されるような入力ビデオデータを符号化する。その後、グラフィックスドライバの符号化モジュール６１０Ａは、参照番号７１６で示されるようなネットワークハードウェアに符号化されたビデオデータを送信する。対応するオーディオデータは、さらに、参照番号７１８で示されるようなパケットのネットワークハードウェアへ、ビデオチャットアプリケーション６０８から送信される。ネットワークドライバ６１４は、参照番号７２０で示されるようなビデオチャットデータの送信のために用いられるポートを初期化する。符号化されたデータは、参照番号７２２で示されるように格納されてもよい。その後、符号化されたデータは、参照番号７２４で示されるようなビデオチャットアプリケーションからのオーディオデータを有するパケットにリパッケージされる。リパッケージされたパケットは、参照番号７２６でネットワークを介して送信されてもよい。
【００４４】
図８は、ビデオチャットデータを処理する例示的なシステム８００のブロック図である。同様の数字が付けられたアイテムは、図１に関して説明されたものと同じである。いくつかの実施形態において、システム８００は媒体システムである。さらに、システム８００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、サーバーコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡ組み合わせ、テレビ、スマートデバイス（例えばスマートフォン、スマートタブレット、もしくはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、プリントデバイス、組込みドライバ、またはその他に、組み込まれてもよい。
【００４５】
様々な実施形態では、システム８００は、ディスプレイ８０４に結合したプラットフォーム８０２を備える。プラットフォーム８０２は、コンテンツサービスデバイス８０６もしくはコンテンツ配信デバイス８０８などのコンテンツデバイスまたは他の同様のコンテンツソースからコンテンツを受信してもよい。１または複数のアイテム間移動特徴を含むアイテム間移動コントローラ８１０は、例えばプラットフォーム８０２および／またはディスプレイ８０４とインタラクションを行うために用いられてもよい。以下、これらの構成要素の各々をより詳細に説明する。
【００４６】
プラットフォーム８０２は、チップセット８１２、中央処理装置（ＣＰＵ）１０２、メモリデバイス１０４、記憶デバイス１２２、グラフィックスサブシステム８１４、アプリケーション８２０、および無線８１６の任意の組み合わせを有してもよい。チップセット８１２は、ＣＰＵ１０２、メモリデバイス１０４、記憶デバイス１２２、グラフィックスサブシステム８１４、アプリケーション８２０、および無線８１６の間で相互通信を提供してもよい。例えば、チップセット８１２は、相互通信に記憶デバイス１２２を提供することができるストレージアダプタ（不図示）を有してもよい。アプリケーション８２０は、上述したようなアプリケーション１２４、アプリケーション２０２、またはアプリケーション５０２であってもよい。システム８００の構成要素は、システムオンチップ（ＳＯＣ）として実装されてもよい。ＳＯＣ実装では、プラットフォーム８０２の全ての構成要素は、単一のチップ基板上に組み合わせられる。
【００４７】
ＣＰＵ１０２は、複数命令セットコンピュータ（ＣＩＳＣ）または縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、ｘ８６命令セット互換プロセッサ、マルチコア、あるいは任意の他のマイクロプロセッサまたは中央処理装置（ＣＰＵ）として実装されてもよい。いくつかの実施形態において、ＣＰＵ１０２は、マルチコアプロセッサ、マルチコアモバイルプロセッサ、またはその他を有する。メモリデバイス１０４は、揮発性記憶デバイスとして実装されてもよい。この揮発性記憶デバイスは、限定されるものではないが、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、またはスタティックＲＡＭ（ＳＲＡＭ）などである。記憶デバイス１２２は、不揮発性記憶デバイスとして実装されてもよい。この不揮発性記憶デバイスは、限定されるものではないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、ソリッドステートドライブ、内部記憶デバイス、接続記憶デバイス、フラッシュメモリ、バッテリバックアップＳＤＲＡＭ（シンクロナスＤＲＡＭ）、および／またはネットワークアクセス可能な記憶デバイスなどである。いくつかの実施形態において、例えば、記憶デバイス１２２は、多数のハードドライブが含まれる場合に、有益なデジタル媒体の保護を強化するストレージパフォーマンスを高める技術を有する。
【００４８】
グラフィックスサブシステム８１４は、表示用のスチールまたはビデオなどの画像の処理を実行してもよい。グラフィックスサブシステム８１４は、例えば、ＧＰＵ１０８などのグラフィックスプロセッシングユニット（ＧＰＵ）、またはビジュアルプロセッシングユニット（ＶＰＵ）を含んでもよい。アナログインターフェースまたはデジタルインターフェースは、グラフィックスサブシステム８１４とディスプレイ８０４とを通信可能に結合するために用いられてもよい。例えば、このインターフェースは、高解像度マルチメディアインターフェース、ディスプレイポート（ＤｉｓｐｌａｙＰｏｒｔ）、無線ＨＤＭＩ（登録商標）および／または無線ＨＤ準拠の技術のいずれであってもよい。グラフィックスサブシステム８１４は、ＣＰＵ１０２またはチップセット８１２に統合される。あるいは、グラフィックスサブシステム８１４は、チップセット８１２に通信可能に結合するスタンドアロンのカードであってもよい。
【００４９】
本明細書に説明されるグラフィックス処理技術および／またはビデオ処理技術は、様々なハードウェアアーキテクチャに実装されてもよい。例えば、グラフィックスおよび／またはビデオ機能性は、チップセット８１２内に統合されてもよい。あるいは、ディスクリートグラフィックスおよび／またはビデオプロセッサが用いられてもよい。さらに他の実施形態として、グラフィックス機能および／またはビデオ機能は、マルチコアプロセッサなどの汎用プロセッサによって実装されてもよい。さらなる実施形態では、上記機能は消費者向けの電子デバイスに実装されてもよい。
【００５０】
無線８１６は、様々な適当な無線通信技術を用いて、信号を送受信することができる１または複数の無線を有してもよい。そのような技術は、１または複数の無線ネットワーク間の通信を伴うものであってもよい。例示的な無線ネットワークとして、無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンネットワーク（ＷＭＡＮ）、セルラーネットワーク、衛星ネットワーク、またはその他が挙げられる。そのようなネットワークを介して通信する際に、無線８１６は、任意のバージョンの１または複数の適用可能な規格にもとづいて動作してもよい。
【００５１】
ディスプレイ８０４は、任意のテレビ型モニタまたはテレビ型ディスプレイを有してもよい。例えば、ディスプレイ８０４は、コンピュータディスプレイ画面、タッチ画面ディスプレイ、ビデオモニタ、テレビ、またはその他を有してもよい。ディスプレイ８０４は、デジタルおよび／またはアナログであってもよい。いくつかの実施形態において、ディスプレイ８０４はホログラフィックディスプレイである。さらに、ディスプレイ８０４は視覚投影を受け得るトランスペアレント表面であってもよい。そのような投影は、様々な形式の情報、画像、物体、またはその他を伝達してもよい。例えば、そのような投影は、モバイル拡張現実（ＭＡＲ）アプリケーション用のビジュアルオーバーレイであってもよい。１または複数のアプリケーション８２０の制御下で、プラットフォーム８０２はディスプレイ８０４上にユーザインターフェース８１８を表示してもよい。
【００５２】
コンテンツサービスデバイス８０６は、任意の国家サービス、国際サービス、または独立したサービスがホストになることが可能である。これにより、例えば、インターネットを介してプラットフォーム８０２にアクセス可能であってもよい。コンテンツサービスデバイス８０６は、プラットフォーム８０２、および／またはディスプレイ８０４に結合してもよい。プラットフォーム８０２および／またはコンテンツサービスデバイス８０６は、ネットワーク１２８とメディア情報の通信のやりとり（例えば、送信および／または受信）を行うべく、ネットワーク１２８に結合してもよい。コンテンツ配信デバイス８０８は、さらに、プラットフォーム８０２および／またはディスプレイ８０４に結合してもよい。
【００５３】
コンテンツサービスデバイス８０６は、デジタル情報を伝えることができるケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、またはインターネット対応デバイスを有してもよい。さらに、コンテンツサービスデバイス８０６は、ネットワーク１２８を介してまたは直接的に、コンテンツプロバイダとプラットフォーム８０２またはディスプレイ８０４との間でコンテンツを一方向または双方向に通信することができる任意の他の同様のデバイスを有してもよい。コンテンツは、一方向および／または双方向で、システム８００およびコンテンツプロバイダの構成要素の任意の１つとネットワーク１２８を介して、一方向および／または双方向で通信のやりとりを行い得ると理解されよう。コンテンツの例として、任意のメディア情報を挙げることが可能であり、そのような情報には、例えば、ビデオ、音楽、医学およびゲーム情報、ならびにその他が含まれる。
【００５４】
コンテンツサービスデバイス８０６は、メディア情報、デジタル情報、または他のコンテンツを含むケーブルテレビプログラミングのなどのコンテンツを受信してもよい。とりわけ、コンテンツプロバイダの例は、任意の有線もしくは衛星テレビまたは無線あるいはインターネットコンテンツプロバイダを含んでもよい。
【００５５】
いくつかの実施形態において、プラットフォーム８０２は、１または複数のアイテム間移動特徴を含むアイテム間移動コントローラ８１０から制御信号を受信する。アイテム間移動コントローラ８１０のアイテム間移動特徴は、例えば、ユーザインターフェース８１８とのインタラクションを行うために用いられてもよい。アイテム間移動コントローラ８１０は、ポインティングデバイスまたはタッチ画面デバイスであってもよい。このポインティングデバイスまたはタッチスクリーンデバイスは、ユーザが空間的（例えば、連続的かつ多次元の）データをコンピュータに入力することを可能にするコンピュータハードウェア構成要素（具体的には、ヒューマンインターフェースデバイス）であってもよい。グラフィカルユーザインターフェース（ＧＵＩ）などの多くのシステム、ならびにテレビおよびモニタは、ユーザが身振りを用いてデータを制御してコンピュータまたはテレビにそのデータを提供することを可能にする。身振りとして、限定されるものではないが、顔の表情、顔の動作、様々な手足の動作、身体動作、ボディランゲージ、またはそれらの任意の組み合わせが挙げられる。そのような身振りは、認識され、コマンドまたは命令に翻訳される。
【００５６】
アイテム間移動コントローラ８１０のアイテム間移動特徴の動作は、ディスプレイ８０４上に表示されたポインタ、カーソル、フォーカスリング、または他の視覚的指標の動作によって、ディスプレイ８０４上に反映されてもよい。例えば、アプリケーション８２０の制御下で、アイテム間移動コントローラ８１０に位置するアイテム間移動特徴は、ユーザインターフェース８１８に表示された仮想アイテム間移動特徴にマッピングされてもよい。いくつかの実施形態において、アイテム間移動コントローラ８１０は別個の構成要素ではなくてもよく、むしろ、プラットフォーム８０２および／またはディスプレイ８０４に統合されてもよい。
【００５７】
システム８００は、例えば、有効になった時、最初のブートアップの後に、ユーザがボタンのタッチによってプラットフォーム８０２を即座にオンオフすることを可能にする技術を含むドライバ（不図示）を有してもよい。プログラムロジックは、プラットフォーム８０２をオフにすると、媒体アダプタまたは他のコンテンツサービスデバイス８０６もしくはコンテンツ配信デバイス８０８へのプラットフォーム８０２によるコンテンツのストリーミングを可能にしてもよい。さらに、チップセット８１２は、例えば、６．１サラウンドサウンドオーディオおよび／または高品位７．１サラウンドサウンドオーディオ用のハードウェアおよび／またはソフトウェアサポートを含んでもよい。ドライバは、統合グラフィックスプラットフォーム用のグラフィックスドライバを含んでもよい。いくつかの実施形態において、グラフィックスドライバは、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）グラフィックスカードを含む。
【００５８】
様々な実施形態では、システム８００に示される構成要素のいずれか１つまたは複数を統合してもよい。例えば、プラットフォーム８０２およびコンテンツサービスデバイス８０６を統合してもよい。プラットフォーム８０２およびコンテンツ配信デバイス８０８を統合してもよい。プラットフォーム８０２およびコンテンツデリバリデバイス８０８を統合してもよく、またはプラットフォーム８０２、コンテンツサービスデバイス８０６、およびコンテンツデリバリデバイス８０８を統合してもよい。いくつかの実施形態では、プラットフォーム８０２およびディスプレイ８０４は、統合ユニットである。例えば、ディスプレイ８０４およびコンテンツサービスデバイス８０６を統合してもよく、または、ディスプレイ８０４およびコンテンツ配信デバイス８０８を統合してもよい。
【００５９】
システム８００は、無線システムまたは有線システムとして実装されてもよい。無線システムとして実装された場合、システム８００は、無線共有媒体越しに通信するのに適した構成要素およびインターフェース、例えば、１または複数のアンテナ、送信器、受信器、送受信器、増幅器、フィルタ、および制御ロジックを備えてもよい。無線共有媒体の一例は、ＲＦスペクトルなど、無線スペクトルの部分を含んでもよい。有線システムとして実装された場合、システム８００は、有線通信媒体越しに通信するのに適した構成要素およびインターフェース、例えば、入出力（Ｉ／Ｏ）アダプタ、Ｉ／Ｏアダプタを対応の有線通信媒体に接続する物理的コネクタ、ネットワークインターフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、またはオーディオコントローラを備えてもよい。有線通信媒体の例として、ワイヤ、ケーブル、メタルリード、プリント回路板（ＰＣＢ）、バックプレーン、スイッチング構造、半導体材料、ツイストペア線、同軸ケーブル、ファイバーオプティクス、またはその他を挙げることが可能である。
【００６０】
プラットフォーム８０２は、情報を通信するべく、１または複数のロジックチャンネルまたは物理チャネルを確立してもよい。情報は、メディア情報と制御情報とを含んでもよい。メディア情報は、コンテンツがユーザ用の任意のデータを表してもよい。コンテンツの例として、例えば、音声対話、テレビ会議、ストリーミングビデオ、電子メール（ｅメール）メッセージ、音声メールメッセージ、英数字シンボル、グラフィックス、画像、ビデオ、およびテキスト、およびその他のデータを挙げることが可能である。音声対話からのデータは、例えば、音声情報、沈黙時間、バックグラウンドノイズ、快感雑音、トーン、およびその他であってもよい。制御情報は、自動化されたシステム用のコマンド、命令、または制御語を表す任意のデータを指してもよい。例えば、制御情報は、システムを介してメディア情報をルーティングするべく、または予め定められたやり方でメディア情報を処理するようにノードを命じるべく、用いられてもよい。しかし、実施形態は、図８に示すまたは説明される要素または文脈に限定されるものではない。
【００６１】
図９は、図８のシステム８００が具現化されてもよい小型フォームファクタデバイス９００の模式図である。同様の数字が付けられたアイテムは、図８に関して説明されたものと同じである。いくつかの実施形態において、例えば、小型フォームファクタデバイス９００は無線機能を有しているモバイルコンピューティングデバイスとして実装される。モバイルコンピューティングデバイスは、例えば、処理システムと、１または複数のバッテリなどのモバイル電源または供給源とを有する任意のデバイスを指してもよい。
【００６２】
上述したように、モバイルコンピューティングデバイスの例として、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、サーバーコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡ組み合わせ、テレビ、スマートデバイス（例えばスマートフォン、スマートタブレット、もしくはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、およびデータ通信デバイスを挙げることが可能である。
【００６３】
モバイルコンピューティングデバイスの例として、さらに、人が着用するよう構成されたコンピュータ、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シューコンピュータ、クロージングコンピュータ、または任意の他の適したタイプのウェアラブルコンピュータなどを挙げることが可能である。例えば、モバイルコンピューティングデバイスは、音声コミュニケーションおよび／またはデータ通信と同様に、コンピュータアプリケーションを実行することができるスマートフォンとして実装されてもよい。いくつかの実施形態は、例として、スマートフォンとして実装されたモバイルコンピューティングデバイスとして説明されてもよいが、他の実施形態が同様に他の有線または無線のモバイルコンピューティングデバイスを用いて実装され得ると認識されてもよい。
【００６４】
図９に示されるように、小型フォームファクタデバイス９００は、筐体９０２、ディスプレイ９０４、入出力（Ｉ／Ｏ）デバイス９０６、およびアンテナ９０８を備えてもよい。小型フォームファクタデバイス９００は、さらに、アイテム間移動特徴９１２を有してもよい。ディスプレイ９０４は、モバイルコンピューティングデバイスに適切な情報を表示するための、任意の適当なディスプレイユニット９１０を有してもよい。Ｉ／Ｏデバイス９０６は、モバイルコンピューティングデバイスへ情報を入力するための任意の適当なＩ／Ｏデバイスを含んでもよい。例えば、Ｉ／Ｏデバイス９０６として、アルファニューメリックキーボード、テンキー、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロホン、スピーカー、音声認識デバイスおよびソフトウェア、またはその他を挙げることが可能である。情報もマイクロホン経由で小型フォームファクタデバイス９００に入力されてもよい。そのような情報は、音声認識デバイスによってデジタル化されてもよい。
【００６５】
図１０は、ビデオチャットデータプロセッシングのコードを格納する、有形の持続性コンピュータ可読媒体１０００を示すブロック図である。有形の持続性コンピュータ可読媒体１０００は、コンピュータバス１００４越しにプロセッサ１００２によってアクセスされてもよい。さらに、有形の持続性コンピュータ可読媒体１０００は、本明細書中に説明された方法を行なうようにプロセッサ１００２に対して指示するコードを含んでもよい。
【００６６】
図１０に示されるように、本明細書中で議論される様々なソフトウェア構成要素は、１または複数の有形の持続性コンピュータ可読媒体１０００に格納されてもよい。例えば、符号化モジュール１００６は、画像データの符号化をグラフィックスサブシステムに行わせてもよい。復号化モジュール１００８は、ネットワークから受信された入力データパケットの復号化をグラフィックスサブシステムに行わせてもよいもよい。後処理モジュールはグラフィックスサブシステムに復号化されたビデオデータの後処理をグラフィックスサブシステムに行わせてもよい。さらに、レンダリングモジュールは、ビデオデータのレンダリングをグラフィックスサブシステムに行わせるために用いられてもよい。
【００６７】
図１０のブロック図は、有形の持続性コンピュータ可読媒体１０００が図１０に示される構成要素をすべて含むように示すことを意図されない。さらに、有形の持続性コンピュータ可読媒体１０００は、具体的な実施態様の詳細に応じて、図１０に示さない任意の数の追加的な構成要素を含んでもよい。実施例１
【００６８】
グラフィックスプロセッシングユニットは、本明細書中に説明される。グラフィックスプロセッシングユニットは、デコーダを有する。デコーダは、入力データストリームからのビデオデータストリームを復号化する。グラフィックスプロセッシングユニットは、さらに、後処理プロセッサを有する。後処理プロセッサは、復号化されたビデオデータストリームの後処理を行なう。加えて、グラフィックスプロセッシングユニットはレンダラを有する。レンダラは、後処理されたビデオデータストリームをレンダリングし、ビデオチャットセッション中にビデオチャットアプリケーションから無効なビデオデータストリームを破棄する。
【００６９】
デバイスドライバは、入力データからのビデオデータストリームがデコーダに送信され、かつ無効なビデオストリームがビデオチャットアプリケーションに送信されるように、ビデオチャットセッションを検知してもよい。入力データストリームは、ビデオデータストリームとオーディオデータストリームを含んでもよい。また、ビデオチャットアプリケーションは、オーディオデータストリームと無効なビデオデータストリームとを受信してもよい。デコーダは、ビデオチャットアプリケーションのコーデックによってビデオデータストリームを復号化してもよい。加えて、復号化されたデータストリームを後処理することがビデオデータストリームに対する任意の画像改良を含んでもよい。さらに、ヒントは、新しいビデオチャットセッションを検知するために用いられてもよい。実施例２
【００７０】
システムは、本明細書中に説明される。システムはエンコーダを有し、またエンコーダは画像データの符号化をおこなう。システムは、さらに、マルチプレクサを有する。また、マルチプレクサは、ビデオチャットセッション中にビデオチャットアプリケーションからのデータパケットによって、符号化された画像データをリパッケージする。加えて、システムはネットワークロジックを有する。また、ネットワークロジックはネットワークを介してリパッケージされたデータパケットを送信する。
【００７１】
エンコーダは、ビデオチャットアプリケーションのコーデックによってビデオデータストリームを符号化してもよい。画像キャプチャデバイスは画像データをキャプチャし、その画像データをエンコーダへ送信してもよい。画像キャプチャデバイスは、さらに、ビデオチャットアプリケーションへ無効な画像データを送信してもよい。ビデオチャットアプリケーションからのデータパケットは、ビデオチャットセッションからの無効な画像データおよびオーディオデータを含んでもよい。レンダラは、ビデオチャットセッション中にビデオチャットアプリケーションを用いて、画像データをレンダリングしてもよい。ヒントは、新しいビデオチャットセッションを検知ために用いられてもよい。実施例３
【００７２】
システムは、本明細書中に説明される。システムは、ディスプレイと、無線と、命令を格納してディスプレイに通信可能に結合したメモリとを備える。システムは、さらに、無線およびメモリに通信可能に結合したプロセッサを有し、プロセッサが命令を実行する場合、プロセッサはアプリケーションによってビデオチャットセッションを検知する。プロセッサは、さらに、ネットワークを介して送信される画像データを符号化する。ここで、グラフィックスサブシステムは画像キャプチャデバイスからの画像データを符号化し、アプリケーションは画像キャプチャデバイスから無効な画像データを受信する。加えて、プロセッサは、ネットワークから受信された入力データパケットを復号化する。ここで、ネットワークロジックは、入力データパケットからの符号化されたビデオデータをリッピングし、復号化されるグラフィックスサブシステムへ符号化されたビデオデータを送信する。また、ネットワークロジックは、アプリケーションへ無効なビデオデータを送信する。プロセッサは、グラフィックスプロセッシングユニットであってもよい。加えて、システムはシステムオンチップ（ＳＯＣ）であってもよい。さらに、符号化機能および復号化機能は、アプリケーションの代わりにプロセッサによって実行されてもよい。実施例４
【００７３】
プロセッサに指示するコードを有する有形の持続性コンピュータ可読媒体は、本明細書中に説明される。コードは、ネットワークを介して送信される画像データを符号化するようにプロセッサに指示してもよい。ここで、プロセッサは、ビデオチャットアプリケーションの代わりに画像データを符号化する。コードは、さらに、ネットワークから受信された入力データパケットを復号化するようにプロセッサに指示してもよい。ここで、符号化された画像データは入力データパケットからリッピングされ、復号化されるべくプロセッサに送信される。
【００７４】
画像データは、画像キャプチャデバイスから受信されてもよい。加えて、プロセッサが画像データを符号化する場合、ビデオチャットアプリケーションは無効なビデオデータを符号化してもよい。プロセッサが符号化された画像データを受信する場合、ビデオチャットアプリケーションは無効なデータパケットを受信してもよい。
【００７５】
先述された例における特性は、１または複数の実施形態のいかなるところでも用いてもよいと理解される。例えば、上記のコンピューティングデバイスの選択的な特徴の全ても、本明細書中に説明された方法またはコンピュータ可読媒体のいずれかに関して実装されてもよい。さらに、実施形態を説明するべくフローチャートおよび／または状態図を本明細書中で用いてもよいが、本技術はこれらの図またはそれに対応した本明細書中の説明に限定されるものではない。例えば、フローは各々の図示されたボックスまたは状態を通って、あるいは本明細書に例示または説明された順序と全く同じに、移動する必要はない。
【００７６】
本技術は、本明細書中に挙げられた特定の詳細に制限されない。実際に、この開示の利益を有する当業者は、上記の説明および図面から多くの他の変形が本技術の範囲内でなされてもよいことを理解するであろう。したがって、以下の特許請求の範囲には本技術の範囲を画定するあらゆる変更が包含される。
本実施形態の例を下記の各項目として示す。
［項目１］
入力データストリームからビデオデータストリームを復号化するデコーダと、
前記復号化されたビデオデータストリームの後処理を実行する後処理プロセッサと、
ビデオチャットセッション中に、前記後処理されたビデオデータストリームをレンダリングし、ビデオチャットアプリケーションからの無効なビデオデータストリームを破棄するレンダラと
を備えるグラフィックスプロセッシングユニット。
［項目２］
デバイスドライバをさらに備え、前記デバイスドライバは、入力データからの前記ビデオデータストリームが前記デコーダに送信され、かつ前記無効なビデオストリームが前記ビデオチャットアプリケーションに送信されるように、前記ビデオチャットセッションを検知する、項目１に記載のグラフィックスプロセッシングユニット。
［項目３］
前記入力データストリームは前記ビデオデータストリームとオーディオデータストリームとを含む、項目１または２に記載のグラフィックスプロセッシングユニット。
［項目４］
前記ビデオチャットアプリケーションはオーディオデータストリームと前記無効なビデオデータストリームとを受信する、項目１から３のいずれか一項に記載のグラフィックスプロセッシングユニット。
［項目５］
前記デコーダは前記ビデオチャットアプリケーションのコーデックにもとづいて前記ビデオデータストリームを復号化する、項目１から４のいずれか一項に記載のグラフィックスプロセッシングユニット。
［項目６］
前記復号化されたビデオデータストリームを後処理することは前記ビデオデータストリームに対する任意の画像改良を含む、項目１から５のいずれか一項に記載のグラフィックスプロセッシングユニット。
［項目７］
複数のヒントを用いて新しいビデオチャットセッションを検知する、項目１から６のいずれか一項に記載のグラフィックスプロセッシングユニット。
［項目８］
画像データを符号化するエンコーダと、
ビデオチャットセッション中にビデオチャットアプリケーションからのデータパケットによって符号化された画像データをリパッケージするマルチプレクサと、
前記リパッケージされたデータパケットをネットワークを介して送信するネットワークロジックと
を備えるシステム。
［項目９］
前記エンコーダは、前記ビデオチャットアプリケーションのコーデックにもとづいてビデオデータストリームを符号化する、項目８に記載のシステム。
［項目１０］
画像キャプチャデバイスをさらに備え、前記画像キャプチャデバイスは前記画像データをキャプチャし、前記画像データを前記エンコーダへ送信する、項目８または９に記載のシステム。
［項目１１］
画像キャプチャデバイスは、前記ビデオチャットアプリケーションへ無効な画像データを送信する、項目８から１０のいずれか一項に記載のシステム。
［項目１２］
前記ビデオチャットアプリケーションからの前記データパケットは、前記ビデオチャットセッションからの無効な画像データおよびオーディオデータを含む、項目８から１１のいずれか一項に記載のシステム。
［項目１３］
レンダラをさらに備え、
前記レンダラは前記ビデオチャットセッション中に前記ビデオチャットアプリケーションを用いて前記画像データをレンダリングする、項目８から１２のいずれか一項に記載のシステム。
［項目１４］
複数のヒントを用いて新しいビデオチャットセッションを検知する、項目８から１３のいずれか一項に記載のシステム。
［項目１５］
ディスプレイと、
無線と、
複数の命令を格納し、前記ディスプレイに通信可能に結合したメモリと、
通信可能に前記無線および前記メモリに結合したプロセッサとを備え、
前記プロセッサが前記複数の命令を実行する場合、前記プロセッサは、アプリケーションによってビデオチャットセッションを検知すること、ネットワークを介して送信される画像データを符号化すること、および前記ネットワークから受信された複数の入力データパケットを復号化すること
を行うもので、
前記画像データの符号化において、グラフィックスサブシステムは、画像キャプチャデバイスからの前記画像データを符号化し、前記アプリケーションは画像キャプチャデバイスから無効な画像データを受信し、
前記複数の入力データパケットの前記復号化において、ネットワークロジックは、前記複数の入力データパケットからの前記符号化された画像データをリッピングし、復号化されるように前記グラフィックスサブシステムへ前記符号化された画像データを送信し、前記ネットワークロジックは、無効な画像データを前記アプリケーションへ送信する、
システム。
［項目１６］
前記プロセッサはグラフィックスプロセッシングユニットである、項目１５に記載のシステム。
［項目１７］
前記システムはシステムオンチップである、項目１５または１６に記載のシステム。
［項目１８］
符号化機能および復号化機能は、前記アプリケーションの代わりに前記プロセッサによって実行される、項目１５から１７のいずれか一項に記載のシステム。
［項目１９］
プロセッサを指示するコードを備えるプログラムであって、
前記コードは、
ネットワークを介して送信される画像データを符号化する手順であり、前記プロセッサがビデオチャットアプリケーションの代わりに前記画像データを符号化する手順と、
前記ネットワークから受信された複数の入力データパケットを復号化する手順であり、前記符号化された画像データが前記複数の入力データパケットからリッピングされ、復号化されるべく前記プロセッサに送信される手順と、
を備えるプログラム。
［項目２０］
前記画像データは画像キャプチャデバイスから受信される、項目１９に記載のプログラム。
［項目２１］
前記プロセッサが前記画像データを符号化する場合、前記ビデオチャットアプリケーションは無効なビデオデータを符号化する、項目１９または２０に記載のプログラム。
［項目２２］
前記プロセッサが符号化された画像データを受信する場合、前記ビデオチャットアプリケーションは複数の無効なデータパケットを受信する、項目１９から２１のいずれか一項に記載のプログラム。
【図１】
0005879609.tif 000002
【図２】
0005879609.tif 000003
【図３】
0005879609.tif 000004
【図４】
0005879609.tif 000005
【図５】
0005879609.tif 000006
【図６】
0005879609.tif 000007
【図７】
0005879609.tif 000008
【図８】
0005879609.tif 000009
【図９】
0005879609.tif 000010
【図１０】
0005879609.tif 000011