(57)【要約】【課題】コンテンツデータを受信しながらそのコンテンツデータに対応するインデックス情報を作成することができる電子機器を実現する。【解決手段】実施形態によれば、電子機器は、受信されたパケットが、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットであることを示すランダムアクセスインジケータフラグが設定された第１パケットであるか否かを判定し、受信されたパケットが第１パケットである場合、第１パケットから、または第１パケットと同一のパケット識別子を有する他の受信されたパケットから、ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプを取得し、提示時刻と、第１パケットに対応するデータが格納されるバッファ内の位置とを示すインデックス情報を生成する。電子機器は、変更先再生位置に対応する第１データ部がバッファ上に存在するか否かを前記インデックス情報に基づいて判定する。【選択図】図３
2013078022.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツデータのストリームを構成するパケット群をサーバから受信しながら前記コンテンツデータを再生する電子機器であって、
前記受信されたパケット群を格納するバッファと、
前記バッファに格納されているパケット群をデコードして前記パケット群に対応するデータを再生する再生手段と、
受信されたパケットが、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットであることを示すランダムアクセスインジケータフラグが設定された第１パケットであるか否かを判定し、前記受信されたパケットが前記第１パケットである場合、前記第１パケットから、または前記第１パケットと同一のパケット識別子を有する他の受信されたパケットから、前記ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプを取得し、前記提示時刻と、前記第１パケットが格納される前記バッファ内の位置とを示すインデックス情報を生成するインデックス生成手段と、
前記再生手段によって要求される変更先再生位置に対応する第１データ部が前記バッファ上に存在するか否かを前記インデックス情報に基づいて判定し、前記判定結果に基づいて、前記第１データ部を前記バッファから前記再生手段に転送する処理または前記第１データ部を前記サーバから受信する処理のいずれかを実行する制御手段とを具備する電子機器。
【請求項２】
前記インデックス生成手段は、前記第１パケットと、前記第１パケットと同一のパケット識別子を有する他の受信された１以上のパケットとを用いて、前記ランダムアクセス可能なビデオフレームを運ぶためのパケッタイズドエレメンタリーストリーム（ＰＥＳ）パケットのヘッダを組み立て、前記組み立てたヘッダから、前記ランダムアクセス可能なビデオフレームの提示時刻を示す前記タイムスタンプを取得するように構成されている請求項１記載の電子機器。
【請求項３】
前記コンテンツデータのストリームを構成するパケット群はトランスポートストリーム（ＴＳ）パケット群である請求項１記載の電子機器。
【請求項４】
前記サーバは、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットに前記ランダムアクセスインジケータフラグを設定するように構成されている請求項１記載の電子機器。
【請求項５】
コンテンツデータのストリームを構成するパケット群をサーバから受信しながら前記コンテンツデータを再生する再生制御方法であって、
前記受信されたパケット群をバッファに格納し、
前記バッファに格納されているパケット群をデコードして前記パケット群に対応するデータを再生し、
前記受信されたパケットが、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットであることを示すランダムアクセスインジケータフラグが設定された第１パケットであるか否かを判定し、
前記受信されたパケットが前記第１パケットである場合、前記第１パケットから、または前記第１パケットと同一のパケット識別子を有する他の受信されたパケットから、前記ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプを取得し、前記提示時刻と、前記第１パケットが格納される前記バッファ内の位置とを示すインデックス情報を生成し、
再生位置変更要求によって要求される変更先再生位置に対応する第１データ部が前記バッファ上に存在するか否かを前記インデックス情報に基づいて判定し、
前記判定結果に基づいて、前記第１データ部を前記バッファから前記再生手段に転送する処理または前記第１データ部を前記サーバから受信する処理のいずれかを実行する再生制御方法。
【請求項６】
前記インデックス情報を生成することは、
前記第１パケットと、前記第１パケットと同一のパケット識別子を有する他の受信された１以上のパケットとを用いて、前記ランダムアクセス可能なビデオフレームを運ぶためのパケッタイズドエレメンタリーストリーム（ＰＥＳ）パケットのヘッダを組み立てることと、
前記組み立てたヘッダから、前記ランダムアクセス可能なビデオフレームの提示時刻を示す前記タイムスタンプを取得することとを含む請求項５記載の再生制御方法。
【請求項７】
コンピュータに、コンテンツデータのストリームを構成するパケット群をサーバから受信しながら前記コンテンツデータを再生させるプログラムであって、
前記受信されたパケット群をバッファに格納する手順と、
前記バッファに格納されているパケット群をデコードして前記パケット群に対応するデータを再生する手順と、
前記受信されたパケットが、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットであることを示すランダムアクセスインジケータフラグが設定された第１パケットであるか否かを判定する手順と、
前記受信されたパケットが前記第１パケットである場合、前記第１パケットから、または前記第１パケットと同一のパケット識別子を有する他の受信されたパケットから、前記ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプを取得し、前記提示時刻と、前記第１パケットが格納される前記バッファ内の位置とを示すインデックス情報を生成する手順と、
再生位置変更要求によって要求される変更先再生位置に対応する第１データ部が前記バッファ上に存在するか否かを前記インデックス情報に基づいて判定する手順と、
前記判定結果に基づいて、前記第１データ部を前記バッファから前記再生手段に転送する処理または前記第１データ部を前記サーバから受信する処理のいずれかを実行する手順とを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンテンツデータを再生可能な電子機器および再生制御方法に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータ、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、インターネットを介してマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生するストリーミング再生機能を有している。
【０００３】
マルチメディアコンテンツデータのストリーミング再生においては、コンテンツサーバから受信されるマルチメディアコンテンツデータの一部分は電子機器内のストリームバッファに格納される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−５０９８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
電子機器上で実行されるプレーヤソフトウェアは、シークバー（またはプログレッシブバー）と称されるユーザインタフェースを表示する。ユーザは、シークバーを操作することによって、マルチメディアコンテンツデータ内の再生位置を変更（シーク）することができる。
【０００６】
ＭＰＥＧにおいて規格化されたＭＰ４のようなファイルフォーマットを有するコンテンツデータは、シーク用のインデックス情報を含んでいる。
【０００７】
しかしながら、幾つか種類のコンテンツデータ（例えばMPEG-2 TS/TTSコンテンツデータ等）においては、シーク用のインデックス情報はそのコンテンツデータに包含されていない。このため、電子機器側では、MPEG-2 TS/TTSコンテンツデータのストリーム内のピクチャ構造等を解析することによってそのストリームに対応するインデックス情報を作成することが必要とされる。しかし、一般的に、ストリームのピクチャ構造を解析するためには、そのストリームをデコードする処理と同等の処理を実行することが必要とされる。このため、コンテンツデータを受信しながら、インデックス情報をリアルタイムに作成することは困難である。
【０００８】
本発明は、コンテンツデータを受信しながらそのコンテンツデータに対応するインデックス情報を作成することができる電子機器及びコンテンツ再生制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態によれば、電子機器は、コンテンツデータのストリームを構成するパケット群をサーバから受信しながら前記コンテンツデータを再生する。この電子機器は、バッファと、再生手段と、インデックス生成手段と、制御手段とを具備する。前記バッファは、前記受信されたパケット群を格納する。前記再生手段は、前記バッファに格納されているパケット群をデコードして前記パケット群に対応するデータを再生する。前記インデックス生成手段は、受信されたパケットが、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットであることを示すランダムアクセスインジケータフラグが設定された第１パケットであるか否かを判定し、前記受信されたパケットが前記第１パケットである場合、前記第１パケットから、または前記第１パケットと同一のパケット識別子を有する他の受信されたパケットから、前記ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプを取得し、前記提示時刻と、前記第１パケットが格納される前記バッファ内の位置とを示すインデックス情報を生成する。前記制御手段は、前記再生手段によって要求される変更先再生位置に対応する第１データ部が前記バッファ上に存在するか否かを前記インデックス情報に基づいて判定し、前記判定結果に基づいて、前記第１データ部を前記バッファから前記再生手段に転送する処理または前記第１データ部を前記サーバから受信する処理のいずれかを実行する。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る電子機器の外観を示す斜視図。
【図２】同実施形態の電子機器によって実行されるプレーヤソフトウェアによって表示されるコンテンツ再生画面の例を示す図。
【図３】同実施形態の電子機器のシステム構成を示すブロック図。
【図４】同実施形態の電子機器によって実行されるプレーヤソフトウェアの構成を示すブロック図。
【図５】図４のプレーヤソフトウェアによってサーバから受信されるトランスポートストリーム（ＴＳ）パケット群を説明するための図。
【図６】図５のトランスポートストリーム（ＴＳ）パケットに付加されるランダムアクセスインジケータを説明するための図。
【図７】図４のプレーヤソフトウェアによって組み立てられるパケッタイズドエレメンタリーストリーム（ＰＥＳ）パケットヘッダを説明するための図。
【図８】図４のプレーヤソフトウェアによって使用されるバッファを説明するための図。
【図９】図４のプレーヤソフトウェアによって生成されるインデックス情報を説明するための図。
【図１０】図４のプレーヤソフトウェアによって実行される再生制御動作の手順を示すフローチャート。
【図１１】図４のプレーヤソフトウェアによって実行されるバッファリング動作の手順を示すフローチャート。
【図１２】図４のプレーヤソフトウェアによって実行されるシーク制御動作の手順を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して説明する。  
図１は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、スレート型パーソナルコンピュータ（ＰＣ）、ラップトップ型ＰＣ、スマートフォン、またはＰＤＡ等として実現され得る。以下では、この電子機器がスレート型パーソナルコンピュータ１０として実現されている場合を想定する。スレート型パーソナルコンピュータ１０は、図１に示すように、コンピュータ本体１１とタッチスクリーンディスプレイ１７とから構成される。
【００１２】
コンピュータ本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７には、液晶表示装置（ＬＣＤ）及びタッチパネルが組み込まれている。タッチパネルは、ＬＣＤの画面を覆うように設けられる。タッチスクリーンディスプレイ１７は、コンピュータ本体１１の上面に重ね合わせるように取り付けられている。
【００１３】
コンピュータ１０はコンテンツデータをストリーミングによって再生するコンテンツ再生機能を有している。このコンテンツ再生機能はコンピュータ１０にインストールされたプレーヤソフトウェアによって実行される。プレーヤソフトウェアによるコンテンツ再生動作は、オペレーティングシステムによって提供されるマルチメディアフレームワークを利用して実行するようにしてもよい。コンピュータ１０は有線または無線のネットワークとの通信を実行するための通信デバイスを内蔵しており、コンピュータ１０とインターネット２０との間の通信はこの通信デバイスを介して実行される。
【００１４】
コンテンツデータは、例えば、ビデオデータとオーディオデータとが多重化されたデータストリームである。ビデオデータは圧縮符号化されていてもよく、またオーディオデータも圧縮符号化されていてもよい。コンテンツデータは、ビデオデータのみから構成されていてもよい。
【００１５】
プレーヤソフトウェアはインターネット２０のようなネットワークを介してコンテンツサーバ２１からコンテンツデータ（マルチメディアコンテンツデータ）を受信する。プレーヤソフトウェアはマルチメディアコンテンツデータを受信しながら、そのマルチメディアコンテンツデータを再生する。コンピュータ１０においては、マルチメディアコンテンツデータ内の受信されたデータ部はバッファに格納される。バッファはコンピュータ１０内のメモリの一部である。バッファに一定量のデータが蓄積された後に、プレーヤソフトウェアはマルチメディアコンテンツデータの再生を開始する。
【００１６】
マルチメディアコンテンツデータの再生処理においては、バッファに格納されたビデオデータ部およびオーディオデータ部の各々が再生される。マルチメディアコンテンツデータの再生処理の間、プレーヤソフトウェアは、先読み処理を実行してもよい。先読み処理は、現在再生位置よりも時間的に後のデータ部それぞれをコンテンツサーバ２１から順次受信してバッファに格納するバッファリング処理である。
【００１７】
図２は、プレーヤソフトウェアによってディスプレイ１７に表示されるコンテンツ再生画面の例である。コンテンツ再生画面はビデオ表示エリア３１およびシークバー３３を表示する。ビデオ表示エリア３１は、マルチメディアコンテンツデータ内のビデオデータの画像（動画像）を表示するための表示領域である。シークバー３３はマルチメディアコンテンツデータの再生位置をユーザに制御させるためのグラフィカルユーザインタフェースである。
【００１８】
シークバー３３の左端および右端は再生対象のマルチメディアコンテンツデータの先頭位置および終端位置にそれぞれ対応する。マルチメディアコンテンツデータの再生期間中においては、マルチメディアコンテンツデータの再生位置は時間の経過に伴って自動的に更新される。再生位置を示す値としては、マルチメディアコンテンツデータの先頭位置を起点としたオフセット値を用いてもよい。ある再生位置に対応するオフセット値は、マルチメディアコンテンツデータの先頭位置からその再生位置までの再生時間を示す。
【００１９】
シークバー３３はスライダ３５を表示する。スライダ３５はマルチメディアコンテンツデータ内の現在再生位置を示す。つまり、スライダ３５はマルチメディアコンテンツデータの再生の進行状況を示す。ユーザは、ポインティングデバイスを用いてスライダ３５を移動させることにより、マルチメディアコンテンツデータの再生位置を変更することができる。
【００２０】
図３は、本コンピュータ１０のシステム構成を示す図である。  
本コンピュータ１０は、図３に示されるように、ＣＰＵ１０１、ノースブリッジ１０２、主メモリ１０３、サウスブリッジ１０４、グラフィクスコントローラ１０５、サウンドコントローラ１０６、ＢＩＯＳ−ＲＯＭ１０７、ＬＡＮコントローラ１０８、ソリッドステートドライブ（ＳＳＤ）１０９、無線ＬＡＮコントローラ１１２、エンベデッドコントローラ（ＥＣ）１１３、ＥＥＰＲＯＭ１１４、ＨＤＭＩ制御回路３等を備える。
【００２１】
ＣＰＵ１０１は、コンピュータ１０内の各部の動作を制御するプロセッサである。ＣＰＵ１０１は、ＳＳＤ１０９から主メモリ１０３にロードされる、オペレーティングシステム（ＯＳ）２０１、および各種アプリケーションプログラムを実行する。アプリケーションプログラムには、プレーヤアプリケーションプログラム２０２が含まれている。このプレーヤアプリケーションプログラム２０２は上述のプレーヤソフトウェアであり、オペレーティングシステム（ＯＳ）２０１上で実行される。
【００２２】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０７に格納されたＢＩＯＳも実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００２３】
ノースブリッジ１０２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１０４との間を接続するブリッジデバイスである。ノースブリッジ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０５との通信を実行する機能も有している。
【００２４】
グラフィクスコントローラ１０５は、本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０５によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて映像を表示する。このＬＣＤ１７Ａ上にはタッチパネル１７Ｂが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うためのポインティングデバイスである。ユーザは、タッチパネル１７Ｂを用いて、ＬＣＤ１７Ａの画面に表示されたグラフィカルユーザインタフェース（ＧＵＩ）等を操作することができる。例えば、ユーザは、画面に表示されたボタンをタッチすることによって、当該ボタンに対応する機能の実行を指示することができる。
【００２５】
ＨＤＭＩ端子２は、外部ディスプレイ接続端子である。ＨＤＭＩ端子２は、非圧縮のデジタル映像信号とデジタルオーディオ信号とを１本のケーブルで外部ディスプレイ装置１に送出することができる。ＨＤＭＩ制御回路３は、ＨＤＭＩモニタと称される外部ディスプレイ装置１にデジタル映像信号をＨＤＭＩ端子２を介して送出するためのインタフェースである。つまり、コンピュータ１０は、ＨＤＭＩ端子２等を介して、外部ディスプレイ装置１に接続可能である。
【００２６】
サウスブリッジ１０４は、ＰＣＩ（Peripheral Component Interconnect）バス上の各デバイス及びＬＰＣ（Low Pin Count）バス上の各デバイスを制御する。また、サウスブリッジ１０４は、ＳＳＤ１０９を制御するためのＡＴＡコントローラを内蔵している。
【００２７】
サウスブリッジ１０４は、各種ＵＳＢデバイスを制御するためのＵＳＢコントローラを内蔵している。さらに、サウスブリッジ１０４は、サウンドコントローラ１０６との通信を実行する機能も有している。サウンドコントローラ１０６は音源デバイスであり、再生対象のオーディオデータをスピーカ１８Ａ，１８Ｂに出力する。ＬＡＮコントローラ１０８は、例えばＩＥＥＥ  ８０２．３規格の有線通信を実行する有線通信デバイスである。無線ＬＡＮコントローラ１１２は、例えばＩＥＥＥ  ８０２．１１規格の無線通信を実行する無線通信デバイスである。
【００２８】
ＥＣ１１３は、電力管理のためのエンベデッドコントローラを含む１チップマイクロコンピュータである。ＥＣ１１３は、ユーザによるパワーボタンの操作に応じて本コンピュータ１０を電源オン／電源オフする機能を有している。
【００２９】
次に、図４を参照して、プレーヤアプリケーションプログラム２０２の機能構成を説明する。  
プレーヤアプリケーションプログラム２０２は、データソース３０１、デマルチプレクサ３０２、ビデオデコーダ３０３、オーディオデコーダ３０４、レンダラ３０５、および再生制御部３０６を備える。データソース３０１は、再生制御部３０６の制御の下、コンテンツサーバ２１からマルチメディアコンテンツデータを受信するための処理を順次実行し、受信されたデータ部分それぞれをバッファ４０１に格納する（バッファリング）。
【００３０】
このバッファリングにおいては、データソース３０１は、コンテンツデータのストリームを構成するパケット群をサーバ２１から順次受信する。これら各パケットは、トランスポートストリーム（ＴＳ）パケットである。また、これら各パケットは、タイムスタンプドＴＳパケット（ＴＴＳパケット）であってもよい。ＴＴＳパケットはＴＳパケットの一種であり、ＴＳパケットの先頭にタイムスタンプが付与されたパケットである。バッファ４０１は、受信されたＴＳ／ＴＴＳパケット群、つまりコンテンツデータ内の一部のデータを格納する。
【００３１】
データソース３０１は、さらに、インデックス情報生成部４０２、制御部４０３、およびインデックス情報記憶部４０４を備える。インデックス情報生成部４０２は、コンテンツデータに対するシーク用のインデックス情報をバッファリング中にリアルタイムに生成する。このインデックス情報の生成動作を支援するために、サーバ２０１は、コンテンツデータ内の各ランダムアクセスポイントに対応するＴＳパケットを送信する場合には、そのＴＳパケットのヘッダに“１”のランダムアクセスインジケータフラグ（random_access_indicator）を設定するように構成されている。
【００３２】
ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットは、ランダムアクセス可能なビデオフレームを運ぶための複数のＴＳパケット群内の先頭のＴＳパケットである。あるビデオフレームを運ぶための一つのパケッタイズドエレメンタリーストリーム（ＰＥＳ）パケットは、同一のパケット識別子（ＰＩＤ）を持つ複数のＴＳパケットのペイロードに分割して伝送される。したがって、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットは、ランダムアクセス可能なビデオフレームを運ぶためのＰＥＳパケットが分散される複数のＴＳパケット内の先頭ＴＳパケットである。ランダムアクセス可能なビデオフレームは、他のビデオフレームを参照せずにデコード可能なビデオフレーム、例えばＨ．２６４のＩＤＲ（Instantaneous Decoder Refresh）フレーム、ＭＰＥＧ−２  ＶｉｄｅｏのＩ（Intra）フレーム、等である。
【００３３】
サーバ２０１は、ランダムアクセス可能なビデオフレームを格納するＰＥＳパケットが割り当てられた複数のＴＳパケットの内の先頭ＴＳパケットのヘッダに存在するrandom_access_indicatorに“１”をセットする。
【００３４】
インデックス情報生成部４０２は、受信されたＴＳパケットのヘッダを参照して、受信されたＴＳパケットが、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットであるか否か、つまり、random_access_indicatorに“１”がセットされたＴＳパケットであるか否かを判定する。受信されたＴＳパケットがランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケット（第１パケット）である場合、インデックス情報生成部４０２は、このランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットから、またはこのランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットと同一のパケット識別子（ＰＩＤ）を有する他の受信されたＴＳパケットから、ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプを取得する。
【００３５】
この場合、インデックス情報生成部４０２は、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットと、このランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットと同一のパケット識別子を有する他の受信された１以上のＴＳパケットとを用いて、ランダムアクセス可能なビデオフレームを運ぶＰＥＳパケットのヘッダを組み立て、この組み立てたヘッダから、ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプ（プレゼンテーションタイムスタンプ：ＰＴＳ）を取得してもよい。ＰＥＳパケットのヘッダは幾つかのＴＳパケットに分散されている場合がある。したがって、上述のようにＰＥＳパケットのヘッダを組み立て、その組み立てられたヘッダからＰＴＳを取得することにより、たとえＰＥＳパケットのヘッダが幾つかのＴＳパケットに分散されている場合であっても、ランダムアクセス可能なビデオフレームに対応するＰＴＳをより正しく取得することができる。
【００３６】
そして、インデックス情報生成部４０２は、取得された提示時刻（ＰＴＳ）と、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットが格納されるバッファ４０１内の位置とを示すインデックス情報を生成する。ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケットが格納されるバッファ４０１内の位置としては、例えば、そのＴＳパケットが格納されるバッファ４０１内のオフセット位置が用いられる。このインデックス情報はインデックス情報記憶部４０４に格納される。ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケット（第１パケット）が受信される度、ランダムアクセス可能な新たなビデオフレームに対応するインデックス情報が生成される。これによって、バッファ４０１に格納されたデータ内のランダムアクセス可能な箇所毎に、提示時刻とバッファ４０１内の格納位置とのペアが、インデックス情報としてインデックス情報記憶部４０４に格納される。
【００３７】
制御部４０４は、デマルチプレクサ３０２によって要求される変更先再生位置に対応する第１データ部がバッファ４０１上に存在するか否かをインデックス情報に基づいて判定し、この判定結果に基づいて、第１データ部をバッファ４０１からデマルチプレクサ３０２に転送する処理または第１データ部をサーバ２１から受信する処理のいずれかを実行する。
【００３８】
このように、バッファリング中に簡易な処理でシークに使用するインデックス情報を作成しておくことで、シークのレスポンスを向上させることができる。
【００３９】
デマルチプレクサ３０２、ビデオデコーダ３０３、オーディオデコーダ３０４、およびレンダラ３０５は、バッファ４０１に格納されたデータ（ＴＳ／ＴＴＳパケット群）をデコードしてそれらパケット群に対応するデータ（ビデオデータおよびオーディオデータ）を再生する再生部として機能する。
【００４０】
デマルチプレクサ３０２は、データソース３０１内のバッファ４０１からＴＳ／ＴＴＳパケット群を受信し、それらＴＳ／ＴＴＳパケット群それぞれのＰＩＤに基づいて、それらＴＳ／ＴＴＳパケット群をビデオデータに対応するＴＳ／ＴＴＳパケット群とオーディオデータに対応するＴＳ／ＴＴＳパケット群とに分離する。ビデオデコーダ３０３はビデオデータに対応するＴＳ／ＴＴＳパケット群をデコードし、デコードによって得られたビデオデータをレンダラ３０５に送る。オーディオデコーダ３０４はオーディオデータに対応するＴＳ／ＴＴＳパケット群をデコードし、デコードによって得られたオーディオデータをレンダラ３０５に送る。レンダラ３０５はビデオデータの動画像をビデオ表示エリア３１上に表示する。さらに、レンダラ３０５はオーディオデータに対応する音をスピーカ等を介して出力する。
【００４１】
再生制御部３０６は、プレーヤアプリケーションプログラム２０２によるコンテンツデータの再生動作を制御する。より詳しくは、再生制御部３０６は、データソース３０１、デマルチプレクサ３０２、ビデオデコーダ３０３、オーディオデコーダ３０４、およびレンダラ３０５をそれぞれ制御する。
【００４２】
次に、図５を参照して、プレーヤソフトウェア２０２によってサーバ２０１から受信されるＴＳパケット群について説明する。
【００４３】
トランスボートストリームは、ＴＳパケット（またはＴＴＳパケット）の列から構成される。各ＴＳパケットは１８８バイト長の固定長パケットであり、ヘッダ（Ｈ）とペイロード（Ｐ）とを含む。コンテンツデータのビットストリームはＴＳパケット群によって伝送される。ビットストリームにおいては、複数のランダムアクセス可能な箇所（ランダムアクセスポイント）が設定されている。ランダムアクセスポイントは例えば０．５秒程度の間隔で設定される。ビットストリーム内におけるランダムアクセス可能なビデオフレームそれぞれの位置がランダムアクセスポイントとなる。あるランダムアクセスポイントから次のランダムアクセスポイントまでの時間長は例えば０．５秒程度である。
【００４４】
ビットストリームはＰＥＳパケット群によってパケット化される。各ＰＥＳパケットのペイロード（Ｐ）は一つのアクセスユニット（一つのビデオフレーム）のデータを含む。各ＰＥＳパケットのヘッダ（Ｐ）には、対応するビデオフレームのＰＴＳが含まれている。一つのＰＥＳパケットは同一のＰＩＤを有する複数のＴＳパケットのペイロードに分割して伝送される。
【００４５】
いま、ＰＥＳパケット５０１のペイロードにランダムアクセス可能なビデオフレームが含まれている場合を想定する。ＰＥＳパケット５０１は、同一のＰＩＤ（ここでは、0x0100）を有する複数のＴＳパケット６０１，６０２，…に分割される。この場合、本実施形態では、先頭のＴＳパケット６０１のヘッダ内に存在するrandom_access_indicatorに“１”がセットされる。
【００４６】
さらに、ＰＥＳパケット７０１のペイロードにランダムアクセス可能なビデオフレームが含まれている場合を想定する。ＰＥＳパケット７０１は、同一のＰＩＤ（ここでは、0x0300）を有する複数のＴＳパケット８０１，８０２，…に分割される。先頭のＴＳパケット８０１のヘッダ内に存在するrandom_access_indicatorには“１”がセットされる。
【００４７】
図６には、ＴＳ／ＴＴＳパケットの構成が示されている。ＴＳ／ＴＴＳパケットのヘッダには、ＰＩＤを格納するフィールド部、random_access_indicatorを格納するフィールド部、等が存在する。通常のシステムでは、random_access_indicatorを格納するフィールドは使用されないことが多い。なぜなら、デコーダにおいては、ピクチャ構造を解析することによって、各ビデオフレームごとに、そのフレームがランダムアクセス可能なビデオフレームであるか否かを判定することができるからである。しかし、ピクチャ構造を解析するために必要な処理量は多いため、もしバッファリング処理中にピクチャ構造を解析する処理を行うと、バッファリング処理の負荷が増大し、バッファリングの速度が低下したり、コンテンツの再生性能に影響が及ぼされる可能性がある。本実施形態では、random_access_indicatorに“１”がセットされたＴＳパケットが検出され、このＴＳパケットに対応するＰＥＳパケットのヘッダ内に存在するＰＴＳが取得される。これにより、ピクチャ構造の解析を伴わない簡易な処理によってインデックス情報を作成することができる。
【００４８】
図７には、ＰＥＳパケットの構成が示されている。ＰＥＳパケットのヘッダには、ＰＴＳを格納するフィールド部、等が存在する。
【００４９】
次に、図８および図９を参照して、インデックス情報の例について説明する。  
いま、図８に示すように、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＳパケット６０１がバッファ４０１の先頭から９０００バイト目の格納位置Ａに格納され、ランダムアクセスインジケータフラグ（random_access_indicator）が設定された別のＴＳパケット８０１がバッファ４０１の先頭から１８０００バイト目の格納位置Ｂに格納されている場合を想定する。
【００５０】
この場合、ＴＳパケット６０１のペイロードまたはＴＳパケット６０２のペイロードにはＰＥＳパケット５０１のヘッダが含まれている。したがって、ＴＳパケット６０１のペイロードまたはＴＳパケット６０２のペイロードを参照することによって、ＰＥＳパケット５０１に含まれるビデオフレームのＰＴＳ（ここでは、ＰＴＳ＝１０００００）を取得することができる。
【００５１】
同様に、ＴＳパケット８０１のペイロードまたはＴＳパケット８０２のペイロードにはＰＥＳパケット７０１のヘッダが含まれている。したがって、ＴＳパケット８０１のペイロードまたはＴＳパケット８０２のペイロードを参照することによって、ＰＥＳパケット７０１に含まれるビデオフレームのＰＴＳ（ここでは、ＰＴＳ＝２５００００）を取得することができる。
【００５２】
図９はインデックス情報の例を示している。ＴＳパケット６０１の受信時には、バッファ内オフセット（＝９０００）とタイムスタンプ（＝１０００００）とのペアがインデックス情報として生成される。同様に、ＴＳパケット８０１の受信時には、バッファ内オフセット（＝１８０００）とタイムスタンプ（＝２５００００）とのペアがインデックス情報として生成される。
【００５３】
一旦生成されたペアは、必要に応じてインデックス情報から削除される。なぜなら、バッファ４０１の空き領域を確保するために、バッファ４０１の一部または全ての記憶領域を確保する処理が必要に応じて実行されるからである。例えば、バッファ４０１のバッファ内オフセット（＝９０００）からバッファ内オフセット（＝１８０００）の直前までの記憶領域が解放されてこの記憶領域が空き領域に設定される場合には、バッファ内オフセット（＝９０００）とタイムスタンプ（＝１０００００）とのペアがインデックス情報から削除される。
【００５４】
次に、図１０のフローチャートを参照して、プレーヤアプリケーションプログラム２０２によって実行される再生制御処理の手順を説明する。
【００５５】
プレーヤアプリケーションプログラム２０２においては、再生制御部３０６の制御の下、データソース３０１は、マルチメディアコンテンツデータのＴＳパケット群それぞれをコンテンツサーバ２１から順次受信してバッファ４０１に格納するためのバッファリング処理を開始する。一定量のデータがバッファ４０１に格納されると、再生制御部３０６からデマルチプレクサ３０２に再生要求が発行され（ステップＳ１１）、これによってマルチメディアコンテンツデータをストリーミングによって再生するための再生処理（ステップＳ１２〜Ｓ１７）が開始される。
【００５６】
再生処理では、デマルチプレクサ３０２は、次に再生すべきデータ（ビデオまたはオーディオ）をデータソース３０１に要求し（ステップＳ１３）、次に再生すべきデータ（ビデオまたはオーディオ）をデータソース３０１から取得する（ステップＳ１４）。このデータがビデオデコーダ３０３またはオーディオデコーダ３０４によってデコードされることによって再生される（ステップＳ１９）。この場合、ビデオデータに対応する各ＴＳパケットはデマルチプレクサ３０２からビデオデコーダ３０３に送られ、オーディオデータに対応する各ＴＳパケットはデマルチプレクサ３０２からオーディオデコーダ３０４に送られる。
【００５７】
さらに、再生処理では、再生制御部３０６は、マルチメディアコンテンツデータの再生が完了したか否か、つまり、再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達したか否かを判定する（ステップＳ１６）。マルチメディアコンテンツデータの再生が完了するまで、ステップＳ１２からステップＳ１７までの再生処理のループが繰り返し実行される。再生が進捗し再生位置がマルチメディアコンテンツデータの終端に達すると（ステップＳ１６のＹＥＳ）、再生処理が完了される（ステップＳ１８）。
【００５８】
次に、図１１のフローチャートを参照して、プレーヤアプリケーションプログラム２０２によって実行されるバッファリング処理について説明する。
【００５９】
バッファリング処理は、サーバ２１からデータを順次受信するための受信処理のループ（ステップＳ２１〜Ｓ２９）を含む。この受信処理のループ（ステップＳ２１〜Ｓ２９）には、サーバ２１から受信されるＴＴＳ／ＴＳパケットを解析して上述のインデックス情報を生成するための解析処理のループ（ステップＳ２２〜Ｓ２７）が含まれている。
【００６０】
まず、データソース３０１は、コンテンツデータのストリームを構成するＴＴＳ／ＴＳパケット群をサーバ２１から受信する（ステップＳ２１）。受信されたＴＴＳ／ＴＳパケット群はバッファ４０１に格納される。一つのＴＴＳ／ＴＳパケットが受信される度に、データソース３０１のインデックス情報生成部４０２は、以下の処理を実行する。
【００６１】
インデックス情報生成部４０２は、受信されたＴＴＳ／ＴＳパケットが、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＴＳ／ＴＳパケットであるか否かを判定する（ステップＳ２３）。ステップＳ２３では、インデックス情報生成部４０２は、受信されたＴＴＳ／ＴＳパケットのヘッダに存在するランダムアクセスインジケータフラグ（random_access_indicator）が“１”であるか否かを判定する。
【００６２】
受信されたＴＴＳ／ＴＳパケットが、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＴＳ／ＴＳパケットであるならば、つまり、ランダムアクセス可能なビデオフレームを運ぶためのＴＴＳ／ＴＳパケット群内の先頭のＴＴＳ／ＴＳパケットであるならば（ステップ２３のＹＥＳ）、インデックス情報生成部４０２は、受信されたＴＴＳ／ＴＳパケットに対応するＰＥＳパケットのヘッダ内に存在するタイムスタンプ（ＰＴＳ）を取得するための処理を実行する（ステップＳ２４）。
【００６３】
ステップＳ２４では、インデックス情報生成部４０２は、受信されたＴＴＳ／ＴＳパケットのペイロードから、または受信されたＴＴＳ／ＴＳパケットと同一のＰＩＤを有する他の受信されたＴＴＳ／ＴＳパケットのペイロードから、ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプ（ＰＴＳ）を取得する。
【００６４】
あるいは、インデックス情報生成部４０２は、受信されたＴＴＳ／ＴＳパケットと、この受信されたＴＴＳ／ＴＳパケットと同一のＰＩＤを有する他の受信された全てのＴＴＳ／ＴＳパケットとを用いて、ＰＥＳパケットを組み立て、このＰＥＳパケットのヘッダからタイムスタンプ（ＰＴＳ）を取得してもよい。もちろん、必ずしもＰＥＳパケット全体を組み立てる必要は無い。データソース３０１は、受信されたＴＴＳ／ＴＳパケットと、この受信されたＴＴＳ／ＴＳパケットと同一のＰＩＤを有する他の受信された１以上のＴＴＳ／ＴＳパケットとを用いて、ＰＥＳパケットのヘッダを組み立ててもよい。
【００６５】
インデックス情報生成部４０２は、ランダムアクセスインジケータフラグ（random_access_indicator）が設定されたＴＴＳ／ＴＳパケットが格納されるバッファ４０１内のオフセットと、上述のＰＴＳとのペアを、インデックス情報として生成し、このインデックス情報をインデックス情報記憶部４０４に格納する（ステップＳ２５）。
【００６６】
インデックス情報生成部４０２は、サーバ２１から取得された全てのＴＴＳ／ＴＳパケットに対する解析処理が完了したか否かを判定する（ステップＳ２６）。取得された全てのＴＴＳ／ＴＳパケットに対する解析処理が完了するまで、ステップＳ２２〜Ｓ２７の解析処理が繰り返し実行される。
【００６７】
取得された全てのＴＴＳ／ＴＳパケットに対する解析処理が完了すると（ステップＳ２６のＹＥＳ）、データソース３０１は、コンテンツデータの受信が完了したか否かを判定する（ステップＳ２８）。コンテンツデータの受信が完了するまで、ステップＳ２１〜Ｓ２９の受信処理が繰り返し実行される。コンテンツデータの受信が完了すると（ステップＳ２８のＹＥＳ）、バッファリング処理が終了される（ステップＳ３０）。
【００６８】
次に、図１２のフローチャートを参照して、再生位置変更処理（シーク）について説明する。
【００６９】
例えばユーザによるスライダ３５の移動操作によって、再生位置が現在再生位置と異なる位置（変更先再生位置）に変更された場合、以下のシーク制御動作が実行される。
【００７０】
すなわち、再生制御部３０６は、再生位置を変更先再生位置に変更すべきことをデマルチプレクサ３０２に要求する（ステップＳ４１）。デマルチプレクサ３０２は、再生制御部３０６の制御の下、変更先再生位置に対応するデータ部をデータソース３０１に要求する。変更先再生位置は、変更先再生位置に対応する提示時刻（シーク先時刻）を示す。このシーク先時刻は、コンテンツデータの先頭位置からその変更先再生位置までの再生時間を示す。シーク先時刻の精度は例えばミリ秒単位で再生位置が指定できるような精度であればよい。一方、ＰＴＳによって示される提示時刻の精度は１／９０ＫＨｚであり、シーク先時刻の精度よりも高精度である。このため、データソース３０１の制御部４０３は、シーク先時刻をＰＴＳの精度に変換する処理（スケーリング処理）を実行する。またPTSはコンテンツの先頭が０とは限らないため、オフセット値を算出しPTSから減算する。オフセット値としては、コンテンツ先頭のPESパケットに設定されたPTSでもよいし、ビデオもしくはオーディオの先頭PESパケットのPTSを用いても良い。（ステップＳ４２）。
【００７１】
そして、データソース３０１の制御部４０３は、インデックス情報を参照して、変換されたシーク先時刻に対応するデータ部（変更先再生位置に対応する第１データ部）がバッファ４０１上に存在するか否かを判定する（ステップＳ４３、Ｓ４４）。変換されたシーク先時刻が、例えば、インデックス情報内に登録されている最小ＰＴＳから最大ＰＴＳまでの範囲内に属するならば、変換されたシーク先時刻に対応するデータ部（変更先再生位置に対応する第１データ部）がバッファ４０１上に存在すると判定される。
【００７２】
この判定結果に基づき、制御部４０３は、インデックス情報に基づいて、変更先再生位置に対応する第１データ部をバッファ４０１からデマルチプレクサ３０２に転送する処理、または第１データ部をサーバ２１からから受信する処理のいずれかを実行する。
【００７３】
より詳しくは、変換されたシーク先時刻に対応するデータ部（変更先再生位置に対応する第１データ部）がバッファ４０１上に存在するならば、制御部４０３は、変更先再生位置に対応する第１データ部をバッファ４０１から取得し、その取得した第１データ部をデマルチプレクサ３０２に送る（ステップＳ４７）。上述の図８および図９の例においては、たとえば、変換されたシーク先時刻が、ＰＴＳ＝１０００００からＰＴＳ＝２５００００までの範囲内に属するならば、変更先再生位置に対応する第１データ部（変更先再生位置に対応する、ランダムアクセス可能なビデオフレーム）がバッファ４０１上に存在すると判定される。もし、変換されたシーク先時刻がＰＴＳ＝１０００００よりも大きく、且つＰＴＳ＝２５００００未満であれば、例えば、変換されたシーク先時刻の直後のランダムアクセスポイント（ＰＴＳ＝２５００００）がシーク先位置として決定される。換言すれば、オフセット値＝１８０００バイトに対応する格納位置に格納されたデータ部が、変更先再生位置に対応する第１データ部として決定される。そして、そのデータ部がバッファ４０１からリードされ、そのデータ部がデマルチプレクサ３０２に転送される。
【００７４】
一方、変換されたシーク先時刻に対応するデータ部（変更先再生位置に対応する第１データ部）がバッファ４０１上に存在しないならば、データソース３０１の制御部４０３は、第１データ部および第１データ部に後続するデータ部それぞれをサーバ２１に要求し（ステップＳ４５）、そしてサーバ２１から第１データ部および第１データ部に後続するデータ部それぞれを受信する。データソース３０１の制御部４０３は、バッファ４０１に所定データ量のデータが蓄積されるのを待つ（ステップＳ４６）。この待ち時間の間、コンテンツデータの再生は一時停止される。また、このデータ受信処理中においては、データソース３０１は、上述のインデックス生成処理も実行する。
【００７５】
バッファ４０１に所定データ量のデータが蓄積された後、データソース３０１は、データソース３０１は、変更先再生位置に対応する第１データ部をバッファ４０１から取得し、その取得した第１データ部をデマルチプレクサ３０２に送る（ステップＳ４７）。
【００７６】
以上説明したように、本実施形態によれば、受信されたパケットが、ランダムアクセス可能なビデオフレームを運ぶためのパケット群内の先頭のパケットであることを示すランダムアクセスインジケータフラグが設定された第１パケットであるか否かが判定される。受信されたパケットが第１パケットである場合、第１パケットから、または第１パケットと同一のパケット識別子を有する他の受信されたパケットから、ランダムアクセス可能なビデオフレームの提示時刻を示すタイムスタンプ（ＰＴＳ）が取得される。そして、取得された提示時刻と、第１パケットが格納されるバッファ４０１内の位置とを示すインデックス情報を生成される。このインデックス情報に基づき、変更先再生位置に対応するデータ部がバッファ４０１上に存在するか否かを判定することができる。
【００７７】
よって、インデックス情報を含まないコンテンツデータをストリーミング再生する場合であっても、そのコンテンツデータを受信しながら、そのコンテンツデータに対応するインデックス情報を生成することができる。したがって、コンテンツデータの現在再生位置を別の再生位置に変更するためのシーク処理をこのインデックス情報に基づいて実行することができる。これにより、シーク処理のレスポンスを向上することができる。
【００７８】
なお、図１０〜図１２のフローチャートで説明した本実施形態の処理手順は全てソフトウェアによって実行することができる。このため、この処理手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【００７９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８０】
１０…コンピュータ、２１…コンテンツサーバ、２０２…プレーヤアプリケーションプログラム、３０１…データソース、３０２…デマルチプレクサ、３０３…ビデオデコーダ、３０４…オーディオデコーダ、３０５…レンダラ、３０６…再生制御部、４０１…バッファ、４０２…インデックス情報生成部、４０３…制御部。
【図１】
2013078022.tif 000003
【図２】
2013078022.tif 000004
【図３】
2013078022.tif 000005
【図４】
2013078022.tif 000006
【図５】
2013078022.tif 000007
【図６】
2013078022.tif 000008
【図７】
2013078022.tif 000009
【図８】
2013078022.tif 000010
【図９】
2013078022.tif 000011
【図１０】
2013078022.tif 000012
【図１１】
2013078022.tif 000013
【図１２】
2013078022.tif 000014