(57)【要約】【課題】より少ないリソースを復号プロセスに使用する、マルチチャネルオーディオを提供するためのシステムおよび方法を提供すること。【解決手段】５．１チャネルオーディオストリームを３つのステレオストリームに分割する。３つのステレオストリームそれぞれからのパケットを多重化して、擬似５．１チャネルオーディオストリームを作成する。次いで、擬似５．１チャネルオーディオストリームを復号し、出力において分離して、出力５．１チャネルオーディオサウンドを生み出す。したがって、デコーダリソースは単一の擬似５．１ストリームを復号するだけでよい。この技法は、７．１またはその他のマルチチャネルフォーマットにも等しく適用可能である。【選択図】図２
2006054039.tif 000002
【特許請求の範囲】
【請求項１】
マルチチャネルオーディオデータを符号化する方法であって、
前記マルチチャネルオーディオデータをストリームに分割すること、
前記ストリームそれぞれを符号化して符号化済みストリームを作成すること、および、
前記符号化済みストリームを多重化して多重化済みオーディオストリームを作成することであって、前記多重化済みオーディオストリームは前記符号化済みストリームからのデータパケットを含むこと
を備えることを特徴とする方法。
【請求項２】
前記多重化済みオーディオストリーム中で特定のストリームの次パケットがどこにあるかを示すスキップフィールドを、各パケット内に設けること
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記各パケットはいくつかのフレームを含み、各フレームは可変数のビットを含み一定数のサンプルを表すこと
を特徴とする請求項２に記載の方法。
【請求項４】
（ａ）０からｎ−１までの番号の付いたストリームについて、０からｎ−１の順に各ストリームから１パケットずつ挿入すること、
（ｂ）各ストリームの挿入済みフレーム累積数を追跡すること、
（ｃ）それまでに挿入されたフレームの累積数が最も少ないストリームからのパケットを１つ追加し、前記ストリームの累積フレームカウントを更新すること、および、
（ｄ）すべてのストリームからのすべてのパケットが追加されるまで前記ステップ（ｃ）を繰り返すこと
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
（ａ）０からｎ−１までの番号の付いたストリームについて、０からｎ−１の順に各ストリームから１パケットずつ挿入することであって、スキップされるパケットの最大数がｍであること、
（ｂ）各ストリームの挿入済みフレーム累積数、および各ストリームの現在スキップカウントを追跡すること、
（ｃ）第１のストリームの現在スキップカウントがｍに等しいかどうか判定し、等しい場合はステップ（ｄ）に飛び、そうでない場合は、それまでに挿入されたフレームの累積数が最も少ない第２のストリームからのパケットを１つ追加し、前記第２のストリームの累積フレームカウントを更新し現在スキップカウントをリセットし、その他のすべてのストリームの現在スキップカウントをインクリメントし、すべてのストリームからのすべてのパケットが追加されるまでステップ（ｃ）を継続すること、
（ｄ）それまでに挿入されたフレームの累積数が最も少ないのはどのストリームかを判定することによって、前記第１のストリームのビットレートを調整してすべてのストリームの同期を維持する必要があるかどうか決定することであって、
前記第１のストリームである場合は、ビットレート調整は必要なく、前記第１のストリームからのパケットを１つ追加し、前記第１のストリームの累積フレームカウントを更新し、前記第１のストリームのスキップカウントをリセットし、他のストリームのスキップカウントを更新し、ステップ（ｂ）に戻り、あるいは、
前記第１のストリームでない場合は、前記第１のストリームの挿入済みフレーム累積数が、最も少ない挿入済みフレーム累積数を有する第２のストリームの挿入済みフレーム累積数と等しくなるように、前記多重化済みオーディオストリームに挿入された前記第１のストリームの前パケットを切り捨てることによって、前記第１のストリームのビットレートを調整すること、および、
（ｅ）前記第１のストリームのパケットを初めに挿入することであって、前記第１のパケットの先頭は前パケットから切り捨てられたフレームを含み、次パケットを読み取り、前記次パケットの一部を使用して前記第１のパケットを完成させ、前記次パケットの残りをバッファに記憶し、前記第１のストリームの累積フレームカウントを更新し、前記第１のストリームのスキップカウントをリセットし、他のストリームの現在スキップカウントをインクリメントし、ステップ（ｂ）に戻ること
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項６】
累積フレームカウントではなく累積時間が追跡されることを特徴とする請求項４に記載の方法。
【請求項７】
累積フレームカウントではなく累積時間が追跡されることを特徴とする請求項５に記載の方法。
【請求項８】
何個のストリームが前記多重化済みストリームに多重化されるかに関する情報を提供することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
多重化済みオーディオストリームを復号する方法であって、
前記多重化済みオーディオストリームを受け取ること、
前記多重化済みオーディオストリームをデコーダに入力すること、
複数のストリームを出力すること、および、
前記複数のストリームをマルチチャネルオーディオ出力に多重化すること
を含むことを特徴とする方法。
【請求項１０】
前記多重化済みオーディオストリームを記憶媒体からフェッチすることをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
要求に応答して前記多重化済み擬似マルチチャネルオーディオストリーム内でシークすることをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
キューファイルまたは一定サイズの符号化済みファイルを使用してシークが実施されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記多重化済み擬似マルチチャネルオーディオストリームを復号するための追加レイヤを有するオーディオコーデックを提供することをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１４】
多重化済みオーディオストリームを復号するシステムであって、
前記多重化済みオーディオストリームを受け取って複数のストリームを出力するデコーダと、
前記複数のストリームをマルチチャネルオーディオ出力に多重化するマルチプレクサと
を備えることを特徴とするシステム。
【請求項１５】
前記多重化済み擬似マルチチャネルオーディオストリームは記憶媒体からフェッチされることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記デコーダは、要求に応答して、キューファイルまたは一定サイズの符号化済みファイルを使用して前記多重化済みオーディオストリーム内でシークすることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記多重化済み擬似マルチチャネルオーディオストリームを復号するための追加レイヤを有するオーディオコーデックをさらに備えることを特徴とする請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、コンピューティングデバイスの分野に関する。より詳細には、本発明は、復号することを目的として、マルチチャネルオーディオストリームをステレオストリームに分割し、ステレオストリームを擬似マルチチャネルストリームに多重化するシステムおよび方法に関する。
【背景技術】
【０００２】
従来、マルチチャネルオーディオフォーマットは、映画の用途のために開発された。しかし近年は、Dolby DigitalやDTS（Digital Theater System）などのマルチチャネルオーディオがホームシアターシステムでも普及してきている。代表的なフォーマットには４．０および５．１が含まれ、より最近では７．１も含まれる。例えば、５．１Dolby Digitalフォーマットは、２つの前部スピーカと、２つの後部スピーカと、１つの中央スピーカと、１つの低周波効果音（LFE、low frequency effects）スピーカ（例えばサブウーファ）とを備える。これは、リスナにサラウンドサウンド体験を提供する。
【０００３】
マルチチャネルオーディオは改善されたリスナ体験を提供するが、マルチチャネルオーディオストリームは、従来のステレオストリームよりも、かなり多くの復号リソースを必要とする。これは、マルチチャネルストリームの情報内容がステレオストリームよりもずっと多いからである。追加の復号リソースはハードウェア要件およびコストを増加させ、これは望ましくない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、マルチチャネルオーディオストリームで使用するためのデコーダであって、従来のマルチチャネルオーディオデコーダのハードウェアコストを回避しながら、このようなストリームを復号することのできるデコーダが必要とされている。本発明はこのような解決法を提供する。
【課題を解決するための手段】
【０００５】
本発明は、より少ないリソースを復号プロセスに使用する、マルチチャネルオーディオを提供するためのシステムおよび方法を対象とする。本発明は、５．１チャネルオーディオストリームを３つのステレオストリームに分割し、次いで３つのステレオストリームからのパケットを多重化して擬似５．１チャネルオーディオストリームを作成する。次いで、擬似５．１チャネルオーディオストリームを復号し、出力において分離して、出力５．１チャネルオーディオサウンドを生み出す。したがって、デコーダリソースは１つのステレオストリームからのパケットを一度に復号するだけでよい。この技法は、７．１またはその他のマルチチャネルフォーマットにも等しく適用可能である。
【０００６】
本発明の一態様によれば、マルチチャネルオーディオデータを多重化済みオーディオストリームに符号化し、多重化済みオーディオストリームを復号するための方法およびシステムが提供される。第１の態様によれば、マルチチャネルオーディオデータを符号化する方法が提供される。この方法は、マルチチャネルオーディオデータをストリームに分割すること、各ストリームを符号化して符号化済みストリームを作成すること、符号化済みストリームを多重化して多重化済みオーディオストリームを作成することを含む。多重化済みオーディオストリームは、符号化済みストリームからのデータパケットを含む。
【０００７】
本発明の一特徴によれば、この方法は、多重化済みオーディオストリーム中で特定のストリームの次パケットがどこにあるかを示すスキップフィールドを、各パケット内に設けることを含むことができる。各パケットはいくつかのフレームを含むことができ、各フレームは、可変数のビットを含み、一定数のサンプルを表す。
【０００８】
その他の特徴によれば、デッドロックを補償する符号化方法を含めた符号化方法が提供される。符号化は、累積フレームまたは累積時間をカウントすることによって実施することができる。
【０００９】
本発明の別の態様によれば、多重化済みオーディオストリームを復号する方法が提供される。この方法は、多重化済みオーディオストリームを受け取ること、多重化済みオーディオストリームをデコーダに入力すること、複数のストリームを出力すること、複数のストリームをマルチチャネルオーディオ出力に多重化することを含む。
【００１０】
本発明の一特徴によれば、この方法は、多重化済みオーディオストリームを記憶媒体からフェッチすることを含むことができる。また、要求に応答して多重化済み擬似マルチチャネルオーディオストリーム内でシークする（seeking）方法も提供される。シークは、キュー（cue）ファイル、タイムスタンプ、または一定サイズの符号化済みファイルを使用して実施することができる。
【００１１】
本発明の別の特徴によれば、この方法は、多重化済み擬似マルチチャネルオーディオストリームを復号するための追加レイヤを有するオーディオコーデックを提供することを含む。
【００１２】
本発明の別の態様によれば、多重化済みオーディオストリームを復号するためのシステムが提供される。このシステムは、多重化済みオーディオストリームを受け取って複数のストリームを出力するデコーダと、複数のストリームをマルチチャネルオーディオ出力に多重化するマルチプレクサとを備える。コーデックを備えることもできる。
【００１３】
本発明の追加の特徴および利点は、添付の図面を参照しながら進める例示的な実施形態に関する以下の詳細な記述から明らかになるであろう。
【００１４】
前述の概要、ならびに好ましい実施形態に関する以下の詳細な記述は、添付の図面と共に読めばよりよく理解される。本発明を例示する目的で、図面には本発明の例示的な構造を示す。ただし本発明は、開示する特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１５】
（例示的なコンピューティング環境）
図１に、本発明を実施することのできる適切なコンピューティングシステム環境の例１００を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどんな限定を意味するものでもない。またコンピューティング環境１００は、この例示的な動作環境１００に示すコンポーネントのいずれか１つまたは組合せに関してどんな依存や要件を有するものとも解釈すべきではない。
【００１６】
本発明は、その他多くの汎用または専用コンピューティングシステム環境または構成でも機能する。本発明で使用するのに適するであろう周知のコンピューティングシステム、環境、および／または構成の例には、限定しないがパーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータや、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００１７】
本発明は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的文脈で述べることができる。一般に、プログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は分散コンピューティング環境で実施することもでき、その場合、タスクは通信ネットワークまたはその他のデータ伝送媒体を介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールおよびその他のデータは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置することができる。
【００１８】
図１を参照すると、本発明を実施するための例示的なシステムは、コンピュータ１１０の形の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、限定しないが、処理ユニット１２０と、システムメモリ１３０と、システムメモリを含めた様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１とを含めることができる。システムバス１２１は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスを含めて、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、ＰＣＩ（Peripheral Component Interconnect）バス（メザニンバスとも呼ばれる）、ＰＣＩ‐Ｅｘｐｒｅｓｓ（Peripheral Component Interconnect Express）、ＳＭＢｕｓ（Systems Management Bus）が含まれる。
【００１９】
コンピュータ１１０は通常、様々なコンピュータ読み取り可能記憶媒体を備える。コンピュータ読み取り可能記憶媒体は、コンピュータ１１０からアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と取外し不可能の媒体の両方がこれに含まれる。限定ではなく例として、コンピュータ読み取り可能記憶媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体が含まれる。コンピュータ記憶媒体には、限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）、またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶デバイスが含まれ、あるいは、所望の情報を記憶するのに使用でき、コンピュータ１１０からアクセスできるその他の任意の媒体が含まれる。通信媒体は通常、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波やその他の搬送機構などの被変調データ信号に組み入れるものであり、任意の情報送達媒体がこれに含まれる。用語「被変調データ信号」は、信号中の情報が符号化される形で１つまたは複数の特性が設定または変更される信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数、赤外線などの無線媒体およびその他の無線媒体とが含まれる。以上のいずれかの組合せもコンピュータ読み取り可能媒体の範囲に含めるべきである。
【００２０】
システムメモリ１３０は、ＲＯＭ１３１やＲＡＭ１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。ＲＯＭ１３１には通常、起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（basic input/output system）１３３が記憶されている。ＲＡＭ１３２は通常、処理ユニット１２０がすぐにアクセス可能な、および／または処理ユニット１２０によって現在実行されている、データおよび／またはプログラムモジュールを含む。限定ではなく例として、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、プログラムデータ１３７を示す。
【００２１】
コンピュータ１１０は、その他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。例にすぎないが図１には、取外し不可能な不揮発性の磁気媒体に対して読み書きするハードディスクドライブ１４１と、取外し可能な不揮発性の磁気ディスク１５２に対して読み書きする磁気ディスクドライブ１５１と、ＣＤ−ＲＯＭやその他の光媒体など取外し可能な不揮発性の光ディスク１５６に対して読み書きする光ディスクドライブ１５５を示す。この例示的な動作環境で使用できるその他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体には、限定しないが、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は通常、インタフェース１４０などの取外し不可能メモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インタフェース１５０などの取外し可能メモリインタフェースによって、システムバス１２１に接続される。
【００２２】
以上に論じ図１に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータの記憶域をコンピュータ１１０に提供する。例えば図１には、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、プログラムデータ１４７を記憶するように示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、プログラムデータ１３７と同じものとすることもでき、異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、プログラムデータ１４７が少なくとも異なるコピーであることを示すために、異なる番号を付けてある。ユーザは、キーボード１６２、マウスやトラックボールやタッチパッドと一般に呼ばれるポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含めることができる。これらおよび他の入力デバイスは、システムバス１２１に結合されたユーザ入力インタフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など、その他のインタフェースおよびバス構造で接続されてもよい。モニタ１９１またはその他のタイプの表示デバイスも、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７やプリンタ１９６など、その他の周辺出力デバイスも備えることができ、これらは出力周辺インタフェース１９５を介して接続することができる。
【００２３】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、通常はコンピュータ１１０に関して上述した要素の多くまたはすべてを備えるが、図１にはメモリ記憶デバイス１８１だけが示してある。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、その他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、インターネットでよくみられる。
【００２４】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介した通信を確立するためのモデム１７２またはその他の手段を備える。モデム１７２は内蔵でも外付けでもよく、ユーザ入力インタフェース１６０またはその他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関して示したプログラムモジュールまたはその一部を、リモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、図１には、リモートアプリケーションプログラム１８５がメモリデバイス１８１上にあるのが示されている。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するためのその他の手段を使用してもよいことは理解されるであろう。
【００２５】
（パケット多重化マルチチャネルオーディオの例示的な実施形態）
本発明は、５．１チャネルオーディオストリーム（またはその他のマルチチャネルオーディオストリーム）を、３つのステレオストリームに分割するためのシステムおよび方法を実現する。３つのステレオストリームそれぞれからのパケットを多重化して、擬似５．１チャネルオーディオストリームを作成する。その後、ステレオストリームからパケットを復号および多重化して、５．１チャネルオーディオストリームをレンダリングする。したがって、デコーダは、ステレオチャネルを多重化して元の５．１ストリームを再現する前に、１つのステレオストリームからのパケットを一度に復号するだけである。
【００２６】
次に図２を参照すると、本発明による符号化プロセスが示されている。図のように、オーディオデータが３つのステレオストリーム２０２、２０３、２０４に分割される。各ステレオストリームは、エンコーダ２０５、２０６、２０７によって符号化されて、符号化済みストリーム２０８、２０９、２１０が生み出される。符号化済みストリーム２０８、２０９、２１０は、単一のファイル２１１に多重化される。このインタリーブ形式ファイル中の所与のストリームの各パケットは、そのストリームの次パケットがどこにあるかを示す「パケットスキップ」フィールドを有する。各パケットはいくつかのフレームを含み、各フレームは、可変数のビットを含むが、一定数のサンプル（したがって一定の長さの時間）を表す。ストリームのビットレートが高いほど、それが含む１パケットあたりのフレームは少なく、ストリームのビットレートが低いほど、それが含む１パケットあたりのフレームは多い。ストリームを共に多重化することによって、本発明は有利にも、後述するように記憶媒体を１回シークするだけでマルチチャネルオーディオを提供する単一のファイル（ファイル２１１）を生み出す。
【００２７】
本発明によれば、デッドロック回避なしの第１の多重化アルゴリズムを使用して、パケットを多重化することができる。この第１の多重化アルゴリズムによれば、パケットのインタリーブはストリームのビットレートだけに基づく。第１のアルゴリズムでは、パケットスキップフィールドが有することのできる最大値に対する制限はない。
【００２８】
０からｎ−１までの番号の付いたｎ個のストリームをインタリーブするために、このアルゴリズムは以下のようにする。
【００２９】
１．初期化。０からｎ−１の順に、各ストリームから１パケットずつ挿入する。各ストリームの挿入済みフレーム累積数を追跡する。
【００３０】
２．それまでに挿入されたフレームの累積数が最も少ないいずれかのストリームからのパケットを１つ追加する。そのストリームの累積フレームカウントを更新する。すべてのストリームからのすべてのパケットが追加されるまで継続する。
【００３１】
２つのストリームが多重化される場合であって、ストリーム０（Ｓ０）が１パケットあたり６個のフレームを有し、ストリーム１（Ｓ１）が１パケットあたり１０個のフレームを有する場合（ただし１パケットあたりのフレーム数はパケットごとに異なってもよいことに留意されたい）、アルゴリズムは以下のように動作する。
【００３２】
まずＳ０からのパケットを挿入し、次いでＳ１からのパケットを挿入する。累積フレームカウントをそれぞれ６および１０に初期化する。次に、Ｓ０が最小フレームカウントを有するので、Ｓ０からのパケットを追加し、その累積フレームカウントを１２に更新する。次いで、Ｓ１のカウントが１０なので、Ｓ１からのパケットを追加する。累積フレームカウント付きのパケット順番は以下のように継続する。 
Ｓ０（６）  Ｓ１（１０）  Ｓ０（１２）  Ｓ１（２０）  Ｓ０（１８）  Ｓ０（２４）  Ｓ１（３０）  Ｓ０（３０）（タイ（tie））  Ｓ０（３６）  Ｓ１（４０）．．．．
【００３３】
このアルゴリズムを使用すると、２つのストリームのビットレートが大きく異なる場合にデッドロックが生じる可能性がある。例えば、Ｓ０が１パケットあたり１０個のフレームを有し、Ｓ１が１パケットあたり１個のフレームを有すると仮定する。この場合、アルゴリズムは以下のインタリーブ形式ストリームを生み出す。 
Ｓ０  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ１  Ｓ０  Ｓ１．．．．
【００３４】
Ｓ０とＳ１が同時に復号されるが、それぞれ３パケットずつの２つのバッファに、一度に６つのパケットしかバッファリングされないと仮定する。このことは、最初、第１のバッファはＳ０からの１０個のフレーム（１パケット）およびＳ１からの２個のフレーム（２パケット）を保持し、第２のバッファはＳ０からのフレームを保持せずＳ１からの３個のフレーム（３パケット）を保持することを意味する。各ストリームからの５個のフレームが復号された後、ストリームＳ１のデータをさらに読み取る必要があり、これは第１の３パケットバッファがクリアされてリロードされることを意味する。しかし、第１のバッファはまだストリームＳ０のフレームをさらに５個含んでおり、したがって完全にクリアすることはできない。２つのインタリーブ形式ストリームを同時に復号し続ける唯一の方法は、バッファのサイズを増大することである。
【００３５】
この問題を回避するために、本発明によれば、デッドロック回避ありの第２のアルゴリズムを使用することができる。前述のような状況を回避するために、低ビットレートストリームのビットレートを増加させ、それにより、所与のストリームについてあるパケットから次のパケットに移動するためにスキップする必要のあるパケットの数を制約することができる。
【００３６】
いずれかの所与の地点でスキップするパケットの最大数がｍであるという制約付きで、０からｎ−１までの番号の付いたｎ個のストリームをインタリーブするために、このアルゴリズムは以下のようにする。
【００３７】
１．初期化。０からｎ−１の順に、各ストリームから１パケットずつ挿入する。各ストリームの挿入済みフレーム累積数、ならびに各ストリームの現在スキップカウントを追跡する。初期化後、ストリーム０の現在スキップカウントはｎ−１である（すなわち、次のパケットがストリーム０から来る場合、ストリーム０の第１のパケットのパケットスキップはｎ−１となる）。ストリームｎ−１の現在スキップカウントは０である。
【００３８】
２．いずれかのストリームの現在スキップカウントが最大スキップカウントｍに等しい場合は、ステップ３に飛ぶ。そうでない場合は、それまでに挿入されたフレームの累積数が最も少ないいずれかのストリームからのパケットを１つ追加する。このストリームの累積フレームカウントを更新し、このストリームの現在スキップカウントを０にリセットする。その他のすべてのストリームの現在スキップカウントをインクリメントする。ステップ２を、すべてのストリームからのすべてのパケットが追加されるまで継続する。
【００３９】
３．ストリームのうちの１つ（例えばストリームｋ）が最大スキップカウントに達した場合は、このストリームからのパケットを挿入するが、すべてのストリームの同期を維持するために、このストリームのビットレートを調整する必要がある。次に、それまでに挿入されたフレームの累積数が最も少ないのはどのストリームかを決定する。ストリームｋである場合は、ビットレート調整は必要なく、したがってストリームｋからのパケットを１つ追加し、その累積フレームカウントを更新し、そのスキップカウントを０にリセットし、その他のストリームの現在スキップカウントを更新する。処理はステップ２に戻り、そうでない場合はステップ４に進む。
【００４０】
４．ストリームｋについてビットレート調整を行う必要がある。ストリームｋの挿入済みフレーム累積数が、最も少ない挿入済みフレーム累積数を有するストリームのそれと等しくなるように、ストリームｋについて挿入された前のパケットを切り捨てる。ステップ５に進む。
【００４１】
５．ストリームｋのパケットを挿入する。このパケットの先頭は、前のパケットから切り捨てられたフレームからなる。次に、１つのパケットを読み込む。このパケットの最初の部分を使用して、挿入されたパケットの残りの部分を埋める。このパケットの残りはバッファに記憶し、ストリームｋについて挿入されることになる後続のパケットの先頭として使用する。ストリームｋの累積フレームカウントを更新し、そのスキップカウントを０にリセットし、他のストリームの現在スキップカウントをインクリメントする。処理はステップ２に戻る。
【００４２】
ストリームＳ０が１パケットあたり１０個のフレームを有し、Ｓ１が１パケットあたり１個のフレームを有する例に戻るが、それぞれ３パケットずつの２つのバッファがある場合、最大パケットスキップを２として、各ストリームからの少なくとも１つのパケットが各バッファ中にあるようにすることが望ましい。これは、デッドロック状況が生じるのを防止することになる。
【００４３】
したがって、最初に初期化が行われ、これにより以下のストリームが生み出される（累積フレームカウントを括弧内に示す）。 
Ｓ０（１０）  Ｓ１（１）
【００４４】
この時点で、Ｓ０の現在スキップカウントは１であり、Ｓ１の現在スキップカウントは０であり、これらは両方とも最大値２よりも小さい。したがって、Ｓ１が最小累積フレームカウントを有するので、以下のようにＳ１からのパケットを挿入する。 
Ｓ０（１０）  Ｓ１（１）  Ｓ１（２）
【００４５】
今やＳ０の現在スキップカウントは２であり、これは最大値である。Ｓ１はずっと遅れをとっているので、Ｓ１からのパケットを挿入するのが望ましいが、上述のアルゴリズムではＳ０からのパケットを挿入することが求められる。Ｓ０の１０フレームパケットがもう１つ挿入されれば、すぐにＳ１よりもずっと先を行くことになり、デッドロックが生じるであろう。Ｓ０のビットレートを調整するのはこのためである。上述のアルゴリズムのステップ３に従うと、それまでに挿入されたフレーム数が最も少ないのはストリームＳ１である（すなわち２）。したがってステップ４で、Ｓ０がＳ１と同等になるように、Ｓ０について挿入された前のパケットを切り捨てて以下のようにする。 
Ｓ０（２）  Ｓ１（１）  Ｓ１（２）
【００４６】
次にステップ５で、Ｓ０のパケットを挿入する。Ｓ０からの第１パケットから切り捨てられた８個のフレームを、読み込まれた次のパケットからの２個の追加フレームに付加して、１０フレームのパケットを生成する。これにより８個のフレームが残り、これらはバッファに記憶される。 
Ｓ０（２）  Ｓ１（１）  Ｓ１（２）  Ｓ０（１２）（Ｓ０バッファは８個のフレームを有する）
【００４７】
ステップ２に戻り、Ｓ１からさらに２つのパケットを挿入する。 
Ｓ０（２）  Ｓ１（１）  Ｓ１（２）  Ｓ０（１２）  Ｓ１（３）  Ｓ１（４）（Ｓ０バッファは８個のフレームを有する）
【００４８】
再び、Ｓ０はその最大スキップカウントに達している。したがって、Ｓ０の前パケットからの８個のフレームを除去して、その累積フレームカウントをＳ１の累積フレームカウントまで減少させる。これらのフレームは、Ｓ０について挿入されることになるパケットの先頭を形成する。次に、次のパケット中にはあと２個のフレームのための空間があるが、バッファに８個入っているので、バッファから２個を取り、６個が残る。この場合、Ｓ０のパケットを読み込む必要はないことに留意されたい。これにより以下のストリームが得られる。 
Ｓ０（２）  Ｓ１（１）  Ｓ１（２）  Ｓ０（４）  Ｓ１（３）  Ｓ１（４）  Ｓ０（１４）（Ｓ０バッファは６個のフレームを有する）
【００４９】
このパターンが継続すると、Ｓ０のパケット数はＳ１の半分になる。しかし、Ｓ０が元々持っていたパケット数は１０分の１だったので、Ｓ０のビットレートを意図的に増加させている。このアルゴリズムは、多くの可能なアルゴリズムのうちの１つに過ぎないことに留意されたい。その他のアルゴリズムも、ビットレートの点でより効率的なインタリーブ形式ストリームを生み出す場合がある。例えば、３つのパケットをそれぞれ有する２つのバッファ内で入念に整列させることにより、以下のインタリーブも機能するであろう。
Ｓ０（５）  Ｓ１（１）  Ｓ１（２）  Ｓ１（３）  Ｓ１（４）  Ｓ１（５）  Ｓ０（１０）  Ｓ１（６）  Ｓ１（７）  Ｓ１（８）  Ｓ１（９）  Ｓ１（１０）．．．
【００５０】
ただしこれは、ストリームがＤＶＤまたはその他の媒体から読み取られる場合にデコーダ効率を低下させる可能性のある、「デッドロックに近い」条件を生み出す。第１のバッファはＳ０からの１つのパケットおよびＳ１からの２つのパケットを含み、第２のバッファはＳ１からの３つのパケットを含む。２つのバッファは共に、各ストリームからの合計５個のフレームを含む。Ｓ０からの第５フレームが第１のバッファ中にあり、Ｓ１からの第５フレームが第２のバッファ中にあるので、両方のバッファは同時に枯渇する。このことは、２重バッファリングがレイテンシ隠蔽において有する利点が失われることを意味する。
【００５１】
次に、異なるサンプルレートのストリームを多重化する方法について述べる。前述のように、この多重化アルゴリズムの目標は、個々のストリームをできるだけ相互と同期した状態に近くなるよう維持することである。すべてのストリームが同じサンプリングレートを有する場合は、上で説明したようにフレームをカウントすれば十分である。しかし、ストリームが異なるサンプリングレートを有する場合は、時間についてカウントするのが好ましい。その他の点では、フレームをカウントするのも時間をカウントするのも、ほぼ同様に機能する。
【００５２】
例として、Ｓ０とＳ１が両方とも１パケットあたり１０個のフレームを有すると仮定する。しかし、Ｓ０は３２ｋＨｚでサンプリングされ、Ｓ１は４４．１ｋＨｚでサンプリングされる。１フレームあたり５１２個のサンプルがある場合、３２ｋＨｚのフレームは１６ミリ秒の継続時間を有し、４４．１ｋＨｚのフレームは１１．６ミリ秒の継続時間を有する。したがって、Ｓ０からのパケットは１６０ミリ秒のオーディオを有し、Ｓ１からのパケットは１１６ミリ秒のオーディオを有する。フレームの代わりに時間を使用して前述の第１のアルゴリズムに従うと、以下のインタリーブが得られる（累積時間を括弧内に示す）。 
Ｓ０（１６０）  Ｓ１（１１６）  Ｓ１（２３２）  Ｓ０（３２０）  Ｓ１（３４８）  Ｓ０（４８０）  Ｓ１（４６４）  Ｓ１（５８０）  Ｓ０（６４０）．．．
【００５３】
本発明によれば、このストリーム多重化機構は、より多くのチャネルに拡張可能である。これは、特定のストリームからのパケットのパケットヘッダが、そのストリームからの次のパケットに到達するために何個のパケットをスキップすべきかをデコーダに伝える「スキップ」数を含むからである。例えば、以下のように多重化されたステレオストリームＳ０、Ｓ１、Ｓ２がある。 
Ｓ０  Ｓ１  Ｓ２  Ｓ１  Ｓ１  Ｓ２  Ｓ０  Ｓ２  Ｓ０  Ｓ２  Ｓ１．．．
【００５４】
ファイルヘッダはまた、何個のステレオストリームが最終的な擬似５．１ストリームに多重化されるかに関する情報も含む。この情報は、デコーダによって読み取られる８ビットフィールドに含めることができる。この例では、デコーダに情報を与えるために、ストリームの最初の３つのパケットは、各構成ストリームからの１パケットずつを含む。ここで、Ｓ０に属する第１のパケットのパケットヘッダは５に設定されることになる。というのは、Ｓ０からの次のパケットに到達するには５つのパケットをスキップしなければならないからである。同様に、Ｓ１に属する第１のパケットのパケットヘッダはスキップ１を有することになり、以下同様になる。
【００５５】
この機構は、４つのステレオストリームがある７．１の場合にも容易に拡張される。７．１ストリームの場合、ファイルヘッダは、４つのステレオストリームがあるという情報を含むことになり、最初の４つのパケットは４つの構成ストリームから来る（すなわち各ストリームから１つずつ）。本発明の機構は、モノラルとステレオのストリームの組合せ、さらにはより高次のストリーム（３つ以上のチャネルを有するストリーム）の組合せにも拡張することができる。
【００５６】
この機構を拡張する別の方法は、複数のストリームを多重化し、次いで分離操作でストリームのサブセットを選択し、それによりいくつかのストリームを混合し、それらに効果を適用することである。これは、例えば多重化済みストリームがある種のサウンド効果のすべてのバリエーションである場合に望ましいことがあり、ストリーム間で切り換え、混合比率を調整し、あるいは効果を改変することによって、元のサウンド効果において非常に幅広いバリエーションをその場で得ることができる。
【００５７】
次に図３を参照すると、本発明による復号プロセスが示されている。多重化済みファイル２１１がデコーダ２１３に入力され、デコーダ２１３は３つのステレオストリーム２１４、２１５、２１６を出力する。出力ストリーム２１４、２１５、２１６は、マルチプレクサ２１７によって６チャネルのオーディオデータ（例えば５．１ストリーム）に多重化され、これは例えばサラウンドサウンドシステムに出力される。本発明によれば、この手法に必要な復号リソースは、５．１ストリームの復号に必要なリソースよりもずっと少ない。しかし、個々のステレオストリームが同期した状態に維持されるようにしてパケット多重化が実施されるので、５．１構造は維持される。これは、デコーダがすべてのストリームから同じ時間的オーディオ部分をフェッチするのに役立つ。
【００５８】
さらに、ステレオストリームのパケットを多重化することにより、記憶媒体からの必要なフェッチはより少なくなる。これは、多くの時間クリティカルなシステムにとって重要な利益である。例えば、記憶媒体がＤＶＤの場合、ＤＶＤ上のファイルのある適切な部分までシークするのに１５０〜２００ミリ秒かかる可能性があるので、データのフェッチに時間がかかる可能性がある。多くの（すなわち何百個もの）オーディオストリームが共に混合されて最終的な出力が生み出される場合、各５．１ストリームにつき３つのストリームを作成することでフェッチする必要のあるストリームの数が３倍になると、シークの問題はかなり悪化する。
【００５９】
本発明は、ストリーム内でのシークにも対応する。シークは、キューファイルやタイムスタンプを使用して、あるいは一定サイズのファイルを符号化することによって実施することができる。後者は、圧縮を犠牲にするが、既知のファイル長の中にどれだけ遠くシークすべきかを決定するのが容易である。キューファイルは、ｘ秒進むのにどれだけ遠くファイル中にジャンプすべきかに関する情報を含む。パケットヘッダに埋め込まれたタイムスタンプを順方向検索アルゴリズムと共に使用して、各ストリームの第１の利用可能パケットを突き止めることができ、また復号済み出力データを正しく整列させることができる。両方の方法の組合せを使用することも可能である。
【００６０】
シークするための例示的なアルゴリズムは次のとおりとすることができる。意図されたファイル位置までシークし、第１のパケットを復号し、このパケットがどのストリームに属するかを記録する（ファイルヘッダ属性は、何個のストリームが予期され、どんなストリーム割当てであるか（すなわち左／右前部チャネルにはストリーム０、左／右サラウンドチャネルにはストリーム１など）を示す）。
【００６１】
次に、パケットヘッダ中のスキップフィールドを調べて、現在のストリームの次パケットがどこにあるかを知る。また、パケットヘッダ中のタイムスタンプも見て、現在のサンプルがどの時間のものかを知る。次いで、次のパケットヘッダを復号する。このようにして、すべてのストリームのパケットを復号する。次に、同じタイムスタンプを有するすべてのストリームの第１のパケットを使用して、有効としてマークする（すなわちハードウェア再生を開始する）。この時点から、復号プロセスは正常に進行する。
【００６２】
本発明は、ハードウェアとソフトウェアの組合せによって実施することができる。具体的には、ハードウェア中での後処理ステップと共に、モノラルやステレオなどのストリームをマルチチャネルストリームに再編成するためのレイヤをコーデック（ＷＭＡ）に追加することができる。さらに、デコーダは、復号時にストリーム２１１を分離できることが必要になる。
【００６３】
本発明を様々な図の好ましい実施形態に関して述べたが、本発明を逸脱することなく、本発明と同じ機能を実施するために、その他の同様の実施形態を用いることもでき、上述した実施形態に修正および追加を行うこともできることを理解されたい。例えば、本出願で述べた本発明は、有線であれ無線であれ任意のコンピューティングデバイスまたは環境に適用することができ、また、通信ネットワークを介して接続され対話する任意の数のこのようなコンピューティングデバイスに適用することができることを、当業者なら理解するであろう。加えて、符号化機能と復号機能は、同じシステム上にある必要はない。さらに、特に無線ネットワークデバイスの数が急増し続けているため、ハンドヘルドデバイスオペレーティングシステムやその他のアプリケーション特有オペレーティングシステムを含めて、様々なコンピュータプラットフォームが企図されることも強調しておくべきである。さらに本発明は、複数の処理チップまたはデバイス中で、あるいはそれらにまたがって実施することができ、記憶も同様に複数のデバイスにまたがって達成することができる。したがって、本発明はいずれか１つの実施形態に限定されるべきではなく、添付の特許請求の範囲に従った広さおよび範囲で解釈されるべきである。
【図面の簡単な説明】
【００６４】
【図１】本発明の態様を実施することのできる例示的なコンピューティング環境を示すブロック図である。
【図２】本発明による符号化プロセスを示す図である。
【図３】本発明による復号プロセスを示す図である。
【図１】
2006054039.tif 000003
【図２】
2006054039.tif 000004
【図３】
2006054039.tif 000005
【外国語明細書】
2006054039000001.pdf