(57)【特許請求の範囲】
【請求項１】
複数のコンテンツが連結されたデータストリームを受信する受信手段と、
前記受信されたデータストリームを前記コンテンツごとに区分する区分手段と、
前記区分された各コンテンツを順次再生する再生手段と、
前記受信されたデータストリームを受け取って一時的に保持し、前記データストリームのデータ量が基準値を超えた際に、前記再生手段に出力するバッファ手段と、
前記データストリームのうち最初のコンテンツ以外のコンテンツについては前記基準値を第１基準値に設定し、前記データストリームのうち最初のコンテンツについては前記基準値を第１基準値よりも小さい第２基準値に設定する基準値設定手段と、
前記バッファ手段に保持されている前記データストリームのデータ量を検出する検出手段と、
前記検出手段の検出結果に基づいて、前記再生手段が前記各コンテンツを再生する間隔を調整する調整手段とを備え、
前記データストリーム内の各コンテンツは複数のフレームを含み、
前記バッファ手段が、前記調整手段の指定に応じて前記複数のフレームを受け取り又は出力する複数のバッファを含み、
前記区分手段が、前記受信手段が前記各コンテンツの先頭フレームを受信したか否かを判断し、
前記調整手段が、前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記複数のバッファのうちフレームを出力中のバッファのデータ量が、所定の下限値未満であるか否かを判断する第１の判断手段と、
前記フレームを出力中のバッファのデータ量が前記下限値未満であるとき、前記データを出力中のバッファと異なる他のバッファを、前記コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する受取指定手段と、
前記複数のバッファのうちフレームを受け取り中のバッファのデータ量が、前記基準値または前記下限値を超えたとき、前記データを受け取り中のバッファを、前記フレームを前記再生手段に順次出力する出力バッファに指定する出力指定手段とを含む、ストリーム再生装置。
【請求項２】
複数のフレームを含む複数のコンテンツが連結されたデータストリームを受信する受信手段と、
前記受信されたデータストリームを前記コンテンツごとに区分し、前記受信手段が前記各コンテンツの先頭フレームを受信したか否かを判断する区分手段と、
前記区分された各コンテンツを順次再生する再生手段と、
前記受信されたデータストリームを受け取って一時的に保持し、前記データストリームのデータ量が基準値を超えた際に、前記再生手段に出力する複数のバッファと、
前記バッファに保持されている前記データストリームのデータ量を検出する検出手段と、
前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記複数のバッファのうちフレームを出力中のバッファのデータ量が、下限値未満であるか否かを判断する第１の判断手段と、
前記フレームを出力中のバッファのデータ量が前記下限値未満であると判断されたとき、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量に所定増加量を加算して前記基準値を設定する基準値設定手段と、
前記フレームを出力中のバッファのデータ量が前記下限値未満であると判断されたとき、前記データを出力中のバッファと異なる他のバッファを、前記コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する受取指定手段と、
前記複数のバッファのうちフレームを受け取り中のバッファのデータ量が、前記基準値を超えたとき、前記データを受け取り中のバッファを、前記フレームを前記再生手段に順次出力する出力バッファに指定する出力指定手段とを備える、ストリーム再生装置。
【請求項３】
前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記フレームを出力中のバッファのデータ量が前記下限値よりも大きい上限値を超えているか否かを判断する第２の判断手段をさらに備え、
前記データ量が前記上限値を超えていると判断されたとき、前記基準値設定手段が、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量に所定増加量を加算して前記基準値を設定し、
前記データ量が前記上限値を超えていると判断されたとき、前記受取指定手段が、前記フレームを出力中のバッファと異なる他のバッファを、前記受取バッファに指定する、請求項２に記載のストリーム再生装置。
【請求項４】
前記基準値設定手段が、現在の前記基準値が前記下限値よりも大きいか否かを判断し、現在の前記基準値が前記下限値よりも大きい場合には、現在の前記基準値のまま維持し、現在の前記基準値が前記下限値以下である場合には、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量に所定増加量を加算して前記基準値を設定する、請求項２または３に記載のストリーム再生装置。
【請求項５】
請求項１〜４のいずれかに記載のストリーム再生装置の各手段をコンピュータに実行さ
せる、ストリーム再生プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してストリーミング配信されたデータストリームを再生するストリーム再生装置に関する。
【背景技術】
【０００２】
最近、地上波デジタル放送に代表されるように、放送施設からストリーミング配信される符号化データストリームを一般家庭内の受信装置で受信し、再生するシステムが提供されている。地上波デジタル放送は無線によるストリーミング配信を実現している。
【０００３】
一方、インターネット等のネットワークを介したリアルタイムストリーミング配信技術も開示されている。ネットワークを介したストリーミング配信では、データストリームを構成するパケットの到達レートが不安定になる、いわゆる遅延ゆらぎ（ジッタ）が発生する。受信装置がデータストリームを再生している最中に、遅延ゆらぎが生じてパケットの到達が遅れた場合、受信装置内にバッファリングされたデータストリームが枯渇する場合がある。このとき、再生中のコンテンツは途中で途切れてしまう。
【０００４】
このような再生中のコンテンツの途切れを防止するため、サンプルレートコンバータを利用したり、ＰＬＬ（位相同期回路）の分周逓倍比を変更したりする方法がある。しかしながら、これらの方法は、コンテンツの再生レートを変更するため、再生音が聴感上変化してしまう。特に、複数の異なる曲を連続してストリーミング配信する場合、再生音が変化するのは好ましくない。
【０００５】
また、バッファの基準値を比較的大きく設定することによって、バッファ内のデータストリームが枯渇する可能性を低くすることができる。しかし、バッファの基準値を比較的大きく設定すると、データストリームの最初のコンテンツを再生開始するまでに時間がかかってしまうという新たな問題が生じる。
【０００６】
【特許文献１】特開平１０−２８５１７０号公報
【特許文献２】特開平２００５−１６７４１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の１つの目的は、複数のコンテンツが連結したデータストリームをストリーム再生するとき、最初のコンテンツを迅速に再生開始することができるストリーム再生装置を提供することである。
【０００８】
本発明の別の目的は、複数のコンテンツが連結したデータストリームをストリーム再生するとき、各コンテンツの途中で再生が途切れるのを防止するストリーム再生装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の好ましい実施形態によるストリーム再生装置は、複数のコンテンツが連結されたデータストリームを受信する受信手段と、前記受信されたデータストリームを前記コンテンツごとに区分する区分手段と、前記区分された各コンテンツを順次再生する再生手段と、前記受信されたデータストリームを受け取って一時的に保持し、前記データストリームのデータ量が基準値を超えた際に、前記再生手段に出力するバッファ手段と、前記データストリームのうち最初のコンテンツ以外のコンテンツについては前記基準値を第１基準値に設定し、前記データストリームのうち最初のコンテンツについては前記基準値を第１基準値よりも小さい第２基準値に設定する基準値設定手段とを備える。
【００１０】
最初のコンテンツについてはバッファ手段の基準値が第１基準値よりも小さい第２基準値に設定される。従って、データストリームの最初のコンテンツが再生開始される迄の時間を短縮することができ、迅速に再生開始することができる。一方、最初のコンテンツ以外のコンテンツについてはバッファ手段の基準値が第１基準値に設定されるので、最初のコンテンツ以外のコンテンツの再生途中で途切れる可能性を最初のコンテンツの場合と比較して低くすることができる。
【００１１】
好ましくは、前記バッファ手段に保持されている前記データストリームのデータ量を検出する検出手段をさらに備え、前記最初のコンテンツを再生している際に、前記バッファ手段に保持されている前記データストリームのデータ量が０であることが検出されたとき、前記基準値設定手段が、前記基準値を第１基準値に設定する。
【００１２】
最初のコンテンツの再生時にバッファ手段に保持されているデータ量が０になるのは、バッファ手段に供給されるデータ量が、バッファ手段が再生手段に出力するデータ量よりも少ないからである。そのため、バッファ手段の基準値を第２基準値のままで最初のコンテンツを再生し続けると、再度バッファ手段のデータ量が枯渇する可能性がある。しかし、本例では、２つ目のコンテンツに移る前であっても、バッファ手段に保持されているデータ量が０になった時点で、バッファ手段の基準値を第１基準値に設定することによってこの問題を解決することができる。
【００１３】
本発明の別の好ましい実施形態によるストリーム再生装置は、複数のコンテンツが連結されたデータストリームを受信する受信手段と、前記受信されたデータストリームを前記コンテンツごとに区分する区分手段と、前記区分された各コンテンツを順次再生する再生手段と、前記受信されたデータストリームを受け取って一時的に保持し、前記データストリームのデータ量が基準値を超えた際に、前記再生手段に出力するバッファ手段と、前記バッファ手段に保持されている前記データストリームのデータ量を検出する検出手段と、最初、前記基準値を第１基準値よりも小さい第２基準値に設定し、前記バッファ手段に保持されている前記データストリームのデータ量が０であることが検出されたとき、前記基準値を第１基準値に設定する基準値設定手段とを備える。
【００１４】
最初はバッファ手段の基準値が第２基準値に設定される。従って、データストリームの最初のコンテンツが再生開始される迄の時間を短縮することができ、迅速に再生開始することができる。ここで、バッファ手段に保持されているデータ量が０になるのは、バッファ手段に供給されるデータ量が、バッファ手段が再生手段に出力するデータ量よりも少ないからである。そのため、バッファ手段の基準値を第２基準値のままでコンテンツを再生し続けると、再度バッファ手段のデータ量が枯渇する可能性がある。しかし、本例では、バッファ手段に保持されているデータ量が０になった時点で、バッファ手段の基準値を第１基準値に設定することによってこの問題を解決することができる。
【００１５】
好ましくは、前記バッファ手段に保持されている前記データストリームのデータ量を検出する検出手段と、前記検出手段の検出結果に基づいて、前記再生手段が前記各コンテンツを再生する間隔を調整する調整手段とをさらに備え、前記データストリーム内の各コンテンツは複数のフレームを含み、前記バッファ手段が、前記調整手段の指定に応じて前記複数のフレームを受け取り又は出力する複数のバッファを含み、前記区分手段が、前記受信手段が前記各コンテンツの先頭フレームを受信したか否かを判断し、前記調整手段が、前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記複数のバッファのうちフレームを出力中のバッファのデータ量が、所定の下限値未満であるか否かを判断する第１の判断手段と、前記フレームを出力中のバッファのデータ量が前記下限値未満であるとき、前記データを出力中のバッファと異なる他のバッファを、前記コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する受取指定手段と、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量が、前記基準値または前記下限値を超えたとき、前記データを受け取り中のバッファを、前記フレームを前記再生手段に順次出力する出力バッファに指定する出力指定手段とを含む。
【００１６】
フレームを出力中のバッファのデータ量が下限値未満である場合、ストリーム再生装置が受けるデータ量が、再生されるデータ量よりも少ない。そのため、ストリーム再生装置は、次のコンテンツの先頭フレーム及びそれ以降のフレームを、現在フレームを出力中のバッファと異なる他のバッファに入力する。そして、次のコンテンツの先頭フレーム以降のフレームを受け取って保持するバッファのデータ量が基準値又は下限値を超えるまで、フレームを出力しない。以上の構成により、コンテンツの再生が完了した後、次のコンテンツが再生されるまでの間、調整時間が挿入される。調整時間の挿入により、データの枯渇に起因してコンテンツが再生途中で途切れるのを防止できる。
【００１７】
好ましくは、前記調整手段が、前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記フレームを出力中のバッファのデータ量が前記下限値よりも大きい所定の上限値を超えているか否かを判断する第２の判断手段をさらに含み、前記受取指定手段が、前記データ量が前記上限値を超えているとき、前記フレームを出力中のバッファと異なる他のバッファを、前記受取バッファに指定し、前記調整手段が、前記出力指示手段が出力バッファを指定したとき、出力バッファに指定されたバッファと異なる他のバッファが保持するフレームを消去する消去手段をさらに含む。
【００１８】
フレームを出力中のバッファのデータ量が上限値を超える場合、ストリーム再生装置が受けるデータ量が、再生されるデータ量よりも多い。消去手段により、現在再生中のコンテンツの末尾のデータを削除した後、次のコンテンツを再生するため、バッファ手段がオーバーフローするのを抑制できる。また、コンテンツの末尾部分は、無音であったり無映像である場合が多いため、削除してもユーザに与える違和感は小さい。
【００１９】
本発明の別の好ましい実施形態によるストリーム再生装置は、複数のフレームを含む複数のコンテンツが連結されたデータストリームを受信する受信手段と、前記受信されたデータストリームを前記コンテンツごとに区分し、前記受信手段が前記各コンテンツの先頭フレームを受信したか否かを判断する区分手段と、前記区分された各コンテンツを順次再生する再生手段と、前記受信されたデータストリームを受け取って一時的に保持し、前記データストリームのデータ量が基準値を超えた際に、前記再生手段に出力する複数のバッファと、前記バッファに保持されている前記データストリームのデータ量を検出する検出手段と、前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記複数のバッファのうちフレームを出力中のバッファのデータ量が、下限値未満であるか否かを判断する第１の判断手段と、前記フレームを出力中のバッファのデータ量が前記下限値未満である判断されたとき、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量に所定増加量を加算して前記基準値を設定する基準値設定手段と、前記フレームを出力中のバッファのデータ量が前記下限値未満であると判断されたとき、前記データを出力中のバッファと異なる他のバッファを、前記コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する受取指定手段と、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量が、前記基準値を超えたとき、前記データを受け取り中のバッファを、前記フレームを前記再生手段に順次出力する出力バッファに指定する出力指定手段とを備える。
【００２０】
この場合、新たな受取バッファが指定される毎に、基準値が前の受取バッファが保持するデータ量に応じて増加される。つまり、バッファのデータ量が多い場合には基準値の増加量が高くなり、バッファのデータ量が少ない場合には基準値の増加量が低くなる。バッファのデータ量が多いと基準値を高くしてもそのバッファのデータ量も多いために、新たな受取バッファのデータ量が基準値に達する前に出力バッファのデータがない時間を短くできる。従って、新たな受取バッファが出力バッファに指定されてコンテンツを再生する際に、コンテンツが再生されない時間が長時間挿入されることを防止することができる。
【００２１】
好ましい実施形態においては、前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記フレームを出力中のバッファのデータ量が前記下限値よりも大きい上限値を超えているか否かを判断する第２の判断手段をさらに備え、前記データ量が前記上限値を超えていると判断されたとき、前記基準値設定手段が、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量に所定増加量を加算して前記基準値を設定し、前記データ量が前記上限値を超えていると判断されたとき、前記受取指定手段が、前記フレームを出力中のバッファと異なる他のバッファを、前記受取バッファに指定する。
【００２２】
好ましい実施形態においては、前記基準値設定手段が、現在の前記基準値が前記下限値よりも大きいか否かを判断し、現在の前記基準値が前記下限値よりも大きい場合には、現在の前記基準値のまま維持し、現在の前記基準値が前記下限値以下である場合には、前記複数のバッファのうちフレームを受け取り中のバッファのデータ量に所定増加量を加算して前記基準値を設定する。
【００２３】
この場合、基準値が下限値よりも大きくなると、基準値の増加を停止させることができ、基準値がいつまでも増加し続けることを防止できる。
【発明の効果】
【００２４】
最初のコンテンツについてはバッファ手段の基準値が第１基準値よりも小さい第２基準値に設定される。従って、データストリームの最初のコンテンツが再生開始される迄の時間を短縮することができ、迅速に再生開始することができる。一方、最初のコンテンツ以外のコンテンツについてはバッファ手段の基準値が第１基準値に設定されるので、最初のコンテンツ以外のコンテンツの再生途中で途切れる可能性を最初のコンテンツの場合と比較して低くすることができる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２６】
［第１の実施の形態］
［全体構成］
図１を参照して、本実施の形態によるストリーミングシステムは、ストリーム再生装置１と、ストリーミングサーバ２とを備える。ストリーミングサーバ２は、たとえば、放送施設に設置され、曲配信サービスを運営する会社で管理される。一方、ストリーム再生装置１は、たとえば、曲配信サービスの利用を契約したユーザの家庭内に設置される。
【００２７】
ストリーミングサーバ２は、ハードディスクドライブ（ＨＤＤ）２１と、データストリーム生成部２２と、配信部２３とを備える。
【００２８】
ＨＤＤ２１は、複数のコンテンツファイルを蓄積する。本実施の形態では、コンテンツファイルを曲ファイルとして説明する。なお、コンテンツは、曲であってもよいし、映像であってもよい。また映像と音声を含んでもよい。
【００２９】
ＨＤＤ２１に蓄積された各曲ファイルは、ＭＰＥＧ２、ＭＰＥＧ４、ＭＰ３等の符号化されたファイルである。以降、符号化された曲ファイルを符号化曲ファイルという。符号化曲ファイルは、複数のフレームで構成される。符号化曲ファイル内の各フレームは、そのフレームをいつ再生すべきかを示す時刻管理情報（以下、タイムスタンプという）を含む。たとえば、タイムスタンプは、符号化曲ファイル内における当該フレームの再生時刻を示す。ストリーム再生装置１は、ストリーミングサーバ２から符号化曲ファイルを受信したとき、符号化曲ファイル内のフレームのタイムスタンプに基づいて、フレームを順次デコードして出力する。つまり、ストリーム再生装置１は、タイムスタンプに基づいてフレームを順次再生する。
【００３０】
ストリーミングサーバ２内のデータストリーム生成部２２は、ＨＤＤ２１から複数の符号化曲ファイルを抽出し、抽出された複数の符号化曲ファイルを連結してデータストリームを作成する。図２に、データストリーム生成部２２で生成されたデータストリームの一例を示す。図２に示すように、データストリームＤＳは、複数の符号化曲ファイルＭＦが連結して構成される。また、各符号化曲ファイルＭＦは、複数のフレームＦＲを含む。以降、複数のフレームＦＲのうち、先頭のフレームＦＲを先頭フレームとよぶ。
【００３１】
配信部２３は、生成されたデータストリームをストリーミング配信する。上述のとおり、ストリーミングサーバ２が放送局に設置される場合、放送局は、曲のリクエストをストリーム再生装置１のユーザから受け付ける。そして、リクエストされた複数の曲ファイルがＨＤＤ２１から抽出され、データストリーム生成部２２により、データストリームが作成される。作成されたデータストリームは、ネットワーク３を介してストリーム再生装置１にストリーミング配信される。
【００３２】
ストリーム再生装置１は、ネットワーク３を介してストリーミングサーバ２に接続される。ストリーム再生装置１は、上述のとおり、たとえば、ユーザの家庭内に設置される。ストリーム再生装置１は、ストリーミングサーバ２からストリーミング配信されるデータストリームを受信し、ストリーム再生する。具体的には、ストリーム再生装置１は、配信されたデータストリームをバッファに一時的に保持し（バッファリング）、保持されたデータストリームを読み出して、データストリームを構成する各符号化曲ファイルを連続してデコードし、出力する。
【００３３】
ストリーム再生装置１はさらに、バッファリングされたデータストリームが枯渇しないように、または、バッファが溢れない（オーバーフローしない）ように、再生される曲ファイルの再生間隔（曲間）を調整する。
【００３４】
図３を参照して、ストリーム再生装置１は、受信部１０と、受信バッファ１１と、区分部１２と、検出部１３と、調整部１７と、再生部１８とを備える。
【００３５】
受信部１０は、ストリーミングサーバ２からストリーム配信されるデータストリームを受信する。より具体的には、データストリームを構成する複数のフレームを順次受信する。受信バッファ１１は、受信されたデータストリームを受信部１０から受け取り、一時的に保持する。つまり、受信バッファ１１は、受信されたデータストリームをバッファリングする。そして、受信バッファ１１は、保持しているデータストリーム内の複数のフレームを、区分部１２を介して再生部１８に順次出力する。
【００３６】
再生部１８は、デコーダ１４と、デコードバッファ１５と、データ編集部１６とを備える。デコーダ１４は、第１デコーダ１４１と第２デコーダ１４２とを含む。第１デコーダ１４１及び第２デコーダ１４２は、符号化曲ファイルをデコードする。
【００３７】
区分部１２は、受信バッファ１１から連続して出力される複数のフレームを符号化曲ファイルごとに区分する。具体的には、区分部１２は、フレーム内のタイムスタンプを読み出す。そして、読み出されたタイムスタンプに基づいて、符号化曲ファイルの先頭フレームを特定する。要するに、区分部１２は、受信バッファ１１から連続して出力されるフレームのうち、各コンテンツの先頭フレームを特定することにより、コンテンツを区分する。
【００３８】
区分部１２はさらに、符号化曲ファイルの先頭フレームを特定したとき、先頭フレームから、出力先のデコーダを変更する。たとえば、区分部１２が、受信バッファ１１から出力されたフレームを第１デコーダ１４１に出力している最中に、新たな符号化曲ファイルの先頭フレームを特定したとき、区分部１２は、フレームの出力先を第１デコーダ１４１から第２デコーダ１４２に切り替える。そして、特定された先頭フレーム及び先頭フレーム以降に受信バッファ１１にバッファリングされたフレームを第２デコーダ１４２に順次出力する。要するに、区分部１２は、符号化曲ファイルごとに、出力先のデコーダを切り替える。
【００３９】
再生部１８内のデコードバッファ１５は、第１デコードバッファ１５１と第２デコードバッファ１５２とを含む。第１デコードバッファ１５１は、第１デコーダ１４１によりデコードされた曲ファイルをバッファリングする。第２デコードバッファ１５２は、第２デコーダ１４２によりデコードされた曲ファイルをバッファリングする。
【００４０】
第１及び第２デコードバッファは、順番に、バッファリングされた曲ファイルを出力する。具体的には、第１デコードバッファ１５１が曲ファイルを出力した後、第２デコードバッファ１５２が曲ファイルを出力する。曲ファイルの出力のタイミングは、調整部１７により決定される。
【００４１】
検出部１３は、受信バッファ１１にバッファリングされたデータストリーム（複数のフレーム）のデータ量を、所定期間ごとに検出する。
【００４２】
調整部１７は、検出部１３の検出結果に基づいて、再生部１８から出力される曲ファイルの曲間を調整する。具体的には、調整部１７は、検出部１３により検出されたデータ量（以下、検出データ量という）を基準データ量Ｖｒｅｆ１と比較する。ここで、基準データ量Ｖｒｅｆは、通常再生時に、再生される曲が再生途中で途切れたり、受信バッファ１１が溢れたり（オーバーフロー）しない、理想的なデータ量である。
【００４３】
検出データ量が基準データ量Ｖｒｅｆ１未満である場合、ストリーム再生装置１がストリーミングサーバ２から受信するデータ量よりも、ストリーム再生装置１が再生するデータ量の方が多い。以降、この状態を「受信データ過少状態」という。この場合、調整部１７は、再生される曲の曲間を調整する。具体的には、調整部１７は、検出データ量と基準データ量Ｖｒｅｆとの差分に基づいて調整時間を決定する。そして、データ編集部１６に決定された調整時間分の曲間を設けるよう指示する。
【００４４】
データ編集部１６は、調整部１７の指示に基づいて、曲ファイルの出力間隔（曲間）を調整する。具体的には、曲ファイルの出力を完了した後、決定された調整時間分の無音データを生成して出力する。そして、調整時間分の無音データを出力した後、次の曲ファイルを出力する。要するに、受信データ過少状態のときは、曲間を広く設けることで、受信バッファ１１が枯渇するのを抑制する。そのため、再生中の曲の途中でフレームが枯渇し音切れ発生するのを防止できる。
【００４５】
一方、検出データ量が基準データ量Ｖｒｅｆ１よりも多い場合、ストリーム再生装置１がストリーミングサーバ２から受信するデータ量が、ストリーム再生装置１が再生するデータ量よりも多い。この状態を「受信データ過多状態」という。この場合、調整部１７は、検出データ量と基準データ量Ｖｒｅｆ１との差分に基づいてフレーム削除量を決定する。そして、再生部１８に、各デコードバッファ１５１及び１５２にバッファリングされる曲ファイルの先頭又は末尾から決定されたフレーム削除量分のフレームを削除して曲を再生するよう指示する。
【００４６】
データ編集部１６は、調整部１７の指示に基づいて、各曲ファイルの先頭又は末尾からフレーム削除量分のフレームを除いて出力する。要するに、受信データ過多状態のときは、各曲ファイルの先頭又は末尾のフレームを除いて再生することで、受信バッファ１１がオーバーフローするのを抑制する。曲ファイルの先頭及び末尾のフレームの多くは、無音データである。そのため、先頭又は末尾フレームを除いても、ユーザに違和感を与えにくい。
【００４７】
上述の各構成１０〜１８は、図４に示すハードウェア構成により実現される。ストリーム再生装置１は、ＣＰＵ１０１と、メモリ１０２と、ハードディスクドライブ（ＨＤＤ）１０３と、通信部１０４とを備え、これらはバス１０５で相互に接続される。たとえば、ＨＤＤ１０３に格納されたストリーム再生プログラムをメモリ１０２に読み出し、読み出された曲再生プログラムをＣＰＵ１０１で実行することにより、ストリーム再生装置１の各構成１０〜１８が実現される。
【００４８】
［動作］
以下、フロー図を用いてストリーム再生装置１の動作を詳述する。
【００４９】
ストリーム再生装置１の動作は、大きく次の３つに分けられる。１つ目は、区分部１２が、受信部１０で連続して受信されるフレームを曲ファイルごとに区分する動作（区分動作）である。２つ目は、受信バッファ１１のデータ量に基づいて、調整部１７が、再生曲の曲間の調整、又は、再生曲の一部の削除を指示する動作（調整指示動作）である。３つ目は、調整部１７の指示に応じて、再生部１８が曲を再生する動作（再生動作）である。以下、区分動作、調整指示動作及び再生動作について説明する。
【００５０】
［区分動作］
図５を参照して、ストリーム再生装置１内の区分部１２は、受信バッファ１１からフレームＦＲ（ｎ）を受信する（Ｓ１）。受信バッファ１１は、受信部１０から受けたフレーム順に、フレームＦＲ（ｎ）を出力する。続いて、区分部１２は、フレームＦＲ（ｎ）に含まれるタイムスタンプＴ（ｎ）を読み出す（Ｓ２）。そして、読み出されたタイムスタンプＴ（ｎ）に基づいて、ステップＳ１で受信したフレームＦＲ（ｎ）が、新たな符号化曲ファイルの先頭フレームか否かを判断する（Ｓ３）。一般的に、曲ファイルの先頭フレームのタイムスタンプは、初期値の「０」である。そのため、区分部１２は、タイムスタンプを参照することで、曲ファイルの先頭フレームを特定できる。
【００５１】
また、一般的に、あるフレームのタイムスタンプに、そのフレームの再生時間を加算すれば、次のフレームのタイムスタンプとなる。つまり、同じ曲ファイル内のフレームでは、先頭から順にタイムスタンプが徐々に増加する。そして、連続するフレームのタイムスタンプの差分は、所定の数値範囲内となる。一方、ある曲の末尾のフレームのタイムスタンプと、次の曲の先頭のフレームのタイムスタンプとの差分は、同一曲ファイル内の連続するフレームのタイムスタンプの差分よりもはるかに大きい。そのため、フレームＦＲ（ｎ）のタイムスタンプと、フレームＦＲ（ｎ−１）のタイムスタンプとの差分を算出し、算出された差分が所定値よりも大きい場合、フレームＦＲ（ｎ）を先頭フレームと判断してもよい。
【００５２】
ステップＳ３での判断の結果、フレームＦＲ（ｎ）が先頭フレームではない場合（Ｓ３でＮＯ）、フレームＦＲ（ｎ）は、以前に区分部１２を通過したフレームと同じ曲ファイルに属する。そのため、区分部１２は、指定されているデコーダ（以下、指定デコーダという）にフレームＦＲ（ｎ）を出力する。指定デコーダの識別情報（指定デコーダ情報）は、メモリ１０２に格納されている。区分部１２は、指定デコーダ情報に基づいて指定デコーダを特定し、特定された指定デコーダにフレームＦＲ（ｎ）を出力する（Ｓ５）。以下、指定デコーダを第１デコーダ１４１として、説明を続ける。
【００５３】
ステップＳ３での判断の結果、フレームＦＲ（ｎ）が新たな曲ファイルの先頭フレームである場合（Ｓ３でＹＥＳ）、区分部１２は、指定デコーダを第１デコーダ１４１から第２デコーダ１４２に切り替える（Ｓ４）。具体的には、区分部１２は、指定デコーダ情報を第１デコーダ１４１の識別情報から第２デコーダ１４２の識別情報に変更する。そして、変更された指定デコーダ情報に基づいて、第２デコーダ１４２に先頭フレームＦＲ（ｎ）を出力する（Ｓ５）。
【００５４】
以上の工程により、区分部１２は、ストリーム再生装置１が受信したデータストリームを、複数の符号化曲ファイルに区分する。区分部１２は、さらに、ある符号化曲ファイルと、その符号化曲ファイルの次に受信した新たな符号化曲ファイルとを、それぞれ異なるデコーダ１４１及び１４２に出力する。各デコーダ１４１及び１４２は、それぞれ符号化曲ファイルをデコードし、デコードされた曲ファイルを別々のデコードバッファ（１５１及び１５２）に格納する。
【００５５】
［調整指示動作］
調整部１７は、受信バッファ１１が保持しているデータ量に基づいて、再生曲の曲間の調整を指示したり、再生曲の先頭又は末尾のフレームの削除を指示する。
【００５６】
図６を参照して、調整部１７は、所定時間ΔＴごとに、調整指示動作を実行する（Ｓ１１）。所定時間ΔＴが経過したとき（Ｓ１１でＹＥＳ）、調整部１７は、検出部１３に受信バッファ１１が保持するデータ量を要求する（Ｓ１２）。検出部１３は、調整部１７からの要求を受け、受信バッファ１１のデータ量を検出する。そして、検出されたデータ量（検出データ量）Ｖｄｅｔを調整部１７に通知する。
【００５７】
調整部１７は検出データ量Ｖｄｅｔを取得する（Ｓ１３）。続いて、調整部１７は、式（１）に基づいて、検出データ量Ｖｄｅｔと基準データ量Ｖｒｅｆ１との差分ΔＶを求める（Ｓ１４）。
【００５８】
ΔＶ＝Ｖｄｅｔ−Ｖｒｅｆ１  （１）
なお、基準データ量Ｖｒｅｆ１は予めメモリ１０２に格納されている。
【００５９】
調整部１７はさらに、ステップＳ１４で算出された差分ΔＶを利用して、式（２）で示される調整時間ΔＡＤＪを算出する（Ｓ１５）。
【００６０】
ΔＡＤＪ＝ΔＶ(bit)／圧縮ビットレート(bps)／曲ファイル再生数  （２）
ここで、「曲ファイル再生数」とは、所定期間ΔＴ内に再生される曲ファイル数である。例えば、所定期間ΔＴが６０分であり、曲ファイルの平均再生時間が４分である場合、曲ファイル再生数を「１５」とする。曲ファイル再生数は、予めメモリ１０２に格納されていてもよい。また、調整部１７が、所定期間ΔＴ内で実際に再生された曲ファイル数をカウントしたものを用いてもよい。また、式（２）で求めた値に１以上の係数αを乗じたものを調整時間ΔＡＤＪとしてもよい。算出された調整時間ΔＡＤＪはメモリ１０２に格納される。
【００６１】
続いて、調整部１７は、ステップＳ１５で算出された調整時間ΔＡＤＪが０よりも大きいか否かを判断する（Ｓ１６及びＳ１７）。調整時間ΔＡＤＪが０よりも小さいとき（Ｓ１６でＹＥＳ）、調整部１７は、データ編集部１６に、曲間に調整時間ΔＡＤＪ分の無音データを挿入するよう指示する（Ｓ１８）。具体的には、メモリ１０２内に格納されている指示情報を、挿入を示す指示（以下、挿入指示という）に設定する。調整時間ΔＡＤＪが０よりも小さい場合、検出データ量Ｖｄｅｔが基準データ量Ｖｒｅｆ１よりも少ない。つまり、ストリーム再生装置１は、受信データ過少状態である。そのため、調整部１７は、再生曲に曲間を設けて、再生中の曲が途中で途切れないようにする。
【００６２】
一方、調整時間ΔＡＤＪが０よりも大きい場合（Ｓ１６でＮＯ、Ｓ１７でＹＥＳ）、調整部１７は、データ編集部１６に、再生曲の先頭又は末尾を調整時間ΔＡＤＪ分だけ除いて出力するよう指示する（Ｓ１９）。具体的には、メモリ１０２内に格納されている指示情報を、削除を示す指示（以下、削除指示という）に設定する。調整時間ΔＡＤＪが０よりも大きい場合、検出データ量Ｖｄｅｔが基準データ量Ｖｒｅｆ１よりも多い。つまり、ストリーム再生装置１は、受信データ過多状態である。そのため、調整部１７は、曲の先頭又は末尾フレームを除いて再生することで、受信バッファ１１がオーバーフローするのを抑制する。調整時間ΔＡＤＪが０である場合（Ｓ１６及びＳ１７でＮＯ）、受信バッファのデータ量は、基準データ量Ｖｒｅｆ１と同じであり、理想的なデータ量である。そのため、調整部１７は、メモリ１０２内の指示情報を、曲ファイルをそのまま再生することを示す指示（以下、通常再生指示）に設定する。
【００６３】
［再生動作］
再生部１８は、調整部１７の指示に応じて曲を再生する。
【００６４】
図７を参照して、再生部１８内のデータ編集部１６は、２つのデコードバッファ１５１及び１５２のうち、デコードされた曲ファイルを読み出すデコードバッファ（以下、出力バッファという）を特定する。ここでは、出力バッファが第１デコードバッファ１５１であるとして説明を続ける。データ編集部１６は、第１デコードバッファ１５１からデコードされた曲ファイルを読み出す（Ｓ３１）。出力バッファに関する情報（出力バッファ情報）は、メモリ１０２に格納されている。出力バッファが第１デコードバッファ１５１である場合、出力バッファ情報は第１デコードバッファ１５１を示す。
【００６５】
第１デコードバッファ１５１から曲ファイルのフレームを全て読み出し終えたとき（Ｓ３２でＹＥＳ）、データ編集部１６は、出力バッファを第１デコードバッファ１５１から第２デコードバッファ１５２に切り替える（Ｓ３３）。これにより、データ編集部１６は、次の曲ファイルを出力する準備ができる。このとき、メモリ１０２内の出力バッファ情報は、第２デコードバッファ１５２に変更される。
【００６６】
続いて、データ編集部１６は、メモリ１０２から指示情報を読み出す（Ｓ３４）。指示情報が挿入指示の場合（Ｓ３５でＹＥＳ）、データ編集部１６は、調整時間ΔＡＤＪ分の長さの無音データを生成し、出力する（Ｓ３６）。無音データを出力した後、データ編集部１６は、ステップＳ３１に戻って出力バッファ（ステップＳ３３で新たに指定された第２デコードバッファ１５２）から曲ファイルを読み出して出力する。要するに、曲間に調整時間ＡＤＪ分の無音データを挿入する。これにより、再生部１８は、曲ファイルの再生を完了してから調整時間ΔＡＤＪが経過した後に、次の曲ファイルの再生を開始する。
【００６７】
一方、ステップＳ３４で読み出した指示情報が削除指示の場合（Ｓ３５でＮＯ、Ｓ３７でＹＥＳ）、出力バッファ（ここでは第２デコードバッファ１５２）内の曲ファイルのうち、先頭から調整時間ΔＡＤＪ分の複数のフレーム又は末尾から調整時間ΔＡＤＪ分の複数のフレームを特定する（Ｓ３８）。そして、ステップＳ３１に戻って曲ファイルを読み出すとき、ステップＳ３８で特定されたフレームを除いた部分を読み出して出力する（Ｓ３１）。これにより、再生部１８は、曲ファイルの先頭又は末尾の一部を除いて再生する。曲ファイルの先頭部分及び末尾部分は無音部分である場合が多い。そのため、先頭部分又は末尾部分のフレームを除いて再生しても、ユーザは違和感なく聴くことができる。また、受信バッファ１１がオーバーフローするのを抑制できる。
【００６８】
なお、指示情報が通常再生指示である場合（Ｓ３５及びＳ３７でＮＯ）、データ編集部１６は、無音データを挿入したり、曲ファイルの先頭又は末尾部分のうち調整時間ΔＡＤＪ分の複数のフレームを特定したりすることなく、出力デコーダから曲ファイルを読み出して外部に出力する（Ｓ３１）。
【００６９】
以上、ストリーム再生装置１は、受信バッファ１１のデータ量を所定期間ごとに検出し、検出されたデータ量Ｖｄｅｔと基準データ量Ｖｒｅｆ１との差分に基づいて、受信データ過少状態か受信データ過多状態かを判断する。そして、受信データ過少状態のとき、曲間に調整時間を挿入することで、再生曲が途中で途切れるのを防ぐ。一方、受信データ過多状態のとき、各曲の先頭又は末尾フレームの一部を除いて再生することをで、受信バッファ１１がオーバーフローするのを防ぐ。
【００７０】
なお、図６中のステップＳ１６及び１７では、調整部１７は、調整時間ΔＡＤＪが０より大きいか否かに基づいて、指示内容を決定した。しかしながら、たとえば、調整時間ΔＡＤＪが０を含む所定の範囲内である場合、調整部１７は指示情報を通常再生指示としてもよい。要するに、検出データ量Ｖｄｅｔが基準データ量Ｖｒｅｆ１から所定の範囲内であれば、無音時間の挿入及びフレームの削除を指示しなくてもよい。
【００７１】
［第２の実施の形態］
第１の実施の形態では、ストリーム再生装置１は、２つのデコーダ（第１デコーダ１４１、第２デコーダ）と２つのデコードバッファ（第１デコードバッファ１５１、第２デコードバッファ１５２）を備えたが、デコーダの処理能力が高い場合、デコーダ及びデコードバッファは１つでもよい。
【００７２】
図８を参照して、第２の実施の形態によるストリーム再生装置２０は、１つのデコーダ１４３と、１つのデコードバッファ１５３とを備える。その他の構成はストリーム再生装置１と同じである。
【００７３】
ストリーム再生装置２０は、第１の実施の形態と同様に、区分動作と、調整指示動作と、再生動作とを実行する。このうち、調整指示動作は第１の実施の形態と同じである。また、再生動作は、図７中のステップＳ３３を除いたステップを実行する。以下、区分動作について説明する。
【００７４】
［区分動作］
図９を参照して、区分部１２は、第１の実施の形態と同様に、受信バッファ１１から出力されるデータストリームを符号化曲ファイルごとに区分する。ただし、ストリーム再生装置２０のデコーダ及びデコードバッファは１つだけ（デコーダ１４３及びデコードバッファ１５３）である。そのため、区分部１２は、デコードバッファ１５３が曲ファイルの出力を完了するまで、新たな符号化曲ファイルのフレームの出力を停止する。要するに、区分部１２は、デコードバッファ１５３が曲ファイルの出力を完了するごとに、新たな符号化曲ファイルをデコーダ１４３に出力する。これにより、複数の曲ファイルのフレームがデコードバッファ１５３内に混在するのを防ぐ。
【００７５】
図９を参照して、ステップＳ１〜Ｓ３までの動作は図４と同じである。区分部１２が、新たな符号化曲ファイルの先頭フレームを受けたとき（Ｓ３でＹＥＳ）、区分部１２は、そのフレームの出力を停止する（Ｓ７）。そして、デコードバッファ１５３が保持している曲ファイルのフレームを全て出力し終えた後（Ｓ８でＹＥＳ）、ステップＳ７で止めていたフレームデータの出力を開始する（Ｓ６）。調整部１７は、デコードバッファ１５３が全てのフレームを出力し終えたか否かを監視する。そして、デコードバッファ１５３が全てのフレームを出力し終えたとき、調整部１７は、区分部１２に出力完了通知を出力する。区分部１２は、出力完了通知を受けたとき（Ｓ８でＹＥＳ）、フレームの出力を開始する（Ｓ６）。以上の動作により、区分部１２は、曲ファイルごとに区分することができる。
【００７６】
［第３の実施の形態］
図１０を参照して、第３の実施の形態によるストリーム再生装置３０は、受信部３１と、区分部３２と、第１バッファ３３と、第２バッファ３４と、検出部３５と、調整部３６と、デコーダ３７とを備える。
【００７７】
本実施の形態では、２つのバッファ３３及び３４を配置する。検出部３５は、第１バッファ３３及び第２バッファ３４が蓄積するデータ量を求め、求めたデータ量をメモリ１０２に格納する。
【００７８】
調整部３６は、メモリ１０２に格納されたデータ量に基づいて、区分部３２から出力されたフレームの受け取り先となるバッファ（以下、受取バッファという）、及び、デコーダ３７に出力されるデータの出力元となるバッファ（以下、出力バッファという）を指定する。
【００７９】
調整部３６は、制御部３６１と、受取指定部３６２と、出力指定部３６３とを含む。制御部３６１は、検出部３５により検出された第１バッファ３３及び第２バッファ３４のデータ量が所定の基準値よりも大きいか否か判断し、判断結果に基づいて、受取指定部３６２及び出力指定部３６３に指示を出力する。
【００８０】
受取指定部３６２は、第１及び第２バッファ３３、３４のうち、受信部３１が受けたフレームの受取先となるバッファ（受取バッファ）を指定する。出力指定部３６３は、第１及び第２バッファ３３、３４のうち、デコーダ３７にフレームを出力するバッファ（出力バッファ）を指定する。
【００８１】
［動作］
ストリーム再生装置３０内の区分部３２は、受信部３１から受けたデータストリームを、曲ファイルごとに区分する（区分動作）。検出部３５は、第１及び第２バッファ３３、３４のデータ量を検出する。調整部３６は、検出されたデータ量に基づいて、区分部３２から出力されるフレームを受け取って保持する受取バッファを指定する。また、検出されたデータ量に基づいて、フレームをデコーダ３７に出力する出力バッファを指定する。このとき、調整部３６は、デコーダによりデコードされて外部に出力される曲ファイルが、曲の途中で途切れないように、受取及び出力バッファを指定する（調整動作）。
【００８２】
上述のストリーム再生装置３０の動作を模式図を用いて説明する。図１１を参照して、調整部３６は、初めに、第１バッファ３３を受取バッファに指定する。そのため、区分部３２から出力されたフレームは第１バッファ３３に入力され、保持される。第１バッファ３３のデータ量は、検出部３５により検出される。検出された第１バッファ３３のデータ量が基準値Ｖｒｅｆ２を超えたとき、調整部３６は、第１バッファ３３を出力バッファに指定する。これにより、第１バッファ３３は、保持しているフレームをデコーダ３７に順次出力する（図１１参照）。
【００８３】
［受信データ過少状態でのストリーム再生装置の動作］
区分部３２が新たな符号化曲ファイルの先頭フレームを受けたとき、調整部３６は、第１バッファ３３のデータ量を確認する。このとき、図１２に示すように、第１バッファ３３のデータ量が下限値Ｖｍｉｎ未満であると仮定する。このとき、調整部３６は、受取バッファを第１バッファ３３から第２バッファ３４に切り替える。つまり、第２バッファ３４を新たな受取バッファに指定する。
【００８４】
データ量が下限値Ｖｍｉｎ未満である場合、ストリーム再生装置３０が受けるデータ量よりも、再生されるデータ量の方が多い。つまり、ストリーム再生装置３０は、受信データ過少状態である。この場合、第１バッファ３３にフレームを継続してバッファリングし続ければ、デコーダ３７に出力すべきフレームが、再生曲の途中で枯渇する。そのため、ストリーム再生装置３０から出力される曲は、曲の途中で音切れする。このような再生曲の音切れを防止するため、調整部３６は、受取バッファを切り替える。
【００８５】
新たな曲ファイルのフレームが第２バッファ３４にバッファリングされている最中に、図１３に示すように、第１バッファ３３に保持されていた全てのフレームがデコーダ３７に出力される。このとき、１曲分の曲ファイルの出力が完了する。
【００８６】
調整部３６はさらに、第２バッファ３４のデータ量を所定期間ごとに確認し、第２バッファ３４のデータ量が基準値Ｖｒｅｆ２を超えたか否かを判断する。そして、データ量が基準値Ｖｒｅｆ２を超えるまで、調整部３６は、第２バッファ３４からフレームを出力しない。調整部３６が第２バッファ３４からフレームを出力しない間、デコーダ３７はデコード処理を行わない。そのため、この間、ストリーム再生装置３０は無音状態となる。
【００８７】
図１４に示すように、第２バッファ３４のデータ量が基準値Ｖｒｅｆ２を超えたとき、調整部３６は、第２バッファ３４を出力バッファに指定する。出力バッファに指定された第２バッファ３４は、デコーダ３７にフレームを出力する。このとき、ストリーム再生装置３０は、新たな曲を再生する。要するに、ストリーム再生装置３０が、受信データ過少状態であるとき、曲の再生が完了してから次の曲が再生されるまでの間、無音の調整時間が挿入される。曲間に調整時間を設けることにより、再生曲が再生途中で途切れるのを防止できる。
【００８８】
［受信データ過多状態でのストリーム再生装置の動作］
受信データ過多状態の場合のストリーム再生装置３０の動作は以下のとおりである。第１バッファ３３がフレームを受信しながら、デコーダ３７にフレームを出力している最中に、区分部３２が新たな曲の先頭フレームを受信したと仮定する。このとき、調整部３６は、第１バッファ３３のデータ量を確認する。確認した結果、図１５に示すように、データ量が上限値Ｖｍａｘを超えるとき、調整部３６は、第２バッファ３４を受取バッファに指定する。つまり、受取バッファを第１バッファ３３から第２バッファ３４に切り替える。これにより、第２バッファ３４が先頭フレーム及びそれ以降のフレームを受け取って保持する。
【００８９】
続いて、調整部３６は、受取バッファである第２バッファ３４のデータ量を監視する。図１６に示すように、第２バッファ３４のデータ量が基準値Ｖｒｅｆ２を超えたとき、調整部３６は、第２バッファ３４を出力バッファに指定する。その結果、図１７に示すように、第２バッファ３４は、保持しているフレームをデコーダ３７に順次出力する。調整部３６はさらに、第２バッファ３４を出力バッファに指定したとき、他のバッファ（第１バッファ３３）に残存するデータを削除する。たとえば、図１６に示すように、第２バッファ３４のデータ量が基準値Ｖｒｅｆを超えたとき、第１バッファ３３にはまだデータが残存していると仮定する。この場合、調整部３６は、第２バッファ３４を出力バッファに指定するとともに、第１バッファ３３に残存するデータを削除する（図１７参照）。そのため、第１バッファ３３に蓄積されていた曲ファイルの末尾部分のデータは出力されず、カットされる。この場合、曲の末尾部分は再生がカットされるが、曲の末尾部分は無音である場合が多い。そのため、再生曲の途中で音切れが発生するよりも、ユーザに与える違和感を抑えることができる。
【００９０】
以上のとおり、ストリーム再生装置３０は、２つのバッファ３３及び３４のデータ量を所定の基準値（Ｖｍａｘ、Ｖｒｅｆ２、Ｖｍｉｎ）と比較する。そして、比較結果に基づいて、受取バッファ及び出力バッファを指定する。これにより、ストリーム再生装置３０は、受信データ過少状態の時には曲間に調整時間を挿入し、再生曲の途中で音切れが発生するのを抑制する。また、受信データ過多状態の時には曲ファイルの末尾データを削除して、再生曲の途中で音切れが発生するのを防止する。以下、フロー図を用いてストリーム再生装置３０の動作の詳細を説明する。
【００９１】
［区分動作］
図１８を参照して、ステップＳ１〜Ｓ３の動作は、図４と同じである。つまり、区分部３２は、フレームＦＲ（ｎ）からタイムスタンプＴ（ｎ）を読み出し、タイムスタンプＴ（ｎ）に基づいて、新たな曲ファイルの先頭フレームを特定する。これにより、データストリームを曲ファイルごとに区分できる。
【００９２】
区分部３２は、受信部３１が受信したフレームが先頭フレームであると判断したとき（Ｓ３でＹＥＳ）、調整部３６に区分通知を出力する（Ｓ９）。
【００９３】
［調整動作］
調整部３６は、区分部３２から区分通知を受けるごとに受取バッファの指定を判断する受取指定動作と、受取バッファのデータ量が基準値Ｖｒｅｆ２を超えるごとに出力バッファの指定を判断する出力指定動作とを実行する。以下、受取指定動作及び出力指定動作について説明する。
【００９４】
［受取指定動作］
調整部３６は、区分部３２から区分通知を受けるごとに、受取指定動作を実行する。図１９を参照して、調整部３６内の制御部３６１は、区分通知を受けたとき（Ｓ６１でＹＥＳ）、現在フレームをデコーダ３７に出力している出力バッファのデータ量を読み出す（Ｓ６２）。出力バッファを特定するための情報（出力バッファ特定情報）はメモリ１０２に格納されている。出力バッファが第１バッファ３３である場合、出力バッファ特定情報は、第１バッファ３３を示す。各バッファ３３、３４のデータ量は、検出部３５により所定期間ごとに検出され、メモリ１０２に格納される。制御部３６１は、区分通知を受けたとき、出力バッファ特定情報に基づいて出力バッファを特定し、特定された出力バッファのデータ量をメモリ１０２から読み出す。以下、出力バッファを第１バッファ３３と仮定して説明する。なお、調整部３６が区分通知を受けるとき、通常は、出力バッファに指定されているバッファは、区分部３２からフレームを受け取っている。つまり、出力バッファに指定されているバッファは、同時に受取バッファにも指定されている。そのため、第１バッファ３３は、フレームを受け取って保持し、かつ、フレームをデコーダ３７に出力している。
【００９５】
制御部３６１は、ステップＳ６２で読み出した第１バッファ３３のデータ量が所定範囲内の量か否かを判断する（Ｓ６３及びＳ６４）。
【００９６】
ステップＳ６３で判断の結果、データ量が下限値Ｖｍｉｎ未満である場合（Ｓ６３でＹＥＳ）、ストリーム再生装置３０は、受信データ過少状態である。そのため、調整部３６は、受取バッファを切り替える（Ｓ６５、図１２参照）。具体的には、制御部３６１は、メモリ１０２に格納された受取バッファ特定情報を第２バッファ３４に変更する。そして、受取指定部３６２に、区分部３２から受けたフレームを第２バッファ３４に出力するよう指示する。受取指定部３６２は、制御部３６１からの指示を受け、新たな曲ファイルの先頭フレーム及びそれ以降に受信部３１で受信されたフレームを、第２バッファ３４に出力する。これにより、第２バッファ３４が受取バッファとして、新たな曲ファイルのフレームをバッファリングする。
【００９７】
一方、ステップＳ６２で読み出された第１バッファ３３のデータ量が上限値Ｖｍａｘを超えている場合（Ｓ６３でＮＯ、Ｓ６４でＹＥＳ）、ストリーム再生装置３０は、受信データ過多状態である。そのため、調整部３６は、受取バッファを切り替え（Ｓ６５）、第２バッファ３４に先頭フレーム及びそれ以降のフレームを出力する（Ｓ６６）。
【００９８】
要するに、調整部３６は、ストリーム再生装置３０が受信データ過少状態又は受信データ過多状態と判断したとき、受取バッファを切り替える。
【００９９】
［出力指定動作］
続いて、調整部３６の出力指定動作について説明する。図２０を参照して、調整部３６は、所定期間ごとに出力指定動作を実行する。調整部３６内の制御部３６１は、まず、受取バッファ特定情報を用いて、受取バッファを特定する（Ｓ７１）。特定された受取バッファが第２バッファ３４であるとして説明を続ける。
【０１００】
制御部３６１は、受取バッファである第２バッファ３４のデータ量を読み出す（Ｓ７２）。そして、読み出されたデータ量が基準値Ｖｒｅｆ２よりも大きいか否かを判断する（Ｓ７３）。データ量が基準値Ｖｒｅｆ２よりも小さい場合（Ｓ７３でＮＯ）、調整部３６は出力指定動作を終了する。つまりこの場合、出力バッファは切り替わらない。
【０１０１】
一方、ステップＳ７３での判断の結果、データ量が基準値Ｖｒｅｆ２を超えた場合（Ｓ７３でＹＥＳ）、制御部３６１は、出力バッファの指定を検討する（Ｓ７４〜Ｓ７６）。
【０１０２】
制御部３６１はまず、現在の出力バッファを特定する（Ｓ７４）。ストリーム再生装置３０は、出力バッファを特定するための情報（以下、出力バッファ特定情報という）を、受取バッファ特定情報と同様に、メモリ１０２に格納している。制御部３６１は、メモリ１０２から出力バッファ特定情報を読み出し、出力バッファを特定する。
【０１０３】
出力バッファを特定した後、制御部３６１は、出力バッファが、受取バッファと同じ第２バッファ３４か否かを判断する（Ｓ７５）。ステップＳ７４で特定された出力バッファが第１バッファ３３である場合、出力バッファ（第１バッファ３３）は、受取バッファ（第２バッファ３４）と異なる（Ｓ７５でＮＯ）。そのため、制御部３６１は、出力バッファを第１バッファ３３から第２バッファ３４に切り替える（Ｓ７６、図１４及び図１７参照）。換言すれば、制御部３６１は、出力バッファ特定情報を第１バッファ３３から第２バッファ３４に変更し、第２バッファ３４を出力バッファに指定する。
【０１０４】
制御部３６１は、出力バッファを第２バッファ３４に指定するよう出力指定部３６３に指示する。出力指定部３６３は、第２バッファ３４のデータを受け取り、デコーダ３７に出力する。これにより、第２バッファ３４が出力バッファとして、デコーダ３７にフレームを出力する。
【０１０５】
制御部３６１はさらに、出力バッファではないバッファ（ここでは、第１バッファ３３）に残存する全てのフレームを削除する（Ｓ７７）。ストリーム再生装置３０が受信データ過多状態である場合、ステップＳ７７の動作により、第１バッファ３３に残存したフレームを消去する（図１７参照）。
【０１０６】
以上の動作により、ストリーム再生装置３０が受信データ過少状態である場合（図１２）、調整部３６は、第１バッファ３３が蓄積された全てのフレームを出力し終えても、第２バッファ３４にフレームが所定量（Ｖｒｅｆ２より多い量）バッファリングされるまでフレームをデコーダ３７に出力しない。この間、デコーダ３７はフレームを受け取らないため、デコード処理を停止する。その結果、無音期間が発生する。調整部３６は、第２バッファ３４が、再生曲の途中で音切れが発生しない程度に十分なデータ量（Ｖｒｅｆ２より多い量）を蓄積した後、第２バッファ３４を出力バッファに指定して、第２バッファ３４のデータをデコーダ３７に出力する。要するに、ストリーム再生装置３０が受信データ過少状態のとき、調整部３６は、曲間に無音の調整時間を挿入することで、再生曲の途中で音切れが発生するのを抑制する。
【０１０７】
また、ストリーム再生装置３０が受信データ過多状態である場合、ステップＳ７７の動作により、先に出力された曲ファイルの末尾をカットして、次曲ファイルを出力する。これにより、バッファがオーバーフローするのを防ぐことができる。また、曲の末尾部分は無音である場合が多いため、曲の途中で音切れが発生するよりも、ユーザに与える違和感を抑えることができる。
【０１０８】
上述の第３の実施の形態では、下限値Ｖｍｉｎと基準値Ｖｒｅｆ２とを異なる値としたが、下限値Ｖｍｉｎと基準値Ｖｒｅｆ２とは同じ値であってもよい。より具体的には、図２０に示す出力指定動作中のステップＳ７３において、制御部３６１は、受取バッファのデータ量が下限値Ｖｍｉｎを超えたか否かを判断し、その判断結果に基づいて、出力バッファを指定してもよい。要するに、下限値Ｖｍｉｎと基準値Ｖｒｅｆ２とは、第１及び第２バッファ３３、３４のデータ量が、再生曲の再生途中で音切れが発生しない程度のデータ量となるような基準であればよい。
【０１０９】
なお、基準値Ｖｒｅｆ２が下限値Ｖｍｉｎに近づくほど、バッファの切り替え回数（指定変更回数）が増加する。そのため、曲の再生が完了するごとに、曲間に調整時間が挿入される。基準値Ｖｒｅｆ２と下限値Ｖｍｉｎとの差が大きいほど、バッファの切り替え回数は低減される。つまり、曲が連続再生される機会が増加し、曲が再生されるごとに曲間に調整時間が挿入されるのを抑制できる。
【０１１０】
また、第３の実施の形態では、受信データ過少状態のとき、バッファからフレームを出力しない間（すなわち、調整時間中）、デコーダ３７はデコード処理を行わないとしたが、調整時間中に、無音データがデコーダ３７に挿入されてもよい。
【０１１１】
上述の実施の形態では、区分部は、タイムスタンプを用いて、曲ファイルの先頭フレームを判別したが、区分部は、他の方法により、曲ファイルを区分してもよい。たとえば、各フレームが曲ファイル固有の識別情報（ファイルＩＤ）を含むメタデータを有する場合、ファイルＩＤを用いて曲ファイルを区分してもよい。
【０１１２】
［第４の実施形態］
本実施形態は第３の実施形態の変形例である。第３の実施形態では、最初に第１バッファ３３が受取バッファに指定された場合、検出された第１バッファ３３のデータ量が基準値Ｖｒｅｆ２を越えるまで、第１バッファ３３が出力バッファに指定されず、第１バッファ３３からデコーダ３７にフレームが出力されない。その結果、ストリーム再生装置から音声が再生されるまでに時間がかかるという問題を有している。そこで、本実施形態では、制御部３６１が、最初のコンテンツ（１曲目の曲ファイル）については、第１バッファ３３（及び必要に応じて第２バッファ３４）の基準値を、Ｖｒｅｆ２よりも値の小さいＶｒｅｆ２’に設定することによって、１曲目の音声の再生を迅速にする。そして、制御部３６１は、最初のコンテンツ以外のコンテンツ（２曲目以降の曲ファイル）については、基準値をＶｒｅｆ２に設定する。つまり、区分部３２が２曲目の先頭フレームを受信したときに、制御部３６１が第１バッファ３３及び第２バッファ３４の基準値をＶｒｅｆ２に変更する。従って、最初のコンテンツについて迅速に再生開始することができ、かつ、最初のコンテンツ以外のコンテンツについてバッファ枯渇をより確実に防止することができる。
【０１１３】
［動作］
以下、本実施形態の動作を説明する。なお、第３実施形態と同じ処理については説明を援用する。以下では、区分部によって２曲目の先頭フレームが判別されたときに、第１バッファ３３のデータ量が下限値Ｖｍｉｎ未満である場合を例に説明するが、上限値Ｖｍａｘよりも大の際も、下限値Ｖｍｉｎと上限値Ｖｍａｘとの間の際も同様である。
【０１１４】
［バッファの基準値の制御処理１］
図２１は、制御部３６１による第１バッファ３３（及び第２バッファ３４）の基準値の設定処理を示す。制御部３６１は、第１バッファ３３（及び第２バッファ３４）の基準値を仮にＶｒｅｆ２に設定する（Ｓ８１）。制御部３６１は、ユーザ操作によって保持時間短縮モードがオン状態に設定されているか否かを判断する（Ｓ８２）。保持時間短縮モードがオン状態に設定されていなければ（Ｓ８２でＮＯ）、処理を終了する。
【０１１５】
保持時間短縮モードがオン状態に設定されていれば（Ｓ８２でＹＥＳ）、制御部３６１は、図２２に示すように、最初の曲ファイルを保持及び出力するために、第１バッファ３３（及び第２バッファ３４）の基準値をＶｒｅｆ２’に設定する（Ｓ８３）。Ｖｒｅｆ２’はＶｒｅｆ２よりも小さい値であり、例えば、Ｖｒｅｆ２の１／２の値である。基準値がＶｒｅｆ２’に変更されることにより、第１バッファ３３に保持された１曲目の曲ファイルのデータ量が基準値を越えるまでの時間を短縮することでき、デコーダ３７から音声が出力されるまでの時間を短縮することができる。例えば、Ｖｒｅｆ２’がＶｒｅｆ２の１／２であれば、デコーダ３７から音声が出力されるまでの時間を約１／２に短縮することができる。
【０１１６】
続いて、制御部３６１は、２曲目の曲ファイルについての区分通知を受信したか否かを監視している（Ｓ８４）。図１８に示すように、区分部３２は２曲目の先頭フレームを判別し（Ｓ３でＹＥＳ）、制御部３６に区分通知を出力する（Ｓ９）。図２１に戻り、制御部３６１は、区分通知を受信すると（Ｓ８４でＹＥＳ）、図２３に示すように、２曲目以降の曲ファイルを保持及び出力するために、第１バッファ３３（及び第２バッファ３４）の基準値をＶｒｅｆ２’からＶｒｅｆ２に変更する（Ｓ８５）。従って、２曲目以降については、図２４に示すように、第１バッファ３３又は第２バッファ３４に保持されるデータ量が基準値Ｖｒｅｆ２を越えてから、第１バッファ３３又は第２バッファ３４がフレームをデコーダ３７に出力するようになる。その結果、２曲目以降については、第１バッファ３３又は第２バッファ３４が保持するデータ量の枯渇をより確実に防止することができる。
【０１１７】
［バッファの基準値の制御処理２］
上記の通り、１曲目については、バッファの基準値をＶｒｅｆ２’に設定しているので、第１バッファ３３又は第２バッファ３４に保持しているデータ量が枯渇する可能性がある。従って、制御部３６１は、第１バッファ３３又は第２バッファ３４に保持しているデータ量が枯渇した際にも、第１バッファ３３又は第２バッファ３４の基準値をＶｒｅｆ２’からＶｒｅｆ２に変更するようにしている。図２５は、１曲目の曲ファイルのデータをデコーダ３７に出力する際の制御部３６１の処理を示す。
【０１１８】
図２５に示すように、制御部３６１は、１曲目の曲ファイルの出力バッファである第１バッファ３３が保持するデータ量を読み出す（Ｓ９１）。そして、制御部３６１は、第１バッファ３３のデータ量が０である（すなわち、枯渇している）か否かを判断する（Ｓ９２）。データ量が０でなければ（Ｓ９２でＮＯ）、制御部３６１は、基準値Ｖｒｅｆ２’を継続して、第１バッファ３６１にフレームをデコーダ３７に出力させる（Ｓ９３）。
【０１１９】
一方、図２６に示すように、データ量が０であれば（Ｓ９２でＹＥＳ）、制御部３６１は、第１バッファ３３及び第２バッファ３４の基準値をＶｒｅｆ２’からＶｒｅｆ２に変更する（Ｓ９４）。第１バッファ３３のデータ量が０になるということは、受信データ過小状態であるので、第１バッファ３３の基準値をＶｒｅｆ２’のままで再生を続けると、１曲目の曲ファイルを再生している途中に今後も第１バッファ３３のデータ量が枯渇する可能性がある。しかし、本例では、第１バッファ３３の基準値をＶｒｅｆ２に変更することにより、今後第１バッファ３３のデータ量が枯渇する可能性を低くすることができる。
【０１２０】
その後、図２７に示すように、制御部３６１は、第１バッファ３３のデータ量が基準値Ｖｒｅｆ２を越えるまで、第１バッファ３３からデコーダ３７にフレームが出力されることを待機させ、第１バッファ３３のデータ量が基準値Ｖｒｅｆ２を越えたとき、第１バッファ３３からデコーダ３７にフレームを出力させる（Ｓ９５）。
【０１２１】
以上のように、本実施形態によると、１曲目の再生開始を迅速にすることができ、かつ、２曲目以降の再生時に音切れが生じすることを防止することができる。
【０１２２】
なお、上記の第４の実施形態では、２曲目の先頭フレームを検出した時点で第１バッファ３３及び第２バッファ３４の基準値をＶｒｅｆ２に設定しているが、２曲目の先頭フレームを検出しても第１バッファ３３及び第２バッファ３４の基準値をＶｒｅｆ２’に維持してもよい。そして、図２５の処理によって、第１バッファ３３及び第２バッファ３４のデータ量が０になった時点ではじめて第１バッファ３３及び第２バッファ３４の基準値をＶｒｅｆ２に設定するようにしてもよい。すなわち、第１バッファ３３及び第２バッファ３４が枯渇しない限り、第１バッファ３３及び第２バッファ３４の基準値をＶｒｅｆ２’に維持してもよい。
【０１２３】
また、上記の第４の実施形態を第１の実施形態，第２の実施形態に適用してもよい。つまり、第４の実施形態は、バッファが１つの場合にも適用することができる。
【０１２４】
［第５の実施形態］
本実施形態は第４実施形態の変形例である。第４実施形態では、最初のコンテンツに対して基準値をＶｒｅｆ２よりも小さいＶｒｅｆ２’に設定し、最初のコンテンツ以外のコンテンツに対して基準値をＶｒｅｆ２に設定していたが、この場合、Ｖｒｅｆ２’とＶｒｅｆとの差が大きい場合、２曲目の曲ファイルを再生開始するまでに無音が長く挿入される可能性がある。この問題を解決するために、本例では区分通知を受信し、受取バッファを切り換える際に、バッファに保持されているデータ量に所定増加量（例えば２秒分のデータ量）を加算して、新たな基準値Ｖｒｅｆ２を設定するようにしている。これにより、新たな基準値Ｖｒｅｆ２とバッファに保持されているデータ量との差が必ず所定増加量となるので、曲間で無音が長く挿入されることを防止することができる。
【０１２５】
図２８〜図３３は、本例の動作を示す模式図であり、図３４、図３５は本例の動作を示すフローチャートである。まず、図２８、図３４に示すように、制御部３６１は、出力バッファを受取バッファと異なるバッファに設定する（Ｓ１０１）。例えば、受取バッファが第１バッファ３３に設定され、出力バッファは第２バッファ３４に設定される。次に、制御部３６１は、第１バッファ３３及び第２バッファ３４の基準値Ｖｒｅｆ２を、受取バッファである第１バッファ３３のデータ量（ここでは未だデータが保持されていないので０である）に所定増加量（２秒分のデータ量）を加算することによって算出し、設定する（Ｓ１０２）。そして、区分部３２から受取バッファである第１バッファ３３へフレーム受信を開始させる（Ｓ１０３）。
【０１２６】
図３５に示すように、区分部３２から受取バッファである第１バッファ３３へのフレーム受信を継続し（Ｓ１１１）、制御部３６１は区分部３２から区分通知を受信したか否かを判断する（Ｓ１１２）。区分通知を受信しなければ（Ｓ１１２でＮＯ）と、受取バッファへのフレームの受信を継続する（Ｓ１１７）。制御部３６１は、出力バッファと受取バッファとが異なるか否かを判断する（Ｓ１１８）。ここでは受取バッファが第１バッファ３３であり、出力バッファが第２バッファ３４である（Ｓ１１８でＹＥＳ）。制御部３６１は、受取バッファである第１バッファ３３のデータ量が基準値Ｖｒｅｆ２以上であるか否かを判断し（Ｓ１１９）、図２９においては、第１バッファ３３のデータ量が基準値Ｖｒｅｆ２以上であるので（Ｓ１１９でＹＥＳ）、出力バッファを受取バッファと同じバッファに切り換える（Ｓ１２０）。つまり、出力バッファを第１バッファ３３に切り換える。従って、第１バッファ３３からフレームの出力が開始され、再生が開始される。
【０１２７】
区分部３２が２曲目の先頭のフレームを受信し、区分部３２から区分通知を受信すると（Ｓ１１２でＹＥＳ）、制御部３６１は、受取バッファである第１バッファ３３のデータ量が下限値Ｖｍｉｎ未満であるか、又は、上限値Ｖｍａｘを越えているか否かを判断する（Ｓ１１３）。図３０においては、受取バッファである第１バッファ３３のデータ量は下限値Ｖｍｉｎ未満である（Ｓ１１３でＹＥＳ）。従って、制御部３６１は、基準値Ｖｒｅｆ２が下限値Ｖｍｉｎより大きく、かつ、上限値Ｖｍａｘより小さいか否かを判断する（Ｓ１１４）。ここでは、基準値Ｖｒｅｆ２は下限値Ｖｍｉｎよりも小さいので（Ｓ１１４でＮＯ）。制御部３６１は、図３０のように、受取バッファである第１バッファ３３のデータ量に所定増加量（２秒分のデータ量）を加算して、新たな基準値Ｖｒｅｆ２を設定する（Ｓ１１５）。つまり、第１バッファ３３に５秒分のデータが保持されている場合、基準値Ｖｒｅｆ２を５＋２＝７秒分とする。前の基準値が２秒分であるので、基準値Ｖｒｅｆ２が５秒分増加することになる。このように、バッファのデータ量に応じて基準値Ｖｒｅｆ２の増加量がその都度変化することが、本例の最大の特徴である。そして、制御部３６１は、受取バッファを出力バッファと異なるバッファに切り換える（Ｓ１１６）。つまり、図３０のように受取バッファを第２バッファ３４に切り換える。
【０１２８】
そして、図３１のように、受取バッファである第２バッファ３４にフレームを受信し（Ｓ１１７）、第２バッファ３４のデータ量が基準値Ｖｒｅｆ２以上になると（Ｓ１１９でＹＥＳ）、図３１のように出力バッファを受取バッファと同じバッファである第２バッファ３４に切り換え（Ｓ１２０）、第２バッファ３４から再生を開始する。この時、元の出力バッファである第１バッファ３３にデータが残っている場合には、そのデータ削除して第１バッファ３３を空にする（Ｓ１２１）。
【０１２９】
続いて、図３２の状態で区分部３２から区分通知を受信する（Ｓ１１２でＹＥＳ）。第２バッファ３４のデータ量は下限値Ｖｍｉｎ未満であり（Ｓ１１３でＹＥＳ）、基準値Ｖｒｅｆ２は下限値Ｖｍｉｎよりも小さい（Ｓ１１４でＮＯ）。従って、制御部３６１は、図３２のように、第２バッファ３４のデータ量に所定増加量（２秒分のデータ量）を加算して新たな基準値Ｖｒｅｆ２を設定する（Ｓ１１５）。例えば、第２バッファ３４のデータ量が７秒分であれば、基準値Ｖｒｅｆ２を９秒分にする。つまり、前の基準値Ｖｒｅｆ２ｇａ７秒分であるので、基準値Ｖｒｅｆ２の増加量は２秒分となる。そして、受取バッファを出力バッファと異なるバッファである第１バッファ３３に切り換えて（Ｓ１１６）、第１バッファ３３にフレームを受信させる（Ｓ１１７）。その後、図３３に示すように、第１バッファ３３のデータ量が基準値Ｖｒｅｆ２以上になると、出力バッファを第１バッファ３３に切り換えて、第１バッファ３３から再生を開始する。
【０１３０】
なお、Ｓ１１４で基準値Ｖｒｅｆ２が、下限値Ｖｍｉｎよりも大きく、かつ、上限値Ｖｍａｘよりも小さくなると、Ｓ１１５の処理をスキップしてＳ１１６に進む。すなわち、基準値Ｖｒｅｆ２が、下限値Ｖｍｉｎよりも大きく、かつ、上限値Ｖｍａｘよりも小さくなると、その時点で、基準値Ｖｒｅｆ２の増加を終了する。その結果、定常状態においては、基準値Ｖｒｅｆ２は、下限値Ｖｍｉｎと上限値Ｖｍａｘとの間の値に設定されている。また、Ｓ１１４での判断の代わりに、基準値Ｖｒｅｆ２が下限値Ｖｍｉｎより大きいかのみを判断してもよい。
【０１３１】
また、Ｓ１１３で受取バッファのデータ量が下限値Ｖｍｉｎ以上、かつ、上限値Ｖｍａｘ以下である場合、Ｓ１１４〜Ｓ１１６の処理をスキップし、Ｓ１１７に進む。つまり、基準値Ｖｒｅｆ２の増加は受取バッファを切り換える際に実行され、区分部３２から区分通知を受信しても、受取バッファを切り換えない場合には、基準値Ｖｒｅｆ２は増加されない。
【０１３２】
また、Ｓ１１５で算出された新たな基準値Ｖｒｅｆ２が上限値Ｖｍａｘを越える場合、基準値Ｖｒｅｆ２はＶｍａｘよりも若干小さい値に設定されるとよい。定常状態の基準値Ｖｒｅｆ２を下限値Ｖｍｉｎ〜Ｖｍａｘの間に設定すると共に、Ｓ１１４でＮＯと判断されて永久的に基準値Ｖｒｅｆ２が増加し続けることを防止するためである。
【０１３３】
以上のように、本実施形態によると、基準値Ｖｒｅｆ２を段階的に受取バッファのデータ量に応じて増加させるので、出力バッファ変更時に（つまり曲間で）無音が長時間挿入されることを防止することができる。すなわち、基準値の増加量を大きくすると新たな受取バッファのデータ量が基準値に達するまでに時間がかかるが、受取バッファ（つまり出力バッファ）のデータ量が多く、出力バッファのデータがなくなるまでの時間が長い場合、新たな受取バッファからデータが出力される際に長時間無音が挿入されることはない。同様に、受取バッファ（つまり出力バッファ）のデータ量が少ないと、出力バッファのデータが直ぐに無くなってしまうが、基準値の増加量を小さくすることにより、新たな受取バッファのデータ量が基準値に達するまでの時間が短くなり、新たな受取バッファからデータが出力される際に長時間無音が挿入されることはない。
【０１３４】
以上、本発明の好ましい実施形態を説明したが、本発明はこれらの実施形態には限定されない。本発明は、上記のストリーム再生装置を動作させるためのコンピュータプログラムまたはそのコンピュータプログラムを記録した記録媒体という形態で提供されてもよい。
【産業上の利用可能性】
【０１３５】
本発明は、サーバから配信されるデータストリームを受信するストリーム再生装置に好適に適用され得る。
【図面の簡単な説明】
【０１３６】
【図１】本発明の実施の形態によるストリーミングシステムの構成を示す機能ブロック図である。
【図２】図１中のストリーミングサーバから配信されるデータストリームのデータ構造を示す図である。
【図３】図１中のストリーム再生装置の構成を示す機能ブロック図である。
【図４】図１中のストリーム再生装置のハードウェア構成を示すブロック図である。
【図５】図３に示すストリーム再生装置の区分動作の詳細を示すフロー図である。
【図６】図３に示すストリーム再生装置の調整指示動作の詳細を示すフロー図である。
【図７】図３に示すストリーム再生装置の再生動作の詳細を示すフロー図である。
【図８】本発明の第２の実施の形態によるストリーム再生装置の構成を示す機能ブロック図である。
【図９】図８に示すストリーム再生装置の区分動作の詳細を示すフロー図である。
【図１０】本発明の第３の実施の形態によるストリーム再生装置の構成を示す機能ブロック図である。
【図１１】図１０に示すストリーム再生装置の動作を示す模式図である。
【図１２】図１１に続く、ストリーム再生装置の動作を示す模式図である。
【図１３】図１２に続く、ストリーム再生装置の動作を示す模式図である。
【図１４】図１３に続く、ストリーム再生装置の動作を示す模式図である。
【図１５】図１１〜図１４と異なる、ストリーム再生装置の動作の他の例を示す模式図である。
【図１６】図１５に続く、ストリーム再生装置の動作を示す模式図である。
【図１７】図１６に続く、ストリーム再生装置の動作を示す模式図である。
【図１８】図１０に示すストリーム再生装置の区分動作の詳細を示すフロー図である。
【図１９】図１０に示すストリーム再生装置の受取指定動作の詳細を示すフロー図である。
【図２０】図１０に示すストリーム再生装置の出力指定動作の詳細を示すフロー図である。
【図２１】第４実施形態のバッファの基準値制御動作を示すフロー図である。
【図２２】第４実施形態のストリーム再生装置の動作の他の例を示す模式図である。
【図２３】第４実施形態のストリーム再生装置の動作の他の例を示す模式図である。
【図２４】第４実施形態のストリーム再生装置の動作の他の例を示す模式図である。
【図２５】第４実施形態のバッファの基準値制御動作を示すフロー図である。
【図２６】第４実施形態のストリーム再生装置の動作の他の例を示す模式図である。
【図２７】第４実施形態のストリーム再生装置の動作の他の例を示す模式図である。
【図２８】ストリーム再生装置の動作を示す模式図である。
【図２９】図２８に続く、ストリーム再生装置の動作を示す模式図である。
【図３０】図２９に続く、ストリーム再生装置の動作を示す模式図である。
【図３１】図３０に続く、ストリーム再生装置の動作を示す模式図である。
【図３２】図３１に続く、ストリーム再生装置の動作を示す模式図である。
【図３３】図３２に続く、ストリーム再生装置の動作を示す模式図である。
【図３４】第５実施形態のストリーム再生装置の動作を示すフロー図である。
【図３５】第５実施形態のストリーム再生装置の動作を示すフロー図である。
【符号の説明】
【０１３７】
１，２０，３０  ストリーム再生装置
２  ストリーミングサーバ
１０，３１  受信部
１１  受信バッファ
１２，３２  区分部
１３，３５  検出部
１４，３７  デコーダ
１５  デコードバッファ
１６  データ編集部
１７，３６  調整部
１８  再生部
２２  データストリーム生成部
２３  配信部
３３  第１バッファ
３４  第２バッファ
１０２  メモリ
３６１  制御部
３６２  受取指定部
３６３  出力指定部
【図１】
0004600698.tif 000002
【図２】
0004600698.tif 000003
【図３】
0004600698.tif 000004
【図４】
0004600698.tif 000005
【図５】
0004600698.tif 000006
【図６】
0004600698.tif 000007
【図７】
0004600698.tif 000008
【図８】
0004600698.tif 000009
【図９】
0004600698.tif 000010
【図１０】
0004600698.tif 000011
【図１１】
0004600698.tif 000012
【図１２】
0004600698.tif 000013
【図１３】
0004600698.tif 000014
【図１４】
0004600698.tif 000015
【図１５】
0004600698.tif 000016
【図１６】
0004600698.tif 000017
【図１７】
0004600698.tif 000018
【図１８】
0004600698.tif 000019
【図１９】
0004600698.tif 000020
【図２０】
0004600698.tif 000021
【図２１】
0004600698.tif 000022
【図２２】
0004600698.tif 000023
【図２３】
0004600698.tif 000024
【図２４】
0004600698.tif 000025
【図２５】
0004600698.tif 000026
【図２６】
0004600698.tif 000027
【図２７】
0004600698.tif 000028
【図３４】
0004600698.tif 000029
【図３５】
0004600698.tif 000030
【図２８】
0004600698.tif 000031
【図２９】
0004600698.tif 000032
【図３０】
0004600698.tif 000033
【図３１】
0004600698.tif 000034
【図３２】
0004600698.tif 000035
【図３３】
0004600698.tif 000036