(57)【特許請求の範囲】
【請求項１】
オーディオシーケンスを加入者に送信するための複数の記憶装置を有する連続メディアサーバシステムにおける方法であって、
複数の記憶装置にわたって第１のオーディオシーケンスをストライプし、
第１のオーディオシーケンスが加入者に送信されるレートを特定する第１のデータレートを連続メディアサーバシステムのアドミニストレータから受信し、
記憶装置から加入者に第１のオーディオシーケンスを第１のデータレートで送信し、
複数の記憶装置にわたって第２のオーディオシーケンスをストライプし、
第１のデータレートと異なり、第２のオーディオシーケンスが加入者に送信されるレートを特定する、アドミニストレータから第２のデータレートを受信し、
第２のオーディオシーケンスを記憶装置から加入者に第２のデータレートで送信する、
ステップを含む方法。
【請求項２】
データレートが、オーディオシーケンスがひずみなしで演奏されるように、オーディオシーケンスが加入者に送信される最小のレートを特定する請求項１に記載の方法。
【請求項３】
オーディオシーケンスをストライプする前に、エラートラレントフォーマットにおいてオーディオシーケンスをエンコーディングするステップをさらに含む請求項１に記載の方法。
【請求項４】
連続メディアサーバシステムが、インターネットを介して加入者に接続され、オーディオシーケンスを送信するステップが、オーディオシーケンスをインターネットを介して加入者に送信することを含む請求項１に記載の方法。
【請求項５】
連続メディアサーバシステムが静止画を有し、オーディオシーケンスを送信するステップが静止画を加入者に送信することを含む請求項１に記載の方法。
【請求項６】
オーディオシーケンスをクライアントに送信するための複数の記憶装置を有する連続メディアサーバシステムにおける方法であって、
複数の記憶装置にわたって第１のオーディオシーケンスをストライプし、
第１のオーディオシーケンスがクライアントに送信されるレートを特定する第１のデータレートをクライアントから受信し、
第１のオーディオシーケンスを記憶装置からクライアントに第１のデータレートで送信し、
複数の記憶装置にわたって第２のオーディオシーケンスをストライプし、
第１のデータレートと異なり、第２のオーディオシーケンスがクライアントに送信されるレートを特定する、クライアントから第２のデータレートを受信し、
第２のオーディオシーケンスを記憶装置からクライアントに第２のデータレートで送信する、
ステップを含む方法。
【請求項７】
オーディオシーケンスを加入者に複数のパケットとして送信するための複数の記憶装置を有する連続メディアサーバシステムにおける方法であって、
第１のオーディオシーケンスを複数の第１のブロックに分割し、
複数の記憶装置にわたって第１のブロックをストライプし、
第１のオーディオシーケンスを送信するために使用される各第１のパケットにおけるデータの最大量を特定する連続メディアサーバシステムのアドミニストレータから第１のパケットサイズを受信し、
各第１のパケットが第１のパケットサイズ以下のデータ量を包含する複数の第１のパケットに第１のブロックを分割し、
連続メディアサーバシステムから加入者に第１のパケットを送信し、
第２のオーディオシーケンスを複数の第２のブロックに分割し、
複数の記憶装置にわたって第２のブロックをストライプし、
第１のパケットサイズと異なり、第２のオーディオシーケンスを送信するのに使用される各第２のパケットにおけるデータの最大量を特定するアドミニストレータから第２のパケットサイズを受信し、
各第２のパケットが第２のパケットサイズ以下のデータの量を包含する、複数の第２のパケットに第２のブロックを分割し、
連続メディアサーバシステムから加入者に第２のパケットを送信する、
ステップを有する方法。
【請求項８】
連続メディアサーバシステムがインターネットを介して加入者に接続されパケットを送信することがインターネットを介して加入者にパケットを送信することを含む、請求項７に記載の方法。
【請求項９】
連続メディアサーバシステムが静止画を有し、オーディオシーケンスを分割するステップがオーディオシーケンスと静止画の両方を複数のブロックに分割することを含む、請求項７に記載の方法。
【請求項１０】
複数のパケットとしてクライアントにオーディオシーケンスを送信するための複数の記憶装置を有する連続メディアサーバシステムにおける方法であって、
第１のオーディオシーケンスを複数の第１のブロックに分割し、
複数の記憶装置にわたって第１のブロックをストライプし、
第１のオーディオシーケンスを送信するのに使用される各第１のパケットにおけるデータの最大量を特定するクライアントから第１のパケットサイズを受信し、
各第１のパケットが第１のパケットサイズ以下のデータ量を包含するような、複数の第１のパケットに第１のブロックを分割し、
連続メディアサーバシステムからクライアントに第１のパケットを送信し、
第２のオーディオシーケンスを複数の第２のブロックに分割し、
複数の記憶装置にわたって第２のブロックをストライプし、
第１のパケットサイズと異なり、第２のオーディオシーケンスを送信するのに使用される各第２のパケットにおけるデータの最大量を特定するクライアントから第２のパケットサイズを受信し、
各第２のパケットが第２のパケットサイズ以下のデータの量を包含する、複数の第２のパケットに第２のブロックを分割し、
連続メディアサーバシステムからクライアントに第２のパケットを送信する、ステップを有する方法。
【請求項１１】
オーディオシーケンスを分割する前に、オーディオシーケンスをエラートレラントフォーマットにエンコーディングするステップを更に有する、請求項１０に記載の方法。
【請求項１２】
エラートレラントフォーマットがパリティエンコーディングスキームである、請求項１１に記載の方法。
【請求項１３】
複数の記憶装置にわたって第１のオーディオシーケンスをストライプし、
第１のオーディオシーケンスが第１の加入者に送信されるレートを特定する第１のデータレートを受信し、
第１のオーディオシーケンスに関して第１の加入者から第１のリクエストを受信し、
記憶装置から第１の加入者に第１のオーディオシーケンスを第１のデータレートで送信し、
複数の記憶装置にわたって第２のオーディオシーケンスをストライプし、
第２のオーディオシーケンスが第２の加入者に送信されるレートを特定し、第１のデータレートと異なる、第２のデータレートを受信し、
第２のオーディオシーケンスに関して第２の加入者から第２のリクエストを受信し、
記憶装置から第２の加入者に第２のオーディオシーケンスを第２のレートで送信する、
ステップを実行することによって、複数の記憶装置を有する連続メディアサーバシステムがコンテンツを、第１のオーディオシーケンスを第１の加入者に送信し、第２のオーディオシーケンスを第２の加入者に送信することができるコンピュータ読み取り可能媒体。
【請求項１４】
第１のオーディオシーケンスを複数の第１のブロックに分割し、
複数の記憶装置にわたって第１のブロックをストライプし、
第１のオーディオシーケンスを送信するために使用される各第１のパケットに包含されたデータの最大量を特定する第１のパケットサイズを受信し、
第１のオーディオシーケンスに関して第１の加入者から第１のリクエストを受信し、
各第１のパケットが第１のパケットサイズ以下のデータの量を包含する、第１のパケットに第１のブロックを分割し、
第１のパケットを第１の加入者に送信し、
第２のオーディオシーケンスを複数の第２のブロックに分割し、
複数の記憶装置にわたって複数の第２のブロックをストライプし、
第２のオーディオシーケンスを送信するために使用される各第２のパケットに包含されたデータの最大量を特定し、第１のパケットサイズと異なる、第２のパケットサイズを受信し、
第２のオーディオシーケンスに関して第２の加入者から第２のリクエストを受信し、
各第２のパケットが第２のパケットサイズ以下のデータの量を包含する、第２のパケットに第２のブロックを分割し、
第２のパケットを第２の加入者に送信する、
ステップを実行することによって、複数の記憶装置を有する連続メディアサーバシステムがコンテンツを、第１のオーディオシーケンスを複数の第１のパケットとして第１の加入者に送信し、第２のオーディオシーケンスを複数の第２のパケットとして第２の加入者に送信することができるコンピュータ読み取り可能媒体。
【請求項１５】
第１のオーディオシーケンスを分割する前に、コンテンツが第１のオーディオシーケンスをエラートレラントフォーマットにエンコーディングするステップを実行する、請求項１４に記載のコンピュータ読み取り可能媒体。
【請求項１６】
エラートレラントフォーマットがパリティエンコーディングスキームである、請求項１５に記載のコンピュータ読み取り可能媒体。
【請求項１７】
オーディオシーケンスを加入者に送信するためのインターネットと、
オーディオシーケンスの第１の部分をストアするための第１のサーバによって管理された第１の複数の記憶装置と、
第２のサーバによって管理されたオーディオシーケンスの第２の部分をストアするための第２の複数の記憶装置と、
加入者から要求を受信し、第１の複数の記憶装置及び第２の複数の記憶装置からインターネットを介して加入者にオーディオシーケンスを送信するためのコントローラとを有し、複数の記憶装置にわたって前記オーディオシーケンスの第１の部分はストライプされ、前記オーディオシーケンスの第１の部分が加入者に送信されるレートを特定する第１のデータレートが連続メディアサーバシステムのアドミニストレータから受信され、記憶装置から加入者に前記オーディオシーケンスの第１の部分が第１のデータレートで送信され、前記オーディオシーケンスの第２の部分が複数の記憶装置にわたってストライプされ、前記第１のデータレートと異なり、前記オーディオシーケンスの第２の部分が加入者に送信されるレートを特定する、アドミニストレータから第２のデータレートを受信し、前記オーディオシーケンスの第２の部分を記憶装置から加入者に第２のデータレートで送信するデータ処理システム。
【請求項１８】
複数のエントリを有するデータ構造を包含し、前記データ構造が、複数のオーディオシーケンスの各々をオーディオサーバシステムから複数のパケットとして加入者に転送するインターネットを介して、複数の記憶装置にストアされた複数のオーディオシーケンスをオーディオサーバシステムから加入者に送信するのに使用され、
各エントリが、
複数のオーディオシーケンスのうちのひとつに対するリファレンスと、
オーディオシーケンスのパケットが加入者に送信されるデータレートと、
インターネットを介してオーディオサーバシステムから加入者に送信されるオーディオシーケンスの各パケットに包含されたデータの最大量を特定するパケットサイズとを有し、複数の記憶装置にわたって前記オーディオシーケンスの第１の部分はストライプされ、前記オーディオシーケンスの第１の部分が加入者に送信されるレートを特定する第１のデータレートが連続メディアサーバシステムのアドミニストレータから受信され、記憶装置から加入者に前記オーディオシーケンスの第１の部分が第１のデータレートで送信され、前記オーディオシーケンスの第２の部分が複数の記憶装置にわたっでストライプされ、前記第１のデータレートと異なり、前記オーディオシーケンスの第２の部分が加入者に送信されるレートを特定する、アドミニストレータから第２のデータレートを受信し、前記オーディオシーケンスの第２の部分を記憶装置から加入者に第２のデータレートで送信するコンピュータ読み取り可能記憶装置。
【請求項１９】
オーディオシーケンスを複数のパケットとして加入者に送信するためのパケット交換網と、
複数のブロックとしてオーディオシーケンスをストアするための複数の記憶装置と、を有し、
サーバが、
オーディオシーケンスをブロックに分割し、記憶装置にわたってブロックをストライプするための第１のコンポーネントと、
オーディオシーケンスが加入者に送信されるレートを特定するデータレートを受信し、各パケットにおけるデータの最大量を特定するパケットサイズを受信し、オーディオシーケンスに関して加入者からリクエストを受信する、第２のコンポーネントと、
各パケットがパケットサイズ以下のデータの量を包含するパケットにブロックを分割し、パケット交換網を介してパケットをデータレートで加入者に送信するための第３のコンポーネントとを更に有する連続メディアサーバシステム。
【請求項２０】
少なくともひとつのブロックが静止画の一部分を包含する、請求項１９に記載の連続メディアサーバシステム。
【請求項２１】
パケット交換網がインターネットである、請求項１９に記載の連続メディアサーバシステム。
【請求項２２】
オーディオシーケンスをブロックに分割する前に、第１のコンポーネントが、パリティエンコーディングスキームを使用してオーディオシーケンスをエンコードする、請求項１９に記載の連続メディアサーバシステム。
【発明の詳細な説明】
技術分野
本発明は、一般的にはデータ処理システムに関し、特に、低信頼性ネットワークに関するオーディオサーバシステムに関する。
本発明の背景
インターネットは多くの小さなネットワークの相互接続である。各ネットワークは、データをパケットの形態で転送し、パケットスイッチングの周知の技術を使用する。かかる相関性のために使用されるプロトコルは、インターネットプロトコル（Internet Protocol）である。インターネットを使用する人々の数が絶えず増加するので、電子メールのようなインターネットで提供されるサービスの数もまた、要求に見合うように増加している。従って、インターネットで使用するための新しいサービスを作り出すことは望ましい。しかしながら、インターネットで使用するための新しいサービスを作り出す際に、重大な問題が克服されるべきである。即ち、インターネットは、高い割合のパケットロスがあり、それ自体では、いかなる新しいサービスもこの問題を克服するように実行されるべきである。
本発明の概要
ここに記載するオーディオサーバシステムは、オーディオシーケンス、混合オーディオ、静止画シーケンスをインターネットを介して加入者に送信する。インターネットは、高い割合のパケット損失を有する低信頼性ネットワークである。インターネットは高い割合のパケット損失を有するけれども、オーディオサーバシステムは、パケット損失の影響を低減させるためにエラートレラント・ファイル・フォーマットの使用を提供し、オーディオサーバシステムは、パケット損失の数を低減するように可変レートデータストリームの使用をすることができる。
インターネットの高い割合のパケット損失を克服するために、オーディオサーバシステムは、ファイルがディスクに書き込まれると同時に、ファイルのパケットサイズを特定することができる。転送に先立ってパケットサイズを特定することにより、パリティエンコーディングのような多数の周知のエラー訂正スキームに従ってファイルをエンコードすることができる。かかるエラー訂正スキームの使用は、損失パケットの復元を提供し、その結果、オーディオストリームはパケット損失に影響されない。換言すれば、エラー訂正スキームを使用することによって、加入者は、受信されたパケットのコンテンツから損失パケットを復元することができる。
オーディオ及び混合オーディオストリームは、変化するデータレートを典型的に有するオーディオサーバシステムによって送信される。幾つかの在来のサーバシステムがオーディオ及び混合オーディオデータを送信することができるけれども、全てのデータは、サーバ・アイドル・タイムを導く同じデータレート（即ち、最大データレート）で送信される。即ち、在来のシステムは、リザーブされ、固定された時間までデータのブロックとしてデータを送信し、小さなデータレートを有するブロックは、データを送信するためのリザーブされた時間より小さい量を要求する。それ故、この状況では、データを送信した後、在来のサーバシステムは次の時間まで怠けて待つ。アイドルタイムを含むサーバシステムは、それ自身が問題ではないが、かかるアイドルタイムを招くために、サーバシステムは、データのバーストを送信するようにときどき参照される予定よりも早いレートでデータを転送しなければならなかった。データのバーストを転送することは、それらがデータ損失を導く十分なバッファ能力を有しないので、データのレシーバを困惑させる。更に、インターネットは十分なバッファ能力を有するので、データのバーストを送信することはインターネットによってデータ損失における増加を時々導く。もちろん、かかるデータ損失を減少させることが望ましい。ここに記載するオーディオサーバシステムは、データ損失を低減させるサーバアイドルタイムを提供するように、可変データレートでストリームを送信する能力を有する。オーディオサーバシステムは、ファイルがディスクに書き込まれ、次いで、このデータレートでデータを転送すると同時に、データを特定することによってこの能力を提供する。
本発明の第１の態様によれば、連続メディアサーバシステムにおける方法を提供する。連続メディアサーバシステムは、オーディオシーケンスを加入者に送信するための複数の記憶装置を有する。連続メディアサーバシステムは、複数の記憶装置にわたってオーディオシーケンスをストライプし、オーディオシーケンスが加入者に送信されるレートを特定し、記憶装置から同じデータレートで加入者にオーディオシーケンスを送信する。
本発明の第２の態様によれば、連続メディアサーバシステムにおける方法を提供する。連続メディアサーバシステムは、オーディオシーケンスを加入者に送信するための複数の記憶装置を有する。連続メディアサーバシステムはオーディオシーケンスを複数のブロックに分割し、ブロックを複数の記憶装置にわたってストライプする。連続メディアサーバシステムはまた、オーディオシーケンスの各部ロックを送信するために使用される各パケットに包含されたデータの最大量を特定するパケットサイズを受信し、ブロックを記憶装置から加入者に送信し、その結果、ブロックの各々は、パケットサイズと等しい又はパケットサイズよりも小さいデータの量を包含する各パケットと一緒に複数のパケットとして送信される。
【図面の簡単な説明】
図１は、本発明の好ましい実施形態のオーディオサーバシステムのブロック図である。
図２は、図１のオーディオステーションのより詳細なブロック図である。
図３は、オーディオサーバシステムによって実行されるステップの高レベルビューを表すフローチャートである。
図４は、オーディオシーケンスがオーディオサーバシステムにストアされる詳細な方法を示すフローチャートである。
図５Ａは、各オーディオシーケンスに関するオーディオサーバシステムによって維持されたデータ構造を示す。
図５Ｂは、オーディオサーバシステムによって利用されるエラー訂正スキームを示す。
図６は、３つのディスクドライブシステムのバンド幅をオーディオサーバシステムによってスケジューリングすることを示すフローチャートである。
図７は、オーディオサーバシステムによって加入者のリクエストにサービスを割り当てられるべきバンド幅ユニットを配置するために実行されるステップを示すフローチャートである。
図８は、オーディオサーバシステムによって維持されるデータ構造の例を示す図である。
本発明の詳細な説明
本発明の好ましい実施形態は、オーディオシーケンス、及び、オーディオと静止画シーケンスとの混合（以後、「混合オーディオ」という。）をインターネットを介して加入者へ送信する。インターネットは高い割合のパケットロスを有するけれども、好ましい実施形態が、エラートレラント・ファイルフォーマットを使用することにより、パケットロスの影響を低減させ、好ましい実施形態はまた、種々のレートのデータストリームを使用することによってパケットロスの数を低減させる。この開示で記載されたシステムは、オーディオサーバシステムとして知られている。オーディオサーバシステムは、データが保証レートで消費者に送信される連続的なメディアサーバシステムのタイプである。オーディオサーバシステムを使用すると、加入者は、オーディオシーケンス又は混合オーディオシーケンスのいずれかをリクエストすることができ、オーディオサーバシステムはリクエストされたシーケンスを保証レートで加入者に送信する。
インターネットで使用されるためには、オーディオサーバシステムはインターネットの高いパケットロスを不具にしなければならない。特に、インターネットは、１０パケット中１つと３パケット中１つとの間で失敗する可能性がある。この問題を克服するために、オーディオサーバシステムによって、ファイルがディスクに書き込まれると同時にファイルのパケットサイズが特定されることができる。転送の進行中に、パケットサイズを特定することによって、以下で更に議論するパリティエンコーディングのような周知の多数のエラー訂正スキームに従ってファイルがエンコードされることができる。かかるエラー訂正スキームの使用は、損失パケットの復元を提供し、その結果、オーディオストリームがパケットロスによって変化しない。換言すれば、エラー訂正スキームを使用することによって、加入者は、受信されるパケットのコンテンツから損失パケットを復元することができる。
オーディオサーバシステムによって送信されるオーディオ及び混合オーディオストリームは典型的には、異なるデータレートを有する。幾つかの慣用サーバシステムがオーディオ及び混合オーディオデータを送信することができるけれども、全てのデータは、サーバアイドルタイムに通じる、同じデータレート（即ち、最高データレート）で送信されうる。即ち、慣用サーバシステムは、予約され固定された時間、データのブロックとしてのデータ、及び、データを送信するための予約された時間よりも少なく要求された遅いデータレートを有するブロックを送信する。それ故、この状況では、データを送信した後、慣用サーバシステムは次の時間までアイドル状態で待機する。アイドル時間を受けるサーバシステムが、かかるアイドル時間を受けるためのそれ自身の問題でないけれども、サーバシステムは、データのバーストを送信するときに時々参照され、意図されるよりも速いレートでデータを送信しなければならない。それらが充分なバッファ能力を有せず、それによってデータ損失に至るならば、データのバーストを送信することがデータの受信者を困惑させる。更に、インターネットが不十分なバッファ能力を有するので、データのバーストを送信することはインターネットによるデータ損失の増加を時々導く。もちろん、かかるデータ損失を低減することが望ましい。以下に記載するオーディオサーバシステムは、データ損失を低減するサーバアイドルタイムを防ぐように、種々のデータレートでストリームを送信する能力を有する。オーディオサーバシステムは、ファイルがディスクに書き込まれ、次いで、このデータレートでデータを転送する時間でデータレートを特定することによって、この能力を提供する。
オーディオサーバシステムを図１に示す。オーディオサーバシステムは、加入者がオーディオステーション１０から転送された特定のオーディオシーケンスを聴く（又は、混合オーディオシーケンスを聴き且つ見る）ための時間のいかなるポイントでも要求することができるシステムである。オーディオステーション１０は、インターネット１２を介してオーディオシーケンスに関するデータを加入者１４に転送する。あるいは、インターネットの代わりに、別の適当な相互接続機構が使用されうる。オーディオステーション１０は好ましくは、加入者１４に転送され、リアルタイムで聴かれ且つ見られる、異なるオーディオ又は混合オーディオの大多数を使用可能にさせる。今後明瞭の目的で、オーディオサーバシステムの記載は、オーディオシーケンスのみに関して提供するけれども、混合オーディオシーケンスも同様に関連しうることは意図している。言い換えれば、以下で記載する処理は、オーディオシーケンスに関して記載するが、混合オーディオシーケンスに関しても同様に適用する。更に、他のデータがビデオデータ及び他の形態のマルチメディアデータを含む好ましい実施形態のオーディオシステムによって使用されることが当業者にとって明らかであろう。
オーディオサーバシステムでは、加入者によって聴かれるオーディオシーケンスの選択は、予めスケジュールされていない。むしろ、選択は加入者の要求によってスケジュールされる。加入者の必要性は、他の加入者が聴いているオーディオシーケンスを選択しないことであり、それどころか、加入者は入手可能ないかなるオーディオシーケンスから選択することができる。更に、各加入者は、オーディオシーケンスを聴き始めることを願うとき、選択する。多数の異なる加入者１４が、同じオーディオシーケンスの異なる部分を並行に聴くことができる。加入者は、聴き始めることを望み、全体のシーケンスが演奏される前にシーケンスを聴くことを止めることができる場所を選択することができる。
図２は、より詳細に、オーディオステーション１０を示すブロック図である。オーディオステーション１０は、加入者１４（図１）に対してオーディオシーケンスの転送をスケジューリングするために応答可能なコントローラ１６を含む。コントローラ１６は、幾つかのサブシステム１８Ａ，１８Ｂ及び１８Ｃを制御し、サブシステムから加入者１４への出力をスケジュールし且つ差し向けるために応答可能である。コントローラは、システムのフォルトトレランスを向上させるバックアップコントローラを提供するために複製されうる。図２にはたった３つだけのサブシステムが示されているが、ほとんどの例では、より多くの数のサブシステムを採用するのがより好ましい。３つだけのサブシステムが、簡単のために図２に示されているに過ぎない。
各サブシステム１８Ａ，１８Ｂ及び１８Ｃは、記憶装置（２２Ａ，２４Ａ），（２２Ｂ，２４Ｂ）及び（２２Ｃ，２４Ｃ）のそれぞれのパーツを制御するために応答可能なマイクロプロセッサ２０Ａ，２０Ｂ及び２０Ｃを含む。加入者１４が入手可能なオーディオシーケンスに関するデータは、記憶装置２２Ａ，２４Ａ，２２Ｂ，２４Ｂ，２２Ｃ及び２４Ｃにストアされる。各サブシステム１８Ａ，１８Ｂ及び１８Ｃは２つの記憶装置を含む必要はなく、むしろ、各サブシステムは１つの記憶装置だけを含み、若しくは、代替として、２つよりも多くの記憶装置を含みうる。マイクロプロセッサ２０Ａ，２０Ｂ及び２０Ｃは、記憶装置にストアされたオーディオシーケンスに関するデータを加入者１４に転送するために、コントローラ１６と協同して応答可能である。
記憶装置２２Ａ，２４Ａ，２２Ｂ，２４Ｂ，２２Ｃ及び２４Ｃは、例えば、磁気ディスクドライブ又は光ディスクドライブであってよい。どんな適当な記憶装置をもオーディオシーケンスに関するデータをストアするために使用することができることは当業者にとって明らかであろう。例えば、ＲＡＭ、マスクＲＯＭ，ＥＰＲＯＭ及びフラッシュＥＰＲＯＭが本発明において、オーディオシーケンスをストアするのに使用することができる。
図３は、本発明の好ましい実施形態によって実行されるステップのフローチャートである。まず、オーディオシーケンスを、オーディオサーバシステムの記憶装置２２Ａ，２４Ａ，２２Ｂ，２４Ｂ，２２Ｃ及び２４Ｃ（図２）にわたってストアする（即ち、ストライプされている）（図３のステップ４２）。オーディオシーケンスの複数のコピーがオーディオステーション１０にストアされる。このステップは、オーディオステーション１０にストアされたオーディオシーケンスの各コピーに関して１回だけ実行される見込みがあり、各加入者に対してリピートはされない。オーディオシーケンスのデータをストライプするための動機は、データが、連結された量の時間における記憶装置による出力である効率を増加させ、各記憶装置のロード要求のバランスをとることである。
図４は、記憶装置２２Ａ，２４Ａ，２２Ｂ，２４Ｂ，２２Ｃ及び２４Ｃにわたってオーディオシーケンスをストライプするためにオーディオサーバシステムによって実行されるステップを示すフローチャートである（即ち、図３のステップ４２を実行することである）。実行される第１のステップは、そのオーディオシーケンスに関するデータ構造における各オーディオシーケンスに関するデータレート及びパケットサイズをストアすることである（ステップ５３）。オーディオサーバシステムのアドミニストレータは、、オーディオシーケンスが演奏されるべきレートを知っており、データレートとしてこのレートを特定する（例えば、８ｋｂ／ｓ）。データレートは、オーディオシーケンスが送信されるべき最低のレートを識別する。オーディオシーケンスをより高速に送信することができるけれども、データレートよりも遅くオーディオシーケンスを送信することは、その演奏の品質に対して否定的な影響を与えうる（即ち、サウンドがひずみうる）。パケットサイズは、エラー訂正スキームの使用を容易にするために以下に記載するような仕方でアドミニストレータによって特定される。データレート及びパケットサイズの双方は、図５Ａに示すデータ構造にストアされる。図５Ａでは、データ構造５００は、リファレンス５０２によって参照される特定のオーディオシーケンスによって表される。オーディオシーケンスに対するリファレンス５０２は、例えば、歌のタイトルであって良い。参照されたオーディオシーケンスとの関係は、データレート５０４とパケットサイズ５０６である。データレート５０４は、オーディオシーケンスが演奏される（即ち、加入者に送信される）べきレートを特定する。パケットサイズ５０６は、加入者に送信されるパケットに包含されるべきデータの最大量をインターネット１２を介して特定する。かかるパケットサイズ５０６の使用によって、オーディオシーケンスを備えるエラー訂正スキームの使用を容易にする転送の前に、パケットサイズを知ることができる。データ構造５００が、オーディオシーケンスのサイズのようなオーディオシーケンスに関連する他の情報を包含しうることは、当業者には明らかであろう。
別の実施形態では、データレート及びパケットサイズは、加入者によって特定され、オーディオシーケンスに関するそれらのリクエストを伴って送信される。加入者がデータレートを指定することができることによって、加入者は、それらが充分なバッファ能力を有し、それらがインターネットが増加したデータレートによって影響されないことを知っている、状況において、データをより高速に利用することができうる。加入者がパケットサイズを特定することができることによって、ネットワークが新しいサイズでより良く実行することができることを知るとき、加入者はより大きな又はより小さなパケットサイズを直接リクエストすることができる。複数のオリジナルパケットサイズと同じくらい大きなパケットサイズ、又は、オリジナルパケットサイズの端数がない除数と同じくらい小さいパケットサイズを特定することによって、オーディオサーバシステムのエラー訂正態様は依然として再生されうる。
データレート及びパケットサイズをストアした後、オーディオシーケンスは、インターネット１２を介した転送中の１又はそれ以上の損失が加入者によって許容されるようなエラー訂正スキームを使用して、エンコードされる（ステップ５４）。即ち、多数の周知のエラー訂正スキームのうちの１つを使用して、加入者は、受信されたパケットから損失パケットのコンテンツを復元することができる。かかるエラー訂正スキームの例が、パリティエンコーディングの周知のスキームである。パリティエンコーディングスキームは、パリティパケットが、固定された数のデータパケットの後に送信されることを提供する。例えば、４つのデータパケットエンコーディングスキームは、４つのデータパケットのうちのどの１つのコンテンツをも復元することができるように、充分な情報を包含するパリティパケットに続く４つのデータパケットを転送する。４つのデータパケットの使用は単なる例示であり、当業者には、それ以上又はそれ以下のデータパケットを使用することができることが明らかであろう。パリティエンコーディングスキームに関するデータをエンコーディングする際に、オーディオシーケンスは、各パケットがパケットサイズ５０６に等しいデータの量を包含する多数のパケットに分割される。各順次の４つのデータパケットに関して、パリティパケットは、ビットが４つのデータパケットにおけるビットの排他的論理和を表すように生成される。即ち、同じビットを有する４つのデータパケットにおける各ビットが一緒に排他的論理和がなされ、このブール演算の結果は、パリティパケットの対応ビット配置にストアされる。パリティ・エンコーディング・スキームを、４つのデータパケット５０８，５１０，５１２及び５１４がパリティパケット５１８を生成するために一緒に排他的に論理和５１６がとられることを示す図５Ｂに示す。このパリティエンコーディングスキームを使用するとき、４つのデータパケット５０８，５１０，５１２及び５１４とパリティパケット５１８との転送中ならば、エラーは、データパケット５０８が加入者に到着せず、その接続が復元されないようなことが生じる。かかる復元が、パリティパケット５１８と受信されたデータパケット５１０，５１２及び５１４を排他的論理和をとることによって生じ、その結果データパケット５０８のコンテンツとなる。パリティエンコーディングスキームは、インターネット１２の著しいパケット損失を克服するのを助ける。
パリティエンコーディングに加え、他のエンコーディングスキームが、パケット損失の影響を小さくし得るのに役立ちうる。即ち、静止画を送信するとき、データは、受信したデータを利用可能にするような仕方でパケットされうる。例えば、静止画が、各パケットがピクチャのひとつの四角の領域にストアされるようにパケットされるならば、パケットが損失したとき、受信されたピクチャは明らかなホールを有するであろう。しかしながら、他のエンコーディングスキームは、この影響を小さくするのに使用されうる。例えば、静止画が１２パケットとして送信されるならば、各パケットは各１２番目の列のピクセルに関するデータを包含する。従って、パケットが損失したならば、受信されたピクチャはほとんど顕著でない損失で依然として使用することができる。更に、加入者は、データの損失を顕著でなくさせる紛失列（missing rows）に包含されたデータを見積もるシステムを有する。好ましい実施携帯のオーディオサーバシステムと関連して損失データの影響を小さくするように利用されうる多数の他のエンコーディングスキームが当業者にとって明らかであろう。
データをエンコーディングした後、たとえ、それが多数のグループのデータパケット及び関連したパリティパケットを示すとしても、データはひとつの連続したストリームのデータとして処理される。次いで、この連続ストリームのデータは、多数のシーケンシャルブロックとしてみられる。ブロックサイズは可変であるが、典型的には、ブロックは６４キロバイト乃至４メガバイトのデータを含む。ブロックサイズは、越えないように上限によって縛られている。これらのシーケンシャルブロックは、次いで、ステップ５５−５８のサブシステム１８Ａ，１８Ｂ及び１８Ｃの全ての記憶装置にわたってストライプされる。オーディオシーケンスの第１のブロックは、指定された記憶装置にストアされる（ステップ５５）。上述したように、オーディオシーケンスのひとつ以上のコピーが記憶装置にわたってストライプされうることは理解されるべきである。そのようなものとして、オーディオシーケンスの各ブロックがストアされるひとつ以上の記憶装置であり得る。オーディオシーケンスの第１のブロックが指定された記憶装置にストアされた後、オーディオシーケンスに関するデータのブロックの全てが既に記憶装置にストアされてしまっているかどうか判断される（ステップ５６）。もしそうでなければ、オーディオシーケンスに関するデータの次のブロックは記憶装置の所定のシーケンスにおける次の記憶装置にストアされる（ステップ５８）。オーディオシーケンスに関するデータの各連続ブロックは所定のシーケンスにおける次の記憶装置にストアされる。次いで、ステップ５６及び５８は、オーディオシーケンスに関する全てのデータが記憶装置にわたってストアされるまで繰り返される。所定のシーケンスは、シーケンスの終わりが到達するとき、はじめに巻き戻される。このプロセスの結果として、オーディオシーケンスに関するデータは記憶装置にわたってストライプされる。図４に示したステップは、本発明の好ましい実施形態のオーディオサーバシステムにストアされる各オーディオシーケンスについて実行される。
オーディオシーケンスをストアする図３のステップ４２の終了後、オーディオステーション１０はオーディオシーケンスに対して聴かれる加入者のリクエストを受信する（ステップ４４）。別の実施形態では、このステップのパートとして、データレート及びパケットサイズの両方が、加入者から受信され、データ構造５００にストアされる。加入者リクエストに応答して、オーディオサーバシステムは、加入者のリクエストをサービスするために入手可能な出力バンド幅を利用するやり方を判断する。このコンテキストで使用されるようなバンド幅は、オーディオシーケンスに関するデータを保持する（固定されたタイムフレームに関する）記憶装置の入力／出力能力を参照することを意図する。オーディオサーバシステムは、出力バンド幅（即ち、オーディオシーケンスを保持する記憶装置からデータを読み込むこと）に関連する実施に関して記載するが、本発明がまた入力バンド幅（即ち、オーディオシーケンスデータを記憶装置に書き込むこと）にも更に適用することができることは当業者には明らかであろう。入手可能なバンド幅を利用する際の第１のステップは、オーディオシーケンスにおいて聴かれるべき最初のブロックがストアされるドライブを判断することである（ステップ４６）。加入者がシーケンスの初めからのオーディオシーケンスを聴くならば、最初のブロックはシーケンスにおける第１のブロックである。しかしながら、加入者がある中間点でオーディオシーケンスの初めを聴きたいと望む場所で、最初のブロックは、加入者が聴くことを望む第１のブロックである。オーディオサーバシステムは、入手できるオーディオシーケンスの各々が始まる記憶装置のレコード（より詳細は以下で記載する）を維持し、更に一般的には、加入者によって聴かれるべき最初のブロックを配置するための十分な知識を有する。この情報は、図３のステップ４６を実施するのに利用される。
聴かれるべきリクエストされたオーディオシーケンスの最初のブロックを保持する記憶装置がいったん識別されたならば（即ち、ステップ４６）、オーディオサーバシステムは、リクエストされたオーディオシーケンスのデータをリクエストした加入者に転送するのに使用され得る次の自由なバンド幅ユニットを見つける（ステップ４８）。バンド幅ユニットは、オーディオサーバシステムのバンド幅の割り当てのユニットである。各記憶装置に関するスケジューリングは、タイムスロットのカラムで行われる。各カラムは、繰り返すシーケンスにおける多数のタイムスロットを包含する。各タイムスロットは、データのブロックを出力するために記憶装置に関して十分な時間で縛られる。バンド幅ユニットは、タイム、スロットの各カラムからのタイムスロットを有する。バンド幅ユニットの各タイムスロットは、オーディオシーケンスのデータのブロックを出力する異なる記憶装置と関連する。データのブロックが記憶装置にわたってストライプされるので、データの連続ブロックは、バンド幅ユニットのタイムスロットのシーケンス中、記憶装置の所定のシーケンスから読み込まれる。タイムスロットは、マイクロプロセッサ２０Ａ，２０Ｂ及び２０Ｃ、若しくは、他の適当なメカニズムによって生成される（図２）。
タイムスロットのカラム、及び、バンド幅ユニットの通知は、多分、具体例の仕方によって最もよく説明することができるであろう。加入者は、バンド幅ユニットによってスケジュールされる。換言すれば、それらは、各カラムにおいて同じ数のタイムスロットを生成する。図６は、３つの記憶装置に関して７つの加入者のスケジューリングを示す（例えば、ディスク０、ディスク１及びディスク２）。図６に示した長方形は、タイムスロットである。図６の数字１乃至７は、それぞれのカラム０，１及び２におけるタイムスロットに対応する。共通のバンド幅ユニットのタイムスロットは、同じ数を全て有する。カラム０，１及び２はお互いに関して全て一時的にオフセットであるが（即ち、図６のタイムユニット）、各カラムは、タイムスロットの同じシーケンスを有する。図６に示したように、ディスクドライブ０は、各加入者のシーケンスのはじめを、バンド幅１の論理ユニットが割り当てられている加入者にサービスする。図６の例では、バンド幅ユニット１は、カラム０，１及び２に１と名付けられたタイムスロットを包含する。カラム０のスロット１中、ディスクドライブ０はオーディオシーケンスに関するデータのブロックを、バンド幅ユニット１が割り当てられた第１の加入者に出力しはじめる。更に、タイムユニット２で、ディスクドライブ２は、カラム２のタイムスロット１中、オーディオシーケンスに関するデータの次のブロックを加入者に出力する。この例において記憶装置の予め定義されたシーケンスは、ディスクドライブ０、ディスクドライブ１及びディスクドライブ２であり、シーケンスはディスクドライブ２からディスクドライブ０に巻き戻される。上述したように、図３のステップ４８におけるオーディオサーバシステムは、所望のオーディオシーケンスを加入者に転送するために、加入者に割り当てられた次の自由なバンド幅ユニットを見つける。特に、オーディオサーバシステムは、聴かれるべきオーディオシーケンスの最初のブロックを保持する記憶装置に次の自由なタイムスロットを見つける。他のカラムにおけるスケジューリングは、この記憶装置に関するカラムのスケジューリングを備えるロックステップに続く。
図７は、ステップ４８で次の自由なバンド幅ユニットを見つけるために、オーディオサーバシステムによって実行されるステップのフローチャートである。図７のステップ内を調べる前に、バンド幅ユニットを監視するのをアシストするためのシステムによって維持されたデータ構造をはじめに紹介するのに役立つ。特に、好ましい実施形態は、システムにおけるバンド幅の論理ユニットの各々に関するアレイ、線形リスト、又は、ツリー（図８）のようなデータ構造６８を維持する。各バンド幅ユニットに関するデータ構造６８にエントリを提供する。データ構造は、メモリ又は他のデバイスにストアされうる。図８に示された例では、１６のバンド幅ユニットがある。各エントリは、バンド幅ユニットが現在割り当てられた加入者に対するポインタか、バンド幅ユニットが既に割り当てられていないことを示すヌルポインタのいずれかを保持する。この構造はまた、タイムスロットの各カラムが同じシーケンスに続くので、加入者に対するタイムスロットの割り当てを保持するように見える。
図７に示すように、自由なバンド幅ユニットを見つける際の第１のステップは、現在のタイムフレームならば、次に使用することができる第１のバンド幅ユニットを決定するために、計算を実行することである。自由なバンド幅ユニットが見つけられるときと、自由な論理バンド幅ユニットが決定を説明する必要がある出力データに実際に使用されるときとの間に、固有の遅延がある。図７のステップ６０では、本発明は、マイクロプロセッサ２０Ａ，２０Ｂ及び２０Ｃと、更に考慮されるべき次のバンド幅ユニットを配置する際に読まれるべきデータのブロックに関する遅延との間に、クロック細分性・コミュニケーション遅延を説明する。この計算ならば、オーディオサーバシステムは、（バンド幅ユニットが既に割り当てられているならば）リクエストされたオーディオシーケンスを加入者に出力するのに使用されるべき第１のバンド幅ユニットを決定する。見つけられたバンド幅ユニットは調査され、バンド幅が自由かどうか判断される（ステップ６２）。それ故、図７のステップ６２では、データ構造６８は、それがヌルエントリを保持するかどうか判断するために、見つけられたバンド幅ユニットに関して調査される。見つけられたバンド幅ユニットに関するエントリがヌルエントリを保持しているならば、見つけられたバンド幅ユニットは自由であり、使用される（ステップ６６）。一方、見つけられたバンド幅ユニットが自由でなければ（即ち、それが加入者に対してポインタを保持している）、次のバンド幅ユニットに関するエントリは、それが自由かどうか判断するために調査される（ステップ６４）。言い換えれば、データ構造６８（図８）に保持されたシーケンスにおける次のバンド幅ユニットに関するエントリが調査される。次いで、ステップ６２は上述したように繰り返される。このプロセスは、自由なバンド幅ユニットが見つかるまで繰り返される。このアプローチを採用することによって、オーディオサーバシステムは、入手可能なバンド幅のいかなる自由な部分が過度の遅延なしで加入者に割り当てられ得ることを仮定する。
いったん自由なバンド幅ユニットが見つかったならば、加入者は自由なバンド幅ユニットが割り当てられ、オーディオシーケンスのデータのブロックはシーケンスに転送される（図３のステップ５０）。ブロックは多数のパケットに分割され、各パケットはデータ構造５００のパケットサイズ５０６エントリに特定されたデータより多くない量を包含し、パケットは特定のデータレート５０４でオーディオサーバシステムによって送信される。典型的には、オーディオシーケンスの最後のパケットがより少なく包含することを除いて、各パケットはパケットサイズ５０６によって特定されたデータの量を包含する。サイクルは、全てのデータが出力されるまで、若しくは、ユーザがオーディオシーケンスを聴くことを停止するのを要求するまで繰り返される。スケジューリングは、超過時間ユーザがシステムに入ったり去ったりし、ユーザがオーディオシーケンスを聴き始めたり聴くのを止めたりするように動的であることは理解されるべきである。更に、ステップ４４，４６，４８及び５０が以前の加入者ベースで実行されることは理解されるべきである。従って、加入者は所望のデータを受信する。
本発明が、加入者からの記憶装置のデータ又は他のデータソースの書き込みもまた適用できうることは、当業者は理解するであろう。割り当てられたタイムスロットデータが、記憶装置から読み込まれるのではなく、記憶装置に書き込まれる間、スケジューリングをバンド幅ユニットに分割する同じステップが実行される。
本発明を好ましい実施形態を参照して記載したけれども、形態又は詳細において種々の変更が、請求の範囲に定義された本発明の精神及び範囲から逸脱することなく可能であることは当業者には理解されるであろう。例えば、他の記憶装置が使用可能であり、記憶装置の異なる量が使用可能である。更に、記憶装置のシーケンスが示されたものから変化してもよい。また、上述した線形リストとは異なるバンド幅ユニットの割り当てを監視するためのアプローチが用いられ得る。更に、本発明のアプローチはまた、入力バンド幅を保証することに適用される。
【図１】
0003910644.tif 000002
【図２】
0003910644.tif 000003
【図３】
0003910644.tif 000004
【図４】
0003910644.tif 000005
【図５Ａ】
0003910644.tif 000006
【図５Ｂ】
0003910644.tif 000007
【図６】
0003910644.tif 000008
【図７】
0003910644.tif 000009
【図８】
0003910644.tif 000010