〔実施の形態1〕
本発明の一実施の形態について図1から図11に基づいて説明すれば、以下のとおりである。なお、本実施の形態では、ビデオディスクプレーヤについて説明するが、本発明はこれに限定されず、ハードウェアデコーダを搭載したPC(Personal Computer)等にも適用できる。
<システム構成>
図1は、本実施の形態に係るビデオディスクプレーヤ1の構成の概略を示す機能ブロック図である。
ビデオディスクプレーヤ1(再生装置)は、光ディスク2に記録されているAVデータを再生する装置である。図1に示すように、ビデオディスクプレーヤ1は、プログラム実行部10、ビデオ再生部20、合成部30、出力制御部40、ディスク読み出し部50を備えて構成されている。
ディスク読み出し部50(データ取得手段、読み出し手段)は、光ディスク2(コンテンツ記録媒体)からビデオデータ(コンテンツデータ)、プログラム(同期実行プログラム)、同期タイミング情報を読み出す。そして、ディスク読み出し部50は、プログラムをプログラム実行部10に、ビデオデータおよび後述する同期タイミング情報をビデオ再生部20にそれぞれ送る。
プログラム実行部10は、プログラムを実行する。具体的には、プログラム実行部10は、プログラムを実行することによって、ビデオ再生部20、ディスク読み出し部50、および出力制御部40に対して制御を行うとともに、出力制御部40に対して、プログラム実行によって生成したビットマップデータを送る。
ビデオ再生部20は、ディスク読み出し部50から送られるビデオデータをデコードし、非圧縮ビデオデータを合成部30に対して送る。また、ディスク読み出し部50から送られる同期タイミング情報を基に、プログラム実行部10および出力制御部40に対する制御を行う。
出力制御部40は、プログラム実行部10から送られるビットマップデータを保持し、このビットマップデータをビデオ再生部20およびプログラム実行部10からの制御に従って合成部30に出力する。
合成部30は、出力制御部40から送られるビットマップデータおよびビデオ再生部20から送られる非圧縮ビデオデータを合成し、合成映像を出力する。
なお、プログラム実行部10および出力制御部40より同期処理部(同期処理手段)60が構成される。すなわち、同期処理部60は、プログラム実行部10にて、ビデオ再生部20より受信した同期制御信号に従って、プログラムを実行することによりビットマップデータ(出力データ、第2の出力データ)を生成するとともに、出力制御部40にて、ビットマップデータをビデオ再生部20より受信した同期制御信号に従って出力する。
<プログラム実行部>
図2は、上記プログラム実行部10の詳細な構成を示す機能ブロック図である。
上記のように、プログラム実行部10は、同期制御部22より受信した同期制御信号に従ってプログラムを実行する。また、プログラム実行部10は、同期制御部22より受信した同期制御信号に含まれるフィールドaction_idで指定されたプログラムを実行する。特に、実施の形態では、プログラム実行部10は、ビデオ画像に重畳する画像データを生成するプログラムを実行する。
図2に示すように、プログラム実行部10は、メモリ11、CPU12、ビデオ再生制御部13、割り込み制御部14で構成される。
メモリ11は、ディスク読み出し部50から入力されたプログラムを一旦格納する。CPU12は、メモリ11に格納されたプログラムを読み出し、そのプログラムを実行する。CPU12は、プログラムの内容に応じて、ビデオ再生制御部13に対して指令を送ったり、出力制御部40に対してビットマップデータを送る。ビデオ再生制御部13は、実行されたプログラムに基づきビデオ再生部20に対して制御信号を送る。制御信号としては、具体的には、再生開始・一時停止のような再生制御や、現在の再生時刻取得などの状態取得を目的とするものがある。割り込み制御部14は、プログラム実行部10の外からの割り込みを受け取り、それをCPU12に送る。CPU12は、割り込み制御部14より受けた割り込みに応じて割り込みハンドラを起動する。なお、割り込み元によって与えられる各種情報は、割り込み制御部14内のレジスタ(図示せず)に格納される。
ここで、割り込みハンドラとは、Java(登録商標)においてはEventLisnerとして登録されたオブジェクトのメソッドに相当する。また、他のプログラム言語においてコールバック関数と呼ばれるものに相当する。
<出力制御部>
図3は、上記出力制御部40の詳細な構成を示す機能ブロック図である。
図3に示すように、出力制御部40は、入力側バッファ切替部41、表示バッファメモリ42A(#1)・42B(#2)、出力側バッファ切替部43で構成される。
入力側バッファ切替部41は、プログラム実行部10からのビットマップデータを受け取り、プログラム実行部10の制御により、表示バッファメモリ42A・42Bのいずれかに送る。出力側バッファ切替部43は、ビデオ再生部20からの制御に基づき、表示バッファメモリ42A・42Bの内容のいずれかを合成部30に出力する。
表示バッファメモリ42Aおよび表示バッファメモリ42Bは、ビットマップデータを格納するためのバッファメモリであり、前述のように入力側バッファ切替部41と出力側バッファ切替部43から制御を受ける。
<ビデオ再生部>
図4は、上記ビデオ再生部20の詳細な構成を示す機能ブロック図である。
図4に示すように、ビデオ再生部20は、メモリ21、同期制御部22、クロック23、デコーダ24、インタフェース部25で構成される。
デコーダ24(デコード手段)は、クロック信号に従ってビデオデータを再生出力のための非圧縮ビデオデータに変換する。具体的には、デコーダ24は、ディスク読み出し部50がインタフェース部25から送られる命令中で指定され、光ディスク2から読み出したビデオデータを、デコードして、非圧縮ビデオデータ(ビデオ画像)を出力する。
クロック(クロック生成手段)23は、デコードおよび非圧縮ビデオデータの出力のタイミングを司る。すなわち、クロック23は、クロック信号を生成する。なお、本実施の形態では、光ディスク2に記録されているビデオデータのフォーマットは、ISO/IEC 13818-1のProgram Streamであるとする。この場合、クロック23の値はそのSTC(System Time Clock)に相当する。
また、メモリ21は、ディスク読み出し部50より入力された同期タイミング情報を格納する。
そして、同期制御部(同期制御手段)22は、メモリ21上の同期タイミング情報とクロック23の値とを常時比較し、それらが一致した場合、同期タイミング情報で指定された処理ブロック(プログラム実行部10あるいは出力制御部40)に対して、指定された制御を行う。具体的には、同期制御部22は、クロック信号に従って同期タイミング情報に含まれるフィールドtiming(タイミング指定情報)で指定されたタイミングでプログラム実行部10(プログラム実行手段、出力生成手段)へ同期制御信号を送信する。また、同期制御部22は、フィールドtimingで指定されたタイミングでプログラム実行部10へ同期制御信号を送信する際、当該フィールドtimingに対応するフィールドaction_idを同期制御信号に含める。なお、本実施の形態においては、同期制御部22によるデコーダ24の状態の監視は必須ではない。
同期タイミング情報で指定された処理ブロックがプログラム実行部10の場合、同期制御部22は、割り込み制御部14に対して割り込みをかけ、割り込み制御部14中のレジスタに対して情報をセットする。
これにより、プログラム実行に負担をかけることなく、ビデオ再生時間軸上の任意タイミングでの処理の起動が可能となる。なぜなら、ハードウェアによる割り込み機構を用いているため、従来技術のようにプログラム内でビデオ再生部20のクロックを参照するためのポーリング処理を行う必要がなく、ポーリング処理によるオーバーヘッドが無くなるためである。
一方、同期タイミング情報で指定された処理ブロックが出力制御部40の場合、出力側バッファ切替部43に対して指令を出し、表示バッファメモリ42A・42Bの切替を行う。これにより、プログラムによる映像出力をフレーム精度で切り替えることが可能となる。なぜなら、表示バッファメモリ42A・42Bは、ハードウェアによる切り替えを行うため、従来技術のようにプログラムで表示のON/OFFを制御するのに比べて、関数呼び出しやガーベジコレクションのようなプログラム実行に伴うオーバーヘッドが発生しないためである。
また、ビデオ再生部20では、インタフェース部25により、プログラム実行部10のビデオ再生制御部13から送られる制御信号を受け取り、その制御信号に従ってデコーダ24を制御したり、現在の状態をビデオ再生制御部13へ送る。
<同期タイミング情報>
ここで、図5、図6を参照しながら、光ディスク2に記録されているデータのデータ構造について説明する。
光ディスク2には、ビデオディスクプレーヤ1に供給可能であるように、ビデオデータ、プログラム、同期タイミング情報が記録されている。
図5(a)(b)は、同期タイミング情報のデータ構造を示す説明図である。図5(a)に示すように、同期タイミング情報は、エントリ数を示すnumber_of_sync_infoとエントリである0個以上のsync_info()で構成される。図5(b)に示すように、エントリsync_info()は、timing,target,action_idの3個のフィールドで構成される。すなわち、同期タイミング情報は、フィールドtiming(タイミング指定情報)とともにフィールドaction_id(アクション指定情報)を少なくとも含む。
フィールドtimingは、プログラム実行部10あるいは出力制御部40に対して指令を与えるタイミングを示す。フィールドtimingは、同期制御部22において、クロック23との比較に用いられる。
フィールドtargetは、指令を与える対象を示す。フィールドtargetでは、プログラム実行部10および出力制御部40のいずれかが指定される。
フィールドaction_idは、指令内容を示す。なお、フィールドaction_idの詳細については後述する。
このように、同期タイミング情報において指令を与える対象を示すフィールドtargetを設けることで、複数の処理ブロックに指令を与える場合にも対応が可能である。また、指令内容を示すフィールドaction_idを設けることにより、同一処理ブロックに対して複数の指令を切り替えて出すことが可能である。
<データ配置とファイル構成>
図6は、光ディスク2におけるデータ配置を示す説明図である。
図6に示すように、光ディスク2は、管理情報領域61とビデオデータ領域(コンテンツデータ格納領域)62とで構成される。管理情報領域61は、プログラムが格納されたプログラム格納領域(同期プログラム格納領域)61Aと、同期タイミング情報が格納された同期タイミング情報格納領域61Bとからなる。また、ビデオデータ領域62には、ビデオデータが格納されている。なお、個々の同期タイミング情報、プログラム、ビデオデータはファイルとして管理される。
特に、本実施の形態では、同期タイミング情報がビデオデータと分離されている。また、同期タイミング情報がプログラムの近傍に記録されている。また、同期タイミング情報がプログラムと同一ファイルに格納されている。
このように、ビデオデータと同期タイミング情報を別々に管理することで、1個のビデオデータを複数のプログラムで共有することが容易になる。また、同期タイミング情報とプログラムを別のファイルとして管理することで、プログラム作成後にビデオデータを編集した場合でも、プログラムを書き換える必要がない。
なお、ビデオデータ、プログラム、同期タイミング情報のビデオディスクプレーヤ1への供給は、種々の形態によって可能である。例えば、ビデオディスクプレーヤ1は、ビデオデータ、プログラム、同期タイミング情報のすべてを記録した光ディスク2から読み出してもよい。また、ビデオデータ、プログラム、同期タイミング情報のいずれかを通信部(通信手段)(図示せず)によりネットワーク経由で取得して、光ディスク2から読み出した他のデータと組み合わせて再生してもよい。さらに、光ディスク2に記録されているプログラム(ビデオデータ、同期タイミング情報についても同様)の一部あるいは全部を、ネットワーク経由で取得したプログラムに置き換えて再生してもよい。
例えば、図1において、プログラムおよび同期タイミング情報の取得先をネットワーク経由に変更することが考えられる。このような構成をとることで、光ディスク2によってユーザが提供したビデオデータに対して、光ディスク2の制作者がネットワークを通じて後から付加価値を付けることができる。プログラムおよび同期タイミング情報はビデオデータに比べてデータ量がはるかに小さいため、このようなやり方は後から付加価値を付ける際に時間や料金等の通信コストの面で有利である。
<再生処理>
つづいて、図7を参照しながら、ビデオディスクプレーヤ1による再生処理について説明する。
図7は、ビデオディスクプレーヤ1による再生処理の全体の流れを示すフローチャートである。
まず、電源投入後、ビデオディスクプレーヤ1は、光ディスク2からのファイルシステム情報(図示せず)等の読み込み、および各処理部の初期化を行う。また、ディスク読み出し部50は、読み出したファイルシステム情報を基に、光ディスク2上の自動起動プログラムの位置を取得する(S11)。なお、自動起動プログラムについてはファイル名で識別できるようになっている。
なお、自動起動プログラムは、ビデオディスクプレーヤ1に光ディスク2を装着したとき、あるいはビデオディスクプレーヤ1の電源を投入したときに、最初に光ディスク2から起動されるプログラムである。自動起動プログラムの内容は、光ディスク2の制作者の自由であるが、通常は光ディスク2中の複数のコンテンツ選択用のメニュー表示プログラムを用いる。自動起動プログラムを格納したファイルのファイル名には、あらかじめ特定の名称を与えるように決めておけば、ディスク読み出し部50はそのファイル名を頼りに自動起動プログラムの位置を取得できる。
次に、ディスク読み出し部50は、プログラムの位置情報を基に、プログラムを読み込み、プログラム実行部10に送る(S12)。プログラム実行部10は、受け取ったプログラムを実行する(S13)。このとき、ディスク読み出し部50は、光ディスク2上の次に実行すべきプログラムの位置を取得する(S14)。
次に、図8を参照しながら、プログラム実行部10がプログラム実行を行うステップであるステップS13について説明する。
まず、プログラム実行部10は、ビデオ再生部20からの割り込みを扱うための、割り込みハンドラを登録する(S21)。なお、割り込みハンドラについては後述する。次に、プログラム実行部10は、ビデオ再生部20に対し、再生対象のビデオデータファイルを指定し、再生開始を指示する(S22)。最後に、ビデオ再生との同期が必要ない処理を実行する(S23)。
ここで、割り込みハンドラの登録とは、Java(登録商標)においては、ビデオ再生に関するイベントに対応するオブジェクトへのEventLisnerの登録で実現される。
<プログラム実行の例>
つづいて、図9から図11を参照しながら、ビデオディスクプレーヤ1におけるプログラム実行の具体例を説明する。ここでは、ビデオデータ再生中の時刻T2からT4の間、静止画を表示し、時刻T4からT5の間、アニメーションを表示するプログラムを例として挙げる。
図9に示すフローチャートを用いて、本具体例における割り込みハンドラの設定について説明する。
まず、CPU12は、割り込みハンドラ起動後、割り込み制御部14中のレジスタを参照して、ビデオ再生部20によってセットされたフィールドaction_idの値を取得し(S31)、判定する(S32)。
ステップS32において、フィールドaction_idが“A1”の場合、CPU12は静止画を生成し表示メモリバッファ42Aに書き込む処理を呼び出す(S33)。フィールドaction_idが“A2”の場合、CPU12はアニメーションの生成を開始し、生成したビットマップデータをメモリバッファ42Bに書き込む処理を呼び出す(S34)。フィールドaction_idが“A3”の場合、CPU12はアニメーションの生成を終了する処理を呼び出す(S35)。
図10は、本具体例において用いる同期タイミング情報を示す。なお、フィールドaction_idの列における“A1”,“A2”,“A3”は、図9における処理に対応する。また、図11に、本具体例におけるタイミングチャートを示す。横軸はビデオデータ再生の時間軸を表す。
まず、時刻T1に起動した静止画表示の処理は、時刻t1に表示バッファメモリ42Aへの書き込みが終了して、表示準備が完了する。次に、時刻T2に、合成部30に送る画像を表示バッファメモリ42A(#1)のものに切り替えて、静止画を表示する。
ここでのポイントは、静止画の表示バッファメモリ42Aへの書き込みに要する時間d1(=t1−T1)よりも、T2−T1を大きくしておくことである。これにより、指定した時刻T2に、静止画を表示することが可能となる。
同様に、時刻T3に起動したアニメーション表示開始の処理は、時刻t2に表示バッファメモリ42Bにアニメーションの最初のビットマップデータの書き込みが完了する。次に、時刻T4に、合成部30に送る画像を表示バッファメモリ42B(#2)のものに切り替えて、アニメーションを表示する。
ここでのポイントは、アニメーションの最初のビットマップデータの表示バッファメモリ42Bへの書き込みに要する時間d2(=t2−T3)よりも、T4−T3を大きくしておくことである。これにより、指定した時刻T4に、静止画からアニメーションへの映像の切替が可能となる。
次に、本実施の形態における各種データを光ディスク2から読み込むタイミングについて説明する。ビデオデータは、データ量が大きいため、デコード前にまとめて光ディスク2から読み出すことはメモリ量および読み出し時間の点で現実的ではない。そのため、ビデオデータは、デコードと読み出しを並行して行う。
一方、プログラムおよび同期タイミング情報は、データ量が小さく、まとめてメモリ21やメモリ11に読み出してもメモリ量および読み出し時間の点でも問題がない。よって、ビデオデータ読み込み中のディスク読み出し部50のピックアップ(図示せず)の移動によるビデオ再生の途切れや、電力消費の増大、騒音の発生を避けるため、プログラムおよび同期タイミング情報は、ビデオデータ読み込み開始前にまとめて読み込む。本実施の形態では、プログラムと同期タイミング情報を光ディスク2上の近傍に配置しているため、読み出しの際のピックアップの移動距離が小さくて済み、再生開始までの待ち時間を縮小するとともに、ビデオ再生の途切れの防止、電力消費の抑制、騒音の抑制が可能となる。
次に、本具体例におけるプログラムの構成について説明する。本具体例では、メイン処理であるビデオ再生処理と、静止画表示処理およびアニメーション表示処理という2種類のサブ処理とで構成されている。これらは、1個のプログラムにまとめてもよいし、1個のメインプログラムと2個のサブプログラムとしてもよい。
複数のプログラムで構成する場合、各プログラムを別ファイルにすることが考えられる。この場合、ディスク読み出し部50の負担を小さくするため、1個のファイルにまとめることが望ましい。そのような例として、Java(登録商標)言語では、その用途にJAR(Java ARchive)ファイルというファイルフォーマットが定義されている。
以上のように、本実施の形態のビデオディスクプレーヤ1は、プログラム実行部10、ビデオ再生部20、プログラム実行部10の出力(ビットマップデータ)とビデオ再生部20の出力(非圧縮ビデオデータ)とを合成する合成部30を備え、同期タイミング情報に従って、ビデオ再生部20のクロックに基づき、プログラム実行部10の出力を制御する。これにより、プログラム実行部10の処理に負担をかけることなく、かつフレーム単位の精度で、ビデオ再生部20の生成する出力すなわちビデオデータの指定のタイミングでの出力開始・終了を実現できる。したがって、コンピュータプログラム実行とビデオ再生を同時に行う場合に、プログラムによって生成したグラフィックスやアニメーションなどをビデオ再生の時間軸上の特定のビデオフレームから表示開始したり表示終了することが可能となる。
さらに、上記ビデオディスクプレーヤ1では、同期タイミング情報が、ビデオ再生部20からの出力を生成するための情報(ビデオデータ)とは分離されている。これにより、ビデオ再生部20からの出力を生成するための情報に対して、複数バージョンの同期タイミング情報を適用することが可能である。
さらに、上記ビデオディスクプレーヤ1では、同期タイミング情報には、ビデオ再生部20の時間軸上の時刻を含み、制御対象と制御内容のうちの少なくとも一方を含む。これにより、複数の処理ブロックに指令を与える場合にも対応でき、同一処理ブロックに対して複数の指令を切り替えることが可能となる。
〔実施の形態2〕
本発明の他の実施の形態について図12から図17に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記の実施の形態1において示した部材と同一の機能を有する部材には、同一の符号を付し、その説明を省略する。また、実施の形態1において定義した用語については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態は、ビデオデータの任意位置から再生を開始することを考慮した、実施の形態1の変形例である。よって、実施の形態1と共通する部分が多いため、実施の形態1と相違する部分に絞って説明する。
<システム構成>
実施の形態1と同一であるため、説明を省略する。
<プログラム実行部>
実施の形態1と同一であるため、説明を省略する。
<出力制御部>
実施の形態1と同一であるため、説明を省略する。
<ビデオ再生部>
実施の形態1とほぼ同一であるが、本実施の形態では、ビデオ再生時に同期タイミング情報中のフィールドmerged_flag(後述)の値が“1”に設定されたエントリsync_info()を無視する点が異なる。
また、コンテンツデータの途中から再生を開始する際、同期制御部22は、再生を開始する時刻よりも前の時刻を示すフィールドtiming(タイミング指定情報)を含む同期タイミング情報に従って、タイミング指定情報が前のものから順にプログラム実行部10へ同期制御信号を送信する。
また、コンテンツデータの途中から再生を開始する際、同期制御部22は、他の同期タイミング情報に依存しないことを示す依存情報(後述するフィールドindependent_flag)を含む同期タイミング情報のうち、再生を開始する時刻に最も近い過去の時刻を示すタイミング指定情報を含む同期タイミング情報と、該同期タイミング情報よりも後の時刻を示すタイミング指定情報を含む同期タイミング情報とに従って、タイミング指定情報が前のものから順にプログラム実行部10へ同期制御信号を送信するものである。なお、そのために、同期タイミング情報は、フィールドtimingとともに、他の同期タイミング情報との依存関係を示す依存情報を含む。
また、コンテンツデータの途中から再生を開始する際、同期制御部22は、複数の同期実行プログラムを実行した結果と同一の結果が得られる統合同期実行プログラムであることを示す統合同期実行プログラム識別情報(フィールドmerged_flag)を含む同期タイミング情報のうち、再生を開始する時刻に最も近い過去の時刻を示すタイミング指定情報を含む同期タイミング情報と、該同期タイミング情報よりも後の時刻を示すタイミング指定情報を含む同期タイミング情報とに従って、タイミング指定情報が前のものから順にプログラム実行部10へ同期制御信号を送信する。なお、そのため、ディスク読み出し部50は、複数の同期実行プログラムを実行した結果と同一の結果が得られる統合同期実行プログラムを取得する。この統合同期実行プログラムは、対応する同期実行プログラムと同じ光ディスク2に記録されていることが好ましい。また、同期タイミング情報は、タイミング指定情報とともに、実行すべき同期実行プログラムを示すフィールドaction_id(アクション指定情報)と、フィールドaction_idで示された同期実行プログラムが統合同期実行プログラムであるか否かを示す統合同期実行プログラム識別情報(フィールドmerged_flag)を含む。
<同期タイミング情報>
ここで、図12を参照しながら、本実施の形態での同期タイミング情報のデータ構造について説明する。図12(a)(b)は、同期タイミング情報のデータ構造を示す説明図である。
図12(a)に示すように、同期タイミング情報は、エントリ数を示すnumber_of_sync_infoとエントリである0個以上のsync_info()で構成される。図12(b)に示すように、エントリsync_info()は、timing,target,action_id、independent_flag,merged_flagの5個のフィールドで構成される。このうち、フィールドtiming(タイミング指定情報)、フィールドtarget、フィールドaction_id(アクション指定情報)については、実施の形態1と同一であるため、説明を省略する。なお、同期タイミング中の各sync_info()はフィールドtimingの値の順に並べられていることが好ましい。
フィールドindependent_flagは、このフラグが含まれるsync_info()の処理および処理結果が、直前までのすべてのsync_info()のフィールドaction_idに対応する処理の結果に依存するか否かを示すフラグであり、依存する場合には“0”が、依存しない場合には“1”がセットされる。
ここで、図13(a)〜(d)は、フィールドindependent_flagの設定例を示す説明図である。
例えば、1番目のsync_info()であるsync_info(1)のaction_idに対応する処理がグラフィックスAを描画し、2番目のsync_info()であるsync_info(2)のaction_idに対応する処理がグラフィックスBを追加描画する場合(図13(a))、sync_info(2)のaction_idに対応する処理の結果はsync_info(1)のaction_idに対応する処理結果に依存するため、sync_info(2)のindependent_flagに“0”をセットする(図13(b))。
一方、sync_info(2)のaction_idに対応する処理が一旦グラフィックスAを消去し、新たにグラフィックスBを描画する場合(図13(c))、sync_info(2)のaction_idに対応する処理結果は、sync_info(1)のaction_idに対応する処理結果に依存しないため、sync_info(2)のindependent_flagに“1”をセットする(図13(d))。なお、以後i番目のsync_info()をsync_info(i)と表現する。
次に、フィールドmerged_flagは、このフラグが含まれるsync_info()の処理結果が、直前までのすべてのsync_info()の処理結果をすべて反映したものであるか否かを示すフラグであり、すべて反映したものであれば“1”が、そうでなければ“0”がセットされる。
ここで、図14(a)(b)は、フィールドmerged_flagの設定例を示す説明図である。
例えば、図14(a)に示すように、sync_info(1)のaction_idに対応する処理がグラフィックスAを描画し、sync_info(2)のaction_idに対応する処理がグラフィックスBを追加描画すると仮定する。このとき、sync_info(3)のaction_idに対応する処理の結果が、sync_info(1)およびsync_info(2)の各action_idに対応する処理結果と等しい、すなわち、グラフィックスAおよびグラフィックスBを同時に描画する場合、merged_flagに“1”をセットする(図14(b))。なお、ここでsync_info(3)のaction_idに対応する処理を統合同期実行プログラムと呼ぶ。
これらフィールドdependent_flagおよびフィールドmerged_flagは、後で説明するようにビデオデータの途中から再生を開始した場合のグラフィックス重畳表示処理を軽減するために用いる。
<データ配置とファイル構成>
実施の形態1と同一であるため、説明を省略する。
<再生処理>
本実施の形態と実施の形態1との違いは、プログラム実行処理にある。そのため、図15を参照しながら、プログラム実行処理に絞って説明する。なおここでは、ビデオデータの再生時間軸上の時刻Tから再生開始することを前提に説明する。図15は、ビデオディスクプレーヤ1(図1)のプログラム実行部10によるプログラム実行処理を示すフローチャートである。
まず、プログラム実行部10は、ビデオ再生部20からの割り込みを扱うための、割り込みハンドラを登録する(S41)。次に、プログラム実行部10は、ビデオ再生部20に対して割り込み再現命令を発行し割り込み再生が完了するまで待ち(S42)、再生対象のビデオデータファイルを指定して、再生開始を指示する(S43)。最後に、プログラム実行部10は、ビデオ再生との同期が必要ない処理を実行する(S44)。
次に、図16を参照しながら、割り込み再現処理について説明する。図16は、ビデオ再生部20による割り込み再現処理を示すフローチャートである。
ビデオ再生部20は、まず、再生開始時刻T以下で最大のtiming値を持つエントリpを同期タイミング情報から検索する(S51)。次に、エントリ番号iを1ずつデクリメントしながら、independent_flagの値が“1”(直前までのすべてのsync_info()のフィールドaction_idに対応する処理の結果に依存する)あるいはmerged_flagの値が“1”(直前までのすべてのsync_info()の処理結果をすべて反映したもの)のエントリを検索する(S52〜S56)。検索の結果、条件を満たすエントリが存在したら、そのエントリから、エントリ番号pまで割り込みを順に起動する(S57〜S59)。条件を満たすエントリが存在しなかった場合も、エントリ番号1から順にエントリ番号pまでの割り込みを順に起動する(S57〜S59)。
<具体例>
つづいて、図17を参照しながら、本実施の形態でのビデオディスクプレーヤ1におけるプログラム実行の具体例を説明する。図17は、同期タイミング情報の具体例を示す説明図である。
まず、ビデオデータの再生開始時刻T<T1の場合、ステップS42における割り込み再現の必要はなく、ビデオ再生に従って、エントリ番号1から5まで順にフィールドtimingがクロック23の値に一致するタイミングでビデオ再生部20はプログラム実行部10に対して割り込みを発生させる。ただし、エントリ番号3のエントリはmerged_flagの値が“1”となっているため、割り込みを発生させない。
次に、ビデオデータの再生開始時刻TがT1≦T<T2の場合:フィールドtimingの値がT1以下のエントリであるsync_info(1)のフィールドindependent_flagが“1”、sync_info(2)のフィールドindependent_flagおよびフィールドmerged_flagが“0”であるため、割り込み再現処理においてsync_info(1)、sync_info(2)に対応する割り込みを順に発生させる。
次に、ビデオデータの再生開始時刻TがT2≦T<T3の場合:sync_info(3)のmerged_flagの値が1であるため、割り込み再現処理においてsync_info(3)に対応する割り込みを発生させる。sync_info(3)はsync_info(2)における移動処理を行う必要が無いため、sync_info(1)およびsync_info(2)を順に実行するより処理量が少なくてすむ。すなわち時刻Tから再生開始するときに実際に再生開始可能となるまでの時間が短縮されることになる。
次に、ビデオデータの再生開始時刻TがT3≦T<T4の場合:sync_info(4)のindependent_flagの値が1であるため、割り込み再現処理において、sync_info(1)およびsync_info(2)に対応する割り込みを発生させる必要がなくsync_info(4)に対応する割り込みのみを発生させればよい。
次に、ビデオデータの再生開始時刻TがT4≦Tの場合:割り込み再現処理において、sync_info(4)およびsync_info(5)に対応する割り込みを発生させればよい。
以上説明したように、同期タイミング情報を設けることで、ビデオデータの任意の時刻に対応するグラフィックスを生成する際に、その時刻までのビデオ用クロックの変化を再現してやる必要がなく、再生開始までの時間が短縮される。また、independent_flagを設けることで、グラフィックスの表示にかかる時間をさらに短縮することができる。また、個々の処理の結果を統合した処理を用意することで、グラフィックスの表示にかかる時間をさらに短縮することができる。
上記のように、本発明の再生装置は、同期制御手段が、コンテンツデータの特定時刻から再生開始する前に、特定時刻より過去を指すタイミング指定情報を持つタイミング情報に従い、タイミング指定情報の若い順に期制御信号を送信するように構成されていてもよい。
これにより、コンテンツデータの任意時刻から再生する際に、その時刻までのビデオ用クロックの変化を再現してやる必要がなく、再生開始までの時間を短縮することが可能となる。
また、本発明の再生装置は、タイミング情報は複数存在しタイミング情報集合を構成し、タイミング情報はタイミング情報集合中の他のタイミング情報との依存関係を示す依存情報を含み、同期制御手段はコンテンツデータの特定時刻から再生開始する前に、依存情報をチェックし、他のタイミング情報に依存せず、特定時刻より過去を指しなおかつ最も未来を指しタイミング指定情報を持つタイミング情報に従い、タイミング指定情報の若い順に同期制御信号を送信するように構成されていてもよい。
これにより、不要な処理を実行する必要がなくなり、グラフィックスを表示し再生開始までの時間を短縮することが可能となる。
また、本発明に係る再生装置は、同期実行プログラムは複数存在し同期実行プログラム集合を構成し、同期実行プログラム集合は、同期実行プログラム集合中の他の複数の同期実行プログラム処理結果と同一の結果が得られる同期実行プログラム(統合同期実行プログラム)を含み、アクション指定情報で指定される同期実行プログラムが統合同期実行プログラムかどうかを識別する統合同期実行プログラム識別情報を含み、同期制御手段はコンテンツデータの特定時刻から再生開始する前に、統合同期実行プログラム識別情報をチェックし、統合同期実行プログラムを参照し、特定時刻より過去を指しなおかつ最も未来を指すタイミング指定情報を持つタイミング情報に従い、タイミング指定情報の若い順に同期制御信号を送信するように構成されていてもよい。
これにより、不要な処理を実行する必要がなくなり、グラフィックスを表示し再生開始までの時間を短縮することが可能となる。
〔実施の形態3〕
本発明のさらに他の実施の形態について図18に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記の実施の形態1、2において示した部材と同一の機能を有する部材には、同一の符号を付し、その説明を省略する。また、実施の形態1、2において定義した用語については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態は、高速再生等のいわゆる特殊再生を考慮した、実施の形態1の変形例である。よって、実施の形態1と共通する部分が多いため、実施の形態1と相違する部分に絞って説明する。
<システム構成>
実施の形態1と同一であるため、説明を省略する。
<プログラム実行部>
実施の形態1と同一であるため、説明を省略する。
<出力制御部>
実施の形態1と同一であるため、説明を省略する。
<ビデオ再生部>
実施の形態1とほぼ同一であるが、本実施の形態では、図4に示すように、同期制御部22は、デコーダ24の状態を監視するとともに、デコーダ24の状態と実行条件情報(後述するフィールドcondition())とに基づいて同期制御信号を送信する点が異なる。なお、そのために、同期タイミング情報は、同期実行プログラムが実行されるべき時のデコーダ24の状態を示す実行条件情報を含む。
すなわち、同期制御部22は、デコーダ24の再生状態(例:通常再生中・高速再生中・逆再生中・スロー再生中)を常に監視しており、再生状態に応じて同期タイミング情報中の各エントリに対する割り込みを発生させるかどうかを切り替える。具体的には、各エントリの後述するフィールドnormal、FF、FR、SF、SRを見て、例えば、フィールドnormalが“1”であれば通常再生中に割り込みを発生させ、フィールドFFが“1”であれば高速再生中に割り込みを発生させる。
<同期タイミング情報>
ここで、図18を参照しながら、本実施の形態の同期タイミング情報のデータ構造について説明する。図18(a)(b)は、同期タイミング情報のデータ構造を示す説明図である。
図18(a)に示すように、エントリsync_info()は、timing,target,action_id、condition()の4個のフィールドで構成される。このうち、フィールドtiming、フィールドtarget、フィールドaction_idについては実施の形態1と同一であるため、説明を省略する。なお、同期タイミング中の各sync_info()はフィールドtimingの値の順に並べられていることが好ましい。
図18(b)に示すように、フィールドcondition()(実行条件情報)は、サブフィールドnormal、FF、FR、SF、SRで構成される。サブフィールドnormalは、そのサブフィールドを含むsync_info()に関する割り込みが通常再生時に発生させるかどうかを示す。具体的には、“1”の場合に割り込みを発生させ、“2”の場合に割り込みを発生させない。同様に、サブフィールドFF、FRは、それぞれ順方向高速再生と逆方向高速再生の場合の割り込みの有無を示す。また、サブフィールドSF、SRは、それぞれ順方向スロー再生と逆方向スロー再生の場合の割り込みの有無を示す。
このように、再生状態に応じて割り込み処理を選択できるようにすることで、再生状態に応じた処理が可能になる。例えば、早送りの場合だけ特別なグラフィックスを表示したりすることで、ユーザはコンテンツを繰り返し楽しむことが可能になり、コンテンツの付加価値を向上させることが可能になる。
上記のように、本発明の再生装置は、タイミング情報は同期実行プログラムが実行されるべきデコード手段の状態を示す実行条件情報を含み、同期制御手段はデコード手段の状態を監視し、デコード手段の状態と上記実行条件情報に従って同期制御信号を送信するように構成されていてもよい。
これにより、再生状態に応じて割り込み処理を選択でき、再生状態に応じた処理が可能になる。例えば、早送りの場合だけ特別なグラフィックスを表示したりすることで、ユーザはコンテンツを繰り返し楽しむことが可能になり、コンテンツの付加価値を向上させることが可能になる。
〔実施の形態4〕
本発明のさらに他の実施の形態について図19から図27に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記の実施の形態1、2、3において示した部材と同一の機能を有する部材には、同一の符号を付し、その説明を省略する。また、実施の形態1、2,3において定義した用語については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
<システム構成>
図19は、本実施の形態に係るビデオディスクプレーヤ1′の構成の概略を示す機能ブロック図である。
ビデオディスクプレーヤ1′(再生装置)は、光ディスク2に記録されているAVデータを再生する装置である。図19に示すように、ビデオディスクプレーヤ1′は、ユーザ入力部3、ビデオ再生部20、合成部30、ディスク読み出し部50、プログラム実行部70、全体制御部(全体制御手段、提示手段)80、切替部(切替手段)90を備えて構成されている。
ディスク読み出し部50は、光ディスク2(コンテンツ記録媒体)からビデオデータ(コンテンツデータ)、プログラム(同期実行プログラム)、同期タイミング情報、プログラム管理情報を読み出す。そして、ディスク読み出し部50は、プログラムをプログラム実行部70に、ビデオデータおよび後述する同期タイミング情報をビデオ再生部20に、プログラム管理情報を全体制御部80にそれぞれ送る。
ユーザ入力部3は、ビデオディスクプレーヤ1′をユーザが操作するためのもので、リモートコントローラや機器のフロントパネルのボタンが相当する。ユーザ入力部3からは、ユーザに操作に従って、操作情報(ユーザ入力操作情報、再生制御情報)を生成し、それを全体制御部80に送る。ユーザ操作には、再生制御操作(再生開始や一時停止等)、メニュー操作(メニュー呼び出しやメニューからコンテンツへの復帰)、GUIの操作(カーソルの上下左右移動や決定等)がある。
全体制御部80は、ビデオディスクプレーヤ1′の全体的制御を司る。具体的には、ディスク読み出し部50によって読み出されたプログラム管理情報を基にプログラム実行部70、切替部90を制御する。また、ユーザ入力部3から入力されたユーザ入力を、プログラム管理情報に基づきプログラム実行部70および切替部90に転送する。
プログラム実行部70は、プログラムを実行する。具体的には、プログラム実行部70は、プログラムを実行することによって、ディスク読み出し部50、切替部90を経由してビデオ再生部20に対して制御を行うとともに、合成部30に対して、プログラム実行によって生成したビットマップデータを送る。なお、本実施の形態においては、プログラム実行部70が実行するプログラムは、出力データを生成するものに限定されない。
切替部90は、ビデオ再生部20に送る再生制御情報の送信元を切り替える。具体的には、切替部90は、全体制御部80からの制御(再生制御切替情報)に基づいて、全体制御部80から送られる再生制御情報とプログラム実行部70から送られる再生制御情報を切り替えてビデオ再生部20に送る。
ビデオ再生部20は、ディスク読み出し部50から送られるビデオデータをデコードし、非圧縮ビデオデータを合成部30に対して送る。また、ディスク読み出し部50から送られる同期タイミング情報を基に、プログラム実行部70に対する制御を行う。
合成部30は、プログラム実行部70から送られるビットマップデータおよびビデオ再生部20から送られる非圧縮ビデオデータを合成し、合成映像を出力する。
なお、本実施の形態において、前記の実施の形態における出力制御部40が含まれていないのは説明を簡略化するためであり、本実施の形態のビデオディスクプレーヤ1′に出力制御部40を組み入れるのは容易である。
<プログラム実行部>
図20は、上記プログラム実行部70の詳細な構成を示す機能ブロック図である。
上記のように、プログラム実行部70は、同期制御部22より受信した同期制御信号に従ってプログラムを実行する。また、プログラム実行部70は、同期制御部22より受信した同期制御信号に含まれるフィールドaction_idで指定されたプログラムを実行する。特に、本実施の形態では、プログラム実行部70は、ビデオ画像に重畳する画像データを生成するプログラムを実行する。
図20に示すように、プログラム実行部70は、メモリ11、CPU12、ビデオ再生制御部13、割り込み制御部14、ユーザ入力制御部15、インタフェース16、ディスク読み出し制御部17で構成される。
メモリ11は、ディスク読み出し部50から入力されたプログラムを一旦格納する。CPU12は、メモリ11に格納されたプログラムを読み出し、そのプログラムを実行する。CPU12は、プログラムの内容に応じて、ビデオ再生制御部13に対して指令を送ったり、合成部30に対してビットマップデータを送る。
ビデオ再生制御部13は、実行されたプログラムに基づきビデオ再生部20に対して制御信号を送る。制御信号としては、具体的には、再生開始・一時停止のような再生制御や、現在の再生時刻取得などの状態取得を目的とするものがある。割り込み制御部14は、プログラム実行部70の外からの割り込みを受け取り、それをCPU12に送る。CPU12は、割り込み制御部14より受けた割り込みに応じて割り込みハンドラを起動する。なお、割り込み元によって与えられる各種情報は、割り込み制御部14内のレジスタ(図示せず)に格納される。
ユーザ入力制御部15は、全体制御部80から転送されるユーザ入力情報を割り込みとして受け取り、それをCPU12に送る。CPU12は、ユーザ入力制御部15より受けた割り込みに応じて割り込みハンドラを起動する。なお、割り込みの際に与えられる各種情報は、ユーザ入力制御部15内のレジスタ(図示せず)に格納される。
インタフェース16は、全体制御部80とプログラム実行部70との間のインタフェースである。全体制御部80は、インタフェース16を通じてプログラム実行部70に対し、プログラム読み込みおよびプログラム実行を指示する。一方、プログラム実行部70はプログラムの実行が終了したとき、全体実行部80に対し、終了したことを通知する。
ディスク読み出し制御部17は、CPU12からの指令に基づき、ディスク読み出し部50の制御を行う。
<全体制御部>
図21は、上記全体制御部80の詳細な構成を示す機能ブロック図である。
全体制御部80は、上記のように、ディスク読み出し部50によって読み出されたプログラム管理情報に基づきビデオディスクプレーヤ1′の全体的制御を司る。
図21に示すように、全体制御部80は、メモリ81、ユーザ入力制御部82、CPU83、ディスク読み出し制御部84、切替制御部85、ビデオ再生制御部86、プログラム実行制御部87で構成される。
メモリ81は、ディスク読み出し部50から入力されたプログラム管理情報を一旦格納する。CPU83は、メモリ81に格納されたプログラム管理情報を読み出し、その情報に基づき、ユーザ入力制御部82、ディスク読み出し制御部84、切替制御部85、ビデオ再生制御部86、プログラム実行制御部87に対して指令を送る。
ユーザ入力制御部82は、ユーザ入力部3から送られるユーザ入力を、プログラム実行部70に対して転送すると同時にCPU83に送る。CPU83では、プログラム管理情報に基づいてユーザ入力を解釈し、プログラム実行制御部87やビデオ再生制御部86の制御を行う。
ディスク読み出し制御部84は、CPU83からの命令に従って、ディスク読み出し部50の制御を行う。
切替制御部85は、CPU83からの命令に従って切替部90の制御を行う。
ビデオ再生制御部86は、CPU83からの命令に従って、ビデオ再生部20に対して制御信号を送る。制御信号としては、再生対象のビデオデータの指定、読み出し開始、デコード開始、デコード終了、前後チャプタへの移動、高速再生開始などがある。
プログラム実行制御部87は、CPU83からの命令に従ってプログラム実行部70に対して制御情報を送る。
<ビデオ再生部>
実施の形態1とほぼ同一であるが、本実施の形態では、出力制御部40を備えないため、図4の同期制御部22から出ている出力側バッファ切替部43への制御を行わない点が異なっている。
<プログラム管理情報>
ここで、図22(a)(b)を参照しながら、光ディスク2に記録されているプログラム管理情報のデータ構造について説明する。
プログラム管理情報は、全体制御部80がプログラムの実行を制御するために必要となる各種情報をまとめたものであり、プログラム1個につき1個用意する。
光ディスク2中の全プログラム管理情報は、図22(a)に示すプログラム管理テーブルに格納する。number_of_pmiはプログラム管理テーブル中に格納しているプログラム管理情報の数を示す。なお、プログラム管理テーブル中の最初のエントリは、光ディスク2を挿入した際に自動的に実行されるプログラムを意味する。
図22(b)は、プログラム管理情報のデータ構造を示す説明図である。図22(b)に示すように、プログラム管理情報は、program_file_name、playback_control_mode、is_video_specified、video_file_name、start_mode、resume_flag、menu_flagで構成される。
フィールドprogram_file_name(プログラム指定情報)は、プログラムを格納したファイルのファイル名を指定するフィールドである。
フィールドplayback_control_modeは、ユーザ入力のうち再生制御操作を、全体制御部80からビデオ再生部20に対して送るかどうかを示すフラグであり、送らない場合には“0”、送る場合には“1”を設定する。後述するように、このフラグによって、ユーザによる再生制御操作に対するレスポンスを重視するか、プログラムの自由度を優先するかをコンテンツ作成者が選択することができる。
フィールドis_video_specifiedは、プログラムと同時に再生するビデオデータを指定するかどうかを示すフラグであり、指定しない場合には“0”、指定する場合には“1”を設定する。このフラグの値が“1”の場合、フィールドvideo_file_nameおよびフィールドstart_modeが後続する。
フィールドvideo_file_name(コンテンツデータ指定情報)は、プログラムと同時に再生するビデオデータファイルのファイル名を指定するフィールドである。前述のようにフィールドis_video_specifiedが“1”の場合にのみこのフィールドは存在する。後述するように、このフィールドを参照することで、プログラム実行前にビデオデータおよび同期タイミング情報の光ディスク2からの読み出し開始が可能になり、ビデオデータの再生開始までの時間を短縮することができる。
フィールドstart_mode(再生開始指示要否情報)は、フィールドvideo_file_nameで指定するビデオデータの表示開始を、フィールドprogram_file_nameで指定するプログラム中による命令で行うか、プログラムに関わらず行うかを示すフラグであり、前者の場合には“0”、後者の場合には“1”を指定する。前述のようにフィールドis_video_specifiedが“1”の場合にのみこのフィールドは存在する。後述するように、このフィールドを参照することで、ビデオデータの再生開始にあたって、プログラムとの同期を待つ必要があるかどうかが判断可能であり、待つ必要が無い場合、ビデオ再生開始までの時間をさらに短縮することができる。
フィールドmenu_flagは、このフィールドが含まれるプログラム管理情報で指定されるプログラムが、「メニューコンテンツ」かどうかを示すフラグである。メニューコンテンツとは、ユーザがメニュー呼び出し操作を行った際に実行されるコンテンツである。メニューコンテンツの場合には“1”、そうでない場合には“0”を指定する。
フィールドresume_flag(レジューム可否情報)は、このフィールドが含まれるプログラム管理情報で指定されるプログラムがレジュームの対象であるかどうかを示すフラグである。“レジューム”とは、コンテンツ再生時にユーザがメニュー読み出しを行った際に再生を一時停止したコンテンツを、ユーザがメニューから復帰操作した際に、一時停止した箇所から再生再開する機能である。レジュームの対象であるコンテンツの場合には“1”、そうでない場合には“0”を指定する。このようなフラグが必要である理由を以下に説明する。コンテンツはは、ビデオ再生に同期してプログラム実行されるものと、そうでないもの(例:ゲームプログラムの一部としてビデオが再生される)に分けられる。前者は容易にレジュームは可能であるが、後者をレジュームすることは難しい。すなわち、このフラグは、この両者を全体制御部80が容易に区別して、レジューム機能が可能でないコンテンツをレジュームしないようにしたり、ユーザにコンテンツがレジュームできないことを知らせることを可能にするために存在する。
<データ配置とファイル構成>
図23は、光ディスク2におけるデータ配置を示す説明図である。
図23に示すように、光ディスク2は、管理情報領域61とビデオデータ領域(コンテンツデータ格納領域)62とで構成される。管理情報領域61は、プログラム管理テーブルが格納されたプログラム管理情報格納領域61Cと、プログラムが格納されたプログラム格納領域(同期プログラム格納領域)61Aと、同期タイミング情報が格納された同期タイミング情報格納領域61Bとからなる。また、ビデオデータ領域62には、ビデオデータが格納されている。なお、個々のプログラム管理テーブル、同期タイミング情報、プログラム、ビデオデータはファイルとして管理される。
後述するように、光ディスク2挿入時に、すべてのプログラム管理情報を最初に読み込むため、プログラム管理テーブルの形で前方のプログラム管理情報格納領域61Cにまとめて記録してあることで、プログラム管理情報の読み出しに必要なシーク時間等を短縮することが可能である。
<再生処理>
つづいて、図24を参照しながら、ビデオディスクプレーヤ1′による再生処理について説明する。
図24は、全体制御部80による再生処理の全体の流れを示すフローチャートである。
まず、電源投入後、光ディスク2からのファイルシステム情報(図示せず)等の読み込み、および各処理部の初期化を行う(S61)。
次に、光ディスク2上のプログラム管理情報格納領域61Cから、プログラム管理テーブルを読み出し、メモリ81に格納し(S62)、メモリ81に格納されたプログラム管理テーブル中の1番目のプログラム管理情報を「現プログラム管理情報」として選択する。
次に、切替部90の設定を行う(S63)。具体的には、現プログラム管理情報中のフィールドplayback_control_modeが“1”であれば、切替部90が全体制御部80からの再生制御情報もビデオ再生部20に転送するように設定し、“0”であれば、プログラム実行部70からの再生制御情報のみをビデオ再生部20に転送するように設定する。
次に、現プログラム管理情報中のフィールドis_video_specifiedをチェックし(S64)、“1”であれば、ビデオ再生制御部13を通じて、ビデオ再生部20に対しフィールドvideo_file_nameで指定されるビデオファイルの読み出しおよびデコードの開始命令を発行する(S65)。さらに、表示準備が完了したときの振る舞いについても設定する。具体的には、フィールドstart_modeが“0”の場合には、プログラムからの指示があるまでは表示を行わず、“1”の場合には、準備が完了したときにはプログラムからの指示に関わらず表示を開始するように設定する。
次に、プログラム実行制御部87を通じて、プログラム実行部70に対して、フィールドprogram_file_nameで指定されるプログラムファイルの実行命令を発行する(S66)。
次に、プログラムの実行が終了するのを待つ(S67)。プログラム実行部70からプログラム実行完了が通知されたら、メニューコンテンツを現プログラム管理情報に設定し、ステップS63へジャンプする。なお、ここでの検索は、メモリ81中のプログラム管理テーブル中のフィールドmenu_flagが“1”のプログラム管理情報を検索することで実現できる。
<メニュー呼び出し処理およびレジューム処理>
つづいて、図25および図26を用いて、ビデオディスクプレーヤ1′によるメニュー呼び出し処理およびレジューム処理について説明する。
まず、図25を参照しながら、メニュー呼び出し処理について説明する。
コンテンツ再生中にユーザがメニュー呼び出し操作を行った場合、まず、ユーザ入力部3から全体制御部80に対しメニュー呼び出し命令が送られる。全体制御部80は、再生中のコンテンツに対応するプログラム管理情報のフィールドresume_flagをチェックし(S71)、値が“0”の場合、レジュームができない旨の警告をユーザに報知し(S76)、ビデオ再生部20に再生停止命令を発行する(S77)。
一方、ステップS71においてフィールドresume_flagの値が“1”の場合、ビデオ再生部20に対し停止命令を発行する(S72)。また、ビデオ再生部20のクロック23(図4)の現在の値をレジスタ(レジュームレジスタ。図示せず)に保存する命令を発行する(S73)。さらに、現プログラム管理情報を「レジューム対象プログラム管理情報」に設定する(S74)。
次に、全体制御部80はプログラム実行部70に対して停止命令を発行する(S75)。
その後、全体制御部80はメニューコンテンツを現プログラム管理情報に設定し、メニューコンテンツを図24のステップS63〜S66と同様の処理で実行する。
つづいて、図26を参照しながら、レジューム処理について説明する。
メニューコンテンツ実行中にユーザが復帰(レジューム)操作を行った場合、全体制御部80は、レジューム対象プログラム管理情報に設定されているプログラム管理情報を現プログラム管理情報に設定する(S81)。次に、プログラム実行部70に対し、現プログラム管理情報中のフィールドprogram_file_nameを指定してプログラム実行を指示する(S82)。次に、ビデオ再生部20に対し、レジュームレジスタに格納された値をTにセットし、実施の形態2における図16で説明した割り込み再現処理を実行するよう指示する(S83)。さらに、ビデオ再生部20に対し、前述のレジュームレジスタの値から再生を開始するよう指示する(S84)。これにより、レジューム処理を実現することができる。
一方、ユーザが復帰操作を行わずメニューコンテンツで表示されたメニューから別のコンテンツを選択した場合、全体制御部80はビデオ再生部20に対し、レジュームレジスタの値を破棄するよう命令を発行するとともに、レジューム対象プログラム管理情報の設定を解除する。
なお、以上の処理は、実施の形態2で説明したビデオデータを任意位置から再生するための装置構成およびデータ構成を組み合わせることで可能となっている。
<プログラム管理情報および処理の具体例>
図27を参照しながら本実施の形態におけるプログラム管理情報および処理の具体例を説明する。
(例1)ビデオ中心のコンテンツ
コンテンツを選択するとビデオが再生され、ユーザはその再生を制御でき、そのビデオ再生と同期したプログラムが実行されるという構成を備えるコンテンツのプログラム管理情報の設定例を下記に示す。
playback_control_mode=1
is_video_specified=1
start_mode=0
この設定について以下に説明する。ユーザが再生を制御できることから、再生制御操作に対するレスポンスを高めたいためplayback_control_modeに“1”を、また、事前にどのビデオデータを再生するかがわかっていることからis_video_specifiedに“1”を、さらに、ビデオ再生と同期するプログラムがあり、プログラムの実行が開始してからビデオ再生を開始する必要があるため、start_modeに“0”を設定している。
次に、図27を用いて、このときの処理の具体例を説明する。
まず、全体制御部80は、時刻T11からT12の間、初期化を行った後、ビデオ再生部20に対しビデオ再生開始、プログラム実行部70に対しプログラム実行開始をそれぞれ指示する。時刻T12からビデオ再生部20はビデオデータの読み込みおよびデコードを開始し、時刻T13にビデオ表示準備が可能になる。
一方、プログラム実行部70は、それと並行してプログラムを読み込み、プログラムの実行準備を行い、さらにプログラムの実行を開始する。プログラム実行部70は、プログラムの実行がビデオ再生開始の箇所に到達した時刻T14において、ビデオ再生開始命令をビデオ再生部20に発行する。
ビデオ再生がビデオデータの末尾に到達したとき、ビデオ再生部20はプログラム実行部70に対してビデオ再生終了の割り込みを発生させる。それを受け、プログラム中の割り込みハンドラはプログラムの終了処理を行い、全体制御部80に対しプログラム実行終了を通知する。
このように、本実施の形態における構成をとることにより、プログラム実行部70におけるプログラム実行準備と並行してビデオ再生部20でビデオデータ再生準備ができ、ビデオ再生開始までの時間を従来に比べて短縮することが可能となる。
なお、プログラムの同期タイミングがビデオ再生の先頭付近にない場合、ビデオ再生にあたってプログラム実行準備を待つ必要がないため、start_modeを“1”に設定することで時刻T13からT14の間の待ち時間も無くし、ビデオ再生の開始をさらに早めることも可能である。
また、時刻T15におけるユーザ再生制御操作「次のチャプタから再生」も全体制御部80から、プログラム実行部60を通らずビデオ再生部20に直接送られる。そのため、プログラム実行によるオーバーヘッドが少なく、ユーザ操作に対するレスポンスが向上する。
(例2)プログラム中心のコンテンツ
ゲームのようにプログラムが主であり、ビデオ再生はあくまでもコンテンツの一部であるコンテンツのプログラム管理情報の設定例を下記に示す。
playback_control_mode=0
is_video_specified=0
この設定について以下に説明する。ビデオ再生はプログラムが自由に制御したいため、playback_control_modeに“0”を、また、再生するビデオデータはプログラムの状態により変化するため、事前にどのビデオデータを再生するかわからないことからis_video_specifiedに“1”を設定している。
このように設定することで、(例1)の場合に比べ、ビデオ再生開始までに要する時間などはかかるものの、自由度の高いプログラムを作成することが可能である。
<バリエーション>
本実施の形態では、プログラム管理情報中のvideo_file_nameは1個のみ指定可能なデータ構造となっているが、複数指定できるようにしてもよい。このとき、指定の順番が再生順を表すものとすれば、ビデオ再生部20は、あるビデオデータの再生が終了すると同時に次のビデオデータの読み出し・デコード・再生を開始することが可能となり、複数のビデオデータを連続再生するコンテンツにおいてビデオデータ間のつなぎ目の時間を短縮できるという追加の効果が得られる。
また、本実施の形態では、resume_flagが“0”のコンテンツを再生中にメニュー呼び出しをしたときに、レジュームができない旨の警告を出すようにしているが、メニュー呼び出し以外のとき、例えばレジュームをしようとしたときに警告を出すようにしてもよい。
また、本実施の形態では、全体制御部80は、ビデオ再生部20に対する再生準備開始命令をプログラム実行部80に対するプログラム起動開始命令と同時に発行しているが、同時である必要はない。例えば、直前のコンテンツがビデオ再生のないプログラムのみのものであった場合、ビデオ再生部20は使用されていない。そのため、次のコンテンツのビデオ再生準備を直前のコンテンツ再生中に開始することで、ビデオ再生開始までの待ち時間をさらに短縮することが可能となる。このとき、各プログラムがビデオ再生を行うか行わないかを全体制御部80が容易に判断できるよう、プログラム管理情報中のprogram_file_nameで指定されるプログラムがビデオ再生を行うかどうかを示すフラグを追加してもよい。
また、本実施の形態では、プログラム管理情報中のvideo_file_nameでビデオデータファイルのファイル名が指定された場合、ビデオ再生部20に対してビデオデータファイルの読み出し、デコード開始を指示しているが、ディスク読み出し部50にビデオデータファイルの読み出しを指示してもよい。この場合、プログラム実行準備と並行して、光ディスク2からのビデオデータ読み出しができるため、ビデオ再生の開始を早めることが可能となる。
また、本実施の形態では、プログラム管理情報中の各種情報の解釈・送出は全体制御部80が行っているが、他の機能ブロック、例えばプログラム実行部70が行ってもよい。プログラム実行部70が解釈する場合、あるプログラムaに関するプログラム管理情報は別のプログラムbに格納され、プログラム実行部70はプログラムaの実行直前にプログラム管理情報とは別のプログラムbが解釈・送出を行うことで同様の機能を実現可能である。すなわち、本発明の本質は、対応するプログラムとは別のところにプログラム管理情報を格納する点にある。
ただし、本実施の形態のようにプログラム管理情報をプログラム外に配置することによって、上述のようにプログラム内に格納する場合に比べて、プログラム間の実行順序を変えても、既存のプログラムの書き換え・再コンパイル等の作業が不要という追加の効果が得られる。
また、本実施の形態ではプログラムからは1個のビデオデータ全区間を再生しているが、ビデオデータの一区間のみを再生するようにも拡張可能である。この場合、プログラム管理情報にビデオデータの再生開始・修了時刻を表すフィールドを追加すればよい。このことによって1個のビデオデータに対する多様な部分区間再生が可能になる。
また、本実施の形態では、切替制御部85および切替部90を備えるが、ビデオ中心のコンテンツのみを扱うのであれば不要である。この場合でも、ビデオ再生と同期したプログラムの実行が可能であり、かつ、プログラムによる再生制御操作に対するオーバーヘッドを排除することで、ユーザの再生制御操作に対するレスポンスを高められるという本発明の効果が得られることは言うまでもない。
また、本実施の形態では、ビデオ再生がビデオデータの末尾に到達したときに、ビデオ再生部20はプログラム実行部70に対してビデオ再生終了の割り込みを発生させているが、全体制御部80に対してビデオ再生終了を直接通知してもよい。この場合、終了の際の手順は、全体制御部80がビデオ再生終了を受けて、プログラム実行部70に対してプログラム実行終了命令を発行する、というものになる。このようにすれば、プログラム中の割り込みハンドラに不具合があり、ビデオ再生終了の割り込みを受けても終了しないという事態を回避でき、確実にプログラムを終了させることが可能になる、という追加の効果が得られる。
さらに、コンテンツがビデオ中心かプログラム中心かによって、ビデオ再生部20からのビデオ再生終了を、プログラム実行部70に通知するか全体制御部80に通知するかを切り替えてもよい。
〔実施の形態5〕
本発明のさらに他の実施の形態について図28から図33に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記の実施の形態1、2、3、4において示した部材と同一の機能を有する部材には、同一の符号を付し、その説明を省略する。また、実施の形態1、2、3、4において定義した用語については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
<システム構成>
図28は、本実施の形態に係るビデオディスクプレーヤ1″の構成の概略を示す機能ブロック図である。
ビデオディスクプレーヤ1″(再生装置)は、光ディスク2(コンテンツ記録媒体)に記録されているAVデータを再生する装置である。図28に示すように、ビデオディスクプレーヤ1″は、ユーザ入力部3、ビデオ再生部20、合成部30、ディスク読み出し部50、プログラム実行部70、全体制御部80′を備えて構成されている。
全体制御部80′は、ビデオディスクプレーヤ1″の全体的制御を司る。具体的には、ディスク読み出し部50によって読み出されたプログラム管理情報を基にプログラム実行部70を制御する。また、ユーザ入力部3から入力されたユーザ入力をプログラム実行部70に転送する。また、ビデオ再生部20から割り込みを用いて伝えられる情報に基づき、現在実行中のプログラムのビデオデータ再生がビデオデータの権利所有者に許可されたものかどうかを検証する。
プログラム実行部70は、プログラムを実行する。具体的には、プログラム実行部70は、プログラムを実行することによって、ディスク読み出し部50およびビデオ再生部20に対して制御を行うとともに、合成部30に対して、プログラム実行によって生成したビットマップデータを送る。なお、本実施の形態においては、プログラム実行部70が実行するプログラムは、出力データを生成するものに限定されない。
ビデオ再生部20は、ディスク読み出し部50から送られるビデオデータ(コンテンツデータ)をデコードし、非圧縮ビデオデータを合成部30に対して送る。また、ディスク読み出し部50から送られる同期タイミング情報を基に、プログラム実行部70に対する制御を行う。さらに、現在実行中のプログラムのビデオデータ再生がビデオデータの権利所有者に許可されたものかどうかを検証するための情報を、ビデオデータの割り込みを用いて全体制御部80′に伝える。
ディスク読み出し部50、合成部30およびユーザ入力部3については、実施の形態4と同一であるため説明を省略する。
なお、本実施の形態において、前記の実施の形態における出力制御部40および切替部90が含まれていないのは説明を簡略化するためであり、本実施の形態のビデオディスクプレーヤ1″に出力制御部40あるいは/および切替部90を組み入れるのは容易である。
<プログラム実行部>
実施の形態4と同一であるため、説明を省略する。
<全体制御部>
図29は、上記全体制御部80′の詳細な構成を示す機能ブロック図である。
全体制御部80′は、上記のように、ディスク読み出し部50によって読み出されたプログラム管理情報に基づきビデオディスクプレーヤ1″の全体的制御を司る。
図29に示すように、全体制御部80′は、メモリ81、ユーザ入力制御部82、CPU83、ディスク読み出し制御部84、検証部88、割り込み制御部89、プログラム実行制御部87で構成される。
メモリ81は、ディスク読み出し部50から入力されたプログラム管理情報を一旦格納する。CPU83は、メモリ81に格納されたプログラム管理情報を読み出し、その情報に基づき、ユーザ入力制御部82、ディスク読み出し制御部84、検証部88、割り込み制御部89、プログラム実行制御部87に対して指令を送る。
ユーザ入力制御部82は、ユーザ入力部3から送られるユーザ入力を、プログラム実行部70に対して転送すると同時にCPU83に送る。CPU83では、プログラム管理情報に基づいてユーザ入力を解釈し、プログラム実行制御部87の制御を行う。
ディスク読み出し制御部84は、CPU83からの命令に従って、ディスク読み出し部50の制御を行う。
割り込み制御部89は、ビデオ再生部20からの割り込みを扱う。割り込みの際には、ビデオ再生部20によって割り込み制御部89中のレジスタ(図示なし)に設定された現在実行中のプログラムのビデオデータ再生がビデオデータの権利所有者に許可されたものかどうかを検証するための情報を取得する。具体的には、光ディスク2中のビデオデータを特定するためのビデオデータファイル名と、そのビデオデータに付随している公開鍵データとを取得する。
検証部(検証手段)88は、上記のビデオデータファイル名と公開鍵データと、プログラム管理情報中の証明書データとを基に、現在実行中のプログラムのビデオデータ再生がビデオデータの権利所有者に許可されたものかどうかを検証する。検証方法については後述する。
<ビデオ再生部>
実施の形態1とほぼ同一であるが以下の点が異なる。
まず、本実施の形態では出力制御部40を備えないため、図4の同期制御部22から出ている出力側バッファ切替部43への制御を行わない。
また、ビデオデータ再生開始時に、ビデオデータに付随している公開鍵データをビデオデータから抽出する。抽出した公開鍵データを再生対象のビデオデータのファイル名とともに、割り込みによって全体制御部80′に対し通知する。
<プログラム管理情報>
ここで、図30(a)(b)を参照しながら、光ディスク2に記録されているプログラム管理情報のデータ構造について説明する。
プログラム管理情報は、全体制御部80′がプログラムの実行を制御するために必要となる各種情報をまとめたものであり、プログラム1個につき1個用意する。光ディスク2中の全プログラム管理情報は、図22(a)に示すプログラム管理テーブルに格納する。
図30(a)は、プログラム管理情報のデータ構造を示す説明図である。図30(a)に示すように、プログラム管理情報は、program_file_name、number_of_video_info、video_info()で構成される。
フィールドprogram_file_name(プログラム指定情報)は、プログラムを格納したファイルのファイル名を指定するフィールドである。
フィールドnumber_of_video_infoは、後述するフィールドvideo_info()の個数を指定するフィールドである。
フィールドvideo_info()は、このフィールドが含まれるプログラム管理情報に対するプログラムが使用するビデオデータに関する情報を格納するデータブロックであり、図30(b)に示すvideo_file_nameとcertificateの2フィールドで構成される。
フィールドvideo_file_name(コンテンツデータ指定情報)は、ビデオデータのファイル名を格納するフィールドである。
フィールドcertificate(許可情報)は、このフィールドが含むvideo_info()中のフィールドvideo_file_nameで指定されるビデオファイルを再生することを許可されたことを示す証明書データを格納するフィールドである。
次に、図31(a)(b)を参照しながら、証明書データの作成手順と証明書の検証手順について説明する。
まず、図31(a)に沿って、証明書データの作成手順について説明する。
最初に、ビデオデータの権利所有者は公開鍵暗号方式を用いて公開鍵(検証用情報)と秘密鍵のペアを作成する。なお、本実施の形態では、公開鍵暗号方式にRSAを使用するが、本発明はこれに限定されるものではない。プログラム作成者はプログラムにハッシュ処理を施し、ハッシュ値をビデオデータ権利所有者に提出する。ビデオデータ権利所有者は前述の秘密鍵で前述のハッシュ値を暗号化し、この暗号化した結果を証明書としてプログラム作成者に渡す。
この証明書は、前述のvideo_info()データブロックのcertificateフィールドに格納し、光ディスク2に記録する。また、公開鍵は対象となるビデオデータに所定の間隔で多重化し、光ディスク2に記録する。
次に、図31(b)に沿って、証明書データの検証手順について説明する。
最初に、ビデオデータから公開鍵を分離する。ビデオデータに対応するcertificateをプログラム管理情報から取り出し、前述の公開鍵で復号する。この復号した結果と、プログラムにハッシュ処理を施したものとを比較する。公開鍵暗号の特性上、対応する秘密鍵で暗号化されて無い場合、正しく復号できない。したがって、一致すればビデオデータの使用を許可されたプログラム、一致しなければ不正にビデオデータを使用しているプログラムと判断できる。
なお、上述のように所定の間隔で公開鍵を多重化しているため、公開鍵読み出しに伴うピックアップの移動が発生しないため、ビデオ再生までに公開鍵読み出しに伴う待ち時間がなく、再生開始までのレスポンス時間を短縮できる。
<データ配置とファイル構成>
実施の形態4と同一であるため、説明を省略する。
<再生処理>
つづいて、図32を参照しながら、ビデオディスクプレーヤ1″による再生処理について説明する。
図32は、全体制御部80′による再生処理の全体の流れを示すフローチャートである。
まず、電源投入後、光ディスク2からのファイルシステム情報(図示せず)等の読み込み、および各処理部の初期化を行う(S91)。
次に、光ディスク2上のプログラム管理情報格納領域61C(図23)から、プログラム管理テーブルを読み出し、メモリ81に格納する(S92)。
次に、プログラム実行制御部87を通じて、プログラム実行部70に対して、フィールドprogram_file_nameで指定されるプログラムファイルの実行命令を発行する(S93)。このとき、program_file_nameで指定されるプログラムファイルのハッシュ値を計算して、後述の検証処理のためにメモリ81に保持しておく。
次に、プログラムの実行が終了するのを待つ(S94)。プログラム実行部70からプログラム実行完了を示す割り込みが到着したら、メニューコンテンツを現プログラム管理情報に設定し、ステップS93へジャンプする。
<検証処理>
次に、図33を参照しながら、ビデオディスクプレーヤ1″による検証処理について説明する。検証処理とは、前述したように、現在実行中のプログラムが再生対象のビデオデータの権利所有者に使用の許可を得ているかどうかを調べるための処理である。
図33は、全体制御部80′による検証処理の流れを示すフローチャートである。なお、以下の処理はビデオ再生部20によって起動された割り込み処理として実現している。
CPU83は、ビデオ再生部20によって割り込み処理部89のレジスタ(図示せず)に設定された再生対象ビデオデータのファイル名およびそのビデオデータから分離された公開鍵を取得する(S101)。
次に、CPU83は、ビデオデータファイル名をキーとして対応するvideo_info()エントリをメモリ81に保持されたプログラム管理情報から検索する(S102)。そして、video_info()エントリが存在したら(S102でYES)、そこに含まれるcertificateを検証部88に送る。このとき、対応するvideo_info()エントリが存在しなければ(S103でNO)、CPU83は、許可されていないビデオ再生と判断しプログラム実行を終了する(S106)。
また、video_info()エントリが存在しなければ(S102でNO)、CPU83は、プログラム実行を終了する(S106)。
一方、video_info()エントリにcertificateが存在した場合(S103でYES)、以下の処理を実行する。
CPU83は、メモリ81から、ビデオデータファイル名に対応するvideo_info()エントリからcertificateを取り出す。次に、あらかじめ計算しておいた実行中のプログラムのハッシュ値および上記公開鍵をメモリ81から取り出し、certificateとともに検証部88に送り、検証部88に対し検証開始を指示する(S104)。
検証部88は、図31(b)の手順で検証を行う。すなわち、公開鍵でcertificateを復号した値と上記ハッシュ値とを比較する。一致しなかった場合、CPU83に対し不一致を知らせる。そして、CPU83は、検証部88から不一致が通知された場合、許可されていないビデオ再生と判断し(S105でNO)、プログラム実行を終了する(S106)。これに対して、CPU83は、検証部88から一致が通知された場合、許可されたビデオ再生と判断し(S105でYES)、プログラム実行を継続させる。
以上のデータ構造、装置構成および処理手順により、ビデオデータの権利所有者が許可しない再生を制限することが可能となる。
<バリエーション>
本実施の形態では、公開鍵暗号化方式を用いているが、公開鍵暗号化方式を用いず、video_file_nameのみを使用したとしても、ビデオデータの権利所有者が不正利用を容易にチェックできる。以下にその理由を説明する。
仮にこのような情報がなかった場合、プログラムが不正にビデオデータを利用していたとしてもプログラムを実行してみないと不正利用がわからない。大規模なプログラムの場合、プログラムの全処理をたどることは時間を要する。また、プログラムファイル中のバイナリデータから不正な再生を行っている箇所を検出する手法も、プログラム作成者が意図的にわかりづらくしていた場合、適用困難である。
しかし、video_file_nameで使用を宣言したビデオデータのみプログラムは再生可能という構成を取ることによって、ビデオデータの権利所有者がプログラムを実行することなく、プログラム外のvideo_file_nameという静的な情報を確認するだけで、ビデオデータの権利所有者がビデオデータの不正利用をチェックすることが可能になる。
また、本実施の形態では、ビデオ再生部20がビデオデータの読み出しを開始してから検証を開始しているが、video_file_nameで使用を宣言していないビデオデータについては読み出し自体を禁止してもよい。また、本実施の形態では、プログラム実行部70およびビデオ再生部20から直接ファイルアクセスを行っているが、プログラム実行部70およびビデオ再生部20とディスク読み出し部50との間にファイルシステム部を設け、ファイルへのアクセスはファイルシステム部を介して行うようにしてもよい。この場合に、video_file_nameで使用を宣言していないビデオデータについてはファイルとして参照できないようにしてもよい。
この場合、video_file_nameで使用を宣言していないビデオデータについて、不正なビデオデータ再生をビデオデータ読み出し前に検出できるため、検出までの時間が短縮される。
また、本実施の形態では、プログラムとビデオデータが一対一対応の場合を説明したが、本発明は多対多の関係にも適用可能であることは言うまでもない。すなわち1個のプログラムに対して複数のビデオデータの再生許可を与えてもよく、また1個のビデオデータに対する再生許可を複数のプログラムに与えてもよい。
また、本実施の形態では、プログラムからは1個のビデオデータ全区間を再生しているが、ビデオデータの一区間のみを再生するようにも拡張することは容易である。この場合、video_info()にビデオデータの再生開始・修了時刻を表すフィールドを追加すればよい。
また、本実施の形態では、1個のビデオデータ全区間で公開鍵・秘密鍵のペアは共通であったが、ビデオデータの区間ごとに変えるように拡張することは容易である。
例えば、コンテンツプロバイダA、Bによって提供されるコンテンツa、bと、別のコンテンツプロバイダCによるコンテンツa、bの紹介用メニューコンテンツcが含まれる光ディスクを考える。このとき、コンテンツcに使用を許可する区間のみa、bの公開鍵・秘密鍵のペアを変え、それらの秘密鍵で暗号化したコンテンツcのプログラムのcertificateを作成し、記録することによって、紹介用メニューコンテンツに対して必要な部分だけ再生許可区間を与えることができる。
また、本実施の形態では、すべてのビデオデータの再生について公開鍵とcertificateを用いた検証を行っていたが、ビデオデータの権利所有者が必要と考えるものだけ検証するように拡張することは容易である。
例えば、検証が必要なビデオデータにのみ公開鍵データを多重化しておき、公開鍵データが多重化されていない場合には、ビデオ再生部20がビデオファイル名のみを全体制御部80′に通知するように構成する。さらに、全体制御部80′が、図33のステップS102とS103との間で公開鍵の有無をチェックし、公開鍵がない場合は検証処理を終了するように構成する。これにより、ビデオデータの権利所有者が必要と考えるものだけ検証することが可能となる。したがって、検証が不要なものについて公開鍵とcertificateを用いた検証を省くことが可能になるため、処理速度の向上や消費電力の低減等の追加の効果が得られる。
また、本実施の形態では、ビデオデータ自体は暗号化されていないが、不正コピー防止のために暗号化されていてもよい。このときビデオデータの暗号化の鍵と再生許可の検証用の暗号化の鍵を別にすることによって、一方が不正に解読されたとしてももう一方に影響がないようにできる。
また、本実施の形態では、ビデオデータ中にプログラム検証のための公開鍵を多重化しているが、コンテンツプロバイダ以外が不正に作成できないことが保証できれば、ビデオデータ外に存在してもかまわない。
例えば、ビデオデータ1個に対してビデオデータ管理情報1個を用意することを考える。このとき、ビデオデータ管理情報に前記公開鍵(公開鍵a)を格納し、ビデオデータには別の公開鍵(公開鍵b)を多重化して、ビデオデータ管理情報には公開鍵bに対応する秘密鍵で暗号化したビデオデータ管理情報のハッシュ値を検証用データとしてビデオデータ管理情報に付加する。これにより、ビデオデータ管理情報が不正なものでないことが再生時に検証でき、その結果その中に含まれる公開鍵aも正規のものであることが保証できる。
また、本実施の形態では、プログラムとビデオデータは同一の読み込み専用記録媒体に保存されているが、別の媒体に保存されていた場合や書き換え型記録媒体にも本発明は適用可能である。
例えば、ビデオディスクプレーヤ1″にハードディスク等の記録媒体およびネットワーク接続機能を追加し、ネットワーク接続機能を通じて、光ディスク2に対する追加のプログラムをダウンロードし、ハードディスクに保存することを考える。このとき、ネットワーク上のサーバーから不正なプログラムをダウンロードしてしまうおそれがある。また、上記ハードディスク上の正規のプログラムが不正に改ざんされてしまうこともありうる。これに対して本発明を用いることで、このような不正なプログラムが光ディスク2上のビデオデータを無断で再生することを防ぐことが可能となる。
また、本実施の形態では、全体制御部80′を備えるが、実施の形態1のように全体制御部を備えないような実現方法も考えられる。この場合、プログラム実行部が検証を行うことになる。
また、本実施の形態では、プログラムのハッシュ値を暗号化しているが、異なるプログラムが異なる値に対応付けられる保証があればこれに限定されないのは言うまでもない。
〔実施の形態6〕
本発明のさらに他の実施の形態について図18に基づいて説明すれば、以下のとおりである。なお、前記の実施の形態4に類似するため、相違点のみ説明する。
<同期タイミング情報>
図18と同じデータ構造を持つ。ただし、各フィールドの意味づけが以下のように異なる。
まず、フィールドtimingに、割り込みタイミングを特定しない値ALWAYSを定義する。さらに、フィールドtimingの値がALWAYSの場合、フィールドcondition()中の各サブフィールドを、割り込み発生条件として解釈する。例えば、サブフィールドnormalが“1”の場合、同期制御部22が他の再生状態から通常再生に変化したときに、そのサブフィールドが含まれるsync_info()に対応する割り込みを発生させることを意味する。
<ビデオ再生部>
同期制御部22は、再生状態が変化した際にフィールドtimingの値がALWAYSであるsync_info()をチェックし、フィールドcondition()の値に応じて割り込みを発生する。
このようにすることで、再生状態の変化に応じた処理が可能となる。例えば、早送りになった瞬間だけ特別なグラフィックスを表示することで、ユーザはコンテンツを繰り返し楽しむことが可能になり、コンテンツの付加価値を向上させることが可能になる。
なお、本実施の形態では、再生状態の遷移先に応じて処理を変更したが、再生状態の遷移元に応じて処理を変更してもよい。また、遷移元と遷移先の組み合わせに応じて処理を変更してもよい。
なお、本発明は上述した各実施の形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施の形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
上述した実施の形態においては、プログラムおよびプログラム管理情報でビデオデータを直接参照しているが、それに限定されない。例えば、ビデオデータに関する各種情報(属性情報やランダムアクセス情報など)が含まれたビデオデータ管理情報や、ビデオデータの再生順を示したプレイリスト情報であってもかまわない。
上述した実施の形態においては、ビデオデータ、同期タイミング情報、プログラムは、光ディスク上に記録されているが、ハードディスクなど別の記録媒体に記録されていてもよい。また、ネットワーク越しの別の記録媒体に存在してもよい。また、それぞれのデータが別の記録媒体に存在してもよい。
上述した実施の形態においては、プログラムと同期タイミング情報を別のファイルで管理しているが、同一のファイルで管理することも考えられる。この場合、上述した実施の形態と異なり、同期タイミング情報はプログラム実行部からビデオ再生部に送られることになる。これにより、読み出すファイル数が減少するため、オーバーヘッドが減少するという追加の効果が生じる。
上述した実施の形態においては、プログラム実行部とビデオ再生部の出力の合成の対象を映像としているが、音声とした場合でも同様の仕組みは適用可能である。
上述した実施の形態においては、プログラム実行部は汎用のプログラムを実行することを想定しているが、これに限定されるものではない。例えば、静止画スライドショー再生のような単機能の処理部であっても本発明の効果を得ることは可能である。また、プログラム実行部がWEBブラウザであり、かつ、プログラムがHTML(HyperText Markup Language)とECMAScriptとを組み合わせたものである場合も同様である。
上述した実施の形態においては、プログラム(同期実行プログラム)や割り込みハンドラで実行される処理は画像を出力するものとしているが、特定の時間軸と同期して実行するものであれば何でもよいことは言うまでもない。ただし、出力制御部を用いてプログラム実行部が生成する画像や音声の出力制御を行うものは除くものとする。例えば、記録媒体中のデータを読み書きや、ネットワークへのアクセス、あるいはプログラム内部の変数をインクリメントすることであってもよい。
上述した実施の形態においては、プログラム実行部と出力制御部の両方について、同期タイミング情報に基づき制御しているが、両方を制御する必要はない。例えば、プログラム実行部では独自のクロックを用いてビットマップ生成のタイミングを設定して、出力制御部のみを制御したとしてもフレーム単位の制御が可能という効果が得られる。また逆に、出力制御部を備えず、プログラムへの割り込みのみを使用した場合でも、ポーリング処理のオーバーヘッドが無くなるという効果が得られる。
上述した実施の形態においては、フィールドaction_idに基づいて、出力制御部では表示バッファメモリの切替のみを行っているが、それに限定されるものではない。
上述した実施の形態においては、プログラム実行部および出力制御部を制御対象としているが、合成部を制御対象としてもよい。その場合、制御の種類としては、表示プレーンの順番を切り替えるなどが考えられる。
図34に、ビデオディスクプレーヤ1の他の構成例を示す。上述した実施の形態においては、出力制御部はプログラム実行部が生成する画像について切り替えているが、同期タイミング情報に従って画像や音声の出力を制御する場合なら何にでも適用可能である。図34はその一例である。この例では、ビデオ再生部20はビデオデータとビットマップデータを多重化したデータを入力として、非圧縮ビデオデータとビットマップデータを出力する。そのため、ビデオ再生部20は、非圧縮ビデオデータを生成するデコーダと、ビットマップデータ(第2の出力データ)を生成するデコーダ(出力生成手段)との2つを備えており、クロック23が生成する共通のクロックで動作する。また、出力制御部40はビデオ再生部20の出力するビットマップデータの出力を制御する。また、同期タイミング情報はプログラムからビデオ再生部20に渡す。この構成によれば、プログラムからビットマップデータの出力をビデオフレームの精度で制御することが可能となる。
上述した実施の形態においては、表示バッファメモリを2つ用いているが、それに限定されるものではない。表示バッファメモリを1つあるいは3つ以上を用いたとしても、本発明の効果を得ることは可能である。
上述した実施の形態においては、ビデオ再生部と並行して映像を出力するブロックは1個のプログラム実行部のみであるが、複数の映像出力ブロックを用いたとしても、本発明の効果を得ることは可能である。
上述した実施の形態においては、同期タイミング情報に基づく制御はビデオ再生部が行っているが、本発明はそれに限定されるものではない。ビデオ再生部と共通のクロックを用いている構成要素であれば、本発明の効果を得ることは可能である。
上述した実施の形態においては、複数の同期実行プログラムを実行した結果と同一の結果が得られる統合同期実行プログラムを指定するsync_info()中のmerged_flagの値を“1”に設定しているが、本発明はそれに限定されない。例えば、ビデオの途中から再生した場合には、警告を表示するプログラムや先頭から再生した場合と異なるグラフィックスを表示するプログラムを指定することなどにも適用可能である。
すなわち、本発明の再生装置は、データ取得手段は、コンテンツデータの途中から再生を開始した場合にのみ実行される途中再生同期実行プログラムを取得するものであり、同期タイミング情報は、タイミング指定情報とともに、実行すべき同期実行プログラムを示すアクション指定情報と、該アクション指定情報で示された同期実行プログラムが途中再生同期実行プログラムであるか否かを示す途中再生同期実行プログラム識別情報(例えばmerged_flagに“1”以外の値をセット)を含み、コンテンツデータの途中から再生を開始する際、同期制御手段は、途中再生同期実行プログラムであることを示す途中再生同期実行プログラム識別情報を含む同期タイミング情報のうち、再生を開始する時刻に最も近い過去の時刻を示すタイミング指定情報を含む同期タイミング情報と、該同期タイミング情報よりも後の時刻を示すタイミング指定情報を含む同期タイミング情報とに従って、タイミング指定情報が前のものから順に同期制御信号を送信するように構成されていてもよい。なお、途中再生同期実行プログラムは、他の同期実行プログラムと同じ光ディスクに記録されていてもよい。
これにより、再生開始時刻に応じて異なる出力を得られるため、ユーザはコンテンツを繰り返し楽しむことが可能になり、コンテンツの付加価値を向上させることができるという効果が得られる。すなわち、意図的に、途中から再生した場合に異なる結果となるように、コンテンツを作成することが可能となる。
なお、本発明の再生装置は、第1の出力生成部と第2の出力生成部とを備えた再生装置において、同期タイミング情報に従って、第1の出力生成部のクロックに基づき第2の出力生成部の出力を制御する手段を備えて構成されていてもよい。
さらに、本発明の再生装置は、前記同期タイミング情報は、第1の出力生成部からの出力を生成するための情報とは分離されていてもよい。
さらに、本発明の再生装置は、前記同期タイミング情報は、第1の出力生成部の時間軸上の時刻を含み、制御対象と制御内容とのうちの少なくとも一方を含んでいてもよい。
さらに、本発明の再生装置は、第1の出力生成部はビデオ再生部であり、第2の出力生成部はプログラム実行部であってもよい。
また、本発明の再生装置の再生方法は、第1の出力生成部と第2の出力生成部とを備える再生装置の再生方法であって、同期タイミング情報と第1の出力生成部のクロックとを比較するステップと、比較結果に従って制御信号を発行するステップとを含んでいてもよい。
また、本発明の記録媒体は、第1の出力生成部からの出力を生成するための情報および第2の出力生成部からの出力を生成するための情報を記録した記録媒体において、同期タイミング情報を記録し、該同期タイミング情報が、第1の出力生成部のクロックに基づき第2の出力生成部の出力を制御するためのものであってもよい。
さらに、本発明の記録媒体は、前記タイミング情報は第2の出力生成部からの出力を生成するための情報の近傍に記録してあってもよい。
さらに、本発明の記録媒体は、前記タイミング情報と前記プログラムとが同一ファイルに格納してあってもよい。
最後に、ビデオディスクプレーヤ1,1′,1″の各ブロックは、ハードウェアロジックによって構成してもよいし、次のようにCPUを用いてソフトウェアによって実現してもよい。
すなわち、ビデオディスクプレーヤ1,1′,1″は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアであるビデオディスクプレーヤ1,1′,1″の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記ビデオディスクプレーヤ1,1′,1″に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、ビデオディスクプレーヤ1,1′,1″を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
以上のように、上記実施形態に記載の再生装置は、コンテンツデータ、同期タイミング情報を取得するデータ取得手段と、クロック信号を生成するクロック生成手段と、上記クロック信号に従って上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記クロック信号に従って上記同期タイミング情報に含まれるタイミング指定情報によって指定されたタイミングで同期処理手段へ同期制御信号を送信する同期制御手段と、上記同期制御手段より受信した同期制御信号に従って、処理を行う同期処理手段とを備えることを特徴としている。
また、上記実施形態に記載の再生装置の制御方法は、データ取得手段、デコード手段、同期処理手段を備えた再生装置の制御方法であって、上記データ取得手段にて、コンテンツデータ、同期タイミング情報を取得するデータ取得ステップと、上記デコード手段にて、クロック信号に従ってコンテンツデータを再生出力のための再生データに変換するとともに、該クロック信号に従って上記同期タイミング情報に含まれるタイミング指定情報によって指定されたタイミングで上記同期処理手段へ同期制御信号を送信するデコードステップと、上記同期処理手段にて、受信した上記同期制御信号に従って、処理を行う同期処理ステップとを含むことを特徴としている。
上記の構成により、デコード手段が行うコンテンツデータの再生処理に同期して、同期処理手段に対して、処理を行うタイミングを規定する同期制御信号(トリガー)を供給することができる。ここで、同期処理手段が行う「処理」としては、例えば、データの出力制御や、プログラムの実行などが挙げられる。その他、ネットワークへのアクセスや、記録媒体の読み書きなどがその範疇に含まれる。
よって、コンテンツデータとは並行してコンテンツデータの再生処理に同期した処理を作成したり、コンテンツデータ供給後にコンテンツデータ再生処理に同期した処理を追加したりすることが容易になる。また、ストリーム同期処理手段からデコード手段の再生クロックを見に行く必要がないため、同期のために同期処理手段に負担がかからない。それゆえ、柔軟なコンテンツ作成が可能になる。
さらに、上記実施形態に記載の再生装置は、上記データ取得手段は、同期実行プログラムをさらに取得するものであり、上記同期処理手段は、上記同期制御手段より受信した同期制御信号に従って、上記同期実行プログラムを実行するプログラム実行手段を備えることを特徴としている。
上記の構成により、さらに、デコード手段が行うコンテンツデータの再生処理に同期して、同期処理手段に対して、同期実行プログラムを実行して出力データを生成するタイミングを規定する同期制御信号(トリガー)を供給することができる。
よって、同期処理手段からデコード手段の再生クロックを見に行く必要がないため、同期のために同期処理手段に負担がかからない。それゆえ、上記再生装置では、AVデータ等の再生に同期させて実行するプログラムを効率よく実行できる。
さらに、上記実施形態に記載の再生装置は、上記再生データ以外の出力である第2の出力データを生成する出力生成手段を備え、上記同期処理手段は、上記第2の出力データの出力を、上記同期制御手段より受信した同期制御信号に従って制御する出力制御手段を備えることを特徴としている。
上記の構成により、さらに、デコード手段が行うコンテンツデータの再生処理に同期して出力される、第2の出力データがある場合に、上記第2の出力データの出力を制御することができる。ここで、出力生成手段が生成する「第2の出力データ」としては、例えば、プログラムを実行することにより生成したグラフィックスデータや、ビデオデータに多重化されたビットマップデータをデコードしたデータが挙げられる。また、視覚的情報出力に限らず、聴覚的情報出力、例えばプログラムを実行することにより生成したオーディオデータや、ビデオデータに多重化されたオーディオデータをデコードしたデータもその範疇に含まれる。
よって、同期処理手段からデコード手段の再生クロックを見に行く必要がないため、同期のために同期処理手段に負担がかからない。それゆえ、上記再生装置では、AVデータ等の再生に同期させて、別のAVデータの出力制御を効率よく実行できる。
例えば、ビデオ再生の特定のタイミングでプログラムによるグラフィックス表示を開始/終了させる場合であっても、同期処理手段のソフトウェアで、クロックを見に行く必要がない。よって、処理のオーバーヘッドがなく、フレーム単位でタイミングを容易に一致させることが可能となる。すなわち、精度の高い制御が可能となり、処理効率にも優れている。
さらに、上記実施形態に記載の再生装置は、上記同期処理手段は、同期実行プログラムを実行することにより出力データを生成するとともに、上記同期制御手段より受信した同期制御信号に従って、当該出力データを出力することを特徴としている。
上記の構成により、さらに、デコード手段が行うコンテンツデータの再生処理に同期した、同期実行プログラムによるグラフィックス表示が容易になり、しかも効率よく行うことができる。
さらに、上記実施形態に記載の再生装置は、上記同期処理手段は、同期実行プログラムを上記同期制御手段より受信した同期制御信号に従って実行することにより出力データを生成するとともに、当該出力データを出力することを特徴としている。
上記の構成により、さらに、デコード手段が行うコンテンツデータの再生処理に同期した、同期実行プログラムによるグラフィックス表示が容易になり、しかも効率よく行うことができる。
さらに、上記実施形態に記載の再生装置は、上記同期処理手段は、同期実行プログラムが出力する出力データの出力を、上記同期制御手段より受信した同期制御信号に従って制御する出力制御手段を備えることを特徴としている。
上記の構成により、さらに、ビデオ再生の特定のタイミングでプログラムによるグラフィックス表示を開始/終了させる場合であっても、同期処理手段のソフトウェアで、クロックを見に行く必要がない。よって、処理のオーバーヘッドがなく、フレーム単位でタイミングを容易に一致させることが可能となる。すなわち、精度の高い制御が可能となり、処理効率にも優れている。
なお、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラム、同期タイミング情報を取得するデータ取得手段と、クロック信号を生成するクロック生成手段と、上記クロック信号に従って上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記クロック信号に従って上記同期タイミング情報に含まれるタイミング指定情報によって指定されたタイミングで同期処理手段へ同期制御信号を送信する同期制御手段と、上記同期実行プログラムを実行することにより出力データを生成するとともに、上記同期制御手段より受信した同期制御信号に従って、当該出力データを出力する同期処理手段とを備えた構成であってもよい。
また、上記実施形態に記載の再生装置の制御方法は、デコード手段および同期処理手段を備えた再生装置の制御方法であって、コンテンツデータ、同期実行プログラム、同期タイミング情報を取得するデータ取得ステップと、上記デコード手段にてクロック信号に従ってコンテンツデータを再生出力のための再生データに変換するとともに、該クロック信号に従って上記同期タイミング情報に含まれるタイミング指定情報によって指定されたタイミングで上記同期処理手段へ同期制御信号を送信するデコードステップと、上記同期処理手段にて、上記同期実行プログラムを実行することにより出力データを生成するとともに、受信した上記同期制御信号に従って、当該出力データを出力するプログラム実行出力ステップとを含む構成であってもよい。
上記の構成により、デコード手段が行うコンテンツデータの再生処理に同期して、同期処理手段に対して、同期実行プログラムの実行結果(出力データ)を出力するタイミングを規定する同期制御信号(トリガー)を供給することができる。
よって、同期処理手段からデコード手段の再生クロックを見に行く必要がないため、同期のために同期処理手段に負担がかからない。それゆえ、上記再生装置では、AVデータ等の再生に同期させて実行するプログラムを効率よく実行できる。
例えば、ビデオ再生の特定のタイミングでプログラムによるグラフィックス表示を開始/終了させる場合であっても、同期処理手段のソフトウェアで、クロックを見に行く必要がない。よって、処理のオーバーヘッドがなく、フレーム単位でタイミングを容易に一致させることが可能となる。すなわち、精度の高い制御が可能となり、処理効率にも優れている。
また、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラム、同期タイミング情報を取得するデータ取得手段と、クロック信号を生成するクロック生成手段と、上記クロック信号に従って上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記クロック信号に従って上記同期タイミング情報に含まれるタイミング指定情報によって指定されたタイミングで同期処理手段へ同期制御信号を送信する同期制御手段と、上記同期実行プログラムを上記同期制御手段より受信した同期制御信号に従って実行することにより出力データを生成するとともに、当該出力データを出力する同期処理手段とを備える構成であってもよい。
また、上記実施形態に記載の再生装置の制御方法は、デコード手段および同期処理手段を備えた再生装置の制御方法であって、コンテンツデータ、同期実行プログラム、同期タイミング情報を取得するデータ取得ステップと、上記デコード手段にてクロック信号に従ってコンテンツデータを再生出力のための再生データに変換するとともに、該クロック信号に従って上記同期タイミング情報に含まれるタイミング指定情報によって指定されたタイミングで上記同期処理手段へ同期制御信号を送信するデコードステップと、上記同期処理手段にて、上記同期実行プログラムを受信した上記同期制御信号に従って実行することにより出力データを生成するとともに、当該出力データを出力するプログラム実行出力ステップとを含む構成であってもよい。
上記の構成により、デコード手段が行うコンテンツデータの再生処理に同期して、同期処理手段に対して、同期実行プログラムを実行して出力データを生成するタイミングを規定する同期制御信号(トリガー)を供給することができる。
よって、同期処理手段からデコード手段の再生クロックを見に行く必要がないため、同期のために同期処理手段に負担がかからない。それゆえ、上記再生装置では、AVデータ等の再生に同期させて実行するプログラムを効率よく実行できる。
例えば、ビデオ再生の特定のタイミングでプログラムによるグラフィックス表示を開始/終了させる場合であっても、同期処理手段のソフトウェアで、クロックを見に行く必要がない。よって、処理のオーバーヘッドがなく、フレーム単位でタイミングを容易に一致させることが可能となる。すなわち、精度の高い制御が可能となり、処理効率にも優れている。
なお、データ取得手段としては、コンテンツデータ、同期実行プログラム、同期タイミング情報をコンテンツ記録媒体から読み出す読み出し手段であってもよいし、ネットワークを経由して取得する通信手段であってもよい。すなわち、コンテンツデータ、同期実行プログラム、同期タイミング情報の再生装置への供給は、種々の形態によって可能である。例えば、コンテンツデータ、同期実行プログラム、同期タイミング情報のすべてを記録したコンテンツ記録媒体から読み出してもよい。また、コンテンツデータ、同期実行プログラム、同期タイミング情報のいずれかをネットワーク経由で取得して、コンテンツ記録媒体から読み出した他のデータと組み合わせて再生してもよい。さらに、コンテンツ記録媒体に記録されている同期実行プログラム(コンテンツデータ、同期タイミング情報についても同様)の一部あるいは全部を、ネットワーク経由で取得した同期実行プログラムに置き換えて再生してもよい。
また、プログラムとしては、ビデオ画像に重畳する画像データ(静止画、アニメーション)を生成するプログラムのほか、例えば効果音やナレーション等の音声のみを出力するプログラムにも利用可能である。
さらに、上記実施形態に記載の再生装置は、上記同期処理手段は、上記同期制御手段より受信した同期制御信号に従って、上記同期実行プログラムを実行することにより出力データを生成するプログラム実行手段を備える構成であってもよい。
上記の構成により、コンテンツデータの再生に用いるクロック信号に基づく同期制御信号に従って、同期実行プログラムを実行できる。よって、コンテンツデータの再生に同期して同期実行プログラムの出力データを生成することが可能となる。
さらに、上記実施形態に記載の再生装置は、上記同期処理手段は、上記プログラム実行手段によって生成された出力データを、上記同期制御手段より受信した同期制御信号に従って出力する出力制御手段を備える構成であってもよい。
上記の構成により、コンテンツデータの再生に用いるクロック信号に基づく同期制御信号に従って、同期実行プログラムによって生成された出力データを出力できる。よって、コンテンツデータの再生に同期して同期実行プログラムの出力を制御することが可能となる。
さらに、上記実施形態に記載の再生装置は、上記同期タイミング情報は、上記タイミング指定情報とともにアクション指定情報を含み、上記同期制御手段は、タイミング指定情報で指定されたタイミングで上記プログラム実行手段へ同期制御信号を送信する際、当該タイミング指定情報に対応するアクション指定情報を同期制御信号に含めるものであり、上記プログラム実行手段は、上記同期制御手段より受信した同期制御信号に含まれるアクション指定情報で指定された同期実行プログラムを実行するものであることを特徴としている。
上記の構成により、プログラム実行手段が処理を行うタイミングとともに、実行する同期実行プログラムを、同期制御手段から制御できる。よって、プログラム実行手段に複数の同期実行プログラム(指令)を切り替えながら実行させることが可能となる。
さらに、上記実施形態に記載の再生装置は、上記コンテンツデータの途中から再生を開始する際、上記同期制御手段は、再生を開始する時刻よりも前の時刻を示すタイミング指定情報を含む同期タイミング情報に従って、タイミング指定情報が前のものから順に同期制御信号を送信するものであることを特徴としている。
上記の構成により、さらに、コンテンツデータの途中から再生を開始する際、その時刻までのビデオ用クロックの変化を再現してやる必要がなく、再生開始までの時間を短縮することが可能となる。
さらに、上記実施形態に記載の再生装置は、上記同期タイミング情報は、上記タイミング指定情報とともに、他の同期タイミング情報との依存関係を示す依存情報を含み、上記コンテンツデータの途中から再生を開始する際、上記同期制御手段は、他の同期タイミング情報に依存しないことを示す依存情報を含む同期タイミング情報のうち、再生を開始する時刻に最も近い過去の時刻を示すタイミング指定情報を含む同期タイミング情報と、該同期タイミング情報よりも後の時刻を示すタイミング指定情報を含む同期タイミング情報とに従って、タイミング指定情報が前のものから順に同期制御信号を送信するものであることを特徴としている。
上記の構成により、さらに、コンテンツデータの途中から再生を開始する際、再生開始時刻に合致したグラフィックスの表示等の処理を直ちに実行できるため、不要な処理を実行する必要がなくなり、再生開始までの時間を短縮することが可能となる。
さらに、上記実施形態に記載の再生装置は、上記データ取得手段は、複数の同期実行プログラムを実行した結果と同一の結果が得られる統合同期実行プログラムを取得するものであり、上記同期タイミング情報は、上記タイミング指定情報とともに、実行すべき同期実行プログラムを示すアクション指定情報と、該アクション指定情報で示された同期実行プログラムが統合同期実行プログラムであるか否かを示す統合同期実行プログラム識別情報を含み、上記コンテンツデータの途中から再生を開始する際、上記同期制御手段は、統合同期実行プログラムであることを示す統合同期実行プログラム識別情報を含む同期タイミング情報のうち、再生を開始する時刻に最も近い過去の時刻を示すタイミング指定情報を含む同期タイミング情報と、該同期タイミング情報よりも後の時刻を示すタイミング指定情報を含む同期タイミング情報とに従って、タイミング指定情報が前のものから順に同期制御信号を送信するものであることを特徴としている。
上記の構成により、さらに、コンテンツデータの途中から再生を開始する際、再生開始時刻に合致したグラフィックスの表示等の処理を直ちに実行できるため、不要な処理を実行する必要がなくなり、再生開始までの時間を短縮することが可能となる。
さらに、上記実施形態に記載の再生装置は、上記データ取得手段は、上記コンテンツデータの途中から再生を開始した場合にのみ実行される途中再生同期実行プログラムを取得するものであり、上記同期タイミング情報は、上記タイミング指定情報とともに、実行すべき同期実行プログラムを示すアクション指定情報と、該アクション指定情報で示された同期実行プログラムが途中再生同期実行プログラムであるか否かを示す途中再生同期実行プログラム識別情報を含み、上記コンテンツデータの途中から再生を開始する際、上記同期制御手段は、途中再生同期実行プログラムであることを示す途中再生同期実行プログラム識別情報を含む同期タイミング情報のうち、再生を開始する時刻に最も近い過去の時刻を示すタイミング指定情報を含む同期タイミング情報と、該同期タイミング情報よりも後の時刻を示すタイミング指定情報を含む同期タイミング情報とに従って、タイミング指定情報が前のものから順に同期制御信号を送信するものであることを特徴としている。
上記の構成により、さらに、再生開始時刻に応じて割り込み処理を選択でき、再生状態に応じた処理が可能になる。例えば、ある時刻から再生を開始した場合だけ特別なグラフィックスを表示したりすることで、ユーザはコンテンツを繰り返し楽しむことが可能になり、コンテンツの付加価値を向上させることが可能になる。
さらに、上記実施形態に記載の再生装置は、上記同期タイミング情報は、上記同期実行プログラムが実行されるべき時の上記デコード手段の状態を示す実行条件情報を含み、上記同期制御手段は、上記デコード手段の状態を監視するとともに、該状態と上記実行条件情報とに基づいて上記同期制御信号を送信するものであることを特徴としている。
上記の構成により、さらに、再生状態に応じて割り込み処理を選択でき、再生状態に応じた処理が可能になる。例えば、早送りの場合だけ特別なグラフィックスを表示したりすることで、ユーザはコンテンツを繰り返し楽しむことが可能になり、コンテンツの付加価値を向上させることが可能になる。
さらに、上記実施形態に記載の再生装置は、上記デコード手段はコンテンツデータとしてのビデオデータを再生してビデオ画像を出力するものであり、上記プログラム実行手段は、上記同期実行プログラムとして、上記ビデオ画像に重畳する画像データを生成するプログラムを実行するものであることを特徴としている。
上記の構成により、デコード手段で再生したビデオ画像に、当該ビデオ画像の再生に同期してプログラム実行手段で生成した画像データを重畳させて出力することが可能となる。なお、プログラム実行手段で生成した画像データは、静止画であってもよいし、アニメーションであってもよい。
また、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラムを取得するデータ取得手段と、上記同期実行プログラムを実行するプログラム実行手段と、クロック信号を生成するクロック生成手段と、上記クロック信号に従って上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記クロック信号に従って、所定のタイミングで上記プログラム実行手段へ同期制御信号を送信する同期制御手段と、外部からの再生制御操作を受け付け再生制御情報に変換する入力手段とを備え、上記デコード手段は、上記入力手段からの再生制御情報で制御され、上記プログラム実行手段は、少なくとも上記同期制御手段より受信した同期制御信号に従って同期実行プログラムを実行するものであることを特徴としている。
また、上記実施形態に記載の再生装置の制御方法は、データ取得手段、プログラム実行手段、クロック生成手段、デコード手段、同期制御手段、入力手段を備えた再生装置の制御方法であって、上記データ取得手段にて、コンテンツデータ、同期実行プログラムを取得するデータ取得ステップと、上記プログラム実行手段にて、上記同期実行プログラムを実行するプログラム実行ステップと、上記クロック生成手段にて、クロック信号を生成するクロック生成ステップと、上記デコード手段にて、上記クロック信号に従って上記コンテンツデータを再生出力のための再生データに変換するデコードステップと、上記同期制御手段にて、上記クロック信号に従って、所定のタイミングで上記プログラム実行手段へ同期制御信号を送信する同期制御ステップと、上記入力手段にて、外部からの再生制御操作を受け付け再生制御情報に変換する入力ステップとを含み、上記デコードステップにおいて、上記デコード手段が上記入力手段からの再生制御情報に従って動作し、上記プログラム実行ステップにおいて、上記プログラム実行手段が少なくとも上記同期制御手段より受信した同期制御信号に従って同期実行プログラムを実行することを特徴としている。
上記の構成により、コンテンツデータの再生に同期した同期実行プログラムの実行が可能であり、かつ、外部からの再生制御操作(ユーザの操作)により同期実行プログラムを介することなくコンテンツ再生を制御できる。それゆえ、同期実行プログラムを介することによるオーバーヘッドを排除し、ユーザによる再生制御操作に対するレスポンスを高めることが可能になる。
ここで、同期制御手段がプログラム実行手段へ同期制御信号を送信する「所定のタイミング」としては、例えば、コンテンツデータの再生終了時や、同期タイミング情報で指定されたタイミングが挙げられる。
また、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラム、プログラム管理情報を取得するデータ取得手段と、上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記同期実行プログラムを実行するプログラム実行手段とを備え、さらに、上記プログラム管理情報には、同時に再生出力を行うコンテンツデータおよび同期実行プログラムをそれぞれ指定するプログラム指定情報およびコンテンツデータ指定情報が含まれており、上記プログラム指定情報で指定された同期実行プログラムの実行を上記プログラム実行手段に指示するとともに、上記コンテンツ指定情報で指定されたコンテンツデータの変換を上記デコード手段に指示または上記コンテンツ指定情報で指定されたコンテンツデータの取得を上記データ取得手段に指示する全体制御手段を備えることを特徴としている。
また、上記実施形態に記載の再生装置の制御方法は、デコード手段、プログラム実行手段、データ取得手段を備えた再生装置の制御方法であって、上記データ取得手段にて、コンテンツデータ、同期実行プログラム、プログラム管理情報を取得するデータ取得ステップと、デコード手段にて上記コンテンツデータを再生出力のための再生データに変換するデコードステップと、プログラム実行手段にて上記同期実行プログラムを実行するプログラム実行ステップとを含み、さらに、上記プログラム管理情報には、同時に再生出力を行うコンテンツデータおよび同期実行プログラムをそれぞれ指定するプログラム指定情報およびコンテンツデータ指定情報が含まれており、上記プログラム指定情報で指定された同期実行プログラムの実行を上記プログラム実行手段に指示するとともに、上記コンテンツ指定情報で指定されたコンテンツデータの変換を上記デコード手段に指示または上記コンテンツ指定情報で指定されたコンテンツデータの取得を上記データ取得手段に指示する再生実行指示ステップを含むことを特徴としている。
上記の構成により、同期実行プログラムの実行と独立して、コンテンツデータの記録媒体からの読み出し、デコード、再生の開始が可能になり、コンテンツデータの再生開始までの時間を短縮することができる。特に、コンテンツデータの取得をデータ取得手段に指示することにより、先読みが可能となる。なお、上記の構成において、同期実行プログラムは、出力データを生成するものに限定されない。
さらに、上記実施形態に記載の再生装置は、上記プログラム管理情報は、コンテンツデータの再生開始に同期実行プログラムからの指示を必要とするか否かを示す再生開始指示要否情報を含み、上記デコード手段は、上記再生開始指示要否情報が同期実行プログラムからの指示を必要とする旨を示す場合、同期実行プログラムからの指示があるまでコンテンツデータの再生を開始しないことを特徴としている。
上記の構成により、さらに、同期実行プログラムの実行と独立して、コンテンツデータの記録媒体からの読み出し、デコードが可能になり、コンテンツデータの再生開始までの時間を短縮できると同時に、同期実行プログラムの実行とコンテンツデータ再生の開始の位相を合わせることが可能になる。
また、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラム、プログラム管理情報を取得するデータ取得手段と、上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記同期実行プログラムを実行するプログラム実行手段と、外部からの再生制御操作を受け付け再生制御情報に変換する入力手段と、上記入力手段からの再生制御情報と上記プログラム実行手段からの再生制御情報とを、上記プログラム管理情報に含まれる再生制御切替情報に基づき切り替えてデコード手段に送る切替手段と、を備えることを特徴としている。
上記の構成により、ユーザによる再生制御と同期実行プログラムによる再生制御とを切り換えることが可能となる。よって、ユーザによる再生制御操作に対するレスポンスを重視するか、プログラムの自由度を優先するかを、コンテンツ作成者が選択してコンテンツを制作することができる。なお、上記の構成において、同期実行プログラムは、出力データを生成するものに限定されない。
また、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラム、プログラム管理情報を取得するデータ取得手段と、上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記同期実行プログラムを実行するプログラム実行手段とを備え、さらに、コンテンツデータおよび同期実行プログラムの再生出力を一時停止および一時停止した箇所から再生を再開する全体制御手段を備え、上記プログラム管理情報は、コンテンツデータおよび同期実行プログラムの再生出力を一時停止後に、一時停止した箇所から再生を再開するレジューム機能が可能か否かを示すレジューム可否情報を含み、上記レジューム可否情報がレジューム機能が可能でないことを示している場合、上記全体制御手段は、一時停止した箇所からの再生開始を指示しないことを特徴としている。
上記の構成により、レジュームができないコンテンツでは、レジュームを行わない。よって、安定した動作が可能となるとともに、ユーザの混乱を減らすことができる。
また、上記実施形態に記載の再生装置は、コンテンツデータ、同期実行プログラム、プログラム管理情報を取得するデータ取得手段と、上記コンテンツデータを再生出力のための再生データに変換するデコード手段と、上記同期実行プログラムを実行するプログラム実行手段とを備え、さらに、上記プログラム管理情報は、コンテンツデータおよび同期実行プログラムの再生出力を一時停止後に、一時停止した箇所から再生を再開するレジューム機能が可能か否かを示すレジューム可否情報を含み、ユーザから一時停止の指示、一時停止を要する動作の指示、一時停止した箇所から再生を再開する指示のいずれかの指示を受けたとき、上記レジューム可否情報がレジューム機能が可能でないことを示している場合、レジューム機能が可能でない旨をユーザに提示する提示手段を備えることを特徴としている。
上記の構成により、レジュームができないコンテンツに関して、ユーザから一時停止の指示、一時停止を要する動作の指示、一時停止した箇所から再生を再開する指示を受けたときに、その動作を実行する前に、ユーザに警告メッセージ等を提示することができる。よって、ユーザの混乱を減らすことができる。
なお、上記動作の指示の例としては、ユーザによるメニュー呼び出しの指示およびメニューからの復帰の指示があり、上記構成はこれらに対して特に好適である。また、提示手段による提示の例としては、ランプの点灯、警報音、表示画面へのメッセージ表示などが挙げられる。また、上記の構成において、同期実行プログラムは、出力データを生成するものに限定されない。
また、上記実施形態に記載のコンテンツ記録媒体は、上記の再生装置に供給可能であるように、コンテンツデータ、同期実行プログラム、同期タイミング情報のうちの少なくとも一つが記録されていることを特徴としている。
さらに、上記実施形態に記載のコンテンツ記録媒体は、上記の再生装置に供給可能であるように、コンテンツデータ、同期タイミング情報が記録されており、上記同期タイミング情報が上記コンテンツデータと分離されていることを特徴としている。
上記の構成により、コンテンツデータ(ビデオデータ)と同期タイミング情報とを別々に管理することで、1個のコンテンツデータを複数の同期実行プログラムで共有することが容易になる。また、同期タイミング情報と同期実行プログラムを別のファイルとして管理することで、プログラム作成後にビデオデータを編集した場合でも、同期実行プログラムを書き換える必要がない。
さらに、上記実施形態に記載のコンテンツ記録媒体は、上記の再生装置に供給可能であるように、同期実行プログラム、同期タイミング情報が記録されており、上記同期タイミング情報が上記同期実行プログラムの近傍に記録されていることを特徴としている。
上記の構成により、同期実行プログラムの実行にあたってのこれらのデータの読み出しの際のピックアップの移動距離が小さくて済む。よって、再生開始までの待ち時間が短縮されるとともに、ビデオ再生の途切れの防止、電力消費の抑制、騒音の抑制が可能となる。
さらに、上記実施形態に記載のコンテンツ記録媒体は、上記の再生装置に供給可能であるように、同期実行プログラム、同期タイミング情報が記録されており、上記同期タイミング情報が上記同期実行プログラムと同一ファイルに格納されていることを特徴としている。
上記の構成により、読み出すファイル数が減少するため、読み出しの際のオーバーヘッドが減少する。
また、上記実施形態に記載のデータ構造は、再生装置にて再生されるコンテンツデータを格納するコンテンツデータ格納領域と、再生装置にて上記コンテンツデータの再生と同期して実行される同期実行プログラムを格納する同期実行プログラム格納領域と、再生装置が上記コンテンツデータを再生するためのクロック信号に基づいて、上記同期実行プログラムが実行されるタイミングを指定した同期タイミング情報を格納する同期タイミング情報格納領域とを含むことを特徴としている。
上記の構成により、これらのデータを格納したコンテンツ記録媒体を実現できため、これらのデータを再生装置に簡便に供給することが可能となる。
また、上記実施形態に記載のデータ構造は、再生装置にて再生されるコンテンツデータを格納するコンテンツデータ格納領域と、再生装置にて上記コンテンツデータの再生と同期して実行される同期実行プログラムを格納する同期実行プログラム格納領域と、同時に再生出力を行うコンテンツデータおよび同期実行プログラムをそれぞれ指定するプログラム指定情報およびコンテンツデータ指定情報を含むプログラム管理情報を格納するプログラム管理情報格納領域とを含むことを特徴としている。
上記の構成により、これらのデータを格納したコンテンツ記録媒体を実現できため、これらのデータを再生装置に簡便に供給することが可能となる。
さらに、上記実施形態に記載のデータ構造は、上記プログラム管理情報には、同期実行プログラムと同時に再生出力を行うコンテンツデータの使用を許可する許可情報が少なくとも含まれており、上記コンテンツデータには、上記許可情報を検証するための検証用情報が含まれていることを特徴としている。
上記の構成により、さらに、これらのデータを格納したコンテンツ記録媒体を実現できため、これらのデータを再生装置に簡便に供給することが可能となる。