(57)【特許請求の範囲】
【請求項１】
ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する電子機器であって、
前記受信されたマルチメディアコンテンツデータを格納するバッファと、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する再生手段と、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、前記再生手段に前記再生を停止させると共に、前記マルチメディアコンテンツデータ内の前記第１のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第１のバッファリング処理を開始する制御手段とを具備し、
前記制御手段は、
前記第１のバッファリング処理が開始された後に前記再生手段に前記第１のデータ位置から前記再生を再開させ、
前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のビデオデータ部が前記再生手段によって要求された場合、前記第１のバッファリング処理を停止して前記要求されたビデオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための新たなバッファリング処理を開始し、
前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部が前記再生手段によって要求された場合、前記第１のバッファリング処理の実行を継続し且つ前記再生手段に前記要求されたオーディオデータ部の再生をスキップさせる、電子機器。
【請求項２】
前記制御手段は、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内の前記オーディオデータ部が前記再生手段によって要求された場合、前記要求されたオーディオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための新たなバッファリング処理を実行せずに、前記第１のバッファリング処理の実行を継続する請求項１記載の電子機器。
【請求項３】
前記制御手段は、さらに、前記マルチメディアコンテンツデータの再生中に前記再生手段から受信されるビデオアクセス要求およびオーディオアクセス要求によってそれぞれ指定される前記マルチメディアコンテンツデータ内のオフセット値を、ビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットとして保存し、前記ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最小値と前記バッファ内のデータの末端を示すオフセット値との間の差分が第１の閾値よりも小さい場合、前記バッファ内のデータの先頭から前記最小値までのデータ範囲に対応する前記バッファ内の記憶エリアを解放するように構成されている請求項１記載の電子機器。
【請求項４】
前記制御手段は、さらに、前記マルチメディアコンテンツデータの再生中に前記再生手段から受信されるビデオアクセス要求およびオーディオアクセス要求によってそれぞれ指定される前記マルチメディアコンテンツデータ内のオフセット値を、ビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットとして保存し、前記ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最大値と前記バッファ内のデータの末端を示すオフセット値との間の差分に基づいてシークバー上にバッファリング済みのデータ区間を表示し、前記最大値と前記バッファ内のデータの末端を示すオフセット値との間の差分が第２の閾値よりも小さい場合、前記再生手段に前記マルチメディアコンテンツデータの再生を停止させるように構成されている請求項１記載の電子機器。
【請求項５】
ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する再生制御方法であって、
前記受信されたマルチメディアコンテンツデータをバッファに格納し、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生し、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、前記再生を停止すると共に、前記マルチメディアコンテンツデータ内の前記第１のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第１のバッファリング処理を開始し、
前記第１のバッファリング処理が開始された後に前記第１のデータ位置から前記再生を再開し、
前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のビデオデータ部が要求された場合、前記第１のバッファリング処理を停止して前記要求されたビデオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための新たなバッファリング処理を開始し、
前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部の再生が要求された場合、前記第１のバッファリング処理を継続し且つ前記要求されたオーディオデータ部の再生をスキップする、再生制御方法。
【請求項６】
コンピュータに、ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生させるプログラムであって、
前記受信されたマルチメディアコンテンツデータをバッファに格納する手順と、
前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する手順と、
再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、前記再生を停止すると共に、前記マルチメディアコンテンツデータ内の前記第１のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第１のバッファリング処理を開始する手順と、
前記第１のバッファリング処理が開始された後に前記第１のデータ位置から前記再生を再開する手順と、
前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のビデオデータ部が要求された場合、前記第１のバッファリング処理を停止して前記要求されたビデオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための新たなバッファリング処理を開始する手順と、
前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部の再生が要求された場合、前記第１のバッファリング処理を継続し且つ前記要求されたオーディオデータ部の再生をスキップする手順とを前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンテンツデータを再生可能な電子機器および再生制御方法に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータ、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、インターネットを介してマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生するストリーミング再生機能を有している。
【０００３】
マルチメディアコンテンツデータのストリーミング再生においては、コンテンツサーバから受信されるマルチメディアコンテンツデータの一部分は電子機器内のストリームバッファに格納される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２２４７４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
電子機器上で実行されるプレーヤソフトウェアは、シークバー（またはプログレッシブバー）と称されるユーザインタフェースを表示する。ユーザは、シークバーを操作することによって、マルチメディアコンテンツデータ内の再生位置を変更することができる。
【０００６】
バッファに格納されていないデータ位置が再生位置として指定された場合、プレーヤソフトウェアは、コンテンツサーバから該当するデータ部分の取得を開始し、そのデータ部分をバッファに格納する（シーク）。このバッファリングには一定の時間を要する。したがって、新たなデータ部分が要求されてからそのデータ部分がバッファに格納されるまでのタイムラグにより、指定されたデータ位置からの再生が開始されるまでには、ある待ち時間が必要となる。
【０００７】
一般に、ストリーミング向けファイル形式のマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが連続して配置されている。
【０００８】
しかし、ストリーミング向けでないファイル形式のマルチメディアコンテンツデータも存在する。このようなマルチメディアコンテンツデータにおいては、連続して再生されるべき互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続に配置されている可能性がある。このようなマルチメディアコンテンツデータに対するシークにおいては、非連続の個々のデータ部分をコンテンツサーバから受信するための処理によってシークのレスポンスが低下する可能性、つまりそれらデータ部分のバッファリングのためのタイムラグが大きくなる可能性がある。したがって、たとえ指定されたデータ位置からのマルチメディアコンテンツデータの再生が一旦再開されても、その再生がすぐに再び停止されてしまうかもしれない。なぜなら、指定されたデータ位置のデータ部分に続いて再生すべき別のデータ部分をバッファリングのための待ち時間が発生する可能性があるためである。
【０００９】
本発明は、マルチメディアコンテンツデータをスムーズに再生することができる電子機器及びコンテンツ再生制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施形態によれば、電子機器は、ビデオデータとオーディオデータとが多重化されたマルチメディアコンテンツデータをサーバから受信しながら再生する。この電子機器は、バッファと、再生手段と、制御手段とを具備する。前記バッファは、前記受信されたマルチメディアコンテンツデータを格納する。前記再生手段は、前記バッファに格納されている前記マルチメディアコンテンツデータ内のビデオデータ部およびオーディオデータ部を再生する。前記制御手段は、再生位置が前記バッファにまだ格納されていない、前記マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、前記再生手段に前記再生を停止させると共に、前記マルチメディアコンテンツデータ内の前記第１のデータ位置に後続するデータ部それぞれを前記サーバから順次受信して前記バッファに格納するための第１のバッファリング処理を開始する。前記制御手段は、前記第１のバッファリング処理が開始された後に前記再生手段に前記第１のデータ位置から前記再生を再開させ、前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のビデオデータ部が前記再生手段によって要求された場合、前記第１のバッファリング処理を停止して前記要求されたビデオデータ部に後続するデータ部それぞれを前記サーバから受信して前記バッファに格納するための新たなバッファリング処理を開始する。前記制御手段は、前記再生の再開後に、前記バッファに格納されていない、前記マルチメディアコンテンツデータ内のオーディオデータ部が前記再生手段によって要求された場合、前記第１のバッファリング処理の実行を継続し且つ前記再生手段に前記要求されたオーディオデータ部の再生をスキップさせる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る電子機器の外観を示す斜視図。
【図２】同実施形態の電子機器によって実行されるプレーヤソフトウェアによって表示されるコンテンツ再生画面の例を示す図。
【図３】同実施形態の電子機器のシステム構成を示すブロック図。
【図４】同実施形態の電子機器によって実行されるプレーヤソフトウェアの構成を示すブロック図。
【図５】図４のプレーヤソフトウェアによって実行されるバッファ管理動作を説明するための図。
【図６】図４のプレーヤソフトウェアによって実行されるシーク制御動作を説明するための図。
【図７】ストリーミング向けのマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の配置例を示す図。
【図８】ストリーミング向けではないマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の配置例を示す図。
【図９】ストリーミング向けではないマルチメディアコンテンツデータ内におけるオーディオデータ部とビデオデータ部の他の配置例を示す図。
【図１０】シークのレスポンスが低下される現象を説明するための図。
【図１１】バッファ解放制御動作の例を説明するための図。
【図１２】図１１のバッファ解放制御動作を用いた場合に発生する可能性がある、解放済みのバッファエリア内に存在していたデータに対する要求を説明するための図。
【図１３】図４のプレーヤソフトウェアによって実行されるバッファ解放制御動作を説明するための図。
【図１４】バッファリング済みデータ量の減少時に実行される再生停止動作を説明するため図。
【図１５】再生が突然停止される様子を説明するための図。
【図１６】図４のプレーヤソフトウェアによって実行される再生停止動作を説明するための図。
【図１７】図４のプレーヤソフトウェアによって実行される再生制御動作の手順を示すフローチャート。
【図１８】図４のプレーヤソフトウェアによって実行されるシーク制御動作の手順を説明するフローチャート。
【図１９】図４のプレーヤソフトウェアによって実行されるバッファ解放動作の手順を説明するフローチャート。
【図２０】バッファリング済みデータ量の減少時に図４のプレーヤソフトウェアによって実行される手順を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、実施の形態について図面を参照して説明する。  
図１は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、スレート型パーソナルコンピュータ（ＰＣ）、ラップトップ型ＰＣ、スマートフォン、またはＰＤＡ等として実現され得る。以下では、この電子機器がスレート型パーソナルコンピュータ１０として実現されている場合を想定する。スレート型パーソナルコンピュータ１０は、図１に示すように、コンピュータ本体１１とタッチスクリーンディスプレイ１７とから構成される。
【００１３】
コンピュータ本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７は、液晶表示装置（ＬＣＤ）及びタッチパネルが組み込まれている。タッチパネルは、ＬＣＤの画面を覆うように設けられる。タッチスクリーンディスプレイ１７は、コンピュータ本体１１の上面に重ね合わせるように取り付けられている。
【００１４】
コンピュータ１０はマルチメディアコンテンツデータをストリーミングによって再生するコンテンツ再生機能を有している。このコンテンツ再生機能はコンピュータ１０にインストールされたプレーヤソフトウェアによって実行される。プレーヤソフトウェアによるコンテンツ再生動作は、オペレーティングシステムによって提供されるマルチメディアフレームワークを利用して実行するようにしてもよい。コンピュータ１０は有線または無線ネットワークとの通信を実行する通信デバイスを内蔵しており、コンピュータ１０とインターネット２０との間の通信はこの通信デバイスを介して実行される。
【００１５】
マルチメディアコンテンツデータは、ビデオデータとオーディオデータとが多重化されたデータストリームである。ビデオデータは圧縮符号化されていてもよく、またオーディオデータも圧縮符号化されていてもよい。
【００１６】
プレーヤソフトウェアはインターネット２０のようなネットワークを介してコンテンツサーバ２１からマルチメディアコンテンツデータを受信する。プレーヤソフトウェアはマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生する。コンピュータ１０においては、マルチメディアコンテンツデータ内の受信されたデータ部はバッファに格納される。バッファはコンピュータ１０内のメモリの一部である。バッファに一定量のデータが蓄積された後に、プレーヤソフトウェアはマルチメディアコンテンツデータの再生を開始する。
【００１７】
マルチメディアコンテンツデータの再生処理においては、バッファに格納されたビデオデータ部およびオーディオデータ部の各々が再生される。マルチメディアコンテンツデータの再生処理の間、プレーヤソフトウェアは、先読み処理を実行してもよい。先読み処理は、現在再生位置よりも時間的に後のデータ部それぞれをコンテンツサーバ２１から順次受信してバッファに格納するバッファリング処理である。
【００１８】
図２は、プレーヤソフトウェアによってディスプレイ１７に表示されるコンテンツ再生画面の例である。コンテンツ再生画面はビデオ表示エリア３１およびシークバー３３を表示する。ビデオ表示エリア３１は、マルチメディアコンテンツデータ内のビデオデータの画像（動画像）を表示するための表示領域である。シークバー３３はマルチメディアコンテンツデータの再生位置をユーザに制御させるためのグラフィカルユーザインタフェースである。
【００１９】
シークバー３３の左端および右端は再生対象のマルチメディアコンテンツデータの先頭位置および終端位置にそれぞれ対応する。マルチメディアコンテンツデータの再生期間中においては、マルチメディアコンテンツデータの再生位置は時間の経過に伴って自動的に更新される。再生位置のようなマルチメディアコンテンツデータ内のデータ位置を示す値としては、マルチメディアコンテンツデータの先頭位置を起点としたオフセット値を用いてもよい。あるデータ位置に対応するオフセット値は、マルチメディアコンテンツデータの先頭位置からそのデータ位置までのデータサイズを示す。
【００２０】
シークバー３３はスライダ３５を表示する。スライダ３５はマルチメディアコンテンツデータ内の現在再生位置を示す。つまり、スライダ３５はマルチメディアコンテンツデータの再生の進行状況を示す。ユーザは、ポインティングデバイスを用いてスライダ３５を移動させることにより、マルチメディアコンテンツデータ内の再生位置を変更することができる。
【００２１】
シークバー３３は、さらに、再生済み区間３７およびシーク可能区間３９をシークバー３３上に表示する。再生済み区間３７は、マルチメディアコンテンツデータのシーケンスの内、再生済みで且つバッファにデータ部が残っているデータ区間を示す。シーク可能区間３９は、マルチメディアコンテンツデータのシーケンスの内、未再生で且つバッファにデータ部がすでに格納されているデータ区間を示す。シーク可能区間３９ができるだけ一定時間以上となるように、上述の先読み処理（バッファリング処理）が実行されるようにしてもよい。
【００２２】
スライダ３５がシーク可能区間３９内の任意の位置に移動された時、再生位置は、スライダ３５によって示される、シーク可能区間３９内の位置に即座に変更される。スライダ３５がシーク可能区間３９外のエリアに移動された時、つまり、再生位置がバッファにまだ格納されていない、マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、プレーヤソフトウェアは、バッファリング処理を開始する。このバッファリング処理においては、プレーヤソフトウェアは、マルチメディアコンテンツデータ内の上述の第１のデータ位置（シーク開始位置）に後続するデータ部それぞれをコンテンツサーバから順次受信してバッファに格納する。バッファリング処理によって所定量のデータがバッファに格納されるまで、マルチメディアコンテンツデータの再生は停止される。バッファリング処理によって所定量のデータがバッファに格納された後、マルチメディアコンテンツデータの再生が第１のデータ位置から再開される。
【００２３】
図３は、本コンピュータ１０のシステム構成を示す図である。  
本コンピュータ１０は、図３に示されるように、ＣＰＵ１０１、ノースブリッジ１０２、主メモリ１０３、サウスブリッジ１０４、グラフィクスコントローラ１０５、サウンドコントローラ１０６、ＢＩＯＳ−ＲＯＭ１０７、ＬＡＮコントローラ１０８、ソリッドステートドライブ（ＳＳＤ）１０９、無線ＬＡＮコントローラ１１２、エンベデッドコントローラ（ＥＣ）１１３、ＥＥＰＲＯＭ１１４、ＨＤＭＩ制御回路３等を備える。
【００２４】
ＣＰＵ１０１は、コンピュータ１０内の各部の動作を制御するプロセッサである。ＣＰＵ１０１は、ＳＳＤ１０９から主メモリ１０３にロードされる、オペレーティングシステム（ＯＳ）２０１、および各種アプリケーションプログラムを実行する。アプリケーションプログラムには、プレーヤアプリケーションプログラム２０２が含まれている。このプレーヤアプリケーションプログラム２０２は上述のプレーヤソフトウェアであり、オペレーティングシステム（ＯＳ）２０１上で実行される。
【００２５】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０７に格納されたＢＩＯＳも実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００２６】
ノースブリッジ１０２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１０４との間を接続するブリッジデバイスである。ノースブリッジ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０５との通信を実行する機能も有している。
【００２７】
グラフィクスコントローラ１０５は、本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０５によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて映像を表示する。このＬＣＤ１７Ａ上にはタッチパネル１７Ｂが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うためのポインティングデバイスである。ユーザは、タッチパネル１７Ｂを用いて、ＬＣＤ１７Ａの画面に表示されたグラフィカルユーザインタフェース（ＧＵＩ）等を操作することができる。例えば、ユーザは、画面に表示されたボタンをタッチすることによって、当該ボタンに対応する機能の実行を指示することができる。
【００２８】
ＨＤＭＩ端子２は、外部ディスプレイ接続端子である。ＨＤＭＩ端子２は、非圧縮のデジタル映像信号とデジタルオーディオ信号とを１本のケーブルで外部ディスプレイ装置１に送出することができる。ＨＤＭＩ制御回路３は、ＨＤＭＩモニタと称される外部ディスプレイ装置１にデジタル映像信号をＨＤＭＩ端子２を介して送出するためのインタフェースである。つまり、コンピュータ１０は、ＨＤＭＩ端子２等を介して、外部ディスプレイ装置１に接続可能である。
【００２９】
サウスブリッジ１０４は、ＰＣＩ（Peripheral Component Interconnect）バス上の各デバイス及びＬＰＣ（Low Pin Count）バス上の各デバイスを制御する。また、サウスブリッジ１０４は、ＳＳＤ１０９を制御するためのＡＴＡコントローラを内蔵している。
【００３０】
サウスブリッジ１０４は、各種ＵＳＢデバイスを制御するためのＵＳＢコントローラを内蔵している。さらに、サウスブリッジ１０４は、サウンドコントローラ１０６との通信を実行する機能も有している。サウンドコントローラ１０６は音源デバイスであり、再生対象のオーディオデータをスピーカ１８Ａ，１８Ｂに出力する。ＬＡＮコントローラ１０８は、例えばＩＥＥＥ  ８０２．３規格の有線通信を実行する有線通信デバイスである。無線ＬＡＮコントローラ１１２は、例えばＩＥＥＥ  ８０２．１１規格の無線通信を実行する無線通信デバイスである。
【００３１】
ＥＣ１１３は、電力管理のためのエンベデッドコントローラを含む１チップマイクロコンピュータである。ＥＣ１１３は、ユーザによるパワーボタンの操作に応じて本コンピュータ１０を電源オン／電源オフする機能を有している。
【００３２】
次に、図４を参照して、プレーヤアプリケーションプログラム２０２の機能構成を説明する。  
プレーヤアプリケーションプログラム２０２は、データソース３０１、デマルチプレクサ３０２、ビデオデコーダ３０３、オーディオデコーダ３０４、レンダラ３０５、および再生制御部３０６を備える。データソース３０１は、再生制御部３０６の制御の下、コンテンツサーバ２１からマルチメディアコンテンツデータを受信するための処理を順次実行し、受信されたデータ部分それぞれをバッファ４０１に格納する（バッファリング）。コンテンツサーバ２１からマルチメディアコンテンツデータを受信する処理においては、たとえば、ＨＴＴＰストリーミングを使用してもよい。この場合、データソース３０１は、コンテンツサーバ２１にデータ部を要求し、その要求したデータ部をコンテンツサーバ２１から受信する。
【００３３】
デマルチプレクサ３０２、ビデオデコーダ３０３、オーディオデコーダ３０４、およびレンダラ３０５は、バッファ４０１に格納されたデータ部内に含まれるビデオデータ部およびオーディオデータ部をそれぞれ再生する再生部として機能する。
【００３４】
デマルチプレクサ３０２は、データソース３０１内のバッファ４０１からデータを受信し、そのデータをビデオデータ部とオーディオデータ部とに分離する。ビデオデコーダ３０３はビデオデータ部をデコードし、そのデコードされたビデオデータ部をレンダラ３０５に送る。オーディオデコーダ３０４はオーディオデータ部をデコードし、そのデコードされたオーディオデータ部をレンダラ３０５に送る。レンダラ３０５はデコードされたビデオデータ部の動画像をビデオ表示エリア３１上に表示する。さらに、レンダラ３０５はデコードされたオーディオデータ部に対応する音をスピーカ等を介して出力する。
【００３５】
再生制御部３０６は、プレーヤアプリケーションプログラム２０２によるコンテンツデータの再生動作を制御する。より詳しくは、再生制御部３０６は、データソース３０１、デマルチプレクサ３０２、ビデオデコーダ３０３、オーディオデコーダ３０４、およびレンダラ３０５をそれぞれ制御する。
【００３６】
マルチメディアコンテンツデータのバッファリング処理は、デマルチプレクサ３０２からデータソース３０１に送られるアクセス要求に含まれるオフセット値を起点として開始される。ここで、このオフセット値は、マルチメディアコンテンツデータの先頭位置からマルチメディアコンテンツデータの再生対象位置までのデータサイズ（オフセット）を示す。一定量のデータがバッファ４０１に格納されるまで再生の実行は待機される。一定量のデータがバッファ４０１に格納された時点で、マルチメディアコンテンツデータの再生が開始される。再生中においては、デマルチプレクサ３０２はアクセス要求を順次発行する。アクセス要求に含まれるオフセット値のデータ部がバッファ４０１に格納されているならば、そのデータ部が即座にデータソース３０１からデマルチプレクサ３０２に返される。
【００３７】
デマルチプレクサ３０２からのアクセス要求によって指定されるオフセット値は、最終アクセスオフセットとしてデータソース３０１内に記録される。この最終アクセスオフセットは、バッファ量管理部４０２によるバッファ量管理処理に使用される。
【００３８】
本実施形態では、ビデオデータおよびオーディオデータそれぞれに対応する２つのストリームバッファを使用するのではなく、ビデオデータおよびオーディオデータが同じバッファ４０１に格納される。同じバッファ４０１をビデオデータの格納とオーディオデータの格納とに共用する構成は、必要なメモリ量と必要なデータ転送レートを低減することを可能にする。
【００３９】
本実施形態では、データソース３０１は、さらに、メディア識別子設定部４０３を備えている。メディア識別子設定部４０３は、デマルチプレクサ３０２からのアクセス要求がビデオデータに対する要求（ビデオアクセス要求）またはオーディオに対する要求（オーディオアクセ要求）のいずれであるかに応じて、ビデオデータの最終アクセスオフセット（ビデオ最終アクセスオフセット）とオーディオデータの最終アクセスオフセット（オーディオ最終アクセスオフセット）とを個別に管理する。
【００４０】
次に、図５を参照して、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの例を説明する。ビデオ最終アクセスオフセットは、最後のビデオアクセス要求によって指定されたオフセット値である。また、オーディオ最終アクセスオフセットは、最後のオーディオアクセス要求によって指定されたオフセット値である。
【００４１】
ここでは、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが比較的離れて配置されているマルチメディアコンテンツデータをストリーミングを用いて再生する場合を想定する。このようなマルチメディアコンテンツデータとしては、ＡＳＦ（Advanced Systems Format）のようフォーマットのコンテンツデータがある。このＡＳＦに対応するコンテンツデータファイルはコンテンツの再生時間長等の情報を含むヘッダ部とデータ部とインデックス情報とを含む。インデックス情報は、データ部内に存在するビデオデータ部それぞれのオフセット値を示す。デマルチプレクサ３０２は、再生制御部３０６からインデックス情報を受信し、そのインデックス情報に基づいてビデオデータ部およびオーディオデータ部それぞれのオフセット値を算出する。
【００４２】
図５においては、マルチメディアコンテンツデータのシーケンスの内、オフセット値１０００バイトからオフセット値２０００バイトまでのデータ部（データ区間ともいう）がバッファリングされている。ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値からバッファ４０１内のデータ末端までのデータ区間が、上述のシークバー３３上にシーク可能区間３９として、つまりバッファリング済みのデータ区間として、表示される。たとえば、ビデオ最終アクセスオフセットが１５００バイトを示し、オーディオ最終アクセスオフセットが１３００バイトを示しているならば、１５００バイトからバッファ４０１内のデータ末端（２０００バイト）までがシーク可能区間３９として表示される。つまり、本実施形態では、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値とバッファ４０１内のデータ末端のオフセット値との間の差分に基づいて、シークバー３３上にシーク可能区間３９が表示される。
【００４３】
ユーザによってスライダ３５がシーク可能区間３９よりも時間的に後のデータ位置に移動された場合、つまり再生位置がバッファリング済み期間外の位置に変更された場合、再生制御部３０６は、再生を停止すると共に、バッファ４０１を解放し、データソース３０１を用いてバッファリングをやりなおす（バッファリング済み期間外へのシーク）。より詳しくは、再生制御部３０６は、変更後の再生位置に後続するデータ部それぞれをコンテンツサーバ２１から順次受信してバッファ４０１に格納するバッファリング処理を開始する。一定量のデータがバッファ４０１に格納された時点で、再生制御部３０６は、再生を再開させる。デマルチプレクサ３０２は、変更後の再生位置を示すオフセット値（たとえば、２０００バイト目よりも時間的に後のデータ位置）を含むアクセス要求を発行する。このアクセス要求の受信に応答して、データソース３０１は、アクセス要求されたデータ部をバッファ４０１から読み出してデマルチプレクサ３０２に送る。
【００４４】
次に、図６を参照して、本実施形態のシーク制御動作について説明する。
【００４５】
バッファリング済み期間外へのシーク時においては、デマルチプレクサ３０２は、以下のような順序で、ビデオアクセス要求、オーディオアクセス要求をデータソース３０１に送るかもしれない。
【００４６】
（１）ビデオ１の要求
（２）オーディオ２の要求
（３）ビデオ３の要求
（４）オーディオ４の要求
ビデオ１、オーディオ２、ビデオ３、オーディオ４はこの順で再生すべきデータ部である。ストリーミング向けでないマルチメディアコンテンツデータにおいては、ビデオ１、オーディオ２、ビデオ３、オーディオ４それぞれのオフセット値がビデオ１、オーディオ２、ビデオ３、オーディオ４の順に並んでおらず、図６に示すように、たとえば、オーディオ２、ビデオ１、オーディオ４、ビデオ３のように並んでいる場合がある。この場合、上述したように、シークのレスポンスが大幅に低下する可能性がある。以下、具体的に説明する。
【００４７】
バッファリング済み期間外へのシーク時においては、まず、バッファ２０１が解放される。そして、ビデオ１に対応するオフセット値に後続するデータ部それぞれを順次受信してバッファ４０１に格納するためのバッファリング処理が開始される。一定量のデータがバッファ４０１に格納されると、再生が再開される。マルチプレクサ３０２はビデオ１の要求をデータソース３０１に送信する。ビデオ１はバッファ４０１Ｉ格納されているので、ビデオ１はバッファ４０１から読み出され、デマルチプレクサ３０２に送られ、そして、ビデオ１が再生される。この後、デマルチプレクサ３０２はオーディオ２の要求をデータソース３０１に送信する。この時点で、オーディオ２はバッファ４０１に格納されていないので、マルチメディアコンテンツデータの再生は再び停止される。再生制御部３０６は、今度は、オーディオ２に対応するオフセット値に後続するデータ部のバッファリングを開始する。一定量のデータがバッファ４０１に格納されると、再生が再開される。オーディオ２はデマルチプレクサ３０２に送られ、そして、オーディオ２が再生される。この後、デマルチプレクサ３０２はビデオ３の要求をデータソース３０１に送信する。この時点では、ビデオ３はバッファ４０１に格納されていないかもしれない。したがって、マルチメディアコンテンツデータの再生は再び停止される。
【００４８】
本実施形態では、このようなシークのレスポンスの低下に起因して再生動作が頻繁に停止されるという状況の発生を防ぐために、以下のようなシーク制御動作が実行される。
【００４９】
再生位置がバッファ４０１にまだ格納されていない、マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、再生制御部３０６は、再生を一旦停止するとともに、バッファ４０１を解放する。そして、再生制御部３０６は、データソース３０１を用いて第１のバッファリング処理を開始する。この第１のバッファリング処理では、マルチメディアコンテンツデータ内の第１のデータ位置に後続するデータ部それぞれをコンテンツサーバ２１から順次受信してバッファ４０１に格納する処理が実行される。この第１のバッファリング処理によって一定量のデータがバッファ４０１に格納された後、再生制御部３０６は、再生部にマルチメディアコンテンツデータの再生を第１のデータ位置から再開させる。再生が再開された後、つまり第１のバッファリング処理によって一定量のデータがバッファ４０１に格納された後に、バッファ４０１に格納されていない、マルチメディアコンテンツデータ内のオーディオデータ部がデマルチプレクサ３０２によって要求されるかもしれない。この場合、通常は、バッファリング処理の起点が変更されるため、第１のバッファリング処理が停止され、代わりに、要求されたオーディオデータ部をコンテンツサーバ２１から受信してバッファ４０１に格納するための第２のバッファリング処理が開始されるかもしれない。
【００５０】
本実施形態では、再生制御部３０６は、要求されたオーディオデータ部をコンテンツサーバ２１から受信してバッファ４０１に格納するための第２のバッファリング処理の実行をスキップして、上述の第１のバッファリング処理を継続すると共に、再生部に、要求されたオーディオデータ部の再生をスキップさせる。つまり、バッファ４０１に格納されていないオーディオデータに対するアクセス要求は無視される。
【００５１】
いま、再生位置が、バッファリング済み区間外に位置するビデオ１に対応するオフセット値に変更された場合を想定する。第１のバッファリング処理では、ビデオ１に対応するオフセット値に後続するデータ部それぞれ、つまりビデオ１、オーディオ４、ビデオ３…が、順次バッファリングされる。つまり、再生制御部３０６は、オフセット値を増加させながらデータ取得要求をコンテンツサーバ２１に順次送信することにより、ビデオ１、オーディオ４、ビデオ３…を、この順でコンテンツサーバ２１から受信する。第１のバッファリング処理で一定量のデータ、たとえばビデオ１に対応するデータ部とオーディオ４に対応するデータ部の一部、がバッファ４０１に格納されると、マルチメディアコンテンツデータの再生が再開され、ビデオ１がまず再生される。この後、デマルチプレクサ３０２はオーディオ２のデータを要求する。この要求は、バッファ４０１に格納されていないオーディオデータに対するアクセス要求であるので、再生制御部３０６は、このアクセか要求を無視し、オーディオ２をコンテンツサーバ２１から受信してバッファ４０１に格納するバッファリング処理の実行をスキップする。また、再生制御部３０６は、再生部にオーディオ２の再生をスキップさせる。オーディオ２に対するバッファリング処理をスキップすることにより、最初に要求されたビデオ１に後続するデータ部それぞれを順次バッファリングする処理は継続して実行される。
【００５２】
オーディオ４に対する要求が発生する時点では、オーディオ４はすでにバッファリング済みであるかもしれない。この場合、オーディオ４の再生はスキップされず、オーディオ４は通常通り再生される。
【００５３】
したがって、本実施形態では、ストリーミング向けでないマルチメディアコンテンツデータの再生中に再生位置がバッファ４０１にまだ格納されていない、マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合には、最初の一定期間の間は、ビデオの再生のみが行われ、オーディオは再生されない。一定期間経過後は、ビデオとオーディオの双方が再生される。このように一部のオーディオデータ部に対するバッファリングおよび再生を省略することにより、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続であるマルチメディアコンテンツデータを、スムーズに再生することができる。
【００５４】
次に、図７から図９を参照して、マルチメディアコンテンツデータ内のオーディオデータ部とビデオデータ部の配置例について説明する。
【００５５】
図７は、ストリーミング向けのフォーマットを有するマルチメディアコンテンツデータを示している。オーディオデータ部Ａ１，Ａ２，Ａ３，…の各々は、たとえば１秒の再生時間に相当するデータ部である。同様に、ビデオデータ部Ｖ１，Ｖ２，Ｖ３，…の各々も、たとえば１秒の再生時間に相当するデータ部である。同じ添え字番号を有するオーディオデータ部とビデオデータ部は互いに同一の時刻または近い時刻に再生されるべきデータ同士である。図７に示すように、ストリーミング向けのフォーマットを有するマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが連続している。
【００５６】
図８は、ストリーミング向けではないマルチメディアコンテンツデータを示している。図９は、ストリーミング向けではない別のマルチメディアコンテンツデータを示している。
【００５７】
このように、ストリーミング向けではないマルチメディアコンテンツデータにおいては、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続である。
【００５８】
図８または図９のマルチメディアコンテンツデータに対するシーク時には、連続するアクセス要求によって指定されるオフセット値それぞれは単調増加せずに、図１０に示すようにアクセス対象のオフセット値は増加されたり減少されたりすることがある。これにより、上述したように、シークのレスポンスの低下が引き起こされる。
【００５９】
いま、図９のマルチメディアコンテンツデータのオーディオデータ部Ａ１以降のデータ区間がバッファリングされていない状態で、再生位置がビデオデータＶ４に対応する位置に変更された場合を想定する。マルチメディアコンテンツデータの再生は一旦停止される。バッファ２０１は解放され、そしてビデオデータＶ４に後続するデータ部（Ｖ４，Ｖ５，Ｖ６，Ａ４，Ａ５，Ａ６，Ｖ７，Ｖ８…）を順次バッファリングする処理が開始される。たとえば、ビデオデータＶ４，Ｖ５がバッファリングされた時に、マルチメディアコンテンツデータの再生がビデオデータＶ４から再開される。この後、オーディオデータＡ４に対する要求が発生する。オーディオデータＡ４はまだバッファリングされていない。したがって、再生が再び停止される。しかもオーディオデータＡ４のオフセット位置は、現在のバッファ４０１内のデータ末端を示すオフセット値（たとえばビデオデータＶ５に対応するオフセット値）よりも時間的に後方に位置しているので、バッファ２０１が再び解放されるかもしれない。そして、バッファリングの起点が変更され、これによってオーディオデータＡ４に後続するデータ部（Ａ４，Ａ５，Ａ６，Ｖ７，Ｖ８…）を順次バッファリングする処理が開始される。
【００６０】
本実施形態では、図９のマルチメディアコンテンツデータに対しては以下のようなシーク動作が実行される。
【００６１】
オーディオデータ部Ａ１以降のデータ区間がバッファリングされていない状態で、再生位置がビデオデータＶ４に対応するデータ位置に変更された場合を想定する。マルチメディアコンテンツデータの再生は一旦停止される。バッファ２０１は解放され、そしてビデオデータＶ４に後続するデータ部（Ｖ４，Ｖ５，Ｖ６，Ａ４，Ａ５，Ａ６，Ｖ７，Ｖ８…）を順次バッファリングする処理が開始される。たとえば、ビデオデータＶ４，Ｖ５がバッファリングされた時に、マルチメディアコンテンツデータの再生がビデオデータＶ４から再開される。
【００６２】
この後、オーディオデータＡ４に対するアクセス要求が発生する。オーディオデータＡ４はまだバッファリングされていない。したがって、オーディオデータＡ４のバッファリングおよび再生はスキップされる。したがって、バッファリング処理の起点は変更されないので、未バッファリングの残りのデータ部それぞれに対するバッファリング処理が継続される。オーディオデータＡ４の再生がスキップされた後、ビデオデータＶ５に対するアクセス要求が発生する。ビデオデータＶ５はすでにバッファリングされているので、ビデオデータＶ５は即座に再生部に送られる。この後、オーディオデータＡ５に対するアクセス要求が発生する。もしオーディオデータＡ５がすでにバッファリングされているならば、オーディオデータＡ５も即座に再生部に送られる。
【００６３】
次に、図１１から図１３を参照して、バッファ４０１を解放するバッファ解放制御動作について説明する。バッファの解放とは、データが格納されている、バッファ４０１内の記憶エリアを、データが格納されていないフリー状態に設定する処理である。
【００６４】
図１１は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとを区別しない場合のバッファ解放制御動作を示している。最終アクセスオフセット値からバッファ４０１内のデータの末端を示すオフセット値までのデータ量が第１の閾値よりも少ない場合、換言すれば、最終アクセスオフセット値とバッファ４０１内のデータの末端を示すオフセット値との間の差分が第１の閾値未満の場合、バッファ４０１内のフリー記憶エリアのサイズを増やすために、バッファ４０１内のデータの先頭から最終アクセスオフセット値までのデータ範囲が無効化され、そのデータ範囲に対応するバッファ４０１内の記憶エリアが解放される。たとえば、マルチメディアコンテンツデータのオフセット値１０００バイトからオフセット値２０００バイトまでのデータ部がバッファ４０１に格納されている場合を想定する。第１の閾値は６００バイトであるとする。最終アクセスオフセット値が１５００バイトになると、最終アクセスオフセット値１５００バイトとバッファ４０１内のデータの末端のオフセット値２０００バイトとの間の差分が第１の閾値未満になる。この場合、データ部の先頭１０００バイトから最終アクセスオフセット１５００バイトまでのデータ範囲が無効化される。
【００６５】
しかし、もしこのようなバッファ解放制御動作をストリーミング向けでないマルチメディアコンテンツデータに適用した場合には、次に要求される可能性が高いオフセット位置のデータ部がバッファリングされていたにもかかわらず、そのデータ部が無効化されてしまう可能性がある。図１２にはこの様子が示されている。図１２においては、Ｎ−１番目のアクセス要求に対応する最終アクセスオフセット値とバッファ４０１内のデータの末端を示すオフセット値との間の差分が第１の閾値未満である場合が想定されている。Ｎ−１番目のアクセス要求が発生した時、バッファ４０１内のデータの先頭からＮ−１番目の最終アクセスオフセット値までのデータ範囲が無効化され、これによってそのデータ範囲に対応する記憶エリアが解放される。次に、Ｎ番目のアクセス要求が発生する。Ｎ番目のアクセス要求は、すでに解放された記憶エリア内に存在していたデータ部を要求するオフセット値を含むかもしれない。
【００６６】
本実施形態では、次に要求される可能性が高いオフセット位置のデータ部がバッファリングされていたにもかかわらず、そのデータ部が無効化されてしまうという事態の発生を防止するために、図１３に示すようなバッファ解放制御動作が実行される。
【００６７】
すなわち、本実施形態のバッファ解放制御動作では、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値が、バッファ解放制御動作のための基準値として用いられる。
【００６８】
再生制御部３０６は、ビデオ最終アクセスオフセットと前記オーディオ最終アクセスオフセットとの内の最小値とバッファ４０１内のデータの末端を示すオフセット値との間の差分が第１の閾値未満の場合、バッファ４０１内のフリー記憶エリアのサイズを増やすために、バッファ４０１内のデータの先頭から上述の最小値までのデータ範囲を無効化し、そのデータ範囲に対応するバッファ４０１内の記憶エリアを解放する。
【００６９】
たとえば、マルチメディアコンテンツデータのオフセット値１０００バイトからオフセット値２０００バイトまでのデータ部がバッファ４０１に格納されている場合を想定する。第１の閾値は８００バイトであるとする。ビデオ最終アクセスオフセット値は１５００バイトであり、オーディオ最終アクセスオフセット値は１２５０バイトである。この場合、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値は、オーディオ最終アクセスオフセット値である１２５０バイトとなる。そして、データ部の先頭１０００バイトからオーディオ最終アクセスオフセット１２５０バイトまでのデータ範囲が無効化され、そのデータ範囲に対応するバッファ４０１内の記憶エリアが解放される。バッファ４０１に残るのは、オフセット値１２５０バイトからオフセット値２０００バイトまでのデータである。
【００７０】
なお、ここでは、オーディオ最終アクセスオフセット値がビデオ最終アクセスオフセット値よりも小さい場合を例示したが、オーディオ最終アクセスオフセット値がビデオ最終アクセスオフセット値よりも大きい場合には、ビデオ最終アクセスオフセット値が、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最小値として用いられる。
【００７１】
次に、図１４から図１６を参照して、バッファリング済みデータ量の減少時に実行される再生停止動作について説明する。
【００７２】
図１４は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとを区別しない場合の再生停止動作の制御を示している。最終アクセスオフセット値からバッファ４０１内のデータの末端を示すオフセット値までのデータ量が第２の閾値よりも少ない場合、換言すれば、最終アクセスオフセット値とバッファ４０１内のデータの末端を示すオフセット値との間の差分が第２の閾値未満の場合、バッファ４０１内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生が停止される。
【００７３】
たとえば、マルチメディアコンテンツデータのオフセット値１０００バイトからオフセット値２０００バイトまでのデータ部がバッファ４０１に格納されている場合を想定する。第２の閾値は１５０バイトであるとする。最終アクセスオフセット値がたとえば１９００バイトになると、最終アクセスオフセット値１９００バイトとバッファ４０１内のデータの末端のオフセット値２０００バイトとの間の差分が第２の閾値未満になる。この場合、バッファ４０１内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生が停止される。
【００７４】
しかし、もしこのような再生停止制御をストリーミング向けでないマルチメディアコンテンツデータに適用した場合には、シークバー４０１上においては十分なシーク可能区間３９が存在しているのにもかかわらず再生動作が突然停止されてしまう可能性がある。図１５にはこの様子が示されている。図１５においては、Ｎ−１番目のアクセス時点のシークバー３３が示されている。この時点では、最終アクセスオフセット（Ｎ−１番目のアクセス要求で指定されたオフセット）よりも時間的に後方に位置する一定量のデータがシーク可能区間３９としてバッファ４０１に格納されている。しかし、ストリーミング向けでないマルチメディアコンテンツデータにおいては、時間的に近接するオーディオデータ部とビデオデータ部とが非連続であるため、Ｎ番目のアクセス要求によって指定されるオフセット値が、Ｎ−１番目のアクセス要求で指定されたオフセットよりも時間的に後方の比較的離れた位置を指定するかもしれない。この場合、シークバー４０１上においては十分なシーク可能区間３９が存在しているのにもかかわらず再生動作が突然停止されてしまうという現象が発生する。
【００７５】
本実施形態では、図１６に示すように、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値とバッファ４０１内のデータの末端を示すオフセット値との間の差分に基づいてシークバー３３上にバッファリング済みのデータ区間（シーク可能区間３９）が表示され、さらに、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットの内の最大値を基準に再生停止制御が実行される。
【００７６】
すなわち、再生制御部３０６は、ビデオ最終アクセスオフセットとオーディオ最終アクセスオフセットとの内の最大値とバッファ４０１内のデータの末端を示すオフセット値との間の差分が第２の閾値未満の場合、バッファ４０１内に一定量のデータがたまるまで、マルチメディアコンテンツデータの再生を停止する。
【００７７】
図１６においては、ビデオ最終アクセスオフセット値よりもオーディオ最終アクセスオフセット値の方が大きい場合が想定されている。この場合、バッファ４０１内のデータの末端を示すオフセット値との間の差分に基づいてシークバー３３上にバッファリング済みのデータ区間（シーク可能区間３９）が表示される。図１６のシークバー３３の表示は、Ｎ−１番目のアクセス時点に対応している。
【００７８】
このような再生停止制御により、シークバー４０１上においては十分なシーク可能区間３９が存在しているのにもかかわらず再生動作が突然停止されてしまうという現象が発生を防止することができる。
【００７９】
次に、図１７のフローチャートを参照して、プレーヤアプリケーションプログラム２０２によって実行される再生制御処理の手順を説明する。
【００８０】
プレーヤアプリケーションプログラム２０２においては、再生対象のマルチメディアコンテンツデータのインデックス情報に基づき、再生制御部３０６は、マルチメディアコンテンツデータ内のデータ部それぞれをコンテンツサーバ２１から順次受信してバッファ４０１に格納するためのバッファリング処理を開始する。一定量のデータがバッファ４０１に格納されると、再生制御部３０６からデマルチプレクサ３０２に再生要求が発行され（ステップＳ１１）、これによってマルチメディアコンテンツデータをストリーミングによって再生するための再生処理が開始される（ステップＳ１２）。なお、最初に、再生制御部３０６からデマルチプレクサ３０２に再生要求を発行し、その後、バッファリング処理を開始してもよい。
【００８１】
再生処理では、デマルチプレクサ３０２は、マルチメディアコンテンツデータのインデックス情報に基づき、次に再生すべきデータ（ビデオまたはオーディオ）をデータソース３０１に要求する（ステップＳ１３）。データソース３０１においては、アクセス要求されたメディア種別（ビデオまたはオーディオ）を示す情報がメディア識別子設定部４０３に設定される（ステップＳ１４）。さらに、データソース３０１においては、アクセス要求されたメディア種別に応じて、ビデオ最終アクセスオフセットまたはオーディオ最終アクセスオフセットが更新される（ステップＳ１５）。そして、再生制御部３０６の制御の下、これらビデオ最終アクセスオフセットおよびオーディオ最終アクセスオフセットを用いたバッファ管理動作が実行される（ステップＳ１６，Ｓ１７）。ステップＳ１６では、上述のバッファ解放制御動作（バッファ解放処理）が実行される。またステップＳ１７では、再生を一時的に停止することによって一定量のデータをバッファ４０１に格納するための上述の再生停止動作（再バッファリング処理）が実行される。バッファ解放制御動作および再生停止動作それぞれの手順の詳細は図１９および図２０を参照して後述する。
【００８２】
次に再生すべきデータ（ビデオまたはオーディオ）がデータソース３０１からデマルチプレクサ３０２に送られると（ステップＳ１８）、そのデータがビデオデコーダ３０３またはオーディオデコーダ３０４によってデコードされることによって再生される（ステップＳ１９）。
【００８３】
マルチメディアコンテンツデータの再生が完了するまで、ステップＳ１２からステップＳ１９までの再生処理が繰り返し実行される。たとえば、再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると、再生処理が完了される（ステップＳ２１）。
【００８４】
次に、図１８のフローチャートを参照して、プレーヤアプリケーションプログラム２０２によって実行されるシーク制御動作について説明する。
【００８５】
ユーザによるスライダ３５の移動操作によって、再生位置が、バッファ４０１にまだ格納されていない、マルチメディアコンテンツデータ内のデータ位置（第１のデータ位置）に変更された場合、以下のシーク制御動作が実行される。
【００８６】
すなわち、再生制御部３０６は、デマルチプレクサ３０２に再生動作を停止させると共に、再生位置を第１のデータ位置に変更すべきことをデマルチプレクサ３０２に要求する（ステップＳ３１）。そして、再生制御部３０６の制御の下、シーク処理が開始される（ステップＳ３２）。シーク処理では、デマルチプレクサ３０２は、マルチメディアコンテンツデータのインデックス情報に基づき、次に再生すべきデータ（ビデオまたはオーディオ）をデータソース３０１に要求する（ステップＳ３３）。シーク処理開始直後においては、ステップＳ３３において、デマルチプレクサ３０２は、マルチメディアコンテンツデータのインデックス情報に基づき、第１のデータ位置に対応するビデオデータ部のオフセット値を算出し、そのオフセット値を含むアクセス要求をデータソース３０１に送出する。データソース３０１においては、アクセス要求されたメディア種別（ビデオまたはオーディオ）を示す情報がメディア識別子設定部４０３に設定される（ステップＳ３４）。さらに、データソース３０１においては、アクセス要求されたメディア種別に応じて、ビデオ最終アクセスオフセットまたはオーディオ最終アクセスオフセットが更新される（ステップＳ３５）。そして、再生制御部３０６の制御の下、以下のバッファリング制御動作が実行される。
【００８７】
再生制御部３０６は、アクセス要求されたデータがバッファ４０１に格納されていない場合（ステップＳ３６のＮＯ）、そのアクセス要求されたメディア種別がビデオまたはオーディオのいずれであるかを判定する（ステップＳ４１）。アクセス要求されたメディア種別がビデオであれば（ステップＳ４１のＹＥＳ）、再生制御部３０６は、バッファ４０１の全記憶エリアを解放し、そして、アクセス要求によって指定されたオフセット値に後続するデータ部それぞれをコンテンツサーバ２１から順次受信してバッファ４０１に格納する第１のバッファリング処理を開始する（ステップＳ４２）。第１のバッファリング処理では、再生制御部３０６は、アクセス要求によって指定されたオフセット値に後続するデータ部それぞれをコンテンツサーバ２１から取得する処理を繰り返し実行する。
【００８８】
第１のバッファリング処理によってある一定量のデータがバッファリングされると、再生制御部３０６は、再生動作を再開させる。次に再生すべきデータ（ビデオまたはオーディオ）がデータソース３０１からデマルチプレクサ３０２に送られると（ステップＳ３７）、そのデータがビデオデコーダ３０３またはオーディオデコーダ３０４によってデコードされることによって再生される（ステップＳ３８）。マルチメディアコンテンツデータの再生が完了するまで、ステップＳ３２からＳ３８までの処理が繰り返し実行される。再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると、再生処理（シーク）が完了される（ステップＳ４０）。
【００８９】
アクセス要求されたデータがバッファ４０１に格納されておらず（ステップＳ３６のＮＯ）、且つそのアクセス要求されたデータのメディア種別がオーディオデータであるならば（ステップＳ４１のＮＯ）、再生制御部３０６は、そのアクセス要求されたデータ（オーディオデータ）のバッファリングおよび再生をスキップし（ステップＳ４３）、ステップＳ３３に進む。つまり、再生制御部３０６は、バッファ４０１に格納されていないオーディオデータがアクセス要求された場合には、そのアクセス要求によって要求されたオーディオデータをコンテンツサーバ２１から取得する処理、およびオーディオデータをデマルチプレクサ３０２に再生させる処理をそれぞれスキップする。したがって、シーク期間中においては、たとえまだバッファリングされていないオーディオデータが要求された場合でも、そのオーディオデータの取得のためにシークの起点が変更されることはない。これによって第１のバッファリング処理は継続して実行される。
【００９０】
シーク処理期間中に、バッファリングされていないビデオデータ部が要求された場合は、ステップＳ４２のバッファリング処理が実行される。この場合、要求されたビデオデータ部とそのビデオデータ部に後続するデータ部それぞれを順次受信してバッファ４０１に格納する処理が実行される。
【００９１】
なお、再生位置が第１のデータ位置に変更された時点で、第１のバッファリング処理を開始し、一定量のデータがバッファリングされた後に、ステップＳ３２からのシーク処理を開始するようにしてもよい。
【００９２】
次に、図１９のフローチャートを参照して、図１７のステップＳ１６で実行されるバッファ解放制御動作（バッファ解放処理）の手順を説明する。図１９に示されているように、バッファ解放処理では、再生制御部３０６は、バッファ量管理部４０２を用いて、以下の条件が成立しているか否かを判定する。
【００９３】
閾値＞BLOffset  −  MIN (VFOffset, AFOffset)
ここで、BLOffsetはバッファ４０１に格納されているデータの末端のオフセット値を示す。VFOffsetはビデオ最終アクセスオフセット値を示す。AFOffsetはオーディオ最終アクセスオフセット値を示す。MIN (VFOffset, AFOffset)は、VFOffsetとAFOffsetの２つの値から最小値を選択する関数を示す。
【００９４】
閾値＞BLOffset  −  MIN (VFOffset, AFOffset)の条件が成立した場合（ステップＳ５１のＹＥＳ）、再生制御部３０６は、バッファ４０１内のデータの先頭からMIN (VFOffset, AFOffset)までのデータを無効化してそのデータが格納されているバッファ４０１内の記憶エリアを解放する（ステップＳ５２）。
【００９５】
次に、図２０のフローチャートを参照して、図１７のステップＳ１７で実行される再生停止動作（再バッファリング処理）の手順を説明する。図２０に示されているように、再バッファリング処理では、再生制御部３０６は、バッファ量管理部４０２を用いて、以下の条件が成立しているか否かを判定する。
【００９６】
閾値＞BLOffset  −  MAX (VFOffset, AFOffset)
ここで、BLOffsetはバッファ４０１に格納されているデータの末端のオフセット値を示す。VFOffsetはビデオ最終アクセスオフセット値を示す。AFOffsetはオーディオ最終アクセスオフセット値を示す。MAX (VFOffset, AFOffset)は、VFOffsetとAFOffsetの２つの値から最大値を選択する関数を示す。
【００９７】
閾値＞BLOffset  −  MAX (VFOffset, AFOffset)の条件が成立した場合（ステップＳ６１のＹＥＳ）、再生制御部３０６は、一定量のデータがバッファ４０１に格納されるまで再生を停止させる（ステップＳ６２）。
【００９８】
以上説明したように、本実施形態によれば、再生位置がバッファ４０１にまだ格納されていない、マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合、第１のデータ位置に後続するデータ部それぞれをコンテンツサーバ２１から順次受信してバッファ４０１に格納するための第１のバッファリング処理が開始される。そして、所定量のデータがバッファ４０１に格納された後に、バッファ４０１に格納されていないオーディオデータ部が要求された場合には、その要求されたオーディオデータ部をコンテンツサーバ２１受信してバッファ４０１に格納するための第２のバッファリング処理の実行がスキップされ、第１のバッファリング処理が継続されると共に、再生部による、要求されたオーディオデータ部の再生がスキップされる。したがって、ストリーミング向けでないマルチメディアコンテンツデータの再生中に再生位置がバッファ４０１にまだ格納されていない、マルチメディアコンテンツデータ内の第１のデータ位置に変更された場合には、最初の一定期間の間は、ビデオの再生のみが行われ、オーディオは再生されない。一定期間経過後は、ビデオとオーディオの双方が再生される。このように一部のオーディオデータ部に対するバッファリングおよび再生を省略することにより、たとえ再生対象のマルチメディアコンテンツデータが、互いに再生時刻の近いビデオデータ部分とオーディオデータ部分とが非連続であるコンテンツデータであっても、そのコンテンツデータを、スムーズに再生することができる。
【００９９】
なお、本実施形態の再生制御処理の手順は全てソフトウェアによって実行することができる。このため、この再生制御処理手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１００】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０１】
１０…コンピュータ、２１…コンテンツサーバ、３３…シークバー、２０２…プレーヤアプリケーションプログラム、３０１…データソース、３０２…デマルチプレクサ、３０３…ビデオデコーダ、３０４…オーディオデコーダ、３０５…レンダラ、３０６…再生制御部、４０１…バッファ、４０２…バッファ量管理部。
【図１】
0005552650.tif 000002
【図２】
0005552650.tif 000003
【図３】
0005552650.tif 000004
【図４】
0005552650.tif 000005
【図５】
0005552650.tif 000006
【図６】
0005552650.tif 000007
【図７】
0005552650.tif 000008
【図８】
0005552650.tif 000009
【図９】
0005552650.tif 000010
【図１０】
0005552650.tif 000011
【図１１】
0005552650.tif 000012
【図１２】
0005552650.tif 000013
【図１３】
0005552650.tif 000014
【図１４】
0005552650.tif 000015
【図１５】
0005552650.tif 000016
【図１６】
0005552650.tif 000017
【図１７】
0005552650.tif 000018
【図１８】
0005552650.tif 000019
【図１９】
0005552650.tif 000020
【図２０】
0005552650.tif 000021