電子機器および再生制御方法
【課題】マルチメディアコンテンツデータをスムーズに再生することができる電子機器を実現する。
【解決手段】実施形態によれば、電子機器は、再生位置がバッファにまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、マルチメディアコンテンツデータ内の第1のデータ位置に後続するデータ部それぞれをサーバから順次受信してバッファに格納する第1のバッファリング処理を開始する。第1のバッファリング処理によって所定量のデータがバッファに格納された後に、バッファに格納されていないオーディオデータ部が要求された場合、電子機器は、そのオーディオデータ部をサーバから受信する処理の実行をスキップして第1のバッファリング処理を継続し、そのオーディオデータ部の再生をスキップする。
【解決手段】実施形態によれば、電子機器は、再生位置がバッファにまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、マルチメディアコンテンツデータ内の第1のデータ位置に後続するデータ部それぞれをサーバから順次受信してバッファに格納する第1のバッファリング処理を開始する。第1のバッファリング処理によって所定量のデータがバッファに格納された後に、バッファに格納されていないオーディオデータ部が要求された場合、電子機器は、そのオーディオデータ部をサーバから受信する処理の実行をスキップして第1のバッファリング処理を継続し、そのオーディオデータ部の再生をスキップする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コンテンツデータを再生可能な電子機器および再生制御方法に関する。
【背景技術】
【0002】
近年、パーソナルコンピュータ、PDA、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、インターネットを介してマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生するストリーミング再生機能を有している。
【0003】
マルチメディアコンテンツデータのストリーミング再生においては、コンテンツサーバから受信されるマルチメディアコンテンツデータの一部分は電子機器内のストリームバッファに格納される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−224749号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
電子機器上で実行されるプレーヤソフトウェアは、シークバー(またはプログレッシブバー)と称されるユーザインタフェースを表示する。ユーザは、シークバーを操作することによって、マルチメディアコンテンツデータ内の再生位置を変更することができる。
【0006】
バッファに格納されていないデータ位置が再生位置として指定された場合、プレーヤソフトウェアは、コンテンツサーバから該当するデータ部分の取得を開始し、そのデータ部分をバッファに格納する(シーク)。このバッファリングには一定の時間を要する。したがって、新たなデータ部分が要求されてからそのデータ部分がバッファに格納されるまでのタイムラグにより、指定されたデータ位置からの再生が開始されるまでには、ある待ち時間が必要となる。
【0007】
一般に、ストリーミング向けファイル形式のマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが連続して配置されている。
【0008】
しかし、ストリーミング向けでないファイル形式のマルチメディアコンテンツデータも存在する。このようなマルチメディアコンテンツデータにおいては、連続して再生されるべき互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続に配置されている可能性がある。このようなマルチメディアコンテンツデータに対するシークにおいては、非連続の個々のデータ部分をコンテンツサーバから受信するための処理によってシークのレスポンスが低下する可能性、つまりそれらデータ部分のバッファリングのためのタイムラグが大きくなる可能性がある。したがって、たとえ指定されたデータ位置からのマルチメディアコンテンツデータの再生が一旦再開されても、その再生がすぐに再び停止されてしまうかもしれない。なぜなら、指定されたデータ位置のデータ部分に続いて再生すべき別のデータ部分をバッファリングのための待ち時間が発生する可能性があるためである。
【0009】
本発明は、マルチメディアコンテンツデータをスムーズに再生することができる電子機器及びコンテンツ再生制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
実施形態によれば、電子機器は、ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する。この電子機器は、バッファと、再生手段と、制御手段とを具備する。前記バッファは、前記受信されたマルチメディアコンテンツデータを格納する。前記再生手段は、前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する。前記制御手段は、再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生手段に前記再生を停止させると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始する。前記制御手段は、さらに、前記第1のバッファリング処理が開始された後に前記再生手段に前記第1のデータ位置から前記再生を再開させ、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部が前記再生手段によって要求された場合、前記第1のバッファリング処理を継続する。前記再生手段は、前記要求されたオーディオデータ部の再生を実行しない。
【図面の簡単な説明】
【0011】
【図1】実施形態に係る電子機器の外観を示す斜視図。
【図2】同実施形態の電子機器によって実行されるプレーヤソフトウェアによって表示されるコンテンツ再生画面の例を示す図。
【図3】同実施形態の電子機器のシステム構成を示すブロック図。
【図4】同実施形態の電子機器によって実行されるプレーヤソフトウェアの構成を示すブロック図。
【図5】図4のプレーヤソフトウェアによって実行されるバッファ管理動作を説明するための図。
【図6】図4のプレーヤソフトウェアによって実行されるシーク制御動作を説明するための図。
【図7】ストリーミング向けのマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の配置例を示す図。
【図8】ストリーミング向けではないマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の配置例を示す図。
【図9】ストリーミング向けではないマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の他の配置例を示す図。
【図10】シークのレスポンスが低下される現象を説明するための図。
【図11】バッファ解放制御動作の例を説明するための図。
【図12】図11のバッファ解放制御動作を用いた場合に発生する可能性がある、解放済みのバッファエリア内に存在していたデータに対する要求を説明するための図。
【図13】図4のプレーヤソフトウェアによって実行されるバッファ解放制御動作を説明するための図。
【図14】バッファリング済みデータ量の減少時に実行される再生停止動作を説明するため図。
【図15】再生が突然停止される様子を説明するための図。
【図16】図4のプレーヤソフトウェアによって実行される再生停止動作を説明するための図。
【図17】図4のプレーヤソフトウェアによって実行される再生制御動作の手順を示すフローチャート。
【図18】図4のプレーヤソフトウェアによって実行されるシーク制御動作の手順を説明するフローチャート。
【図19】図4のプレーヤソフトウェアによって実行されるバッファ解放動作の手順を説明するフローチャート。
【図20】バッファリング済みデータ量の減少時に図4のプレーヤソフトウェアによって実行される手順を説明するフローチャート。
【発明を実施するための形態】
【0012】
以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、スレート型パーソナルコンピュータ(PC)、ラップトップ型PC、スマートフォン、またはPDA等として実現され得る。以下では、この電子機器がスレート型パーソナルコンピュータ10として実現されている場合を想定する。スレート型パーソナルコンピュータ10は、図1に示すように、コンピュータ本体11とタッチスクリーンディスプレイ17とから構成される。
【0013】
コンピュータ本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17は、液晶表示装置(LCD)及びタッチパネルが組み込まれている。タッチパネルは、LCDの画面を覆うように設けられる。タッチスクリーンディスプレイ17は、コンピュータ本体11の上面に重ね合わせるように取り付けられている。
【0014】
コンピュータ10はマルチメディアコンテンツデータをストリーミングによって再生するコンテンツ再生機能を有している。このコンテンツ再生機能はコンピュータ10にインストールされたプレーヤソフトウェアによって実行される。プレーヤソフトウェアによるコンテンツ再生動作は、オペレーティングシステムによって提供されるマルチメディアフレームワークを利用して実行するようにしてもよい。コンピュータ10は有線または無線ネットワークとの通信を実行する通信デバイスを内蔵しており、コンピュータ10とインターネット20との間の通信はこの通信デバイスを介して実行される。
【0015】
マルチメディアコンテンツデータは、ビデオデータとオーディオデータとが多重化されたデータストリームである。ビデオデータは圧縮符号化されていてもよく、またオーディオデータも圧縮符号化されていてもよい。
【0016】
プレーヤソフトウェアはインターネット20のようなネットワークを介してコンテンツサーバ21からマルチメディアコンテンツデータを受信する。プレーヤソフトウェアはマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生する。コンピュータ10においては、マルチメディアコンテンツデータ内の受信されたデータ部はバッファに格納される。バッファはコンピュータ10内のメモリの一部である。バッファに一定量のデータが蓄積された後に、プレーヤソフトウェアはマルチメディアコンテンツデータの再生を開始する。
【0017】
マルチメディアコンテンツデータの再生処理においては、バッファに格納されたビデオデータ部およびオーディオデータ部の各々が再生される。マルチメディアコンテンツデータの再生処理の間、プレーヤソフトウェアは、先読み処理を実行してもよい。先読み処理は、現在再生位置よりも時間的に後のデータ部それぞれをコンテンツサーバ21から順次受信してバッファに格納するバッファリング処理である。
【0018】
図2は、プレーヤソフトウェアによってディスプレイ17に表示されるコンテンツ再生画面の例である。コンテンツ再生画面はビデオ表示エリア31およびシークバー33を表示する。ビデオ表示エリア31は、マルチメディアコンテンツデータ内のビデオデータの画像(動画像)を表示するための表示領域である。シークバー33はマルチメディアコンテンツデータの再生位置をユーザに制御させるためのグラフィカルユーザインタフェースである。
【0019】
シークバー33の左端および右端は再生対象のマルチメディアコンテンツデータの先頭位置および終端位置にそれぞれ対応する。マルチメディアコンテンツデータの再生期間中においては、マルチメディアコンテンツデータの再生位置は時間の経過に伴って自動的に更新される。再生位置のようなマルチメディアコンテンツデータ内のデータ位置を示す値としては、マルチメディアコンテンツデータの先頭位置を起点としたオフセット値を用いてもよい。あるデータ位置に対応するオフセット値は、マルチメディアコンテンツデータの先頭位置からそのデータ位置までのデータサイズを示す。
【0020】
シークバー33はスライダ35を表示する。スライダ35はマルチメディアコンテンツデータ内の現在再生位置を示す。つまり、スライダ35はマルチメディアコンテンツデータの再生の進行状況を示す。ユーザは、ポインティングデバイスを用いてスライダ35を移動させることにより、マルチメディアコンテンツデータ内の再生位置を変更することができる。
【0021】
シークバー33は、さらに、再生済み区間37およびシーク可能区間39をシークバー33上に表示する。再生済み区間37は、マルチメディアコンテンツデータのシーケンスの内、再生済みで且つバッファにデータ部が残っているデータ区間を示す。シーク可能区間39は、マルチメディアコンテンツデータのシーケンスの内、未再生で且つバッファにデータ部がすでに格納されているデータ区間を示す。シーク可能区間39ができるだけ一定時間以上となるように、上述の先読み処理(バッファリング処理)が実行されるようにしてもよい。
【0022】
スライダ35がシーク可能区間39内の任意の位置に移動された時、再生位置は、スライダ35によって示される、シーク可能区間39内の位置に即座に変更される。スライダ35がシーク可能区間39外のエリアに移動された時、つまり、再生位置がバッファにまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、プレーヤソフトウェアは、バッファリング処理を開始する。このバッファリング処理においては、プレーヤソフトウェアは、マルチメディアコンテンツデータ内の上述の第1のデータ位置(シーク開始位置)に後続するデータ部それぞれをコンテンツサーバから順次受信してバッファに格納する。バッファリング処理によって所定量のデータがバッファに格納されるまで、マルチメディアコンテンツデータの再生は停止される。バッファリング処理によって所定量のデータがバッファに格納された後、マルチメディアコンテンツデータの再生が第1のデータ位置から再開される。
【0023】
図3は、本コンピュータ10のシステム構成を示す図である。
本コンピュータ10は、図3に示されるように、CPU101、ノースブリッジ102、主メモリ103、サウスブリッジ104、グラフィクスコントローラ105、サウンドコントローラ106、BIOS−ROM107、LANコントローラ108、ソリッドステートドライブ(SSD)109、無線LANコントローラ112、エンベデッドコントローラ(EC)113、EEPROM114、HDMI制御回路3等を備える。
【0024】
CPU101は、コンピュータ10内の各部の動作を制御するプロセッサである。CPU101は、SSD109から主メモリ103にロードされる、オペレーティングシステム(OS)201、および各種アプリケーションプログラムを実行する。アプリケーションプログラムには、プレーヤアプリケーションプログラム202が含まれている。このプレーヤアプリケーションプログラム202は上述のプレーヤソフトウェアであり、オペレーティングシステム(OS)201上で実行される。
【0025】
また、CPU101は、BIOS−ROM107に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。
【0026】
ノースブリッジ102は、CPU101のローカルバスとサウスブリッジ104との間を接続するブリッジデバイスである。ノースブリッジ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ105との通信を実行する機能も有している。
【0027】
グラフィクスコントローラ105は、本コンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。このグラフィクスコントローラ105によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて映像を表示する。このLCD17A上にはタッチパネル17Bが配置されている。タッチパネル17Bは、LCD17Aの画面上で入力を行うためのポインティングデバイスである。ユーザは、タッチパネル17Bを用いて、LCD17Aの画面に表示されたグラフィカルユーザインタフェース(GUI)等を操作することができる。例えば、ユーザは、画面に表示されたボタンをタッチすることによって、当該ボタンに対応する機能の実行を指示することができる。
【0028】
HDMI端子2は、外部ディスプレイ接続端子である。HDMI端子2は、非圧縮のデジタル映像信号とデジタルオーディオ信号とを1本のケーブルで外部ディスプレイ装置1に送出することができる。HDMI制御回路3は、HDMIモニタと称される外部ディスプレイ装置1にデジタル映像信号をHDMI端子2を介して送出するためのインタフェースである。つまり、コンピュータ10は、HDMI端子2等を介して、外部ディスプレイ装置1に接続可能である。
【0029】
サウスブリッジ104は、PCI(Peripheral Component Interconnect)バス上の各デバイス及びLPC(Low Pin Count)バス上の各デバイスを制御する。また、サウスブリッジ104は、SSD109を制御するためのATAコントローラを内蔵している。
【0030】
サウスブリッジ104は、各種USBデバイスを制御するためのUSBコントローラを内蔵している。さらに、サウスブリッジ104は、サウンドコントローラ106との通信を実行する機能も有している。サウンドコントローラ106は音源デバイスであり、再生対象のオーディオデータをスピーカ18A,18Bに出力する。LANコントローラ108は、例えばIEEE 802.3規格の有線通信を実行する有線通信デバイスである。無線LANコントローラ112は、例えばIEEE 802.11規格の無線通信を実行する無線通信デバイスである。
【0031】
EC113は、電力管理のためのエンベデッドコントローラを含む1チップマイクロコンピュータである。EC113は、ユーザによるパワーボタンの操作に応じて本コンピュータ10を電源オン/電源オフする機能を有している。
【0032】
次に、図4を参照して、プレーヤアプリケーションプログラム202の機能構成を説明する。
プレーヤアプリケーションプログラム202は、データソース301、デマルチプレクサ302、ビデオデコーダ303、オーディオデコーダ304、レンダラ305、および再生制御部306を備える。データソース301は、再生制御部306の制御の下、コンテンツサーバ21からマルチメディアコンテンツデータを受信するための処理を順次実行し、受信されたデータ部分それぞれをバッファ401に格納する(バッファリング)。コンテンツサーバ21からマルチメディアコンテンツデータを受信する処理においては、たとえば、HTTPストリーミングを使用してもよい。この場合、データソース301は、コンテンツサーバ21にデータ部を要求し、その要求したデータ部をコンテンツサーバ21から受信する。
【0033】
デマルチプレクサ302、ビデオデコーダ303、オーディオデコーダ304、およびレンダラ305は、バッファ401に格納されたデータ部内に含まれるビデオデータ部およびオーディオデータ部をそれぞれ再生する再生部として機能する。
【0034】
デマルチプレクサ302は、データソース301内のバッファ401からデータを受信し、そのデータをビデオデータ部とオーディオデータ部とに分離する。ビデオデコーダ303はビデオデータ部をデコードし、そのデコードされたビデオデータ部をレンダラ305に送る。オーディオデコーダ304はオーディオデータ部をデコードし、そのデコードされたオーディオデータ部をレンダラ305に送る。レンダラ305はデコードされたビデオデータ部の動画像をビデオ表示エリア31上に表示する。さらに、レンダラ305はデコードされたオーディオデータ部に対応する音をスピーカ等を介して出力する。
【0035】
再生制御部306は、プレーヤアプリケーションプログラム202によるコンテンツデータの再生動作を制御する。より詳しくは、再生制御部306は、データソース301、デマルチプレクサ302、ビデオデコーダ303、オーディオデコーダ304、およびレンダラ305をそれぞれ制御する。
【0036】
マルチメディアコンテンツデータのバッファリング処理は、デマルチプレクサ302からデータソース301に送られるアクセス要求に含まれるオフセット値を起点として開始される。ここで、このオフセット値は、マルチメディアコンテンツデータの先頭位置からマルチメディアコンテンツデータの再生対象位置までのデータサイズ(オフセット)を示す。一定量のデータがバッファ401に格納されるまで再生の実行は待機される。一定量のデータがバッファ401に格納された時点で、マルチメディアコンテンツデータの再生が開始される。再生中においては、デマルチプレクサ302はアクセス要求を順次発行する。アクセス要求に含まれるオフセット値のデータ部がバッファ401に格納されているならば、そのデータ部が即座にデータソース301からデマルチプレクサ302に返される。
【0037】
デマルチプレクサ302からのアクセス要求によって指定されるオフセット値は、最終アクセスオフセットとしてデータソース301内に記録される。この最終アクセスオフセットは、バッファ量管理部402によるバッファ量管理処理に使用される。
【0038】
本実施形態では、ビデオデータおよびオーディオデータそれぞれに対応する2つのストリームバッファを使用するのではなく、ビデオデータおよびオーディオデータが同じバッファ401に格納される。同じバッファ401をビデオデータの格納とオーディオデータの格納とに共用する構成は、必要なメモリ量と必要なデータ転送レートを低減することを可能にする。
【0039】
本実施形態では、データソース301は、さらに、メディア識別子設定部403を備えている。メディア識別子設定部403は、デマルチプレクサ302からのアクセス要求がビデオデータに対する要求(ビデオアクセス要求)またはオーディオに対する要求(オーディオアクセ要求)のいずれであるかに応じて、ビデオデータの最終アクセスオフセット(ビデオ最終アクセスオフセット)とオーディオデータの最終アクセスオフセット(オーディオ最終アクセスオフセット)とを個別に管理する。
【0040】
次に、図5を参照して、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの例を説明する。ビデオ最終アクセスオフセットは、最後のビデオアクセス要求によって指定されたオフセット値である。また、オーディオ最終アクセスオフセットは、最後のオーディオアクセス要求によって指定されたオフセット値である。
【0041】
ここでは、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが比較的離れて配置されているマルチメディアコンテンツデータをストリーミングを用いて再生する場合を想定する。このようなマルチメディアコンテンツデータとしては、ASF(Advanced Systems Format)のようフォーマットのコンテンツデータがある。このASFに対応するコンテンツデータファイルはコンテンツの再生時間長等の情報を含むヘッダ部とデータ部とインデックス情報とを含む。インデックス情報は、データ部内に存在するビデオデータ部それぞれのオフセット値を示す。デマルチプレクサ302は、再生制御部306からインデックス情報を受信し、そのインデックス情報に基づいてビデオデータ部およびオーディオデータ部それぞれのオフセット値を算出する。
【0042】
図5においては、マルチメディアコンテンツデータのシーケンスの内、オフセット値1000バイトからオフセット値2000バイトまでのデータ部(データ区間ともいう)がバッファリングされている。ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値からバッファ401内のデータ末端までのデータ区間が、上述のシークバー33上にシーク可能区間39として、つまりバッファリング済みのデータ区間として、表示される。たとえば、ビデオ最終アクセスオフセットが1500バイトを示し、オーディオ最終アクセスオフセットが1300バイトを示しているならば、1500バイトからバッファ401内のデータ末端(2000バイト)までがシーク可能区間39として表示される。つまり、本実施形態では、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値とバッファ401内のデータ末端のオフセット値との間の差分に基づいて、シークバー33上にシーク可能区間39が表示される。
【0043】
ユーザによってスライダ35がシーク可能区間39よりも時間的に後のデータ位置に移動された場合、つまり再生位置がバッファリング済み期間外の位置に変更された場合、再生制御部306は、再生を停止すると共に、バッファ401を解放し、データソース301を用いてバッファリングをやりなおす(バッファリング済み期間外へのシーク)。より詳しくは、再生制御部306は、変更後の再生位置に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納するバッファリング処理を開始する。一定量のデータがバッファ401に格納された時点で、再生制御部306は、再生を再開させる。デマルチプレクサ302は、変更後の再生位置を示すオフセット値(たとえば、2000バイト目よりも時間的に後のデータ位置)を含むアクセス要求を発行する。このアクセス要求の受信に応答して、データソース301は、アクセス要求されたデータ部をバッファ401から読み出してデマルチプレクサ302に送る。
【0044】
次に、図6を参照して、本実施形態のシーク制御動作について説明する。
【0045】
バッファリング済み期間外へのシーク時においては、デマルチプレクサ302は、以下のような順序で、ビデオアクセス要求、オーディオアクセス要求をデータソース301に送るかもしれない。
【0046】
(1)ビデオ1の要求
(2)オーディオ2の要求
(3)ビデオ3の要求
(4)オーディオ4の要求
ビデオ1、オーディオ2、ビデオ3、オーディオ4はこの順で再生すべきデータ部である。ストリーミング向けでないマルチメディアコンテンツデータにおいては、ビデオ1、オーディオ2、ビデオ3、オーディオ4それぞれのオフセット値がビデオ1、オーディオ2、ビデオ3、オーディオ4の順に並んでおらず、図6に示すように、たとえば、オーディオ2、ビデオ1、オーディオ4、ビデオ3のように並んでいる場合がある。この場合、上述したように、シークのレスポンスが大幅に低下する可能性がある。以下、具体的に説明する。
【0047】
バッファリング済み期間外へのシーク時においては、まず、バッファ201が解放される。そして、ビデオ1に対応するオフセット値に後続するデータ部それぞれを順次受信してバッファ401に格納するためのバッファリング処理が開始される。一定量のデータがバッファ401に格納されると、再生が再開される。マルチプレクサ302はビデオ1の要求をデータソース301に送信する。ビデオ1はバッファ401I格納されているので、ビデオ1はバッファ401から読み出され、デマルチプレクサ302に送られ、そして、ビデオ1が再生される。この後、デマルチプレクサ302はオーディオ2の要求をデータソース301に送信する。この時点で、オーディオ2はバッファ401に格納されていないので、マルチメディアコンテンツデータの再生は再び停止される。再生制御部306は、今度は、オーディオ2に対応するオフセット値に後続するデータ部のバッファリングを開始する。一定量のデータがバッファ401に格納されると、再生が再開される。オーディオ2はデマルチプレクサ302に送られ、そして、オーディオ2が再生される。この後、デマルチプレクサ302はビデオ3の要求をデータソース301に送信する。この時点では、ビデオ3はバッファ401に格納されていないかもしれない。したがって、マルチメディアコンテンツデータの再生は再び停止される。
【0048】
本実施形態では、このようなシークのレスポンスの低下に起因して再生動作が頻繁に停止されるという状況の発生を防ぐために、以下のようなシーク制御動作が実行される。
【0049】
再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、再生制御部306は、再生を一旦停止するとともに、バッファ401を解放する。そして、再生制御部306は、データソース301を用いて第1のバッファリング処理を開始する。この第1のバッファリング処理では、マルチメディアコンテンツデータ内の第1のデータ位置に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納する処理が実行される。この第1のバッファリング処理によって一定量のデータがバッファ401に格納された後、再生制御部306は、再生部にマルチメディアコンテンツデータの再生を第1のデータ位置から再開させる。再生が再開された後、つまり第1のバッファリング処理によって一定量のデータがバッファ401に格納された後に、バッファ401に格納されていない、マルチメディアコンテンツデータ内のオーディオデータ部がデマルチプレクサ302によって要求されるかもしれない。この場合、通常は、バッファリング処理の起点が変更されるため、第1のバッファリング処理が停止され、代わりに、要求されたオーディオデータ部をコンテンツサーバ21から受信してバッファ401に格納するための第2のバッファリング処理が開始されるかもしれない。
【0050】
本実施形態では、再生制御部306は、要求されたオーディオデータ部をコンテンツサーバ21から受信してバッファ401に格納するための第2のバッファリング処理の実行をスキップして、上述の第1のバッファリング処理を継続すると共に、再生部に、要求されたオーディオデータ部の再生をスキップさせる。つまり、バッファ401に格納されていないオーディオデータに対するアクセス要求は無視される。
【0051】
いま、再生位置が、バッファリング済み区間外に位置するビデオ1に対応するオフセット値に変更された場合を想定する。第1のバッファリング処理では、ビデオ1に対応するオフセット値に後続するデータ部それぞれ、つまりビデオ1、オーディオ4、ビデオ3…が、順次バッファリングされる。つまり、再生制御部306は、オフセット値を増加させながらデータ取得要求をコンテンツサーバ21に順次送信することにより、ビデオ1、オーディオ4、ビデオ3…を、この順でコンテンツサーバ21から受信する。第1のバッファリング処理で一定量のデータ、たとえばビデオ1に対応するデータ部とオーディオ4に対応するデータ部の一部、がバッファ401に格納されると、マルチメディアコンテンツデータの再生が再開され、ビデオ1がまず再生される。この後、デマルチプレクサ302はオーディオ2のデータを要求する。この要求は、バッファ401に格納されていないオーディオデータに対するアクセス要求であるので、再生制御部306は、このアクセか要求を無視し、オーディオ2をコンテンツサーバ21から受信してバッファ401に格納するバッファリング処理の実行をスキップする。また、再生制御部306は、再生部にオーディオ2の再生をスキップさせる。オーディオ2に対するバッファリング処理をスキップすることにより、最初に要求されたビデオ1に後続するデータ部それぞれを順次バッファリングする処理は継続して実行される。
【0052】
オーディオ4に対する要求が発生する時点では、オーディオ4はすでにバッファリング済みであるかもしれない。この場合、オーディオ4の再生はスキップされず、オーディオ4は通常通り再生される。
【0053】
したがって、本実施形態では、ストリーミング向けでないマルチメディアコンテンツデータの再生中に再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合には、最初の一定期間の間は、ビデオの再生のみが行われ、オーディオは再生されない。一定期間経過後は、ビデオとオーディオの双方が再生される。このように一部のオーディオデータ部に対するバッファリングおよび再生を省略することにより、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続であるマルチメディアコンテンツデータを、スムーズに再生することができる。
【0054】
次に、図7から図9を参照して、マルチメディアコンテンツデータ内のオーディオデータ部とビデオデータ部の配置例について説明する。
【0055】
図7は、ストリーミング向けのフォーマットを有するマルチメディアコンテンツデータを示している。オーディオデータ部A1,A2,A3,…の各々は、たとえば1秒の再生時間に相当するデータ部である。同様に、ビデオデータ部V1,V2,V3,…の各々も、たとえば1秒の再生時間に相当するデータ部である。同じ添え字番号を有するオーディオデータ部とビデオデータ部は互いに同一の時刻または近い時刻に再生されるべきデータ同士である。図7に示すように、ストリーミング向けのフォーマットを有するマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが連続している。
【0056】
図8は、ストリーミング向けではないマルチメディアコンテンツデータを示している。図9は、ストリーミング向けではない別のマルチメディアコンテンツデータを示している。
【0057】
このように、ストリーミング向けではないマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続である。
【0058】
図8または図9のマルチメディアコンテンツデータに対するシーク時には、連続するアクセス要求によって指定されるオフセット値それぞれは単調増加せずに、図10に示すようにアクセス対象のオフセット値は増加されたり減少されたりすることがある。これにより、上述したように、シークのレスポンスの低下が引き起こされる。
【0059】
いま、図9のマルチメディアコンテンツデータのオーディオデータ部A1以降のデータ区間がバッファリングされていない状態で、再生位置がビデオデータV4に対応する位置に変更された場合を想定する。マルチメディアコンテンツデータの再生は一旦停止される。バッファ201は解放され、そしてビデオデータV4に後続するデータ部(V4,V5,V6,A4,A5,A6,V7,V8…)を順次バッファリングする処理が開始される。たとえば、ビデオデータV4,V5がバッファリングされた時に、マルチメディアコンテンツデータの再生がビデオデータV4から再開される。この後、オーディオデータA4に対する要求が発生する。オーディオデータA4はまだバッファリングされていない。したがって、再生が再び停止される。しかもオーディオデータA4のオフセット位置は、現在のバッファ401内のデータ末端を示すオフセット値(たとえばビデオデータV5に対応するオフセット値)よりも時間的に後方に位置しているので、バッファ201が再び解放されるかもしれない。そして、バッファリングの起点が変更され、これによってオーディオデータA4に後続するデータ部(A4,A5,A6,V7,V8…)を順次バッファリングする処理が開始される。
【0060】
本実施形態では、図9のマルチメディアコンテンツデータに対しては以下のようなシーク動作が実行される。
【0061】
オーディオデータ部A1以降のデータ区間がバッファリングされていない状態で、再生位置がビデオデータV4に対応するデータ位置に変更された場合を想定する。マルチメディアコンテンツデータの再生は一旦停止される。バッファ201は解放され、そしてビデオデータV4に後続するデータ部(V4,V5,V6,A4,A5,A6,V7,V8…)を順次バッファリングする処理が開始される。たとえば、ビデオデータV4,V5がバッファリングされた時に、マルチメディアコンテンツデータの再生がビデオデータV4から再開される。
【0062】
この後、オーディオデータA4に対するアクセス要求が発生する。オーディオデータA4はまだバッファリングされていない。したがって、オーディオデータA4のバッファリングおよび再生はスキップされる。したがって、バッファリング処理の起点は変更されないので、未バッファリングの残りのデータ部それぞれに対するバッファリング処理が継続される。オーディオデータA4の再生がスキップされた後、ビデオデータV5に対するアクセス要求が発生する。ビデオデータV5はすでにバッファリングされているので、ビデオデータV5は即座に再生部に送られる。この後、オーディオデータA5に対するアクセス要求が発生する。もしオーディオデータA5がすでにバッファリングされているならば、オーディオデータA5も即座に再生部に送られる。
【0063】
次に、図11から図13を参照して、バッファ401を解放するバッファ解放制御動作について説明する。バッファの解放とは、データが格納されている、バッファ401内の記憶エリアを、データが格納されていないフリー状態に設定する処理である。
【0064】
図11は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとを区別しない場合のバッファ解放制御動作を示している。最終アクセスオフセット値からバッファ401内のデータの末端を示すオフセット値までのデータ量が第1の閾値よりも少ない場合、換言すれば、最終アクセスオフセット値とバッファ401内のデータの末端を示すオフセット値との間の差分が第1の閾値未満の場合、バッファ401内のフリー記憶エリアのサイズを増やすために、バッファ401内のデータの先頭から最終アクセスオフセット値までのデータ範囲が無効化され、そのデータ範囲に対応するバッファ401内の記憶エリアが解放される。たとえば、マルチメディアコンテンツデータのオフセット値1000バイトからオフセット値2000バイトまでのデータ部がバッファ401に格納されている場合を想定する。第1の閾値は600バイトであるとする。最終アクセスオフセット値が1500バイトになると、最終アクセスオフセット値1500バイトとバッファ401内のデータの末端のオフセット値2000バイトとの間の差分が第1の閾値未満になる。この場合、データ部の先頭1000バイトから最終アクセスオフセット1500バイトまでのデータ範囲が無効化される。
【0065】
しかし、もしこのようなバッファ解放制御動作をストリーミング向けでないマルチメディアコンテンツデータに適用した場合には、次に要求される可能性が高いオフセット位置のデータ部がバッファリングされていたにもかかわらず、そのデータ部が無効化されてしまう可能性がある。図12にはこの様子が示されている。図12においては、N−1番目のアクセス要求に対応する最終アクセスオフセット値とバッファ401内のデータの末端を示すオフセット値との間の差分が第1の閾値未満である場合が想定されている。N−1番目のアクセス要求が発生した時、バッファ401内のデータの先頭からN−1番目の最終アクセスオフセット値までのデータ範囲が無効化され、これによってそのデータ範囲に対応する記憶エリアが解放される。次に、N番目のアクセス要求が発生する。N番目のアクセス要求は、すでに解放された記憶エリア内に存在していたデータ部を要求するオフセット値を含むかもしれない。
【0066】
本実施形態では、次に要求される可能性が高いオフセット位置のデータ部がバッファリングされていたにもかかわらず、そのデータ部が無効化されてしまうという事態の発生を防止するために、図13に示すようなバッファ解放制御動作が実行される。
【0067】
すなわち、本実施形態のバッファ解放制御動作では、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値が、バッファ解放制御動作のための基準値として用いられる。
【0068】
再生制御部306は、ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最小値とバッファ401内のデータの末端を示すオフセット値との間の差分が第1の閾値未満の場合、バッファ401内のフリー記憶エリアのサイズを増やすために、バッファ401内のデータの先頭から上述の最小値までのデータ範囲を無効化し、そのデータ範囲に対応するバッファ401内の記憶エリアを解放する。
【0069】
たとえば、マルチメディアコンテンツデータのオフセット値1000バイトからオフセット値2000バイトまでのデータ部がバッファ401に格納されている場合を想定する。第1の閾値は800バイトであるとする。ビデオ最終アクセスオフセット値は1500バイトであり、オーディオ最終アクセスオフセット値は1250バイトである。この場合、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値は、オーディオ最終アクセスオフセット値である1250バイトとなる。そして、データ部の先頭1000バイトからオーディオ最終アクセスオフセット1250バイトまでのデータ範囲が無効化され、そのデータ範囲に対応するバッファ401内の記憶エリアが解放される。バッファ401に残るのは、オフセット値1250バイトからオフセット値2000バイトまでのデータである。
【0070】
なお、ここでは、オーディオ最終アクセスオフセット値がビデオ最終アクセスオフセット値よりも小さい場合を例示したが、オーディオ最終アクセスオフセット値がビデオ最終アクセスオフセット値よりも大きい場合には、ビデオ最終アクセスオフセット値が、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値として用いられる。
【0071】
次に、図14から図16を参照して、バッファリング済みデータ量の減少時に実行される再生停止動作について説明する。
【0072】
図14は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとを区別しない場合の再生停止動作の制御を示している。最終アクセスオフセット値からバッファ401内のデータの末端を示すオフセット値までのデータ量が第2の閾値よりも少ない場合、換言すれば、最終アクセスオフセット値とバッファ401内のデータの末端を示すオフセット値との間の差分が第2の閾値未満の場合、バッファ401内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生が停止される。
【0073】
たとえば、マルチメディアコンテンツデータのオフセット値1000バイトからオフセット値2000バイトまでのデータ部がバッファ401に格納されている場合を想定する。第2の閾値は150バイトであるとする。最終アクセスオフセット値がたとえば1900バイトになると、最終アクセスオフセット値1900バイトとバッファ401内のデータの末端のオフセット値2000バイトとの間の差分が第2の閾値未満になる。この場合、バッファ401内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生が停止される。
【0074】
しかし、もしこのような再生停止制御をストリーミング向けでないマルチメディアコンテンツデータに適用した場合には、シークバー401上においては十分なシーク可能区間39が存在しているのにもかかわらず再生動作が突然停止されてしまう可能性がある。図15にはこの様子が示されている。図15においては、N−1番目のアクセス時点のシークバー33が示されている。この時点では、最終アクセスオフセット(N−1番目のアクセス要求で指定されたオフセット)よりも時間的に後方に位置する一定量のデータがシーク可能区間39としてバッファ401に格納されている。しかし、ストリーミング向けでないマルチメディアコンテンツデータにおいては、時間的に近接するオーディオデータ部とビデオデータ部とが非連続であるため、N番目のアクセス要求によって指定されるオフセット値が、N−1番目のアクセス要求で指定されたオフセットよりも時間的に後方の比較的離れた位置を指定するかもしれない。この場合、シークバー401上においては十分なシーク可能区間39が存在しているのにもかかわらず再生動作が突然停止されてしまうという現象が発生する。
【0075】
本実施形態では、図16に示すように、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値とバッファ401内のデータの末端を示すオフセット値との間の差分に基づいてシークバー33上にバッファリング済みのデータ区間(シーク可能区間39)が表示され、さらに、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値を基準に再生停止制御が実行される。
【0076】
すなわち、再生制御部306は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最大値とバッファ401内のデータの末端を示すオフセット値との間の差分が第2の閾値未満の場合、バッファ401内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生を停止する。
【0077】
図16においては、ビデオ最終アクセスオフセット値よりもオーディオ最終アクセスオフセット値の方が大きい場合が想定されている。この場合、バッファ401内のデータの末端を示すオフセット値との間の差分に基づいてシークバー33上にバッファリング済みのデータ区間(シーク可能区間39)が表示される。図16のシークバー33の表示は、N−1番目のアクセス時点に対応している。
【0078】
このような再生停止制御により、シークバー401上においては十分なシーク可能区間39が存在しているのにもかかわらず再生動作が突然停止されてしまうという現象が発生を防止することができる。
【0079】
次に、図17のフローチャートを参照して、プレーヤアプリケーションプログラム202によって実行される再生制御処理の手順を説明する。
【0080】
プレーヤアプリケーションプログラム202においては、再生対象のマルチメディアコンテンツデータのインデックス情報に基づき、再生制御部306は、マルチメディアコンテンツデータ内のデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納するためのバッファリング処理を開始する。一定量のデータがバッファ401に格納されると、再生制御部306からデマルチプレクサ302に再生要求が発行され(ステップS11)、これによってマルチメディアコンテンツデータをストリーミングによって再生するための再生処理が開始される(ステップS12)。なお、最初に、再生制御部306からデマルチプレクサ302に再生要求を発行し、その後、バッファリング処理を開始してもよい。
【0081】
再生処理では、デマルチプレクサ302は、マルチメディアコンテンツデータのインデックス情報に基づき、次に再生すべきデータ(ビデオまたはオーディオ)をデータソース301に要求する(ステップS13)。データソース301においては、アクセス要求されたメディア種別(ビデオまたはオーディオ)を示す情報がメディア識別子設定部403に設定される(ステップS14)。さらに、データソース301においては、アクセス要求されたメディア種別に応じて、ビデオ最終アクセスオフセットまたはオーディオ最終アクセスオフセットが更新される(ステップS15)。そして、再生制御部306の制御の下、これらビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットを用いたバッファ管理動作が実行される(ステップS16,S17)。ステップS16では、上述のバッファ解放制御動作(バッファ解放処理)が実行される。またステップS17では、再生を一時的に停止することによって一定量のデータをバッファ401に格納するための上述の再生停止動作(再バッファリング処理)が実行される。バッファ解放制御動作および再生停止動作それぞれの手順の詳細は図19および図20を参照して後述する。
【0082】
次に再生すべきデータ(ビデオまたはオーディオ)がデータソース301からデマルチプレクサ302に送られると(ステップS18)、そのデータがビデオデコーダ303またはオーディオデコーダ304によってデコードされることによって再生される(ステップS19)。
【0083】
マルチメディアコンテンツデータの再生が完了するまで、ステップS12からステップS19までの再生処理が繰り返し実行される。たとえば、再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると、再生処理が完了される(ステップS21)。
【0084】
次に、図18のフローチャートを参照して、プレーヤアプリケーションプログラム202によって実行されるシーク制御動作について説明する。
【0085】
ユーザによるスライダ35の移動操作によって、再生位置が、バッファ401にまだ格納されていない、マルチメディアコンテンツデータ内のデータ位置(第1のデータ位置)に変更された場合、以下のシーク制御動作が実行される。
【0086】
すなわち、再生制御部306は、デマルチプレクサ302に再生動作を停止させると共に、再生位置を第1のデータ位置に変更すべきことをデマルチプレクサ302に要求する(ステップS31)。そして、再生制御部306の制御の下、シーク処理が開始される(ステップS32)。シーク処理では、デマルチプレクサ302は、マルチメディアコンテンツデータのインデックス情報に基づき、次に再生すべきデータ(ビデオまたはオーディオ)をデータソース301に要求する(ステップS33)。シーク処理開始直後においては、ステップS33において、デマルチプレクサ302は、マルチメディアコンテンツデータのインデックス情報に基づき、第1のデータ位置に対応するビデオデータ部のオフセット値を算出し、そのオフセット値を含むアクセス要求をデータソース301に送出する。データソース301においては、アクセス要求されたメディア種別(ビデオまたはオーディオ)を示す情報がメディア識別子設定部403に設定される(ステップS34)。さらに、データソース301においては、アクセス要求されたメディア種別に応じて、ビデオ最終アクセスオフセットまたはオーディオ最終アクセスオフセットが更新される(ステップS35)。そして、再生制御部306の制御の下、以下のバッファリング制御動作が実行される。
【0087】
再生制御部306は、アクセス要求されたデータがバッファ401に格納されていない場合(ステップS36のNO)、そのアクセス要求されたメディア種別がビデオまたはオーディオのいずれであるかを判定する(ステップS41)。アクセス要求されたメディア種別がビデオであれば(ステップS41のYES)、再生制御部306は、バッファ401の全記憶エリアを解放し、そして、アクセス要求によって指定されたオフセット値に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納する第1のバッファリング処理を開始する(ステップS42)。第1のバッファリング処理では、再生制御部306は、アクセス要求によって指定されたオフセット値に後続するデータ部それぞれをコンテンツサーバ21から取得する処理を繰り返し実行する。
【0088】
第1のバッファリング処理によってある一定量のデータがバッファリングされると、再生制御部306は、再生動作を再開させる。次に再生すべきデータ(ビデオまたはオーディオ)がデータソース301からデマルチプレクサ302に送られると(ステップS37)、そのデータがビデオデコーダ303またはオーディオデコーダ304によってデコードされることによって再生される(ステップS38)。マルチメディアコンテンツデータの再生が完了するまで、ステップS32からS38までの処理が繰り返し実行される。再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると、再生処理(シーク)が完了される(ステップS40)。
【0089】
アクセス要求されたデータがバッファ401に格納されておらず(ステップS36のNO)、且つそのアクセス要求されたデータのメディア種別がオーディオデータであるならば(ステップS41のNO)、再生制御部306は、そのアクセス要求されたデータ(オーディオデータ)のバッファリングおよび再生をスキップし(ステップS43)、ステップS33に進む。つまり、再生制御部306は、バッファ401に格納されていないオーディオデータがアクセス要求された場合には、そのアクセス要求によって要求されたオーディオデータをコンテンツサーバ21から取得する処理、およびオーディオデータをデマルチプレクサ302に再生させる処理をそれぞれスキップする。したがって、シーク期間中においては、たとえまだバッファリングされていないオーディオデータが要求された場合でも、そのオーディオデータの取得のためにシークの起点が変更されることはない。これによって第1のバッファリング処理は継続して実行される。
【0090】
シーク処理期間中に、バッファリングされていないビデオデータ部が要求された場合は、ステップS42のバッファリング処理が実行される。この場合、要求されたビデオデータ部とそのビデオデータ部に後続するデータ部それぞれを順次受信してバッファ401に格納する処理が実行される。
【0091】
なお、再生位置が第1のデータ位置に変更された時点で、第1のバッファリング処理を開始し、一定量のデータがバッファリングされた後に、ステップS32からのシーク処理を開始するようにしてもよい。
【0092】
次に、図19のフローチャートを参照して、図17のステップS16で実行されるバッファ解放制御動作(バッファ解放処理)の手順を説明する。図19に示されているように、バッファ解放処理では、再生制御部306は、バッファ量管理部402を用いて、以下の条件が成立しているか否かを判定する。
【0093】
閾値>BLOffset − MIN (VFOffset, AFOffset)
ここで、BLOffsetはバッファ401に格納されているデータの末端のオフセット値を示す。VFOffsetはビデオ最終アクセスオフセット値を示す。AFOffsetはオーディオ最終アクセスオフセット値を示す。MIN (VFOffset, AFOffset)は、VFOffsetとAFOffsetの2つの値から最小値を選択する関数を示す。
【0094】
閾値>BLOffset − MIN (VFOffset, AFOffset)の条件が成立した場合(ステップS51のYES)、再生制御部306は、バッファ401内のデータの先頭からMIN (VFOffset, AFOffset)までのデータを無効化してそのデータが格納されているバッファ401内の記憶エリアを解放する(ステップS52)。
【0095】
次に、図20のフローチャートを参照して、図17のステップS17で実行される再生停止動作(再バッファリング処理)の手順を説明する。図20に示されているように、再バッファリング処理では、再生制御部306は、バッファ量管理部402を用いて、以下の条件が成立しているか否かを判定する。
【0096】
閾値>BLOffset − MAX (VFOffset, AFOffset)
ここで、BLOffsetはバッファ401に格納されているデータの末端のオフセット値を示す。VFOffsetはビデオ最終アクセスオフセット値を示す。AFOffsetはオーディオ最終アクセスオフセット値を示す。MAX (VFOffset, AFOffset)は、VFOffsetとAFOffsetの2つの値から最大値を選択する関数を示す。
【0097】
閾値>BLOffset − MAX (VFOffset, AFOffset)の条件が成立した場合(ステップS61のYES)、再生制御部306は、一定量のデータがバッファ401に格納されるまで再生を停止させる(ステップS62)。
【0098】
以上説明したように、本実施形態によれば、再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、第1のデータ位置に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納するための第1のバッファリング処理が開始される。そして、所定量のデータがバッファ401に格納された後に、バッファ401に格納されていないオーディオデータ部が要求された場合には、その要求されたオーディオデータ部をコンテンツサーバ21受信してバッファ401に格納するための第2のバッファリング処理の実行がスキップされ、第1のバッファリング処理が継続されると共に、再生部による、要求されたオーディオデータ部の再生がスキップされる。したがって、ストリーミング向けでないマルチメディアコンテンツデータの再生中に再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合には、最初の一定期間の間は、ビデオの再生のみが行われ、オーディオは再生されない。一定期間経過後は、ビデオとオーディオの双方が再生される。このように一部のオーディオデータ部に対するバッファリングおよび再生を省略することにより、たとえ再生対象のマルチメディアコンテンツデータが、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続であるコンテンツデータであっても、そのコンテンツデータを、スムーズに再生することができる。
【0099】
なお、本実施形態の再生制御処理の手順は全てソフトウェアによって実行することができる。このため、この再生制御処理手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【0100】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0101】
10…コンピュータ、21…コンテンツサーバ、33…シークバー、202…プレーヤアプリケーションプログラム、301…データソース、302…デマルチプレクサ、303…ビデオデコーダ、304…オーディオデコーダ、305…レンダラ、306…再生制御部、401…バッファ、402…バッファ量管理部。
【技術分野】
【0001】
本発明の実施形態は、コンテンツデータを再生可能な電子機器および再生制御方法に関する。
【背景技術】
【0002】
近年、パーソナルコンピュータ、PDA、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、インターネットを介してマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生するストリーミング再生機能を有している。
【0003】
マルチメディアコンテンツデータのストリーミング再生においては、コンテンツサーバから受信されるマルチメディアコンテンツデータの一部分は電子機器内のストリームバッファに格納される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−224749号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
電子機器上で実行されるプレーヤソフトウェアは、シークバー(またはプログレッシブバー)と称されるユーザインタフェースを表示する。ユーザは、シークバーを操作することによって、マルチメディアコンテンツデータ内の再生位置を変更することができる。
【0006】
バッファに格納されていないデータ位置が再生位置として指定された場合、プレーヤソフトウェアは、コンテンツサーバから該当するデータ部分の取得を開始し、そのデータ部分をバッファに格納する(シーク)。このバッファリングには一定の時間を要する。したがって、新たなデータ部分が要求されてからそのデータ部分がバッファに格納されるまでのタイムラグにより、指定されたデータ位置からの再生が開始されるまでには、ある待ち時間が必要となる。
【0007】
一般に、ストリーミング向けファイル形式のマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが連続して配置されている。
【0008】
しかし、ストリーミング向けでないファイル形式のマルチメディアコンテンツデータも存在する。このようなマルチメディアコンテンツデータにおいては、連続して再生されるべき互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続に配置されている可能性がある。このようなマルチメディアコンテンツデータに対するシークにおいては、非連続の個々のデータ部分をコンテンツサーバから受信するための処理によってシークのレスポンスが低下する可能性、つまりそれらデータ部分のバッファリングのためのタイムラグが大きくなる可能性がある。したがって、たとえ指定されたデータ位置からのマルチメディアコンテンツデータの再生が一旦再開されても、その再生がすぐに再び停止されてしまうかもしれない。なぜなら、指定されたデータ位置のデータ部分に続いて再生すべき別のデータ部分をバッファリングのための待ち時間が発生する可能性があるためである。
【0009】
本発明は、マルチメディアコンテンツデータをスムーズに再生することができる電子機器及びコンテンツ再生制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
実施形態によれば、電子機器は、ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する。この電子機器は、バッファと、再生手段と、制御手段とを具備する。前記バッファは、前記受信されたマルチメディアコンテンツデータを格納する。前記再生手段は、前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する。前記制御手段は、再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生手段に前記再生を停止させると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始する。前記制御手段は、さらに、前記第1のバッファリング処理が開始された後に前記再生手段に前記第1のデータ位置から前記再生を再開させ、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部が前記再生手段によって要求された場合、前記第1のバッファリング処理を継続する。前記再生手段は、前記要求されたオーディオデータ部の再生を実行しない。
【図面の簡単な説明】
【0011】
【図1】実施形態に係る電子機器の外観を示す斜視図。
【図2】同実施形態の電子機器によって実行されるプレーヤソフトウェアによって表示されるコンテンツ再生画面の例を示す図。
【図3】同実施形態の電子機器のシステム構成を示すブロック図。
【図4】同実施形態の電子機器によって実行されるプレーヤソフトウェアの構成を示すブロック図。
【図5】図4のプレーヤソフトウェアによって実行されるバッファ管理動作を説明するための図。
【図6】図4のプレーヤソフトウェアによって実行されるシーク制御動作を説明するための図。
【図7】ストリーミング向けのマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の配置例を示す図。
【図8】ストリーミング向けではないマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の配置例を示す図。
【図9】ストリーミング向けではないマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の他の配置例を示す図。
【図10】シークのレスポンスが低下される現象を説明するための図。
【図11】バッファ解放制御動作の例を説明するための図。
【図12】図11のバッファ解放制御動作を用いた場合に発生する可能性がある、解放済みのバッファエリア内に存在していたデータに対する要求を説明するための図。
【図13】図4のプレーヤソフトウェアによって実行されるバッファ解放制御動作を説明するための図。
【図14】バッファリング済みデータ量の減少時に実行される再生停止動作を説明するため図。
【図15】再生が突然停止される様子を説明するための図。
【図16】図4のプレーヤソフトウェアによって実行される再生停止動作を説明するための図。
【図17】図4のプレーヤソフトウェアによって実行される再生制御動作の手順を示すフローチャート。
【図18】図4のプレーヤソフトウェアによって実行されるシーク制御動作の手順を説明するフローチャート。
【図19】図4のプレーヤソフトウェアによって実行されるバッファ解放動作の手順を説明するフローチャート。
【図20】バッファリング済みデータ量の減少時に図4のプレーヤソフトウェアによって実行される手順を説明するフローチャート。
【発明を実施するための形態】
【0012】
以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、スレート型パーソナルコンピュータ(PC)、ラップトップ型PC、スマートフォン、またはPDA等として実現され得る。以下では、この電子機器がスレート型パーソナルコンピュータ10として実現されている場合を想定する。スレート型パーソナルコンピュータ10は、図1に示すように、コンピュータ本体11とタッチスクリーンディスプレイ17とから構成される。
【0013】
コンピュータ本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17は、液晶表示装置(LCD)及びタッチパネルが組み込まれている。タッチパネルは、LCDの画面を覆うように設けられる。タッチスクリーンディスプレイ17は、コンピュータ本体11の上面に重ね合わせるように取り付けられている。
【0014】
コンピュータ10はマルチメディアコンテンツデータをストリーミングによって再生するコンテンツ再生機能を有している。このコンテンツ再生機能はコンピュータ10にインストールされたプレーヤソフトウェアによって実行される。プレーヤソフトウェアによるコンテンツ再生動作は、オペレーティングシステムによって提供されるマルチメディアフレームワークを利用して実行するようにしてもよい。コンピュータ10は有線または無線ネットワークとの通信を実行する通信デバイスを内蔵しており、コンピュータ10とインターネット20との間の通信はこの通信デバイスを介して実行される。
【0015】
マルチメディアコンテンツデータは、ビデオデータとオーディオデータとが多重化されたデータストリームである。ビデオデータは圧縮符号化されていてもよく、またオーディオデータも圧縮符号化されていてもよい。
【0016】
プレーヤソフトウェアはインターネット20のようなネットワークを介してコンテンツサーバ21からマルチメディアコンテンツデータを受信する。プレーヤソフトウェアはマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生する。コンピュータ10においては、マルチメディアコンテンツデータ内の受信されたデータ部はバッファに格納される。バッファはコンピュータ10内のメモリの一部である。バッファに一定量のデータが蓄積された後に、プレーヤソフトウェアはマルチメディアコンテンツデータの再生を開始する。
【0017】
マルチメディアコンテンツデータの再生処理においては、バッファに格納されたビデオデータ部およびオーディオデータ部の各々が再生される。マルチメディアコンテンツデータの再生処理の間、プレーヤソフトウェアは、先読み処理を実行してもよい。先読み処理は、現在再生位置よりも時間的に後のデータ部それぞれをコンテンツサーバ21から順次受信してバッファに格納するバッファリング処理である。
【0018】
図2は、プレーヤソフトウェアによってディスプレイ17に表示されるコンテンツ再生画面の例である。コンテンツ再生画面はビデオ表示エリア31およびシークバー33を表示する。ビデオ表示エリア31は、マルチメディアコンテンツデータ内のビデオデータの画像(動画像)を表示するための表示領域である。シークバー33はマルチメディアコンテンツデータの再生位置をユーザに制御させるためのグラフィカルユーザインタフェースである。
【0019】
シークバー33の左端および右端は再生対象のマルチメディアコンテンツデータの先頭位置および終端位置にそれぞれ対応する。マルチメディアコンテンツデータの再生期間中においては、マルチメディアコンテンツデータの再生位置は時間の経過に伴って自動的に更新される。再生位置のようなマルチメディアコンテンツデータ内のデータ位置を示す値としては、マルチメディアコンテンツデータの先頭位置を起点としたオフセット値を用いてもよい。あるデータ位置に対応するオフセット値は、マルチメディアコンテンツデータの先頭位置からそのデータ位置までのデータサイズを示す。
【0020】
シークバー33はスライダ35を表示する。スライダ35はマルチメディアコンテンツデータ内の現在再生位置を示す。つまり、スライダ35はマルチメディアコンテンツデータの再生の進行状況を示す。ユーザは、ポインティングデバイスを用いてスライダ35を移動させることにより、マルチメディアコンテンツデータ内の再生位置を変更することができる。
【0021】
シークバー33は、さらに、再生済み区間37およびシーク可能区間39をシークバー33上に表示する。再生済み区間37は、マルチメディアコンテンツデータのシーケンスの内、再生済みで且つバッファにデータ部が残っているデータ区間を示す。シーク可能区間39は、マルチメディアコンテンツデータのシーケンスの内、未再生で且つバッファにデータ部がすでに格納されているデータ区間を示す。シーク可能区間39ができるだけ一定時間以上となるように、上述の先読み処理(バッファリング処理)が実行されるようにしてもよい。
【0022】
スライダ35がシーク可能区間39内の任意の位置に移動された時、再生位置は、スライダ35によって示される、シーク可能区間39内の位置に即座に変更される。スライダ35がシーク可能区間39外のエリアに移動された時、つまり、再生位置がバッファにまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、プレーヤソフトウェアは、バッファリング処理を開始する。このバッファリング処理においては、プレーヤソフトウェアは、マルチメディアコンテンツデータ内の上述の第1のデータ位置(シーク開始位置)に後続するデータ部それぞれをコンテンツサーバから順次受信してバッファに格納する。バッファリング処理によって所定量のデータがバッファに格納されるまで、マルチメディアコンテンツデータの再生は停止される。バッファリング処理によって所定量のデータがバッファに格納された後、マルチメディアコンテンツデータの再生が第1のデータ位置から再開される。
【0023】
図3は、本コンピュータ10のシステム構成を示す図である。
本コンピュータ10は、図3に示されるように、CPU101、ノースブリッジ102、主メモリ103、サウスブリッジ104、グラフィクスコントローラ105、サウンドコントローラ106、BIOS−ROM107、LANコントローラ108、ソリッドステートドライブ(SSD)109、無線LANコントローラ112、エンベデッドコントローラ(EC)113、EEPROM114、HDMI制御回路3等を備える。
【0024】
CPU101は、コンピュータ10内の各部の動作を制御するプロセッサである。CPU101は、SSD109から主メモリ103にロードされる、オペレーティングシステム(OS)201、および各種アプリケーションプログラムを実行する。アプリケーションプログラムには、プレーヤアプリケーションプログラム202が含まれている。このプレーヤアプリケーションプログラム202は上述のプレーヤソフトウェアであり、オペレーティングシステム(OS)201上で実行される。
【0025】
また、CPU101は、BIOS−ROM107に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。
【0026】
ノースブリッジ102は、CPU101のローカルバスとサウスブリッジ104との間を接続するブリッジデバイスである。ノースブリッジ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ105との通信を実行する機能も有している。
【0027】
グラフィクスコントローラ105は、本コンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。このグラフィクスコントローラ105によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて映像を表示する。このLCD17A上にはタッチパネル17Bが配置されている。タッチパネル17Bは、LCD17Aの画面上で入力を行うためのポインティングデバイスである。ユーザは、タッチパネル17Bを用いて、LCD17Aの画面に表示されたグラフィカルユーザインタフェース(GUI)等を操作することができる。例えば、ユーザは、画面に表示されたボタンをタッチすることによって、当該ボタンに対応する機能の実行を指示することができる。
【0028】
HDMI端子2は、外部ディスプレイ接続端子である。HDMI端子2は、非圧縮のデジタル映像信号とデジタルオーディオ信号とを1本のケーブルで外部ディスプレイ装置1に送出することができる。HDMI制御回路3は、HDMIモニタと称される外部ディスプレイ装置1にデジタル映像信号をHDMI端子2を介して送出するためのインタフェースである。つまり、コンピュータ10は、HDMI端子2等を介して、外部ディスプレイ装置1に接続可能である。
【0029】
サウスブリッジ104は、PCI(Peripheral Component Interconnect)バス上の各デバイス及びLPC(Low Pin Count)バス上の各デバイスを制御する。また、サウスブリッジ104は、SSD109を制御するためのATAコントローラを内蔵している。
【0030】
サウスブリッジ104は、各種USBデバイスを制御するためのUSBコントローラを内蔵している。さらに、サウスブリッジ104は、サウンドコントローラ106との通信を実行する機能も有している。サウンドコントローラ106は音源デバイスであり、再生対象のオーディオデータをスピーカ18A,18Bに出力する。LANコントローラ108は、例えばIEEE 802.3規格の有線通信を実行する有線通信デバイスである。無線LANコントローラ112は、例えばIEEE 802.11規格の無線通信を実行する無線通信デバイスである。
【0031】
EC113は、電力管理のためのエンベデッドコントローラを含む1チップマイクロコンピュータである。EC113は、ユーザによるパワーボタンの操作に応じて本コンピュータ10を電源オン/電源オフする機能を有している。
【0032】
次に、図4を参照して、プレーヤアプリケーションプログラム202の機能構成を説明する。
プレーヤアプリケーションプログラム202は、データソース301、デマルチプレクサ302、ビデオデコーダ303、オーディオデコーダ304、レンダラ305、および再生制御部306を備える。データソース301は、再生制御部306の制御の下、コンテンツサーバ21からマルチメディアコンテンツデータを受信するための処理を順次実行し、受信されたデータ部分それぞれをバッファ401に格納する(バッファリング)。コンテンツサーバ21からマルチメディアコンテンツデータを受信する処理においては、たとえば、HTTPストリーミングを使用してもよい。この場合、データソース301は、コンテンツサーバ21にデータ部を要求し、その要求したデータ部をコンテンツサーバ21から受信する。
【0033】
デマルチプレクサ302、ビデオデコーダ303、オーディオデコーダ304、およびレンダラ305は、バッファ401に格納されたデータ部内に含まれるビデオデータ部およびオーディオデータ部をそれぞれ再生する再生部として機能する。
【0034】
デマルチプレクサ302は、データソース301内のバッファ401からデータを受信し、そのデータをビデオデータ部とオーディオデータ部とに分離する。ビデオデコーダ303はビデオデータ部をデコードし、そのデコードされたビデオデータ部をレンダラ305に送る。オーディオデコーダ304はオーディオデータ部をデコードし、そのデコードされたオーディオデータ部をレンダラ305に送る。レンダラ305はデコードされたビデオデータ部の動画像をビデオ表示エリア31上に表示する。さらに、レンダラ305はデコードされたオーディオデータ部に対応する音をスピーカ等を介して出力する。
【0035】
再生制御部306は、プレーヤアプリケーションプログラム202によるコンテンツデータの再生動作を制御する。より詳しくは、再生制御部306は、データソース301、デマルチプレクサ302、ビデオデコーダ303、オーディオデコーダ304、およびレンダラ305をそれぞれ制御する。
【0036】
マルチメディアコンテンツデータのバッファリング処理は、デマルチプレクサ302からデータソース301に送られるアクセス要求に含まれるオフセット値を起点として開始される。ここで、このオフセット値は、マルチメディアコンテンツデータの先頭位置からマルチメディアコンテンツデータの再生対象位置までのデータサイズ(オフセット)を示す。一定量のデータがバッファ401に格納されるまで再生の実行は待機される。一定量のデータがバッファ401に格納された時点で、マルチメディアコンテンツデータの再生が開始される。再生中においては、デマルチプレクサ302はアクセス要求を順次発行する。アクセス要求に含まれるオフセット値のデータ部がバッファ401に格納されているならば、そのデータ部が即座にデータソース301からデマルチプレクサ302に返される。
【0037】
デマルチプレクサ302からのアクセス要求によって指定されるオフセット値は、最終アクセスオフセットとしてデータソース301内に記録される。この最終アクセスオフセットは、バッファ量管理部402によるバッファ量管理処理に使用される。
【0038】
本実施形態では、ビデオデータおよびオーディオデータそれぞれに対応する2つのストリームバッファを使用するのではなく、ビデオデータおよびオーディオデータが同じバッファ401に格納される。同じバッファ401をビデオデータの格納とオーディオデータの格納とに共用する構成は、必要なメモリ量と必要なデータ転送レートを低減することを可能にする。
【0039】
本実施形態では、データソース301は、さらに、メディア識別子設定部403を備えている。メディア識別子設定部403は、デマルチプレクサ302からのアクセス要求がビデオデータに対する要求(ビデオアクセス要求)またはオーディオに対する要求(オーディオアクセ要求)のいずれであるかに応じて、ビデオデータの最終アクセスオフセット(ビデオ最終アクセスオフセット)とオーディオデータの最終アクセスオフセット(オーディオ最終アクセスオフセット)とを個別に管理する。
【0040】
次に、図5を参照して、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの例を説明する。ビデオ最終アクセスオフセットは、最後のビデオアクセス要求によって指定されたオフセット値である。また、オーディオ最終アクセスオフセットは、最後のオーディオアクセス要求によって指定されたオフセット値である。
【0041】
ここでは、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが比較的離れて配置されているマルチメディアコンテンツデータをストリーミングを用いて再生する場合を想定する。このようなマルチメディアコンテンツデータとしては、ASF(Advanced Systems Format)のようフォーマットのコンテンツデータがある。このASFに対応するコンテンツデータファイルはコンテンツの再生時間長等の情報を含むヘッダ部とデータ部とインデックス情報とを含む。インデックス情報は、データ部内に存在するビデオデータ部それぞれのオフセット値を示す。デマルチプレクサ302は、再生制御部306からインデックス情報を受信し、そのインデックス情報に基づいてビデオデータ部およびオーディオデータ部それぞれのオフセット値を算出する。
【0042】
図5においては、マルチメディアコンテンツデータのシーケンスの内、オフセット値1000バイトからオフセット値2000バイトまでのデータ部(データ区間ともいう)がバッファリングされている。ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値からバッファ401内のデータ末端までのデータ区間が、上述のシークバー33上にシーク可能区間39として、つまりバッファリング済みのデータ区間として、表示される。たとえば、ビデオ最終アクセスオフセットが1500バイトを示し、オーディオ最終アクセスオフセットが1300バイトを示しているならば、1500バイトからバッファ401内のデータ末端(2000バイト)までがシーク可能区間39として表示される。つまり、本実施形態では、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値とバッファ401内のデータ末端のオフセット値との間の差分に基づいて、シークバー33上にシーク可能区間39が表示される。
【0043】
ユーザによってスライダ35がシーク可能区間39よりも時間的に後のデータ位置に移動された場合、つまり再生位置がバッファリング済み期間外の位置に変更された場合、再生制御部306は、再生を停止すると共に、バッファ401を解放し、データソース301を用いてバッファリングをやりなおす(バッファリング済み期間外へのシーク)。より詳しくは、再生制御部306は、変更後の再生位置に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納するバッファリング処理を開始する。一定量のデータがバッファ401に格納された時点で、再生制御部306は、再生を再開させる。デマルチプレクサ302は、変更後の再生位置を示すオフセット値(たとえば、2000バイト目よりも時間的に後のデータ位置)を含むアクセス要求を発行する。このアクセス要求の受信に応答して、データソース301は、アクセス要求されたデータ部をバッファ401から読み出してデマルチプレクサ302に送る。
【0044】
次に、図6を参照して、本実施形態のシーク制御動作について説明する。
【0045】
バッファリング済み期間外へのシーク時においては、デマルチプレクサ302は、以下のような順序で、ビデオアクセス要求、オーディオアクセス要求をデータソース301に送るかもしれない。
【0046】
(1)ビデオ1の要求
(2)オーディオ2の要求
(3)ビデオ3の要求
(4)オーディオ4の要求
ビデオ1、オーディオ2、ビデオ3、オーディオ4はこの順で再生すべきデータ部である。ストリーミング向けでないマルチメディアコンテンツデータにおいては、ビデオ1、オーディオ2、ビデオ3、オーディオ4それぞれのオフセット値がビデオ1、オーディオ2、ビデオ3、オーディオ4の順に並んでおらず、図6に示すように、たとえば、オーディオ2、ビデオ1、オーディオ4、ビデオ3のように並んでいる場合がある。この場合、上述したように、シークのレスポンスが大幅に低下する可能性がある。以下、具体的に説明する。
【0047】
バッファリング済み期間外へのシーク時においては、まず、バッファ201が解放される。そして、ビデオ1に対応するオフセット値に後続するデータ部それぞれを順次受信してバッファ401に格納するためのバッファリング処理が開始される。一定量のデータがバッファ401に格納されると、再生が再開される。マルチプレクサ302はビデオ1の要求をデータソース301に送信する。ビデオ1はバッファ401I格納されているので、ビデオ1はバッファ401から読み出され、デマルチプレクサ302に送られ、そして、ビデオ1が再生される。この後、デマルチプレクサ302はオーディオ2の要求をデータソース301に送信する。この時点で、オーディオ2はバッファ401に格納されていないので、マルチメディアコンテンツデータの再生は再び停止される。再生制御部306は、今度は、オーディオ2に対応するオフセット値に後続するデータ部のバッファリングを開始する。一定量のデータがバッファ401に格納されると、再生が再開される。オーディオ2はデマルチプレクサ302に送られ、そして、オーディオ2が再生される。この後、デマルチプレクサ302はビデオ3の要求をデータソース301に送信する。この時点では、ビデオ3はバッファ401に格納されていないかもしれない。したがって、マルチメディアコンテンツデータの再生は再び停止される。
【0048】
本実施形態では、このようなシークのレスポンスの低下に起因して再生動作が頻繁に停止されるという状況の発生を防ぐために、以下のようなシーク制御動作が実行される。
【0049】
再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、再生制御部306は、再生を一旦停止するとともに、バッファ401を解放する。そして、再生制御部306は、データソース301を用いて第1のバッファリング処理を開始する。この第1のバッファリング処理では、マルチメディアコンテンツデータ内の第1のデータ位置に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納する処理が実行される。この第1のバッファリング処理によって一定量のデータがバッファ401に格納された後、再生制御部306は、再生部にマルチメディアコンテンツデータの再生を第1のデータ位置から再開させる。再生が再開された後、つまり第1のバッファリング処理によって一定量のデータがバッファ401に格納された後に、バッファ401に格納されていない、マルチメディアコンテンツデータ内のオーディオデータ部がデマルチプレクサ302によって要求されるかもしれない。この場合、通常は、バッファリング処理の起点が変更されるため、第1のバッファリング処理が停止され、代わりに、要求されたオーディオデータ部をコンテンツサーバ21から受信してバッファ401に格納するための第2のバッファリング処理が開始されるかもしれない。
【0050】
本実施形態では、再生制御部306は、要求されたオーディオデータ部をコンテンツサーバ21から受信してバッファ401に格納するための第2のバッファリング処理の実行をスキップして、上述の第1のバッファリング処理を継続すると共に、再生部に、要求されたオーディオデータ部の再生をスキップさせる。つまり、バッファ401に格納されていないオーディオデータに対するアクセス要求は無視される。
【0051】
いま、再生位置が、バッファリング済み区間外に位置するビデオ1に対応するオフセット値に変更された場合を想定する。第1のバッファリング処理では、ビデオ1に対応するオフセット値に後続するデータ部それぞれ、つまりビデオ1、オーディオ4、ビデオ3…が、順次バッファリングされる。つまり、再生制御部306は、オフセット値を増加させながらデータ取得要求をコンテンツサーバ21に順次送信することにより、ビデオ1、オーディオ4、ビデオ3…を、この順でコンテンツサーバ21から受信する。第1のバッファリング処理で一定量のデータ、たとえばビデオ1に対応するデータ部とオーディオ4に対応するデータ部の一部、がバッファ401に格納されると、マルチメディアコンテンツデータの再生が再開され、ビデオ1がまず再生される。この後、デマルチプレクサ302はオーディオ2のデータを要求する。この要求は、バッファ401に格納されていないオーディオデータに対するアクセス要求であるので、再生制御部306は、このアクセか要求を無視し、オーディオ2をコンテンツサーバ21から受信してバッファ401に格納するバッファリング処理の実行をスキップする。また、再生制御部306は、再生部にオーディオ2の再生をスキップさせる。オーディオ2に対するバッファリング処理をスキップすることにより、最初に要求されたビデオ1に後続するデータ部それぞれを順次バッファリングする処理は継続して実行される。
【0052】
オーディオ4に対する要求が発生する時点では、オーディオ4はすでにバッファリング済みであるかもしれない。この場合、オーディオ4の再生はスキップされず、オーディオ4は通常通り再生される。
【0053】
したがって、本実施形態では、ストリーミング向けでないマルチメディアコンテンツデータの再生中に再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合には、最初の一定期間の間は、ビデオの再生のみが行われ、オーディオは再生されない。一定期間経過後は、ビデオとオーディオの双方が再生される。このように一部のオーディオデータ部に対するバッファリングおよび再生を省略することにより、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続であるマルチメディアコンテンツデータを、スムーズに再生することができる。
【0054】
次に、図7から図9を参照して、マルチメディアコンテンツデータ内のオーディオデータ部とビデオデータ部の配置例について説明する。
【0055】
図7は、ストリーミング向けのフォーマットを有するマルチメディアコンテンツデータを示している。オーディオデータ部A1,A2,A3,…の各々は、たとえば1秒の再生時間に相当するデータ部である。同様に、ビデオデータ部V1,V2,V3,…の各々も、たとえば1秒の再生時間に相当するデータ部である。同じ添え字番号を有するオーディオデータ部とビデオデータ部は互いに同一の時刻または近い時刻に再生されるべきデータ同士である。図7に示すように、ストリーミング向けのフォーマットを有するマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが連続している。
【0056】
図8は、ストリーミング向けではないマルチメディアコンテンツデータを示している。図9は、ストリーミング向けではない別のマルチメディアコンテンツデータを示している。
【0057】
このように、ストリーミング向けではないマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続である。
【0058】
図8または図9のマルチメディアコンテンツデータに対するシーク時には、連続するアクセス要求によって指定されるオフセット値それぞれは単調増加せずに、図10に示すようにアクセス対象のオフセット値は増加されたり減少されたりすることがある。これにより、上述したように、シークのレスポンスの低下が引き起こされる。
【0059】
いま、図9のマルチメディアコンテンツデータのオーディオデータ部A1以降のデータ区間がバッファリングされていない状態で、再生位置がビデオデータV4に対応する位置に変更された場合を想定する。マルチメディアコンテンツデータの再生は一旦停止される。バッファ201は解放され、そしてビデオデータV4に後続するデータ部(V4,V5,V6,A4,A5,A6,V7,V8…)を順次バッファリングする処理が開始される。たとえば、ビデオデータV4,V5がバッファリングされた時に、マルチメディアコンテンツデータの再生がビデオデータV4から再開される。この後、オーディオデータA4に対する要求が発生する。オーディオデータA4はまだバッファリングされていない。したがって、再生が再び停止される。しかもオーディオデータA4のオフセット位置は、現在のバッファ401内のデータ末端を示すオフセット値(たとえばビデオデータV5に対応するオフセット値)よりも時間的に後方に位置しているので、バッファ201が再び解放されるかもしれない。そして、バッファリングの起点が変更され、これによってオーディオデータA4に後続するデータ部(A4,A5,A6,V7,V8…)を順次バッファリングする処理が開始される。
【0060】
本実施形態では、図9のマルチメディアコンテンツデータに対しては以下のようなシーク動作が実行される。
【0061】
オーディオデータ部A1以降のデータ区間がバッファリングされていない状態で、再生位置がビデオデータV4に対応するデータ位置に変更された場合を想定する。マルチメディアコンテンツデータの再生は一旦停止される。バッファ201は解放され、そしてビデオデータV4に後続するデータ部(V4,V5,V6,A4,A5,A6,V7,V8…)を順次バッファリングする処理が開始される。たとえば、ビデオデータV4,V5がバッファリングされた時に、マルチメディアコンテンツデータの再生がビデオデータV4から再開される。
【0062】
この後、オーディオデータA4に対するアクセス要求が発生する。オーディオデータA4はまだバッファリングされていない。したがって、オーディオデータA4のバッファリングおよび再生はスキップされる。したがって、バッファリング処理の起点は変更されないので、未バッファリングの残りのデータ部それぞれに対するバッファリング処理が継続される。オーディオデータA4の再生がスキップされた後、ビデオデータV5に対するアクセス要求が発生する。ビデオデータV5はすでにバッファリングされているので、ビデオデータV5は即座に再生部に送られる。この後、オーディオデータA5に対するアクセス要求が発生する。もしオーディオデータA5がすでにバッファリングされているならば、オーディオデータA5も即座に再生部に送られる。
【0063】
次に、図11から図13を参照して、バッファ401を解放するバッファ解放制御動作について説明する。バッファの解放とは、データが格納されている、バッファ401内の記憶エリアを、データが格納されていないフリー状態に設定する処理である。
【0064】
図11は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとを区別しない場合のバッファ解放制御動作を示している。最終アクセスオフセット値からバッファ401内のデータの末端を示すオフセット値までのデータ量が第1の閾値よりも少ない場合、換言すれば、最終アクセスオフセット値とバッファ401内のデータの末端を示すオフセット値との間の差分が第1の閾値未満の場合、バッファ401内のフリー記憶エリアのサイズを増やすために、バッファ401内のデータの先頭から最終アクセスオフセット値までのデータ範囲が無効化され、そのデータ範囲に対応するバッファ401内の記憶エリアが解放される。たとえば、マルチメディアコンテンツデータのオフセット値1000バイトからオフセット値2000バイトまでのデータ部がバッファ401に格納されている場合を想定する。第1の閾値は600バイトであるとする。最終アクセスオフセット値が1500バイトになると、最終アクセスオフセット値1500バイトとバッファ401内のデータの末端のオフセット値2000バイトとの間の差分が第1の閾値未満になる。この場合、データ部の先頭1000バイトから最終アクセスオフセット1500バイトまでのデータ範囲が無効化される。
【0065】
しかし、もしこのようなバッファ解放制御動作をストリーミング向けでないマルチメディアコンテンツデータに適用した場合には、次に要求される可能性が高いオフセット位置のデータ部がバッファリングされていたにもかかわらず、そのデータ部が無効化されてしまう可能性がある。図12にはこの様子が示されている。図12においては、N−1番目のアクセス要求に対応する最終アクセスオフセット値とバッファ401内のデータの末端を示すオフセット値との間の差分が第1の閾値未満である場合が想定されている。N−1番目のアクセス要求が発生した時、バッファ401内のデータの先頭からN−1番目の最終アクセスオフセット値までのデータ範囲が無効化され、これによってそのデータ範囲に対応する記憶エリアが解放される。次に、N番目のアクセス要求が発生する。N番目のアクセス要求は、すでに解放された記憶エリア内に存在していたデータ部を要求するオフセット値を含むかもしれない。
【0066】
本実施形態では、次に要求される可能性が高いオフセット位置のデータ部がバッファリングされていたにもかかわらず、そのデータ部が無効化されてしまうという事態の発生を防止するために、図13に示すようなバッファ解放制御動作が実行される。
【0067】
すなわち、本実施形態のバッファ解放制御動作では、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値が、バッファ解放制御動作のための基準値として用いられる。
【0068】
再生制御部306は、ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最小値とバッファ401内のデータの末端を示すオフセット値との間の差分が第1の閾値未満の場合、バッファ401内のフリー記憶エリアのサイズを増やすために、バッファ401内のデータの先頭から上述の最小値までのデータ範囲を無効化し、そのデータ範囲に対応するバッファ401内の記憶エリアを解放する。
【0069】
たとえば、マルチメディアコンテンツデータのオフセット値1000バイトからオフセット値2000バイトまでのデータ部がバッファ401に格納されている場合を想定する。第1の閾値は800バイトであるとする。ビデオ最終アクセスオフセット値は1500バイトであり、オーディオ最終アクセスオフセット値は1250バイトである。この場合、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値は、オーディオ最終アクセスオフセット値である1250バイトとなる。そして、データ部の先頭1000バイトからオーディオ最終アクセスオフセット1250バイトまでのデータ範囲が無効化され、そのデータ範囲に対応するバッファ401内の記憶エリアが解放される。バッファ401に残るのは、オフセット値1250バイトからオフセット値2000バイトまでのデータである。
【0070】
なお、ここでは、オーディオ最終アクセスオフセット値がビデオ最終アクセスオフセット値よりも小さい場合を例示したが、オーディオ最終アクセスオフセット値がビデオ最終アクセスオフセット値よりも大きい場合には、ビデオ最終アクセスオフセット値が、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値として用いられる。
【0071】
次に、図14から図16を参照して、バッファリング済みデータ量の減少時に実行される再生停止動作について説明する。
【0072】
図14は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとを区別しない場合の再生停止動作の制御を示している。最終アクセスオフセット値からバッファ401内のデータの末端を示すオフセット値までのデータ量が第2の閾値よりも少ない場合、換言すれば、最終アクセスオフセット値とバッファ401内のデータの末端を示すオフセット値との間の差分が第2の閾値未満の場合、バッファ401内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生が停止される。
【0073】
たとえば、マルチメディアコンテンツデータのオフセット値1000バイトからオフセット値2000バイトまでのデータ部がバッファ401に格納されている場合を想定する。第2の閾値は150バイトであるとする。最終アクセスオフセット値がたとえば1900バイトになると、最終アクセスオフセット値1900バイトとバッファ401内のデータの末端のオフセット値2000バイトとの間の差分が第2の閾値未満になる。この場合、バッファ401内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生が停止される。
【0074】
しかし、もしこのような再生停止制御をストリーミング向けでないマルチメディアコンテンツデータに適用した場合には、シークバー401上においては十分なシーク可能区間39が存在しているのにもかかわらず再生動作が突然停止されてしまう可能性がある。図15にはこの様子が示されている。図15においては、N−1番目のアクセス時点のシークバー33が示されている。この時点では、最終アクセスオフセット(N−1番目のアクセス要求で指定されたオフセット)よりも時間的に後方に位置する一定量のデータがシーク可能区間39としてバッファ401に格納されている。しかし、ストリーミング向けでないマルチメディアコンテンツデータにおいては、時間的に近接するオーディオデータ部とビデオデータ部とが非連続であるため、N番目のアクセス要求によって指定されるオフセット値が、N−1番目のアクセス要求で指定されたオフセットよりも時間的に後方の比較的離れた位置を指定するかもしれない。この場合、シークバー401上においては十分なシーク可能区間39が存在しているのにもかかわらず再生動作が突然停止されてしまうという現象が発生する。
【0075】
本実施形態では、図16に示すように、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値とバッファ401内のデータの末端を示すオフセット値との間の差分に基づいてシークバー33上にバッファリング済みのデータ区間(シーク可能区間39)が表示され、さらに、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値を基準に再生停止制御が実行される。
【0076】
すなわち、再生制御部306は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最大値とバッファ401内のデータの末端を示すオフセット値との間の差分が第2の閾値未満の場合、バッファ401内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生を停止する。
【0077】
図16においては、ビデオ最終アクセスオフセット値よりもオーディオ最終アクセスオフセット値の方が大きい場合が想定されている。この場合、バッファ401内のデータの末端を示すオフセット値との間の差分に基づいてシークバー33上にバッファリング済みのデータ区間(シーク可能区間39)が表示される。図16のシークバー33の表示は、N−1番目のアクセス時点に対応している。
【0078】
このような再生停止制御により、シークバー401上においては十分なシーク可能区間39が存在しているのにもかかわらず再生動作が突然停止されてしまうという現象が発生を防止することができる。
【0079】
次に、図17のフローチャートを参照して、プレーヤアプリケーションプログラム202によって実行される再生制御処理の手順を説明する。
【0080】
プレーヤアプリケーションプログラム202においては、再生対象のマルチメディアコンテンツデータのインデックス情報に基づき、再生制御部306は、マルチメディアコンテンツデータ内のデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納するためのバッファリング処理を開始する。一定量のデータがバッファ401に格納されると、再生制御部306からデマルチプレクサ302に再生要求が発行され(ステップS11)、これによってマルチメディアコンテンツデータをストリーミングによって再生するための再生処理が開始される(ステップS12)。なお、最初に、再生制御部306からデマルチプレクサ302に再生要求を発行し、その後、バッファリング処理を開始してもよい。
【0081】
再生処理では、デマルチプレクサ302は、マルチメディアコンテンツデータのインデックス情報に基づき、次に再生すべきデータ(ビデオまたはオーディオ)をデータソース301に要求する(ステップS13)。データソース301においては、アクセス要求されたメディア種別(ビデオまたはオーディオ)を示す情報がメディア識別子設定部403に設定される(ステップS14)。さらに、データソース301においては、アクセス要求されたメディア種別に応じて、ビデオ最終アクセスオフセットまたはオーディオ最終アクセスオフセットが更新される(ステップS15)。そして、再生制御部306の制御の下、これらビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットを用いたバッファ管理動作が実行される(ステップS16,S17)。ステップS16では、上述のバッファ解放制御動作(バッファ解放処理)が実行される。またステップS17では、再生を一時的に停止することによって一定量のデータをバッファ401に格納するための上述の再生停止動作(再バッファリング処理)が実行される。バッファ解放制御動作および再生停止動作それぞれの手順の詳細は図19および図20を参照して後述する。
【0082】
次に再生すべきデータ(ビデオまたはオーディオ)がデータソース301からデマルチプレクサ302に送られると(ステップS18)、そのデータがビデオデコーダ303またはオーディオデコーダ304によってデコードされることによって再生される(ステップS19)。
【0083】
マルチメディアコンテンツデータの再生が完了するまで、ステップS12からステップS19までの再生処理が繰り返し実行される。たとえば、再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると、再生処理が完了される(ステップS21)。
【0084】
次に、図18のフローチャートを参照して、プレーヤアプリケーションプログラム202によって実行されるシーク制御動作について説明する。
【0085】
ユーザによるスライダ35の移動操作によって、再生位置が、バッファ401にまだ格納されていない、マルチメディアコンテンツデータ内のデータ位置(第1のデータ位置)に変更された場合、以下のシーク制御動作が実行される。
【0086】
すなわち、再生制御部306は、デマルチプレクサ302に再生動作を停止させると共に、再生位置を第1のデータ位置に変更すべきことをデマルチプレクサ302に要求する(ステップS31)。そして、再生制御部306の制御の下、シーク処理が開始される(ステップS32)。シーク処理では、デマルチプレクサ302は、マルチメディアコンテンツデータのインデックス情報に基づき、次に再生すべきデータ(ビデオまたはオーディオ)をデータソース301に要求する(ステップS33)。シーク処理開始直後においては、ステップS33において、デマルチプレクサ302は、マルチメディアコンテンツデータのインデックス情報に基づき、第1のデータ位置に対応するビデオデータ部のオフセット値を算出し、そのオフセット値を含むアクセス要求をデータソース301に送出する。データソース301においては、アクセス要求されたメディア種別(ビデオまたはオーディオ)を示す情報がメディア識別子設定部403に設定される(ステップS34)。さらに、データソース301においては、アクセス要求されたメディア種別に応じて、ビデオ最終アクセスオフセットまたはオーディオ最終アクセスオフセットが更新される(ステップS35)。そして、再生制御部306の制御の下、以下のバッファリング制御動作が実行される。
【0087】
再生制御部306は、アクセス要求されたデータがバッファ401に格納されていない場合(ステップS36のNO)、そのアクセス要求されたメディア種別がビデオまたはオーディオのいずれであるかを判定する(ステップS41)。アクセス要求されたメディア種別がビデオであれば(ステップS41のYES)、再生制御部306は、バッファ401の全記憶エリアを解放し、そして、アクセス要求によって指定されたオフセット値に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納する第1のバッファリング処理を開始する(ステップS42)。第1のバッファリング処理では、再生制御部306は、アクセス要求によって指定されたオフセット値に後続するデータ部それぞれをコンテンツサーバ21から取得する処理を繰り返し実行する。
【0088】
第1のバッファリング処理によってある一定量のデータがバッファリングされると、再生制御部306は、再生動作を再開させる。次に再生すべきデータ(ビデオまたはオーディオ)がデータソース301からデマルチプレクサ302に送られると(ステップS37)、そのデータがビデオデコーダ303またはオーディオデコーダ304によってデコードされることによって再生される(ステップS38)。マルチメディアコンテンツデータの再生が完了するまで、ステップS32からS38までの処理が繰り返し実行される。再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると、再生処理(シーク)が完了される(ステップS40)。
【0089】
アクセス要求されたデータがバッファ401に格納されておらず(ステップS36のNO)、且つそのアクセス要求されたデータのメディア種別がオーディオデータであるならば(ステップS41のNO)、再生制御部306は、そのアクセス要求されたデータ(オーディオデータ)のバッファリングおよび再生をスキップし(ステップS43)、ステップS33に進む。つまり、再生制御部306は、バッファ401に格納されていないオーディオデータがアクセス要求された場合には、そのアクセス要求によって要求されたオーディオデータをコンテンツサーバ21から取得する処理、およびオーディオデータをデマルチプレクサ302に再生させる処理をそれぞれスキップする。したがって、シーク期間中においては、たとえまだバッファリングされていないオーディオデータが要求された場合でも、そのオーディオデータの取得のためにシークの起点が変更されることはない。これによって第1のバッファリング処理は継続して実行される。
【0090】
シーク処理期間中に、バッファリングされていないビデオデータ部が要求された場合は、ステップS42のバッファリング処理が実行される。この場合、要求されたビデオデータ部とそのビデオデータ部に後続するデータ部それぞれを順次受信してバッファ401に格納する処理が実行される。
【0091】
なお、再生位置が第1のデータ位置に変更された時点で、第1のバッファリング処理を開始し、一定量のデータがバッファリングされた後に、ステップS32からのシーク処理を開始するようにしてもよい。
【0092】
次に、図19のフローチャートを参照して、図17のステップS16で実行されるバッファ解放制御動作(バッファ解放処理)の手順を説明する。図19に示されているように、バッファ解放処理では、再生制御部306は、バッファ量管理部402を用いて、以下の条件が成立しているか否かを判定する。
【0093】
閾値>BLOffset − MIN (VFOffset, AFOffset)
ここで、BLOffsetはバッファ401に格納されているデータの末端のオフセット値を示す。VFOffsetはビデオ最終アクセスオフセット値を示す。AFOffsetはオーディオ最終アクセスオフセット値を示す。MIN (VFOffset, AFOffset)は、VFOffsetとAFOffsetの2つの値から最小値を選択する関数を示す。
【0094】
閾値>BLOffset − MIN (VFOffset, AFOffset)の条件が成立した場合(ステップS51のYES)、再生制御部306は、バッファ401内のデータの先頭からMIN (VFOffset, AFOffset)までのデータを無効化してそのデータが格納されているバッファ401内の記憶エリアを解放する(ステップS52)。
【0095】
次に、図20のフローチャートを参照して、図17のステップS17で実行される再生停止動作(再バッファリング処理)の手順を説明する。図20に示されているように、再バッファリング処理では、再生制御部306は、バッファ量管理部402を用いて、以下の条件が成立しているか否かを判定する。
【0096】
閾値>BLOffset − MAX (VFOffset, AFOffset)
ここで、BLOffsetはバッファ401に格納されているデータの末端のオフセット値を示す。VFOffsetはビデオ最終アクセスオフセット値を示す。AFOffsetはオーディオ最終アクセスオフセット値を示す。MAX (VFOffset, AFOffset)は、VFOffsetとAFOffsetの2つの値から最大値を選択する関数を示す。
【0097】
閾値>BLOffset − MAX (VFOffset, AFOffset)の条件が成立した場合(ステップS61のYES)、再生制御部306は、一定量のデータがバッファ401に格納されるまで再生を停止させる(ステップS62)。
【0098】
以上説明したように、本実施形態によれば、再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、第1のデータ位置に後続するデータ部それぞれをコンテンツサーバ21から順次受信してバッファ401に格納するための第1のバッファリング処理が開始される。そして、所定量のデータがバッファ401に格納された後に、バッファ401に格納されていないオーディオデータ部が要求された場合には、その要求されたオーディオデータ部をコンテンツサーバ21受信してバッファ401に格納するための第2のバッファリング処理の実行がスキップされ、第1のバッファリング処理が継続されると共に、再生部による、要求されたオーディオデータ部の再生がスキップされる。したがって、ストリーミング向けでないマルチメディアコンテンツデータの再生中に再生位置がバッファ401にまだ格納されていない、マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合には、最初の一定期間の間は、ビデオの再生のみが行われ、オーディオは再生されない。一定期間経過後は、ビデオとオーディオの双方が再生される。このように一部のオーディオデータ部に対するバッファリングおよび再生を省略することにより、たとえ再生対象のマルチメディアコンテンツデータが、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続であるコンテンツデータであっても、そのコンテンツデータを、スムーズに再生することができる。
【0099】
なお、本実施形態の再生制御処理の手順は全てソフトウェアによって実行することができる。このため、この再生制御処理手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【0100】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0101】
10…コンピュータ、21…コンテンツサーバ、33…シークバー、202…プレーヤアプリケーションプログラム、301…データソース、302…デマルチプレクサ、303…ビデオデコーダ、304…オーディオデコーダ、305…レンダラ、306…再生制御部、401…バッファ、402…バッファ量管理部。
【特許請求の範囲】
【請求項1】
ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する電子機器であって、
前記受信されたマルチメディアコンテンツデータを格納するバッファと、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する再生手段と、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生手段に前記再生を停止させると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始する制御手段とを具備し、
前記制御手段は、前記第1のバッファリング処理が開始された後に前記再生手段に前記第1のデータ位置から前記再生を再開させ、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部が前記再生手段によって要求された場合、前記第1のバッファリング処理の実行を継続し、前記再生手段は、前記要求されたオーディオデータ部を再生しない、電子機器。
【請求項2】
前記制御手段は、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内の前記オーディオデータ部が前記再生手段によって要求された場合、前記要求されたオーディオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための第2のバッファリング処理を実行せずに、前記第1のバッファリング処理の実行を継続する請求項1記載の電子機器。
【請求項3】
前記制御手段は、さらに、前記マルチメディアコンテンツデータの再生中に前記再生手段から受信されるビデオアクセス要求およびオーディオアクセス要求によってそれぞれ指定される前記マルチメディアコンテンツデータ内のオフセット値を、ビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットとして保存し、前記ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最小値と前記バッファ内のデータの末端を示すオフセット値との間の差分が第1の閾値よりも小さい場合、前記バッファ内のデータの先頭から前記最小値までのデータ範囲に対応する前記バッファ内の記憶エリアを解放するように構成されている請求項1記載の電子機器。
【請求項4】
前記制御手段は、さらに、前記マルチメディアコンテンツデータの再生中に前記再生手段から受信されるビデオアクセス要求およびオーディオアクセス要求によってそれぞれ指定される前記マルチメディアコンテンツデータ内のオフセット値を、ビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットとして保存し、前記ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最大値と前記バッファ内のデータの末端を示すオフセット値との間の差分に基づいてシークバー上にバッファリング済みのデータ区間を表示し、前記最大値と前記バッファ内のデータの末端を示すオフセット値との間の差分が第2の閾値よりも小さい場合、前記再生手段に前記マルチメディアコンテンツデータの再生を停止させるように構成されている請求項1記載の電子機器。
【請求項5】
ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する再生制御方法であって、
前記受信されたマルチメディアコンテンツデータをバッファに格納し、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生し、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生を停止すると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始し、
前記第1のバッファリング処理が開始された後に前記第1のデータ位置から前記再生を再開し、
前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部の再生が要求された場合、前記第1のバッファリング処理を継続すると共に前記要求されたオーディオデータ部を再生しない、再生制御方法。
【請求項6】
コンピュータに、ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生させるプログラムであって、
前記受信されたマルチメディアコンテンツデータをバッファに格納する手順と、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する手順と、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生を停止すると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始する手順と、
前記第1のバッファリング処理が開始された後に前記第1のデータ位置から前記再生を再開する手順と、
前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部の再生が要求された場合、前記第1のバッファリング処理を継続すると共に前記要求されたオーディオデータ部を再生しない手順とを前記コンピュータに実行させるプログラム。
【請求項1】
ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する電子機器であって、
前記受信されたマルチメディアコンテンツデータを格納するバッファと、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する再生手段と、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生手段に前記再生を停止させると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始する制御手段とを具備し、
前記制御手段は、前記第1のバッファリング処理が開始された後に前記再生手段に前記第1のデータ位置から前記再生を再開させ、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部が前記再生手段によって要求された場合、前記第1のバッファリング処理の実行を継続し、前記再生手段は、前記要求されたオーディオデータ部を再生しない、電子機器。
【請求項2】
前記制御手段は、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内の前記オーディオデータ部が前記再生手段によって要求された場合、前記要求されたオーディオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための第2のバッファリング処理を実行せずに、前記第1のバッファリング処理の実行を継続する請求項1記載の電子機器。
【請求項3】
前記制御手段は、さらに、前記マルチメディアコンテンツデータの再生中に前記再生手段から受信されるビデオアクセス要求およびオーディオアクセス要求によってそれぞれ指定される前記マルチメディアコンテンツデータ内のオフセット値を、ビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットとして保存し、前記ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最小値と前記バッファ内のデータの末端を示すオフセット値との間の差分が第1の閾値よりも小さい場合、前記バッファ内のデータの先頭から前記最小値までのデータ範囲に対応する前記バッファ内の記憶エリアを解放するように構成されている請求項1記載の電子機器。
【請求項4】
前記制御手段は、さらに、前記マルチメディアコンテンツデータの再生中に前記再生手段から受信されるビデオアクセス要求およびオーディオアクセス要求によってそれぞれ指定される前記マルチメディアコンテンツデータ内のオフセット値を、ビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットとして保存し、前記ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最大値と前記バッファ内のデータの末端を示すオフセット値との間の差分に基づいてシークバー上にバッファリング済みのデータ区間を表示し、前記最大値と前記バッファ内のデータの末端を示すオフセット値との間の差分が第2の閾値よりも小さい場合、前記再生手段に前記マルチメディアコンテンツデータの再生を停止させるように構成されている請求項1記載の電子機器。
【請求項5】
ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する再生制御方法であって、
前記受信されたマルチメディアコンテンツデータをバッファに格納し、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生し、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生を停止すると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始し、
前記第1のバッファリング処理が開始された後に前記第1のデータ位置から前記再生を再開し、
前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部の再生が要求された場合、前記第1のバッファリング処理を継続すると共に前記要求されたオーディオデータ部を再生しない、再生制御方法。
【請求項6】
コンピュータに、ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生させるプログラムであって、
前記受信されたマルチメディアコンテンツデータをバッファに格納する手順と、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する手順と、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第1のデータ位置に変更された場合、前記再生を停止すると共に、前記マルチメディアコンテンツデータ内の前記第1のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第1のバッファリング処理を開始する手順と、
前記第1のバッファリング処理が開始された後に前記第1のデータ位置から前記再生を再開する手順と、
前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部の再生が要求された場合、前記第1のバッファリング処理を継続すると共に前記要求されたオーディオデータ部を再生しない手順とを前記コンピュータに実行させるプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2013−27051(P2013−27051A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2012−194018(P2012−194018)
【出願日】平成24年9月4日(2012.9.4)
【分割の表示】特願2011−160807(P2011−160807)の分割
【原出願日】平成23年7月22日(2011.7.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.EEPROM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願日】平成24年9月4日(2012.9.4)
【分割の表示】特願2011−160807(P2011−160807)の分割
【原出願日】平成23年7月22日(2011.7.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.EEPROM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]