JP2012010411A - ストリーム再生装置 - Google Patents

ストリーム再生装置 Download PDF

Info

Publication number
JP2012010411A
JP2012010411A JP2011221451A JP2011221451A JP2012010411A JP 2012010411 A JP2012010411 A JP 2012010411A JP 2011221451 A JP2011221451 A JP 2011221451A JP 2011221451 A JP2011221451 A JP 2011221451A JP 2012010411 A JP2012010411 A JP 2012010411A
Authority
JP
Japan
Prior art keywords
buffer
data
stream
frame
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011221451A
Other languages
English (en)
Other versions
JP5229516B2 (ja
Inventor
Shinya Tachimori
伸也 日月
Susumu Takemura
進 竹村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Onkyo Corp
Original Assignee
Onkyo Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Onkyo Corp filed Critical Onkyo Corp
Priority to JP2011221451A priority Critical patent/JP5229516B2/ja
Publication of JP2012010411A publication Critical patent/JP2012010411A/ja
Application granted granted Critical
Publication of JP5229516B2 publication Critical patent/JP5229516B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Systems (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)

Abstract

【課題】 複数のコンテンツが連結したデータストリームをストリーム再生するとき、各コンテンツの途中で再生が途切れるのを防止するストリーム再生装置を提供する。
【解決手段】 コンテンツの先頭フレームを受信したとき、複数のバッファのうちフレームを出力中のバッファのデータ量が、所定の下限値未満であるとき、データを出力中のバッファと異なる他のバッファを、コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する。複数のバッファのうちフレームを受け取り中のバッファのデータ量が、下限値を超えたとき、データを受け取り中のバッファを、フレームを前記再生手段に順次出力する出力バッファに指定する。
【選択図】図3

Description

本発明は、データストリームを再生するストリーム再生装置に関し、さらに詳しくは、ネットワークを介してストリーミング配信されたデータストリームを再生するストリーム再生装置、サーバとストリーム再生装置とを備えたストリーミングシステム、及び、コンピュータに実装されるストリーム再生プログラムに関する。
最近、地上波デジタル放送に代表されるように、放送施設からストリーミング配信される符号化データストリームを一般家庭内の受信装置で受信し、再生するシステムが提供されている。地上波デジタル放送は無線によるストリーミング配信を実現している。
一方、インターネット等のネットワークを介したリアルタイムストリーミング配信技術も開示されている。ネットワークを介したストリーミング配信では、データストリームを構成するパケットの到達レートが不安定になる、いわゆる遅延ゆらぎ(ジッタ)が発生する。受信装置がデータストリームを再生している最中に、遅延ゆらぎが生じてパケットの到達が遅れた場合、受信装置内にバッファリングされたデータストリームが枯渇する場合がある。このとき、再生中のコンテンツは途中で途切れてしまう。
このような再生中のコンテンツの途切れを防止するため、サンプルレートコンバータを利用したり、PLL(位相同期回路)の分周逓倍比を変更したりする方法がある。しかしながら、これらの方法は、コンテンツの再生レートを変更するため、再生音が聴感上変化してしまう。特に、複数の異なる曲を連続してストリーミング配信する場合、再生音が変化するのは好ましくない。
特開平10−285170号公報 特開平7−184196号公報
本発明の目的は、複数のコンテンツが連結したデータストリームをストリーム再生するとき、各コンテンツの途中で再生が途切れるのを防止するストリーム再生装置を提供することである。
本発明によるストリーム再生装置は、受信手段と、区分手段と、再生手段と、バッファ手段と、検出手段と、調整手段とを備える。受信手段は、複数のコンテンツが連結されたデータストリームを受信する。区分手段は、受信されたデータストリームをコンテンツごとに区分する。再生手段は、区分された各コンテンツを順次再生する。バッファ手段は、受信されたデータストリームを受け取って一時的に保持し、再生手段に出力する。検出手段は、バッファ手段に保持されているデータストリームのデータ量を検出する。調整手段は、検出手段の検出結果に基づいて、再生手段が各コンテンツを再生する間隔を調整する。
本発明によるストリーム再生装置は、データストリームをコンテンツごとに区分する。また、バッファ手段に保持されたデータ量を検出し、検出結果に応じて、コンテンツを再生する間隔を調整する。たとえば、バッファ手段に保持されるデータ量が少なければ、コンテンツを再生する間隔を広げる。このため、コンテンツの再生途中で、バッファ手段が保持するデータが枯渇し、再生が途切れるのを防止できる。
好ましくは、調整手段は、検出されたデータ量が基準データ量よりも少ない場合、基準データ量と検出されたデータ量との差分に基づいて調整時間を決定する。再生手段は、コンテンツの再生を完了してから決定された調整時間が経過したとき、次のコンテンツを再生する。
ストリーム再生装置は、基準データ量に対して受信手段のデータ量が少ないとき、調整時間を設定する。そして、コンテンツの再生が完了してから調整時間が経過するまで次のコンテンツを再生しない。そのため、調整時間中に受信手段に保持されるデータ量が増加し、コンテンツの再生中にデータが枯渇することによる再生の途切れを防止できる。
好ましくは、調整手段はさらに、検出されたデータ量が基準データ量よりも多い場合、基準データ量と検出されたデータ量との差分に基づいてデータ削除量を決定する。再生手段は、各コンテンツの先頭又は末尾からデータ削除量分のデータを除いた部分を再生する。
ストリーム再生装置は、基準データ量に対して受信手段のデータ量が多いとき、データ削除量を決定し、各コンテンツの先頭又は末尾からデータ削除量分のデータを削除する。これにより、バッファ手段が溢れる(オーバーフローする)のを抑制できる。また、コンテンツの先頭又は末尾は、無音であったり無映像である場合が多いため、これらのデータを削除しても、ユーザに与える違和感は少ない。
好ましくは、データストリーム内の各コンテンツは複数のフレームを含む。また、バッファ手段は、複数のバッファを含む。複数のバッファは、調整手段の指定に応じて複数のフレームを受け取り又は出力する。区分手段は、受信手段が各コンテンツの先頭フレームを受信したか否かを判断する。検知手段は、各バッファのデータ量を検出する。
調整手段はさらに、第1の判断手段と、受取指定手段と、出力指定手段とを含む。第1の判断手段は、受信手段がコンテンツの先頭フレームを受信したとき、複数のバッファのうちフレームを出力中の出力バッファのデータ量が、所定の下限値未満であるか否かを判断する。受取指定手段は、フレームを出力中のバッファのデータ量が下限値未満であるとき、データを出力中のバッファと異なる他のバッファを、コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する。出力指定手段は、複数のバッファのうちフレームを受け取り中のバッファのデータ量が、下限値を超えたとき、データを受け取り中のバッファを、複数のフレームを順次出力する出力バッファに指定する。
フレームを出力中のバッファのデータ量が下限値未満である場合、ストリーム再生装置が受けるデータ量が、再生されるデータ量よりも少ない。そのため、ストリーム再生装置は、次のコンテンツの先頭フレーム及びそれ以降のフレームを、現在フレームを出力中のバッファと異なる他のバッファに入力する。そして、次のコンテンツの先頭フレーム以降のフレームを受け取って保持するバッファのデータ量が下限値を超えるまで、フレームを出力しない。以上の構成により、コンテンツの再生が完了した後、次のコンテンツが再生されるまでの間、調整時間が挿入される。調整時間の挿入により、データの枯渇に起因してコンテンツが再生途中で途切れるのを防止できる。
好ましくは、ストリーム再生装置はさらに、クロック生成手段を備える。クロック生成手段は、再生クロックを生成する。再生手段は、再生クロックに応答して、フレームに基づくコンテンツを再生する。調整手段はさらに、出力バッファが受取バッファと同じバッファであるとき、出力バッファのデータ量に基づいて、再生クロックの周波数を調整するようクロック再生手段に指令する。
この場合、フレームを出力するバッファのデータ量に応じて、再生クロックが調整される。そのため、再生手段のコンテンツの再生速度が微調整される。その結果、バッファ内のデータが枯渇したり、バッファがオーバーフローしたりするのを抑制でき、コンテンツが再生途中で途切れるのを抑制できる。
好ましくは、出力指定手段は、フレームを受け取り中のバッファのデータ量が、下限値よりも大きい所定の基準値を超えたとき、データを受け取り中のバッファを、出力バッファに指定する。
この場合、バッファの切り替え回数を抑えることができる。そのため、コンテンツの連続再生回数を増加することができる。
好ましくは、調整手段はさらに、第2の判断手段を含む。第2の判断手段は、受信手段がコンテンツの先頭フレームを受信したとき、フレームを出力中のバッファのデータ量が下限値よりも大きい所定の上限値を超えているか否かを判断する。受取指定手段はさらに、データ量が上限値を超えているとき、フレームを出力中のバッファと異なる他のバッファを受取バッファに指定する。調整手段はさらに、消去手段を含む。消去手段は、出力指示手段が出力バッファを指定したとき、出力バッファに指定されたバッファと異なる他のバッファが保持するフレームを消去する。
フレームを出力中のバッファのデータ量が上限値を超える場合、ストリーム再生装置が受けるデータ量が、再生されるデータ量よりも多い。消去手段により、現在再生中のコンテンツの末尾のデータを削除した後、次のコンテンツを再生するため、バッファ手段がオーバーフローするのを抑制できる。また、コンテンツの末尾部分は、無音であったり無映像である場合が多いため、削除してもユーザに与える違和感は小さい。
好ましくは、各フレームは、コンテンツごとに規定された時刻管理情報を含む。区分手段は、受信手段が受信したフレームから時刻管理情報を読み出して、フレームが先頭フレームか否かを判断する。
この場合、データストリームからコンテンツを容易に区分できる。
本発明によるストリーミングシステムは、サーバと、サーバと接続されるストリーム再生装置とを備える。サーバは、配信手段を備える。配信手段は、複数のコンテンツを連結したデータストリームをストリーミング配信する。ストリーム再生装置は、上述の構成を備える。また、本発明によるストリーム再生プログラムは、上述のストリーム再生装置をコンピュータに実現する。
複数のコンテンツが連結したデータストリームをストリーム再生するとき、各コンテンツの途中で再生が途切れるのを防止するストリーム再生装置を提供することができる。
本発明の実施の形態によるストリーミングシステムの構成を示す機能ブロック図である。 図1中のストリーミングサーバから配信されるデータストリームのデータ構造を示す図である。 図1中のストリーム再生装置の構成を示す機能ブロック図である。 図1中のストリーム再生装置のハードウェア構成を示すブロック図である。 図3に示すストリーム再生装置の区分動作の詳細を示すフロー図である。 図3に示すストリーム再生装置の調整指示動作の詳細を示すフロー図である。 図3に示すストリーム再生装置の再生動作の詳細を示すフロー図である。 本発明の第2の実施の形態によるストリーム再生装置の構成を示す機能ブロック図である。 図8に示すストリーム再生装置の区分動作の詳細を示すフロー図である。 本発明の第3の実施の形態によるストリーム再生装置の構成を示す機能ブロック図である。 図10に示すストリーム再生装置の動作を示す模式図である。 図11に続く、ストリーム再生装置の動作を示す模式図である。 図12に続く、ストリーム再生装置の動作を示す模式図である。 図13に続く、ストリーム再生装置の動作を示す模式図である。 図11〜図14と異なる、ストリーム再生装置の動作の他の例を示す模式図である。 図15に続く、ストリーム再生装置の動作を示す模式図である。 図16に続く、ストリーム再生装置の動作を示す模式図である。 図10に示すストリーム再生装置の区分動作の詳細を示すフロー図である。 図10に示すストリーム再生装置の受取指定動作の詳細を示すフロー図である。 図10に示すストリーム再生装置の出力指定動作の詳細を示すフロー図である。 本発明の第4の実施の形態によるストリーム再生装置の構成を示す機能ブロック図である。 図21に示したストリーム再生装置のクロック調整動作の詳細を示すフロー図である。 バッファ特定情報テーブルのデータ構成を示す図である。
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
[第1の実施の形態]
[全体構成]
図1を参照して、本実施の形態によるストリーミングシステムは、ストリーム再生装置1と、ストリーミングサーバ2とを備える。ストリーミングサーバ2は、たとえば、放送施設に設置され、曲配信サービスを運営する会社で管理される。一方、ストリーム再生装置1は、たとえば、曲配信サービスの利用を契約したユーザの家庭内に設置される。
ストリーミングサーバ2は、ハードディスクドライブ(HDD)21と、データストリーム生成部22と、配信部23とを備える。
HDD21は、複数のコンテンツファイルを蓄積する。本実施の形態では、コンテンツファイルを曲ファイルとして説明する。なお、コンテンツは、曲であってもよいし、映像であってもよい。また映像と音声を含んでもよい。
HDD21に蓄積された各曲ファイルは、MPEG2、MPEG4、MP3等の符号化されたファイルである。以降、符号化された曲ファイルを符号化曲ファイルという。符号化曲ファイルは、複数のフレームで構成される。符号化曲ファイル内の各フレームは、そのフレームをいつ再生すべきかを示す時刻管理情報(以下、タイムスタンプという)を含む。たとえば、タイムスタンプは、符号化曲ファイル内における当該フレームの再生時刻を示す。ストリーム再生装置1は、ストリーミングサーバ2から符号化曲ファイルを受信したとき、符号化曲ファイル内のフレームのタイムスタンプに基づいて、フレームを順次デコードして出力する。つまり、ストリーム再生装置1は、タイムスタンプに基づいてフレームを順次再生する。
ストリーミングサーバ2内のデータストリーム生成部22は、HDD21から複数の符号化曲ファイルを抽出し、抽出された複数の符号化曲ファイルを連結してデータストリームを作成する。図2に、データストリーム生成部22で生成されたデータストリームの一例を示す。図2に示すように、データストリームDSは、複数の符号化曲ファイルMFが連結して構成される。また、各符号化曲ファイルMFは、複数のフレームFRを含む。以降、複数のフレームFRのうち、先頭のフレームFRを先頭フレームとよぶ。
配信部23は、生成されたデータストリームをストリーミング配信する。上述のとおり、ストリーミングサーバ2が放送局に設置される場合、放送局は、曲のリクエストをストリーム再生装置1のユーザから受け付ける。そして、リクエストされた複数の曲ファイルがHDD21から抽出され、データストリーム生成部22により、データストリームが作成される。作成されたデータストリームは、ネットワーク3を介してストリーム再生装置1にストリーミング配信される。
ストリーム再生装置1は、ネットワーク3を介してストリーミングサーバ2に接続される。ストリーム再生装置1は、上述のとおり、たとえば、ユーザの家庭内に設置される。ストリーム再生装置1は、ストリーミングサーバ2からストリーミング配信されるデータストリームを受信し、ストリーム再生する。具体的には、ストリーム再生装置1は、配信されたデータストリームをバッファに一時的に保持し(バッファリング)、保持されたデータストリームを読み出して、データストリームを構成する各符号化曲ファイルを連続してデコードし、出力する。
ストリーム再生装置1はさらに、バッファリングされたデータストリームが枯渇しないように、または、バッファが溢れない(オーバーフローしない)ように、再生される曲ファイルの再生間隔(曲間)を調整する。
図3を参照して、ストリーム再生装置1は、受信部10と、受信バッファ11と、区分部12と、検出部13と、調整部17と、再生部18とを備える。
受信部10は、ストリーミングサーバ2からストリーム配信されるデータストリームを受信する。より具体的には、データストリームを構成する複数のフレームを順次受信する。受信バッファ11は、受信されたデータストリームを受信部10から受け取り、一時的に保持する。つまり、受信バッファ11は、受信されたデータストリームをバッファリングする。そして、受信バッファ11は、保持しているデータストリーム内の複数のフレームを、区分部12を介して再生部18に順次出力する。
再生部18は、デコーダ14と、デコードバッファ15と、データ編集部16とを備える。デコーダ14は、第1デコーダ141と第2デコーダ142とを含む。第1デコーダ141及び第2デコーダ142は、符号化曲ファイルをデコードする。
区分部12は、受信バッファ11から連続して出力される複数のフレームを符号化曲ファイルごとに区分する。具体的には、区分部12は、フレーム内のタイムスタンプを読み出す。そして、読み出されたタイムスタンプに基づいて、符号化曲ファイルの先頭フレームを特定する。要するに、区分部12は、受信バッファ11から連続して出力されるフレームのうち、各コンテンツの先頭フレームを特定することにより、コンテンツを区分する。
区分部12はさらに、符号化曲ファイルの先頭フレームを特定したとき、先頭フレームから、出力先のデコーダを変更する。たとえば、区分部12が、受信バッファ11から出力されたフレームを第1デコーダ141に出力している最中に、新たな符号化曲ファイルの先頭フレームを特定したとき、区分部12は、フレームの出力先を第1デコーダ141から第2デコーダ142に切り替える。そして、特定された先頭フレーム及び先頭フレーム以降に受信バッファ11にバッファリングされたフレームを第2デコーダ142に順次出力する。要するに、区分部12は、符号化曲ファイルごとに、出力先のデコーダを切り替える。
再生部18内のデコードバッファ15は、第1デコードバッファ151と第2デコードバッファ152とを含む。第1デコードバッファ151は、第1デコーダ141によりデコードされた曲ファイルをバッファリングする。第2デコードバッファ152は、第2デコーダ142によりデコードされた曲ファイルをバッファリングする。
第1及び第2デコードバッファは、順番に、バッファリングされた曲ファイルを出力する。具体的には、第1デコードバッファ151が曲ファイルを出力した後、第2デコードバッファ152が曲ファイルを出力する。曲ファイルの出力のタイミングは、調整部17により決定される。
検出部13は、受信バッファ11にバッファリングされたデータストリーム(複数のフレーム)のデータ量を、所定期間ごとに検出する。
調整部17は、検出部13の検出結果に基づいて、再生部18から出力される曲ファイルの曲間を調整する。具体的には、調整部17は、検出部13により検出されたデータ量(以下、検出データ量という)を基準データ量Vref1と比較する。ここで、基準データ量Vref1は、通常再生時に、再生される曲が再生途中で途切れたり、受信バッファ11が溢れたり(オーバーフロー)しない、理想的なデータ量である。
検出データ量が基準データ量Vref1未満である場合、ストリーム再生装置1がストリーミングサーバ2から受信するデータ量よりも、ストリーム再生装置1が再生するデータ量の方が多い。以降、この状態を「受信データ過少状態」という。この場合、調整部17は、再生される曲の曲間を調整する。具体的には、調整部17は、検出データ量と基準データ量Vrefとの差分に基づいて調整時間を決定する。そして、データ編集部16に決定された調整時間分の曲間を設けるよう指示する。
データ編集部16は、調整部17の指示に基づいて、曲ファイルの出力間隔(曲間)を調整する。具体的には、曲ファイルの出力を完了した後、決定された調整時間分の無音データを生成して出力する。そして、調整時間分の無音データを出力した後、次の曲ファイルを出力する。要するに、受信データ過少状態のときは、曲間を広く設けることで、受信バッファ11が枯渇するのを抑制する。そのため、再生中の曲の途中でフレームが枯渇し音切れ発生するのを防止できる。
一方、検出データ量が基準データ量Vref1よりも多い場合、ストリーム再生装置1がストリーミングサーバ2から受信するデータ量が、ストリーム再生装置1が再生するデータ量よりも多い。この状態を「受信データ過多状態」という。この場合、調整部17は、検出データ量と基準データ量Vref1との差分に基づいてフレーム削除量を決定する。そして、再生部18に、各デコードバッファ151及び152にバッファリングされる曲ファイルの先頭又は末尾から決定されたフレーム削除量分のフレームを削除して曲を再生するよう指示する。
データ編集部16は、調整部17の指示に基づいて、各曲ファイルの先頭又は末尾からフレーム削除量分のフレームを除いて出力する。要するに、受信データ過多状態のときは、各曲ファイルの先頭又は末尾のフレームを除いて再生することで、受信バッファ11がオーバーフローするのを抑制する。曲ファイルの先頭及び末尾のフレームの多くは、無音データである。そのため、先頭又は末尾フレームを除いても、ユーザに違和感を与えにくい。
上述の各構成10〜18は、図4に示すハードウェア構成により実現される。ストリーム再生装置1は、CPU101と、メモリ102と、ハードディスクドライブ(HDD)103と、通信部104とを備え、これらはバス105で相互に接続される。たとえば、HDD103に格納されたストリーム再生プログラムをメモリ102に読み出し、読み出された曲再生プログラムをCPU101で実行することにより、ストリーム再生装置1の各構成10〜18が実現される。
[動作]
以下、フロー図を用いてストリーム再生装置1の動作を詳述する。
ストリーム再生装置1の動作は、大きく次の3つに分けられる。1つ目は、区分部12が、受信部10で連続して受信されるフレームを曲ファイルごとに区分する動作(区分動作)である。2つ目は、受信バッファ11のデータ量に基づいて、調整部17が、再生曲の曲間の調整、又は、再生曲の一部の削除を指示する動作(調整指示動作)である。3つ目は、調整部17の指示に応じて、再生部18が曲を再生する動作(再生動作)である。以下、区分動作、調整指示動作及び再生動作について説明する。
[区分動作]
図5を参照して、ストリーム再生装置1内の区分部12は、受信バッファ11からフレームFR(n)を受信する(S1)。受信バッファ11は、受信部10から受けたフレーム順に、フレームFR(n)を出力する。続いて、区分部12は、フレームFR(n)に含まれるタイムスタンプT(n)を読み出す(S2)。そして、読み出されたタイムスタンプT(n)に基づいて、ステップS1で受信したフレームFR(n)が、新たな符号化曲ファイルの先頭フレームか否かを判断する(S3)。一般的に、曲ファイルの先頭フレームのタイムスタンプは、初期値の「0」である。そのため、区分部12は、タイムスタンプを参照することで、曲ファイルの先頭フレームを特定できる。
また、一般的に、あるフレームのタイムスタンプに、そのフレームの再生時間を加算すれば、次のフレームのタイムスタンプとなる。つまり、同じ曲ファイル内のフレームでは、先頭から順にタイムスタンプが徐々に増加する。そして、連続するフレームのタイムスタンプの差分は、所定の数値範囲内となる。一方、ある曲の末尾のフレームのタイムスタンプと、次の曲の先頭のフレームのタイムスタンプとの差分は、同一曲ファイル内の連続するフレームのタイムスタンプの差分よりもはるかに大きい。そのため、フレームFR(n)のタイムスタンプと、フレームFR(n−1)のタイムスタンプとの差分を算出し、算出された差分が所定値よりも大きい場合、フレームFR(n)を先頭フレームと判断してもよい。
ステップS3での判断の結果、フレームFR(n)が先頭フレームではない場合(S3でNO)、フレームFR(n)は、以前に区分部12を通過したフレームと同じ曲ファイルに属する。そのため、区分部12は、指定されているデコーダ(以下、指定デコーダという)にフレームFR(n)を出力する。指定デコーダの識別情報(指定デコーダ情報)は、メモリ102に格納されている。区分部12は、指定デコーダ情報に基づいて指定デコーダを特定し、特定された指定デコーダにフレームFR(n)を出力する(S5)。以下、指定デコーダを第1デコーダ141として、説明を続ける。
ステップS3での判断の結果、フレームFR(n)が新たな曲ファイルの先頭フレームである場合(S3でYES)、区分部12は、指定デコーダを第1デコーダ141から第2デコーダ142に切り替える(S4)。具体的には、区分部12は、指定デコーダ情報を第1デコーダ141の識別情報から第2デコーダ142の識別情報に変更する。そして、変更された指定デコーダ情報に基づいて、第2デコーダ142に先頭フレームFR(n)を出力する(S5)。
以上の工程により、区分部12は、ストリーム再生装置1が受信したデータストリームを、複数の符号化曲ファイルに区分する。区分部12は、さらに、ある符号化曲ファイルと、その符号化曲ファイルの次に受信した新たな符号化曲ファイルとを、それぞれ異なるデコーダ141及び142に出力する。各デコーダ141及び142は、それぞれ符号化曲ファイルをデコードし、デコードされた曲ファイルを別々のデコードバッファ(151及び152)に格納する。
[調整指示動作]
調整部17は、受信バッファ11が保持しているデータ量に基づいて、再生曲の曲間の調整を指示したり、再生曲の先頭又は末尾のフレームの削除を指示する。
図6を参照して、調整部17は、所定時間ΔTごとに、調整指示動作を実行する(S11)。所定時間ΔTが経過したとき(S11でYES)、調整部17は、検出部13に受信バッファ11が保持するデータ量を要求する(S12)。検出部13は、調整部17からの要求を受け、受信バッファ11のデータ量を検出する。そして、検出されたデータ量(検出データ量)Vdetを調整部17に通知する。
調整部17は検出データ量Vdetを取得する(S13)。続いて、調整部17は、式(1)に基づいて、検出データ量Vdetと基準データ量Vref1との差分ΔVを求める(S14)。
ΔV=Vdet−Vref1 (1)
なお、基準データ量Vref1は予めメモリ102に格納されている。
調整部17はさらに、ステップS14で算出された差分ΔVを利用して、式(2)で示される調整時間ΔADJを算出する(S15)。
ΔADJ=ΔV(bit)/圧縮ビットレート(bps)/曲ファイル再生数 (2)
ここで、「曲ファイル再生数」とは、所定期間ΔT内に再生される曲ファイル数である。例えば、所定期間ΔTが60分であり、曲ファイルの平均再生時間が4分である場合、曲ファイル再生数を「15」とする。曲ファイル再生数は、予めメモリ102に格納されていてもよい。また、調整部17が、所定期間ΔT内で実際に再生された曲ファイル数をカウントしたものを用いてもよい。また、式(2)で求めた値に1以上の係数αを乗じたものを調整時間ΔADJとしてもよい。算出された調整時間ΔADJはメモリ102に格納される。
続いて、調整部17は、ステップS15で算出された調整時間ΔADJが0よりも大きいか否かを判断する(S16及びS17)。調整時間ΔADJが0よりも小さいとき(S16でYES)、調整部17は、データ編集部16に、曲間に調整時間ΔADJ分の無音データを挿入するよう指示する(S18)。具体的には、メモリ102内に格納されている指示情報を、挿入を示す指示(以下、挿入指示という)に設定する。調整時間ΔADJが0よりも小さい場合、検出データ量Vdetが基準データ量Vref1よりも少ない。つまり、ストリーム再生装置1は、受信データ過少状態である。そのため、調整部17は、再生曲に曲間を設けて、再生中の曲が途中で途切れないようにする。
一方、調整時間ΔADJが0よりも大きい場合(S16でNO、S17でYES)、調整部17は、データ編集部16に、再生曲の先頭又は末尾を調整時間ΔADJ分だけ除いて出力するよう指示する(S19)。具体的には、メモリ102内に格納されている指示情報を、削除を示す指示(以下、削除指示という)に設定する。調整時間ΔADJが0よりも大きい場合、検出データ量Vdetが基準データ量Vref1よりも多い。つまり、ストリーム再生装置1は、受信データ過多状態である。そのため、調整部17は、曲の先頭又は末尾フレームを除いて再生することで、受信バッファ11がオーバーフローするのを抑制する。調整時間ΔADJが0である場合(S16及びS17でNO)、受信バッファのデータ量は、基準データ量Vref1と同じであり、理想的なデータ量である。そのため、調整部17は、メモリ102内の指示情報を、曲ファイルをそのまま再生することを示す指示(以下、通常再生指示)に設定する。
[再生動作]
再生部18は、調整部17の指示に応じて曲を再生する。
図7を参照して、再生部18内のデータ編集部16は、2つのデコードバッファ151及び152のうち、デコードされた曲ファイルを読み出すデコードバッファ(以下、出力バッファという)を特定する。ここでは、出力バッファが第1デコードバッファ151であるとして説明を続ける。データ編集部16は、第1デコードバッファ151からデコードされた曲ファイルを読み出す(S31)。出力バッファに関する情報(出力バッファ情報)は、メモリ102に格納されている。出力バッファが第1デコードバッファ151である場合、出力バッファ情報は第1デコードバッファ151を示す。
第1デコードバッファ151から曲ファイルのフレームを全て読み出し終えたとき(S32でYES)、データ編集部16は、出力バッファを第1デコードバッファ151から第2デコードバッファ152に切り替える(S33)。これにより、データ編集部16は、次の曲ファイルを出力する準備ができる。このとき、メモリ102内の出力バッファ情報は、第2デコードバッファ152に変更される。
続いて、データ編集部16は、メモリ102から指示情報を読み出す(S34)。指示情報が挿入指示の場合(S35でYES)、データ編集部16は、調整時間ΔADJ分の長さの無音データを生成し、出力する(S36)。無音データを出力した後、データ編集部16は、ステップS31に戻って出力バッファ(ステップS33で新たに指定された第2デコードバッファ152)から曲ファイルを読み出して出力する。要するに、曲間に調整時間ADJ分の無音データを挿入する。これにより、再生部18は、曲ファイルの再生を完了してから調整時間ΔADJが経過した後に、次の曲ファイルの再生を開始する。
一方、ステップS34で読み出した指示情報が削除指示の場合(S35でNO、S37でYES)、出力バッファ(ここでは第2デコードバッファ152)内の曲ファイルのうち、先頭から調整時間ΔADJ分の複数のフレーム又は末尾から調整時間ΔADJ分の複数のフレームを特定する(S38)。そして、ステップS31に戻って曲ファイルを読み出すとき、ステップS38で特定されたフレームを除いた部分を読み出して出力する(S31)。これにより、再生部18は、曲ファイルの先頭又は末尾の一部を除いて再生する。曲ファイルの先頭部分及び末尾部分は無音部分である場合が多い。そのため、先頭部分又は末尾部分のフレームを除いて再生しても、ユーザは違和感なく聴くことができる。また、受信バッファ11がオーバーフローするのを抑制できる。
なお、指示情報が通常再生指示である場合(S35及びS37でNO)、データ編集部16は、無音データを挿入したり、曲ファイルの先頭又は末尾部分のうち調整時間ΔADJ分の複数のフレームを特定したりすることなく、出力デコーダから曲ファイルを読み出して外部に出力する(S31)。
以上、ストリーム再生装置1は、受信バッファ11のデータ量を所定期間ごとに検出し、検出されたデータ量Vdetと基準データ量Vref1との差分に基づいて、受信データ過少状態か受信データ過多状態かを判断する。そして、受信データ過少状態のとき、曲間に調整時間を挿入することで、再生曲が途中で途切れるのを防ぐ。一方、受信データ過多状態のとき、各曲の先頭又は末尾フレームの一部を除いて再生することをで、受信バッファ11がオーバーフローするのを防ぐ。
なお、図6中のステップS16及び17では、調整部17は、調整時間ΔADJが0より大きいか否かに基づいて、指示内容を決定した。しかしながら、たとえば、調整時間ΔADJが0を含む所定の範囲内である場合、調整部17は指示情報を通常再生指示としてもよい。要するに、検出データ量Vdetが基準データ量Vref1から所定の範囲内であれば、無音時間の挿入及びフレームの削除を指示しなくてもよい。
[第2の実施の形態]
第1の実施の形態では、ストリーム再生装置1は、2つのデコーダ(第1デコーダ141、第2デコーダ)と2つのデコードバッファ(第1デコードバッファ151、第2デコードバッファ152)を備えたが、デコーダの処理能力が高い場合、デコーダ及びデコードバッファは1つでもよい。
図8を参照して、第2の実施の形態によるストリーム再生装置20は、1つのデコーダ143と、1つのデコードバッファ153とを備える。その他の構成はストリーム再生装置1と同じである。
ストリーム再生装置20は、第1の実施の形態と同様に、区分動作と、調整指示動作と、再生動作とを実行する。このうち、調整指示動作は第1の実施の形態と同じである。また、再生動作は、図7中のステップS33を除いたステップを実行する。以下、区分動作について説明する。
[区分動作]
図9を参照して、区分部12は、第1の実施の形態と同様に、受信バッファ11から出力されるデータストリームを符号化曲ファイルごとに区分する。ただし、ストリーム再生装置20のデコーダ及びデコードバッファは1つだけ(デコーダ143及びデコードバッファ153)である。そのため、区分部12は、デコードバッファ153が曲ファイルの出力を完了するまで、新たな符号化曲ファイルのフレームの出力を停止する。要するに、区分部12は、デコードバッファ153が曲ファイルの出力を完了するごとに、新たな符号化曲ファイルをデコーダ143に出力する。これにより、複数の曲ファイルのフレームがデコードバッファ153内に混在するのを防ぐ。
図9を参照して、ステップS1〜S3までの動作は図4と同じである。区分部12が、新たな符号化曲ファイルの先頭フレームを受けたとき(S3でYES)、区分部12は、そのフレームの出力を停止する(S7)。そして、デコードバッファ153が保持している曲ファイルのフレームを全て出力し終えた後(S8でYES)、ステップS7で止めていたフレームデータの出力を開始する(S6)。調整部17は、デコードバッファ153が全てのフレームを出力し終えたか否かを監視する。そして、デコードバッファ153が全てのフレームを出力し終えたとき、調整部17は、区分部12に出力完了通知を出力する。区分部12は、出力完了通知を受けたとき(S8でYES)、フレームの出力を開始する(S6)。以上の動作により、区分部12は、曲ファイルごとに区分することができる。
[第3の実施の形態]
図10を参照して、第3の実施の形態によるストリーム再生装置30は、受信部31と、区分部32と、第1バッファ33と、第2バッファ34と、検出部35と、調整部36と、再生部38とを備える。再生部38は、デコーダ37を含む。
本実施の形態では、2つのバッファ33及び34を配置する。検出部35は、第1バッファ33及び第2バッファ34が蓄積するデータ量を求め、求めたデータ量をメモリ102に格納する。
調整部36は、メモリ102に格納されたデータ量に基づいて、区分部32から出力されたフレームの受け取り先となるバッファ(以下、受取バッファという)、及び、デコーダ37に出力されるデータの出力元となるバッファ(以下、出力バッファという)を指定する。
調整部36は、制御部361と、受取指定部362と、出力指定部363とを含む。制御部361は、検出部35により検出された第1バッファ33及び第2バッファ34のデータ量が所定の基準値よりも大きいか否か判断し、判断結果に基づいて、受取指定部362及び出力指定部363に指示を出力する。
受取指定部362は、第1及び第2バッファ33、34のうち、受信部31が受けたフレームの受取先となるバッファ(受取バッファ)を指定する。出力指定部363は、第1及び第2バッファ33、34のうち、デコーダ37にフレームを出力するバッファ(出力バッファ)を指定する。
[動作]
ストリーム再生装置30内の区分部32は、受信部31から受けたデータストリームを、曲ファイルごとに区分する(区分動作)。検出部35は、第1及び第2バッファ33、34のデータ量を検出する。調整部36は、検出されたデータ量に基づいて、区分部32から出力されるフレームを受け取って保持する受取バッファを指定する。また、検出されたデータ量に基づいて、フレームをデコーダ37に出力する出力バッファを指定する。このとき、調整部36は、デコーダによりデコードされて外部に出力される曲ファイルが、曲の途中で途切れないように、受取及び出力バッファを指定する(調整動作)。
上述のストリーム再生装置30の動作を模式図を用いて説明する。図11を参照して、調整部36は、初めに、第1バッファ33を受取バッファに指定する。そのため、区分部32から出力されたフレームは第1バッファ33に入力され、保持される。第1バッファ33のデータ量は、検出部35により検出される。検出された第1バッファ33のデータ量が基準値Vref2を超えたとき、調整部36は、第1バッファ33を出力バッファに指定する。これにより、第1バッファ33は、保持しているフレームをデコーダ37に順次出力する(図11参照)。
[受信データ過少状態でのストリーム再生装置の動作]
区分部32が新たな符号化曲ファイルの先頭フレームを受けたとき、調整部36は、第1バッファ33のデータ量を確認する。このとき、図12に示すように、第1バッファ33のデータ量が下限値Vmin未満であると仮定する。このとき、調整部36は、受取バッファを第1バッファ33から第2バッファ34に切り替える。つまり、第2バッファ34を新たな受取バッファに指定する。
データ量が下限値Vmin未満である場合、ストリーム再生装置30が受けるデータ量よりも、再生されるデータ量の方が多い。つまり、ストリーム再生装置30は、受信データ過少状態である。この場合、第1バッファ33にフレームを継続してバッファリングし続ければ、デコーダ37に出力すべきフレームが、再生曲の途中で枯渇する。そのため、ストリーム再生装置30から出力される曲は、曲の途中で音切れする。このような再生曲の音切れを防止するため、調整部36は、受取バッファを切り替える。
新たな曲ファイルのフレームが第2バッファ34にバッファリングされている最中に、図13に示すように、第1バッファ33に保持されていた全てのフレームがデコーダ37に出力される。このとき、1曲分の曲ファイルの出力が完了する。
調整部36はさらに、第2バッファ34のデータ量を所定期間ごとに確認し、第2バッファ34のデータ量が基準値Vref2を超えたか否かを判断する。そして、データ量が基準値Vref2を超えるまで、調整部36は、第2バッファ34からフレームを出力しない。調整部36が第2バッファ34からフレームを出力しない間、デコーダ37はデコード処理を行わない。そのため、この間、ストリーム再生装置30は無音状態となる。
図14に示すように、第2バッファ34のデータ量が基準値Vref2を超えたとき、調整部36は、第2バッファ34を出力バッファに指定する。出力バッファに指定された第2バッファ34は、デコーダ37にフレームを出力する。このとき、ストリーム再生装置30は、新たな曲を再生する。要するに、ストリーム再生装置30が、受信データ過少状態であるとき、曲の再生が完了してから次の曲が再生されるまでの間、無音の調整時間が挿入される。曲間に調整時間を設けることにより、再生曲が再生途中で途切れるのを防止できる。
[受信データ過多状態でのストリーム再生装置の動作]
受信データ過多状態の場合のストリーム再生装置30の動作は以下のとおりである。第1バッファ33がフレームを受信しながら、デコーダ37にフレームを出力している最中に、区分部32が新たな曲の先頭フレームを受信したと仮定する。このとき、調整部36は、第1バッファ33のデータ量を確認する。確認した結果、図15に示すように、データ量が上限値Vmaxを超えるとき、調整部36は、第2バッファ34を受取バッファに指定する。つまり、受取バッファを第1バッファ33から第2バッファ34に切り替える。これにより、第2バッファ34が先頭フレーム及びそれ以降のフレームを受け取って保持する。
続いて、調整部36は、受取バッファである第2バッファ34のデータ量を監視する。図16に示すように、第2バッファ34のデータ量が基準値Vref2を超えたとき、調整部36は、第2バッファ34を出力バッファに指定する。その結果、図17に示すように、第2バッファ34は、保持しているフレームをデコーダ37に順次出力する。調整部36はさらに、第2バッファ34を出力バッファに指定したとき、他のバッファ(第1バッファ33)に残存するデータを削除する。たとえば、図16に示すように、第2バッファ34のデータ量が基準値Vref2を超えたとき、第1バッファ33にはまだデータが残存していると仮定する。この場合、調整部36は、第2バッファ34を出力バッファに指定するとともに、第1バッファ33に残存するデータを削除する(図17参照)。そのため、第1バッファ33に蓄積されていた曲ファイルの末尾部分のデータは出力されず、カットされる。この場合、曲の末尾部分は再生がカットされるが、曲の末尾部分は無音である場合が多い。そのため、再生曲の途中で音切れが発生するよりも、ユーザに与える違和感を抑えることができる。
以上のとおり、ストリーム再生装置30は、2つのバッファ33及び34のデータ量を所定の基準値(Vmax、Vref2、Vmin)と比較する。そして、比較結果に基づいて、受取バッファ及び出力バッファを指定する。これにより、ストリーム再生装置30は、受信データ過少状態の時には曲間に調整時間を挿入し、再生曲の途中で音切れが発生するのを抑制する。また、受信データ過多状態の時には曲ファイルの末尾データを削除して、再生曲の途中で音切れが発生するのを防止する。なお、下限値Vminは基準値Vref2と同じであってもよい。以下、フロー図を用いてストリーム再生装置30の動作の詳細を説明する。
[区分動作]
図18を参照して、ステップS1〜S3の動作は、図4と同じである。つまり、区分部32は、フレームFR(n)からタイムスタンプT(n)を読み出し、タイムスタンプT(n)に基づいて、新たな曲ファイルの先頭フレームを特定する。これにより、データストリームを曲ファイルごとに区分できる。
区分部32は、受信部31が受信したフレームが先頭フレームであると判断したとき(S3でYES)、調整部36に区分通知を出力する(S9)。
[調整動作]
調整部36は、区分部32から区分通知を受けるごとに受取バッファの指定を判断する受取指定動作と、受取バッファのデータ量が基準値Vref2を超えるごとに出力バッファの指定を判断する出力指定動作とを実行する。以下、受取指定動作及び出力指定動作について説明する。
[受取指定動作]
調整部36は、区分部32から区分通知を受けるごとに、受取指定動作を実行する。図19を参照して、調整部36内の制御部361は、区分通知を受けたとき(S61でYES)、現在フレームをデコーダ37に出力している出力バッファのデータ量を読み出す(S62)。出力バッファを特定するための情報(出力バッファ特定情報)はメモリ102に格納されている。出力バッファが第1バッファ33である場合、出力バッファ特定情報は、第1バッファ33を示す。各バッファ33、34のデータ量は、検出部35により所定期間ごとに検出され、メモリ102に格納される。制御部361は、区分通知を受けたとき、出力バッファ特定情報に基づいて出力バッファを特定し、特定された出力バッファのデータ量をメモリ102から読み出す。以下、出力バッファを第1バッファ33と仮定して説明する。なお、調整部36が区分通知を受けるとき、通常は、出力バッファに指定されているバッファは、区分部32からフレームを受け取っている。つまり、出力バッファに指定されているバッファは、同時に受取バッファにも指定されている。そのため、第1バッファ33は、フレームを受け取って保持し、かつ、フレームをデコーダ37に出力している。
制御部361は、ステップS62で読み出した第1バッファ33のデータ量が所定範囲内の量か否かを判断する(S63及びS64)。
ステップS63で判断の結果、データ量が下限値Vmin未満である場合(S63でYES)、ストリーム再生装置30は、受信データ過少状態である。そのため、調整部36は、受取バッファを切り替える(S65、図12参照)。具体的には、制御部361は、メモリ102に格納された、受取バッファを特定するための情報(受取バッファ特定情報)を第2バッファ34に変更する。そして、受取指定部362に、区分部32から受けたフレームを第2バッファ34に出力するよう指示する。受取指定部362は、制御部361からの指示を受け、新たな曲ファイルの先頭フレーム及びそれ以降に受信部31で受信されたフレームを、第2バッファ34に出力する。これにより、第2バッファ34が受取バッファとして、新たな曲ファイルのフレームをバッファリングする。
一方、ステップS62で読み出された第1バッファ33のデータ量が上限値Vmaxを超えている場合(S63でNO、S64でYES)、ストリーム再生装置30は、受信データ過多状態である。そのため、調整部36は、受取バッファを切り替え(S65)、第2バッファ34に先頭フレーム及びそれ以降のフレームを出力する(S66)。
要するに、調整部36は、ストリーム再生装置30が受信データ過少状態又は受信データ過多状態と判断したとき、受取バッファを切り替える。
[出力指定動作]
続いて、調整部36の出力指定動作について説明する。図20を参照して、調整部36は、所定期間ごとに出力指定動作を実行する。調整部36内の制御部361は、まず、メモリ102に格納された受取バッファ特定情報を用いて、受取バッファを特定する(S71)。特定された受取バッファが第2バッファ34であるとして説明を続ける。
制御部361は、受取バッファである第2バッファ34のデータ量を読み出す(S72)。そして、読み出されたデータ量が基準値Vref2よりも大きいか否かを判断する(S73)。データ量が基準値Vref2よりも小さい場合(S73でNO)、調整部36は出力指定動作を終了する。つまりこの場合、出力バッファは切り替わらない。
一方、ステップS73での判断の結果、データ量が基準値Vref2を超えた場合(S73でYES)、制御部361は、出力バッファの指定を検討する(S74〜S76)。
制御部361はまず、現在の出力バッファを特定する(S74)。ストリーム再生装置30は、出力バッファを特定するための情報(以下、出力バッファ特定情報という)を、受取バッファ特定情報と同様に、メモリ102に格納している。制御部361は、メモリ102から出力バッファ特定情報を読み出し、出力バッファを特定する。
出力バッファを特定した後、制御部361は、出力バッファが、受取バッファと同じ第2バッファ34か否かを判断する(S75)。ステップS74で特定された出力バッファが第1バッファ33である場合、出力バッファ(第1バッファ33)は、受取バッファ(第2バッファ34)と異なる(S75でNO)。そのため、制御部361は、出力バッファを第1バッファ33から第2バッファ34に切り替える(S76、図14及び図17参照)。換言すれば、制御部361は、出力バッファ特定情報を第1バッファ33から第2バッファ34に変更し、第2バッファ34を出力バッファに指定する。
制御部361は、出力バッファを第2バッファ34に指定するよう出力指定部363に指示する。出力指定部363は、第2バッファ34のデータを受け取り、デコーダ37に出力する。これにより、第2バッファ34が出力バッファとして、デコーダ37にフレームを出力する。
制御部361はさらに、出力バッファではないバッファ(ここでは、第1バッファ33)に残存する全てのフレームを削除する(S77)。ストリーム再生装置30が受信データ過多状態である場合、ステップS77の動作により、第1バッファ33に残存したフレームを消去する(図17参照)。
以上の動作により、ストリーム再生装置30が受信データ過少状態である場合(図12)、調整部36は、第1バッファ33が蓄積された全てのフレームを出力し終えても、第2バッファ34にフレームが所定量(Vref2より多い量)バッファリングされるまでフレームをデコーダ37に出力しない。この間、デコーダ37はフレームを受け取らないため、デコード処理を停止する。その結果、無音期間が発生する。調整部36は、第2バッファ34が、再生曲の途中で音切れが発生しない程度に十分なデータ量(Vref2より多い量)を蓄積した後、第2バッファ34を出力バッファに指定して、第2バッファ34のデータをデコーダ37に出力する。要するに、ストリーム再生装置30が受信データ過少状態のとき、調整部36は、曲間に無音の調整時間を挿入することで、再生曲の途中で音切れが発生するのを抑制する。
また、ストリーム再生装置30が受信データ過多状態である場合、ステップS77の動作により、先に出力された曲ファイルの末尾をカットして、次曲ファイルを出力する。これにより、バッファがオーバーフローするのを防ぐことができる。また、曲の末尾部分は無音である場合が多いため、曲の途中で音切れが発生するよりも、ユーザに与える違和感を抑えることができる。
上述の第3の実施の形態では、下限値Vminと基準値Vref2とを異なる値としたが、下限値Vminと基準値Vref2とは同じ値であってもよい。より具体的には、図20に示す出力指定動作中のステップS73において、制御部361は、受取バッファのデータ量が下限値Vminを超えたか否かを判断し、その判断結果に基づいて、出力バッファを指定してもよい。要するに、下限値Vminと基準値Vref2とは、第1及び第2バッファ33、34のデータ量が、再生曲の再生途中で音切れが発生しない程度のデータ量となるような基準であればよい。
なお、基準値Vref2が下限値Vminに近づくほど、バッファの切り替え回数(指定変更回数)が増加する。そのため、曲の再生が完了するごとに、曲間に調整時間が挿入される。基準値Vref2と下限値Vminとの差が大きいほど、バッファの切り替え回数は低減される。つまり、曲が連続再生される機会が増加し、曲が再生されるごとに曲間に調整時間が挿入されるのを抑制できる。
また、第3の実施の形態では、受信データ過少状態のとき、バッファからフレームを出力しない間(すなわち、調整時間中)、デコーダ37はデコード処理を行わないとしたが、調整時間中に、無音データがデコーダ37に挿入されてもよい。
[第4の実施の形態]
第3の実施の形態では、第1バッファ33及び第2バッファ34を用いて曲間に調整時間を挿入して、曲の途中で音切れするのを抑制した。第4の実施の形態によるストリーム再生装置ではさらに、第1及び第2バッファ33,34がバッファリングするデータ量に基づいて、再生クロックを調整する。
図21を参照して、第4の実施の形態によるストリーム再生装置40は、ストリーム再生装置30と比較して、再生部38に代えて、再生部39とクロック生成部393とを備える。他の構成はストリーム再生装置30と同じである。
再生部39は、デコーダ37と、デジタルオーディオインタフェース部(Digital Audio Interface:以下、DAIという)391と、デジタルアナログ変換部(Digital Analog Converter:以下DACという)392とを備える。なお、DAI391、DAC392及びクロック生成部393はいずれもハードウェアである。
再生部39は、再生クロックに応答して、第1及び第2バッファ33、34から送信されたフレームに基づくコンテンツを再生する。
より具体的には、デコーダ37は、第1及び第2バッファ33、34からフレームを受け、デコードする。DAI391は、デコードされたデジタル信号をデコーダ37から受け取る。そして、再生クロックに応じた出力速度で、受け取ったデータを出力する。DAC392は、DAI391から送信されたデジタル信号をアナログ信号に変換して、外部に出力する。
クロック生成部393は、DAI391に出力される再生クロック(信号)を生成する。具体的には、クロック生成部393は、制御部361からの指令に応答して、生成される再生クロックの周波数を調整する。
制御部361は、出力バッファが受取バッファと同じバッファであるとき、出力バッファに指定されたバッファのデータ量を監視する。そして、データ量に基づいて、クロック生成部393に対して再生クロックの周波数を調整するよう指示する。
具体的には、出力バッファのデータ量が少な過ぎるとき、つまり、受信データ過少状態のとき、再生クロックの周波数を下げるようクロック生成部393に指示する。クロック生成部393は、指示に応じて再生クロックの周波数を下げる。DAI391は、再生クロックに応答して、データの出力速度を下げる。以上の結果、曲の再生途中で音切れが発生するのを抑制できる。
一方、出力バッファのデータ量が多すぎるとき、つまり、受信データ過多状態のとき、制御部361は、再生クロックの周波数を上げるようクロック生成部393に指示する。クロック生成部393は、指示に応じて再生クロックの周波数を上げるため、DAI391は、データの出力速度を上げる。その結果、出力バッファがオーバーフローするのを抑制できる。
このような再生クロックの調整処理は、受信バッファと出力バッファとが同じバッファを指定している時間が長い場合に有効である。このような場合として、たとえば、ライブ音声の再生や、再生時間の長い曲ファイルの再生等が考えられる。
ストリーム再生装置40の動作の詳細を説明する。ストリーム再生装置40は、第3の実施の形態と同じ動作(区分動作及び調整動作)を実行し、かつ、以下に説明するクロック調整動作も実行する。
[クロック調整動作]
制御部361は、所定時間ごとにクロック調整動作を実行する。図22を参照して、制御部361はまず、出力バッファ及び受取バッファを特定する(S101)。具体的には、制御部361は、メモリ102内に格納されたバッファ特定情報を読み出す。図23にメモリ102に格納されたバッファ特定情報テーブルの一例を示す。バッファ特定情報テーブルには、上述の受取指定動作で決定された受取バッファ特定情報と出力指定動作により決定された出力バッファ特定情報とを含む。制御部361は、出力バッファ特定情報に基づいて出力バッファを特定し、受取バッファ特定情報に基づいて受取バッファを特定する。
続いて、制御部361は、受取バッファと出力バッファとが同じバッファであるか否かを判断する(S102)。受取バッファと出力バッファとが同じバッファである場合(S102でYES)、図14や図17に示すように、一方のバッファ(ここでは第2バッファ34)が区分部32からデータを受け取り、かつ、デコーダ37にデータを出力しており、他方のバッファ(ここでは第1バッファ)のデータ量は0となっている。このとき、制御部361は再生クロックの調整を行う(S103〜S113)。以下、出力バッファ及び受取バッファが第2バッファ34であると仮定して説明を続ける。
制御部361はまず、出力バッファである第2バッファ34が蓄積するデータ量Vdetをメモリ102から読み出す(S103)。検知部35は所定期間ごと第1バッファ33及び第2バッファ34が蓄積するデータ量を検知し、メモリ102に保存する。制御部361は、第2バッファ34のデータ量Vdetをメモリ102から読み出す。
続いて、制御部361は、クロック調整レベルCLをメモリ102から読み出す(S104)。クロック調整レベルCLは、基準レベルであるDefaultレベル、再生クロックの周波数がDefaultレベルよりも低い状態であるLowレベル、再生クロックの周波数がDefaultレベルよりも高い状態であるHighレベル、の3種類が存在し、現在設定されているクロック調整レベルCLがメモリ102に格納されている。制御部361は、メモリ102に格納されているクロック調整レベルCLを読み出す。
続いて、制御部361は、ステップS103で読み出されたデータ量Vdetに応じて、クロック調整レベルCLを再設定する(S105〜S113)。
[Vdet<Vminである場合]
初めに、制御部361は、データ量Vdetが下限値Vmin未満か否かを判断する(S105)。データ量Vdetが下限値Vmin未満であるとき(S105でYES)、第2バッファ34は、受信データ過少状態である。そのため、このまま再生を継続すれば、第2バッファ34で蓄積されるデータ量が曲の再生途中で枯渇し、音切れが発生する。そのため、制御部361は、クロック調整レベルCLをLowレベルに設定するようクロック生成部393に指令する(S109)。
制御部361から指令を受けたクロック生成部393は、クロック調整レベルCL=Lowレベルに対応した周波数の再生クロックを生成し、DAI391に出力する。Lowレベルに対応した再生クロックの周波数は、Defaultレベルよりも低い。そのため、DAI391からのデータの出力速度はDefaultレベルと比較して遅くなる。要するに、曲の再生速度が若干遅くなる。その結果、第2バッファ34内のデータの枯渇を抑制でき、音切れの発生を防止する。なお、制御部361は、クロック生成部393への指示の後、現在のクロック調整レベルCLを「Lowレベル」としてメモリ102に保存する。
[Vmin<Vdet<Vref2である場合]
データ量Vdetが下限値Vminよりも大きく、かつ、基準値Vref2未満である場合(S105でNO、S106でYES)、制御部361は、ステップS104で読み出されたクロック調整レベルCLがHighレベルであるか否かを判断する(S110)。そして、Highレベルである場合(S110でYES)、クロック調整レベルCLをDefaultレベルとするようクロック生成部391に指令する(S111)。クロック調整レベルCLがHighレベルであれば、データ量Vdetが下限値Vmin以上であるものの、第2バッファ34のデータ量が減少する可能性が高い。そのため、クロック調整レベルCLをHighレベルからDefaultレベルに戻す。制御部361から指令を受けたクロック生成部393は、再生クロックの周波数を低下し、Defaultレベルに戻す。その結果、DAI391から出力されるデータの出力速度は低下する。
なお、ステップS105で読み出されたクロック調整レベルCLがLowレベル、又はDefaultレベルである場合(S110でNO)、制御部361はクロック調整レベルCLを変更せずに維持する。第2バッファ34のデータ量が枯渇するおそれがないからである。
[Vref2<Vdet<Vmaxである場合]
データ量Vdetが基準値Vref2よりも大きく、かつ、上限値Vmax未満である場合(S105でNO、S106でNO、ステップS107でYES)、制御部361は、ステップS104で読み出されたクロック調整レベルCLがLowレベルであるか否かを判断する(S112)。
Lowレベルである場合(S112でYES)、制御部361は、クロック調整レベルCLをDefaultレベルとするようクロック生成部391に指令し、指令したクロック調整レベルCL(Defaultレベル)をメモリ102に格納する(S114)。
データ量Vdetが基準値Vref2よりも大きい場合、クロック生成部393がLowレベルの再生クロックを生成し続ければ、第2バッファ34のデータ量がオーバーフローする可能性がある。そこで、制御部361は、クロック調整レベルCLをDefaultレベルに戻す。これにより、再生クロックの周波数が高くなり、DAI391のデータ出力速度が上がる。その結果、第2バッファ34がオーバーフローするのを防止できる。
なお、ステップS104で読み出されたクロック調整レベルCLがHighレベル、又はDefaultレベルである場合(S112でNO)、制御部361はクロック調整レベルCLを変更せずに維持する。
[Vdet>Vmaxである場合]
データ量Vdetが上限値Vmaxよりも大きい場合(S105〜S107でNO)、第2バッファ34は受信データ過多状態であり、このまま再生を継続すれば、第2バッファ34がオーバーフローする。そのため、制御部361は、クロック調整レベルCLをHighレベルに設定するようクロック生成部393に指令し、指令したクロック調整レベルCL(Highレベル)をメモリ102に格納する(S108)。
制御部361から指示を受けたクロック生成部393は、再生クロックの周波数をHighレベルに調整する。その結果、DAI391からのデータ出力速度が上がり、第2バッファ34のオーバーフローが抑制される。
以上のとおり、本実施の形態では、第3の実施の形態の動作に加え、受信バッファと出力バッファとが同じバッファである場合に、出力バッファのデータ量Vdetに応じて再生クロックの周波数を調整する。そのため、ライブ音声データや再生時間が長い曲のように、所定の間隔で曲間を設けることが出来ないデータの再生時であっても、データの出力速度を調整することで、音切れの発生を抑制できる。
なお、ステップS102で判断の結果、出力バッファが受取バッファと異なる場合(s102でNO)、図12で示されるように、曲間を設けるために、新たな曲の先頭フレームから出力バッファと別個のバッファにデータがバッファリングされている。この場合、曲間に無音の調整時間を設けることができるため、再生クロックを調整しなくてよい。そのため、クロック調整レベルCLをDefaultレベルにするようクロック生成部393に指令し、Defaultレベルをメモリ102に格納する(S114)。
以上の実施の形態では、クロック調整レベルを3段階(High、Default、Low)としたが、クロック調整レベルの段階は3段階以上であってもよい。
また、本実施の形態では、再生クロックによりDAI391のデータ出力速度を調整したが、再生クロックによりデコーダ37から出力されるデータの出力速度を調整してもよいし、DAC392から出力される信号の出力速度を調整してもよい。要するに、再生クロックは、再生部39から出力されるコンテンツの再生速度を調整する。
上述の実施の形態では、区分部は、タイムスタンプを用いて、曲ファイルの先頭フレームを判別したが、区分部は、他の方法により、曲ファイルを区分してもよい。たとえば、各フレームが曲ファイル固有の識別情報(ファイルID)を含むメタデータを有する場合、ファイルIDを用いて曲ファイルを区分してもよい。
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
本発明は例えばストリーム再生装置に好適に適用され得る。
1,20,30,40 ストリーム再生装置
2 ストリーミングサーバ
10,31 受信部
11 受信バッファ
12,32 区分部
13,35 検出部
14,37 デコーダ
15 デコードバッファ
16 データ編集部
17,36 調整部
18,38,39 再生部
22 データストリーム生成部
23 配信部
33 第1バッファ
34 第2バッファ
102 メモリ
361 制御部
362 受取指定部
363 出力指定部
391 、デジタルオーディオインタフェース部
392 デジタルアナログ変換部
393 クロック生成部

Claims (5)

  1. 複数のコンテンツが連結されたデータストリームを受信する受信手段と、
    前記受信されたデータストリームを前記コンテンツごとに区分する区分手段と、
    前記区分された各コンテンツを順次再生する再生手段と、
    前記受信されたデータストリームを受け取って一時的に保持し、前記再生手段に出力するバッファ手段と、
    前記バッファ手段に保持されている前記データストリームのデータ量を検出する検出手段と、
    前記検出手段の検出結果に基づいて、前記再生手段が前記各コンテンツを再生する間隔を調整する調整手段とを備え、
    前記データストリーム内の各コンテンツは複数のフレームを含み、
    前記バッファ手段は、前記調整手段の指定に応じて前記複数のフレームを受け取り又は出力する複数のバッファを含み、
    前記区分手段は、前記受信手段が前記各コンテンツの先頭フレームを受信したか否かを判断し、
    前記検出手段は、各バッファの前記データ量を検出し、
    前記調整手段はさらに、
    前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記複数のバッファのうちフレームを出力中のバッファのデータ量が、所定の下限値未満であるか否かを判断する第1の判断手段と、
    前記フレームを出力中のバッファのデータ量が前記下限値未満であるとき、前記データを出力中のバッファと異なる他のバッファを、前記コンテンツの先頭フレーム及びそれ以降に受信されるフレームを受け取る受取バッファに指定する受取指定手段と、
    前記複数のバッファのうちフレームを受け取り中のバッファのデータ量が、前記下限値を超えたとき、前記データを受け取り中のバッファを、前記フレームを前記再生手段に順次出力する出力バッファに指定する出力指定手段とを含むことを特徴とするストリーム再生装置。
  2. 請求項1に記載のストリーム再生装置であってさらに、
    再生クロックを生成するクロック生成手段を備え、
    前記再生手段は、前記再生クロックに応答して前記フレームに基づくコンテンツを再生し、
    前記調整手段はさらに、
    前記出力バッファが前記受取バッファと同じバッファであるとき、前記出力バッファのデータ量に基づいて、前記再生クロックの周波数を調整するよう前記クロック生成手段に指令することを特徴とするストリーム再生装置。
  3. 請求項1に記載のストリーム再生装置であって、
    前記出力指定手段は、前記フレームを受け取り中のバッファのデータ量が、前記下限値よりも大きい所定の基準値を超えたとき、前記データを受け取り中のバッファを、前記出力バッファに指定することを特徴とするストリーム再生装置。
  4. 請求項1に記載のストリーム再生装置であって、
    前記調整手段はさらに、
    前記受信手段が前記コンテンツの先頭フレームを受信したとき、前記フレームを出力中のバッファのデータ量が前記下限値よりも大きい所定の上限値を超えているか否かを判断する第2の判断手段を含み、
    前記受取指定手段はさらに、前記データ量が前記上限値を超えているとき、前記フレームを出力中のバッファと異なる他のバッファを、前記受取バッファに指定し、
    前記調整手段はさらに、
    前記出力指示手段が出力バッファを指定したとき、出力バッファに指定されたバッファと異なる他のバッファが保持するフレームを消去する消去手段を含むことを特徴とするストリーム再生装置。
  5. 請求項1〜4のいずれかに記載のストリーム再生装置の各手段をコンピュータに実行させる、ストリーム再生プログラム。
JP2011221451A 2008-01-30 2011-10-06 ストリーム再生装置 Expired - Fee Related JP5229516B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011221451A JP5229516B2 (ja) 2008-01-30 2011-10-06 ストリーム再生装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008019405 2008-01-30
JP2008019405 2008-01-30
JP2011221451A JP5229516B2 (ja) 2008-01-30 2011-10-06 ストリーム再生装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008083011A Division JP4900299B2 (ja) 2008-01-30 2008-03-27 ストリーム再生装置、ストリーミングシステム及びストリーム再生プログラム

Publications (2)

Publication Number Publication Date
JP2012010411A true JP2012010411A (ja) 2012-01-12
JP5229516B2 JP5229516B2 (ja) 2013-07-03

Family

ID=41148884

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008083011A Expired - Fee Related JP4900299B2 (ja) 2008-01-30 2008-03-27 ストリーム再生装置、ストリーミングシステム及びストリーム再生プログラム
JP2011221451A Expired - Fee Related JP5229516B2 (ja) 2008-01-30 2011-10-06 ストリーム再生装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008083011A Expired - Fee Related JP4900299B2 (ja) 2008-01-30 2008-03-27 ストリーム再生装置、ストリーミングシステム及びストリーム再生プログラム

Country Status (1)

Country Link
JP (2) JP4900299B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073537A (ja) * 2000-08-30 2002-03-12 Matsushita Electric Ind Co Ltd バッファ制御装置
JP2003131975A (ja) * 2001-10-24 2003-05-09 Matsushita Electric Ind Co Ltd ストリーミング配信システム及び情報端末
JP2004153789A (ja) * 2002-10-08 2004-05-27 Canon Inc 受信装置及び受信方法
JP2004254186A (ja) * 2003-02-21 2004-09-09 Fujitsu Ltd オーディオ・ビデオ同期制御方法及び装置
JP2005333478A (ja) * 2004-05-20 2005-12-02 Mitsumi Electric Co Ltd ストリーミングコンテンツ再生方法及びそれを用いたインターネット接続装置
JP2006114988A (ja) * 2004-10-12 2006-04-27 Toa Corp 受信装置,クロック調整方法および放送システム
JP2007311902A (ja) * 2006-05-16 2007-11-29 Matsushita Electric Ind Co Ltd ストリーム受信再生装置及びストリーミングネットワークシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4350916B2 (ja) * 2001-04-27 2009-10-28 ティーオーエー株式会社 受信装置及び受信再生方法
JP2003223391A (ja) * 2002-01-30 2003-08-08 Nippon Telegr & Teleph Corp <Ntt> ストリーム提供方法及びその装置と、ストリーム提供プログラム及びそのプログラムを記録した記録媒体
JP2003230125A (ja) * 2002-02-05 2003-08-15 Nippon Telegr & Teleph Corp <Ntt> ストリーム配信自動切り替え制御方法及びシステム
JP2003256191A (ja) * 2002-02-27 2003-09-10 Sony Corp データ処理装置および方法、記録媒体、並びにプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073537A (ja) * 2000-08-30 2002-03-12 Matsushita Electric Ind Co Ltd バッファ制御装置
JP2003131975A (ja) * 2001-10-24 2003-05-09 Matsushita Electric Ind Co Ltd ストリーミング配信システム及び情報端末
JP2004153789A (ja) * 2002-10-08 2004-05-27 Canon Inc 受信装置及び受信方法
JP2004254186A (ja) * 2003-02-21 2004-09-09 Fujitsu Ltd オーディオ・ビデオ同期制御方法及び装置
JP2005333478A (ja) * 2004-05-20 2005-12-02 Mitsumi Electric Co Ltd ストリーミングコンテンツ再生方法及びそれを用いたインターネット接続装置
JP2006114988A (ja) * 2004-10-12 2006-04-27 Toa Corp 受信装置,クロック調整方法および放送システム
JP2007311902A (ja) * 2006-05-16 2007-11-29 Matsushita Electric Ind Co Ltd ストリーム受信再生装置及びストリーミングネットワークシステム

Also Published As

Publication number Publication date
JP2009207105A (ja) 2009-09-10
JP4900299B2 (ja) 2012-03-21
JP5229516B2 (ja) 2013-07-03

Similar Documents

Publication Publication Date Title
US20200153881A1 (en) Streaming media delivery system
CN101106697B (zh) 数据传输系统、接收装置和方法、以及发送装置和方法
TWI229528B (en) Method of controlling dataflow for a media player system
RU2277303C2 (ru) Способ обеспечения услуги потоковой передачи видеоданных
US8185611B2 (en) Streaming media delivery system
US6625656B2 (en) Method and apparatus for continuous playback or distribution of information including audio-visual streamed multimedia
CN102035827B (zh) 信息处理装置及信息处理方法
EP1783619B1 (en) Contents delivery system, client, server, contents delivery method and contents reproducing method
CN101409808A (zh) 一种音频重采样方法、装置及一种数字电视芯片
US7751436B2 (en) System and method for dynamically establishing PLL speed based on receive buffer data accumulation for streaming video
JP2003330496A (ja) オーディオストリームのバッファリング制御方法及びその装置
JP4404091B2 (ja) 音楽を再生するためのコンテンツフレームを配信するコンテンツ配信サーバ及び端末
US8369456B2 (en) Data processing apparatus and method and encoding device
JP5045715B2 (ja) 放送受信装置
JP4600698B2 (ja) ストリーム再生装置およびそのプログラム
JP3976191B2 (ja) サーバ、送信レート制御方法、プログラムおよび記録媒体
JP5229516B2 (ja) ストリーム再生装置
JP2004511955A (ja) カスタマイズ可能なラジオ
JPWO2006040827A1 (ja) 送信装置、受信装置、並びに再生装置
JP3842481B2 (ja) 受信バッファ制御装置
JP5610904B2 (ja) 配信デジタル音楽データ再生システム
JP3920716B2 (ja) ストリーミングサービスの配信レート変更方法及びストリーム配信サーバ並びにストリーム配信プログラム及びその情報記録媒体
KR20060128203A (ko) 배터리의 잔류 충전량이 적은 상태에서 컨텐츠 재생을중지하는 방법 및 그를 이용한 이동통신 단말기
JP2001128139A (ja) ストリームデータ受信端末装置及び受信方法
JP2013110477A (ja) コンテンツ再生システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130305

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229516

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees