図面において、同じ参照符号は、概して、同じ、機能上類似する、及び/又は構造上類似する要素を示す。要素が最初に現れる図は、参照符号における最左の数字によって示される。本発明は、添付の図面を参照して記載される。
実施形態は、オーディオストリームの処理を含む技術を提供する。例えば、ホストプロセッシングプラットフォームは、符号化オーディオストリームを含むコンテンツストリームを受け取ってよい。次いで、グラフィクスエンジンは、それから復号化オーディオストリームを生成する。この生成は、グラフィクスエンジンが様々な動作、例えばエントロピ復号化動作、逆量子化動作、及び逆離散コサイン変換動作を実行することを伴ってよい。実施形態において、コンテンツストリームは、符号化ビデオストリームを更に含む。よって、グラフィクスエンジンは、それから復号化オーディオストリームを生成してよい。このようなオーディオ及びビデオ復号化は、並行して実行されてよい。
グラフィクスエンジンは、ビデオコーデックに関連する動作の実行のためのハードウェア加速を提供する。例えば、グラフィクスプロセッシングユニット(GPU)は、多くのタイプのビデオコーデックを実施するために用いられ得るハードウェア加速を提供する。そのようなコーデックの例には、h.264、mpeg2、vc−1等がある(が、これらに限られない)。しかし、ビデオコーデックは、現在のところ、オーディオストリームを処理しない。代わりに、上述されたように、オーディオストリームの処理は、通常、ホストによって扱われる。残念ながら、このアプローチは、過度の電力量を消費しうる。
実施形態において、しかしながら、グラフィクスエンジンは、オーディオストリームを処理するために用いられてよい。結果として、完全なメディア(ビデオ及びオーディオ)処理プラットフォームが独立系ソフト開発会社(ISV)に提供され得る。
また、オーディオストリームを処理するためのグラフィクスエンジンの使用は、有利に、メディア再生シナリオにおけるホストCPUの電力損失を減らしうる。例えば、無損失高精細度(HD)オーディオストリームは高いビットレート有する(平均で3〜6Mbpsであるが、それらは15〜20Mbpsのピークレートに到達しうる。)。そのようなオーディオストリームを処理することは、相当量のCPUサイクルと電力消費を必要とする。より詳しくは、実験測定は、約0.5ワットのCPU電力がブルーレイディスク再生中にオーディオ処理に因ると示している。
オーディオストリームが基本的には性質上ビデオストリームとは全く異なるにしても、それらは、実施形態が利用する多くの類似性を有する。例えば、ビデオストリーム及びオーディオストリームは両方とも、しばしば、例えばハフマン圧縮のような可変長復号化(VLD)スキームにより圧縮される。また、ビデオストリーム及びオーディオストリームは両方とも、しばしば、エンコーダで量子化され、デコーダで逆量子化される。更に、ビデオストリーム及びオーディオストリームは両方とも、しばしば、エンコーダで離散コサイン(DCT)変換を用いて変換され、次いでデコーダで逆DCT(iDCT)変換を介して逆変換される。
実施形態は、それらの類似性を利用して、ビデオストリーム及びオーディオストリームの両方を処理することができる統合化されたビデオ/オーディオ処理環境を提供する。更に、オーディオコーダ/デコーダ(コーデック)は、しばしば、(スレッダビリティの程度がオーディオコーデックによって異なるとしても)極めてスレッダブルである(すなわち、マルチスレッドに適する)。これは、有利に、統合化されたビデオ/オーディオ並列実行エンジンとしてビデオとともにオーディオを処理するグラフィクスエンジンを促進することができる。グラフィクスエンジンにおけるオーディオ処理の実行は、有利に、より高速であり且つより電力効率が良い。
図1は、例となる動作環境100の図である。環境100は、ここで記載される技術を用いてよい。環境100は、様々な要素を含んでよい。例えば、図1は、ホストプロセッシングプラットフォーム102と、グラフィクスエンジン104と、コンテンツソース106と、オーディオ出力装置107と、ディスプレイ装置108と、インターフェース109とを含む環境100を示す。それらの要素は、ハードウェア及び/又はソフトウェアの何らかの組み合わせにおいて実施されてよい。
ホストプロセッシングプラットフォーム102は、中央演算処理部(CPU)のような1又はそれ以上のプロセッサ(例えば、マイクロプロセッサ)により実施されてよい。ホストプロセッシングプラットフォーム102は、様々な処理及びアプリケーションを実行してよい。図1に示されるように、ホストプロセッシングプラットフォーム102は、オペレーティングシステム(OS)110を実行する。このオペレーティングシステムにより、様々なアプリケーション及び処理が実行されてよい。例えば、図1は、メディアアプリケーション112と、1又はそれ以上のグラフィクスエンジンドライバ111とを実行するプロセッシングプラットフォーム102を示す。
アプリケーション112は、オーディオ及び/又はビデオ(すなわち、グラフィクス)を伴う動作を実行してよい。例えば、アプリケーション112は、符号化されたコンテンツ(例えば、符号化オーディオ/ビデオコンテンツ)を受け取る媒体であってよい。このコンテンツは、コンテンツソース106から受け取られてよい。
実施形態において、グラフィクスエンジンドライバ111は、ホストプロセッシングプラットフォーム102によって実行されるソフトウェアを含む。ドライバ111は、アプリケーション112のような処理がグラフィクスエンジン104と相互に作用することを可能にしてよい。これは、アプリケーション112がドライバ111によって提供される呼び出し又はルーチンを呼び出すことを含んでよい。ここで記載されるように、そのようなルーチンは、ビデオストリームに加えてオーディオストリームの復号化を含んでよい。つまり、ドライバ111は、グラフィクスエンジン104へコマンドを発してよい。それに応答して、グラフィクスエンジン104は、結果として得られたデータをアプリケーション112へ(例えば、ドライバ111を介して)供給してよい。
実施形態において、コンテンツソース106は、デジタルビデオディスク(DVD)、ブルーレイ、及び/又はコンパクトディスク(CD)リーダ等の、1又はそれ以上の読み込まれたディスクから符号化オーディオ及び/又はビデオデータを提供する光学記憶媒体を有してよい。更に、又は代替的に、コンテンツソース106は、符号化されたコンテンツを記憶する磁気的又は電子的な記憶媒体(例えば、磁気ディスクドライブ又はソリッドステートドライブ)を有してよい。実施形態は、しかしながら、そのような記憶媒体の例に限られない。
更に、コンテンツソース106は、符号化されたコンテンツを有線又は無線通信媒体から受け取る通信インターフェースを有してよい。通信媒体の例には、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、パーソナルエリアネットワーク(PAN)、無線メトロポリタンエリアネットワーク(WMAN)、携帯電話ネットワーク、ケーブル放送システム、地上又は衛星ビデオ放送ネットワーク(例えば、DVBネットワーク)等がある(が、これらに限られない)。そのようなコンテンツを受信すると、アプリケーション112は、かかるコンテンツを復号化するよう動作して、それが1又はそれ以上の装置によって出力され得るようにする。
実施形態において、グラフィクスエンジン104は、グラフィクスプロセッシングユニット(GPU)によって提供される。より詳しくは、グラフィクスエンジン104は、ビデオ及びオーディオ処理にしばしば必要とされる多数の機能(ハフマン復号化、iDCT等)の加速を提供する。このGPUは、ホストプロセッシングプラットフォーム102からビデオ及びグラフィクスレンダリングをアンロードして加速させる1又はそれ以上の専用マイクロプロセッサを有してよい。また、グラフィクスエンジン104は、マルチスレッドの且つ並列な処理をサポートすることができる複数の並列演算実行部(EU)を有してよい。グラフィクスエンジン104は、カリフォルニア州サンタクララのインテルコーポレイションによって製造されている市販のグラフィクスエンジンを有してよい。実施形態は、しかしながら、この例に限られない。
一般的な動作において、グラフィクスエンジン104は、アプリケーション112に対して、ビデオ復号化に関連する動作を提供してよい。そのような動作は、可変長復号化(VLD)、逆量子化、及び逆離散コサイン変換(DCT)といった動作を含んでよい(が、これらに限られない)。グラフィクスエンジン104は、そのような動作を迅速に且つ効率的に実行するよう専用のハードウェア及び/又はメモリを提供してよい。
そのような動作は、オーディオ復号化にも共通する。よって、ビデオ復号化動作を実行することに加えて、グラフィクスエンジン104は、アプリケーション112のためのオーディオ復号化動作を実行してよい。そのようなオーディオ復号化は、様々なコーデックに従ってよい。例となるコーデックには、DTS−HDマスタオーディオ、ドルビートゥルーHD、MP3、AAC等がある(が、これらに限られない)。なお、如何なるオーディオコーデックが用いられてもよい。実施形態において、そのようなオーディオ及びビデオ復号化動作の実行は、グラフィクスエンジンドライバ111を通じてアプリケーション112によって開始されてよい。
オーディオ出力装置107は、ホストプロセッシングプラットフォーム102及び/又はグラフィクスエンジン104から受け取ったオーディオストリームから音響信号を生成するよう1又はそれ以上のスピーカを有してよい。実施形態において、そのようなオーディオストリームは、デジタルパルス符号変調(PCM)信号であってよい。よって、オーディオ出力装置107は、アナログ−デジタル変換器(ADC)及びフィルタのような構成要素を更に有して、それらのデジタル信号をスピーカのためのアナログ信号に変換してよい。更なる構成要素は、増幅器、ユーザコントロール(例えば、ボリューム、トーン、イコライゼーション、バランス等)を有してよい。オーディオ出力装置107のそのような構成要素は、ハードウェア及び/又はソフトウェアの何らかの組み合わせにおいて実施されてよい。
ディスプレイ装置108は、視覚出力をユーザへ提供する物理的ディスプレイを有する。この出力は、連続画像(又はフレーム)の形をとってよい。例となる物理的ディスプレイには、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プラズマディスプレイ、及び陰極線管(CRT)がある。実施形態は、しかしながら、これらの例に限られない。ディスプレイ装置108によって出力されるフレームの夫々は、複数のピクセルを有してよい。それらのピクセルを表すデータ(例えば、色及び/又は強さの値)は、ディスプレイ装置108内の1又はそれ以上のフレームバッファに格納されてよい。このデータは、「フレームデータ」と呼ばれることがある。そのようなフレームバッファは、揮発性ランダムアクセスメモリ(RAM)(例えば、動的RAM)のような記憶装置によって提供されてよい。なお、不揮発性メモリのような他のタイプの記憶媒体が使用されてもよい。
インターフェース109は、図1の要素の間を結合することを提供する。例えば、インターフェース109は、要素の様々な対の間の1又はそれ以上のポイント・ツー・ポイント接続(例えば、パラレルインターフェース、シリアルインターフェース、専用信号線、等)を有してよい。
更に、又は代替的に、インターフェース109は、物理接続処理部302a〜nを提供するマルチドロップ又はバスインターフェースを有してよい。例となるバスインターフェースには、様々なコンピュータシステムバスインターフェースはもちろん、ユニバーサルシリアルバス(USB)がある。
更に、インターフェース109は、ソフトウェア処理間のデータの交換を提供する1又はそれ以上のソフトウェアインターフェース(例えば、アプリケーションプログラマインターフェース、遠隔プロシージャ呼び出し、共有メモリ等)を有してよい。
実施形態において、図1の要素は、コンピュータシステム内に実装されてよい。そのようなコンピュータシステムは、パーソナルコンピュータ(例えば、デスクトップ、ラップトップ、ノートブック、又はタブレットコンピュータ)であってよい。代替的に、そのようなコンピュータシステムは、携帯電話機、パーソナルデジタルアシスタント(PDA)、携帯電話スマートホン、又は携帯型メディアプレーヤーのような携帯用デバイスであってよい。実施形態は、しかしながら、それらの例に限られない。
上述されたように、図1の要素は、1又はそれ以上のプロセッサ(例えば、マイクロプロセッサ)を有してよい。例えば、プロセッシングプラットフォーム102及びグラフィクスエンジン104は、1又はそれ以上のプロセッサにより実施されてよい。一例として、ホストプロセッシングプラットフォーム102は、1又はそれ以上のCPUにより実施されてよく、且つ/あるいは、グラフィクスエンジン104は、1又はそれ以上のGPUにより実施されてよい。それらのCPU及び/又はGPUは、1又はそれ以上の記憶媒体に記憶されている命令(例えば、ソフトウェア)に従って動作してよい。そのような記憶媒体の一部又は全ては、プロセッシングプラットフォーム102及び/又はグラフィクスエンジン104に含まれてよい。更に、又は代替的に、そのような記憶媒体の一部又は全ては、プロセッシングプラットフォーム102及びグラフィクスエンジン104の外にあってよい。そのような記憶媒体は、メモリ(揮発性又は不揮発性)、ディスク記憶装置、光記憶装置等を有してよい。
ホストプロセッシングプラットフォーム102及びグラフィクスエンジン104は、マルチコアプロセッサにおける夫々のコアにより実施されてよい。よって、それらの要素は共に、集積回路内にある。
ここで、例となる一連の動作について記載する。図1に示されるように、ホストプロセッシングプラットフォーム102は、コンテンツソース106からコンテンツストリーム119を受け取ってよい。実施形態において、コンテンツストリーム119は、符号化オーディオストリームを含む。更に、コンテンツストリーム119は、符号化ビデオストリームを含んでよい。
(ホストプロセッシングプラットフォーム102で実行されている)アプリケーション112は、コンテンツストリーム119を受け取ってよい。この受け取りは直接的であっても、あるいは、1又はそれ以上の中間処理要素を介してもよい。そのような処理要素は、OS110、グラフィクスエンジンドライバ111、アプリケーションプログラマインターフェース(API)等を有してよい。
コンテンツストリーム119から、アプリケーション112は符号化オーディオストリーム120及び符号化ビデオストリーム124を取り出して、それらをグラフィクスエンジン104へ供給する。次いで、グラフィクスエンジン104は、それらのストリームに対して様々な動作を実行する。結果として、グラフィクスエンジン104は、復号化オーディオストリーム122及び復号化ビデオストリーム126を生成する。実施形態において、グラフィクスエンジン104は、それらのオーディオ及びビデオストリームを並行して処理してよい。
グラフィクスエンジン104によって実行される動作は、ホストプロセッシングプラットフォーム102によって起動されてよい。例えば、アプリケーション112は、指示をグラフィクスエンジン104へ送ってよい。そのような指示は、ドライバ111を通じて送信されてよい。
図1は、復号化オーディオストリーム122及び復号化ビデオストリーム126がホストプロセッシングプラットフォーム102へ供給されることを示す。受け取られると、更なる動作、例えば、オーディオ/ビデオ同期化及びOS110によって保持されている出力スタックへのバッファリングが実行されてよい。そのような動作の後、対応する復号化オーディオストリーム128及び対応する復号化ビデオストリーム130が夫々、オーディオ出力装置107及びディスプレイ装置108へ供給される。
ここで記載されるように、オーディオストリーム処理及びビデオストリーム処理は、類似した特性を有する。ここで、オーディオストリームの処理に関する詳細が与えられる。オーディオサンプルは、通常、多数の周波数サブバンド係数(例えば、32又は64の係数)に(不可逆に)変換される。多数のオーディオサンプルについて、それらのサブバンド係数は、オーディオフレームを形成するよう(逓増的な時間順序において)まとめられる。
図2は、例となるオーディオフレーム200の図である。この図は、時間に従う列において水平に且つサブバンドに従う行において垂直に配置されている。よって、図は、2次元行列の値を提供する。それらの値の夫々は、オーディオサンプルのサブバンド係数である。
より詳細には、特定の列におけるサブバンド係数は、N個のサブバンド(通常、N=32又は64)に分解された同じオーディオサンプルに属する。オーディオフレームにおける次の列(すなわち、右の列)は、次の時点に符号化されるオーディオサンプルを表す。よって、列#1にあるオーディオサンプルが最初に符号化され、続いて列#2にある次のオーディオサンプルが符号化され、続いて列#3にある次のオーディオサンプルが符号化され、以降同様に続く。従って、図2は、M個のオーディオサンプルのサブバンド係数が単一のオーディオフレームを形成するようまとめられていることを示す。
可逆オーディオストリームは、しばしば、図2に示されているもののようなフレームから構成される不可逆コアを含む。更に、可逆オーディオストリームは、追加の残留ストリームを含んでよい。この残留ストリームは、デコーダが原のオーディオストリームの無損失生成を達成することを可能にする。
図2から分かるように、オーディオフレームは、オーディオフレームにおける各サンプルの水平及び垂直座標(x,y)がピクセルの空間座標を表さないことを除いて、ビデオフレームに類似する。むしろ、それらの座標は、オーディオサンプルの周波数(サブバンド)及び時間座標を表す。
図3は、例となる不可逆オーディオストリーム復号化パイプライン300の図である。図3に示されるように、このパイプラインは、可変長復号化(VLD)モジュール302と、逆量子化(逆Q)モジュール304と、付加的なオーディオ処理モジュール306と、逆DCT(iDCT)モジュール308と、直交ミラーフィルタ(QMF)モジュール310と、オーディオ後処理モジュール312とを有する。これらのモジュールは、ハードウェア及び/又はソフトウェアの何らかの組み合わせにおいて実施されてよい。更に、図3のモジュールは一例として提示されているのであり、限定としてではない。よって、特定のコーデック特性に依存して、このオーディオパイプラインは、更なる又はより少ないモジュールを有してよい。
一般的な動作において、パイプライン300は、符号化された(圧縮された)オーディオストリーム320を受け取り、対応する復号化オーディオストリーム322を生成する。より詳細には、図3は、圧縮オーディオストリーム320を受け取るVLDモジュール302を示す。次いで、VLDモジュール302は、このストリームに対してエントロピ復号化を実行する。この復号化は、ハフマン復号化であってよい。実施形態は、しかしながら、この例に限られない。この復号化の結果は、逆Qモジュール304によって逆量子化される。
モジュール306は、モジュール304の逆量子化結果に対して追加のオーディオ処理を実行してよい。一例として、モジュール306は、それらの結果に対して逆適応差分パルス符号変調(ADPCM)を実行してよい。しかし、更なる及び/又は代替の動作が実行されてもよい。実施形態において、このオーディオ処理は(特定のオーディオコーデックの仕様に依存して)複数のサブバンド及び/又はオーディオサンプルにわたって(例えば、図2に示されるフレームの行及び/又は列にわたって)スレッダブルであってよい。
DCT変換を用いるオーディオコーデックについて、逆DCTモジュール308は、モジュール306の出力に対して逆DCTを実行する。この後、QMFモジュール310は、モジュール308によって与えられる周波数領域の係数を、時間領域におけるパルス符号変調(PCM)オーディオサンプルに変換する。実施形態において、QMFモジュール310は、必ずしもオーディオサンプル(例えば、図2の列)にわたってではなく、サブバンド(例えば、図2の行)にわたって通常スレッダブルである動作を実行する。
しばしば、モジュール308及び310によって実行される逆DCT及びQMF動作は、オーディオパイプラインにおける最も計算的に集中的な動作である。例えば、組み合わされる場合に、それらの動作は、消費される総MIPS(million instructions per second)の30〜50%に相当しうる。
図3に示されるように、オーディオ後処理モジュール312は、QMFモジュール310によって与えられるPCMサンプルに対して動作を実行してよい。例として、動作には、ダウンミキシング(オーディオストリームにおける数又はオーディオチャネルを減らすこと)が含まれる。しかし、代替の及び/又は更なる動作が実行されてもよい。これは、復号化オーディオストリーム322を生成する。復号化オーディオストリーム322は、増幅器及び/又はスピーカのような出力装置へ送信されてよい。
図3のパイプラインは、複数のオーディオチャネル(例えば、2、5又はそれ以上のオーディオチャネル)の夫々に別々に適用されてよい。よって、夫々のチャネルは、独立に処理されてよい。しかし、実施形態は、そのような独立した処理に限られない。
図3の一部のモジュールは、ビデオパイプラインにも共通である。例えば、VLDモジュール302、逆Qモジュール304、及び逆DCTモジュール306は、ビデオパイプラインにおいて用いられてよい。よって、図3において、それらのモジュールは、灰色で影を付けられている。そのような共通性の結果として、実施形態は、ビデオパイプラインにおいて実行される示された動作(VLD、逆Q、iDCT等)を有するために、ビデオパイプラインへオーディオフレームを送ってよい。
更に、グラフィクスエンジン(例えば、グラフィクスエンジン104)によって直接にサポートされないオーディオ処理動作は、多くの場合において極めてスレッダブルである。よって、そのような動作は、グラフィクスエンジンの複数の実行ユニットによって実行されてよい。更に、オーディオチャネルが独立して処理され得る場合に、スレッダビリティの程度(マルチスレッディングに適する程度)は高められる。そのようなスレッダビリティは、グラフィックスエンジンの複数の実行ユニットによってサポートされてよい。
オーディオフレームを処理するよう、グラフィクスエンジンによって提供されるビデオパイプラインを用いて、メディアアプリケーションは、グラフィクスドライバ(例えば、図1のグラフィクスエンジンドライバ111)への多数の呼び出しを実行してよい。異なったドライバ呼び出しの正確な数及び性質は、実施に特有であってよい。例えば、そのようなドライバ呼び出しは、用いられる特定のオーディオコーデックに依存してよい(例えば、DTS−HDマスタオーディオ、ドルビートゥルーHD等)。図4は、そのようなドライバ呼び出しの例を与える。
特に、図4は、図3のオーディオパイプラインに対応するグラフィクスドライバ呼び出しを示す図である。それらのドライバ呼び出しは、限定ではなく例示のために与えられる。よって、より少ない又はより多い呼び出しの組み合わせが用いられてよい。
図4は、モジュール302及び304の動作を呼び出す第1のドライバ呼び出し402と、モジュール306の動作を呼び出す第2のドライバ呼び出し404とを示す。また、第3のドライバ呼び出し406は、モジュール308の動作を呼び出す。更に、第4のドライバ呼び出し408は、モジュール310及び312の動作を呼び出す。これらのドライバ呼び出しは、限定ではなく例示のために与えられている。よって、より少ない又はより多いドライバ呼び出しの他の配置が用いられてよい。例えば、実施形態は、多くのドライバ呼び出しが、夫々のオーディオフレームを処理するのに必要とされるアプリケーション/ドライバインタラクションの数を減らすように結合される最適化された実施を用いてよい。
図5は、例となる論理フロー500を表す。フロー500は、ここで記載される1又はそれ以上の実施形態によって実行される動作を表すことができる。図5は特定のシーケンスを示すが、他のシーケンスが用いられてよい。更に、表されている動作は、種々の並列な及び/又は順次的な結合において、実行されてよい。
ブロック502で、アプリケーションは、1又はそれ以上のオーディオフレームを、それらのフォーマットがビデオフレームのフォーマットと互換性があるように再フォーマットする。実施形態において、これは、複数のオーディオフレームを単一のより大きいフレームにまとめることを含んでよい。代替的に、又は追加的に、これは、時間及び/又は周波数におけるオーディオフレームの次元を変更することを含んでよい。例えば、付加的なサブバンド及び/又は時間サンプルがオーディオフレームにゼロ詰めされてよく、オーディオフレームをビデオ対応サイズとする。
ブロック504で、第1のグラフィクスドライバ呼び出しが実行される。この呼び出しは、エントロピ復号化及び逆量子化(例えば、モジュール302及び304によって実行される動作)のためにグラフィクスエンジン(例えば、グラフィクスエンジン104)へオーディオフレームを送る。実施形態において、グラフィクスエンジンは、それらの動作を実行することができる固定機能の及び/又はプログラム可能なVLDエンジンを有する。
ブロック506で、第2のドライバ呼び出しが実行される。この呼び出しは、他のオーディオ特有の処理(例えば、モジュール306の処理)の実行を開始する。上述されたように、そのような処理は、サブバンド、オーディオサンプル及びオーディオチャネルにわたって、極めてスレッダブルでありうる。結果として、高い程度のスレッダビリティが達成され得る。これは、グラフィクスエンジンの実行ユニットによる高速な効率的実行を可能にする。
第3のドライバ呼び出しがブロック508で実行される。このドライバ呼び出しにおいて、アプリケーションは、オーディオフレームをグラフィクスエンジンに送ってよく、逆DCTがオーディオフレームに対して実行され得るようにする。ここで記載されるように、グラフィクスエンジンは、この動作のための加速を提供するよう固定の及び/又はプログラム可能な機能を有する。
ブロック510で、第4のドライバ呼び出しが実行される。この呼び出しは、QMF動作及びその他のオーディオ後処理(例えば、モジュール310及び312の動作)の実行を開始する。上述されたように、それらの動作は、極めてスレッダブルでありうる(スレッダビリティの程度は、オーディオコーデックスキームによって異なりうる。)。よって、それらの動作は、グラフィクスエンジンの実行ユニットにおけるマルチスレッドの実行にとって優れた候補でありうる。
ブロック510の実行は、復号化されたオーディオを生成する。然るに、このオーディオがビデオストリームに付随する場合には、ビデオストリーム及びオーディオストリームはブロック512で同期されてよい(時間において整列されてよい)。実施形態において、そのような同期化は、アプリケーションによって実行されてよい。
ブロック514で、アプリケーションは、復号化オーディオストリームを出力オーディオスタックへ送ってよい。このスタックは、出力バッファリング能力を提供してよい。次いで、オーディオは、ブロック516で1又はそれ以上の装置を通じて出力される。そのような装置は、PCMデコーダ、フィルタ、増幅器、及び/又はスピーカの何らかの組み合わせを有してよい。
夫々のオーディオフレームは、通常、一定量の時間(例えば、オーディオフレームのサイズに依存して5又は10ミリ秒)を表す。よって、アプリケーションは、対応する一定レートでオーディオフレームをグラフィクスパイプラインへ送ってよい。然るに、ブロック502〜516のいずれの組み合わせも、繰り返し実行されてよい。
また、実施形態において、アプリケーションは、ここで記載されるオーディオ処理のためのグラフィクスドライバ呼び出しを、正規のグラフィクスドライバ呼び出しと混ぜて/重ね合わせてよい。よって、オーディオフレーム及びビデオフレームは、並列にグラフィクスエンジンによって復号化されて後処理されてよい。
ここで記載されるように、種々の実施形態はハードウェア要素、ソフトウェア要素、又はそれらの組み合わせを用いて実施されてよい。ハードウェア要素の例には、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、キャパシタ、インダクタンス等)、集積回路、特定用途向け集積回路(ASIC)、プログラム可能論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等がある。
ソフトウェアの例には、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はそれらのいずれかの組み合わせがある。
幾つかの実施形態は、例えば、機械によって読取可能な記憶媒体又は物を用いて、実施されてよい。記憶媒体は、機械によって実行される場合にその機械に実施形態に従う方法及び/又は動作を実行させることができる命令又は命令の組を記憶してよい。そのような機械には、例えば、何らかの適切なプロセッシングプラットフォーム、コンピュータプラットフォーム、コンピュータ装置、プロセッシング装置、コンピュータシステム、プロセッシングシステム、コンピュータ、プロセッサ等があり、ハードウェア及び/又はソフトウェアの何らかの適切な組み合わせを用いて実施されてよい。
ここで記載されるように、実施形態は、記憶媒体又は機械読取可能な物を有してよい。それらは、例えば、何らかの適切なタイプのメモリユニット、メモリ装置、メモリアーティクル、メモリ媒体、記憶装置、記憶アーティクル、記憶媒体、及び記憶ユニット(例えば、メモリ、可搬型又は固定型の媒体、消去可能又は消去不可能な媒体、書込可能又は書換可能な媒体、デジタル又はアナログ媒体、ハードディスク、フロッピー(登録商標)ディスク、コンパクトディスク読出専用メモリ(CD−ROM)、リコーダブルCD(CD−R)、リライタブルCD(CD−RW)、光ディスク、磁気媒体、磁気光学媒体、可搬型のメモリカード又はディスク、種々のタイプのデジタルバーサタイルディスク(DVD)、テープ、カセット、等)を有してよい。命令は、何らかの適切な高度の、低度の、オブジェクト指向の、視覚的な、コンパイルされた及び/又はインタプリタされたプログラミング言語を用いて実施される何らかの適切なタイプのコード(例えば、ソースコード、コンパイルされたコード、インタプリタされたコード、実行可能コード、静的コード、動的コード、暗号化されたコード等)を有してよい。
以上本発明の様々な実施形態が記載されてきたが、当然にそれらは単なる一例として提示されているのであり、限定ではない。例えば、ここで記載されている技術は、2進数を用いることに制限されない。よって、当該技術は、如何なる基底の数によっても用いられてよい。
然るに、当業者には明らかなように、形態及び詳細における種々の変更が、本発明の精神及び適用範囲から逸脱することなしに、それらの実施形態に対してなされ得る。よって、本発明の技術的範囲は、上記の実施例のいずれによっても制限されるべきではなく、特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。