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