説明

再生装置、再生方法、再生プログラムおよび記録媒体

大容量の再生専用光ディスクで、より自由度の高いインタラクティブ機能を容易に実現可能とする。プレーヤの機能に対応する仮想プレーヤモデルを構築し、Javaにより記述する。BDBasicPlayer210は、ユーザ入力やプレーヤの状態遷移を検出してイベントを発生させる。リスナインターフェイスを実装したオブジェクト211は、受信したいイベントに対応するイベントリスナ登録を、当該イベントが発生する前にBDBasicPlayer210に対して行い、不要になったら削除する。BDBasicPlayer210は、イベントが発生されると対応するイベントリスナ登録がなされたオブジェクト211に対してイベントを送信する。オブジェクト211は、受信したイベントに応じたメソッドを実行する。イベントとメソッドの関係を柔軟に設定でき、複雑なインタラクティブ機能も容易に実現可能である。

【発明の詳細な説明】
【技術分野】
この発明は、ブルーレイディスク(Blu−ray Disc)などの大容量の記録媒体に記録されたプログラムに対するユーザによるインタラクティブな操作を可能とする再生装置、再生方法、再生プログラムおよび記録媒体に関する。
【背景技術】
近年、記録可能で記録再生装置から取り外し可能なディスク型記録媒体の規格として、Blu−ray Disc(ブルーレイディスク)規格が提案されている。Blu−ray Disc規格では、記録媒体として直径12cm、カバー層0.1mmのディスクを用い、光学系として波長405nmの青紫色レーザ、開口数0.85の対物レンズを用いて、最大で27GB(ギガバイト)の記録容量を実現している。これにより、日本のBSディジタルハイビジョン放送を、画質を劣化させることなく2時間以上記録することが可能である。
この記録可能光ディスクに記録するAV(Audio/Video)信号のソース(供給源)としては、従来からの、例えばアナログテレビジョン放送によるアナログ信号によるものと、例えばBSディジタル放送をはじめとするディジタルテレビジョン放送によるディジタル信号によるものとが想定されている。Blu−ray Disc規格では、これらの放送によるAV信号を記録する方法を定めた規格は、既に作られている。
一方で、現状のBlu−ray Discの派生規格として、映画や音楽などが予め記録された、再生専用の記録媒体を開発する動きが進んでいる。映画や音楽を記録するためのディスク状記録媒体としては、既にDVD(Digital Versatile Disc)が広く普及しているが、このBlu−ray Discの企画に基づいた再生専用光ディスクは、Blu−ray Discの大容量および高速な転送速度などを活かし、ハイビジョン映像を高画質なままで2時間以上収録できる点が、既存のDVDとは大きく異なり、優位である。
再生専用のDVDビデオ規格においては、メニュー画面上に配置されたボタン画像などを用いて、インタラクティブな機能を実現している。例えば、DVDビデオにより動画を再生中に、リモートコントロールコマンダなどを用いてメニュー画面を呼び出し、メニュー画面上に配置されたボタン画像を選択して再生場面を変更するなどの処理が可能であった。
DVDビデオの場合、メニュー画面を固定的なサブピクチャデータにより構成し、メニュー画面が呼び出された際に、動画データにこのサブピクチャデータを合成して表示する。ボタン画像データもこのサブピクチャデータに含まれる。特許文献「特開平10−308924号公報」に、このように動画データにサブピクチャデータを合成して記録可能なDVDに記録する構成が記載されている。
しかしながら、再生専用のDVDビデオ規格では、単純なコマンドにより動作が記述されているため、複雑なインタラクティブ機能を実現することが難しいという問題点があった。そのため、複雑なインタラクティブ機能を再生専用のDVDビデオ規格で実現することは、制作者にとって大きな負担になるという問題点があった。
また、再生専用のDVD規格では、プログラムの動作としては、コマンドが羅列されたコマンド領域を一行ずつ実行していく単純なもので、マルチスレッドプログラミングやイベント駆動のプログラミングを行うことができなかった。DVDビデオ規格は、インターネットなどのネットワークにアクセスする機能を有していないが、ネットワークアクセス機能を実現することを考えた場合、ネットワークからの応答やユーザからの応答は待ち時間が長く、マルチスレッドで処理を行えるシステム構成であることが、パフォーマンスの向上に非常に有効である。
さらに、このDVDビデオ規格では、映像および音声が多重化されているAV(Audio/Video)ストリーム中にもコマンドが埋め込まれている。AVストリームの再生を進めていくに従ってコマンドを取得し、実行するという、いわば芋づるを辿るような動作モデルとなっている。そのため、タイトル選択のメニュー画面や分岐のあるマルチストーリーにおいて、ユーザがボタンを選択実行したときに、始めて次の動作が決まる。したがって、DVDビデオ規格では、コマンドを先読みして分岐予測や投機実行を行うといった高速処理技術が適用できないという問題点があった。
また、ディスクを制作するオーサリングの観点からも、再生専用のDVDビデオ規格は、問題があった。一例として、AVストリーム上のある時刻に表示されるように想定されたボタン表示に対して、ボタン表示のタイミングを時間軸上で前あるいは後ろにずらしたい場合を考える。例えば、第1図に示されるように、AVストリーム上のボタン表示開時刻t1からボタン表示終了時刻t2まで表示されるように想定されたボタンを、時刻t1より前の時刻t3から表示させるように変更する。
周知のように、再生専用のDVDビデオ規格では、AVストリームは、MPEG2(Moving Pictures Experts Group 2)の規定に従い符号化され、パケッタイズされる。再生出力の時刻管理は、pts(Presentation Time Stamp)により行われる。第1図の例では、ボタンの表示開始時刻を、時刻t1に対応するpts1から時刻t3に対応するpts3に変更することになる。
DVDビデオ規格では、ナビゲーション情報、ビデオデータ、オーディオデータおよびサブピクチャデータがそれぞれパックとして、1本のAVストリームに多重化され、AVストリーム中にコマンドなどが埋め込まれた構造となっている。ビデオデータ、オーディオデータおよびサブピクチャデータは、その多重化された時刻に表示されることを想定している。例えば、第2図Aに示されるように、pts単位で管理される時間軸上の所定時刻に所定のデータが再生されるように、多重化がなされる。
このように多重化がなされているため、時刻pts1に表示されるように想定されたボタンAを、時刻pts3に表示されるように変更するには、第2図AのAVストリームを、第2図Bに示されるように、ボタン1を表示するサブピクチャデータが時刻pts3の位置にくるように再多重化する必要がある。ボタンが選択されたときに実行するコマンドの内容を変更したい場合にも、同様にして、AVストリームの再多重化を行わなくてはならなかった。再多重化は、例えば、DVDを再生するプレーヤ内で、再生したAVストリームを一旦メモリに格納して行う。
このように、従来では、より自由度の高いインタラクティブ機能を実現するのが困難であり、それを実現しようとすると、制作者側にもより大きい負担が掛かってしまうという問題点があった。
【発明の開示】
したがって、この発明の目的は、大容量の再生専用光ディスクにおいて、より自由度の高いインタラクティブ機能を容易に実現可能な再生装置、再生方法、再生プログラムおよび記録媒体を提供することにある。
この発明は、上述した課題を解決するために、円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生装置において、所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトと、プレーヤオブジェクトの上位にあって、イベントの発生に対応した処理を記述可能なプログラムオブジェクトとを有し、プレーヤオブジェクトは、プログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした再生装置である。
また、この発明は、円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生方法において、所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、プレーヤオブジェクトの上位にあって、イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした再生方法である。
また、この発明は、円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生方法をコンピュータ装置に実行させる再生プログラムにおいて、再生方法は、所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、プレーヤオブジェクトの上位にあって、イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした再生プログラムである。
また、この発明は、円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生方法をコンピュータ装置に実行させる再生プログラムが記録されたコンピュータ装置に読み取り可能な記録媒体において、再生方法は、所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、プレーヤオブジェクトの上位にあって、イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした記録媒体である。
また、この発明は、コンテンツデータが階層構造で記録された円盤状の形状を有する記録媒体において、少なくともコンテンツデータと、イベントの発生に対応した処理を記述可能なプログラムオブジェクトとが記録され、コンテンツデータの再生処理が、所定の変化に応じてイベントを発生させるように構成された、プログラムオブジェクトの下位にあるプレーヤオブジェクトによって、プログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき制御されるようにした記録媒体である。
上述したように、請求の範囲1、請求の範囲13、請求の範囲14および請求の範囲15に記載の発明は、所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、プレーヤオブジェクトの上位にあって、イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにしているため、一つのプレーヤオブジェクトで円盤状記録媒体毎に独自の処理の再生制御を行うことができる。
また、請求の範囲16に記載の発明は、少なくともコンテンツデータと、イベントの発生に対応した処理を記述可能なプログラムオブジェクトとが記録され、コンテンツデータの再生処理が、所定の変化に応じてイベントを発生させるように構成された、プログラムオブジェクトの下位にあるプレーヤオブジェクトによって、プログラムオブジェクトに記述されたイベントの発生に対応した処理に基づき制御されるようにしているため、一つのプレーヤオブジェクトに対し、記録媒体毎に独自の再生制御を行わせるようにできる。
この発明では、BD−ROMプレーヤのAVストリーム再生機能を抽象化した仮想プレーヤを構築し、仮想プレーヤに対してイベントモデルを適用して発生するイベントを定めた。また、ユーザ入力により発生するユーザイベントを定義した。そのため、一つのイベントモデルでDVDビデオの持つ機能を実現できるという効果がある。
また、この発明では、BD−ROMプレーヤのAVストリーム再生機能を抽象化した仮想プレーヤを構築し、仮想プレーヤに対応するJavaクラスを定義している。そして、仮想プレーヤに対してイベントモデルを適用して発生するイベントを定めると共に、ユーザ入力により発生するユーザイベントを定義した。そのため、再生専用ビデオディスクにおける再生制御の方法として、Javaのイベントモデルを適用でき、Javaプログラムからプレイリストの再生制御が可能となるという効果がある。
そのため、複雑なインタラクティブ機能を組み込む場合でも、ディスク制作者側の負担が軽くて済むという効果がある。
また、この発明は、Java言語に限らず、ECMAスクリプトのようなスクリプト言語にも適用でき、イベントに対応するイベントハンドラの内容をコンテンツ制作者側がスクリプト言語を用いて記述して、イベント発生時にコンテンツ制作者側が意図する動作を容易に実現させることができる効果がある。
【図面の簡単な説明】
第1図は、従来技術によりボタンの表示開始時刻を変更することを説明するための図、第2図Aおよび第2図Bは、ストリームの再多重化を説明するための図、第3図Aおよび第3図Bは、BD−ROM規格のHDムービーモードにおける一例のレイヤ構成を示す略線図、第4図は、BD−ROMのプレーヤモデルの一例のレイヤ構成を示す略線図、第5図は、BD基本プレーヤ30について説明するための図、第6図は、プレイリストの再生中に発生するイベントの例を示す略線図、第7図は、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第8図A、第8図Bおよび第8図Cは、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第9図は、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第10図は、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第11図は、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第12図は、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第13図は、クラスBDBasicPlayerのメソッドの例を一覧して示す略線図、第14図A、第14図Bおよび第14図Cは、D−ROMのオブジェクトBDBasicPlayerで生成される一例のイベント定義を一覧して示す略線図、第15図は、リスナおよびイベントについて説明するための図、第16図Aおよび第16図Bは、イベントリスナ登録に関する一例のメソッドを一覧して示す略線図、第17図は、イベントリスナ登録を用いたプログラム作成の一例の手順を示すフローチャート、第18図は、イベントリスナ登録を用いたプログラムを再生側が実装する際の一例の処理を示すフローチャート、第19図A、第19図Bおよび第19図Cは、クリップAVストリームファイル、マークデータが格納されるファイルおよびボタンを構成するデータが格納されるファイルを概念的に示す略線図、第20図は、イベントドリブンモデルによるBD−ROM仮想プレーヤモデルについて説明するための図、第21図A、第21図B、第21図Cおよび第21図Dは、BD−ROM仮想プレーヤモデルが受け付けるユーザ入力コマンドの定義の一例を一覧して示す略線図、第22図は、リモートコントロールコマンダからのキー入力イベントを表すクラスRmtKeyEventの例を示す略線図、第23図は、オブジェクトRmtKeyEventが有する一例のメソッドを一覧して示す略線図、第24図は、メソッドgetRmtKeyCodeによって得られる一例のキーを一覧して示す略線図、第25図Aおよび第25図Bは、メソッドgetRmtKeyCodeによって得られる一例のキーを一覧して示す略線図、第26図は、ユーザ入力イベントをきっかけとして、用意されたプログラムが実行される一例の手順を示すフローチャート、第27図は、BD−ROMのフルプロファイルに適用可能な一例のファイルの管理構造を示す略線図、第28図A、第28図Bおよび第28図Cは、この発明の実施の第1の形態に適用可能なプレーヤデコーダ100の一例の構成を示す機能ブロック図、第29図は、UMDビデオ規格のレイヤ構成を示す略線図、第30図は、この実施の第2の形態による一例のプレーヤモデルを模式的に示す図、第31図は、ムービープレーヤの一例の内部構成を示す略線図、第32図は、ムービープレーヤの3状態を示す略線図、第33図は、この発明の実施の第2の形態によるムービープレーヤのイベントモデルを模式的に示す図、第34図Aおよび第34図Bは、ムービープレーヤオブジェクトの一例のイベントハンドラを示す略線図である。
【符号の説明】
30 BD基本プレーヤ
31 Javaプログラム
32 API
34 共通パラメータ
35 プレーヤコマンド
104 コードバッファ
106 マルチメディアエンジン
200 BDプレゼンテーションエンジン
201 ナビゲーションエンジン
202 JavaVM
203 Javaアプリケーション
210 オブジェクトBDBasicPlayer
211 リスナインターフェイス
300 ムービープレーヤ
301 ネイティブ実装プラットフォーム
302 スクリプトレイヤ
310 ユーザ入力
311 制御コマンド
312,314 イベント
313,315 メソッド
320 データベース
321 プレイバックモジュール
322 デコーダエンジン
323 プロパティ
S20 プレイリスト上のどのシーンでボタンを表示させるか決める
S21 その時刻にマークを設定する
S22 ボタンオブジェクトにマークに対応するイベントリスナを登録するメソッドをプログラム中に記述する
S23 マーク発生イベントに対応するリスナインターフェイスを実装する(イベント発生時に実行させる処理を記述)
S30 プレイリスト再生スタート
S31 BDBasicPlayerがプレイリスト再生中にマークがつけられた時刻を通過したことを検出
S32 マークイベントに対応するイベントリスナが登録されている
S33 イベントリスナを登録したオブジェクトにマークイベント送信
S34 イベントの通知を受けたオブジェクトは、マークイベント発生時に実行するメソッドを実行
S35 ボタンを表示
S36 マーク検出のイベントを通知しない
S41 再生中にユーザが’ネクスト’キーを押した
S42 RmtKeyEventが発生
S43 次のチャプタマークの位置をデータベースから知る
S44 チャプタマークが有るか?
S45 現在の再生を中止する
S46 PlayStoppedEvent発生
S47 次のチャプタマークの位置のバイト位置にアクセスしてビデオ再生を開始する
S48 PlayStartedEvent,MarkEncounteredEvent発生
S49 MarkEncounteredEventに対応したリスナを実行開始
S50 Markの種類を知る
S51 チャプタマークで有るか?
S52 チャプタ先頭であることを示すメッセージを表示
S53 リスナ実行終了
【発明を実施するための最良の形態】
以下、この発明について、下記の構成に従い説明する。
1.発明の実施の第1の形態
1−1.BD−ROMのAVストリーム再生機能について
1−1a.BD−ROMのHDムービーモードについて
1−1b.BD−ROMのフルプロファイルについて
1−2.JavaによるBD仮想プレーヤモデル
1−3.BD基本プレーヤで生成されるイベントについて
1−3a.イベントの分類
1−3b.イベントモデルについて
1−4.ユーザ入力について
1−5.ファイルの管理構造について
1−6.デコーダモデルについて
2.発明の実施の第2の形態
2−1.UMDビデオ規格について
2−2.UMDビデオ規格のプレーヤモデルについて
2−3.ムービープレーヤのイベンドモデルについて
2−4.ムービープレーヤオブジェクトおよびユーザ入力について
2−5.ムービープレーヤオブジェクトでのイベントの扱いについて
1.発明の実施の第1の形態
以下、この発明の実施の第1の形態について説明する。先ず、理解を容易とするために、現状のBlu−ray Discの派生規格として提案されている、再生専用の記録媒体の規格について、概略的に説明する。以下では、記録可能なBlu−ray Discと区別するために、Blu−ray Discの派生規格の再生専用の記録媒体をBD−ROM(Blu−ray Disc−Read Only Memory)と称し、BD−ROM規格においてDVDビデオと同等のインタラクティブ機能を用意するために、HD(High Definition)ムービーモードが用意されている。
1−1.BD−ROMのAVストリーム再生機能について
1−1a.BD−ROMのHDムービーモードについて
第3図Aおよび第3図Bは、BD−ROM規格のHDムービーモードにおける一例のレイヤ構成を示す。BD−ROM規格のHDムービーモードは、下層側から、クリップレイヤ(Clip Layer)、プレイリストレイヤ(PlayList Layer)、ムービーオブジェクトレイヤ(Movie Object Layer)およびインデックステーブルレイヤ(Index Table Layer)からなる。
クリップレイヤは、1または複数のクリップからなる。クリップ(Clip)は、クリップAVストリーム(Clip AV Streem)およびクリップインフォメーション(Clip Information)からなる。AV(Audio/Video)ストリームの実体は、クリップAVストリームファイルであり、MPEG2(Moving Pictures Experts Group 2)トランスポートストリームにタイムスタンプを付加した形式で記録される。クリップAVストリームファイルには、ボタン画像を表示するためのボタンオブジェクトを多重化することができる。
クリップAVストリームファイルの記録時に、クリップAVストリームファイルに1対1に対応してクリップインフォメーションファイルが同時に作成される。クリップAVストリームファイルおよびクリップインフォメーションファイルの一組を、クリップと称する。
クリップは、記録の単位ともいうべきものであり、再生時にどのような順序でクリップを再生するかは、クリップの上位のレイヤで管理する。プレイリストレイヤは、クリップの再生経路を指定するレイヤであり、1または複数のプレイリストを含む。BD−ROM規格のHDムービーモードにおいては、プレイリストは、ムービープレイリスト(Movie PlayList)と称される1種類が存在する。ムービープレイリストは、プレイアイテム(PlayItem)の集合からなる。プレイアイテムには、クリップの再生範囲を示した一組のIN点およびOUT点が含まれており、プレイアイテムを連ねることによって、任意の順序でクリップを再生することができるようになる。プレイアイテムは、クリップを重複して指定することができる。クリップAVストリームファイルのIN点およびOUT点は、バイトポジションで指定される。
ムービーオブジェクトは、プレイリストレイヤの上位にあり、1または複数のムービーオブジェクトからなる。ムービーオブジェクトは、プレイリストの再生指示や、プレーヤ設定を行うコマンド列から構成される。ムービーオブジェクトが有するコマンドにより、複数の言語用に用意されたストリームのうちどれを選択するか、或いは、選択されるプレイリストがある条件に従って変化するような、条件分岐を伴うプレイリスト再生を実現することができる。条件分岐を伴うプレイリスト再生を行うアプリケーション例としては、マルチストーリーが挙げられる。ムービーオブジェクトによって、双方向性(インタラクティブ性)が導入されることになる。
インデックステーブルを含むインデックステーブルレイヤは、プレイリストレイヤの上位にある。インデックステーブルは、ディスク挿入時に最初に実行されるムービーオブジェクト、メニューキーが押されたときに実行されるムービーオブジェクトおよびユーザに見せるタイトルの一覧表から構成される。インデックステーブルにより、ユーザインターフェイスが提供される。タイトルは、1または複数のムービーオブジェクトで構成される。インデックステーブルには、各タイトルで最初に実行されるムービーオブジェクトが羅列されている。プレーヤは、このインデックステーブルを基に、各種動作時に最初に実行するムービーオブジェクトを決めている。
BD−ROMのHDムービーモードにおけるディスク上には、以上説明したようなデータベースが構成される。プレーヤは、ディスク上からこうしたデータベースを読み取り、指定された動作を行う。
次に、プレーヤ側のモデルを説明する。現実のプレーヤ実装においては、さまざまな形態が考えられるが、ここでは、プレーヤモデルを、ハードウェアに近いストリームを再生する機能ブロックと、その上位にありソフトウェアでコマンドを解釈し実行する機能ブロックという、2つの機能ブロックに分ける。第4図は、BD−ROMのプレーヤモデルの一例のレイヤ構成を示す。第4図の左側が、HDムービーモードにおける2つの機能ブロックに分けられたレイヤ構成を示している。
BDプレゼンテーションエンジン(Presentation Engine)200は、プレイリストやクリップを扱い、AVストリームのデコードを行い、動画や音声を再生する機能ブロックである。字幕ストリームや、ボタン画像やメニューを表示するためのグラフィックスストリームのデコードも、BDプレゼンテーションエンジン200で行う。
BDプレゼンテーションエンジン200は、上位レイヤの指示に従って指定のプレイリストを再生する。
BD−ROMのHDムービーモードでは、BDプレゼンテーションエンジン200の上に、ナビゲーションエンジン(Navigation Engine)201が存在する。ナビゲーションエンジン201は、インデックステーブルやムービーオブジェクトを解釈し、最終的に再生するプレイリストをBDプレゼンテーションエンジン200に指示する。
1−1b.BD−ROMのフルプロファイルについて
次に、BD−ROM規格のフルプロファイルについて説明する。BD−ROM規格のフルプロファイルは、上述したBD−ROM規格のHDムービーモードに対してより高い自由度と拡張性を持たせた、BD−ROM規格に提案されるモードである。以下、BD−ROM規格のフルプロファイルモードを、フルプロファイルと略称する。
この発明の実施の第1の形態では、高い自由度と拡張性を実現するために、プレーヤモデルに対してJava仮想マシン(JavaVM:Java Vertual Machine)を搭載し、Javaアプリケーションを実行することで、フルプロファイルを実現している。この点が上述したBD−ROMのHDムービーモードとは大きく異なる点である。なお、Java、JavaVMなどは、Sun Microsystems,Inc.による登録商標である。
フルプロファイルにおいても、プレーヤの機能は全て利用できることが必要である。これは、BDプレゼンテーションエンジン200とJavaアプリケーションとの間にAPI(Application Programming Interface)が定義されており、そのAPIを介してBDプレゼンテーションエンジン200を操作できることを意味する。これは、BD−ROMのHDムービーモードにおけるナビゲーションエンジン201のように、JavaアプリケーションがBDプレゼンテーションエンジン200の上位に位置すると考えればよい。すなわち、第4図の右側に一例が示されるように、フルプロファイルにおいては、BDプレゼンテーションエンジン200の上位に、JavaVM202を介してJavaアプリケーション203が乗る構成となる。
なお、Javaでは、他に、ネットワーク機能やグラフィクス機能を有する。そのため、Javaアプリケーション203およびJavaVM202の下位レイヤとして、ネットワークレイヤ204およびGUI(Graphical User Interface)レイヤ205を有する。
Javaアプリケーション203からBDプレゼンテーションエンジン200を操作するということは、プレイリストを再生するプレーヤをソフトウェア上で仮想的に考え、そのプレーヤに対して再生、停止、ストリーム選択などの命令を発して、プレーヤ操作を行うと見なせばよい。プレーヤからJavaアプリケーション203へは、どのプレイリストを再生しているかといった現在のプレーヤの状態や、ストリーム選択やユーザからの入力など、各種動作の変化の時刻を伝える必要がある。この発明の実施の第1の形態では、こうしたプレーヤの機能を、Javaアプリケーション203上で抽象化したオブジェクトとして考える。このプレイや機能を抽象化したオブジェクトを、BD基本プレーヤと称する。
第5図を用いて、BD基本プレーヤについて説明する。BD基本プレーヤ30は、この発明の実施の第1の形態により定義されるディスク状記録媒体を再生するもので、パソコンなどのコンピュータ環境上のオブジェクトである。コンピュータ環境は、汎用的なパーソナルコンピュータに限られず、例えば、この発明の実施の第1の形態により定義されるディスク状記録媒体を再生するように専用的に構成された再生装置および/または記録再生装置に組み込まれたソフトウェア環境も含む。なお、以下、この発明の実施の第1の形態により定義されるディスク状記録媒体を、ディスクと略称する。
BD基本プレーヤ30は、ソフトウェア上の抽象化されたオブジェクトである。BD基本プレーヤ30の下位に、OS(Operating System)およびハードウェア33が存在する。BD基本プレーヤ30の上位プログラムとして、API32を介してJavaプログラム31が存在する。
BD基本プレーヤ30の状態は、概略的には、プレイリストやグラフィクスを再生する状態Aと、再生が停止された状態Bの2つの状態に分類できる。状態Aは、高速再生、逆転再生といった変速再生や、ディスク上の任意の時刻から再生する飛び込み再生といった特殊再生などの複数の動作を含む。さらに、BD基本プレーヤ30は、内部にプレーヤ状態を保持する変数(共通パラメータ34)を持つ。共通パラメータ34は、実際には、コンピュータ環境上のレジスタなどからなる。上位レイヤのアプリケーション(Javaプログラム31)は、Javaのメソッドを通じて共通パラメータ34にアクセスすることで、BD基本プレーヤ30の状態に応じた個別の処理を行うことができる。
BD基本プレーヤ30は、ソフトウェア上の抽象化されたオブジェクトである。BD基本プレーヤ30は、Javaプログラム31によるAPI32を介しての制御を、最終的に、下位にあるOSおよびハードウェア33への制御に変換していることになる。
BD基本プレーヤ30は、API32によって上位のプログラム(Javaプログラム31)から制御されると共に、BD基本プレーヤ30で発生する状態の変化を上位プログラムに伝える必要がある。なぜなら、今再生しているプレイリストを再生し終わったら別のプレイリストを再生させる、といった複数の動作を順序立ててBD基本プレーヤ30に行わせるには、BD基本プレーヤ30の状態を上位プログラムが把握している必要があるからである。この発明の実施の第1の形態では、このプレーヤの状態を上位レイヤに伝える仕組みとして、イベントモデルを導入する。
第6図は、プレイリストの再生中に発生するイベントの例を示す。再生開始時には、先ず、イベントPlayStartedが発生する。それから、プレイリストの再生が開始されるときには、イベントPlayListStartedが発生する。プレイリストの先頭は、プレイアイテムの先頭でもあるため、イベントPlayListStartedの発生と同時にイベントPlayItemSartedも発生する。さらに、プレイリストの先頭にチャプタを示すチャプタマークが打たれている場合には、イベントMarkEncounteredが発生する。
同様に、プレイアイテム中にマークが打たれているときは、当該プレイアイテムを再生中にこのマークが検出されることによりイベントMarkEncounteredが発生する。プレイアイテムの再生が終了されると、イベントPlayItemEndedが発生し、そこでプレイリストも終了していれば、イベントPlayListEndedがさらに発生する。再生終了時には、イベントPlayEndedが発生する。
このように、プレーヤの動作中には、様々なイベントが発生するものとし、イベント発生を上位プログラムに伝えることで、上位プログラムは、プレーヤの状態を把握できるようになる。上位プログラム側では、各イベント発生通知時に実行されるプログラムを用意しておくことで、各種イベント発生に対処する。
この発明の実施の第1の形態では、以上のように、プレーヤの抽象化の方法、Javaプログラムからプレーヤを操作するメソッドモデルおよびプレーヤの状態をJavaプログラムに伝えるためのイベントモデルを提供し、BD−ROMの制御プログラムにJava言語を導入する。この実施の第1の形態が適用されたシステムでは、ディスク制作者は、API32を介してBD基本プレーヤ30を操作するJavaプログラム31を作成することになる。
次に、プレーヤ機能を詳細に分析して抽象化し、Javaのクラスで表現した具体例を示す。
1−2.JavaによるBD仮想プレーヤモデル
BD−ROMのフルプロファイルを定めるにあたり、Blu−ray Discを実行する環境を定義する必要がある。BD−ROMを再生する理想的なBD基本プレーヤ30のモデルを、BD−ROM仮想プレーヤモデルと名づける。BD基本プレーヤ30は、BD−ROM仮想プレーヤモデル中のプレイリストを再生する機能ブロックに相当する。BD−ROM仮想プレーヤモデルでは、BD基本プレーヤ30の取り得る状態や状態遷移の条件を定義すると共に、BD基本プレーヤ30で再生できるストリームの属性、ストリームを制御するコマンドレス(スクリプト)の記述方法などを定義する。BD−ROMに格納されたスクリプトやストリームは、このBD−ROM仮想プレーヤモデル上で正しく動作するものでなければならない。
また、実際のBD−ROMプレーヤには、様々な実装方法があるが、実装に依存しないモデルを想定することで、最小限必要なハードウェア資源を明確にすることが可能となる。
この発明の実施の第1の形態で定義されるBD−ROM仮想プレーヤモデルでは、BD基本プレーヤ30を制御するプログラミング言語として、Javaを用いる。Javaは、Sun Microsystems,Inc.によって作られたプログラミング言語で、適用するシステムの規模により、J2EE、J2SE、J2MEなどの複数のエディションを有する。ここでは、セットトップボックスなどでの組み込みでの使用を想定したエディションであるJ2MEを一例として使用することを想定している。すなわち、J2MEをベースとして、BD−ROM仮想プレーヤモデルに必要な拡張を加えるという考え方である。
Java言語は、新たなクラスを定義することにより容易に拡張ができる特徴がある。例えば、単体ではイベント処理できないHTML(Hyper Text Markup Language)文書でイベント処理を実現するためには、HTML文書内にイベント処理が可能なスクリプト、例えばECMA(European Computer Manufacturers Association)スクリプトを記述してイベントを処理する。
Java言語を用いることで、このように、ある機能を実現するために複数の技術を使うのではなく、Java言語で定められた拡張の方法に従って機能を追加できる。そのため、完成したプログラムも、Java言語のみを用いて記述されたものとなる。また、Javaは、既に数多くのプログラム開発環境が提供されており、制作者にとってディスクを作りやすい環境といえる。
BD−ROM仮想プレーヤモデルをJava言語で記述する場合、既にSun Microsystems,Inc.によって規定されているJavaのクラス、APIは、そのまま用いることができる。一方、BD基本プレーヤ30は、BD−ROM独自の機能であり、既存のクラスやAPIとしては用意されていない。このBD−ROM独自の機能をJavaで実現するには、様々な方法が考えられるが、この発明の実施の第1の形態では、BD基本プレーヤ30の機能とそれに関するAPI、イベントモデルなどをBD−ROMに適した形で構築した。
先ず、BD基本プレーヤ30をJavaの一つのクラスとして定義する。そのクラスのクラス名を、BDBasicPlayerと定義する。第7図〜第13図は、クラスBDBasicPlayerのメソッドの例を一覧して示す。BD基本プレーヤ30に対する命令は、全てこのメソッドを通して行う。
第7図は、プレーヤ設定情報取得に関する一例のメソッドを示す。メソッドgetPlayerSpeed()で、プレーヤの再生速度を取得する。メソッドgetPlayerDirection()で、プレーヤの再生方向を取得する。メソッドgetDescriptionLanguage()で、プレーヤの表示言語を取得する。メソッドgetPlayListNumber()で、現在再生中のプレイリスト番号を取得する。メソッドgetChapterNumber()で、現在再生中のチャプター番号を取得する。メソッドgetPlayerSupport()で、プレーヤのバージョンおよび当該プレーヤが有する機能を取得する。
第8図A、第8図Bおよび第8図Cは、プレイリストの再生に関する一例のメソッドを示す。メソッドplayPlayList(int playListNumber,long[playListTime])で、”playListNumber”で指定されたプレイリストの再生を開始する。なお、”playListTime”は、必須ではない。”playListTime”によりプレイリスト内の経過時刻を指定し、そこからプレイリストを再生する。メソッドplayPlayList(String playListURL,long[PlayListTime])で、”playListURL”で指定されたプレイリストの再生を開始する。”playListURL”は、プレイリストをURL(Uniform Resource Locator)で指定する。例えばインターネット上にあるプレイリストをURLで指定することができる。一例として、プレーヤがインターネット接続機能を有していれば、この”playListURL”で指定されたURLからプレイリストをダウンロードして再生するようにできる。”playListTime”は、必須ではない。”playListTime”によりプレイリスト内の経過時刻を指定し、そこからプレイリストを再生する。
メソッドplayPlayItem(int playListNumber,int playItemNumber)で、”playListNumber”で指定されるプレイリストの、”palyItemNumber”で指定されるプレイアイテムから再生を開始する。”playItemNumber”は、プレイアイテムを識別するための”PlayItem_id”であり、0から始まる数値である。プレイリストの先頭から再生するのであれば、”playItemNumber”の値は0になる。メソッドplayPlayItem(String playListURL,int playItemNumber)で、”playListURL”で指定されるプレイリストの、”playItemNumber”で指定されるプレイアイテムから再生を開始する。”playItemNumber”は、”PlayItem_id”であり、0から始まる数値である。プレイリストの先頭から再生するのであれば、”playItemNumber”の値は0になる。
メソッドplayChapterMark(int playListNumber,int chapterNumber)は、”playListNumber”で決まるプレイリスト中の、”chapterNumber”で指定されるあるチャプタから再生する。”playListNumber”は、”playListURL”であってもよい。プレイリストの先頭には、必ずChapterMark(チャプタマーク)が付けられている。
メソッドmoveAndPlay(string position,object)position=(”prev”|”next”|”top”|”tail”)object=(”PlayItem”|”Chapter”)で、プレイリスト内での移動が指示される。”next”は、現在再生中の箇所から次のプレイアイテムまたはチャプタに飛び、再生を開始する。”top”は、プレイリストの先頭に移動する。”tail”は、プレイリストの最後に移動する。”prev”は、現在再生中のプレイリストの先頭から再生を開始する。メソッドstop()で、再生を停止する。このとき、標準レジスタの値は保持されない。メソッドplaySoundEffect(int sound_id)で、”sound_id”で選択された効果音を再生する。
第9図は、ビデオストリームに関する一例のメソッドを示す。メソッドgetVideoStreamAvailability()で、指定のビデオストリームが含まれているか否かを取得する。メソッドsetVideoStreamNumber()で、デコードするビデオストリームを指定する。メソッドgetVideoStreamNumber()で、選択中のビデオストリームの番号を取得する。メソッドgetVideoStreamAttribute()で、ビデオストリームの属性を取得する。ビデオストリームの属性は、例えば、符号化方式、解像度、アスペクト比、アスペクト比が4:3のときのディスプレイモード、クローズドキャプションか否か、などである。メソッドsetAngleNumber()で、アングル番号を指定する。メソッドgetAngleNumber()で、選択中のアングル番号を取得する。メソッドgetMaxVideoStreams()で、選択可能なビデオストリームの数を取得する。
第10図は、オーディオストリーム関する一例のメソッドを示す。メソッドgetAudioStreamAvailability()で、指定のオーディオストリームが含まれているか否かを取得する。メソッドgetAudioStreamLanguage()で、指定のオーディオストリームの言語についての情報を取得する。メソッドsetAudioStreamNumber()で、再生するオーディオストリームを指定する。メソッドgetAudioStreamNumber()で、再生しているオーディオストリームの番号を取得する。メソッドgetAudioStreamAttribute()で、オーディオストリームの属性を取得する。オーディオストリームの属性は、例えば、符号化方式、チャンネル数、量子化ビット数、サンプリング周波数などである。メソッドgetMaxAudioStreams()で、選択可能なオーディオストリームの数を取得する。
第11図は、サブピクチャストリーム関する一例のメソッドを示す。メソッドgetSPStreamAvailability()で、指定のサブピクチャストリームが含まれているか否かを取得する。メソッドgetSPStreamLanguage()で、指定のサブピクチャストリームの言語を取得する。メソッドgetSPDisplayStatus()で、サブピクチャストリームの表示状態、すなわち、現在表示されているか、非表示であるかを取得する。メソッドsetSPDisplayStatus()で、サブピクチャストリームの表示状態、すなわち、表示するか非表示とするかを設定する。メソッドgetSPStreamAttribute()で、サブピクチャストリームの属性を取得する。サブピクチャストリームの属性は、例えば、異なる解像度のサブピクチャストリー厶を持つ場合の解像度別情報、アスペクト比4:3またはワイド用などの情報である。
第12図は、内蔵タイマに関する一例のメソッドを示す。メソッドsleep()で、指定されたミリ秒間、処理を停止する。メソッドsetTimeout()で、指定されたミリ秒後に関数や処理を実行する。メソッドsetInterval()で、指定されたミリ秒ごとに処理を実行する。メソッドclearTimer()で、指定された登録タイマIDの処理を中止する。メソッドpauseTimer()で、指定した登録タイマIDのタイマを一時停止する。メソッドresumeTimer()で、指定した登録タイマIDのタイマを一時停止から再開する。
第13図は、キー入力に関する一例のメソッドを示す。メソッドgetPressedKey()で、ユーザが押したキーの種類を取得する。
1−3.BD基本プレーヤで生成されるイベントについて
プレーヤ操作に関するメソッドを実行した際、プレーヤの動作が正常に開始されたかなど、直後に反応を知ることができるものは、メソッドに対する戻り値で知ることができる。しかし、時間のかかる処理を指示した場合、その処理が終了するまで待つような方法では、他の処理ができない。また、いつ発生するかわからない処理もある。このような場合はイベントの仕組みを導入することで効率の良い処理が可能となる。
プレーヤの動作中には、様々なイベントが発生する。どのようなイベントが発生するかは、BD−ROM仮想プレーヤモデルで定義する。プレーヤの動作に変化が生じるとイベントが発生するものとし、そのイベント発生に対処するプログラムが用意されている場合に、そのプログラムが実行される、というモデルをBD−ROM仮想プレーヤモデルで定義する。
例えば、複数のプレイリストを指定の順序で再生していく場合、前のプレイリストの再生終了のイベントを受けて次のプレイリストの再生を開始する処理を行うプログラムを用意しておく。また、何らかの原因で次のプレイリストが再生されなかった場合には、例外が発生するものとして例外処理するプログラムを用意しておく。
プログラムとして記述されていない場合には、規格で規定されているプレーヤ組み込みの動作(デフォルトのイベントハンドラ)を実行するか、或いは何も実行されずそのイベントは無視されることになる。何も処理を行う必要がないときには、積極的にイベントを無視することになる。その際は、後述するイベントリスナ登録を行わないか、イベントに対応したプログラムを記述しないようにすることで、イベントを無視することができる。
このように、不定期なイベントが発生し、イベント発生をきっかけに用意しておいたプログラムが実行されるモデルを、イベントドリブンモデルという。
1−3a.イベントの分類
BD−ROM仮想プレーヤモデルにおけるイベントは、(1)再生中のコンテンツから発せられるイベント、(2)ユーザからの割り込みによるイベント、(3)プレーヤ状態の変化によるイベント、の3種類に大別することができる。
(1)の、再生中のコンテンツから発せられるイベントは、例えばプレイリストを再生中に、マークで指し示された時刻に来ると発生するマーク検出の割り込みイベントである。このイベント発生を契機として、グラフィックスの表示や消去を行う。この種類のイベントは、予め設定された割り込みで、再生の度に同じタイミングで発生する点が特徴である。
(2)の、ユーザからの割り込みによるイベントは、主として、プレーヤを操作するリモートコントロールコマンダに対するキー入力を想定している。この種類のイベントは、ユーザが何時キー入力をするか分からないため、事前に割り込みのタイミングを知ることができない。
(3)の、プレーヤの状態の変化によるイベントは、プレーヤが停止状態から再生状態に変化したときや、再生中のストリームが変更されたときなど、プレーヤの状態遷移を表すイベントである。また、プログラム中でタイマーを設定した場合は、ある時刻になるとタイマー割り込みのイベントが発生する。プレーヤの状態変化は、上述した(1)再生中のコンテンツから発せられるイベントや、(2)ユーザからの割り込みによるイベントにより引き起こされるイベントでもあることも多い。
第14図A、第14図Bおよび第14図Cは、BD−ROMのオブジェクトBDBasicPlayerで生成される一例のイベント定義を一覧して示す。オブジェクトBDBasicPlayerは、クラスBDBasicPlayerにより生成されるオブジェクトである。
先ず、(1)の、再生中のコンテンツから発せられるイベントについて説明する。第14図A、第14図Bおよび第14図Cにおいて、イベントMarkEncounteredEventは、再生中にマークを検出した際に発生される。このイベントは、例えばグラフィクス画面を表示する際に利用される。イベントValidPeriodStartedEventは、ユーザ入力の選択有効期間が開始した際に発生される。イベントValidPeriodEndedEventは、ユーザ入力の有効期間が終了した際に発生される。このイベントは、例えばリンクの強制実行の時に利用される。イベントPlayRepeatedEventは、繰り返し再生区間の先頭を検出した際に発生される。イベントVideoStreamChangedEventは、再生するビデオストリームが変わった際に発生される。イベントAudioStreamChangedEventは、再生するオーディオストリームが変わった際に発生される。イベントSubpictureStreamChangedEventは、再生するサブピクチャストリームが変わった際に発生される。イベントStreamDisplayStatusChangedEventは、ストリームの表示/非表示状態が変わった際に発生される。イベントPlayListStartedEventは、プレイリストの先頭を検出した際に発生される。イベントPlayListEndedEventは、プレイリストの終わりを検出した際に発生される。イベントPlayItemStartedEventは、プレイアイテムの先頭を検出した際に発生される。イベントPlayItemEndedEventは、プレイアイテムの終わりを検出した際に発生される。
次に、(2)の、ユーザからの割り込みにより発生されるイベントについて説明する。イベントRmKeyEventは、リモートコントロールコマンダのキーが押された際に発生される。どのキーが押されたかは、対応するイベントリスナ(後述する)内で判定する。
次に、(3)の、プレーヤの状態の変化により発生されるイベントについて説明する。イベントPlayStartedEventは、プレーヤが再生を開始した際に発生される。イベントPlayStoppedEventは、プレーヤが再生が停止した際に発生される。イベントPlayStilledEventは、プレーヤが再生を一時停止した際に発生される。イベントStillReleasedEventは、プレーヤにおいて再生の一時停止が解除された際に発生される。イベントPlayPausedEventは、プレーヤでの再生がユーザにより一時停止(ポーズ)された際に発生される。イベントPauseReleasedEventは、ポーズが解除された際に発生される。イベントTimerFiredEventは、カウントダウンタイマが0になった際に発生される。または、カウントアップタイマが指定の値になった際に発生される。
1−3b.イベントモデルについて
第14図A、第14図Bおよび第14図Cで説明した各イベントは、オブジェクトBDBasicPlayer内で発生するものとする。つまり、Java言語におけるイベントソースは、オブジェクトBDBasicPlayerであると定める。イベントは、Java言語の上では、イベントオブジェクトとして定義される。イベント発生時に実行するメソッドをリスナと呼ぶ。リスナが実行されるためには、イベントソースに対してイベントリスナ登録を行う必要がある。リスナがイベントソースに登録されていれば、オブジェクトBDBasicPlayerは、イベントをイベントリスナに送信する。イベントを受信したオブジェクトは、オブジェクト内に用意したメソッドを実行する。
第15図を用いて、リスナおよびイベントについて説明する。オブジェクト211、211、・・・は、イベントを受信しリスナを実行させるリスナインターフェイスを実装している。オブジェクト211は、受信したいイベントに対応するリスナを、オブジェクトBDBasicPlayer210に対して登録する(ステップS10)。あるイベントに対応するリスナをオブジェクトBDBasicPlayer210に対して登録することを、イベントリスナ登録と称する。オブジェクトBDBasicPlayer210に対して、複数のオブジェクト211、211、・・・からイベントリスナ登録を行うことができきる。
リスナインターフェイスを実装したオブジェクトとは、イベント発生時に実行するメソッドを実装したオブジェクトである。第15図の例では、あるイベント発生時に実行されるメソッドであるdoAction()が、オブジェクト211に実装されている。オブジェクトBDBasicPlayer210内でイベントが発生(ステップS11)し、このイベントがオブジェクトBDBasicPlayer210に対してイベントリスナ登録されたイベントであれば、当該イベントリスナ登録を行ったオブジェクト211に対して、当該イベントが送信される(ステップS12)。イベントを受信したオブジェクト211は、メソッドdoAction()を実行する(ステップS13)
第16図Aおよび第16図Bは、イベントリスナ登録に関する一例のメソッドを一覧して示す。メソッドaddContentsListener(ContentsListener l)で、オブジェクトBDBasicPlayerからイベントContentsEventを受け取るために、指定されたリスナをオブジェクトBDBasicPlayerに登録する。登録されたリスナは、配列ContentsListener()に追加される。イベントContentsEventは、第14図A、第14図Bおよび第14図Cを用いて説明した、(1)の、再生中のコンテンツから発せられるイベントの総称である。メソッドaddRmtKeyListener(RmtKeyListener l)で、オブジェクトBDBasicPlayerからイベントRmtKeyEvent(第14図A、第14図Bおよび第14図Cを用いて説明した、(2)の、ユーザからの割り込みにより発生されるイベント)を受け取るために、指定されたリスナを登録する。登録されたリスナは、配列RmtkeyListener()に追加される。メソッドaddPlayerStatusListener(PlayerStatusListener l)で、オブジェクトBDBasicPlayerからイベントPlayerStatusEventを受け取るために、指定されたリスナを登録する。登録されたリスナは、配列PlayerStatusListener()に追加される。イベントPlayerStatusEventは、第14図A、第14図Bおよび第14図Cを用いて説明した、(3)の、プレーヤの状態の変化により発生されるイベントの総称である。
メソッドremoveContentsListener(ContentsListener l)で、オブジェクトBDBasicPlayerからイベントContentsEventを受け取らないように、指定されたリスナを削除する。メソッドremoveRmtKeyListener(RmtKeyListener l)で、オブジェクトBDBasicPlayerからイベントRmtKeyEventを受け取らないように、指定されたリスナを削除する。メソッドremovePlayerStatusListener(PlayerStatusListener l)で、オブジェクトBDBasicPlayerからイベントPlayerStatusEventを受け取らないように、指定されたリスナを削除する。
このように、”add”で始まるメソッドを実行することで、イベントリスナ登録が行われる。イベントリスナ登録は、目的とするイベントが発生する前に行う。イベントを受け取る必要がなくなった時には、”remove”で始まるメソッドを実行することで、イベント送信を停止させることができる。
第16図Aおよび第16図Bにおいて、メソッドgetContentsListeners()で、オブジェクトBDBasicPlayerに登録されている全てのContentsListenerの配列を返す。メソッドgetRmtkeyListeners()で、オブジェクトBDBasicPlayerに登録されている全てのRmtkeyListenerの配列を返す。メソッドgetPlayerStatusListeners()で、オブジェクトBDBasicPlayerに登録されている全てのPlayerStatusListenerの配列を返す。
イベントリスナ登録を用いたプログラムの作成について説明する。ここでは、プレイリストを再生中、あるシーンになったときにボタンを表示させる動作を行わせるプログラムを作成する例である。プレイリストを再生中に、特定のシーンに入ったことを知るには、マーク機能を利用すればよい。マークは、プレイリストの任意の時刻に設定することが可能な頭出し点を設ける機能である。マークが設定された時刻に再生がさしかかると、第14図A、第14図Bおよび第14図Cを用いて説明したイベントMarkEncounteredEventが発生する。このイベントMarkEncounteredEventの発生をきっかけとしてボタンが表示されるようなリスナインターフェイスを実装したボタンオブジェクトを作成すればよい。すなわち、ボタンのオブジェクトには、オブジェクトBDBasicPlayerにイベントリスナ登録をし、イベントMarkEncounteredEventを受け取った際に表示を開始するようなプログラムを実装しておけばよい。
より具体的には、第17図に一例が示されるように、先ず、プレイリスト上のどのシーンでボタンを表示させるかを決め(ステップS20)、プレイリスト上のボタンを表示させる時刻に、マークを設定する(ステップS21)。次に、表示させるボタンのオブジェクトに、ステップS21で設定されたマークに対応するイベントリスナ登録を行うメソッドを、プログラム中に記述する(ステップS22)。すなわち、このステップS22では、第15図で説明したステップS10の動作を行わせる記述がなされる。そして、イベント発生時に実行させる処理をボタンオブジェクトに記述し、ボタンオブジェクトに対して、マーク発生イベントに対応するリスナインターフェイスを実装する(ステップS23)。すなわち、このステップS23では、第15図で説明したステップS13の内容が記述される。これらのプログラムは、Java言語で以て記述される。
第18図は、第17図のようなプログラミングにより規定された動作を、再生側が実装する際の一例の処理を示す。オブジェクトBDBasicPlayerにより、プレイリストの再生が開始される(ステップS30)。オブジェクトBDBasicPlayerは、プレイリストの再生中に、プレイリスト中に設けられたマークを検出したものとする(ステップS31)。オブジェクトBDBasicPlayerは、検出されたマークに対応するイベントリスナが登録されているか否かを調べる(ステップS32)。すなわち、ステップS32では、第15図を用いて説明した、ステップS10の処理が行われているか否かが調べられる。若し、対応するイベントリスナが登録されていないと判断されれば、処理はステップS36に移行し、オブジェクトBDBasicPlayerは、イベント送信を行わない。
一方、ステップS32で、マークに対応するイベントリスナが登録されていると判断されれば、処理はステップS33に移行する。ステップS33では、オブジェクトBDBasicPlayerは、イベントリスナを登録したオブジェクトに対してイベントMarkEncounteredEventを送信する。これは、第15図を用いて説明した、ステップS12の処理である。このイベントMarkEncounteredEventを受けたオブジェクトは、イベントMarkEncounteredEventの発生時に実行するメソッドの実行を開始する(ステップS34)。すなわち、第15図を用いて説明した、ステップS13のメソッドdoAction()実行される。この例では、このメソッドdoAction()は、ボタンを画面上に表示する処理が記述されている。この記述に従い、画面上にボタンが表示される(ステップS35)。
背景技術において第2図Aおよび第2図Bを用いて既に説明したように、従来のDVDビデオでは、ボタンの情報がAVストリームに多重化されているため、ボタンの表示開始時刻を変更するためには、AVストリームの再多重化を行う必要があった。
これに対してこの発明の実施の第1の形態による、BD−ROM仮想プレーヤモデルでは、マークの時間軸上の設定位置を変えるだけで、ボタンの表示開始時刻を変更することができる。この発明の実施の第1の形態では、第19図A、第19図Bおよび第19図Cに概略的に示されるように、クリップAVストリームファイル(第19図A)、マークデータが格納されるファイル(第19図B)およびボタンを構成するデータが格納されるファイル(第19図C)は、互いに独立的な構成となっている(ファイル構成の詳細は、後述する)。なお、クリップAVストリームファイルは、ビデオパックおよびオーディオパックが多重化されたファイルである。
このように、マークの情報は、クリップAVストリームとは別のデータベースファイルに格納される。そのため、第19図A、第19図Bおよび第19図Cに示されるように、当初、表示開始時刻が時刻pts1とされているボタン画像を、時刻pts2から表示させようとする場合でも、例えばデータベースから読み込まれたマーク情報について、時刻pts1を時刻pts2に書き換えるだけでよく、マークの位置を変更しても、クリップAVストリームの再多重化を行う必要が無い。
また、この実施の第1の形態では、ボタンを構成するデータも、クリップAVストリームとは別のファイルに格納される。そのため、ボタンが選択された際の処理の記述についても、クリップAVストリームファイルとは独立して存在するボタンオブジェクトのメソッドを変更するだけでよい。既に説明したように、従来のDVDビデオでは、ボタン選択時の処理を行うボタンコマンドがAVストリームに多重化されていたため、ボタンが選択された際の処理の変更は、容易には実現できなかった。
BD−ROMのフルプロファイルにおいては、以上のようなBD−ROM仮想プレーヤモデルを構築することにより、従来のDVDビデオビデオと比較して、オーサリングの柔軟性、容易性の向上を実現することができる。
上述では、BD−ROM仮想プレーヤモデルを、オブジェクト指向的なイベントリスナのモデルに基づき構築した。BD−ROM仮想プレーヤモデルは、この例に限らず、より簡便な、イベントドリブンモデルで構築することも可能である。
第20図を用いて、イベントドリブンモデルによるBD−ROM仮想プレーヤモデルについて説明する。オブジェクトBDBasicPlayerで発生するイベントは、第15図を用いて説明したオブジェクト指向的なモデルと同一である。このイベントドリブンモデルの場合は、イベント発生時に呼び出されるメソッドが、オブジェクトBDBasicPlayer内に定義されたメソッドprocessEvent()だけとする。すなわち、このモデルでは、どのイベントが呼び出されても同じメソッドが呼び出される。そのため、イベントの種類によって処理を変えたい場合には、どのイベントが発生したかをメソッドprocessEvent()の中で判定する必要がある。
このモデルでは、イベント毎にイベントリスナ登録を行う必要がない。そのため、簡易な構成のモデルを構築できる。しかしながら、イベント発生の度にメソッドprocessEvent()が呼び出されるため、効率が悪い。また、処理するメソッドprocessEvent()が固定的にオブジェクトBDBasicPlayer内に定義されているため、別のオブジェクト内で新しい処理ルーチンを定義して実行するといった拡張性に乏しい。そのため、拡張性を重視するこの発明の実施の第1の形態には、第15図を用いて説明したオブジェクト指向的なモデルでBD−ROM仮想プレーヤモデルを構築するのが好ましい。
1−4.ユーザ入力について
第21図A、第21図B、第21図Cおよび第21図Dは、BD−ROM仮想プレーヤモデルが受け付けるユーザ入力コマンドの定義の一例を一覧して示す。このユーザ入力は、プレーヤを操作するためのリモートコントロールコマンダに設けられたキーからの入力や、プレーヤ装置から出力されるメニュー画面に応じた入力を想定している。ユーザ入力は、BD−ROM仮想プレーヤモデルにとっては、キー入力イベントの一種である。
コマンドtimeSearch(playlistNumber,Time)は、再生中のシナリオの、”Time”で指定される時刻からの再生を指示する。コマンドplay(playlistNumber,chapterNumber)は、指定のシナリオの、”chapterNumber”で指定されるチャプタからの再生を指示する。コマンドstop()は、再生の停止を指示する。コマンドprev()は、再生中のチャプタの1つ前のチャプタの先頭からの再生開始を指示する。コマンドtop()は、再生中のチャプタの先頭からの再生開始を指示する。コマンドnext()は、再生中のチャプタの次のチャプタの先頭からの再生開始を指示する。コマンドforwardScan(speed)は、”speed”で指定された速度での順方向再生を指示し、コマンドbackwardScan(speed)は、”speed”で指定された速度での逆方向再生を指示する。”speed”は、0.1〜360の範囲で値を指定できる。
コマンドmoveCursor(direction,[level])は、カーソルの上下左右の移動を指示する。”direction”は、”upper”、”lower”、”left”または”right”の何れかの値であって、それぞれカーソルの上、下、左、右方向への移動を指示する。また、”level”は、”0”〜”255”の範囲で値を指定できる。”level”オプションは、通常は用いないか、値が”0”とされる。”level”の値として中間値(”1”〜”255”)を使用することで、アナログジョイスティックなどを表現する。
コマンドclick(buttonNumber)は、画面上のボタンのクリックを指示する。コマンドfocus(buttonNumber)は、画面上のボタンにフォーカスを当てる旨を指示する。
コマンドstillOff()は、プレーヤによって一時停止された再生の再開を指示する。コマンドstillOff()は、コマンドpauseOffと統合できる。コマンドpauseOn()は、一時停止を指示する。このコマンドpauseOn()は、シナリオ再生時にのみ動作できる。コマンドpauseOff()は、一時停止の解除を指示する。
コマンドLanguageSelect(languageCode)は、メニューの表示言語を指定する。コマンドStreamChange(StreamNumber)は、再生するストリームの変更を指示する。コマンドsetEnabled(boolean)は、ストリームの表示/非表示を指定する。コマンドangleChange(angleNumber)は、表示アングルの変更を指示する。コマンドparentalCountrySelect(countryCode)は、パレンタルレベル用のカントリーコードを設定する。コマンドvideoPresentationModeChange(mode)は、ビデオの表示形式を指定する。”mode”は、”Wide”(ワイド)、”LB”(レターボックス)または”PanScan”(パンスキャン)の何れかの値を取る。
第22図は、リモートコントロールコマンダからのキー入力イベントを表すクラスRmtKeyEventの例を示す。パラメータ”source”は、イベントの発生元のオブジェクトであって、オブジェクトBDBasicPlayerを指す。パラメータ”id”は、イベントのタイプを表す整数である。パラメータ”when”は、イベントが発生した時刻を指定するlong形式の整数である。パラメータ”mtKeyCode”は、入力仮想キーに対応する整数型コードまたは”VK_UNDEFINED”とされる。”VK_UNDEFINED”については、後述する。
第3図Aおよび第3図Bを用いて既に説明したように、リモートコントロールコマンダのキーによるユーザ入力は、先ずハードウェアが受け取り、オブジェクトBDBasicPlayerにも伝えられる。このユーザ入力に応じて、オブジェクトBDBasicPlayerでは、クラスRmtKeyEventによりオブジェクトRmtKeyEventが発生し、このオブジェクトRmtKeyEventに対応したイベントリスナを登録しているオブジェクトに対して、ユーザ入力によるコマンドが通知される。
第23図は、オブジェクトRmtKeyEventが有する一例のメソッドを一覧して示す。メソッドgetRmtKeyCodeは、このイベントが発生したキーのキーコードを返す。メソッドsetRmtKeyCodeは、このイベントが発生するキーのキーコードを設定する。例えば、メソッドgetRmtKeyCodeを実行することで、どのキーが押されたことによってオブジェクトRmtKeyEventが発生したかを知ることができる。
第24図、ならびに、第25図Aおよび第25図Bは、第23図で説明したメソッドgetRmtKeyCodeによって得られる一例のキーを一覧して示す。第24図、ならびに、第25図Aおよび第25図Bに示される「VK」で始まる各キーは、オブジェクトBDBasicPlayer上の仮想的なキーである。キーVK_POWERは、電源キーに対応する機能を提供する。キーVK_POWER_ONは、電源ONキーに対応する機能を提供する。キーVK_POWER_OFFは、電源OFFキーに対応する機能を提供する。キーVK_MENUは、メニューを表示させるメニューキーに対応する機能を提供する。キーVK_ENTERは、「決定」を指示する決定キーに対応する機能を提供する。キーVK_RETURNは、処理のステップを一つ戻す戻るキーに対応する機能を提供する。
キーVK_PLAYは、再生を指示する再生キーに対応する機能を提供する。キーVK_STOPは、再生の停止を指示する停止キーに対応する機能を提供する。キーVK_PAUSEは、再生の一時停止を指示する一時停止キーに対応する機能を提供する。キーVK_FAST_FORWARDは、早送り再生を指示する早送りキーに対応する機能を提供する。キーVK_FAST_REVERSEは、早戻し再生を指示する早戻しキーに対応する機能を提供する。キーVK_SLOW_FORWARDは、順方向のスロー再生を指示するスロー(順方向)キーに対応する機能を提供する。キーVK_SLOW_REVERSEは、逆方向のスロー再生を指示するスロー(逆方向)キーに対応する機能を提供する。キーVK_STEP_FORWARDは、順方向のコマ送り再生を指示するコマ送り(順方向)キーに対応する機能を提供する。キーVK_STEP_REVERSEは、逆方向のコマ送り再生を指示するコマ送り(逆方向)キーに対応する機能を提供する。
キーVK_NEXTは、「次」を意味する値を入力する次指定キーに対応する機能を提供する。キーVK_PREVIOUSは、「前」を意味する値を入力する前指定キーに対応する機能を提供する。例えば、キーVK_NEXTおよびキーVK_PREVIOUSを用いて、前後のチャプタへの移動を指示することができる。
キーVK_UPは、「上」を意味する値を入力する上方向指定キーに対応する機能を提供する。キーVK_DOWNは、「下」を意味する値を入力する下方向指定キーに対応する機能を提供する。キーVK_RIGHTは、「右」を意味する値を入力する右方向指定キーに対応する機能を提供する。キーVK_LEFTは、「左」を意味する値を入力する左方向指定キーに対応する機能を提供する。キーVK_UP_RIGHTは、「右上」を意味する値を入力する右上方向指定キーに対応する機能を提供する。キーVK_UP_LEFTは、「左上」を意味する値を入力する左上方向指定キーに対応する機能を提供する。キーVK_DOWN_RIGHTは、「右下」を意味する値を入力する右下方向指定キーに対応する機能を提供する。キーVK_DOWN_LEFTは、「左下」を意味する値を入力する左下方向指定キーに対応する機能を提供する。これらの方向キーを用いることで、例えば画面上のカーソル表示の移動を指示することができる。
キーVK_ANGLEは、マルチアングルのビデオに対するアングル切り替えを指示するアングル切り替えキーに対応する機能を提供する。キーVK_PRESENTATION_GRAPHICSは、英語字幕、日本語字幕、字幕表示/非表示などを切り替える字幕切り替えキーに対応する機能を提供する。キーVK_AUDIOは、サラウンドやバイリンガルなどオーディオ設定を切り替えるオーディオ切り替えに対応する機能を提供する。キーVK_VIDEO_ASPECTは、ビデオのアスペクト比切り替えを指示するアスペクト切り替えキーに対応する機能を提供する。キーVK_COLORED_KEY_1は、色つきファンクションキー1、キーVK_COLORED_KEY_2は、色つきファンクションキー2、キーVK_COLORED_KEY_3は、色つきファンクションキー3、キーVK_COLORED_KEY_4は、色つきファンクションキー4、キーVK_COLORED_KEY_5は、色つきファンクションキー5、キーVK_COLORED_KEY_6は、色つきファンクションキー6にそれぞれ対応する機能を提供する。キーVK_UNDEFINEDは、未定義キーである。
第24図、ならびに、第25図Aおよび第25図Bに一覧したキーは、実際のリモートコントロールコマンダの物理キーと必ずしも一致しない。機器によっては、一つの物理キーに複数の機能を持たせることがある。また画面上にリモコンを表す画像を表示して、表示された画面上のキーをユーザに選択させることもある。そのため、第24図、ならびに、第25図Aおよび第25図Bに示すキーは、機能を抽象化した仮想的なキーである。オブジェクトBDBasicPlayerへのユーザ入力を、このような仮想キーで表現することにより、機器に依存しないユーザ入力を定義することができる。
第26図は、ユーザ入力イベントをきっかけとして、用意されたプログラムが実行される一例の手順を示す。第26図は、通常再生中に、ユーザにより”next”キーが押されたときに、このキー入力に対応して、次のチャプタにジャンプして再生を開始すると同時に、用意されたメッセージを画面上に表示するプログラムの例である。
”next”キーは、次のチャプタに移動して再生することをプレーヤに対して指示するためのキーであって、例えばリモートコントロールコマンダ上のキーである。第26図のフローチャートは、ユーザが再生中にこの”next”キーを押すことで開始される(ステップS41)。”next”キーが押されると、オブジェクトRmeKeyEvent発生され(ステップS42)、次のチャプタマークを探すため、チャプタマークにデータベースが検索される(ステップS43)。検索結果に基づき次のチャプタマークが存在するか否かが判断され(ステップS44)、存在しなければ、一連の処理が終了され、通常再生が継続される。ステップS44で、次のチャプタマークが存在すると判断されれば、処理はステップS45に移行する。
ステップS45では、オブジェクトBDBasicPlayerは、”next”キーに応答して現在再生中のチャプタの再生が中止される(ステップS45)。プレーヤの再生が中止されると、イベントPlayStoppedEventが発生される(ステップS46)。オブジェクトBDBasicPlayerは、ステップS43およびステップS44で取得された次のチャプタマークが指し示す、クリップAVストリームファイル内のバイト位置を、クリップ情報ファイルの特徴点情報から取得する。取得されたファイル内バイト位置にアクセスし、その位置からストリームの読み込みを開始して、再生を開始する(ステップS47)。
ステップS48以下は、チャプタが切り替わったことを知らせるメッセージを画面上に表示する一例の手順である。チャプタが切り替わった位置でメッセージを表示するためには、イベントMarkEncounteredEventに対応するイベントリスナとして、メッセージ表示のメソッドを実装しておけばよい。ストリームの再生が開始されると、イベントPlayStartedEventが発生される。それと共に、チャプタマークに対応してイベントMarkEncounteredEventが発生される(ステップS48)。
イベントMarkEncounteredEventの発生に伴い、ステップS49で、イベントMarkEncounteredEventに対応したリスナの実行が開始される。このリスナでは、先ず、イベントMarkEncounteredEventにより検出されたマークの種別が取得され(ステップS50)、このマークがチャプタマークであるか否かが判断される(ステップS51)。若し、チャプタマークでないと判断されれば、処理はステップS53に移行され、当該リスナの実行が終了される。ステップS51で、検出されたマークがチャプタマークであると判断されれば、処理はステップS52に移行され、チャプタ先頭であることを示すメッセージを表示する。
この例では、ユーザがリモートコントロールコマンダのキーを押したことにより一つのイベントRmtKeyEventが発生し、このイベントRmtKeyEventの発生をきっかけにした一連の状態遷移によって、イベントPlayStoppedEvent、イベントPlayStartedEventおよびイベントMarkEncounteredEventといった、複数のイベントが引き起こされる。
このように、この発明の実施の第1の形態によるBD−ROM仮想プレーヤモデルでは、ユーザ入力イベントは、プレーヤの状態を変化させ、新たなイベントを発生させる契機ともなり、新たに発生したイベントを利用してさまざまな処理を行わせることができる。
この発明の実施の第1の形態では、上述のようにしてBD−ROM仮想プレーヤモデルを定義することで、DVDビデオにはなかった様々なメリットを得ることができる。例えば、この発明の実施の第1の形態によれば、従来のDVDビデオにおける幾つかの機能を、一つのモデルで実現できる。
第1の例として、字幕の強制出画機能およびUOP(User Operation)禁止機能が挙げられる。字幕の強制出画機能は、ユーザが字幕表示をオフに設定していても、特定の字幕を特定のシーンで強制的に表示させる機能である。また、UOP禁止機能は、ユーザ入力を禁止する機能である。DVDビデオでは、これらの機能を実現するために、それぞれ専用のデータ構造と動作モデルが定義されていた。
この発明の実施の第1の形態によるBD−ROM仮想プレーヤモデルでは、字幕の強制出画機能に関しては、字幕を強制的に出画させたいシーン(時刻)にマークを打っておき、そのマークに対応したイベントリスナ登録を行うと共に、字幕表示のオン/オフにかかわらず画面上に字幕を出画する処理をリスナとして用意しておく。このようにすることで、通常のマークを処理するモデルで、字幕の強制出画機能を同一の処理として実現することができる。
また、UOP禁止機能については、リモートコントロールコマンダのキー入力イベントに対するイベントリスナ登録を行わなければ、キー入力によるイベントが発生しても何も処理が行われないので、ユーザ入力が無視され、UOPが禁止される。
このように、この発明の実施の第1の形態では、一つのイベントモデルでDVDの機能を実現できるので、ディスク制作側の負担が軽くなるというメリットがある。
また例えば、DVDビデオでは、リモートコントロールコマンダの各キーに対する動作が予め決まっていた。例えば、サブメニューキーを押すと、オーディオ、字幕、アングルの設定を変更するためのサブメニュー画面が表示されることが、サブメニューキーの動作として決められていた。しかしながら、サブメニューはDVDビデオにおいて必須のデータではないので、サブメニューが無いディスクも存在する。この場合、サブメニューキーを押しても、何も反応がないことになる。
一方、この発明の実施の第1の形態のBD−ROM仮想プレーヤモデルでは、第21図A、第21図B、第21図Cおよび第21図D、第22図、第23図、第24図、ならびに、第25図Aおよび第25図Bを用いて説明したように、キーが押されたときにどのような処理を行うかは、ディスク制作側で決めることができる。そのため、サブメニューを用意しない場合でもメッセージを表示するようにプログラムすることで、サブメニューキーが押された場合には、メッセージを表示してサブメニューが無いことをユーザに伝えることが可能となる。
このように、この発明の実施の第1の形態では、ディスク製作の際の自由度が上がり、ユーザにとって操作しやすいディスクを製作することができるようになるというメリットがある。
さらに、この発明の実施の第1の形態では、BD−ROM仮想プレーヤモデルに対応するJavaクラスを定義し、Javaプログラムによりプレイリストの再生制御を行うようにしている。Javaプログラムを用いることにより、マルチスレッドプログラムが実現でき、ネットワークアクセスやユーザ入力の応答待ちによるタイムラグに容易に対処可能である。また、Javaプログラムを用いることにより、コマンド先読みによる分岐予測や投機実行なども、容易に実現可能であり、高速処理が可能となる。
1−5.ファイルの管理構造について
次に、BD−ROMのフルプロファイルに適用可能なファイルの管理構造について、第27図を用いて説明する。ファイルは、ディレクトリ構造により、階層的に管理される。記録媒体上には、必ず1つのディレクトリ(第27図の例ではルート(root)ディレクトリ)が作成される。このディレクトリの下が、1つの記録再生システムで管理される範囲とする。
ルートディレクトリの下に、ディレクトリBDMVが置かれる。なお、図示はされていないが、ディレクトリBDMVは、ルートディレクトリの下に複数を置くことができる。
ディレクトリBDMVの下には、2つのファイルすなわちファイル「scenario.hdmv」およびファイル「entrylist.data」が置かれると共に、ディレクトリ「PLAYLIST」、ディレクトリ「CLIPINF」、ディレクトリ「STREAM」といった複数のディレクトリが置かれる。
ファイル「scenario.hdmv」は、シナリオが格納されるシナリオファイルである。シナリオは、複数のプレイリストが並べられた構造であって、プレイリストの再生順序などを制御する。シナリオをより細分化した単位でユーザに見せるために、チャプタを設けることができる。設けられる。なお、第3図Aおよび第3図Bを用いて説明した、BD−ROMのHDムービーモードにおけるムービーオブジェクトは、ファイル「scenario.hdmv」に格納される。
ファイル「entrylist.data」は、シナリオ内の頭出し点(タイトルエントリ)、メニューを構成するプレイリストやプレイリスト群へのエントリポイントなどのメニューに関する情報が格納される。なお、第3図Aおよび第3図Bを用いて説明した、BD−ROMのHDムービーモードにおけるインデックステーブルは、ファイル「entrylist.data」に格納される。
ディレクトリ「PLAYLIST」は、プレイリストが格納される。一つのプレイリストは、一つのファイル「*****.mpls」に格納される。クリップAVストリーム上のマーク位置を表す情報は、当該クリップAVストリームの再生範囲を指定したプレイリストファイル「*****.mpls」に格納される。
ディレクトリ「CLIPINF」は、クリップインフォメーションファイル「#####.clpi」が格納される。ディレクトリ「STREAM」は、クリップAVストリームファイル「%%%%%.m2ts」が格納される。クリップインフォメーションファイルと、対応するクリップAVストリームファイルに対して、互いに関連したファイル名を付与することで、これらのファイルの関連付けが容易となる。例えば、クリップインフォメーションファイルと、対応するクリップAVストリームファイルにおいて、拡張子より前の部分「#####」と「%%%%%」とを同一とする。
なお、図示しないが、Javaプログラムを構成するJavaクラスファイルは、例えばディレクトリBDMVの下に設けられた所定のディレクトリに格納される。これに限らず、例えば、ルートディレクトリの下に、ディレクトリBDMVと同階層に設けられたディレクトリに格納するようにしてもよい。
1−6.デコーダモデルについて
次に、この発明の実施の第1の形態に適用可能なプレーヤデコーダ100について説明する。第28図A、第28図Bおよび第28図Cは、この発明の実施の第1の形態に適用可能なプレーヤデコーダ100の一例の構成を示す機能ブロック図である。このプレーヤデコーダ100は、図示されないドライブ装置に装填されたディスクから再生されたデータを解釈し、コンテンツを構成するAV(Audio/Video)ストリームを出力すると共に、出力されたAVストリームに対するユーザによるインタラクティブな操作を可能とする。
なお、プレーヤデコーダ100は、図示されないCPUにより全体の動作が制御される。例えば、プレーヤデコーダ100の各部におけるストリームやデータの流れは、CPUにより監視され、制御される。
図示されないドライブ装置にディスクが装填されると、BD−ROMのHDムービーモードにおいては、先ず、プレイリストの再生順序を指定したファイル「scenario.hdmv」と、メニューやタイトルを構成するプレイリスト群の先頭プレイリストを指すファイル「entrylist.data」とが再生され、このファイル「scenario.hdmv」およびファイル「entrylist.data」の記述に基づき、必要な他のファイルが読み出され、ディスクに記録されたコンテンツが再生される。
例えば、ファイル「scenario.hdmv」およびファイル「entrylist.data」の記述に基づき、ビデオプレーン134および第2ビデオプレーン160に表示するための動画データ、グラフィクスプレーンA132やグラフィクスプレーンB133、第2ビデオプレーン160に表示するための画像データ、プレイリストファイルなどがディスクから読み出される。フルプロファイルにおいては、プログラムを格納したファイルが読み出され、実行される。
以下では、ディスクから読み出されるこれらのデータのうち、動画データ、サブピクチャ(字幕データ)や音声データといった、連続的に処理する必要があるストリームをリアルタイムストリームと称する。また、シナリオファイル、プレイリストファイル、スクリプトファイルおよびプログラムファイル、ならびに、一部の動画、静止画およびサウンドデータといった、連続的な処理を要求されない非リアルタイムなデータを、ストアオブジェクトと称する。ストアオブジェクトは、メモリ上などに蓄積、展開され、必要に応じて処理される。
プレーヤデコーダ100は、チャンネル(1)および(2)の2系統の入力チャンネルを有し、入力チャンネル(1)の入力端101に、ストアオブジェクトが入力される。入力チャンネル(2)の入力端202に、リアルタイムストリームが入力される。入力端202に、ストアオブジェクトを入力することも可能である。この実施の第1および第2の形態では、入力端202に入力されるリアルタイムストリームおよび一部のストアオブジェクトは、例えばMPEG2 TS(Moving Pictures Experts Group 2 Transport Stream)である。
なお、入力端202に入力されるリアルタイムストリームは、MPEG2 TSに限られない。パケット単位で伝送され、ビデオデータ、オーディオデータ、静止画像データなどを多重化可能であれば、他の形式のストリームを入力するようにしてもよい。このときには、後述するPIDフィルタ110は、そのストリーム形式に適合したデマルチプレクサとして用いられ、ビデオデータ、オーディオデータ、静止画像データなどを分離する。
また、例えば、ドライブ装置においてディスクの回転速度を2倍速などの高速回転としてディスクからの読み出し転送レートを上げ、時分割で動作させることにより、ディスクからの、チャンネル(1)および(2)の2系統の読み出しが実現可能である。
先ず、入力チャンネル(1)の系統について説明する。入力端101に入力されたストアオブジェクトは、スイッチ回路102に入力される。ストアオブジェクトとしてJavaファイルや、ECMA(European Computer Manufacturers Association)スクリプト、HTML(Hyper Text Markup Language)ファイル(またはXHTMLファイル)などによるプログラムコードが入力された場合、スイッチ回路102において出力端102Aが選択され、入力されたプログラムコードがコードバッファ104に蓄えられる。
一方、ストアオブジェクトとして画像データが入力された場合、スイッチ回路102において出力端102Bが選択され、入力された画像データがスイッチ回路103に入力される。入力端202に入力されたリアルタイムストリームに、グラフィクスプレーンA132やグラフィクスプレーンB133に表示するための画像データが含まれていない場合には、スイッチ回路103で入力端103Aが選択され、スイッチ回路102から入力された画像データがコンテンツバッファ105に蓄えられる。
同様にして、入力端202に入力されたリアルタイムストリームに、グラフィクスプレーンA132やグラフィクスプレーンB133に表示するための画像データが含まれている場合には、スイッチ回路103において入力端103Bが選択され、当該画像データがコンテンツバッファ105に蓄えられる。コードバッファ104およびコンテンツバッファ105に蓄えられたストアオブジェクトは、必要に応じて読み出され、マルチメディアエンジン106に供給される。
コンテンツバッファ105に蓄えられたストアオブジェクトのうち画像データは、スイッチ回路107および108をそれぞれ介して、グラフィクスデコーダA116およびグラフィクスデコーダB117にも供給される。
マルチメディアエンジン106は、XMLパーサ106A、プログラム/スクリプトインタプリタ106Bおよびグラフィクスレンダラ106Cを含む。マルチメディアエンジン106は、さらに、サウンドプレーヤ106Dを有し、オーディオデータの扱いを可能としている。マルチメディアエンジン106は、独立的なハードウェアで構成してもよいし、上述した図示されないCPUの、所定のプログラムに基づく処理で実現することも可能である。
XMLパーサ106Aは、XML(Extensible Markup Language)文書を解析する機能を有し、HTML文書やXHTML文書の解析も可能である。XMLパーサ106Aで解釈されたHTML文書やXHTML文書は、このプレーヤデコーダ100で実行可能な形式に変換される。プログラム/スクリプトインタプリタ106Bは、Java(登録商標)プログラムやECMAスクリプト等を解析し、このプレーヤデコーダ100で実行可能な形式に変換される。また、グラフィクスレンダラ106Cは、画像データを字幕プレーン11およびグラフィクスプレーン12に展開可能な形式にデコードする。
マルチメディアエンジン106において、バッファ109をワークメモリとして、これらXMLパーサ106A、プログラム/スクリプトインタプリタ106Bおよびグラフィクスレンダラ106Cの処理が行われる。例えば、XMLパーサ106Aおよびプログラム/スクリプトインタプリタ106Bにより、バッファ109のうちコードバッファ109Aが用いられる。また、グラフィクスレンダラ106Cにより、バッファ109のうちグラフィクスバッファ109Dが用いられる。バッファ109は、上述のコードバッファ109Aおよびグラフィクスバッファ109Dの他に、文字列の表示に用いるフォントデータが格納されるフォントバッファ109B、XMLパーサ106AでHTML文書を解析した結果を階層化された木構造で保持するためのツリーバッファ109C、サウンドプレーヤ106Dで用いるオーディオデータが格納されるサウンドバッファ109Eなどが含まれる。
マルチメディアエンジン106では、必要に応じて、コードバッファ104に蓄えられたJavaプログラムの読み出し、コンテンツバッファ105からの画像データの読み出しなどを行う。コードバッファ104およびコンテンツバッファ105に格納されたデータは、当該データが不要になるまで、コードバッファ104やコンテンツバッファ105に保持しておくことができる。したがって、これらコードバッファ104やコンテンツバッファ105に格納されたデータは、必要に応じて何度でも読み出して使うことができる。
マルチメディアエンジン106では、上述の他にも、例えば、コードバッファ104に蓄えられたECMAスクリプトを読み出し、実行することができる。また、読み出されたECMAスクリプトの記述に基づき、必要に応じて、コードバッファ104から他のECMAスクリプトやHTML文書(またはXHTML文書)を読み出し実行することができる。
さらに、マルチメディアエンジン106により、ユーザからの、リモートコントロールコマンダやポインティングデバイスなどによる入力が受け取られ、所定に処理される。ユーザ入力は、さらに、後述するグラフィクスデコーダA116、グラフィクスデコーダB117、オーディオデコーダ118、MPEGビデオデコーダ120およびシステムデコーダ121にも供給される。
グラフィクスレンダラ106Cで処理された画像データは、スイッチ回路130および131をそれぞれ介してグラフィクスプレーンA132およびグラフィクスプレーンB133に供給される。なお、この例では、グラフィクスプレーンA132およびグラフィクスプレーンB133に供給される画像データとして、PNG形式、ランレングス形式、JPEG形式などが挙げられるが特に規定しない。これらの各プレーン132、133に画像データが供給されるタイミングは、マルチメディアエンジン106により制御される。
マルチメディアエンジン106は、さらに、後述するプレゼンテーションプロセッサ155に対して、ビデオプレーン134、第2ビデオプレーン160、グラフィクスプレーンA132およびグラフィクスプレーンB133の切り換え、アルファ合成などを指示する制御信号を供給する。同様に、マルチメディアエンジン106は、後述するプレゼンテーションプロセッサ157に対して、オーディオストリーム出力を制御するような制御信号を供給する。
マルチメディアエンジン106では、例えば、図示されないROM(Read Only Memory)などに予め格納されたJavaプログラムを読み込み、オブジェクトBDBasicPlayerをマルチメディアエンジン106上に構築する。また、マルチメディアエンジン106では、コードバッファ104に蓄えられたJavaプログラムを読み出す。コードバッファ104から読み出されたJavaプログラムにより構成されるオブジェクトからオブジェクトBDBasicPlayerに対して、必要に応じてイベントリスナ登録が行われる。
第15図を用いて説明したように、マルチメディアエンジン106上で、例えばユーザ入力に応じて、コードバッファ104から読み出されたJavaプログラムによるオブジェクトに対して、オブジェクトBDBasicPlayerからイベント送信がなされ、当該オブジェクトにおいて、対応するメソッドが実行される。また、オブジェクトBDBasicPlayerは、プレーヤデコーダ100の状態の変化を検出し、所定の変化が検出されたら、対応するイベントを発生させる。マルチメディアエンジン106は、このようにして発生されたイベントに応じたメソッドなどにより、図示されないドライブ装置や、このプレーヤデコーダ100の各部を制御し、ディスクの再生制御を行うことになる。
次に、入力チャンネル(2)の系統について説明する。入力端202にMPEG2 TSで入力されたリアルタイムストリームは、PIDフィルタ110に供給され、MPEG2 TSのトランスポートパケットに格納されるPID(Packet Identification)が抽出され、当該トランスポートパケットに格納されるストリームの属性が検出される。PIDフィルタ110では、このストリーム属性に基づき、入力されたリアルタイムストリームが、トランスポートパケット毎に対応する系統に振り分けられる。
PIDに基づき、トランスポートパケットがストアオブジェクトに属する画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111Aに一旦溜め込まれ、所定のタイミングで読み出されて入力端103Bが選択されたスイッチ回路103に入力され、スイッチ回路103を介してコンテンツバッファ105に格納される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットが字幕データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111BおよびバッファBn112Bに一旦溜め込まれ、所定のタイミングで読み出されて入力端107Bが選択されたスイッチ回路107に入力され、スイッチ回路107を介してグラフィクスデコーダA116に供給される。
グラフィクスデコーダA116では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された字幕データがデコードされて字幕などを表示するための画像データとされる。この画像データは、所定のタイミングでスイッチ回路130の入力端130Bに入力され、スイッチ回路130を介してグラフィクスプレーンA132に展開される。また、スイッチ回路131を介してグラフィクスプレーンB133にも展開させることが可能である。
PIDフィルタ110において、PIDに基づき、トランスポートパケットがグラフィクスデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111CおよびバッファBn112Cに一旦溜め込まれ、所定のタイミングで読み出されて入力端108Bが選択されたスイッチ回路108に入力され、スイッチ回路108を介してグラフィクスデコーダB117に供給される。
グラフィクスデコーダB117では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納されたグラフィクスデータがデコードされ、グラフィクスデータとされる。この画像データは、所定のタイミングでスイッチ回路131の入力端131Bに入力され、スイッチ回路131を介してグラフィクスプレーンB133に展開される。また、スイッチ回路130を介してグラフィクスプレーンA132にも展開させることが可能である。
なお、グラフィクスデコーダA116とグラフィクスデコーダB117には、機能的な違いはない。つまり、モデル上、独立して動作するグラフィクスデコーダが2系統あることを表している。すなわち、字幕データとグラフィクスデータとをそれぞれ独立にデコードできることを想定している。実装においては、1系統の高速なグラフィクスデコーダを時分割で使用し、仮想的に2系統のグラフィクスデコーダが存在しているとみなす方法もある。
PIDフィルタ110において、PIDに基づき、トランスポートパケットがオーディオデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111DおよびバッファBn112Dに一旦溜め込まれ、所定のタイミングで読み出されてオーディオデコーダ118に供給される。このトランスポートパケットに格納されるオーディオデータは、例えばMPEGに準拠した方式で圧縮符号化されている。
オーディオデコーダ118は、例えばリニアPCM(Pulse code Modulation)オーディオデコーダ119も有する。オーディオデコーダ118は、入力されたトランスポートストリームのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された圧縮符号化されたオーディオデータをリニアPCMオーディオデータにデコードする。
オーディオデコーダ118から出力されたリニアPCMオーディオデータは、オーディオ用のプレゼンテーションプロセッサ157に入力され、マルチメディアエンジン106の制御に基づき所定の音響効果などが付加されて、出力端158に導出される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットが動画データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111E、バッファMBn113およびバッファEBn114に一旦溜め込まれ、所定のタイミングで読み出されてMPEGビデオデコーダ120に供給される。このトランスポートパケットに格納される動画データは、MPEG2方式により圧縮符号化されている。
MPEGビデオデコーダ120では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された、MPEG2方式で圧縮符号化された動画データをベースバンドの動画データにデコードする。
MPEGデコーダ120から出力された動画データは、スイッチ回路124の入力端124Aに入力される。スイッチ回路124において、MPEGビデオデコーダ120からの動画データとマルチメディアエンジン106から出力された動画データが選択される。所定のタイミングで選択された動画データは、スイッチ123に入力される。スイッチ123では展開先のビデオプレーンが選択され、動画データは、ビデオプレーン134あるいは第2ビデオプレーン160に展開される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットがシステム情報が格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111FおよびBsys115を介してシステムデコーダ121に供給される。システムデコーダ121では、供給されたトランスポートパケットのヘッド情報が除去され、格納されているシステム情報が取り出される。システム情報は、例えば図示されないCPUに渡される。
グラフィクスプレーンA132上の画像データは、パレット150に供給され、256色からなるパレットに対してインデックスによる参照がなされ、RGBデータが出力されると共に、アルファブレンディングのためのパラメータである不透明度データα1が抜き出される。RGBデータは、RGB/YCbCr変換回路151によりYCbCrデータに変換され、YCbCrデータおよび不透明度データα1は、プレゼンテーションプロセッサ155に供給される。
グラフィクスプレーンB133上の画像データは、パレット152に供給され、256色からなるパレットに対してインデックスによる参照がなされ、RGBデータが出力されると共に、不透明度データα2が抜き出される。RGBデータは、RGB/YCbCr変換回路153によりYCbCrデータに変換され、YCbCrデータおよび不透明度データα2は、プレゼンテーションプロセッサ155に供給される。
ビデオプレーン134の出力は、アップ/ダウンコンバータ154を介してプレゼンテーションプロセッサ155に供給される。同様に、第2ビデオプレーン160の出力は、アップ/ダウンコンバータ161を介してプレゼンテーションプロセッサ155に供給される。
なお、アップ/ダウンコンバータ154は、画像の解像度を変換する回路であって、例えば高解像度のHD(High Definition)画像から通常の解像度を有するSD(Standard Definition)画像への変換を行う。
プレゼンテーションプロセッサ155は、グラフィクスプレーンA132の画像データによる不透明度α1と、グラフィクスプレーンB133による不透明度α2とを用いたアルファブレンディング処理を行う。また、プレゼンテーションプロセッサ155では、ビデオプレーン134および第2ビデオプレーン160の出力を画素単位で切り替えて、上述したピクチャインピクチャ機能や壁紙表示機能などを実現する。
すなわち、プレゼンテーションプロセッサ155では、ビデオプレーン134と第2ビデオプレーン160の画像データを図示されないスイッチで切り替えて一つの画像データを構成し、その画像データに対し、グラフィクスプレーンA132の画像データに設定された不透明度α1に基づき、グラフィクスプレーンA132の画像データが合成される。さらに、ビデオプレーンとグラフィクスプレーンA132が合成された画像データに対して、グラフィクスプレーンB133の画像データに設定された不透明度α2に基づき、グラフィクスプレーンB133の画像データが合成される。この、グラフィクスプレーンB133の画像データ、グラフィクスプレーンA132の画像データ(字幕データ)、ならびに、ビデオプレーン134、第2ビデオプレーン160の画像データが合成された画像データが出力端156に導出される。
なお、プレゼンテーションプロセッサ155は、画像データに対してリアルタイムでエフェクト処理を行うこともできる。
上述では、プレーヤデコーダ100の各部がハードウェアで構成されるように説明したが、これはこの例に限られない。例えば、プレーヤデコーダ100をソフトウェア上の処理として実現することも可能である。この場合、プレーヤデコーダ100をコンピュータ装置上で動作させることができる。また、プレーヤデコーダ100をハードウェアおよびソフトウェアが混合された構成で実現することもできる。例えば、オーディオデコーダ118やMPEGビデオデコーダ120をハードウェアで構成し、その他をソフトウェアで構成することが考えられる。
プレーヤデコーダ100をソフトウェアのみ、または、ハードウェアおよびソフトウェアの混合により構成し、コンピュータ装置で実行させるためのプログラムは、例えばCD−ROM(Compact Disc−Read Only Memory)といった記録媒体に記録されて提供される。このCD−ROMをコンピュータ装置のCD−ROMドライブに装填し、CD−ROMに記録されたプログラムを所定にコンピュータ装置にインストールすることで、上述の処理をコンピュータ装置上で実行可能な状態とすることができる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。
2.発明の実施の第2の形態
次に、この発明の実施の第2の形態について説明する。この実施の第2の形態は、ECMAスクリプトと呼ばれるスクリプト言語を用いてプレーヤモデルを記述する例である。ECMAスクリプトは、ECMA(European Computer Manufacturers Association)により定められた、JavaScript(登録商標)に基づいたクロスプラットフォーム用のスクリプト言語である。ECMAスクリプトは、HTML文書との親和性が高いことと、独自のオブジェクトの定義が可能であるため、この発明によるプレーヤモデルに用いて好適である。
なお、第28図A、第28図Bおよび第28図Cを用いて既に説明したように、プレーヤデコーダ100は、マルチメディアエンジン106においてECMAスクリプトの解析や実行が可能であるので、この実施の第2の形態にもそのまま適用することができる。
なお、以下では、このECMAスクリプトを元にしたスクリプト言語を用いた、この発明の実施の第2の形態に基づく規格を、UMD(Universal Media Disc:登録商標)ビデオ規格と呼ぶ。また、UMDビデオ規格のうち、特にスクリプトに関する部分をUMDビデオスクリプト規格と呼ぶ。
2−1.UMDビデオ規格について
先ず、理解を容易とするために、この実施の第2の形態に適用可能なUMDビデオ規格について、概略的に説明する。第29図は、UMDビデオ規格のレイヤ構成を示す。この第29図は、実施の第1の形態で説明した第1図に対応するものである。UMDビデオ規格では、スクリプトレイヤ、プレイリストレイヤおよびクリップレイヤの3層のレイヤ構造が定義され、この構造に基づきストリーム管理がなされる。
UMDビデオ規格においては、ディジタル符号化されたビデオ、オーディオおよび字幕を、MPEG2(Moving Pictures Experts Group 2)のエレメンタリストリームとして多重化したMPEG2ストリームとして扱う。このビデオ、オーディオおよび字幕のエレメンタリストリームが多重化されたMPEG2ストリームを、クリップAVストリーム(Clip AV Stream)と呼ぶ。クリップAVストリームは、クリップAVストリームファイルに格納される。クリップAVストリームファイルの記録時に、当該クリップAVストリームファイルに1対1に対応して、クリップインフォメーションファイル(Clip Information File)が同時に作成される。これらクリップインフォメーションファイルと、対応するクリップAVストリームファイルとからなる組を、クリップ(Clip)と呼ぶ。
クリップは、ディスクへの記録の単位ともいうべきものであり、再生時にどのような順序でクリップを再生するかは、クリップの上位のレイヤであるプレイリストレイヤで管理する。プレイリストレイヤは、クリップの再生経路を指定するレイヤであり、1または複数のプレイリスト(Play List)を含む。プレイリストは、プレイアイテムの(PlayItem)の集合からなる。プレイアイテムには、クリップの再生範囲を示した一組のイン(In)点およびアウト(Out)点が含まれており、プレイアイテムを連ねることによって、任意の順序でクリップを再生することができるようになる。プレイアイテムは、クリップを重複して指定することができる。クリップAVストリームファイルのイン点およびアウト点は、タイムスタンプ(クリップ内時刻)で指定され、タイムスタンプは、クリップインフォメーションファイルの情報によってクリップAVストリームファイル上のバイト位置に変換される。
プレイリストは、クリップの全部または一部を指すプレイアイテムを順序に従って再生していく構造だけを有しており、プレイリストのみを用いて再生順の分岐や、ユーザとの双方向性を実現することは、できない。
スクリプトレイヤは、言語仕様のECMAスクリプトを拡張した、UMDビデオスクリプトによって構築されるレイヤである。UMDビデオスクリプトは、ECMAスクリプトを基本として、UMDビデオに特有な機能を実現するための拡張を加えたスクリプトである。
スクリプトレイヤは、プレイリストレイヤの上位のレイヤであり、プレイリストの再生指示や、プレーヤ設定を行うコマンド列から構成される。スクリプトレイヤのコマンドにより、複数の言語用に用意されたストリームのうち何れを選択する、ある条件に従って選択されるプレイリストに再生の流れが変化する、というような、条件分岐を伴うプレイリスト再生を実現することができる。このような条件分岐を伴うプレイリスト再生が用いられるアプリケーションの例としては、マルチストーリーが挙げられる。このスクリプトレイヤにより、ユーザとの双方向性機能(インタラクティブ機能)が導入されることになる。
2−2.UMDビデオ規格のプレーヤモデルについて
次に、UMDビデオ規格に従ったデータを再生する再生装置(プレーヤ)のモデル、すなわち、プレーヤモデルについて説明する。プレーヤは、先ず、ディスクからスクリプトプログラム、プレイリストおよびクリップインフォメーションファイルを読み出し、次に、これらにより定められている再生順序に従って、クリップAVストリームファイルを読み出し、ビデオ、オーディオおよび字幕などを再生する。
スクリプトプログラムの言語仕様においては、プレイリストを再生する機能ブロックを、スクリプトプログラム内のオブジェクトとして実装する。このプレイリスト再生を行うオブジェクトを、UMDビデオ規格では、ムービープレーヤ(Movie Player)オブジェクトと呼ぶ。プレイリストの再生指示や、プレーヤ設定を行うコマンドは、このムービープレーヤオブジェクトが有するメソッドとなる。ムービープレーヤオブジェクトは、スクリプトレイヤからのメソッドによって制御される。このとき、ムービープレーヤオブジェクトからスクリプトレイヤに対して、状態の変化や再生位置などを通知する機能が必要となる。これは、ムービープレーヤオブジェクトがスクリプトプログラムに対してイベントを発することに対応し、そのイベントに対応した処理は、イベントハンドラとして記述される。
このように、ムービープレーヤオブジェクトからスクリプトプログラムへの情報伝達は、イベントにより行い、スクリプトプログラムからムービープレーヤオブジェクトに対する制御をメソッドにより行うモデルを構築することにより、クリップAVストリームの再生をスクリプトプログラムで制御できるようになる。
第30図は、上述した、この実施の第2の形態による一例のプレーヤモデルを模式的に示す。ムービープレーヤ300は、UMDビデオ規格においてビデオ、オーディオおよび字幕の再生を司るモジュールである。上述したムービープレーヤオブジェクトは、ムービーオブジェクトをスクリプトプログラムから操作するためにスクリプトプログラム内のオブジェクトとしたものである。換言すれば、ムービープレーヤオブジェクトは、ムービープレーヤの機能を実現するためのスクリプトプログラムそのものである。
なお、ムービープレーヤ300とムービープレーヤオブジェクトは、実質的に同一の対象を表すと考えられるので、以下、これらを同一の符号を付して説明する。
第30図において、ムービプレーヤ300は、ユーザ入力310などにより引き起こされる下位レイヤ(第30図の例ではネイティブ実装プラットフォーム301)や、上位レイヤであるスクリプトレイヤ302からのメソッドに従って、プレイリストおよびクリップインフォメーションのデータベースに基づき、クリップAVストリームファイルの読み出し、読み出されたクリップAVストリームのデコードおよび表示を行う。
ムービープレーヤオブジェクト300の内部は、UMDビデオを再生するUMDビデオプレーヤの実装に依存するものであって、スクリプトレイヤ302からは、ブラックボックス化されたオブジェクトとして、メソッドやプロパティといったAPI(Application Programming Interface)が提供される。ここで、UMDビデオプレーヤは、ムービープレーヤを実装した実際の機器を指す。全てのUMDビデオプレーヤは、UMDビデオ規格の制約を守ってムービープレーヤを実装しており、再生互換を有する。
第30図に示されるように、ムービープレーヤオブジェクト300は、ネイティブ実装プラットフォーム301からの制御コマンド311を受け付けるパス、スクリプトレイヤ302に対してイベント312を通知するパス、スクリプトレイヤ302からのメソッド313を受け付けるパスの、3本の入出力パスを有する。
制御コマンド311は、ネイティブ実装のプラットフォーム301からの、ムービープレーヤオブジェクト300の動作を制御するコマンドである。ネイティブ実装プラットフォーム301は、例えば、実際の機器としてのUMDビデオプレーヤにおける、機器に固有の部分とムービープレーヤ300とのインターフェイスである。イベント312は、ムービープレーヤ300からスクリプトレイヤ302に対するスクリプトイベントである。メソッド313は、スクリプトレイヤ302のスクリプトプログラムからムービープレーヤ300に渡されるメソッドである。
ムービープレーヤオブジェクト300は、内部に、UMDビデオ規格のプレイリストおよびクリップインフォメーションのデータベース320を有する。ムービープレーヤオブジェクト300は、このデータベース320を用いて、ユーザ入力310に対するマスクや、時刻で指定された再生位置をクリップAVストリーム内のバイト位置に変換する処理などを行う。
ムービープレーヤオブジェクト300内のプレイバックモジュール321は、ビデオ、オーディオおよび字幕が多重されたMPEG2PS(Program Stream)であるクリップAVストリームのデコードを行う。プレイバックモジュール321は、プレイ、ストップおよびポーズの3状態を持ち、制御命令やメソッドによって、この3状態の間を遷移する(第31図参照)。
スクリプトレイヤ302は、UMDビデオスクリプト規格に基づくスクリプトプログラムを実行し、ムービープレーヤオブジェクト300の制御や、画面表示を行うレイヤである。このスクリプトレイヤ302は、コンテンツ制作者側の意図したシナリオを実現する役割を果たす。スクリプトレイヤ302は、ムービープレーヤオブジェクト300に対してメソッド313を発行し、ムービープレーヤオブジェクト300からは、イベント312を受け取る。スクリプトレイヤ302は、ネイティブ実装プラットフォーム301との間で、ユーザ入力310に応じたキーイベント314や、画面描画などをネイティブ実装プラットフォーム301に対して指示するメソッド315などのやりとりを行う。
例えば、メニュー画面上に配置されるボタンは、スクリプトレイヤ302のスクリプトプログラムからネイティブ実装プラットフォーム301に渡されるメソッド315に基づき、ネイティブ実装プラットフォーム301により描画される。ユーザがそのボタンに対して選択操作を行ったときには、ユーザ入力310に応じたキーイベント314がネイティブ実装プラットフォーム301からスクリプトレイヤ302に通知され、スクリプトレイヤ302内のスクリプトプログラムは、キーイベント314に基づきキー入力310に応じた処理を行う。
なお、スクリプトプログラムとスクリプトプログラム内で使用する画像、音声などのデータは、ファイルとしてディスク上に記録される。このファイルは、第25図Aおよび第25図Bで説明したファイルscenario.hdmvに相当する。
このように、ビデオ、オーディオおよび字幕のデコードや表示制御はムービープレーヤ300が司り、ボタンなどのGUI(Graphical User Interface)を構成するための部品画像の配置や表示、ならびに、GUI部品に対して選択操作がなされたときの処理は、スクリプトレイヤ302が行うというように、役割分担がなされている。
ネイティブ実装プラットフォーム301は、ムービープレーヤオブジェクト300やスクリプトプログラムが動作するための基盤となるプラットフォームであって、例えば、実際のUMDビデオプレーヤがハードウェアである場合、ハードウェアとプレーヤモデルとの間の処理を仲介する役割を果たすように、ハードウェアに固有に実装される。
例えば、ネイティブ実装プラットフォーム301は、ユーザからのユーザ入力310を受け付け、受け付けたユーザ入力310がムービープレーヤ300に対する命令なのか、スクリプトレイヤ302で描画および表示しているボタンに対する命令なのかを判定する。ネイティブ実装プラットフォーム301は、ユーザ入力310がムービープレーヤ300に対する命令であると判定されれば、ユーザ入力310をムービープレーヤ300に対する内部制御命令である制御コマンド311に変換し、ムービープレーヤ300に対して制御命令を発する。一方、ネイティブ実装プラットフォーム301は、ユーザ入力310がスクリプトレイヤ302で描画および表示しているGUI部品に対する命令であると判定されれば、ユーザ入力310に応じたキーイベント314をスクリプトレイヤ302に通知する。
次に、ムービープレーヤ300についてより詳細に説明する。第31図は、ムービープレーヤ300の一例の内部構成を示す。上述したように、ムービープレーヤ300は、データベース320およびプレイバックモジュール321とから構成される。データベース320は、ディスクから読み取ったプレイリストの情報と、クリップの情報すなわちクリップインフォメーションとを格納する領域である。
プレイバックモジュール321は、デコーダエンジン322と、プレイバックモジュール321の状態を表す値であるプロパティ323とからなる。プロパティ323は、例えば言語コードのように、ムービープレーヤ300の初期設定で値が決まるプロパティ323A(リードオンリーパラメータ)と、プレイバックモジュール321の状態によって値が変化するプロパティ323B(プレーヤステータス)の2種類がある。
初期設定で値が決まるプロパティ323Aは、ネイティブなシステム、例えば実際の機器によって値がセットされ、プレイリストやクリップインフォメーション、スクリプトプログラムから値を変更されることがない。プロパティ323Aは、スクリプトプログラムから値を読み出すことのみが可能とされる。一方、プレイバックモジュール321の状態を表すプロパティ323Bは、スクリプトプログラムから値を読み出すことができると共に、一部のスクリプトプログラムから値を書き込むことが可能とされる。
なお、この動作モデルにおいては、プレイリストおよびクリップインフォメーションは、クリップAVストリームの再生前にディスクからプリロードされていることを想定している。これに限らず、他の実装であっても、ムービープレーヤモデルで定めた動作を実現できていればよい。
ムービープレーヤオブジェクト300は、スクリプトレイヤ302またはネイティブ実装プラットフォーム301からの指示に従い、指定されたプレイリストを再生する。例えば、ムービープレーヤ300は、データベース320を参照し、指定されたプレイリストに対応するクリップAVストリームの再生位置をファイル中のバイト位置で得る。プレイバックモジュール321において、デコーダエンジン322は、この再生位置情報に基づき、クリップAVストリームのデコードを制御する。
ムービープレーヤ300は、第32図に示されるように、プレイリストの再生状況に応じてプレイ(play)、ストップ(stop)およびポーズ(pause)の3状態を持つ。プレイ状態は、プレイリストの再生を行っており、時間が経過している状態を指す。通常再生の他、2倍速、1/2倍速といった変速再生や、早送りおよび巻き戻し(早戻し)もプレイ状態に含まれる。ポーズ状態は、プレイリストの再生を行っている状態で、時間軸が停止している状態である。再生をフレーム単位で進めたり戻したりする所謂コマ送り再生は、ポーズ状態とプレイ状態とを繰り返している状態である。ストップ状態は、プレイリストを再生していない状態である。
例えば、ムービープレーヤ300の状態は、ムービープレーヤ300内のデコーダエンジン322におけるプレイ、ポーズおよびストップの状態遷移に伴うもので、デコーダエンジン322の状態遷移に応じてプロパティ323Bの値が更新される。
リジュームインフォメーションは、ストップ状態直前の状態を記憶する。例えば、ムービープレーヤ300があるプレイリストをデコードしプレイ状態となっているときに、状態がストップ状態に遷移すると、ストップ状態の直前の状態を記憶する。リジュームインフォメーションは、ハードウェアとしてのプレーヤが持つ不揮発性メモリに、ディスクのタイトル毎に識別可能なように複数を記憶させることができる。
2−3.ムービープレーヤのイベントモデルについて
ムービープレーヤ300のイベントモデルについて説明する。ムービープレーヤ300は、プレイリストを再生するプレイ状態で、様々なイベントを発生する。このイベントは、イベントハンドラと呼ばれる、スクリプトで記述された処理プログラムの実行を引き起こす。イベントハンドラは、イベント発生によって呼び出されるメソッドである。このイベント発生によって処理プログラムの実行を開始するプログラム実行モデルを、イベントドリブンモデルと呼ぶ。この実施の第2の形態においては、スクリプトプログラムは、イベントハンドラ群によってムービープレーヤオブジェクト300の動作を制御する。
第33図は、この発明の実施の第2の形態によるムービープレーヤ300のイベントモデルを模式的に示す。第33図において、イベントハンドラonEventA()、onEventB()およびonEventC()は、インターフェイスであって、それぞれのイベントハンドラの内容は、スクリプトで記述されている。イベントハンドラの内容は、例えばコンテンツ制作者側で作成され実装される。UMDビデオスクリプト規格においては、ムービープレーヤオブジェクト300からスクリプトプログラムに通知されるイベント毎に、イベントハンドラが用意される。第33図の例では、イベントAが発生したときに実行される処理プログラムは、イベントハンドラonEventA()に決められている。イベントBおよびイベントCについても同様に、イベントBの発生時には対応するイベントハンドラonEventB()が実行され、イベントCの発生時には対応するイベントハンドラonEventC()が実行される。
イベント発生に応じて呼び出されるイベントハンドラは、システム側で選択されるため、コンテンツ制作者側では、どのイベントが発生したかを判断する処理を、スクリプトプログラム内に記述しておく必要が無い。
この実施の第2の形態によるイベントモデルは、実施の第1の形態で第15図を用いて既に説明した、イベント登録、イベント登録削除といった処理が必要なイベントリスナのモデルよりも簡単である。一方、どのようなイベントが発生しても一つのメソッドprocessEvent()を呼び出すモデル(第20図参照)では、どのイベントが発生したかを知り、イベント毎に用意してある処理ルーチンを切り替えるという前処理を、メソッドprocessEvent()の中に記述しておく必要がある。メソッドprocessEvent()は、コンテンツ制作者側が実装するものであるから、モデルとしては簡単でも、コンテンツ制作者側の負担が大きくなる。さらに、大きな一つの処理プログラム(メソッド)がイベントの発生毎に呼ばれることになり、メモリの領域を多く占有し、実行速度も遅くなると考えられる。この発明の実施の第2の形態による、イベント毎に処理プログラム(イベントハンドラ)を用意するモデルでは、このような点について有利であるといえる。
2−4.ムービープレーヤオブジェクト300について
次に、ムービープレーヤオブジェクト300の外部的な仕様について説明する。一般に、ECMAスクリプト言語仕様に従う言語により定義されたオブジェクトは、プロパティとメソッドとを持つ。この実施の第2の形態によるムービープレーヤオブジェクト300も、第31図および第32図を用いて既に説明したように、同様にしてプロパティとメソッドとを有する。プロパティは、外部のオブジェクトから、対象となるオブジェクト名とプロパティ名とを指定することで、直接的に読み書きすることが可能である。これに限らず、プロパティ値の設定を行うメソッドsetXXX()(「XXX」は、対象のプロパティ名)や、プロパティ値の読み出しを行うメソッドgetXXX()を定義することで、他のオブジェクトのプロパティの読み書きを、メソッドで行うことが可能となる。
この実施の第2の形態によるムービープレーヤオブジェクト300のプロパティおよびメソッドは、実施の第1の形態において第7図〜第12図を用いて既に説明したプロパティおよびメソッドと同一の仕様を適用できる。つまり、この実施の第2の形態において、スクリプトレイヤ302のスクリプトプログラムとムービープレーヤオブジェクト300との間の仕様(API)、すなわち、第30図を用いて説明したメソッド313は、上述した実施の第1の形態においてJavaで定義したクラスと同様に考えることができる。
一方、ユーザからのキー入力については、第30図を用いて既に説明したように、ユーザ入力310をネイティブ実装プラットフォーム301が先ず、受け取る。つまり、ネイティブ実装プラットフォーム301は、ユーザからのキー入力をユーザ入力310として受け取り、ユーザ入力310がムービープレーヤ300に対するコマンドなのか、スクリプトレイヤ302のスクリプトプログラムに対するイベントなのかを判定し、判定結果に応じて、制御コマンド311またはキーイベント314を発生し、対応する上位レイヤ(ムービープレーヤ300またはスクリプトレイヤ302)に通知する。
ユーザ入力310は、例えば第24図、ならびに、第25図Aおよび第25図Bを用いて既に説明したキー入力である。ここで、第24図に示されるキー入力に対応する機能と、第25図Aおよび第25図Bに示されるキー入力に対応する機能とでは、役割が異なるため、通知先をネイティブ実装プラットフォーム301で振り分ける必要がある。
第24図に示されるキー入力により、ビデオ、オーディオおよび字幕の再生に関する指示がなされる。ネイティブ実装プラットフォーム301は、ユーザ入力310として第24図に示されるキー入力を受け取ると、受け取ったキー入力を第21図A、第21図B、第21図Cおよび第21図Dで説明したようなコマンドに変換する。変換されたコマンドは、ムービープレーヤ300に対する制御コマンド311として通知される。すなわち、第21図A、第21図B、第21図Cおよび第21図Dを用いて説明したユーザ入力コマンドは、第30図の制御コマンド311に対応する。
一方、第25図Aおよび第25図Bに示されるキー入力は、GUIに対するユーザ入力310である。ネイティブ実装プラットフォーム301は、ユーザ入力310として第25図Aおよび第25図Bに示されるキー入力を受け取ると、受け取ったキー入力をキーイベント314に変換し、スクリプトレイヤ302に通知する。
なお、上述した第25図Aおよび第25図Bには、キーVK_ANGLE、キーVK_PRESENTATION_GRAPHICS、キーVK_AUDIOという、ストリーム切り替えに関するキー入力も含まれているが、これらは、スクリプトプログラムからムービープレーヤ300に対するメソッドで実現されるようにしているので、スクリプトレイヤ302に伝えられるべきキー入力である。
2−5.ムービープレーヤオブジェクト300でのイベントの扱いについて
Java言語を用いた上述の実施の第1の形態では、第14図A、第14図Bおよび第14図Cのようなイベントを、オブジェクトBDBasicPlayerが持つとしていた。そして、第15図に示されるようなイベントリスナモデルに基づき、第16図Aおよび第16図Bを用いて説明したようなメソッドで、リスナの登録や削除を行うようにしていた。この実施の第1の形態によるイベントリスナモデルでは、プログラム実行中に動的にリスナを登録および削除することができるようにされ、イベントへの応答処理をプログラムの途中で変更することが可能である。そのため、より自由度が高く、高度な機能を実現するプログラミングが可能である。
一方、この実施の第2の形態に適用されるECMAスクリプトを元にしたスクリプト言語においては、リスナ登録および削除を行うことはせず、イベントに応じて、予め固定的に用意された処理プログラムが呼び出されるようにしている。実施の第1の形態におけるリスナに対応するインターフェイスは、ムービープレーヤオブジェクト300のイベントハンドラである。イベントハンドラのモデルでは。第16図Aおよび第16図Bに示されるようなリスナ登録に関連するメソッドは、不要となる。
この実施の第2の形態では、イベントそれぞれに対応して、第34図Aおよび第34図Bに一例が示されるイベントハンドラが設けられる。イベントハンドラ名は、イベント名の先頭に「on」を付加したものになる。この第34図Aおよび第34図Bに一例が示されるイベントハンドラは、上述した実施の第1の形態において第14図A、第14図Bおよび第14図Cを用いて説明したイベントに対応するものである。
イベントハンドラonTimerFired()は、ムービープレーヤ300におけるカウントダウンタイマの値が”0”になったか、あるいは、カウントアップタイマの値が指定の値になったときに発生されるイベントに対応する。これにより、あるタイミングにおける処理を実現できる。
イベントハンドラonPlayStopped()は、ムービープレーヤ300における再生が停止された(ストップ)ときに発生されるイベントに対応する。イベントハンドラonPlayStilled()は、ムービープレーヤ300における再生が一時停止された(ポーズ)ときに発生されるイベントに対応する。イベントハンドラonPlayStarted()は、ムービープレーヤ300における再生が開始された(スタート)ときに発生されるイベントに対応する。イベントハンドラonPlayRepeated()は、ムービープレーヤ300における繰り返し再生時の先頭を検出したときに発生されるイベントに対応する。これらにより、デコーダエンジン322の状態に応じた処理を実現できる。
イベントハンドラonSPDisplayStatusChanged()は、ムービープレーヤ300における字幕(サブピクチャ)のストリームの表示および非表示状態が変わったときに発生されるイベントに対応する。イベントハンドラonSelectedAudioChanged()は、ムービープレーヤ300における再生するオーディオストリームが変わったときに発生されるイベントに対応する。イベントハンドラonVideoStopped()は、ムービープレーヤ300における再生するビデオストリームが変わったときに発生されるイベントに対応する。これらにより、再生されるストリームの変化に応じた処理を実現できる。
イベントハンドラonPlayListStarted()は、ムービープレーヤ300におけるプレイリストの先頭を検出したときに発生されるイベントに対応する。イベントハンドラonPlayListEndedは、ムービープレーヤ300におけるプレイリストの終わりを検出したときに発生されるイベントに対応する。イベントハンドラonPlayItemStarted()は、ムービープレーヤ300におけるプレイアイテムの先頭を検出したときに発生されるイベントに対応する。イベントハンドラonPlayItemEnded()は、ムービープレーヤ300におけるプレイアイテムの終わりを検出したときに発生されるイベントに対応する。プレイリストやプレイアイテムの連続的な再生など、プレイリストやプレイアイテムの再生開始や再生終了に応じた処理を実現できる。
イベントハンドラonMarkEncountered()は、ムービープレーヤ300における再生中に、プレイリスト中のマークを検出したときに発生されるイベントに対応する。プレイリスト中にある時刻を示すマークを予め設定しておくことで、再生中のプレイリストにおける分岐処理などが実現できる。
これらのイベントハンドラの内容は、コンテンツ制作者側がスクリプト言語により記述する。これにより、イベント発生時にコンテンツ制作者の意図する動作を実現することができる。
【図1】




【図4】

【図5】

【図6】

【図7】




【図9】

【図10】

【図11】

【図12】

【図13】




【図15】



【図17】

【図18】


【図20】





【図22】

【図23】

【図24】



【図26】

【図27】




【図29】

【図30】

【図31】

【図32】

【図33】




【特許請求の範囲】
【請求項1】
円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生装置において、
所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトと、
上記プレーヤオブジェクトの上位にあって、上記イベントの発生に対応した処理を記述可能なプログラムオブジェクトと
を有し、
上記プレーヤオブジェクトは、上記プログラムオブジェクトに記述された上記イベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした再生装置。
【請求項2】
請求の範囲1に記載の再生装置において、
上記プログラムオブジェクトは、上記記録媒体から再生される再生装置。
【請求項3】
請求の範囲1に記載の再生装置において、
上記プログラムオブジェクトが上記イベントの発生に対応した処理を上記プレーヤオブジェクトに登録することで、該イベントの発生に対応した処理が上記プレーヤオブジェクトで実行される再生装置。
【請求項4】
請求の範囲3に記載の再生装置において、
上記コンテンツデータの再生中に上記登録を行うことができるようにした再生装置。
【請求項5】
請求の範囲3に記載の再生装置において、
上記コンテンツデータの再生中に、上記登録された上記処理を削除できるようにした再生装置。
【請求項6】
請求の範囲1に記載の再生装置において、
上記所定の変化は、上記コンテンツデータの再生中の変化である再生装置。
【請求項7】
請求の範囲6に記載の再生装置において、
上記所定の変化は、上記コンテンツデータに設定された該コンテンツデータ内の時刻を表すマークの、再生中の検出である再生装置。
【請求項8】
請求の範囲1に記載の再生装置において、
ユーザの入力を受け付けて上記プレーヤオブジェクトに通知するユーザ入力手段をさらに有し、
上記所定の変化は、上記ユーザ入力手段に対する入力に基づく再生装置。
【請求項9】
請求の範囲8に記載の再生装置において、
上記ユーザ入力手段の物理キーに対して上記プログラムオブジェクトにより仮想キーが割り当てられ、上記所定の変化は、上記仮想キーに対する入力に基づく再生装置。
【請求項10】
請求の範囲1に記載の再生装置において、
上記所定の変化は、プレーヤの状態遷移である再生装置。
【請求項11】
請求の範囲1に記載の再生装置において、
上記イベントに基づく上記変化に応じて、1または複数のイベントがさらに発生できる再生装置。
【請求項12】
請求の範囲1に記載の再生装置において
上記再生処理は、上記円盤状記録媒体から上記コンテンツデータを再生する際の再生制御と、上記円盤状記録媒体から再生された上記コンテンツデータに対する処理とを含む再生装置。
【請求項13】
円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生方法において、
所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、上記プレーヤオブジェクトの上位にあって、上記イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述された上記イベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした再生方法。
【請求項14】
円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生方法をコンピュータ装置に実行させる再生プログラムにおいて、
上記再生方法は、
所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、上記プレーヤオブジェクトの上位にあって、上記イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述された上記イベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした再生プログラム。
【請求項15】
円盤状記録媒体に階層構造で記録されたコンテンツデータを再生する再生方法をコンピュータ装置に実行させる再生プログラムが記録されたコンピュータ装置に読み取り可能な記録媒体において、
上記再生方法は、
所定の変化に応じてイベントを発生させるように構成されたプレーヤオブジェクトにより、上記プレーヤオブジェクトの上位にあって、上記イベントの発生に対応した処理を記述可能なプログラムオブジェクトに記述された上記イベントの発生に対応した処理に基づき、円盤状記録媒体に階層構造で記録されたコンテンツデータの再生処理を制御するようにした記録媒体。
【請求項16】
コンテンツデータが階層構造で記録された円盤状の形状を有する記録媒体において、
少なくともコンテンツデータと、イベントの発生に対応した処理を記述可能なプログラムオブジェクトとが記録され、
上記コンテンツデータの再生処理が、所定の変化に応じてイベントを発生させるように構成された、上記プログラムオブジェクトの下位にあるプレーヤオブジェクトによって、上記プログラムオブジェクトに記述された上記イベントの発生に対応した処理に基づき制御されるようにした記録媒体。
【請求項17】
請求の範囲16に記載の記録媒体において、
上記プログラムオブジェクトが上記イベントの発生に対応した処理を上記プレーヤオブジェクトに登録することで、該イベントの発生に対応した処理が上記プレーヤオブジェクトで実行される記録媒体。
【請求項18】
請求の範囲17に記載の記録媒体において、
上記プログラムオブジェクトは、上記コンテンツデータの再生中に上記登録を行うことができるようにした記録媒体。
【請求項19】
請求の範囲17に記載の記録媒体において、
上記プログラムオブジェクトは、上記コンテンツデータの再生中に、上記登録された上記処理を削除できるようにした記録媒体。
【請求項20】
請求の範囲16に記載の記録媒体において、
上記所定の変化は、上記コンテンツデータの再生中の変化である記録媒体。
【請求項21】
請求の範囲20に記載の記録媒体において、
上記所定の変化は、上記コンテンツデータに設定された、該コンテンツデータ内の時刻を表すマークに基づく記録媒体。
【請求項22】
請求の範囲16に記載の記録媒体において、
上記所定の変化は、ユーザ入力手段に対する入力に基づく記録媒体。
【請求項23】
請求の範囲22に記載の記録媒体において、
上記プログラムオブジェクトは、入力に基づき上記所定の変化を生じさせる仮想キーを、上記ユーザ入力手段の物理キーに対して割り当てる記録媒体。
【請求項24】
請求の範囲16に記載の記録媒体において、
上記所定の変化は、プレーヤの状態遷移である記録媒体。
【請求項25】
請求の範囲16に記載の記録媒体において、
上記イベントに基づく上記変化に応じて、1または複数のイベントがさらに発生できる記録媒体。
【請求項26】
請求の範囲16に記載の記録媒体において、
上記再生処理は、上記コンテンツデータを再生する際の再生制御と、再生された上記コンテンツデータに対する処理とを含む記録媒体。

【国際公開番号】WO2005/052940
【国際公開日】平成17年6月9日(2005.6.9)
【発行日】平成19年6月21日(2007.6.21)
【国際特許分類】
【出願番号】特願2005−515735(P2005−515735)
【国際出願番号】PCT/JP2004/012243
【国際出願日】平成16年8月19日(2004.8.19)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】