(57)【特許請求の範囲】
【請求項１】
複数のバッファと、
ロードポインタにより示された各バッファにデータをロードするデータソースと、
処理ポインタにより示された各バッファのデータを処理するプロセッサと、
プロセッサにより実行された場合、コンピュータに対してデータをロードするために前記複数のバッファを示すように前記ロードポインタをスワッピングさせ、前記データを処理するために前記複数のバッファを示すように前記処理ポインタをスワッピングさせ、前記ロードポインタと前記処理ポインタとをスワッピングするときに、スワップポインタへのアクセスを制御するためにセマフォロックを取得させる一式の命令を含むコンピュータ読み取り可能媒体と
を有するシステム。
【請求項２】
前記データソースは、カメラである、請求項１に記載のシステム。
【請求項３】
前記データソースは、ストリーミングビデオソースである、請求項１に記載のシステム。
【請求項４】
前記データソースは、ビデオ処理スレッドの出力である、請求項１に記載のシステム。
【請求項５】
前記プロセッサは、グラフィックプロセッサである、請求項１に記載のシステム。
【請求項６】
プロセッサは、複数の処理スレッドに対応する複数のポインタにより示された各バッファのデータを処理する、請求項１に記載のシステム。
【請求項７】
複数のバッファを示すために第１のポインタを連続的にスワッピングすることにより、第１のポインタにより示された複数のバッファにデータを連続的にロードするステップと、
前記複数のバッファを示すために第２のポインタを連続的にスワッピングすることにより、前記複数のバッファに第２のポインタを連続的に示すことで前記複数のバッファにロードされた前記データを連続的に処理するステップと、
前記第１のポインタと前記第２のポインタとをスワッピングするときに、スワップポインタへのアクセスを制御するためにセマフォロックを取得するステップと
を有する方法。
【請求項８】
前記複数のバッファのうち１つがロードされたことを示すためにデータレディ信号を提供するステップを更に有する、請求項７に記載の方法。
【請求項９】
前記複数のバッファに連続的にロードされる前記データは、フレームデータである、請求項７に記載の方法。
【請求項１０】
前記複数のバッファに連続的にロードされる前記データは、画像データである、請求項７に記載の方法。
【請求項１１】
前記複数のバッファにロードされた前記データを連続的に処理するステップは、前記複数のバッファにロードされた前記データのビデオ処理アルゴリズムを実行することを有する、請求項７に記載の方法。
【請求項１２】
複数の処理スレッドは、前記複数のバッファを示すために前記複数のポインタを連続的にスワッピングすることにより、前記複数の処理スレッドに対応する複数のポインタをそれぞれ前記複数のバッファに連続的に示すことで前記複数のバッファにロードされた前記データを連続的に処理する、請求項７に記載の方法。
【請求項１３】
プロセッサにより実行された場合、コンピュータに対して、
複数のバッファを示すために第１のポインタを連続的にスワッピングすることにより、第１のポインタにより示された複数のバッファにデータを連続的にロードさせ、
前記複数のバッファを示すために第２のポインタを連続的にスワッピングすることにより、前記複数のバッファに第２のポインタを連続的に示すことで前記複数のバッファにロードされた前記データを連続的に処理させ、
前記第１のポインタと前記第２のポインタとをスワッピングするときに、スワップポインタへのアクセスを制御するためにセマフォロックを取得させる一式の命令を有するコンピュータプログラム。
【請求項１４】
プロセッサにより実行された場合、コンピュータに対して、
前記複数のバッファのうち１つがロードされたことを示すためにデータレディ信号を提供させる一式の命令を更に有する、請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記複数のバッファに連続的にロードされる前記データは、フレームデータである、請求項１３に記載のコンピュータプログラム。
【請求項１６】
前記複数のバッファに連続的にロードされる前記データは、画像データである、請求項１３に記載のコンピュータプログラム。
【請求項１７】
前記複数のバッファにロードされた前記データを連続的に処理することは、前記複数のバッファにロードされた前記データのビデオ処理アルゴリズムを実行することを含む、請求項１３に記載のコンピュータプログラム。
【請求項１８】
複数の処理スレッドは、前記複数のバッファを示すために前記複数のポインタを連続的にスワッピングすることにより、前記複数の処理スレッドに対応する複数のポインタをそれぞれ前記複数のバッファに連続的に示すことで前記複数のバッファにロードされた前記データを連続的に処理する、請求項１３に記載のコンピュータプログラム。
【請求項１９】
請求項１３ないし１８のうちいずれか１項に記載のコンピュータプログラムを記録したコンピュータ読み取り可能媒体。
【請求項２０】
最初に第１のバッファにロードポインタを示すステップと、
最初に第２のバッファにスワップポインタを示すステップと、
最初に第３のバッファに処理ポインタを示すステップと、
前記ロードポインタにより示されたバッファのデータをロードするステップと、
前記ロードポインタを前記スワップポインタとスワッピングし、その後、前記処理ポインタを前記スワップポインタとスワッピングするステップと、
前記ロードポインタにより示された前記バッファの前記データをロードし、前記処理ポインタにより示された前記バッファの前記データを処理するステップと、
前記ロードポインタと処理ポインタとをスワッピングするときに、スワップポインタへのアクセスを制御するためにセマフォロックを取得するステップと
を有する方法。
【請求項２１】
バッファがロードされたことを示すためにデータレディ信号を提供するステップを更に有する、請求項２０に記載の方法。
【請求項２２】
前記バッファにロードされる前記データは、フレームデータである、請求項２０に記載の方法。
【請求項２３】
前記バッファにロードされる前記データは、画像データである、請求項２０に記載の方法。
【請求項２４】
前記バッファにロードされた前記データを処理するステップは、前記バッファにロードされた前記データのビデオ処理アルゴリズムを実行することを有する、請求項２０に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
データソース（カメラ又はビデオ処理スレッドの出力等）からのデータを処理するために、データリクエスタ（データ要求側）（例えば、別のビデオ処理スレッド）が処理のためにデータをコピーし得るように、データソースは、データのブロック（例えばフレーム）を第１のバッファ及び第２のバッファに順次に格納することがある。例えば、データソースは、データの第１のブロックを第１のバッファに格納してもよい。第１のバッファがいっぱいになった場合、第１のバッファがコピーされて処理される用意ができていることを示すために、“データレディ信号（data  ready  signal）”がデータリクエスタに提供されてもよい。データレディ信号に応じて、データリクエスタは、処理のために第１のバッファからのデータを自分のバッファにコピーしてもよい。データリクエスタが第１のバッファからデータを読み取っている間に、データソースは、データの第２のブロックを第２のバッファに格納してもよい。第２のバッファがいっぱいになった場合、第２のバッファがコピーされて処理される用意ができていることを示すために、“データレディ信号”がデータリクエスタに提供されてもよい。データレディ信号に応じて、データリクエスタは、処理のために第２のバッファからのデータを自分のバッファにコピーしてもよい。データリクエスタが第２のバッファからデータを読み取っている間に、データソースは、データの第３のブロックを第１のバッファに格納してもよい。データソースからの全てのデータが第１及び第２のバッファに供給されるまで、前述の処理が繰り返されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
データがデータソースにより第１及び第２のバッファに格納されるレートが、データリクエスタがバッファからデータをコピーし得るレートより速い場合、データリクエスタがデータをコピーし得る前にデータソースが第１及び第２のバッファに格納されたデータを上書きするため、いくつかのデータが失われる可能性がある。データの喪失を妨げることを支援するために、複数のデータリクエスタがバッファからデータをコピーするために使用されることがある。
【０００３】
しかし、他にも理由があるが、１つ以上のデータリクエスタにより処理のために第１及び第２のバッファからのデータを別のバッファにコピーすることは、システムの全体性能を減少させる可能性がある。
【図面の簡単な説明】
【０００４】
【図１】データを別のメモリにコピーせずにデータソースからのデータを格納して処理する例示的なシステムを示すブロック図
【図２】データを別の記憶装置にコピーせずにデータソースにより図１のバッファに格納されたデータを処理するためにポインタをスワッピングする例示的な処理を示す図
【図３Ａ】図２を参照して説明した処理に基づく図１のデータソースのロード動作
【図３Ｂ】図２を参照して説明した処理に基づく図２のデータリクエスタの処理動作
【図４】データを別のメモリにコピーせずにデータソースからのデータを格納して処理する例示的なコンピュータシステムを示すブロック図
【図５】この開示の例示的なシステムを示すブロック図
【図６】図５のシステムのコンポーネントが具現され得る例示的な小型デバイスを示すブロック図
【発明を実施するための形態】
【０００５】
本発明の実施例の様々な利点は、以下の明細書及び特許請求の範囲を読むことにより、また、図面を参照することにより当業者に明らかになる。
【０００６】
この開示の様々な実施例は、データを別の記憶装置にコピーせずにデータソースにより複数のバッファに格納されたデータを処理するためにポインタをスワッピングする装置及び方法を提供する。
【０００７】
図１は、データを別のメモリにコピーせずにデータソースからのデータを格納して処理する例示的なシステム100を示している。システム100は、データソース105と、第１のバッファ110と、第２のバッファ115と、第３のバッファ120と、データリクエスタ125とを含んでもよい。図示のデータソース105は、ロードポインタにより示されたバッファにデータをロードする。データリクエスタ125は、処理ポインタにより示されたバッファのデータを処理してもよい。図２を参照して以下に示すように、ポインタをスワッピングすることにより、データリクエスタ125は、処理のためにデータを別のメモリにコピーせずにデータソース105によりバッファにロードされたデータを処理してもよい。
【０００８】
図２に示すように、段階205において、ロードポインタは第１のバッファ110を示し、スワップポインタは第２のバッファ115を示し、処理ポインタは第３のバッファを示す。段階205において、ロードポインタは第１のバッファ110を示すため、データソース105はデータを第１のバッファ110にロードしてもよい。また、データソース105が第１のバッファ110をいっぱいにした場合、例えば、データソース105は、段階205においてデータを他のバッファに格納するために、セマフォロック（semaphore  lock）を取得し、スワップポインタへのアクセスを制御してもよい。
【０００９】
段階210において、ロードポインタはスワップポインタとスワッピングされてもよい。これにより、ロードポインタは第２のバッファ115を示し、スワップポインタは第１のバッファ110を示す。また、段階210において、データレディ信号が（例えば、データソース105により）データリクエスタ125に提供されてもよく、データソース105はまた、段階205において取得したセマフォロックを解放してもよい。
【００１０】
段階215において、データリクエスタ125は、セマフォロックを取得し、スワップポインタへのアクセスを制御してもよい。次に、処理ポインタはスワップポインタとスワッピングされてもよい。これにより、処理ポインタは第１のバッファ110を示し、スワップポインタは第３のバッファ120を示す。処理ポインタは第１のバッファ110を示すため、データリクエスタ125は、データを別のメモリにコピーせずに第１のバッファ110に格納されたデータを処理してもよい。また、ロードポインタは第２のバッファ115を示すため、データソース105はデータを第２のバッファ115にロードしてもよい。また、データソース105が第２のバッファ115をいっぱいにした場合、例えば、データソース105は、データを他のバッファに格納するために、セマフォロックを取得し、スワップポインタへのアクセスを制御してもよい。
【００１１】
段階220において、ロードポインタはスワップポインタとスワッピングされてもよい。これにより、ロードポインタは第３のバッファ120を示し、スワップポインタは第２のバッファ115を示す。データソース105は、セマフォロックを解放してもよい。また、段階220において、データレディ信号が（例えば、データソース105により）データリクエスタ125に提供されてもよい。
【００１２】
段階225において、データリクエスタ125が第１のバッファ110に格納されたデータの処理を完了した場合、データリクエスタ125は、次のデータを処理するために、セマフォロックを取得し、スワップポインタへのアクセスを制御してもよい。次に、処理ポインタはスワップポインタとスワッピングされてもよい。これにより、処理ポインタは第２のバッファ115を示し、スワップポインタは第１のバッファ110を示す。処理ポインタは第２のバッファ115を示すため、データリクエスタ125は、データを別のメモリにコピーせずに第２のバッファ115に格納されたデータを処理してもよい。また、ロードポインタは第３のバッファ120を示すため、データソース105はデータを第３のバッファ120にロードしてもよい。データソース105が第３のバッファ120をいっぱいにした場合、例えば、データソース105は、データを他のバッファに格納するために、セマフォロックを取得し、スワップポインタへのアクセスを制御してもよい。
【００１３】
段階230において、ロードポインタはスワップポインタとスワッピングされてもよい。これにより、ロードポインタは第１のバッファ110を示し、スワップポインタは第３のバッファ120を示す。データソース105は、セマフォロックを解放してもよい。また、段階230において、データレディ信号が（例えば、データソース105により）データリクエスタ125に提供されてもよい。
【００１４】
段階235において、データリクエスタ125が第２のバッファ115に格納されたデータの処理を完了した場合、データリクエスタ125は、セマフォロックを取得し、スワップポインタへのアクセスを制御してもよい。次に、処理ポインタはスワップポインタとスワッピングされてもよい。これにより、処理ポインタは第３のバッファ120を示し、スワップポインタは第２のバッファ115を示す。処理ポインタは第３のバッファ120を示すため、データリクエスタ125は、データを別のメモリにコピーせずに第３のバッファ120に格納されたデータを処理してもよい。また、ロードポインタは第１のバッファ110を示すため、データソース105はデータを第１のバッファ110にロードしてもよい。次に、データソース105は、セマフォロックを取得し、スワップポインタへのアクセスを制御してもよい。
【００１５】
データソースからの全てのデータがバッファに供給されるまで、段階210〜235は繰り返されてもよい。
【００１６】
図３Ａ及び３Ｂは、図２を参照して説明した処理に基づき、それぞれデータソース105のロード動作及びデータリクエスタ125の処理動作を示している。段階205において、データソース105は、データを第１のバッファ110にロードする。段階215において、データソース105は、データを第２のバッファ115にロードし、データリクエスタ125は、第１のバッファ110に格納されたデータを処理する。段階225において、データソース105は、データを第３のバッファ120にロードし、データリクエスタ125は、第２のバッファ115に格納されたデータを処理する。段階235において、データソース105は、データを第１のバッファ110にロードし、データリクエスタ125は、第３のバッファ120に格納されたデータを処理する。データソース105からの全てのデータがバッファに供給されるまで、段階215〜235は繰り返されてもよい。
【００１７】
図２、３Ａ及び３Ｂに示すように、ポインタをスワッピングすることにより、データリクエスタ125は、処理のためにデータを別のメモリにコピーせずにデータソース105によりバッファにロードされたデータを処理してもよい。
【００１８】
或る実装では、システム100は、データソース105がデータをロードするための更なるバッファを含んでもよい。或る実装では、システム100は、並列にバッファのデータを処理する複数のデータリクエスタを含んでもよい。この場合、更なるデータリクエスタのそれぞれは、自分のデータバッファを指定し、図２を参照して説明したように対応するポインタをスワッピングする。
【００１９】
図４は、データを別のメモリにコピーせずにデータソース435からのデータを格納して処理する例示的なコンピュータシステム400を示している。
【００２０】
このシステム400は、CPUバス420を介してバスコントローラ410に結合されたプロセッサ405を含んでもよい。或る実装では、システム400は、複数のプロセッサを含んでもよい。バスコントローラ410は、メモリコントローラ415を含んでもよい。或る実装では、メモリコントローラ415は、バスコントローラ410の外部でもよい。メモリコントローラ415は、メモリバス430を介してプロセッサ405をシステムメモリ425にインタフェース接続してもよい。或る実装では、システムメモリ425は、システム400の“メインメモリ”と記述されてもよい。
【００２１】
或る実装では、システムメモリ425は、プロセッサ405により実行される命令及び情報を格納してもよい。或る実装では、システムメモリ425は、プロセッサ405により実行された場合、システム400に対して図２を参照して説明した処理又はその一部を実行させる命令を格納してもよい。システムメモリ425は、例えばグラフィック動作を実行するコードを実施するためにプロセッサによりアクセスされるデータを格納してもよい。システムメモリ425は、メモリコントローラ415によりアクセスされるダイナミックランダムアクセスメモリ（DRAM：dynamic  random  access  memory）モジュールを含んでもよい。或る実装では、システムメモリ425はまた、プロセッサ405により処理されるデータソース435から受信した１つ以上の画像フレームの一部である画素を格納するために使用されてもよい。例えば、或る実装では、システムメモリ425は、図１の第１のバッファ110と、第２のバッファ115と、第３のバッファ120とを含んでもよい。データソース435は、プロセッサと、プロセッサにより実行された場合、データソースに対して図２の処理の一部を実行させる命令を格納した記憶装置とを含んでもよい。
【００２２】
コンピュータシステム400はまた、メモリバス430に結合された大容量記憶デバイス440を含んでもよい。大容量記憶デバイス440は、例えば、ハードディスク、フロッピー（登録商標）ディスク、コンパクトディスク読み取り専用メモリ（CD-ROM）、デジタルビデオディスク読み取り専用メモリ（DVD-ROM）、テープ、高密度フロッピー（登録商標）、高容量取り外し可能媒体、低容量取り外し可能媒体、ソリッドステートメモリデバイス、及びこれらの組み合わせを含んでもよい。
【００２３】
或る実装では、グラフィックプロセッサは、バッファ110、115及び120に格納されたフレームデータを処理してもよい。
【００２４】
この開示の範囲内にあると考えられるコンピュータデバイスは、パーソナルコンピュータ（PC）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（PDA）、携帯電話、携帯電話／PDAの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット又はスマートテレビ）、モバイルインターネットデバイス（MID）、メッセージングデバイス、データ通信デバイス等を含む。
【００２５】
図５は、プラットフォーム502と、ディスプレイ520と、コンテンツサービスデバイス530と、コンテンツ配信デバイス540と、ナビゲーションコントローラ550とを有するこの開示のシステム500の例示的な実施例を示している。実施例では、システム500はメディアシステムでもよいが、システム500はこの点に限定されない。例えば、システム500のコンポーネントは、パーソナルコンピュータ（PC）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（PDA）、携帯電話、携帯電話／PDAの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット又はスマートテレビ）、モバイルインターネットデバイス（MID）、メッセージングデバイス、データ通信デバイス等に組み込まれてもよい。
【００２６】
実施例では、システム500は、ディスプレイ520に結合されたプラットフォーム502を有する。プラットフォーム502は、コンテンツサービスデバイス530若しくはコンテンツ配信デバイス540又は他の同様なコンテンツソースのようなコンテンツデバイスからコンテンツを受信してもよい。例えば、プラットフォーム502及び／又はディスプレイ520と相互作用するために、１つ以上のナビゲーション機能を有するナビゲーションコントローラ550が使用されてもよい。これらのコンポーネントのそれぞれについて以下に詳細に説明する。
【００２７】
実施例では、プラットフォーム502は、チップセット505、プロセッサ510、メモリ512、記憶装置514、グラフィックサブシステム515、アプリケーション516、ネットワークコンポーネント517（例えば、有線又は無線）及び／又は無線機518のいずれかの組み合わせを有してもよい。チップセット505は、プロセッサ510、メモリ512、記憶装置514、グラフィックサブシステム515、アプリケーション516及び／又は無線機518の間の相互通信を提供してもよい。例えば、チップセット505は、記憶装置514との相互通信を提供可能な記憶装置アダプタ（図示せず）を含んでもよい。
【００２８】
プロセッサ510は、複雑命令セットコンピュータ（CISC）又は縮小命令セットコンピュータ（RISC）プロセッサ、x86命令セット互換プロセッサ、マルチコア、又は他のマイクロプロセッサ若しくは中央処理装置（CPU）として実装されてもよい。実施例では、プロセッサ510は、シングルコア又はマルチコアのプロセッサ、シングルコア又はマルチコアのモバイルプロセッサ等を有してもよい。
【００２９】
メモリ512は、ランダムアクセスメモリ（RAM）、ダイナミックランダムアクセスメモリ（DRAM）又はスタティックRAM（SRAM）に限定されず、このような揮発性メモリデバイスとして実装されてもよい。或る実施例では、メモリ512は、フラッシュメモリデバイスのような不揮発性メモリとして実装されてもよい。
【００３０】
記憶装置514は、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、取り付け型記憶デバイス、フラッシュメモリ、バッテリバックアップSDRAM（シンクロナスDRAM）、及び／又はネットワークアクセス可能な記憶デバイスに限定されず、このような不揮発性記憶デバイスとして実装されてもよい。実施例では、記憶装置514は、例えば、複数のハードドライブが含まれる場合、貴重なデジタルデータの記憶性能の拡張した保護を増大させる技術を有してもよい。
【００３１】
グラフィックサブシステム515は、表示用の静止画又はビデオのような画像の処理を実行してもよい。グラフィックサブシステム515は、例えば、グラフィック処理ユニット（GPU）又はビジュアル処理ユニット（VPU）でもよい。グラフィックサブシステム515とディスプレイ520とを通信可能に結合するために、アナログ又はデジタルインタフェースが使用されてもよい。例えば、インタフェースは、高精細度マルチメディアインタフェース（High-Definition  Multimedia  Interface）、ディスプレイポート（DisplayPort）、無線HDMI（登録商標）及び／又は無線HD準拠の技術のいずれかでもよい。実施例では、グラフィックサブシステム515は、プロセッサ510又はチップセット505に統合されてもよい。実施例では、グラフィックサブシステム515は、チップセット505に通信可能に結合されたスタンドアローン型カードでもよい。
【００３２】
ここに記載のグラフィック及び／又はビデオ処理技術は、様々なハードウェアアーキテクチャで実装されてもよい。例えば、グラフィック及び／又はビデオ機能は、チップセット内に統合されてもよい。或いは、別のグラフィック及び／又はビデオプロセッサが使用されてもよい。更に他の実施例として、グラフィック及び／又はビデオ機能は、マルチコアプロセッサを含む汎用プロセッサにより実装されてもよい。更なる実施例では、この機能は家庭用電子機器に実装されてもよい。
【００３３】
無線機518は、様々な適切な無線通信技術を使用して信号を送信及び受信可能な１つ以上の無線機を含んでもよい。このような技術は、１つ以上の無線ネットワークを通じた通信を含んでもよい。例示的な無線ネットワークは、無線ローカルエリアネットワーク（WLAN）、無線パーソナルエリアネットワーク（WPAN）、無線メトロポリタンエリアネットワーク（WMAN）、セルラネットワーク及び衛星ネットワークを含む（これらに限定されない）。このようなネットワークを通じて通信するときに、無線機518は、いずれかのバージョンの１つ以上の適切な標準に従って動作してもよい。
【００３４】
ネットワークコンポーネント517は、様々な適切な有線及び／又は無線通信技術を使用して信号を送信及び受信可能な１つ以上のネットワークコンポーネントを含んでもよい。このような技術は、１つ以上の有線及び／又は無線ネットワークを通じた通信を含んでもよい。このようなネットワークを通じて通信するときに、ネットワークコンポーネント517は、いずれかのバージョンの１つ以上の適切な標準に従って動作してもよい。実施例では、ディスプレイ520は、いずれかのテレビ型モニタ又はディスプレイを有してもよい。ディスプレイ520は、例えば、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビのようなデバイス及び／又はテレビを有してもよい。ディスプレイ520は、デジタル及び／又はアナログでもよい。実施例では、ディスプレイ520は、ホログラフィックディスプレイでもよい。また、ディスプレイ520は、視覚投影を受け取ることができる透明な表面でもよい。このような投影は、様々な形式の情報、画像及び／又はオブジェクトを伝達してもよい。例えば、このような投影は、モバイル拡張現実（MAR：mobile  augmented  reality）アプリケーションの視覚オーバーレイでもよい。１つ以上のアプリケーション516の制御で、プラットフォーム502は、ディスプレイ520にユーザインタフェース522を表示してもよい。
【００３５】
実施例では、コンテンツサービスデバイス530は、いずれかの国内、国際及び／又は独立のサービスによりホストされ、従って、例えばインターネットを介してプラットフォーム502にアクセス可能になってもよい。コンテンツサービスデバイス530は、プラットフォーム502及び／又はディスプレイ520に結合されてもよい。プラットフォーム502及び／又はコンテンツサービスデバイス530は、ネットワーク560へのメディア情報及びネットワーク560からのメディア情報を通信（例えば、送信及び／又は受信）するために、ネットワーク560に結合されてもよい。コンテンツ配信デバイス540もまた、プラットフォーム502及び／又はディスプレイ520に結合されてもよい。
【００３６】
実施例では、コンテンツサービスデバイス530は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、カメラ、インターネット可能デバイス又はデジタル情報及び／又はコンテンツを配信可能な機器、並びにコンテンツプロバイダとプラットフォーム502及び／又はディスプレイ520との間で直接に又はネットワーク560を介して一方向又は双方向に通信可能な他の同様なデバイスを有してもよい。コンテンツは、ネットワーク560を介してシステム500のコンポーネント及びコンテンツプロバイダのいずれか１つへ及びいずれか１つから一方向及び／又は双方向に通信されてもよいことが分かる。コンテンツの例は、例えば、ビデオ、音楽、医療及びゲーム情報等を含む如何なるメディア情報を含んでもよい。
【００３７】
コンテンツサービスデバイス530は、メディア情報、デジタル情報及び／又は他のコンテンツを含み、ケーブルテレビ番組のようなコンテンツを受信する。コンテンツプロバイダの例は、いずれかのケーブル若しくは衛星テレビ又はラジオ若しくはインターネットコンテンツプロバイダを有してもよい。提供される例は、本発明の実施例を限定することを意味するものではない。
【００３８】
実施例では、プラットフォーム502は、１つ以上のナビゲーション機能を有するナビゲーションコントローラ550から制御信号を受信してもよい。コントローラ550のナビゲーション機能は、例えば、ユーザインタフェース522と相互作用するために使用されてもよい。実施例では、ナビゲーションコントローラ550は、ユーザが空間（例えば連続及び多次元）データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント（特にヒューマンインタフェースデバイス）でもよいポインティングデバイス、コントロールパッド、キーボード又はタッチスクリーンデバイスでもよい。グラフィカルユーザインタフェース（GUI）、テレビ及びモニタのようなのような多くのシステムは、ユーザが物理的ジェスチャを使用してコンピュータ又はテレビへのデータを制御及び提供することを可能にする。
【００３９】
コントローラ550のナビゲーション機能の動きは、ディスプレイに表示されるポインタ、カーソル、フォーカスリング又は他の視覚インジケータの動きにより、ディスプレイ（例えば、ディスプレイ520）に反映されてもよい。例えば、ソフトウェアアプリケーション516の制御で、ナビゲーションコントローラ550に存在するナビゲーション機能は、例えば、ユーザインタフェース522に表示される仮想ナビゲーション機能にマッピングされてもよい。実施例では、コントローラ550は、別のコンポーネントではなく、プラットフォーム502及び／又はディスプレイ520に統合されてもよい。しかし、実施例はここに図示又は記載の要素又は状況に限定されない。
【００４０】
実施例では、ドライバ（図示せず）は、例えば、有効である場合、初期ブートアップ後にユーザがボタンに触れることによりテレビのようにプラットフォーム502を直ちに電源オン及びオフすることを可能にする技術を有してもよい。プログラムロジックは、プラットフォームが“オフ”にされているときに、プラットフォーム502がコンテンツをメディアアダプタ又は他のコンテンツサービスデバイス530若しくはコンテンツ配信デバイス540にストリーミングすることを可能にしてもよい。更に、チップセット505は、例えば、5.1サラウンド・サウンド・オーディオ及び／又は高精細度7.1サラウンド・サウンド・オーディオのためのハードウェア及び／又はソフトウエアのサポートを有してもよい。ドライバは、統合されたグラフィックプラットフォームのためのグラフィックドライバを含んでもよい。実施例では、グラフィックドライバは、PCI（peripheral  component  interconnect）Expressグラフィックカードを有してもよい。
【００４１】
様々な実施例では、システム500に示すコンポーネントのうちいずれか１つ以上は、統合されてもよい。例えば、プラットフォーム502及びコンテンツサービスデバイス530は統合されてもよく、プラットフォーム及びコンテンツ配信デバイス540は統合されてもよく、プラットフォーム502、コンテンツサービスデバイス530及びコンテンツ配信デバイス540は統合されてもよい。様々な実施例では、プラットフォーム502及びディスプレイ520は、統合されたユニットでもよい。例えば、ディスプレイ520及びコンテンツサービスデバイス530は統合されてもよく、ディスプレイ520及びコンテンツ配信デバイス540は統合されてもよい。これらの例は本発明を限定することを意味するものではない。
【００４２】
様々な実施例では、システム500は、無線システム、有線システム又は双方の組み合わせとして実装されてもよい。無線システムとして実装される場合、システム500は、１つ以上のアンテナ、送信機、受信機、トランシーバ、増幅器、フィルタ、制御ロジック等のような無線共有媒体で通信するのに適したコンポーネント及びインタフェースを含んでもよい。無線共有媒体の例は、RFスペクトル等のような無線スペクトルの一部を含んでもよい。有線システムとして実装される場合、システム500は、入出力（I/O）アダプタ、対応する有線通信媒体とI/Oアダプタとを接続する物理コネクタ、ネットワークインタフェースカード（NIC）、ネットワークコントローラ（例えば、内部又は外部のEthernet（登録商標）コントローラ及びポート）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等のような有線通信媒体で通信するのに適したコンポーネント及びインタフェースを含んでもよい。有線通信媒体の例は、配線、ケーブル、金属リード、印刷基板回路（PCB）、バックプレーン、スイッチファブリック、半導体材料、ツイストペアケーブル、同軸ケーブル、光ファイバケーブル等を含んでもよい。
【００４３】
プラットフォーム502は、情報を通信するために１つ以上の論理又は物理チャネルを確立してもよい。情報は、メディア情報と制御情報とを含んでもよい。メディア情報は、ユーザに対して意図するコンテンツを表す如何なるデータを示してもよい。コンテンツの例は、例えば、音声会話、テレビ会議、ストリーミングビデオ、電子メール（email）メッセージ、音声メールメッセージ、英数字シンボル、グラフィック、画像、ビデオ、テキスト等からのデータを含んでもよい。音声会話からのデータは、例えば、音声情報、沈黙期間、背景雑音、快適な雑音、トーン等でもよい。制御情報は、自動化システムに対して意図するコマンド、命令又は制御ワードを表す如何なるデータを示してもよい。例えば、制御情報は、システムを通じてメディア情報をルーティングするため、又は所定の方法でメディア情報を処理するようにノードに命令するために使用されてもよい。しかし、実施例は図５に図示又は説明する要素又は状況に限定されない。
【００４４】
前述のように、システム500は、様々な物理的様式又は形状に具現されてもよい。図６は、システム500のコンポーネントが具現され得る小型デバイス600の実施例を示している。実施例では、例えば、デバイス600は、無線機能を有するモバイルコンピュータデバイスとして実装されてもよい。モバイルコンピュータデバイスは、例えば、１つ以上のバッテリのようなモバイル動力源又は電源と処理システムとを有する如何なるデバイスを示してもよい。
【００４５】
前述のように、モバイルコンピュータデバイスの例は、パーソナルコンピュータ（PC）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（PDA）、携帯電話、携帯電話／PDAの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット又はスマートテレビ）、モバイルインターネットデバイス（MID）、メッセージングデバイス、データ通信デバイス等を含んでもよい。
【００４６】
モバイルコンピュータデバイスの例はまた、手首装着コンピュータ、指装着コンピュータ、指輪型コンピュータ、眼鏡型コンピュータ、ベルトチップコンピュータ、アームバンドコンピュータ、靴型コンピュータ、衣類型コンピュータ、及び他の装着可能なコンピュータのように、人により装着されるように構成されたコンピュータを含んでもよい。実施例では、例えば、モバイルコンピュータデバイスは、コンピュータアプリケーションと、音声通信及び／又はデータ通信とを実行可能なスマートフォンとして実装されてもよい。いくつかの実施例は、一例としてスマートフォンとして実装されるモバイルコンピュータデバイスについて説明することがあるが、他の実施例は、同様に他の無線モバイルコンピュータデバイスを使用して実装されてもよいことが分かる。実施例はこの点に限定されない。
【００４７】
図６に示すように、デバイス600は、筐体602と、ディスプレイ604と、入出力（I/O）デバイス606と、アンテナ608とを有してもよい。デバイス600はまた、ナビゲーション機能612を有してもよい。ディスプレイ604は、モバイルコンピュータデバイスに適切な情報を表示するためのユーザインタフェース610のようないずれか適切なディスプレイユニットを有してもよい。
【００４８】
I/Oデバイス606は、情報をモバイルコンピュータデバイスに入力するためのいずれか適切なI/Oデバイスを有してもよい。I/Oデバイス606の例は、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイス及びソフトウェア等を含んでもよい。情報はまた、マイクロフォンによりデバイス600に入力されてもよい。このような情報は、音声認識デバイスによりデジタル化されてもよい。実施例はこの点に限定されない。
【００４９】
様々な実施例は、ハードウェアエレメント、ソフトウェアエレメント又は双方の組み合わせを使用して実装されてもよい。ハードウェアエレメントの例は、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗、コンデンサ、インダクタ等）、集積回路、特定用途向け集積回路（ASIC）、プログラム可能論理デバイス（PLD）、デジタルシグナルプロセッサ（DSP）、フィールドプログラマブルゲートアレイ（FPGA）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含んでもよい。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ドライバ、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（API）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらのいずれかの組み合わせを含んでもよい。実施例がハードウェアエレメント及び／又はソフトウェアエレメントを使用して実装されるか否かは、所望の計算レート、パワーレベル、熱耐性、処理サイクル予算、入力データレート、出力データレート、メモリリソース、データバス速度及び他の設計若しくは性能上の制約のようないずれかの数の要因に従って変化してもよい。
【００５０】
少なくとも１つの実施例の１つ以上の態様は、プロセッサ内の様々なロジックを表す機械読み取り可能媒体に格納された表現上の命令により実装されてもよい。これは、機械により読み取られた場合、機械に対してここに記載の技術を実行するロジックを実現させる。“IPコア（IP  core）”として知られるこのような表現は、有形の機械読み取り可能な媒体に格納され、実際にロジック又はプロセッサを作る組み立て機械にロードするため、様々な消費者又は製造工場に供給されてもよい。
【００５１】
従って、実施例は、複数のバッファを示すために第１のポインタを連続的にスワッピングすることにより、第１のポインタにより示された複数のバッファにデータを連続的にロードし、複数のバッファを示すために第２のポインタを連続的にスワッピングすることにより、複数のバッファに第２のポインタを連続的に示すことで複数のバッファにロードされたデータを連続的に処理することを含む方法を含んでもよい。
【００５２】
実施例はまた、複数のバッファと、ロードポインタにより示された各バッファにデータをロードするデータソースと、処理ポインタにより示された各バッファのデータを処理するプロセッサと、プロセッサにより実行された場合、コンピュータに対してデータをロードするために複数のバッファを示すようにロードポインタをスワッピングさせ、データを処理するために複数のバッファを示すように処理ポインタをスワッピングさせる一式の命令を含むコンピュータ読み取り可能媒体とを含むシステムを含んでもよい。
【００５３】
実施例はまた、プロセッサにより実行された場合、コンピュータに対して複数のバッファを示すために第１のポインタを連続的にスワッピングすることにより、第１のポインタにより示された複数のバッファにデータを連続的にロードさせ、複数のバッファを示すために第２のポインタを連続的にスワッピングすることにより、複数のバッファに第２のポインタを連続的に示すことで複数のバッファにロードされたデータを連続的に処理させる一式の命令を有するコンピュータ読み取り可能媒体を含んでもよい。
【００５４】
従って、実施例は、最初に第１のバッファにロードポインタを示し、最初に第２のバッファにスワップポインタを示し、最初に第３のバッファに処理ポインタを示し、ロードポインタにより示されたバッファのデータをロードし、ロードポインタをスワップポインタとスワッピングし、その後、処理ポインタをスワップポインタとスワッピングし、ロードポインタにより示されたバッファのデータをロードし、処理ポインタにより示されたバッファのデータを処理することを含む方法を含んでもよい。
【００５５】
実施例は、全ての種類の半導体集積回路（IC）チップでの使用に適用可能である。これらのICチップの例は、プロセッサ、コントローラ、チップセットコンポーネント、プログラム可能論理アレイ（PLA）、メモリチップ、ネットワークチップ等を含むが、これらに限定されない。更に、いくつかの図面において、信号線が線で表されている。構成要素の信号経路を示すためのもの、数字のラベルを有するもの、複数の構成要素の信号経路を示すためのもの、及び／又は主な情報の流れの方向を示すために１つ以上の終端に矢印を有するもののように、いくつかが異なることがある。しかし、このことは限定的に解釈されるべきではない。むしろ、このような更なる詳細は、回路の容易な理解を助けるために１つ以上の例示的な実施例と共に使用されることがある。いずれかの表された信号線は、更なる情報を有していても有していなくても、実際に、複数の方向に進んでもよく、いずれか適切な種類の信号方式（例えば、差動ペア、光ファイバ線及び／又はシングルエンド回線で実装されたデジタル又はアナログ回線）で実装されてもよい１つ以上の信号を有してもよい。
【００５６】
例示的なサイズ／モデル／値／範囲が与えられることがあるが、本発明の実施例はこれに限定されない。製造技術（例えば、フォトリソグラフィ）は時間と共に成熟するため、更に小さいサイズのデバイスが製造され得ることが想定される。更に、例示及び説明を簡潔にするため、また、本発明の実施例の特定の態様を曖昧にしないため、ICチップ及び他のコンポーネントへの周知の電力／接地接続は、図面に示されることもあり、示されないこともある。更に、本発明の実施例を曖昧にすることを回避するため、また、このようなブロック図構成の実装に関する詳細は実施例が実装されるプラットフォームにかなり依存するという事実を鑑みて、構成はブロック図形式で示されることがある。すなわち、このような詳細は、当業者の範囲内で周知である。本発明の特定の実施例を説明するために特定の詳細（例えば、回路）が示される場合、本発明の実施例がこれらの特定の詳細なしに又はそれを変更して実施されてもよいことは当業者に明らかである。従って、説明は限定的ではなく例示的と見なされるべきである。
【００５７】
例えば、いくつかの実施例は、機械若しくは有形のコンピュータ読み取り可能媒体、又は機械により実行された場合、機械に対して実施例による方法及び／又は動作を実行させ得る命令又は一式の命令を格納し得る物（製造物）を使用して実装されてもよい。このような機械は、例えば、いずれか適切な処理プラットフォーム、コンピュータプラットフォーム、コンピュータデバイス、処理デバイス、コンピュータシステム、処理システム、コンピュータ、プロセッサ等を含んでもよく、ハードウェア及び／又はソフトウェアのいずれか適切な組み合わせを使用して実装されてもよい。例えば、機械読み取り可能媒体又は物は、いずれか適切な種類のメモリユニット、メモリデバイス、メモリ製造物、メモリ媒体、記憶デバイス、記憶製造物、記憶媒体及び／又は記憶ユニット（例えば、メモリ、取り外し可能又は取り外し不可能媒体、消去可能又は消去不可能媒体、書き込み可能又は再書き込み可能媒体、デジタル又はアナログ媒体、ハードディスク、フロッピー（登録商標）ディスク、コンパクトディスク読み取り専用メモリ（CD-ROM）、記録可能コンパクトディスク（CD-R）、再書き込み可能コンパクトディスク（CD-RW）、光ディスク、磁気媒体、光磁気媒体、取り外し可能メモリカード又はディスク、様々な種類のデジタル多用途ディスク（DVD）、テープ、カセット等）を含んでもよい。命令は、いずれか適切なハイレベル、ローレベル、オブジェクト指向型、ビジュアル、コンパイル済及び／又はインタープリタプログラミング言語を使用して実装されたいずれか適切な種類のコード（ソースコード、コンパイル済コード、インタープリタ型コード、実行可能コード、スタティックコード、ダイナミックコード、暗号化コード等）を含んでもよい。
【００５８】
特に言及しない限り、“処理”、“計算”、“算出”、“決定”等というような用語は、コンピュータシステムのレジスタ及び／又はメモリ内の物理量（例えば、電子量）として表されたデータを、コンピュータシステムのメモリ、レジスタ又は他のこのような情報記憶装置、伝送若しくは表示デバイス内の物理量として他の同様に表されたデータに操作及び／又は変換するコンピュータ若しくはコンピュータシステム又は同様の電子コンピュータデバイスの動作及び／又は処理を示すことが分かる。実施例はこの点に限定されない。
【００５９】
“結合”という用語は、ここでは、該当するコンポーネント間のいずれかの種類の関係（直接又は間接）を示すために使用されることがあり、電気的、機械的、流体的、光学的、電磁気的、電気機械的又は他の接続に適用されてもよい。更に、“第１”、“第２”等の用語は、ここでは説明を容易にするためにのみ使用されることがあり、特に言及しない限り、特定の時間的又は年代的意味を有さない。
【００６０】
当業者は、前述の説明から、本発明の実施例の広い技術が様々な形式で実装され得ることを認識する。従って、本発明の実施例について特定の例に関して説明したが、他の変形が図面、明細書及び特許請求の範囲を研究することで当業者に明らかになるため、本発明の実施例の真の範囲はこれに限定されない。
【図１】
0005968463.tif 000002
【図２】
0005968463.tif 000003
【図３Ａ】
0005968463.tif 000004
【図３Ｂ】
0005968463.tif 000005
【図４】
0005968463.tif 000006
【図５】
0005968463.tif 000007
【図６】
0005968463.tif 000008