(57)【特許請求の範囲】
【請求項１】
ネットワークを介して送信されてくるストリーミングデータを再生するとともに、指定された位置からのジャンプ再生が可能なコンテンツ再生装置において、
ストリーミングデータを取得するデータ取得部と、
前記データ取得部により取得された前記ストリーミングデータを一時的に蓄積するためのバッファと、
前記バッファに蓄積された前記ストリーミングデータを読み出し再生する再生部と、
前記バッファの監視、並びに前記データ取得部及び前記再生部の制御を行う制御部とを有し、
前記バッファは、前記データ取得部が今から再生するストリーミングデータを蓄積するための通常再生用領域と、前記データ取得部がジャンプ先のデータを蓄積する前記通常再生用領域より小さい事前取得用領域を備え、
ジャンプ再生時に前記事前取得用領域に前記ジャンプ先のデータが蓄積されているときに、
前記データ取得部は、前記事前取得用領域に蓄積された前記ジャンプ先の続きのデータを前記通常再生用領域に蓄積し、
前記再生部は、前記事前取得用領域に蓄積された前記ジャンプ先のデータからジャンプ再生を開始し、前記事前取得用領域に蓄積された前記ジャンプ先のデータを全て再生したあとに前記通常再生用領域に蓄積された前記続きのデータを読み出し再生を継続し、
前記バッファは、前記バッファの過去の蓄積量に応じて、前記通常再生用領域と前記事前取得用領域のサイズを変更する
ことを特徴とするコンテンツ再生装置。
【請求項２】
ジャンプ再生時に前記事前取得用領域に前記ジャンプ先のデータが蓄積されているときに、
前記制御部は、前記事前取得用領域に蓄積された前記ジャンプ先のデータを前記通常再生用領域にコピーし、
前記データ取得部は、コピーされた前記ジャンプ先のデータの続きのデータを前記通常再生用領域の続きの領域に蓄積し、
前記再生部は、前記通常再生用領域にコピーされたデータからジャンプ再生を開始することを特徴とする
請求項１記載のコンテンツ再生装置。
【請求項３】
前記データ取得部は、ジャンプ先が複数存在する場合、所定の順番で前記ジャンプ先のデータを受信して前記バッファに蓄積することを特徴とする
請求項１又は２に記載のコンテンツ再生装置。
【請求項４】
前記データ取得部は、ジャンプ先が複数存在する場合、前記複数のジャンプ先のうちの所定のジャンプ先のデータについてのみ前記バッファに蓄積することを特徴とする
請求項１から３のいずれかに記載のコンテンツ再生装置。
【請求項５】
前記所定のジャンプ先が、前記ストリーミングデータの再生位置に応じたジャンプ先であることを特徴とする
請求項４に記載のコンテンツ再生装置。
【請求項６】
前記再生部は、
前記バッファから読み出した前記ストリーミングデータに多重化された復号対象データを抽出するデマルチプレクサと、
前記デマルチプレクサが抽出した前記復号対象データを一時的に蓄積する復号用バッファと、
前記復号用バッファに蓄積された前記復号対象データを復号する復号部を備え、
前記復号部は、ジャンプ再生時に、ジャンプ再生指示後に前記復号用バッファに蓄積された前記復号対象データから復号を開始することを特徴とする、
請求項１から５のいずれかに記載のコンテンツ再生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ配信装置からストリーミングデータを受信し、再生するコンテンツ再生装置及び方法に関する。
【背景技術】
【０００２】
ネットワークを介してコンテンツ配信装置とコンテンツ再生装置を接続し、コンテンツ配信装置がコンテンツ再生装置から要求されたストリーミングデータをコンテンツ再生装置に対して送信し、コンテンツ再生装置が受信したストリーミングデータを再生するストリーミングサービスがすでに存在する。
【０００３】
チャプタ情報をもつストリーミングデータに対しては、再生位置をジャンプ先（各チャプタの開始点）に変更するジャンプ再生が可能である。チャプタ情報にはジャンプ先などの情報が記載されており、コンテンツ再生装置はジャンプ先からのデータをコンテンツ配信装置に要求し、その要求に応じてコンテンツ配信装置から送られてきたデータを再生することにより、再生位置をジャンプ先に変更することができる。
【０００４】
従来のジャンプ再生では、ユーザがコンテンツ再生装置にジャンプ再生を要求すると、コンテンツ再生装置はコンテンツ配信装置に対してジャンプ先のデータを要求し、コンテンツ配信装置から送信されるジャンプ先のデータを所定量蓄積した後、再生を開始する。このデータ蓄積の間は再生停止状態となるため、ユーザ要求に対する応答性が悪くユーザに不快感を与える原因となっていた。
【０００５】
この問題の改善策として特許文献１に開示された再生装置では、複数のバッファを有し、ジャンプ再生時に指定される可能性のあるジャンプ先のデータをその複数のバッファに予めバッファリングする。ジャンプ再生の要求を受けると、該当するジャンプ先のデータを蓄積したバッファを用いてストリーミング再生を行うことにより、ジャンプ先からの再生を遅滞なく開始することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第０７／１４８７７７号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の構成においては、予めバッファリングするジャンプ先の数だけ同サイズのバッファが必要となる。例えば、２個のジャンプ先のデータを予めバッファリングする場合には、特許文献１の手法を適用しない場合に比べて３倍ものバッファ容量が必要となる。一般に組み込みシステムではメモリ容量の制約が大きいことが多いにも拘わらず、特許文献１の手法は潤沢なメモリを備えないシステムに対しては適用することができない。
【課題を解決するための手段】
【０００８】
本発明のコンテンツ再生装置は、
ネットワークを介して送信されてくるストリーミングデータを再生するとともに、指定された位置からのジャンプ再生が可能なコンテンツ再生装置において、
ストリーミングデータを取得するデータ取得部と、
前記データ取得部により取得された前記ストリーミングデータを一時的に蓄積するためのバッファと、
前記バッファに蓄積された前記ストリーミングデータを読み出し再生する再生部と、
前記バッファの監視、並びに前記データ取得部及び前記再生部の制御を行う制御部とを有し、
前記バッファは、前記データ取得部が今から再生するストリーミングデータを蓄積するための通常再生用領域と、前記データ取得部がジャンプ先のデータを蓄積する前記通常再生用領域より小さい事前取得用領域を備え、
ジャンプ再生時に前記事前取得用領域に前記ジャンプ先のデータが蓄積されているときに、
前記データ取得部は、前記事前取得用領域に蓄積された前記ジャンプ先の続きのデータを前記通常再生用領域に蓄積し、
前記再生部は、前記事前取得用領域に蓄積された前記ジャンプ先のデータからジャンプ再生を開始し、前記事前取得用領域に蓄積された前記ジャンプ先のデータを全て再生したあとに前記通常再生用領域に蓄積された前記続きのデータを読み出し再生を継続し、
前記バッファは、前記バッファの過去の蓄積量に応じて、前記通常再生用領域と前記事前取得用領域のサイズを変更することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、潤沢なメモリを備えないシステムに対しても、ジャンプ先からの再生に要する時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１のコンテンツ再生装置のブロック図である。
【図２】（Ａ）及び（Ｂ）は、特許文献１と本発明のバッファ構成を示す図である。
【図３】（Ａ）及び（Ｂ）は、リングバッファの構成を示す図である。
【図４】実施の形態１における通常再生時のバッファリング手順を示すフロー図である。
【図５】実施の形態１におけるバッファ蓄積量の変化を示すグラフである。
【図６】実施の形態１における通常再生時のバッファからの読み出し手順を示すフロー図である。
【図７】実施の形態１におけるジャンプ再生時のバッファリング手順を示すフロー図である。
【図８】実施の形態１におけるジャンプ再生時のバッファからの読み出し手順を示すフロー図である。
【図９】（Ａ）〜（Ｃ）は、実施の形態１におけるジャンプ再生時のバッファの状態を示す図である。
【図１０】本発明の実施の形態２における前ジャンプ先、次ジャンプ先の定義を示す図である。
【図１１】実施の形態２における通常再生時のバッファリング手順を示すフロー図である。
【図１２】実施の形態２におけるバッファの役割の変化を示す図である。
【図１３】実施の形態２におけるバッファの役割を割り当てる手順を示すフロー図である。
【図１４】（ａ）及び（ｂ）は、本発明の実施の形態３における通常再生用領域のバッファ蓄積量の変化例を示す図である。
【図１５】実施の形態３における通常再生用領域のバッファ情報の更新手順を示すフロー図である。
【図１６】実施の形態３における通常再生用領域のバッファ情報と通常再生用領域のサイズとの関連を示す図である。
【図１７】（Ａ）〜（Ｃ）は、実施の形態３におけるバッファ領域の配置例を示す図である。
【図１８】本発明の実施の形態４における再生部を示すブロック図である。
【図１９】（Ａ）〜（Ｃ）は、従来手法に係るジャンプ再生時の復号用バッファの状態を示す図である。
【図２０】（Ａ）〜（Ｄ）は、実施の形態３に係るジャンプ再生時の復号用バッファの状態を示す図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
実施の形態１では、事前取得用領域の個数Ｎが、コンテンツのチャプタ数Ｌと同数以上である場合について記述する。
【００１２】
図１は、本発明の実施の形態１のコンテンツ再生装置の構成を示すブロック図である。図示のコンテンツ再生装置３は、データ取得部２１と、制御部２２と、バッファ２３と、再生部２４を備える。
【００１３】
バッファ２３は再生開始前にコンテンツのチャプタ数Ｌに応じて、通常再生用領域３１と、複数の事前取得用領域３２−１〜３２−Ｎに分割される。以下では、事前取得用領域３２−１〜３２−Ｎを互いに区別する必要がないときは単に事前取得用領域３２と記述することがある。また、第Ｉ（Ｉ＝１〜Ｎ）の事前取得用領域を３２−Ｉで表す。
事前取得用領域３２−１〜３２−Ｎの各々の大きさは、コンテンツ再生装置３が再生開始までに蓄積するデータ量と同程度であり、通常再生用領域３１より小さい。
【００１４】
事前にデータを取得するジャンプ先の数を２つとした場合の、特許文献１と本発明のバッファ構成の違いを図２（Ａ）及び（Ｂ）に示す。特許文献１の再生装置では、図２（Ａ）に示すように、ジャンプ再生後もジャンプ先のデータを蓄積していたバッファＢＦ１〜ＢＦ３を用いてストリーミング再生を継続するため、ストリーミング再生に必要なサイズのバッファがさらに２つ必要になるが、本発明においては、図２（Ｂ）に示すように、ジャンプ先のデータのうち一定量のみを事前取得用領域３２−１及び３２−２に蓄積し、その後のストリーミング再生は通常再生用領域３１を用いて行うので、新たに必要となる２つのバッファのサイズはストリーミング再生に必要なサイズに比べてはるかに小さいものでよい。
【００１５】
チャプタを含まないコンテンツの場合は、事前取得用領域３２のサイズは０としてもよい。この場合バッファ２３全てが通常再生用領域３１として使われる。
【００１６】
データ取得部２１は、ＩＰネットワーク２を介してコンテンツ配信装置１に接続されており、コンテンツ配信装置１からストリーミングデータを取得し、バッファ２３に一時的に蓄積する。
再生部２４は、バッファ２３に蓄積されたストリーミングデータを読み出し、再生する。再生されたストリーミングデータは映像・音声として外部に出力される。
データ取得部２１が取得するストリーミングデータ、および取得したデータを書き込むバッファ２３中の領域は、制御部２２によって指定される。また、再生部２４がストリーミングデータを読み出すバッファ２３中の領域も、制御部２２によって指定される。
【００１７】
コンテンツ再生装置３は、コンテンツの再生を開始すると、バッファ２３の通常再生用領域３１にストリーミングデータをバッファリングし、コンテンツの再生を行う。バッファリング方法の一例としては、直線状のバッファの両端を論理的に繋ぎ、バッファを輪のように扱う方法（リングバッファ）がある。この方法では、バッファの終端までデータの書き込みまたは読み出しを行うと、バッファの先頭から続けてデータの書き込みまたは読み出しを行う。以下の実施の形態では、通常再生用領域３１には、リングバッファ（循環バッファ）を用い、
事前取得用領域３２には非循環バッファを用いる。
【００１８】
図３（Ａ）及び（Ｂ）は、バッファの構造を表した図である。バッファは先頭アドレスＭｉｎＰから終端アドレスＭａｘＰまでの領域から成り、データ取得部２１がストリーミングデータを書き込んだ最新の領域を書き込みポインタＷＰとして保持し、再生部２４がストリーミングデータを読み出した最新の領域を読み出しポインタＲＰとして保持する。
【００１９】
書き込みポインタＷＰと読み出しポインタＲＰは、最初はともに先頭アドレスＭｉｎＰを指し、データ取得部２１がストリーミングデータを書き込むことにより書き込みポインタＷＰが更新される。また、再生部２４がストリーミングデータを読み出すことにより読み出しポインタＲＰが更新される。
【００２０】
書き込みポインタＷＰは読み出しポインタＲＰを追い越すことはできない。書き込みポインタＷＰが読み出しポインタＲＰに追いついた場合には、読み出しポインタＲＰが更新されるまでデータ取得部２１はストリーミングデータの書き込みを行わない。この状態をバッファフルと呼ぶ。
【００２１】
また、読み出しポインタＲＰも書き込みポインタＷＰを追い越すことはできない。読み出しポインタＲＰが書き込みポインタＷＰに追いついた場合には、書き込みポインタＷＰが更新されるまで再生部２４はストリーミングデータの読み出しを行わない。これは、バッファアンダーフローの状態である。
【００２２】
終端アドレスＭａｘＰまで書き込みまたは読み出しを行うと、書き込みポインタＷＰまたは読み出しポインタＲＰの値は先頭アドレスＭｉｎＰに戻る。
【００２３】
バッファ蓄積量は、読み出しポインタＲＰから書き込みポインタＷＰまでの領域の大きさから求めることができる。例えば図３（Ａ）のように書き込みポインタＷＰ（１）が読み出しポインタＲＰ（１）より大きい場合には、バッファ蓄積量はその差（ＷＰ（１）−ＲＰ（１））から求めることができる。また、図３（Ｂ）のように読み出しポインタＲＰ（２）が書き込みポインタＷＰ（２）より大きい場合には、バッファ蓄積量は
（ＭａｘＰ−ＲＰ（２））＋（ＷＰ（２）−ＭｉｎＰ）
から求めることができる。
【００２４】
バッファ２３においては、通常再生用領域３１には、書き込みポインタＷＰと読み出しポインタＲＰを保持する。一方、事前取得用領域３２には、書き込みポインタＷＰのみを保持する。これらにより、各領域のバッファ蓄積量を求めることが可能である。
【００２５】
ただし、事前指定用領域のバッファ蓄積量は書き込みポインタＷＰの値のみから求める。図３（Ａ）の場合は書き込みポインタＷＰ（１）の値のみを用いてバッファ蓄積量を求める。つまりＷＰ（１）−ＭｉｎＰとなる。これは、リングバッファとして扱うのは通常再生用領域のみで、事前取得用領域はリングバッファとして扱わないからである。
また、バッファ蓄積率は、バッファ蓄積量をその領域のサイズで除算することで算出できる。
【００２６】
本実施の形態におけるコンテンツ再生装置３の、通常再生時のバッファリング手順の一例を、図４を参照して説明する。以下では、事前取得用領域３２の数Ｎが、チャプタの数Ｌに等しく（Ｌ＝Ｎ）、第１〜第Ｎの事前取得用領域３２−１〜３２−Ｎが、それぞれ第１〜第Ｎのチャプタに対応して設けられているものとして説明する。
【００２７】
バッファリング開始（ステップＳ１０）後、まずデータ取得部２１は、通常再生用領域３１のバッファ蓄積量が所定量ＴＨａ１以上になるまで通常再生用領域３１に通常再生用のデータを蓄積する（ステップＳ１１、Ｓ１２）。
【００２８】
ここで、通常再生用のデータとは、今から再生しようとしている、もしくは再生中のストリーミングデータのことである。
【００２９】
通常再生用領域３１のバッファ蓄積量が所定量ＴＨａ１以上になったら、第１乃至第Ｎのチャプタのデータをジャンプ先ＤＩ（Ｉ＝１〜Ｎ）のデータとして、第１乃至第Ｎの事前取得用領域３２−１〜３２−Ｎに順次データを蓄積する処理（ステップＳ１３）を行う。この処理においては、事前取得用領域３２−ＩのパラメータＩを１からＮまで順に変化させながら（ステップＳ１３Ａ、Ｓ１３Ｅ）、事前取得用領域３２−Ｉにデータを所定量ＴＨｂ−Ｉまで蓄積する（ステップＳ１３Ｄ）。
【００３０】
また、この処理を行っている最中にも、通常再生用領域３１のバッファ蓄積量が所定量ＴＨａ２以上（ＴＨａ２＜ＴＨａ１）かどうかのチェックを行い（ステップＳ１４）、所定量ＴＨａ２未満であれば、ステップＳ１１に戻り、通常再生用領域３１へのデータの蓄積を行う（ステップＳ１１、Ｓ１２）。
【００３１】
事前取得用領域３２−１〜３２−Ｎにデータを蓄積する処理（Ｓ１３）においては、最初にステップＳ１３ＡでパラメータＩを１に設定し、次にステップＳ１３Ｂに進む。ステップＳ１３Ｂでは、第Ｉのジャンプ先ＤＩ（最初はＩ＝１）のデータを格納した事前取得用領域３２−Ｉ（３２−１）のバッファ蓄積量が所定量ＴＨｂ−Ｉ（ＴＨｂ−１）以上であるかどうかの判定を行う（ステップＳ１３Ｂ：Ｉ＝１）。
【００３２】
ここで第Ｉのジャンプ先ＤＩのデータとは、先頭からＩ番目のチャプタから始まるストリーミングデータを指す。
所定量ＴＨｂ−Ｉ未満である場合には（ステップＳ１３ＢでＮｏ）、コンテンツにジャンプ先ＤＩ（Ｄ１）のデータがあるかどうかの判定を行い（ステップＳ１３Ｃ）、データがあれば（ステップＳ１３ＣでＹｅｓ）ステップＳ１３Ｄに進む。
【００３３】
ステップＳ１３Ｄでは、ジャンプ先ＤＩ(Ｄ１）のデータを事前取得用領域３２−Ｉ（３２−１）に一定量蓄積する（ステップＳ１３Ｄ：Ｉ＝１）。
その後、ステップＳ１４に進む。
ステップＳ１３Ｃでデータがなければ（ステップＳ１３ＣでＮｏ）、直ちにステップＳ１４に進む。
【００３４】
ステップＳ１４では、通常再生用領域３１のバッファ蓄積量が所定量ＴＨａ２以上であるかを判定し、所定量ＴＨａ２未満であった場合（ステップＳ１４でＮｏ）にはステップＳ１１に戻る。
【００３５】
所定量ＴＨａ２以上であった場合（ステップＳ１４でＹｅｓ）には、再びステップＳ１３Ｂに進み、事前取得用領域３２−Ｉ（３２−１）のバッファ蓄積量が所定量ＴＨｂ−Ｉ（ＴＨｂ−１）以上であるかどうかの判定を行う（ステップＳ１３Ｂ：Ｉ＝１）。
【００３６】
事前取得用領域３２−Ｉ（３２−１）のバッファ蓄積量が所定量ＴＨｂ-Ｉ以上である場合（ステップＳ１３ＢでＹｅｓ）には、ステップＳ１３ＥでパラメータＩに１を加え（この場合、Ｉ＝１に１を加えることでＩ＝２となる）、新たなパラメータＩがＮを超えていないかどうかの判定を行い（ステップＳ１３Ｆ）、Ｎを超えていなければステップＳ１３Ｃに進み、コンテンツにジャンプ先ＤＩ（Ｄ２）のデータがあることを確認した上で（ステップＳ１３ＣでＹｅｓ）、事前取得用領域３２−Ｉ（３２−２）に第Ｉのジャンプ先ＤＩ（Ｄ２）のデータを一定量蓄積し（ステップＳ１３Ｄ）、その後ステップＳ１４の処理を行い、ステップＳ１１又はステップＳ１３Ｂに進む。
【００３７】
ステップＳ１３Ｂでは、ジャンプ先ＤＩ（Ｄ２）のデータを格納した事前取得用領域３２−Ｉのバッファ蓄積量が所定量ＴＨｂ−Ｉ（Ｔｈｂ−２）以上であるかどうかを判定する（ステップＳ１３Ｂ：Ｉ＝２）。所定量ＴＨｂ−Ｉ未満であれば、ステップＳ１３Ｃに進み、コンテンツに第Ｉのジャンプ先ＤＩ（Ｄ２）のデータがあることを確認した上で（ステップＳ１３ＣでＹｅｓ）、ステップＳ１３Ｄに進み、ジャンプ先ＤＩ（Ｄ２）のデータを事前取得用領域３２−２に一定量蓄積し（ステップＳ１３Ｄ：Ｉ＝２）、ステップＳ１４にうつる。
【００３８】
以下、第Ｎの事前取得用領域３２−Ｎまで（Ｎ番目のチャプタまで）同様の処理を行い、事前取得用領域３２−１〜３２−Ｎのすべてについてバッファ蓄積量がＴＨｂ−Ｉ以上となったら、ステップＳ１３Ｇに進み、所定量ＴＨｂ−Ｉ（Ｉ＝１…Ｎ）を調整し（一般には増加させ、又は同じ値に維持し）、ステップＳ１１に戻る。
【００３９】
例えば、コンテンツ再生開始時は所定量ＴＨｂ−Ｉを低めに設定しておき、ステップＳ１３Ｇにくるたびに高くしていくようにすれば、全ての事前取得用領域を常に同程度のバッファ蓄積量とすることができる。逆に所定量ＴＨｂ−Ｉを最初から高めに設定しておけば、特定の事前取得用領域のバッファ蓄積量をより早く１００％にすることができる。
【００４０】
図４のフローチャートを実施したときの、各領域のバッファ蓄積量の変化を模式的に表したのが図５である。なお図５では、ＴＨｂ−Ｉ（Ｉ＝１〜Ｎ）の値は全て同じであるとしている。
【００４１】
通常再生用領域３１のバッファ蓄積量はステップＳ１１により増加する（ｔ０〜ｔ１、ｔ２〜ｔ３、ｔ５〜ｔ６）。バッファ蓄積量がＴＨａ１以上となったら、バッファ蓄積量がＴＨａ２未満となるまで通常再生用領域３１への蓄積を休止するためバッファ蓄積量は減少する（ｔ１〜ｔ２、ｔ３〜ｔ５、ｔ７〜ｔ８）。通常再生用領域３１への蓄積を休止している間に、事前取得用領域３２への蓄積が行われる。
【００４２】
通常再生用領域３１への蓄積を休止している間、まず事前取得用領域３２−１に対してジャンプ先ＤＩ（Ｉ＝１、２、…）のデータの蓄積が行われる（ｔ１〜ｔ２、ｔ３〜ｔ４、ｔ４〜ｔ５、ｔ６〜ｔ７、ｔ７〜ｔ８）。最初は、ジャンプ先Ｄ１のデータの蓄積が行われる（ｔ１〜ｔ２、ｔ３〜ｔ４）事前取得用領域３２はジャンプ再生を行わない限り再生には使われないので、バッファ蓄積量は減少しない。事前取得用領域３２−１のバッファ蓄積量が指定量ＴＨｂより大きくなると、引き続き事前取得用領域３２−２に対してジャンプ先Ｄ２のデータの蓄積を開始する（ｔ４〜）。
同様にして事前取得用領域３２−Ｎまで、順にジャンプ先データを蓄積していく。
【００４３】
図５に示す例では、時刻ｔ１以降にジャンプ先Ｄ１を指定された場合には、ジャンプ先Ｄ１の再生開始時に必要なデータ蓄積量のうち一定量が事前に（そのときまでに）取得されているため、ジャンプ先データの再生開始までのデータ蓄積の時間を短くすることができる。特に、事前取得用領域３２−１のバッファ蓄積率が１００％であるとき（蓄積量が当該事前取得用領域のバッファ容量に達している場合）には、ジャンプ再生開始までの蓄積待ち時間は０であり、ジャンプ先Ｄ１へのジャンプ再生にかかる時間を最も短縮できる。このように、優先的に蓄積されるジャンプ先ほど、ジャンプ先のデータが早い段階で蓄積される可能性が高くなり、ジャンプ再生時にかかる時間を短縮できる可能性が高くなる。
【００４４】
次に、本実施の形態におけるコンテンツ再生装置３の、通常再生時のバッファ２３からの読み出し手順の一例を、図６を参照して説明する。
【００４５】
通常再生が指示されると（ステップＳ２０）、再生部２４は通常再生用領域３１のバッファ蓄積量を確認する(ステップＳ２１）。バッファ蓄積量がＴＨａ３（≦ＴＨａ２）以上の場合には（ステップＳ２１でＹｅｓ）、データの読み出しを開始する（ステップＳ２２）。バッファ蓄積量が所定量ＴＨａ４（≦ＴＨａ３）以上である場合は読み出しを継続し、ＴＨａ４を下回った場合はステップＳ２１に戻る（ステップＳ２３）。
【００４６】
次に、本実施の形態におけるコンテンツ再生装置３の、ジャンプ操作時のバッファリング手順の一例を、図７を参照して説明する。
【００４７】
なお、図７及び以下の説明では、指定されたジャンプ先を符号ＤＪで表し、ジャンプ先ＤＪのデータを蓄積している事前取得用領域を符号３２−Ｊで表す。
【００４８】
ジャンプ再生が指示されると（ステップＳ３０）、制御部２２は、事前取得用領域３２−Ｊのバッファ蓄積量を確認する（ステップＳ３１）。
【００４９】
ステップＳ３１で、事前取得用領域３２−Ｊにジャンプ先ＤＪのデータが蓄積されている場合には、制御部２２は、事前取得用領域３２−Ｊに蓄積されたデータを通常再生用領域３１の先頭にコピーする（ステップＳ３２）。続いて通常再生用領域の読み出しポインタＲＰを初期値に、書き込みポインタＷＰを初期値からコピーしたサイズ分進めた値に設定し（ステップＳ３３）、その後ステップＳ３５に進む。
【００５０】
ステップＳ３１で、事前取得用領域３２−Ｊが存在しない、もしくは事前取得用領域３２−Ｊにデータが全く蓄積されていない場合には、通常再生用領域の書き込みポインタＷＰ、読み出しポインタＲＰの初期化（ステップＳ３４）を行い、その後、ステップＳ３５に進む。
【００５１】
ステップＳ３５では、コピー済みフラグＦＣのセットを行い、通常再生用領域３１にジャンプ先ＤＪのデータの蓄積を開始し、
それ以降は図４に示した通常再生時のバッファリング手順と同様にバッファリングを行う（ステップＳ３６）。
【００５２】
次に、本実施の形態におけるコンテンツ再生装置３の、ジャンプ操作時のバッファ２３からの読み出し手順の一例を、図８を参照して説明する。
【００５３】
ジャンプ再生が指示されると（ステップＳ４０）、コピー済みフラグＦＣがセットされるまで待ち（ステップＳ４１）、コピー済みフラグＦＣセット後は、図６に示した通常再生時の読み出しシーケンスに従い通常再生用領域先頭から読み出しを行う（ステップＳ４２）。このとき、事前取得用領域３２−Ｊのバッファ蓄積率が大きいほど、再生開始までのデータ蓄積待ち時間を短くすることができる。
【００５４】
ジャンプ再生時のバッファ２３の状態を図９（Ａ）〜（Ｃ）に示す。
図９（Ａ）はジャンプ再生前の状態の一例を示す。通常再生用領域３１には通常再生用のデータを、事前取得用領域３２−Ｊにはジャンプ先ＤＪのデータを蓄積している。
【００５５】
図９（Ｂ）はジャンプ先ＤＪへのジャンプ再生を指示された直後の状態である。事前取得用領域３２−Ｊに蓄積していたデータを通常再生用領域３１にコピーしている。通常再生用領域３１の読み出しポインタＲＰａは初期化され、書き込みポインタＷＰａはコピーしたデータ分だけ進めた値に設定される。事前取得用領域３２−Ｊのバッファ蓄積量はそのままであるので、書き込みポインタＷＰｂも変化しない。
【００５６】
図９（Ｃ）はジャンプ再生のための処理を行った状態である。データ取得部２１は、通常再生用領域３１に対して、事前取得用領域３２−Ｊからコピーしたデータの続きからデータの蓄積を継続する。再生部２４は、通常再生用領域３１の先頭からデータを読み出すことによりジャンプ先からの再生を行う。事前取得用領域３２−Ｊには、ジャンプ再生前に蓄積していたデータの続きを、引き続き蓄積する。
【００５７】
ジャンプ再生が指示されたときに、事前取得用領域３２−Ｊのバッファ蓄積率が１００％であれば、再生開始までに蓄積するデータ量が蓄積済みであるので、ジャンプ先のデータの蓄積を待つことなく、ジャンプ再生を開始することができる。また、バッファ蓄積率が１００％でなかったとしても、事前にある程度蓄積しておくことで、ジャンプ再生までのデータ蓄積時間を短縮することができる。
【００５８】
以上のように実施の形態１によれば、ジャンプ操作が指示されたときに、事前取得用領域３２に蓄積されているデータを利用することにより、ジャンプ先のデータ蓄積にかかる時間を短縮できる。
【００５９】
なお、実施の形態１では、コンテンツの先頭のジャンプ先から順に事前取得用領域に蓄積したが、蓄積する順番を変えてもよい。例えば、現在の再生位置に近いジャンプ先から順にデータを蓄積してもよいし、過去のユーザ操作の傾向に応じて蓄積する順番を決定してもよい。こうすることにより、特定のジャンプ先に対してジャンプ再生にかかる時間を短縮できる可能性が高くなる。
【００６０】
また、実施の形態１では、バッファに蓄積するデータ量に対する閾値ＴＨｂ−Ｉは再生位置に応じて動的に変更してもよい。例えば、再生位置に近いジャンプ先ほど閾値ＴＨｂ−Ｉを高く設定してもよいし、過去のユーザ操作の傾向に応じて閾値ＴＨｂ−Ｉを設定してもよい。こうすることにより、特定のジャンプ先に対してジャンプ再生にかかる時間を短縮できる可能性が高くなる。
【００６１】
また、実施の形態１では、あるチャプタの先頭からのデータが通常再生用領域に一定量蓄積され、かつそのチャプタのデータを蓄積する事前取得用領域のバッファ蓄積率が１００％でない場合には、チャプタの先頭からのデータを通常再生用領域から該当する事前取得用領域へコピーしてもよい。こうすることにより、同じデータを２度取得することがなくなり、効率よくネットワークからデータを取得できる。
【００６２】
また、実施の形態１では、通常再生用領域にこれから蓄積する予定のデータがすでに事前取得用領域に蓄積済みであった場合に、該当するデータを事前取得用領域から通常再生用領域へコピーしてもよい。こうすることにより、同じデータを２度取得することがなくなり、効率よくネットワークからデータを取得できる。
【００６３】
さらに、実施の形態１では、ジャンプ再生時に事前取得用領域に蓄積したジャンプ先からのデータを通常再生用領域にコピーしたが、コピーせずに再生部２４が事前取得用領域から直接読み出してもよい。その場合、再生部２４はまず事前取得用領域に蓄積したデータを読み出し、事前取得用領域のデータを全て読み出した後、続きのデータを通常再生用領域から読み出すようにしてもよい。こうすることにより、処理は複雑化するが、バッファ間のコピーに要する時間を省略できるので、ジャンプ再生に要する時間をより短縮できる。
【００６４】
また、実施の形態１では、それぞれの事前取得用領域３２の大きさはコンテンツ再生装置３が再生開始までに蓄積するデータ量と同程度としたが、チャプタの数Ｌが多く十分な事前取得用領域を確保できない場合はこの限りではない。コンテンツ再生装置３が再生開始までに蓄積するデータ量より小さい事前取得用領域しか確保できない場合には、事前取得用領域のバッファ蓄積率が１００％である場合にも再生開始までにジャンプ先のデータをさらに蓄積する必要はあるが、本手法を適用しない場合と比較するとデータの蓄積にかかる時間を短縮することは可能である。
【００６５】
また、事前取得用領域の大きさは全て同じとしなくてもよい。例えば現在の再生位置に近いジャンプ先ほど領域を大きくとってもよいし、ユーザが頻繁に行う操作に応じて領域を決定してもよい。こうすることにより、チャプタの数Ｌが多く十分な領域を確保できない場合でも、特定の操作に対してはジャンプ再生にかかる時間を短くすることができる。
【００６６】
また、実施の形態１では、通常再生用領域３１のバッファ蓄積量が指定量ＴＨａ２以上の場合のみ事前取得用領域３２へのデータ蓄積を行っていたが、通常再生用領域３１へのデータ蓄積と事前取得用領域３２へのデータ蓄積を同時に行ってもよい。こうすることにより、１つのプロセス内でデータ取得先、バッファ書き込み領域、バッファ読み出し領域を頻繁に切り替える必要がなくなるため、処理を簡略化することができる。ただし、事前取得用領域３２へのデータ蓄積が通常再生用領域３１へのデータ蓄積の妨げとなり、通常再生用領域３１でバッファアンダーフローが発生することがないよう注意する必要がある。通常再生用領域３１へのデータ蓄積への影響を少なくする方法としては、事前取得用領域３２へのデータ蓄積を行う時間間隔を広くすることなどが挙げられる。
【００６７】
例えば、通常再生用領域３１へのデータ蓄積といずれかの事前取得用領域３２へのデータ蓄積を同時に行う場合を考える。コンテンツ再生装置３のネットワーク２からのデータ取得レートがＲａ（ｂｐｓ）、現在再生中のコンテンツの再生レートがＲｂ（ｂｐｓ）のときは、事前取得用領域３２に蓄積するためのデータ取得レートがＲａ−Ｒｂ（ｂｐｓ）を超えないよう、事前取得用領域３２に蓄積するためのデータの取得間隔を大きくする必要がある。
【００６８】
なおまた、実施の形態１では、ジャンプ再生のデータを事前取得の対象としていたが、それ以外のデータを対象としてもよい。例えば、特殊再生用のストリームや、現在再生中のコンテンツの次に再生する予定のコンテンツ、現在再生中のコンテンツに関連付けられたコンテンツなどを事前取得してもよい。
【００６９】
実施の形態２．
実施の形態２では、事前取得用領域３２の個数Ｎが、コンテンツのチャプタの数Ｌ以下である場合について記述する。
【００７０】
実施の形態２におけるコンテンツ再生装置の構成は、実施の形態１と同様である。ただし、チャプタの数だけ事前取得用領域３２を設けるのではなく、事前取得用領域３２の個数Ｎが、コンテンツのチャプタの数よりも少ない点が実施の形態１と異なる。
【００７１】
以下ではＮ＝２の場合について説明を行う。
本実施の形態においては、事前取得用領域３２−１、３２−２には、次ジャンプ先のデータと前ジャンプ先のデータを蓄積する。
【００７２】
ここで、次ジャンプ先とは現在の再生位置から見て次のチャプタのことである。また、前ジャンプ先とは現在の再生位置から見て前のチャプタのことである。図１０の例では次ジャンプ先がチャプタＰ＋１、前ジャンプ先がチャプタＰで表される。再生位置がチャプタＰ＋１の開始点を超えると、次ジャンプ先がチャプタＰ＋２、前ジャンプ先がチャプタＰ＋１となる。
【００７３】
以下では、事前取得用領域３２−１、３２−２のうち、次ジャンプ先データの蓄積に用いられているものを次ジャンプ先データ用領域３２−Ｎｅｘｔ、前ジャンプ先データの蓄積に用いられているものを前ジャンプ先データ用領域３２−Ｐｒｅｖと呼ぶ。
【００７４】
本実施の形態におけるコンテンツ再生装置３の、通常再生時のバッファ２３からの読み出し手順、ジャンプ操作時のバッファ２３からの読み出し手順、及びジャンプ操作時のバッファ２３からの読み出し手順は実施の形態１と同じである。
【００７５】
本実施の形態におけるコンテンツ再生装置３の、通常再生時のバッファリング手順の一例を、図１１を参照して説明する。
【００７６】
バッファリングが開始されると（ステップＳ５０）、まずデータ取得部２１は、通常再生用領域３１のバッファ蓄積量が所定量ＴＨａ１以上になるまで通常再生用領域３１に通常再生用のデータを蓄積する（ステップＳ５１、Ｓ５２）。
【００７７】
通常再生用領域３１のバッファ蓄積量がＴＨａ１以上の場合には、次ジャンプ先データ用領域３２−Ｎｅｘｔのバッファ蓄積量が所定量ＴＨｂ−Ｎｅｘｔ以上かどうかを判定する（ステップＳ５４）。所定量ＴＨｂ−Ｎｅｘｔ未満の場合には次ジャンプ先のデータを次ジャンプ先データ用領域３２−Ｎｅｘｔに一定量蓄積する（ステップＳ５５）。その後、通常再生用領域３１のバッファ蓄積量がＴＨａ２以上であるかを判定し（ステップＳ５３）、ＴＨａ２未満であった場合にはステップＳ５１にうつる。所定量ＴＨａ２以上であった場合には、再び次ジャンプ先データ用領域３２−Ｎｅｘｔのバッファ蓄積量が所定量ＴＨｂ−Ｎｅｘｔ以上かどうかを判定する（ステップＳ５４）。
【００７８】
次ジャンプ先データ用領域３２−Ｎｅｘｔのバッファ蓄積量が所定量ＴＨｂ-Ｎｅｘｔ以上の場合には、次にステップＳ５６に進み、前ジャンプ先データ用領域３２−Ｐｒｅｖのバッファ蓄積量が所定量ＴＨｂ−Ｐｒｅｖ以上かどうかを判定する。所定量ＴＨｂ−Ｐｒｅｖ未満の場合には前ジャンプ先のデータを前ジャンプ先データ用領域３２−Ｐｒｅｖに一定量蓄積し（ステップＳ５７）、ステップＳ５３にうつる。
【００７９】
ステップＳ５７で、前ジャンプ先データ用領域３２−Ｐｒｅｖのバッファ蓄積量が所定量ＴＨｂ−Ｐｒｅｖ以上の場合には、ステップＳ５８に進み、所定量ＴＨｂ−Ｎｅｘｔ、ＴＨｂ−Ｐｒｅｖの値を調整し、ステップＳ５１に戻る。
【００８０】
ここで、次ジャンプ先データ用領域３２−Ｎｅｘｔ、及び前ジャンプ先データ用領域３２−Ｐｒｅｖは、事前取得用領域３２−１、及び３２−２のどちらかに固定されるものではなく、再生位置にともなって変化する。
【００８１】
事前取得用領域の割当ての変化の一例を図１２に示す。現在の再生位置がチャプタＰの開始位置とチャプタＰ＋１の開始位置の間で、事前取得用領域３２−１に前ジャンプ先としてチャプタＰからのデータを、事前取得用領域３２−２に次ジャンプ先としてチャプタＰ＋１からのデータを蓄積しているとする。この時点では次ジャンプ先データ用領域３２−Ｎｅｘｔは事前取得用領域３２−１、前ジャンプ先データ用領域３２−Ｐｒｅｖは事前取得用領域３２−２である。
【００８２】
この状態から再生位置がチャプタＰ＋１の開始点を超えると、前ジャンプ先はチャプタＰ＋１の開始点に、次ジャンプ先はチャプタＰ＋２の開始点になる。ここで、チャプタＰ＋１からのデータは領域３２−２に既に蓄積済みであるので、領域３２−２を次ジャンプ先データ用領域３２−Ｎｅｘｔとすれば、チャプタＰ＋１からのデータを再度取得する必要がなくなる。
【００８３】
このように、次ジャンプ先データ用領域用領域３２−Ｎｅｘｔ、及び前ジャンプ先データ用領域３２−Ｐｒｅｖに該当する事前取得用領域を再生位置に応じて変更することで効率的にデータを取得することができる。
【００８４】
再生位置が新しいチャプタの開始位置を超えたときに次ジャンプ先データ用領域３２−Ｎｅｘｔ、及び前ジャンプ先データ用領域３２−Ｐｒｅｖと、事前取得領域３２−１、及び３２−２の対応付けを変更する方法を図１３を参照して説明する。
【００８５】
以下では、事前取得領域３２−１が蓄積しているジャンプ先のチャプタ番号をＰ１、事前取得領域３２−２が蓄積しているジャンプ先のチャプタ番号をＰ２、前ジャンプ先のチャプタ番号をＰｐｒｅｖ、次ジャンプ先のチャプタ番号をＰｎｅｘｔと記述する。
【００８６】
再生位置が新しいチャプタの開始位置を超えたとき（ステップＳ６０）、制御部２２は現在のチャプタ番号を取得し、前ジャンプ先のチャプタ番号Ｐｐｒｅｖと次ジャンプ先のチャプタ番号Ｐｎｅｘｔを求める（ステップＳ６１）。
【００８７】
事前取得用領域３２−１に蓄積しているデータが前ジャンプ先データであるとき、即ちＰ１＝Ｐｐｒｅｖであるとき（ステップＳ６２でＹｅｓ）は事前取得用領域３２−１を前ジャンプ先データ用領域３２−Ｐｒｅｖとして、事前取得用領域３２−２を次ジャンプ先データ用領域３２−Ｎｅｘｔとして設定する（ステップＳ６３）。
事前取得用領域３２−１には現在まで蓄積した前ジャンプ先のデータの続きのデータを蓄積する。
【００８８】
このときに事前取得用領域３２−２に蓄積しているデータが次ジャンプ先データでなければ、即ちＰ２＝Ｐｎｅｘｔでなければ（ステップＳ６４でＮｏ）、事前取得用領域３２−２には次ジャンプ先のデータではないデータが蓄積されているので、事前取得用領域３２−２の書き込みポインタＷＰを初期化する（ステップＳ６５）。
Ｐ２＝Ｐｎｅｘｔであれば、現在まで蓄積した前ジャンプ先のデータの続きのデータを蓄積する。
【００８９】
ステップＳ６２でＮｏであれば、次にステップＳ６６に進み、Ｐ１＝Ｐｎｅｘｔであれば（Ｓ６６でＹＥＳ）、事前取得用領域３２−１を次ジャンプ先データ用領域３２−Ｎｅｘｔとして、事前取得用領域３２−２を前ジャンプ先データ用領域３２−Ｐｒｅｖとして設定し（ステップＳ６７）、さらにＰ２＝Ｐｐｒｅｖでなければ（ステップＳ６８でＮｏ）、事前取得用領域３２−２の書き込みポインタＷＰを初期化する（ステップＳ６９）。
【００９０】
Ｐ１がＰｎｅｘｔともＰｐｒｅｖとも等しくなく（ステップＳ６２でＮｏ、かつＳ６６でＮｏ）かつＰ２＝Ｐｐｒｅｖの場合には（ステップＳ７０でＹｅｓ）、事前取得用領域３２−１を次ジャンプ先データ用領域３２−Ｎｅｘｔとして、事前取得用領域３２−２を前ジャンプ先データ用領域３２−Ｐｒｅｖとして設定し（ステップＳ７１）、事前取得用領域３２−１の書き込みポインタＷＰを初期化する（ステップＳ７２）。
【００９１】
Ｐ１がＰｎｅｘｔともＰｐｒｅｖとも等しくなく（ステップＳ６２でＮｏ、かつＳ６６でＮｏ）かつＰ２＝Ｐｎｅｘｔの場合（ステップＳ７０でＮｏ、Ｓ７３でＹｅｓ）には、事前取得用領域３２−１を前ジャンプ先データ用領域３２−Ｐｒｅｖとして、事前取得用領域３２−２を次ジャンプ先データ用領域３２−Ｎｅｘｔとして設定し（ステップＳ７４）、事前取得用領域３２−１の書き込みポインタＷＰを初期化する（ステップＳ７５）。
【００９２】
Ｐ１、Ｐ２ともにＰｎｅｘｔ、Ｐｐｒｅｖと等しくなかった場合（ステップＳ７０、Ｓ７３でＮｏ）には、事前取得用領域３２−１を前ジャンプ先データ用領域３２−Ｐｒｅｖとして、事前取得用領域３２−２を次ジャンプ先データ用領域３２−Ｎｅｘｔとして設定し（ステップＳ７６）、事前取得用領域３２−１および３２−１の書き込みポインタＷＰを初期化する（ステップＳ７７）。これは２つ以上先のジャンプ先を指定されたときなどに起こりうる。
【００９３】
以上のように実施の形態２によれば、事前取得用領域の個数をコンテンツのチャプタ数Ｌ以下しか確保できない場合においても、各事前取得用領域の役割を切り替えながら蓄積を行うことにより、前後のチャプタへのジャンプ再生に要する時間を短縮することができる。
【００９４】
なお、実施の形態２では、事前取得用領域に次ジャンプ先のデータを蓄積した後に前ジャンプ先のデータを蓄積していたが、この順番で蓄積しなくてもよい。また、事前取得用領域に蓄積するデータも、次ジャンプ先のデータ及び前ジャンプ先のデータの２つに限定しない。例えば、次ジャンプ先のデータとさらに次のチャプタからのデータを事前取得用領域に蓄積してもよいし、過去のユーザ操作の傾向に応じて事前取得用領域に蓄積するデータを変更してもよい。
【００９５】
また、実施の形態２では、２つの事前取得用領域をもつ場合について説明したが、もちろん事前取得用領域の数は２つでなくてもよい。また２つでないときも同様に各事前取得用領域の役割を切り替えながら効率的に蓄積を行う。より多くの事前取得用領域を設けると、ジャンプ再生にかかる時間を短縮できるジャンプ先を増やせるが、より大きなメモリ容量が必要となる。
【００９６】
また、再生位置が最終チャプタに達したなどの理由で次ジャンプ先がない場合には、本来次ジャンプ先データを蓄積する事前取得用領域に、違うデータを蓄積してもよい。例えば、２つ前のジャンプ先のデータを蓄積してもよいし、先頭チャプタからのデータを蓄積してもよい。後者の場合は、コンテンツ終端に達するとコンテンツ先頭からリピート再生するような場合に有効である。
【００９７】
実施の形態３．
実施の形態３では、通信状態に応じて、バッファ中の各領域のサイズを変更する場合について記述する。実施の形態３におけるコンテンツ再生装置の構成は、実施の形態２と同様である。
【００９８】
通常再生領域３１のバッファ蓄積量は図１４（ａ）のようにネットワークの状態に応じて変動する。制御部２２は、通常再生用領域３１のバッファ蓄積量の最大値Ｂｍａｘ、最小値Ｂｍｉｎ、変化幅Ｂｄｉｆｆを記憶しておく。
【００９９】
ここで、最大値Ｂｍａｘとは再生を開始してからのバッファ蓄積量の最大値である。最小値Ｂｍｉｎとは、最大値Ｂｍａｘが更新されてからのバッファ蓄積量の最小値である。変化幅Ｂｉｆｆは再生を開始してからの最大値Ｂｍａｘと最小値Ｂｍｉｎの差の最大値である。図１４（ｂ）は、最大値Ｂｍａｘ、最小値Ｂｍｉｎ、変化幅Ｂｄｉｆｆの変化の一例を示す。図１４（ｂ）での変化幅Ｂｄｉｆｆの最終的な値はＢ４−Ｂ１となる。
【０１００】
制御部２２がＢｍａｘ、Ｂｍｉｎ、Ｂｄｉｆｆを更新する手順の一例を、図１５を参照して説明する。
【０１０１】
再生を開始すると（ステップＳ８０）、まずＢｍａｘ、Ｂｍｉｎ、Ｂｄｉｆｆを０に初期化する（ステップＳ８１）。続いて一定時間ごとに現在の通常再生用領域３１のバッファ蓄積量Ｂｃｕｒｒｅｎｔを取得し（Ｓ８２）、Ｂｍａｘ、Ｂｍｉｎとの比較を行う（Ｓ８３）。ＢｃｕｒｒｅｎｔがＢｍａｘより大きければ（ステップＳ８３でＹｅｓ）、Ｂｍａｘを更新し、Ｂｍｉｎの値をＢｍａｘに設定する（ステップＳ８４）。Ｂｃｕｒｒｅｎｔの値がＢｍａｘ以下であり（ステップＳ８３でＮｏ）かつＢｍｉｎより小さければ（ステップＳ８５でＹｅｓ）、Ｂｍｉｎの値を更新する（ステップＳ８６）。さらにＢｍａｘ−Ｂｍｉｎの値がＢｄｉｆｆより大きければ（ステップＳ８７でＹｅｓ）、Ｂｄｉｆｆの値を更新する（ステップＳ８８）。
【０１０２】
通常再生用領域３１のサイズは少なくともＢｄｉｆｆより大きくないとバッファアンダーフローの可能性が高い。実施の形態３においては、ジャンプ再生時に前のデータの再生でのＢｄｉｆｆの値が大きい場合には、その値に応じて通常再生用領域３１のサイズをより大きく取ることにより、ネットワーク不調時のバッファアンダーフローの可能性を低減する。
【０１０３】
Ｂｄｉｆｆと通常再生用領域３１のサイズの決め方の一例を図１６に示す。平常時には通常再生用領域３１の大きさはＳｄｅｆａｕｌｔであるが、Ｂｄｉｆｆが大きいとき、つまりネットワーク不調時にはＢｄｉｆｆに応じて通常再生用領域３１のサイズを拡張する。通常再生用領域３１の最大サイズＳｍａｘはバッファ２３のサイズと等しくなる。
【０１０４】
通常再生用領域３１のサイズを拡大する場合には、各事前取得用領域３２のサイズを縮小する。このときのバッファ２３の領域配置の一例を図１７（Ａ）〜（Ｃ）に示す。ジャンプ再生時にＢｄｉｆｆの値が大きかったことから、バッファ２３の領域の配置を図１７（Ａ）から図１７（Ｂ）のように変更するとする。また、図１７（Ａ）では、事前取得用領域３２−１、及び３２−２が各々４つのメモリブロックＢＬ１〜ＢＬ４を用いていたとする。図１７（Ｂ）のように変更する場合、図１７（Ａ）の配置のときに取得していたデータをコピーするが、事前取得用領域３２−１のメモリブロックＢＬ４のように新しい領域に収まりきらないデータは破棄する。また、書き込みポインタＷＰの値が縮小後の事前取得用領域３２−１の外部に位置することとなるとき、縮小後の領域に収まるように設定しなおす。
【０１０５】
ジャンプ再生時にＢｄｉｆｆの値が小さくなった場合には、バッファ２３の領域の配置を図１７（Ｂ）から図１７（Ｃ）のように元に戻す。この場合新しく増えた領域（メモリブロック４）は、まだデータが蓄積されていないので空となる。事前取得用領域のバッファ蓄積量は変わらないが、バッファ蓄積率は減少する。
【０１０６】
以上のように実施の形態３によれば、通信状態に応じて、バッファ中の各領域のサイズを変更するので、通信状態が一時的に悪化した場合においても通常再生領域におけるバッファアンダーフロー発生の可能性を小さくすることができる。
【０１０７】
なお、実施の形態３では、Ｂｄｉｆｆの値はジャンプ再生の度に初期化するとしたが、値の信頼性が低い場合には初期化しなくてもよい。信頼性が低い状態としては、再生開始後わずかの時間しか経っていない場合などがある。初期化しない場合は、あらかじめ設定された初期値をＢｄｉｆｆとして用いたり、前回のＢｄｉｆｆの値をそのまま用いたりすることができる。こうすることにより、安定した状態でのバッファ蓄積量の変化を元に、通常再生用領域のサイズを決定できる。
【０１０８】
また、実施の形態３では、Ｂｄｉｆｆの値は再生を行っている間ずっと有効であったが、有効である期間を限定してもよい。例えば過去所定の指定期間、例えば１時間の間に測定されたＢｄｉｆｆの値のみ有効としてもよい。そのためには、例えば、ＢｍａｘとＢｍｉｎの値を一定時間おきに記憶しておき、指定期間内のＢｍａｘとＢｍｉｎからＢｄｉｆｆを求めればよい。こうすることにより、より最近の通信状態を反映したバッファ領域の設定を行うことができる。
【０１０９】
また、実施の形態３では、バッファ領域の配置変えを行うのはジャンプ再生を行ったときのみであったが、違うタイミングで行ってもよい。例えば、バッファアンダーフローが発生したときに行ってもよいし、一定時間間隔で行ってもよい。こうすることにより、より最近の通信状態を反映したバッファ領域の設定を行うことができる。
【０１１０】
また、実施の形態３では、通常再生用領域を拡大したときに各事前取得用領域のサイズを縮小したが、事前取得用領域の数を減らしてもよい。逆に通常再生用領域を元に戻すときには、新たに事前取得用領域を作成することになる。こうすることにより、特定のジャンプ先に対しては、通常再生用領域を拡大する前と同じようにジャンプ再生に要する時間を短縮することができる。
【０１１１】
また、実施の形態３では、Ｂｄｉｆｆの値に応じて、ジャンプ再生開始までに蓄積するデータ量を変更してもよい。こうすることにより、例えば、Ｂｄｉｆｆの値が大きい場合には蓄積するデータを多くすることでバッファアンダーフローの可能性を小さくし、またＢｄｉｆｆの値が小さい場合には、蓄積するデータを少なくすることでジャンプ再生にかかる時間を短縮することができる。
【０１１２】
また、実施の形態３では、Ｂｄｉｆｆの値に応じて通常再生用領域のサイズを変更したが、通常再生用領域のサイズが十分に大きい場合には、ネットワーク不調時に逆に事前取得用領域を拡大してもよい。こうすることによりＢｄｉｆｆの値によりジャンプ再生開始までに蓄積するデータ量を大きくした場合にも、それだけのデータ量を事前取得用領域に蓄積しておくことにより、ジャンプ再生に要する時間を短縮することができる。
【０１１３】
実施の形態４．
実施の形態４では、ジャンプ再生時の再生部２４の処理を高速化する方法について記述する。
実施の形態４におけるコンテンツ再生装置の構成は、実施の形態３と同様である。
図１８は再生部２４の構成の一例を示すブロック図である。
【０１１４】
図１８において、バッファ２３から読み出したストリーミングデータがデマルチプレクサ４１に入力される。デマルチプレクサ４１はストリーミングデータに多重化されたビデオストリームとオーディオストリームを抽出し、ビデオストリームをビデオバッファ４２−Ａに、オーディオストリームをオーディオバッファ４２−Ｂに蓄積する。
【０１１５】
ビデオデコーダ４３−Ａは、ビデオバッファ４２−Ａからビデオストリームを読み出し、それを復号する。オーディオデコーダ４３−Ｂは、オーディオバッファ４２−Ｂからオーディオストリームを読み出し、それを復号する。
【０１１６】
なお、以下では、ビデオやオーディオなど処理するデータの種類を区別する必要が無いときは、ビデオデコーダ４３−Ａ、オーディオデコーダ４３−Ｂなど復号を行うモジュールを復号器４３と呼び、復号器４３が復号するストリームを復号対象ストリームと呼び、ビデオバッファ４２−Ａ、オーディオバッファ４２−Ｂなど復号対象ストリームを一時的に蓄積するバッファを復号用バッファ４２と呼ぶ。
【０１１７】
ジャンプ再生では同一コンテンツ内で再生位置のみ変更する。このような場合には、再生部２４の処理を一時停止し、再生部２４に入力するストリーミングデータを変更し、再生部２４の一時停止を解除する、という処理を行うのが一般的である。
【０１１８】
再生部２４の一時停止時には、復号部４３は、復号用バッファ４２からの復号対象ストリーム読み出しを停止し、復号を停止する。また、再生部２４の一時停止解除時には、復号部４３は、復号対象ストリーム読み出しを一時停止した位置から、復号対象ストリームの読み出しを再開し、復号を再開する。
【０１１９】
一般的な（従来の）ジャンプ再生時の、復号用バッファ４２の状態の変化の例を図１９（Ａ）〜（Ｃ）に示す。図１９（Ａ）〜（Ｃ）では、復号用バッファ４２の書き込みポインタをＷＰｄとし、読み出しポインタをＲＰｄとする。
【０１２０】
図１９（Ａ）の状態でジャンプ再生が指示され、再生部２４の処理を一時停止したとする。
再生部２４に入力するストリーミングデータが変更され、再生部２４の一時停止が解除された時点では、復号用バッファ４２の書き込みポインタＷＰｄ、読み出しポインタＲＰｄの値は一時停止解除前と同じである。
図１９（Ａ）の状態で書き込みポインタＷＰｄが指すアドレスをＡｗｐｄとする。
【０１２１】
一時停止解除後は、新しい復号対象ストリームがアドレスＡｗｐｄ以降に書き込まれる。復号用バッファ４２の読み出しポインタＲＰｄがアドレスＡｗｐｄを超えるまで（図１９（Ｂ））は、復号器４３はジャンプ再生前に復号用バッファ４２に蓄積したデータ（ジャンプ再生前蓄積済データ）を読み出し、復号することになる。
【０１２２】
読み出しポインタＲＰｄがアドレスＡｗｐｄを超えた後（図１９（Ｃ））は、復号器４３はジャンプ再生後に蓄積したデータ（ジャンプ再生後蓄積データ）を取得する。
【０１２３】
上記の通り従来手法では、復号用バッファ４２の読み出しポインタＲＰｄが、ジャンプ再生を指示された時点での復号用バッファ４２の書き込みポインタＷＰが指すアドレスＡｗｐｄを超えるまでは、復号部４３ではジャンプ再生前蓄積済データを読み出し、復号する。つまり、ジャンプ再生を指示されてからジャンプ再生後蓄積データを復号し始めるまでに時間がかかってしまい、ジャンプ再生時にユーザが感じる待ち時間の一因となっていた。
【０１２４】
それに対して、本実施の形態における復号用バッファ４２の状態の変化の一例を図２０（Ａ）〜（Ｄ）に示す。
【０１２５】
図２０（Ａ）は、図１９（Ａ）と同様、通常再生中に、ジャンプ再生が指示された時点でのバッファの状態を示す。
本実施の形態においては、ジャンプ再生により再生部２４の一時停止が指示されたとき、復号部４３は復号用バッファ４２の書き込みポインタＷＰ、読み出しポインタＲＰを初期化する（図２０（Ｂ））。
【０１２６】
その後、復号部４３は復号用バッファ４２のバッファ蓄積量（ＷＰｄ−ＲＰｄ）が指定量ＴＨｄ以上となるのを待ち（図２０（Ｃ））、復号用バッファ４２のバッファ蓄積量が指定量ＴＨｄ以上となったら、復号部４３は復号用バッファ４２の読み出しを開始する（図２０（Ｄ））。
【０１２７】
ここで、指定量ＴＨｄは、ジャンプ再生前蓄積済データの量（即ち、図２０（Ａ）のＷ（Ｐｄ−ＲＰｄ））と同じ値とする。
【０１２８】
従来手法において復号部４３がジャンプ再生前蓄積済データを読み出す読み出しレートより、マルチプレクサ４１が復号用バッファ４２に蓄積する書き込みレートの方が通常は大きい。これは、読み出しレートより書き込みレートの方が大きくないと、復号用バッファがバッファアンダーフローを起こし、正常な復号処理を行えないからである。
【０１２９】
再生部２４の一時停止が解除されてから復号部４３がジャンプ再生後蓄積データを復号開始するまでにかかる時間は、従来手法においては
「ジャンプ再生前蓄積データ量」／「復号用バッファからの読み出しレート」
となり、本実施の形態においては
「指定量ＴＨｂ」／「復号用バッファへの書き込みレート」
となる。上記に説明したように、
「ジャンプ再生前蓄積データ量＝指定量ＴＨｄ」
であり、
「復号用バッファからの読み出しレート」＜「復号用バッファへの書き込みレート」
であるので、再生部２４の一時停止が解除されてから復号部４３がジャンプ再生後蓄積データを復号開始するまでの時間は、従来手法より本実施の形態の方が短くなる。
【０１３０】
以上のように実施の形態４によれば、ジャンプ再生前に復号用バッファに蓄積したデータを復号せず、ジャンプ再生指示後に蓄積されたデータから復号を開始することにより、ジャンプ再生に要する時間を短縮することができる。
【０１３１】
なお、実施の形態４では、復号対象ストリームとしてビデオストリームとオーディオストリームを挙げたが、対象はこの２つに限定しない。例えば字幕ストリームなどを対象にしてもよい。
【０１３２】
また、実施の形態４では、ジャンプ再生時に復号用バッファの書き込みポインタＷＰ、読み出しポインタＲＰを初期化したが、初期化しなくても、読み出しポインタＲＰが指す値と書き込みポインタＷＰが指す値が同じとなればよい。例えば、ジャンプ再生時に、書き込みポインタＷＰの値はそのままで、読み出しポインタＲＰの値を書き込みポインタＷＰが指す値に合わせても同様の効果が得られる。
【０１３３】
また、実施の形態４では、指定量ＴＨｄはジャンプ再生前蓄積済データの量と同じ値としたが、違う値に設定してもよい。例えばＴＨｄの値を０にすることにより、一時停止解除時に即座に復号開始するようにしてもよい。こうすることにより、復号用バッファにおいてバッファアンダーフローが発生する可能性は高まるが、ジャンプ再生に要する時間をより短縮することができる。
【０１３４】
また、再生部２４が再生再開を指示されたときに即座に復号開始するのを、データ取得部２１がストリーミングデータを蓄積するバッファのバッファ蓄積量が一定以上である場合、つまり復号用バッファ４２へのデータ供給が安定して行われる見込みがある場合に限定してもよい。こうすることにより、復号用バッファ４２においてバッファアンダーフローが発生する可能性を低くすることができる。
【符号の説明】
【０１３５】
１  コンテンツ提供装置、  ２  ネットワーク、  ３  コンテンツ再生装置、  ２１  データ取得部、  ２２  制御部、  ２３  バッファ、  ３１  通常再生用領域、  ３２−１〜３２−Ｎ  事前取得用領域、  ２４  再生部、  ４１  デマルチプレクサ、  ４２−Ａ  ビデオバッファ、  ４２−Ｂ  オーディオバッファ、  ４３−Ａ  ビデオデコーダ、  ４３−Ｂ  オーディオデコーダ。
【図１】
0005528222.tif 000002
【図２】
0005528222.tif 000003
【図３】
0005528222.tif 000004
【図４】
0005528222.tif 000005
【図５】
0005528222.tif 000006
【図６】
0005528222.tif 000007
【図７】
0005528222.tif 000008
【図８】
0005528222.tif 000009
【図９】
0005528222.tif 000010
【図１０】
0005528222.tif 000011
【図１１】
0005528222.tif 000012
【図１２】
0005528222.tif 000013
【図１３】
0005528222.tif 000014
【図１４】
0005528222.tif 000015
【図１５】
0005528222.tif 000016
【図１６】
0005528222.tif 000017
【図１７】
0005528222.tif 000018
【図１８】
0005528222.tif 000019
【図１９】
0005528222.tif 000020
【図２０】
0005528222.tif 000021