(57)【要約】  【課題】  コンテンツを再生する際のユーザオペレーションを容易に制限可能とする。  【解決手段】  コンテンツの再生を制御するユーザオペレーションを制限する制限モードを予め設定し、制限モードを示す値をプレイリスト毎に属性情報としてディスクに記録する。プレーヤは、ディスクの再生時に、制限モードに基づくテーブルをプレイリスト毎に生成し、プレーヤに対するユーザオペレーションにより生成されたコンテンツの再生制御を行う制御コマンドを、テーブルを参照してコマンドフィルタによりフィルタリングし制限する。制限モードは、例えばプレイリストを必ず先頭から１倍速で再生しなければならないモードと、プレイリストを再生中にジャンプすることが禁止されるモードとが用意される。コンテンツ制作側でのユーザオペレーション制限に対する検証の負荷が軽減されると共に、プレーヤ側でも、動作の検証の負荷が軽減される。【選択図】  図３８
2006059434.tif 000002
【特許請求の範囲】
【請求項１】
円盤状記録媒体に記録されたコンテンツデータを再生する再生装置において、
少なくともコンテンツデータと、該コンテンツデータに対する再生経路を指定し、属性情報として上記コンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、該コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出す読み出し手段と、
上記再生制御プログラムに従い上記コンテンツデータを再生するプレーヤ手段と、
上記コンテンツデータの上記再生制御指示を与えるためのユーザオペレーションに応じて上記プレーヤ手段に対する制御コマンドを生成する制御コマンド生成手段と
を有し、
上記プレーヤ手段は、上記記録媒体から上記再生指示情報毎に上記制限モードを示す値を読み出し、読み出された該制限モードを示す値に基づき上記再生指示情報毎にテーブルを生成し、上記制御コマンド生成手段で生成された上記制御コマンドの実行を許可するか否かを、上記テーブルに基づき上記再生指示情報毎に制御するようにしたことを特徴とする再生装置。
【請求項２】
請求項１に記載の再生装置において、
上記制限モードは、上記プレーヤ手段に対して上記コンテンツデータの再生停止を指示する上記制御コマンドのみを許可するモードであることを特徴とする再生装置。
【請求項３】
請求項１に記載の再生装置において、
上記制限モードは、上記制御コマンドが、上記制限モードを示す値が含まれる上記属性情報を持つ上記再生指示情報に対応した再生区間内の任意の時刻からの再生開始を指示する場合に、該再生区間の先頭から１倍速で再生を行うように上記プレーヤ手段を制御するモードであることを特徴とする再生装置。
【請求項４】
請求項１に記載の再生装置において、
上記制限モードは、
上記制限モードが示す値が含まれる上記属性情報を持つ上記再生指示情報に対応する上記コンテンツデータを再生中に上記制御コマンドがあった場合に、上記プレーヤ手段に対して上記コンテンツデータの再生停止を指示する上記制御コマンドのみを許可し、
上記制限モードを示す値が含まれる上記属性情報を持つ上記再生指示情報に対応した再生区間内の任意の時刻からの再生開始を指示する上記制御コマンドがあった場合に、該再生区間の先頭から１倍速で再生を行うように上記プレーヤ手段を制御する
モードであることを特徴とする再生装置。
【請求項５】
請求項１に記載の再生装置において、
上記制限モードは、上記制限モードが示す値が含まれる上記属性情報を持つ上記再生指示情報に対応する上記コンテンツデータを再生中に、上記制御コマンドが該再生指示情報に対応する該コンテンツデータの再生を中止して該再生指示情報に対応した再生区間の末尾にジャンプすることを指示する場合、該制御コマンドの実行を禁止するモードであることを特徴とする再生装置。
【請求項６】
請求項１に記載の再生装置において、
上記プレーヤ手段は、上記制御コマンドがあったときに、現在再生中の上記コンテンツデータに対応する上記再生指示情報の上記属性情報に含まれる上記制限モードを示す値に基づく上記テーブルにより該制御コマンドの実行が許可されているか否かを判断し、
許可されていると判断された場合、該制御コマンドが該再生指示情報に対応した第１の再生区間内で実行されるものか否かをさらに判断し、
該制御コマンドが該第１の再生区間内で実行されるものではないと判断された場合に、該制御コマンドにより新たに再生開始されようとしている第２の再生区間に対応する上記再生指示情報の上記属性情報に含まれる上記制限モードを示す値に基づく上記テーブルにより該第２の再生区間の先頭からの再生のみが許可されているか否かをさらに判断する
ようにしたことを特徴とする再生装置。
【請求項７】
円盤状記録媒体に記録されたコンテンツデータを再生する再生方法において、
少なくともコンテンツデータと、該コンテンツデータに対する再生経路を指定し、属性情報として上記コンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、該コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出す読み出しのステップと、
上記再生制御プログラムに従い上記コンテンツデータを再生するコンテンツ再生のステップと、
上記コンテンツデータの上記再生制御指示を与えるためのユーザオペレーションに応じて上記プレーヤ手段に対する制御コマンドを生成する制御コマンド生成のステップと
を有し、
上記コンテンツ再生のステップは、上記記録媒体から上記再生指示情報毎に上記制限モードを示す値を読み出し、読み出された該制限モードを示す値に基づき上記再生指示情報毎にテーブルを生成し、上記制御コマンド生成のステップで生成された上記制御コマンドの実行を許可するか否かを、上記テーブルに基づき上記再生指示情報毎に制御するようにしたことを特徴とする再生方法。
【請求項８】
円盤状記録媒体に記録されたコンテンツデータを再生する再生方法をコンピュータ装置に実行させる再生プログラムにおいて、
上記再生方法は、
少なくともコンテンツデータと、該コンテンツデータに対する再生経路を指定し、属性情報として上記コンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、該コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出す読み出しのステップと、
上記再生制御プログラムに従い上記コンテンツデータを再生するコンテンツ再生のステップと、
上記コンテンツデータの上記再生制御指示を与えるためのユーザオペレーションに応じて上記プレーヤ手段に対する制御コマンドを生成する制御コマンド生成のステップと
を有し、
上記コンテンツ再生のステップは、上記記録媒体から上記再生指示情報毎に上記制限モードを示す値を読み出し、読み出された該制限モードを示す値に基づき上記再生指示情報毎にテーブルを生成し、上記制御コマンド生成のステップで生成された上記制御コマンドの実行を許可するか否かを、上記テーブルに基づき上記再生指示情報毎に制御するようにしたことを特徴とする再生プログラム。
【請求項９】
少なくとも
コンテンツデータと、
該コンテンツデータに対する再生経路を指定し、属性情報として上記コンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、
該コンテンツデータの再生を制御する再生制御プログラムと
が記録されることを特徴とする記録媒体。
【請求項１０】
請求項９に記載の記録媒体において、
再生装置により読み出された上記再生制御プログラムに従い上記コンテンツデータが再生され、上記コンテンツデータの上記再生制御指示を与えるために上記再生装置に与えられるユーザオペレーションに応じて上記コンテンツデータの再生を制御する制御コマンドが上記再生装置上で生成され、
上記制限モードを示す値に基づき上記再生装置により上記再生指示情報毎にテーブルが生成され、上記制御コマンドの実行を上記再生装置上で許可するか否かが、上記テーブルに基づき上記再生指示情報毎に制御されるようにしたことを特徴とする記録媒体。
【請求項１１】
請求項９に記載の記録媒体において、
上記制限モードは、上記再生装置に対する上記コンテンツデータの再生停止の指示のみを許可するモードであることを特徴とする記録媒体。
【請求項１２】
請求項９に記載の記録媒体において、
上記制限モードは、上記制限モードを示す値が含まれる上記属性情報を持つ上記再生指示情報に対応した再生区間内の任意の時刻からの再生開始が指示される場合に、該再生区間の先頭から１倍速で再生を行うように上記再生装置による上記コンテンツデータの再生を制御するモードであることを特徴とする記録媒体。
【請求項１３】
請求項９に記載の記録媒体において、
上記制限モードは、
上記再生装置に対して、再生中の上記制限モードが示す値が含まれる上記属性情報を持つ上記再生指示情報に対応する上記コンテンツデータの再生停止の指示があった場合に、該指示のみを許可し、
上記制限モードを示す値が含まれる上記属性情報を持つ上記再生指示情報に対応した再生区間内の任意の時刻からの再生開始の指示があった場合に、該再生区間の先頭から１倍速で再生を行うように上記再生装置による上記コンテンツデータの再生を制御する
モードであることを特徴とする記録媒体。
【請求項１４】
請求項９に記載の記録媒体において、
上記制限モードは、上記制限モードが示す値が含まれる上記属性情報を持つ上記再生指示情報に対応する上記コンテンツデータを上記再生装置が再生中に、上記制御コマンドが該再生指示情報に対応する該コンテンツデータの再生を中止して該再生指示情報に対応した再生区間の末尾にジャンプする指示があった場合、該指示の実行を禁止するモードであることを特徴とする記録媒体。
【請求項１５】
請求項１０に記載の記録媒体において、
上記再生装置上で上記制御コマンドが生成されたときに、現在再生中の上記コンテンツデータに対応する上記再生指示情報の上記属性情報に含まれる上記制限モードを示す値に基づく上記テーブルにより該制御コマンドの実行が許可されているか否かが判断され、
許可されていると判断された場合、該制御コマンドが該再生指示情報に対応した第１の再生区間内で実行されるものか否かがさらに判断され、
該制御コマンドが該第１の再生区間内で実行されるものではないと判断された場合に、該制御コマンドにより新たに再生開始されようとしている第２の再生区間に対応する上記再生指示情報の上記属性情報に含まれる上記制限モードを示す値に基づく上記テーブルにより該第２の再生区間の先頭からの再生のみが許可されているか否かがさらに判断される
ようにしたことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、大容量の記録媒体に記録されたプログラムに対するユーザによるインタラクティブな操作を可能とすると共に、所定のユーザ操作を制限することが容易な再生装置、再生方法および再生プログラム、ならびに、記録媒体に関する。
【背景技術】
【０００２】
ランダムアクセスおよび着脱が可能な記録媒体として、ＤＶＤ(Digital Versatile Disc)が出現して久しいが、近年では、このＤＶＤよりも大容量のディスク状記録媒体や、ＤＶＤより携帯に便利な小型のディスク状記録媒体の開発が進められている。
【０００３】
一方、従来から存在する、再生専用のＤＶＤビデオ規格においては、メニュー画面上に配置されたボタン画像などを用いて、インタラクティブな機能を実現している。例えば、ＤＶＤビデオにより動画を再生中に、リモートコントロールコマンダなどを用いてメニュー画面を呼び出し、メニュー画面上に配置されたボタン画像を選択して再生場面を変更するなどの処理が可能であった。
【０００４】
このようなＤＶＤビデオ規格では、インタラクティブな機能を実現するための制御プログラムは、ＤＶＤビデオ規格で定義された特有のコマンドで記述される。また、制御プログラムは、複数のファイルやデータファイル中の複数の箇所、さらには、ＡＶストリームファイル中にも分散されて埋め込まれる。これらが実行される条件や順序も、ＤＶＤビデオ規格で決められている。
【０００５】
そのため、従来では、汎用的なコンテンツ制作システムを作ることが難しく、予め決められた脚本に当てはめてストーリーを作る、所謂テンプレートを用いたコンテンツ制作が行われていた。テンプレートでは対応できない、複雑な構成のコンテンツを作る場合は、先ずコンテンツ制作システムそのものをカスタムメイドとして作成していた。
【０００６】
ところで、ＤＶＤビデオなどの再生において、通常、映画本編の再生中などでは、チャプタ間のジャンプなどのような、ユーザによる再生制御操作（以下、ユーザオペレーションと呼ぶ）は、自由に行えるようになっている。一方で、ストーリーが特定の条件で分岐するマルチストーリーや、ユーザが回答を選択することでシナリオが進んでいくクイズゲームなどのように、再生制御が複雑なコンテンツでは、ユーザオペレーションを制限したい場面が発生する。
【０００７】
例えば、マルチストーリーであれば、過去の再生履歴によって次のストーリーが決まるような構成になっている場合がある。このような場合に、チャプタジャンプなどのユーザ操作によって、設定されたストーリーから外れるような再生ができないように、ユーザオペレーションを制限する必要がある。
【０００８】
他の例として、クイズゲームの場合は、答えを選択できる時間が制限されている場合がある。この場合、その制限時間の間、ユーザが再生の一時停止をできないように、ユーザオペレーションを制限する必要がある。クイズゲームの場合、さらに、答えを選択することなく、正解が示されたシーンにジャンプできてしまうことを防ぐ必要がある。
【０００９】
このように、ユーザとコンテンツとの間で双方向のやりとりが発生するような場合、コンテンツ制作者の意図通りの再生を実現するために、ユーザオペレーションを制限する必要がある。
【００１０】
また、本編の再生前に、所定の警告画面などをユーザに必ず提示しなければならないことがある。この場合も、警告画面をスキップしたり、早送りできないように、ユーザオペレーションを制限する必要がある。
【００１１】
従来のＤＶＤビデオ規格においては、図４３に一例が示されるように、再生、チャプタジャンプなどといった、ユーザオペレーションのそれぞれについて、その操作を許可するか否かを示すフラグを設け、そのフラグを用いて、ユーザオペレーションを許可するか否かを設定していた。特許文献１には、ＤＶＤビデオ規格におけるＰＧＣ(Program Chain)の単位で情報再生装置の特定動作を許可または禁止する禁止フラグを、ＰＧＣＩ(Program Chain Infomation)内およびＰＣＩ(Presentation Control Information)内にそれぞれ構築した技術が記載されている。
【特許文献１】特開２００３−２０３４３３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところが、上述したような、ユーザにより可能なユーザオペレーションのそれぞれに対してフラグを設ける方法は、コンテンツ制作者側にとって非常に使いづらいという問題点があった。
【００１３】
例えば、あるユーザオペレーションを許可したくない場合には、当該操作に関連する他のユーザオペレーションも、同時に不許可にすることが多いと予想される。一例として、「順方向早送り」というユーザオペレーションを不許可にしたい場合、「逆方向早送り」というユーザオペレーションも共に不許可にしたいことが考えられる。このような場合、従来のＤＶＤビデオ規格では、「順方向早送り」を表すフラグと、「逆方向早送り」を表すフラグとがそれぞれ独立しているため、このユーザオペレーションに対してそれぞれフラグの設定を行わなくてはいけなかった。
【００１４】
このような従来の設定方法では、ユーザオペレーションに対する許可および不許可について、多数の組み合わせが発生してしまうことになり、ユーザオペレーションに対する制限に、抜けや矛盾が発生し易かったという問題点があった。
【００１５】
例えば、ユーザに必ず提示したい警告画面などを表示する場面で、「順方向早送り」および「逆方向早送り」を指示するユーザオペレーションを禁止するようにする一方で、「チャプタジャンプ」を指示するユーザオペレーションを許可したままにしていた場合、ユーザは、「チャプタジャンプ」を指示する操作を行うことで、警告画面をスキップさせることができてしまう。
【００１６】
一方で、コンテンツ制作者が意図する、不許可とするユーザオペレーションの組み合わせは、よく用いられている幾つかの組み合わせに限定されていることが多いと考えられる。そのため、ユーザオペレーション毎に許可および不許可を設定する方法は、過剰な自由度を有し、その結果、設定し忘れなどによる抜けや矛盾が発生し易いものと考えられる。
【００１７】
さらに、ＤＶＤビデオ規格では、ユーザオペレーションを制限するフラグが、ＡＶストリームに近い下位の階層からアプリケーションに近い上位の階層まで、複数の階層に存在している。したがって、フラグを設定する際には、それら階層間の組み合わせも考慮する必要があり、難解なものになっていたという問題点があった。
【００１８】
さらにまた、フラグの設定によりコンテンツ制作者が意図したとおりの動作が実現されているか否かは、コンテンツ制作者側で検証する必要がある。これは、コンテンツ制作者側の負担になってしまうという問題点があった。
【００１９】
また、ユーザオペレーション毎に許可および不許可が設定できるため、プレーヤ製造者側では、プレーヤが正しく動作するか否かを、その全て組み合わせに対して検証する必要があり、プレーヤ検証の負担が大きいという問題点があった。
【００２０】
したがって、この発明の目的は、大容量の記録媒体に記録されたプログラムを再生する際のユーザオペレーションを容易に制限することができる再生装置、再生方法および再生プログラム、ならびに、記録媒体を提供することにある。
【課題を解決するための手段】
【００２１】
この発明は、上述した課題を解決するために、円盤状記録媒体に記録されたコンテンツデータを再生する再生装置において、少なくともコンテンツデータと、コンテンツデータに対する再生経路を指定し、属性情報としてコンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出す読み出し手段と、再生制御プログラムに従いコンテンツデータを再生するプレーヤ手段と、コンテンツデータの再生制御指示を与えるためのユーザオペレーションに応じてプレーヤ手段に対する制御コマンドを生成する制御コマンド生成手段とを有し、プレーヤ手段は、記録媒体から再生指示情報毎に制限モードを示す値を読み出し、読み出された制限モードを示す値に基づき再生指示情報毎にテーブルを生成し、制御コマンド生成手段で生成された制御コマンドの実行を許可するか否かを、テーブルに基づき再生指示情報毎に制御するようにしたことを特徴とする再生装置である。
【００２２】
また、この発明は、円盤状記録媒体に記録されたコンテンツデータを再生する再生方法において、少なくともコンテンツデータと、コンテンツデータに対する再生経路を指定し、属性情報としてコンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出す読み出しのステップと、再生制御プログラムに従いコンテンツデータを再生するコンテンツ再生のステップと、コンテンツデータの再生制御指示を与えるためのユーザオペレーションに応じてプレーヤ手段に対する制御コマンドを生成する制御コマンド生成のステップとを有し、コンテンツ再生のステップは、記録媒体から再生指示情報毎に制限モードを示す値を読み出し、読み出された制限モードを示す値に基づき再生指示情報毎にテーブルを生成し、制御コマンド生成のステップで生成された制御コマンドの実行を許可するか否かを、テーブルに基づき再生指示情報毎に制御するようにしたことを特徴とする再生方法である。
【００２３】
また、この発明は、円盤状記録媒体に記録されたコンテンツデータを再生する再生方法をコンピュータ装置に実行させる再生プログラムにおいて、再生方法は、少なくともコンテンツデータと、コンテンツデータに対する再生経路を指定し、属性情報としてコンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出す読み出しのステップと、再生制御プログラムに従いコンテンツデータを再生するコンテンツ再生のステップと、コンテンツデータの再生制御指示を与えるためのユーザオペレーションに応じてプレーヤ手段に対する制御コマンドを生成する制御コマンド生成のステップとを有し、コンテンツ再生のステップは、記録媒体から再生指示情報毎に制限モードを示す値を読み出し、読み出された制限モードを示す値に基づき再生指示情報毎にテーブルを生成し、制御コマンド生成のステップで生成された制御コマンドの実行を許可するか否かを、テーブルに基づき再生指示情報毎に制御するようにしたことを特徴とする再生プログラムである。
【００２４】
また、この発明は、少なくともコンテンツデータと、コンテンツデータに対する再生経路を指定し、属性情報としてコンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、コンテンツデータの再生を制御する再生制御プログラムとが記録されることを特徴とする記録媒体である。
【００２５】
上述したように、この発明は、少なくともコンテンツデータと、コンテンツデータに対する再生経路を指定し、属性情報としてコンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、コンテンツデータの再生を制御する再生制御プログラムとが記録された記録媒体からデータを読み出し、再生装置は、コンテンツデータの再生を再生制御プログラムに従い行い、再生指示情報毎に読み出された制限モードを示す値に基づき再生指示情報毎にテーブルを生成し、コンテンツデータの再生制御指示を与えるためのユーザオペレーションに応じて生成された制御コマンドの実行を許可するか否かを、テーブルに基づき再生指示情報毎に制御するようにしているため、コンテンツ制作の際に、ユーザオペレーション対する制限を、制限モードに基づき再生指示情報単位で容易に設定することができると共に、再生装置側でも、ユーザオペレーションに対する制限を制限モードに基づき容易に検証することができる。
【００２６】
また、この発明は、属性情報としてコンテンツデータの再生制御指示に対する制限モードを示す値を含む再生指示情報と、コンテンツデータの再生を制御する再生制御プログラムとが記録媒体に記録されているため、コンテンツ制作の際に、記録媒体を再生する再生装置に対するユーザオペレーションによりなされる、コンテンツデータに対する再生制御指示を、制限モードに基づき容易に設定することができると共に、再生装置側でも、ユーザオペレーションに対する制限を制限モードに基づき容易に検証することができる。
【発明の効果】
【００２７】
この発明は、ユーザオペレーションの制限の組み合わせをモードとして定義し、頻繁に使用されるユーザオペレーションのセットを予めプレーヤ側で用意し、コンテンツ制作者側では、提供されたユーザオペレーションの組み合わせのモードを選択することで、ユーザオペレーションに対する制御を実現するようにしている。
【００２８】
そのため、コンテンツ制作者側は、予めプレーヤ側で用意されたモードを選択するだけで、ユーザオペレーションに対して制限を加えることができるため、より容易にユーザオペレーションの制御が可能となると共に、コンテンツ制作者側による制作および検証の際の負担が軽減されるという効果がある。
【発明を実施するための最良の形態】
【００２９】
以下、この発明の実施の一形態について、下記の順序に従い説明する。
１．ＵＭＤビデオ規格について
２．ＵＭＤビデオ規格のプレーヤモデルについて
３．ムービープレーヤのイベントモデルについて
４．ムービープレーヤオブジェクトについて
５．スクリプトプログラムの例
６．ファイルの管理構造について
７．ディスク再生装置について
８．ユーザオペレーションの制御について
【００３０】
１．ＵＭＤビデオ規格について
先ず、理解を容易とするために、この実施の一形態に適用可能なシステムについて概略的に説明する。この発明の実施の一形態では、ＥＣＭＡスクリプトと呼ばれるスクリプト言語を用いてプレーヤモデルを記述している。ＥＣＭＡスクリプトは、ＥＣＭＡ(European Computer Manufacturers Association)により定められた、ＪａｖａＳｃｒｉｐｔ（登録商標）に基づいたクロスプラットフォーム用のスクリプト言語である。ＥＣＭＡスクリプトは、ＨＴＭＬ文書との親和性が高いことと、独自のオブジェクトの定義が可能であるため、この発明によるプレーヤモデルに用いて好適である。
【００３１】
また、以下では、このＥＣＭＡスクリプトを元にしたスクリプト言語を用いた、この発明の実施の一形態に基づく規格を、ＵＭＤ(Universal Media Disc：登録商標)ビデオ規格と呼ぶ。また、ＵＭＤビデオ規格のうち、特にスクリプトに関する部分をＵＭＤビデオスクリプト規格と呼ぶ。
【００３２】
ＵＭＤビデオ規格について、概略的に説明する。図１は、ＵＭＤビデオ規格のレイヤ構成を示す。ＵＭＤビデオ規格では、スクリプトレイヤ、プレイリストレイヤおよびクリップレイヤの３層のレイヤ構造が定義され、この構造に基づきストリーム管理がなされる。
【００３３】
ＵＭＤビデオ規格においては、ディジタル符号化されたビデオ、オーディオおよび字幕を、ＭＰＥＧ２(Moving Pictures Experts Group 2)のエレメンタリストリームとして多重化したＭＰＥＧ２ストリームとして扱う。このビデオ、オーディオおよび字幕のエレメンタリストリームが多重化されたＭＰＥＧ２ストリームを、クリップＡＶストリーム(Clip AV Stream)と呼ぶ。クリップＡＶストリームは、クリップＡＶストリームファイルに格納される。クリップＡＶストリームファイルの記録時に、当該クリップＡＶストリームファイルに１対１に対応して、クリップインフォメーションファイル(Clip Information File)が同時に作成される。これらクリップインフォメーションファイルと、対応するクリップＡＶストリームファイルとからなる組を、クリップ(Clip)と呼ぶ。
【００３４】
クリップは、ディスクへの記録の単位ともいうべきものであり、再生時にどのような順序でクリップを再生するかは、クリップの上位のレイヤであるプレイリストレイヤで管理する。プレイリストレイヤは、クリップの再生経路を指定するレイヤであり、１または複数のプレイリスト(PlayList)を含む。プレイリストは、プレイアイテムの(PlayItem)の集合からなる。プレイアイテムには、クリップの再生範囲を示した一組のイン(In)点およびアウト(Out)点が含まれており、プレイアイテムを連ねることによって、任意の順序でクリップを再生することができるようになる。プレイアイテムは、クリップを重複して指定することができる。クリップＡＶストリームファイルのイン点およびアウト点は、タイムスタンプ（クリップ内時刻）で指定され、タイムスタンプは、クリップインフォメーションファイルの情報によってクリップＡＶストリームファイル上のバイト位置に変換される。
【００３５】
プレイリストは、クリップの全部または一部を指すプレイアイテムを順序に従って再生していく構造だけを有しており、プレイリストのみを用いて再生順の分岐や、ユーザとの双方向性を実現することは、できない。この発明の実施の一形態では、複数のプレイリストが１つのファイル"PLAYLIST.DAT"にまとめられている。
【００３６】
スクリプトレイヤは、言語仕様のＥＣＭＡスクリプトを拡張した、ＵＭＤビデオスクリプトによって構築されるレイヤである。ＵＭＤビデオスクリプトは、ＥＣＭＡスクリプトを基本として、ＵＭＤビデオに特有な機能を実現するための拡張を加えたスクリプトである。
【００３７】
スクリプトレイヤは、プレイリストレイヤの上位のレイヤであり、プレイリストの再生指示や、プレーヤ設定を行うコマンド列から構成される。スクリプトレイヤのコマンドにより、複数の言語用に用意されたストリームのうち何れを選択する、ある条件に従って選択されるプレイリストに再生の流れが変化する、というような、条件分岐を伴うプレイリスト再生を実現することができる。このような条件分岐を伴うプレイリスト再生が用いられるアプリケーションの例としては、マルチストーリーが挙げられる。このスクリプトレイヤにより、ユーザとの双方向性機能（インタラクティブ機能）が導入されることになる。
【００３８】
なお、この発明の実施の一形態では、スクリプトレイヤは、１つのファイル"SCRIPT.DAT"から構成され、リソースとして管理される。ファイル"SCRIPT.DAT"は、実際のＥＣＭＡスクリプトに基づき記述されるスクリプトデータ、ボタン操作の際の効果音などを出力するためのサウンドデータ、メニュー画面の背景画像などに用いる画像データからなるスクリーンデザイン、ならびに、ボタン画像などのＧＵＩ部品を表示させるための画像データ（ビットマップデータ）が含まれる。
【００３９】
２．ＵＭＤビデオ規格のプレーヤモデルについて
次に、ＵＭＤビデオ規格に従ったデータを再生する再生装置（プレーヤ）のモデル、すなわち、プレーヤモデルについて説明する。プレーヤは、先ず、ディスクからスクリプトプログラム、プレイリストおよびクリップインフォメーションファイルを読み出し、次に、これらにより定められている再生順序に従って、クリップＡＶストリームファイルを読み出し、ビデオ、オーディオおよび字幕などを再生する。
【００４０】
スクリプトプログラムの言語仕様においては、プレイリストを再生する機能ブロックを、スクリプトプログラム内のオブジェクトとして実装する。このプレイリスト再生を行うオブジェクトを、ＵＭＤビデオ規格では、ムービープレーヤ(Movie Player)オブジェクトと呼ぶ。プレイリストの再生指示や、プレーヤ設定を行うコマンドは、このムービープレーヤオブジェクトが有するメソッドとなる。ムービープレーヤオブジェクトは、スクリプトレイヤからのメソッドによって制御される。このとき、ムービープレーヤオブジェクトからスクリプトレイヤに対して、状態の変化や再生位置などを通知する機能が必要となる。これは、ムービープレーヤオブジェクトがスクリプトプログラムに対してイベントを発することに対応し、そのイベントに対応した処理は、イベントハンドラとして記述される。
【００４１】
このように、ムービープレーヤオブジェクトからスクリプトプログラムへの情報伝達は、イベントにより行い、スクリプトプログラムからムービープレーヤオブジェクトに対する制御をメソッドにより行うモデルを構築することにより、クリップＡＶストリームの再生をスクリプトプログラムで制御できるようになる。
【００４２】
図２は、上述した、この発明の実施の一形態による一例のプレーヤモデルを模式的に示す。ムービープレーヤ３００は、ＵＭＤビデオ規格においてビデオ、オーディオおよび字幕の再生を司るモジュールである。上述したムービープレーヤオブジェクトは、ムービーオブジェクトをスクリプトプログラムから操作するためにスクリプトプログラム内のオブジェクトとしたものである。換言すれば、ムービープレーヤオブジェクトは、ムービープレーヤの機能を実現するためのスクリプトプログラムそのものである。
【００４３】
なお、ムービープレーヤ３００とムービープレーヤオブジェクトは、実質的に同一の対象を表すと考えられるので、以下、これらを同一の符号を付して説明する。
【００４４】
図２において、ムービプレーヤ３００は、ユーザ入力３１０などにより引き起こされる下位レイヤ（図２の例ではネイティブ実装プラットフォーム３０１）や、上位レイヤであるスクリプトレイヤ３０２からのメソッドに従って、プレイリストおよびクリップインフォメーションのデータベースに基づき、クリップＡＶストリームファイルの読み出し、読み出されたクリップＡＶストリームのデコードおよび表示を行う。
【００４５】
ムービープレーヤオブジェクト３００の内部は、ＵＭＤビデオを再生するＵＭＤビデオプレーヤの実装に依存するものであって、スクリプトレイヤ３０２からは、ブラックボックス化されたオブジェクトとして、メソッドやプロパティといったＡＰＩ(Application Programming Interface)が提供される。ここで、ＵＭＤビデオプレーヤは、ムービープレーヤを実装した実際の機器を指す。全てのＵＭＤビデオプレーヤは、ＵＭＤビデオ規格の制約を守ってムービープレーヤを実装しており、再生互換を有する。
【００４６】
図２に示されるように、ムービープレーヤオブジェクト３００は、ネイティブ実装プラットフォーム３０１からの制御コマンド３１１を受け付けるパス、スクリプトレイヤ３０２に対してイベント３１２を通知するパス、スクリプトレイヤ３０２からのメソッド３１３を受け付けるパスの、３本の入出力パスを有する。
【００４７】
制御コマンド３１１は、ネイティブ実装のプラットフォーム３０１からの、ムービープレーヤオブジェクト３００の動作を制御するコマンドである。ネイティブ実装プラットフォーム３０１は、例えば、実際の機器としてのＵＭＤビデオプレーヤにおける、機器に固有の部分とムービープレーヤ３００とのインターフェイスである。イベント３１２は、ムービープレーヤ３００からスクリプトレイヤ３０２に対するスクリプトイベントである。メソッド３１３は、スクリプトレイヤ３０２のスクリプトプログラムからムービープレーヤ３００に指示されるメソッドである。
【００４８】
ムービープレーヤオブジェクト３００は、内部に、ＵＭＤビデオ規格のプレイリストおよびクリップインフォメーションのデータベース３２０を有する。ムービープレーヤオブジェクト３００は、このデータベース３２０を用いて、ユーザ入力３１０に対する無効化(mask)や、時刻で指定された再生位置をクリップＡＶストリーム内のバイト位置に変換する処理などを行う。
【００４９】
ムービープレーヤオブジェクト３００内のプレイバックモジュール３２１は、ビデオ、オーディオおよび字幕が多重されたＭＰＥＧ２  ＰＳ(Program Stream)であるクリップＡＶストリームのデコードを行う。プレイバックモジュール３２１は、プレイ、ストップおよびポーズの３状態を持ち、制御命令やメソッドによって、この３状態の間を遷移する（図３参照）。
【００５０】
スクリプトレイヤ３０２は、ＵＭＤビデオスクリプト規格に基づくスクリプトプログラムを実行し、ムービープレーヤオブジェクト３００の制御や、画面表示を行うレイヤである。このスクリプトレイヤ３０２は、コンテンツ制作者側の意図したシナリオを実現する役割を果たす。スクリプトレイヤ３０２は、ムービープレーヤオブジェクト３００に対してメソッド３１３を発行し、ムービープレーヤオブジェクト３００からは、イベント３１２を受け取る。スクリプトレイヤ３０２は、ネイティブ実装プラットフォーム３０１との間で、ユーザ入力３１０に応じたキーイベント３１４や、画面描画などをネイティブ実装プラットフォーム３０１に対して指示するメソッド３１５などのやりとりを行う。
【００５１】
例えば、メニュー画面上に配置されるボタンは、スクリプトレイヤ３０２のスクリプトプログラムからネイティブ実装プラットフォーム３０１に渡されるメソッド３１５に基づき、ネイティブ実装プラットフォーム３０１により描画される。ユーザがそのボタンに対して選択や決定などの操作を行ったときには、ユーザ入力３１０に応じたキーイベント３１４がネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に通知され、スクリプトレイヤ３０２内のスクリプトプログラムは、キーイベント３１４に基づきキー入力３１０に応じた処理を行う。
【００５２】
このように、ビデオ、オーディオおよび字幕のデコードや表示制御はムービープレーヤ３００が司り、ボタンなどのＧＵＩ(Graphical User Interface)を構成するための部品画像（以下、ＧＵＩ部品と呼ぶ）の配置や表示、ならびに、ＧＵＩ部品に対して選択や決定などの操作がなされたときの処理は、スクリプトレイヤ３０２が行うというように、役割分担がなされている。
【００５３】
ネイティブ実装プラットフォーム３０１は、ムービープレーヤオブジェクト３００やスクリプトプログラムが動作するための基盤となるプラットフォームであって、例えば、実際のＵＭＤビデオプレーヤがハードウェアである場合、ハードウェアとプレーヤモデルとの間の処理を仲介する役割を果たすように、ハードウェアに固有に実装される。
【００５４】
例えば、ネイティブ実装プラットフォーム３０１は、ユーザからのユーザ入力３１０を受け付け、受け付けたユーザ入力３１０がムービープレーヤ３００に対する命令なのか、スクリプトレイヤ３０２で描画および表示しているボタンに対する命令なのかを判定する。ネイティブ実装プラットフォーム３０１は、ユーザ入力３１０がムービープレーヤ３００に対する命令であると判定されれば、ユーザ入力３１０をムービープレーヤ３００に対する内部制御命令である制御コマンド３１１に変換し、ムービープレーヤ３００に対して制御命令を発する。
【００５５】
一方、ネイティブ実装プラットフォーム３０１は、ユーザ入力３１０がスクリプトレイヤ３０２で描画および表示しているＧＵＩ部品に対する命令であると判定されれば、ユーザ入力３１０に応じたキーイベント３１４をスクリプトレイヤ３０２に通知する。そして、このキーイベント３１４に応じてスクリプトレイヤ３０２から指示されたメソッド３１５に基づき、例えば画面上にボタン画像を表示させることができる。すなわち、ネイティブ実装プラットフォーム３０１とスクリプトレイヤ３０２とは、ムービープレーヤ３００を介さずに、直接的にイベントおよびメソッドの受け渡しを行うことができる。
【００５６】
次に、ムービープレーヤ３００についてより詳細に説明する。図３は、ムービープレーヤ３００の一例の内部構成を示す。上述したように、ムービープレーヤ３００は、データベース３２０およびプレイバックモジュール３２１とから構成される。データベース３２０は、ディスクから読み取ったプレイリストの情報と、クリップの情報すなわちクリップインフォメーションとを格納する領域である。
【００５７】
プレイバックモジュール３２１は、デコーダエンジン３２２と、プレイバックモジュール３２１の状態を表す値であるプロパティ３２３とからなる。プロパティ３２３は、例えば言語コードのように、ムービープレーヤ３００の初期設定で値が決まるプロパティ３２３Ａ（リードオンリーパラメータ）と、プレイバックモジュール３２１の状態によって値が変化するプロパティ３２３Ｂ（プレーヤステータス）の２種類がある。
【００５８】
初期設定で値が決まるプロパティ３２３Ａは、ネイティブなシステム、例えば実際の機器によって値がセットされ、プレイリストやクリップインフォメーション、スクリプトプログラムから値を変更されることがない。プロパティ３２３Ａは、スクリプトプログラムから値を読み出すことのみが可能とされる。一方、プレイバックモジュール３２１の状態を表すプロパティ３２３Ｂは、スクリプトプログラムから値を読み出すことができると共に、一部のスクリプトプログラムから値を書き込むことが可能とされる。
【００５９】
なお、この動作モデルにおいては、プレイリストおよびクリップインフォメーションは、クリップＡＶストリームの再生前にディスクからプリロードされていることを想定している。これに限らず、他の実装であっても、ムービープレーヤモデルで定めた動作を実現できていればよい。
【００６０】
ムービープレーヤオブジェクト３００は、スクリプトレイヤ３０２またはネイティブ実装プラットフォーム３０１からの指示に従い、指定されたプレイリストを再生する。例えば、ムービープレーヤ３００は、データベース３２０を参照し、指定されたプレイリストに対応するクリップＡＶストリームの再生位置をファイル中のバイト位置で得る。プレイバックモジュール３２１において、デコーダエンジン３２２は、この再生位置情報に基づき、クリップＡＶストリームのデコードを制御する。
【００６１】
ムービープレーヤ３００は、図４に示されるように、プレイリストの再生状況に応じてプレイ(play)、ストップ(stop)およびポーズ(pause)の３状態を持つ。プレイ状態は、プレイリストの再生を行っており、時間が経過している状態を指す。通常再生の他、２倍速、１／２倍速といった変速再生や、順方向早送りおよび逆方向早送りもプレイ状態に含まれる。ポーズ状態は、プレイリストの再生を行っている状態で、時間軸が停止している状態である。再生をフレーム単位で進めたり戻したりする所謂コマ送り再生は、ポーズ状態とプレイ状態とを繰り返している状態である。ストップ状態は、プレイリストを再生していない状態である。
【００６２】
例えば、ムービープレーヤ３００の状態は、ムービープレーヤ３００内のデコーダエンジン３２２におけるプレイ、ポーズおよびストップの状態遷移に伴うもので、デコーダエンジン３２２の状態遷移に応じてプロパティ３２３Ｂの値が更新される。
【００６３】
リジュームインフォメーション３２４は、ストップ状態直前の状態を記憶する。例えば、ムービープレーヤ３００があるプレイリストをデコードしプレイ状態となっているときに、状態がストップ状態に遷移すると、ストップ状態の直前の状態を記憶する。また、リジュームインフォメーション３２４は、ハードウェアとしてのプレーヤが持つ不揮発性メモリに、ディスクのタイトル毎に識別可能なように複数を記憶させることができる。例えば、ディスクは、ディスクのタイトル毎にユニークな識別情報（タイトルＩＤと呼ぶ）を有し、リジュームインフォメーション３２４をこの識別情報と関連付けて記憶する。こうすることで、リジュームインフォメーション３２４の情報に基づき、識別情報が対応するタイトルのディスクが次にストップ状態からプレイ状態に遷移したときに、当該ディスクの再生を、以前ストップ状態になった直前の位置から開始させることができる。
【００６４】
３．ムービープレーヤのイベントモデルについて
ムービープレーヤ３００のイベントモデルについて説明する。ムービープレーヤ３００は、プレイリストを再生するプレイ状態で、様々なイベントを発生する。このイベントは、イベントハンドラと呼ばれる、スクリプトで記述された処理プログラムの実行を引き起こす。イベントハンドラは、イベント発生によって呼び出されるメソッドである。このイベント発生によって処理プログラムの実行を開始するプログラム実行モデルを、イベントドリブンモデルと呼ぶ。イベントドリブンモデルでは、不定期なイベントが発生し、イベント発生をきっかけに用意しておいたプログラムが実行される。この実施の一形態においては、スクリプトプログラムは、イベントハンドラ群によってムービープレーヤオブジェクト３００の動作を制御する。
【００６５】
図５は、この発明の実施の一形態によるムービープレーヤ３００のイベントモデルを模式的に示す。図５において、イベントハンドラonEventA()、onEventB()およびonEventC()は、インターフェイスであって、それぞれのイベントハンドラの内容は、スクリプトで記述されている。イベントハンドラの内容は、例えばコンテンツ制作者側で作成され実装される。ＵＭＤビデオスクリプト規格においては、ムービープレーヤオブジェクト３００からスクリプトプログラムに通知されるイベント毎に、イベントハンドラが用意される。図５の例では、イベントＡが発生したときに実行される処理プログラムは、イベントハンドラonEventA()に決められている。イベントＢおよびイベントＣについても同様に、イベントＢの発生時には対応するイベントハンドラonEventB()が実行され、イベントＣの発生時には対応するイベントハンドラonEventC()が実行される。
【００６６】
イベント発生に応じて呼び出されるイベントハンドラは、システム側で選択されるため、コンテンツ制作者側では、どのイベントが発生したかを判断する処理を、スクリプトプログラム内に記述しておく必要が無い。
【００６７】
図６は、プレイリストの再生中に発生する一例のイベントを示す。プレイリストPlayListの先頭には、チャプタマークChapterMarkが設定されているので、プレイリストの先頭からの再生開始時には、先ず、チャプタマークに対応したイベントChapterが発生する。さらに、チャプタが変わる度にイベントChapterがスクリプトレイヤ３０２に通知され、対応するイベントハンドラonChapterが実行される。また、イベントマークEventMarkが設定されている時刻に再生が到達すると、対応するマークイベントが発生する。そして、プレイリストの最後まで再生が到達すると、プレイリストの最後で再生が一時停止し、イベントPlayListEndがムービープレーヤ３００からスクリプトレイヤ３０２に通知される。スクリプトレイヤ３０２側では、対応するイベントハンドラonPlayListEnd()内で、別のプレイリストの再生開始が指示される。このようにして、コンテンツ制作者が意図した順序で、一連のプレイリスト再生が継続されていく。
【００６８】
このように、プレーヤの動作中にはさまざまなイベントが発生するものとし、イベント発生を上位プログラムに伝えることで、上位プログラムはプレーヤの状態を把握できるようになる。上位プログラムの方では、各イベント発生通知時に実行されるプログラム（イベントハンドラ）を用意しておくことで、各種イベント発生に対処する。イベントおよびイベントハンドラの詳細については、後述する。
【００６９】
イベントハンドラがコンテンツ制作者によって記述されていない場合には、規格で規定されているプレーヤ組み込みの動作（デフォルトのイベントハンドラ）を実行するか、あるいは、そのイベントが無視され何も実行されない。何も処理を行う必要がないときには、イベントに対応したイベントハンドラを記述しないようにすることで、積極的にイベントを無視することができる。
【００７０】
イベントモデルとしては、上述の他に、あるイベントに対応するリスナをオブジェクトがプレーヤオブジェクトに登録し、プレーヤオブジェクト内で発生したイベントが登録されたイベントであれば、プレーヤオブジェクトから当該イベントを登録したオブジェクトにイベントを送信し、当該オブジェクトで対応するメソッドを実行するようにしたイベントリスナのモデルや、どのようなイベントが発生しても一つのメソッドを呼び出すようにした単一メソッドのモデルなどが考えられる。
【００７１】
この実施の一形態によるイベントモデルは、イベント登録、イベント登録削除といった処理が必要なイベントリスナのモデルよりも簡単である。また、単一メソッドのモデルは、どのイベントが発生したかを知り、イベント毎に用意してある処理ルーチンを切り替えるという前処理を、そのメソッドの中に記述しておく必要がある。メソッドは、コンテンツ制作者側が実装するものであるから、モデルとしては簡単でも、コンテンツ制作者側の負担が大きくなる。さらに、大きな一つの処理プログラム（メソッド）がイベントの発生毎に呼ばれることになり、メモリの領域を多く占有し、実行速度も遅くなると考えられる。この発明の実施の一形態による、イベント毎に処理プログラム（イベントハンドラ）を用意するモデルでは、このような点について有利であるといえる。
【００７２】
４．ムービープレーヤオブジェクトについて
次に、ムービープレーヤオブジェクト３００の外部的な仕様について説明する。一般に、ＥＣＭＡスクリプト言語仕様に従う言語により定義されたオブジェクトは、プロパティとメソッドとを持つ。この実施の一形態によるムービープレーヤオブジェクト３００も、図２および図３を用いて既に説明したように、同様にしてプロパティとメソッドとを有する。プロパティは、外部のオブジェクトから、対象となるオブジェクト名とプロパティ名とを指定することで、直接的に読み書きすることが可能である。これに限らず、プロパティ値の設定を行うメソッドsetXXX()（「XXX」は、対象のプロパティ名）や、プロパティ値の読み出しを行うメソッドgetXXX()を定義することで、他のオブジェクトのプロパティの読み書きを、メソッドで行うことが可能となる。
【００７３】
図７は、ムービープレーヤオブジェクト３００が有する一例のプロパティを一覧して示す。これは、図３におけるプロパティ３２３に対応する。図３におけるリードオンリーパラメータ３２３Ａに属するプロパティは、以下の通りである。プロパティscriptVersionは、ＵＭＤビデオスクリプトのバージョンを示す。プロパティlanguageCodeは、ＵＭＤビデオプレーヤに設定された、メニュー表示言語の言語コードを示す。プロパティaudioLanguageCodeは、ＵＭＤビデオプレーヤに設定された、オーディオ言語の言語コードを示す。プロパティsubtitleLanguageCodeは、ＵＭＤビデオプレーヤに設定された、字幕（サブタイトル）言語の言語コードを示す。
【００７４】
ディスクが装填された際には、このリードオンリーパラメータ３２３Ａに設定されたプロパティlanguageCodeに示される言語コードに基づき、ディスクから読み出すスクリプトファイルが決められる。装填されたディスクに、当該言語に対応するスクリプトファイルがない場合は、デフォルトのスクリプトファイルが読み出される。例えば、複数のスクリプトファイルのうち、ディスク上で最も先頭側に配置されるファイルがデフォルトのスクリプトファイルとして読み出される。
【００７５】
図３におけるプレーヤステータス３２３Ｂに属するプロパティは、以下の通りである。プロパティplayListNumberは、現在再生中のプレイリストの番号を示す。プロパティchapterNumberは、現在再生中のチャプタの番号を示す。プロパティvideoNumberは、現在再生中のビデオストリームの番号を示す。プロパティaudioNumberは、現在再生中のオーディオストリームの番号を示す。プロパティsubtitleNumberは、現在再生中の字幕ストリームの番号を示す。プロパティplayListTimeは、プレイリスト先頭を０としたときの時刻を示す。プロパティaudioFlagは、オーディオ再生のＯＮ／ＯＦＦおよびデュアルモノＬＲの指定を示す。プロパティsubtitleFlagは、字幕表示のＯＮ／ＯＦＦを示す。
【００７６】
なお、デュアルモノは、ステレオオーディオの左右（Ｌ、Ｒ）チャンネルを、互いに独立したモノラルオーディオチャンネルとして用いるモードである。
【００７７】
このプレーヤステータス３２３Ｂに属する各プロパティは、ムービープレーヤ３００が再生または一時停止状態のときに、これらの情報が存在する。停止状態に遷移した場合、その時点でプレーヤステータス３２３Ｂに属する各プロパティは、リジュームインフォメーション３２４としてバックアップされる。このとき、プレーヤステータス３２３Ｂの内容をクリアしてもよい。
【００７８】
図８は、ムービープレーヤオブジェクト３００が有する一例のメソッドを一覧して示す。これは、図２におけるメソッド３１３に対応する。メソッドplay()は、ビデオを再生する。メソッドplayChapter()は、チャプタを指定してビデオを再生する。メソッドstop()は、ビデオの再生を停止する。メソッドpause()は、ビデオの再生を一時停止する。メソッドplayStep()は、ビデオをコマ送り再生する。メソッドchangeStream()は、ビデオストリーム、オーディオストリームおよび／または字幕ストリームを変更する。メソッドgetPlayerStatus()は、ムービープレーヤ３００における再生、停止、一時停止などの状態を取得する。メソッドreset()は、ビデオの再生を停止し、リジュームインフォメーション３２４の内容をクリアする。
【００７９】
ＵＭＤビデオ規格では、表示画面上の一部分にビデオを表示することができるようになっている。以下の４つのメソッドは、この場合のビデオ表示に関するメソッドである。メソッドsetPos()は、ビデオの表示位置を設定する。メソッドgetPos()は、ビデオの表示位置を取得する。メソッドsetSize()は、ビデオの表示サイズを設定する。メソッドgetSize()は、ビデオの表示サイズを取得する。
【００８０】
なお、実際には、ムービープレーヤ３００とネイティブ実装プラットフォーム３０１とは、一体的に構成される。すなわち、実際にディスクが装填され、これを再生するハードウェアとしてのＵＭＤプレーヤと、ＵＭＤプレーヤを制御するソフトウェアとの関係に対応付けられ、どの部分をハードウェアで行い、どの部分をソフトウェアで行うかは、実装時の構成に依存する。例えば、ＵＭＤプレーヤをパーソナルコンピュータなどで構成する場合は、ディスクドライブ以外は、ソフトウェア的に構成することができる。また、単体のＵＭＤプレーヤとして構成する場合は、ディスクドライブ以外に、例えばビデオデコーダやオーディオデコーダなどをハードウェア的に構成することができる。したがって、ムービープレーヤ３００とネイティブ実装プラットフォーム３０１との間でなされるメソッドやコマンド、イベントは、図２に一例が示されるような明示的なやりとりに限られない。
【００８１】
一方、ユーザからのキー入力については、図２を用いて既に説明したように、ユーザ入力３１０をネイティブ実装プラットフォーム３０１が先ず、受け取る。つまり、ネイティブ実装プラットフォーム３０１は、ユーザからのキー入力をユーザ入力３１０として受け取り、ユーザ入力３１０がムービープレーヤ３００に対するコマンドなのか、スクリプトレイヤ３０２のスクリプトプログラムに対するイベントなのかを判定し、判定結果に応じて、制御コマンド３１１またはキーイベント３１４を発生し、対応する上位レイヤ（ムービープレーヤ３００またはスクリプトレイヤ３０２）に通知する。
【００８２】
図９および図１０は、ユーザ入力３１０による一例のキー入力を示す。なお、図９および図１０に示される「VK」で始まる各キーは、実装に依存しない抽象化した仮想的なキーである。図９は、ムービープレーヤ３００の操作に関する一例のキー入力を示す。キーVK_POWERは、電源キーに対応する機能を提供する。キーVK_POWER_ONは、電源ＯＮキーに対応する機能を提供する。キーVK_POWER_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_SUBTITLEは、英語字幕、日本語字幕、字幕表示／非表示などを切り替える字幕切り替えキーに対応する機能を提供する。キーVK_AUDIOは、サラウンドやバイリンガルなどオーディオ設定を切り替えるオーディオ切り替えに対応する機能を提供する。キーVK_VIDEO_ASPECTは、ビデオのアスペクト比切り替えを指示するアスペクト切り替えキーに対応する機能を提供する。キーVK_COLORED_KEY_1は、色つきファンクションキー１、キーVK_COLORED_KEY_2は、色つきファンクションキー２、キーVK_COLORED_KEY_3は、色つきファンクションキー３、キーVK_COLORED_KEY_4は、色つきファンクションキー４、キーVK_COLORED_KEY_5は、色つきファンクションキー５、キーVK_COLORED_KEY_6は、色つきファンクションキー６にそれぞれ対応する機能を提供する。
【００８７】
上述の図９に示したキー入力と図１０に示したキー入力とでは役割が異なるため、通知先をネイティブ実装プラットフォーム３０１で振り分ける必要がある。上述したように、図９に示されるキー入力により、ビデオ、オーディオおよび字幕の再生に関する指示がなされる。ネイティブ実装プラットフォーム３０１は、ユーザ入力３１０として図９に示されるキー入力を受け取ると、受け取ったキー入力を、図１１に示すコマンドに変換してムービープレーヤ３００に通知する。
【００８８】
一方、図１０に示されるキー入力は、ＧＵＩに対するユーザ入力３１０であるので、このユーザ入力は、画面構成やボタンを配置するスクリプトレイヤ３０２に通知されて処理される必要がある。ネイティブ実装プラットフォーム３０１は、ユーザ入力３１０として図１０に示されるキー入力を受け取ると、図２におけるイベント３１４に変換してスクリプトレイヤ３０２に通知する。図１２は、このキー入力に対応する一例のイベント３１４を示す。
【００８９】
なお、上述した図９および図１０には、キーVK_ANGLE、キーVK_SUBTITLE、キーVK_AUDIOという、ストリーム切り替えに関するキー入力も含まれているが、これらは、スクリプトプログラムからムービープレーヤ３００に対するストリーム切り替えのメソッドと同様の機能を実現するためのキー入力である。
【００９０】
上述した図１１のコマンドについて、より詳細に説明する。コマンドuo_timeSearch(playListTime)は、再生中のプレイリストの指定時刻からの再生を指示する。引数playListTimeは、プレイリストの先頭を０としたときの時刻を表す。このコマンドでは、プレイリスト番号の指定はできないため、引数playListTimeで表される時刻は、現在再生中のプレイリストの範囲内での指定時刻となる。コマンドuo_play()は、１倍速での再生開始を指示する。開始位置は、リジュームインフォメーション３２４に基づき決められる。リジュームインフォメーション３２４に対応する情報が無い場合は、このユーザ操作は無効とされる。このコマンドは、プレイリスト番号の指定の無いメソッドplay()を実行したときに対応する。また、このコマンドにおいて、ユーザ操作ではプレイリスト番号を指定できない。
【００９１】
コマンドuo_playChapter(chapterNumber)は、再生中のプレイリストの、引数chapterNumberで指定されたチャプタからの再生開始を指示する。チャプタの指定がない場合には、現在再生中のチャプタの先頭からの再生開始を指示する。これは、チャプタ番号の指定の無いメソッドplayChapter()に対応する。コマンドuo_playPrevChapter()は、現在よりも一つ前のチャプタからの再生開始を指示する。コマンドuo_playNextChapter()は、現在の次のチャプタからの再生開始を指示する。コマンドuo_stop()は、再生の停止を指示する。
【００９２】
コマンドuo_jumpToEnd()は、プレイリストの最後へのジャンプを指示する。このコマンドは、ムービープレーヤ３００に対して、現在の再生を中止してイベントplayListEndを発生させるように指示するユーザ操作に対応する。このコマンドに対応して、スクリプトレイヤ３０２では、イベントハンドラonPlayListEndが実行される。コマンドuo_forwardScan(speed)は、引数speedで指定された再生速度での順方向再生を指示する。コマンドuo_backwardScan(speed)は、引数speedで指定された再生速度での逆方向再生を指示する。これらコマンドuo_forwardScan(speed)およびコマンドuo_backwardScan(speed)における引数speedは、ＵＭＤビデオプレーヤの実装に依存する。
【００９３】
コマンドuo_playStep(forward)は、順方向のコマ送り再生を指示する。コマンドuo_playStep(backward)は、逆方向のコマ送り再生を指示する。コマンドuo_pauseOn()は、ユーザ操作に基づき再生の一時停止を指示する。コマンドuo_pauseOff()は、ユーザ操作に基づき再生の一時停止状態を解除する。
【００９４】
コマンドuo_changeAudioChannel(value)は、オーディオのチャンネル切り換えまたはデュアルモノ再生時の片チャンネル切り替えを指示する。このコマンドの実行時に、フラグaudioFlagの値も対応した内容に変更する。コマンドuo_setAudioEnabled(boolean)は、オーディオストリームのＯＮ／ＯＦＦを指定する。このコマンドの実行時に、フラグaudioFlagの値も対応した内容に変更する。コマンドuo_setSubtitleEnabled(boolean)は、字幕ストリームのＯＮ／ＯＦＦを指定する。このコマンドの実行時に、フラグsubtitleFlagの値も対応した内容に変更する。コマンドuo_angleChange()は、表示アングルの変更を指示する。このコマンドによるユーザ操作がムービープレーヤ３００に伝えられると、ムービープレーヤ３００は、スクリプトレイヤ３０２に対してイベントangleChangeを通知する。コマンドuo_audioChange(audioStreamNumber)は、再生するオーディオストリームの変更を指示する。コマンドuo_subtitleChange(subtitleStreamNumber)は、再生する字幕ストリームの変更を指示する。
【００９５】
上述した図１２に示すイベントおよびイベントのムービープレーヤ３００のメソッドとの関係について、より詳細に説明する。イベントmenuは、メニューにジャンプする。このイベントは、ムービープレーヤ３００に対してではなく、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に通知される。このイベントmenuがスクリプトレイヤ３０２に受け取られると、スクリプトレイヤ３０２は、イベントハンドラonMenuを実行する。イベントexitは、ネイティブ実装プラットフォーム３０１がＵＭＤビデオアプリケーションを終了させる際に、ネイティブ実装プラットフォーム３０１から発せられるイベントである。このイベントexitがスクリプトレイヤ３０２に受け取られると、スクリプトレイヤ３０２は、イベントハンドラonExitを実行する。
【００９６】
イベントup、イベントdown、イベントleft、イベントright、イベントfocusIn、イベントfocusOut、イベントpushおよびイベントcancelは、画面に表示されているＧＵＩ部品であるボタン画像にフォーカスが当たっている場合に発生するイベントである。このイベントは、ムービープレーヤ３００に対してではなく、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に通知される。なお、ボタン画像にフォーカスが当たった場合とは、例えば、画面上の位置を指示するためのカーソルがボタン画像の表示座標を示し、当該ボタン画像が選択可能となっているような状態である。イベントup、イベントdown、イベントleftおよびイベントrightは、ボタン画像に対するフォーカスが、それぞれ上、下、左および右のボタン画像に移動した場合に発生する。イベントfocusInは、あるボタン画像にフォーカスが当たった場合に発生し、イベントfocusOutは、フォーカスの当たっていたボタン画像からフォーカスが外れた場合に発生する。また、イベントpushは、フォーカスの当たっているボタン画像に対して押下操作が行われた際に発生する。イベントcancelは、ボタン画像の押下操作に対してキャンセル操作が行われた際に発生する。
【００９７】
イベントautoPlayおよびイベントcontinuePlayは、スクリプトレイヤ３０２におけるスクリプトの実行開始を指示するイベントである。イベントautoPlayは、ディスクの装填時に自動的にスクリプトの実行を開始するように指示するイベントである。イベントcontinuePlayは、ディスク装填時に、例えばリジュームインフォメーション３２４に基づき、以前中止された時点からのスクリプトの実行再開を指示する。
【００９８】
図１２で示したイベントに対しては、イベントが発生したときに実行されるプログラムが存在する。このイベントに対応したプログラムをイベントハンドラと称する。イベントとイベントハンドラとは、例えば名前で対応関係をつけることができる。一例として、イベント名の先頭に「on」を付加したものがイベントハンドラ名となる。図１３および図１４は、一例のイベントハンドラを示す。イベントハンドラの内容をコンテンツ制作者が記述することにより、ＵＭＤビデオプレーヤにコンテンツ制作者が意図する様々な動作を実行させることが可能になる。
【００９９】
図１３は、ムービープレーヤオブジェクト３００が持つ一例のイベントの一部と、対応するイベントハンドラとを示す。この図１３のイベントは、上述した図２のイベント３１２に対応し、ムービープレーヤ３００からスクリプトレイヤ３０２に通知される。イベントハンドラは、一種のインターフェイスであって、その内容は、例えばコンテンツ制作者がスクリプト言語を用いて実装する。イベントハンドラをこのように構成することで、イベント発生時に、コンテンツ制作者の意図する動作を実現することができる。
【０１００】
イベントmarkおよびイベントハンドラonMark()は、イベントマークが検出された際に実行される。イベントマークは、例えば、プレイリスト中に埋め込まれ、プレイリストの再生中にムービープレーヤ３００により検出される。ムービープレーヤ３００によりイベントマークが検出されると、ムービープレーヤ３００からスクリプトレイヤ３０２に対してイベントmarkが通知される。スクリプトレイヤ３０２は、このイベントmarkに対応するイベントハンドラonMark()を実行する。同様にして、イベントpalyListEndおよびイベントハンドラonPlayListEnd()は、プレイリストが終了した際に実行される。イベントchapterおよびイベントハンドラonChapter()は、チャプタマーク検出時に実行される。チャプタマークは、例えば、プレイリスト中に埋め込まれ、プレイリストの再生中にムービープレーヤ３００により検出される。
【０１０１】
イベントangleChangeおよびイベントハンドラonAngleChange()は、ユーザ操作によりアングル変更が指示されたときに実行される。例えば、ユーザ操作に応じてキー入力VK_ANGLEがユーザ入力３１０としてネイティブ実装プラットフォーム３０１に入力されると、ネイティブ実装プラットフォーム３０１は、当該ユーザ入力３１０をコマンドuo_angleChange()に変換してムービープレーヤ３００に渡す。ムービープレーヤ３００は、このコマンドuo_angleChange()に応じてイベントangleChangeを発生させ、スクリプトレイヤ３０２に渡す。スクリプトレイヤ３０２は、このイベントangleChangeに対応したイベントハンドラonAngleChange()を実行する。同様にして、イベントaudioChangeおよびイベントハンドラonAudioChange()は、ユーザ操作によりオーディオの変更が指示されたときに実行される。イベントsubtitleChangeおよびイベントハンドラonSubtitleChange()は、ユーザ操作により字幕変更が指示されたときに実行される。
【０１０２】
図１４は、システムオブジェクトが有する一例のイベントハンドラの一部を示す。この図１４に示されるイベントハンドラは、ネイティブ実装プラットフォーム３０１が予め持っているイベントハンドラであり、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に通知される。
【０１０３】
イベントmenuおよびイベントハンドラonMenu()は、メニューにジャンプする。イベントmenuは、例えば、ユーザ操作などでメニューキーが押下されたときに、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に通知されるイベントである。スクリプトレイヤ３０２は、このイベントを受けて、対応するイベントハンドラonMenu()を実行し、イベントハンドラonMenu()内でメニュー画面を構成するＧＵＩ部品の配置や表示などを行う。イベントexitおよびイベントハンドラonExit()は、ネイティブ実装プラットフォーム３０１がＵＭＤビデオアプリケーションを終了させる際に、ネイティブ実装プラットフォーム３０１から発せられるイベントおよび対応するイベントハンドラである。
【０１０４】
イベントexitは、例えば、ユーザ操作などによりＵＭＤビデオプレーヤの動作の終了が指示された際に、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に通知される。スクリプトレイヤ３０２のスクリプトは、通知されたイベントexitを受けて、イベントハンドラonExit()内で終了処理を行うことができる。イベントautoPlayおよびイベントハンドラonAutoPlay()、ならびに、イベントcontinuePlayおよびイベントハンドラonContinuePlay()は、それぞれスクリプトの実行を開始する。
【０１０５】
なお、システムオブジェクトのイベントハンドラ以外に、ボタンに関するイベントハンドラがある。このボタンに関するイベントハンドラは、この発明と関連性が低いので、説明を省略する。
【０１０６】
図１５のフローチャートを用いて、ユーザ入力イベントをきっかけとして、用意されたプログラムが実行される一例の処理について、概略的に説明する。図１５は、ＵＭＤビデオプレーヤにおいてディスクを通常再生中に、ユーザにより、次のチャプタを再生することを指示するための"next"キーが押されたときに、このキー入力に対応して、次のチャプタにジャンプして再生を開始すると共に、用意されたメッセージを画面上に表示する例である。
【０１０７】
例えば、ＵＭＤビデオプレーヤによりディスクを通常再生中に、ユーザがＵＭＤビデオプレーヤのリモートコントロールコマンダを用いてキー"next"を押下すると（ステップＳ１０）、ネイティブ実装プラットフォーム３０１に対するユーザ入力３１０として、キーVK_NEXTが渡される。ネイティブ実装プラットフォーム３０１では、このユーザ入力３１０に対応してユーザコマンドuo_playNextChapter()が発生する（ステップＳ１１）。このユーザコマンドuo_playNextChapter()は、ムービープレーヤ３００に通知される。
【０１０８】
このコマンドuo_playNextChapter()を受け取ったムービープレーヤ３００は、データベース３２０を検索し、プレイリスト情報から現在再生している位置を基準として、次のチャプタマークの位置を取得する（ステップＳ１２）。ステップＳ１３で、次のチャプタマークが存在するか否かが判断され、若し、存在しないと判断された場合、チャプタジャンプを行わず、現在の再生が継続される。
【０１０９】
一方、ステップＳ１３で、次のチャプタマークが存在すると判断されれば、処理はステップＳ１４に移行する。ステップＳ１４では、ムービープレーヤ３００は、現在の再生を中止し、次のチャプタマークが指し示す、クリップＡＶストリームファイル内でのバイト位置を、データベース３２０のクリップインフォメーションファイルの特徴点情報から取得する。そして、ステップＳ１５で、取得されたファイル内バイト位置にアクセスし、その位置からストリームの読み込みを開始して再生を開始する。
【０１１０】
ステップＳ１６以下は、チャプタが切り替わったことを知らせるメッセージを画面上に表示するための一連の手順である。チャプタが切り替わりチャプタの先頭からの再生が開始されると、チャプタイベントが発生する（ステップＳ１６）。例えば、チャプタの先頭に設けられたチャプタマークがムービープレーヤ３００に検出され、イベントchapterが発生される。このチャプタイベントは、ムービープレーヤ３００からスクリプトレイヤ３０２に通知される。ムービープレーヤ３００は、このイベントの通知時に、ジャンプするチャプタのチャプタ番号も共に、スクリプトレイヤ３０２に対して通知する。スクリプトレイヤ３０２は、通知されたイベントに対応するイベントハンドラ、例えばイベントハンドラonChapter()の実行を開始する（ステップＳ１７）。
【０１１１】
この例では、イベントハンドラ内には、チャプタが切り替わった際に画面上にその旨を知らせるメッセージを表示する動作が記述されているものとする。スクリプトレイヤ３０２のスクリプトは、このイベントハンドラを実行し、イベント発生時にムービープレーヤ３００から通知されたジャンプ先のチャプタ番号を取得し（ステップＳ１８）、ネイティブ実装プラットフォーム３０１に対して、例えば取得したチャプタ番号のチャプタの先頭であるなど、所定のメッセージを画面上に表示する指示を出す。ネイティブ実装プラットフォーム３０１は、この指示に応じて、画面上にメッセージを表示し（ステップＳ１９）、イベントハンドラによる処理が終了される（ステップＳ２０）。
【０１１２】
上述のような処理により、ユーザが次のチャプタの再生開始を指示するキー"next"を操作することによりチャプタジャンプが行われ、ジャンプ先である次のチャプタの再生開始時にチャプタの先頭であることを示すメッセージが画面上に表示されることになる。
【０１１３】
このように、ユーザ入力イベントは、ムービープレーヤ３００の状態を変化させ、また、新たなイベントを発生させる契機ともなり、新たに発生したイベントを利用して様々な処理を行わせることができる。
【０１１４】
図１６は、ＵＭＤビデオプレーヤにディスクがロードされてからイジェクトされるまでの処理を概略的に示す。なお、図１６中、斜線を付したブロックで記述された処理は、スクリプトが実行されている状態を示す。
【０１１５】
先ず、ユーザによりＵＭＤビデオプレーヤにディスクが装填されると、ＵＭＤビデオプレーヤは、所定の動作によりディスクをロードし、再生可能な状態にする（ステップＳ３０）。ディスクがロードされると、ネイティブ実装プラットフォーム３０１によりリジュームインフォメーション３２４が参照され、当該ディスクに対応する続き再生情報がロードされる（ステップＳ３１）。
【０１１６】
次に、当該ディスクに対応するリジュームインフォメーション３２４内が参照され、続き再生情報が存在するか否かが判断され（ステップＳ３２）、存在すれば、ネイティブ実装プラットフォーム３０１からスクリプトレイヤに対してイベントcontinuePlayが通知される。スクリプトレイヤ３０２は、通知されたイベントcontinuePlayに対応するイベントハンドラonContinuePlayを実行する（ステップＳ３３）。ステップＳ３２で、当該ディスクに対応する続き再生情報が存在しないと判断されれば、処理はステップＳ３４に移行し、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に対してイベントautoPlayが通知され、スクリプトレイヤ３０２は、対応するイベントハンドラonAutoPlayを実行させる。
【０１１７】
ステップＳ３５では、イベントハンドラonAutoPlayやイベントハンドラonContinuePlayの記述内容に基づきディスクの再生動作などが行われ、ディスクの再生動作に伴い発生されたイベントや、当該イベントに対応するイベントハンドラが実行される。
【０１１８】
ここで、ネイティブ実装プラットフォーム３０１からイベントexitが発生されると、ステップＳ３６で、スクリプトレイヤ３０２において対応するイベントハンドラonExitが実行され、ＵＭＤビデオアプリケーションを終了させるための処理が実行される。イベントexitは、例えばリモートコントロールコマンダに対する所定の操作に応じたユーザ入力３１０に基づき、ネイティブ実装プラットフォーム３０１で発生される。
【０１１９】
イベントハンドラonExitに基づくスクリプト処理が終了すると、ネイティブ実装プラットフォーム３０１に処理が移る。そして、ステップＳ３７で、ムービープレーヤ３００において、再生動作を停止する処理が実行される。このとき、停止された直前の状態が続き再生情報としてリジュームインフォメーション３２４に記憶される。そして、ディスクの再生が終了され（ステップＳ３８）、同じディスクを再び再生しない際には（ステップＳ３９）、ステップＳ４０で、ネイティブ実装プラットフォーム３０１によりディスクがイジェクトされ、一連の処理が終了される。また、同じディスクを再び再生する際には、処理はステップＳ３１に戻される。
【０１２０】
図１７は、スクリプトファイルの構成例を示す。図１を用いて既に説明したように、スクリプトファイルは、スクリプトレイヤ３０２を構成するファイル"SCRIPT.DAT"内のファイルとして存在する。スクリプトファイルは、イベントハンドラ群とメイン処理部とからなる。イベントハンドラ群は、１または複数のイベントハンドラが並べられる。イベントの発生がスクリプトレイヤ３０２に通知される毎に、通知されたイベントに対応したイベントハンドラが検索され、実行される。メイン処理部は、例えば各イベントハンドラに共通して用いられるグローバル変数などの定義が記述され、通常、最初に１回だけ実行される。
【０１２１】
図１８は、イベントハンドラonAutoPlay()を実行する一例の手順を示す。ＵＭＤビデオプレーヤにディスクを装填する際に、ユーザにより、始めから再生を行うように、ムービープレーヤ３００に対して再生指示がなされた場合（ステップＳ５０）に、この処理が行われる。ネイティブ実装プラットフォーム３０１は、ステップＳ５１で、スクリプト中にイベントハンドラonAutoPlay()が存在するか否かが調べられる。若し、存在すれば、ネイティブ実装プラットフォーム３０１は、イベントautoPlayをスクリプトレイヤ３０２に対して通知する（ステップＳ５２）。これを受けて、ステップＳ５４で、スクリプトレイヤ３０２は、イベントハンドラonAutoPlay()を実行する。これにより、装填されたディスクが自動的に再生開始される。
【０１２２】
一方、ステップＳ５１で、スクリプト中にイベントハンドラonAutoPlay()が存在しないとされれば、処理はステップＳ５３に移行し、ネイティブ実装プラットフォーム３０１は、イベントexitをスクリプトレイヤ３０２に対して通知する。この場合、例えば、メニューキーなどを操作して、ネイティブ実装プラットフォーム３０１に実装されているメニュー画面から再生指示を与えることで、ディスクの再生を開始することができる。スクリプトレイヤ３０２がイベントハンドラonExit()を持っている場合、このイベントハンドラonExit()が実行される。
【０１２３】
図１９は、イベントハンドラonContinuePlay()を実行する一例の手順を示す。ＵＭＤビデオプレーヤにディスクを装填する際に、ユーザにより、続き再生を行うように、ムービープレーヤ３００に対して再生指示がなされた場合（ステップＳ６０）に、この処理が行われる。ネイティブ実装プラットフォーム３０１は、ステップＳ６１で、装填されたディスクに対応するリジュームインフォメーション３２４が存在するか否かが調べられる。若し、存在しなければ、処理はステップＳ６２に移行し、先頭からの再生となる。
【０１２４】
装填されたディスクに対応するリジュームインフォメーション３２４が存在する場合には、処理はステップＳ６３に移行し、スクリプト中にイベントハンドラonContinuePlay()が存在するか否かが調べられる。若し、存在すれば、ネイティブ実装プラットフォーム３０１は、イベントcontinuePlayをスクリプトレイヤ３０２に対して通知する。これを受けて、スクリプトレイヤ３０２は、イベントハンドラonContinuePlay()を実行する（ステップＳ６４）。これにより、装填されたディスクが、イベントハンドラonContinuePlay()に従い再生が再開される。
【０１２５】
一方、ステップＳ６３で、スクリプト中にイベントハンドラonContinuePlay()が存在しないとされれば、処理はステップＳ６５に移行し、デフォルトのイベントハンドラonContinuePlay()が実行される。デフォルトのイベントハンドラonContinuePlay()は、例えば、リジュームインフォメーション３２４の情報に基づき前回の再生終了位置から、単純に再生を開始する。
【０１２６】
なお、これらの、イベントハンドラonAutoPlayおよびイベントハンドラonContinuePlayによるユーザインターフェイスは、上述の例に限られず、様々な方法が考えられる。例えば、上述の図１９においては、ステップＳ６０でユーザにより続き再生が指示されてから、装填されたディスクに対応するリジュームインフォメーション３２４が存在するか否かを調べているが、これは、順序を逆にし、リジュームインフォメーション３２４が存在するか否かを先に調べ、存在する場合に、続き再生を行うか否かの選択をユーザに促してもよい。
【０１２７】
図２０は、再生終了時の一例の処理を示す。ディスクの再生中に、例えばユーザにより、ムービープレーヤ３００に対して再生を終了する指示がなされた場合（ステップＳ７０）に、この処理が行われる。再生終了を指示するユーザ入力３１０がネイティブ実装プラットフォーム３０１に対して入力されると、ネイティブ実装プラットフォーム３０１は、終了処理を開始する（ステップＳ７１）。終了処理は、例えば下記の３つの処理である。
（１）新たなイベント発生の抑止
（２）キューに溜まったイベントハンドラの破棄
（３）ムービープレーヤ３００に対する制御コマンドuo_stop()の発行
【０１２８】
ステップＳ７１の処理が実行され、現在実行されているイベントハンドラが終了すると（ステップＳ７２）、次のステップＳ７３で、ネイティブ実装プラットフォーム３０１からスクリプトレイヤ３０２に対して、イベントexitが通知される。スクリプトレイヤ３０２は、これを受けて、スクリプトレイヤ３０２は、イベントハンドラonExit()を実行する（ステップＳ７４）。イベントハンドラonExit()により、例えば、再生終了時の所定の後処理や、ユーザによる設定データを記憶するメソッドsetUserDataなどが実行される。
【０１２９】
そして、次のステップＳ７５で、ネイティブ実装プラットフォーム３０１により、終了処理がなされる。この終了処理では、例えば、不揮発性メモリに対する続き情報の保存（すなわち、再生終了直前の状態のリジュームインフォメーション３２４に対するバックアップ）や、システムメニューへの遷移などが行われる。
【０１３０】
以上のようなプレーヤモデルにより、ビデオ、オーディオおよび字幕の再生が可能となる。また、コンテンツ制作者が予め設定しておいた、再生中のある時刻にあるイベントを発生させて、コンテンツ制作者が予め用意しておいたイベントハンドラを実行するようにしているため、コンテンツ制作者が意図する動作を実現できる。さらに、ＵＭＤビデオプレーヤによるディスクの再生中にユーザ操作があった場合は、ネイティブ実装プラットフォーム３０１からムービープレーヤ３００に対して、ユーザ操作に応じたコマンドが通知され、ユーザの意図する通りにプレーヤの状態を変化させることができる。さらにまた、ユーザ操作によるユーザ入力を受けたネイティブ実装プラットフォームが、スクリプトレイヤ３０２に対してユーザ入力に対応するイベントを通知することにより、ユーザ操作に応じてコンテンツ制作者が用意した動作を実現することが可能となる。このようにプレーヤモデルを構築することで、ビデオ、オーディオおよび字幕の再生と、インタラクティブな操作とをユーザに提供することが可能となる。
【０１３１】
５．スクリプトプログラムの例
次に、スクリプトレイヤ３０２のスクリプトプログラムの例について説明する。先ず、図２１に示されるようなコンテンツ再生の流れが、コンテンツ制作者により作られているものとする。図２１に示されるコンテンツは、表示される要素としては、プレイリスト４００および４０１、トップメニュー４０２、ならびに、メッセージ４０３から構成される。プレイリスト４００は、ディスクが装填されると自動的に表示される警告文画面を表示するためのものである。プレイリスト４０１は、例えばこのコンテンツの主眼である映画の本編である。トップメニュー画面４０２は、プレイリスト４０１の再生を指示できるように、ボタンなどのＧＵＩ部品が配置される。また、メッセージ４０３は、プレイリスト４０１の再生中の任意の時刻に表示される。
【０１３２】
さらに、この図２１の構成では、幾つかのイベントハンドラが用意されている。イベントハンドラonAutoPlay()は、ディスクがＵＭＤプレーヤに装填されると、プレイリスト４００を自動的に再生し、警告文を表示させる。イベントハンドラonPlayListEnd()は、プレイリストの再生が終了すると呼び出されるイベントハンドラで、この図２１の例では、プレイリスト４００やプレイリスト４０１の終了で呼び出される。すなわち、イベントハンドラonPlayListEnd()は、どのプレイリストが終了したかを判定し、プレイリスト４００の再生が終了した場合には、プレイリスト４０１の再生開始を指示する。また、プレイリスト４０１の再生が終了した場合には、トップメニュー画面４０２を呼び出す。
【０１３３】
イベントハンドラonMenu()は、ユーザがメニューキーを操作したときに呼び出され、トップメニュー４０２を呼び出して画面に表示する。イベントハンドラonMark()は、再生中にマークMarkが指し示す時刻に到達したときに実行される。この図２１の例では、プレイリスト４０１に対してマークMarkが設定されており、プレイリスト４０１の再生がマークMarkの指し示す時刻に到達すると、画面上にメッセージ４０３が表示されるようになっている。
【０１３４】
すなわち、図２１の例では、ＵＭＤビデオプレーヤにディスクが装填されると、イベントハンドラonAutoPlayが呼び出されてプレイリスト４００が再生され、警告画面が表示される。プレイリスト４００の再生時間が経過し、プレイリスト４００の最後に到達すると、イベントハンドラonPlayListEndが呼び出され、プレイリスト４００が最後まで再生されたことが判定され、次のプレイリスト４０１が再生される。ここで、プレイリスト４０１の再生中に、ユーザによりメニューキーが操作されると、イベントハンドラonMenuが呼び出され、トップメニュー画面４０２が表示される。また、イベントハンドラonMenuにより、トップメニュー画面４０２に対する所定の操作に応じて、プレイリスト４０１の先頭から再生が開始される。さらに、プレイリスト４０１の再生時刻がマークMarkが指し示す時刻に到達したら、イベントハンドラonMarkが呼び出され、メッセージ４０３が画面上に表示される。プレイリスト４０１が最後まで再生されると、イベントハンドラonPlayListEndが呼び出され、プレイリスト４０１が最後まで再生されたことが判定され、トップメニュー画面４０２が表示される。
【０１３５】
図２２は、この図２１に示すような動作を実現するための一例のスクリプトプログラムを示す。上述したように、スクリプトプログラムは、イベントハンドラが並べられ、イベントの発生に応じて対応するイベントハンドラが実行されるようになっている。スクリプトプログラムは、後述するファイル"SCRIPT.DAT"に格納される。
【０１３６】
ムービープレーヤ３００に対してプレイリストの再生を指示するメソッドは、「movieplayer.play()」である。括弧内には、引数として、再生するプレイリストの番号を記述する。プレイリストの再生が終了すると、イベントplayListEndが発生する。このイベントplayListEndが発生すると、スクリプトからイベントハンドラmovieplayer.onPlayListEnd()が呼び出される。このとき、スクリプトには、イベントplayListEndと共に、オブジェクトevent_infoが渡される。オブジェクトevent_infoには、どのプレイリストが終了したかを表すプレイリスト番号などが格納される。スクリプトでは、このオブジェクトevent_infoの内容により、次の動作を変えることができる。
【０１３７】
６．ファイルの管理構造について
次に、ＵＭＤビデオ規格に適用されるファイルの管理構造について、図２３を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理されて、ディスク上に記録される。ディスクのファイルシステムは、ＩＳＯ(International Organization for Standarization)−９６６０あるいはＵＤＦ(Universal Disk Format)などで規定されたファイルシステムを適用することができる。
【０１３８】
ルートディレクトリの下に、ファイル"TITLEID.DAT"およびディレクトリ"VIDEO"が置かれる。ディレクトリ"VIDEO"の下には、さらに、ディレクトリ"RESOURCE"、ディレクトリ"CLIP"およびディレクトリ"STREAM"、ならびに、ファイル"PLAYLIST.DAT"が置かれる。
【０１３９】
ファイル"TITLEID.DAT"は、タイトル（コンテンツの種類）毎に異なるタイトル識別子が格納されるファイルである。１つのディスクに対し、１つのファイル"TITLEID.DAT"を有する。
【０１４０】
ディレクトリ"RESOURCE"の下には、ファイル"SCRIPT.DAT"が置かれる。このファイル"SCRIPT.DAT"は、上述したように、スクリプトレイヤ３０２を構成するスクリプトプログラムが格納される。ディレクトリ"RESOURCE"の下には、通常、１個のファイル"SCRIPT.DAT"が置かれる。これに限らず、ディレクトリ"RESOURCE"の下に、複数のファイル"SCRIPT.DAT"を置くこともできる。このときは、例えばファイル名の一部をそれぞれ変更し、互いに重複しないようにする。複数のファイル"SCRIPT.DAT"は、例えば、表示言語の異なる複数のメニューなどを用意する際に、言語毎に１つファイル"SCRIPT.DAT"が用いられる。この場合でも、実際に使用されるファイル"SCRIPT.DAT"は、１つとされる。
【０１４１】
ディレクトリ"CLIP"の下には、１以上のクリップインフォメーションファイルが置かれる。クリップインフォメーションファイルは、ファイル名を、デリミタであるピリオドの前が「00001」などの５文字乃至数文字からなる文字列（この例では数字）、ピリオドの後ろの拡張子が「CLP」とされる。拡張子「CLP」により、当該ファイルがクリップインフォメーションファイルであることを識別できる。
【０１４２】
ディレクトリ"STREAM"の下には、１以上のクリップＡＶストリームファイルが置かれる。クリップＡＶストリームファイルは、ファイル名を、デリミタであるピリオドの前が「00001」などの５文字乃至数文字からなる文字列（この例では数字）、ピリオドの後ろの拡張子が「PS」とされる。拡張子「PS」により、当該ファイルがクリップＡＶストリームファイルであることを識別できる。この実施の一形態では、クリップＡＶストリームファイルは、ビデオストリーム、オーディオストリームおよびサブタイトル（字幕）ストリームが多重化され、ＭＰＥＧ２(Moving Pictures Experts Group 2)のプログラムストリームとして、上述の拡張子「PS」で識別されるファイルに格納される。
【０１４３】
上述したように、クリップＡＶストリームファイルは、ビデオデータおよびオーディオデータを圧縮符号化および時分割多重して得られるファイルであって、このファイルを読み込み、デコード処理を行うことで、ビデオデータおよびオーディオデータが得られる。また、クリップインフォメーションファイルは、このクリップＡＶストリームファイルの性質などが記述されるファイルであって、クリップＡＶストリームファイルと対応する。この実施の一形態では、クリップインフォメーションファイルと対応するクリップＡＶストリームファイルとで、ファイル名における、拡張子の前の、５文字乃至数文字からなる文字列を一致させておくことで、両者の対応関係を容易に把握できる。
【０１４４】
ファイル"SCRIPT.DAT"は、上述したように、スクリプトプログラムが記述されたスクリプトファイルであり、この実施の一形態が適用されるディスクの再生形態をインタラクティブなものとするために用いるプログラムが格納されている。ファイル"SCRIPT.DAT"は、ディスクに格納される他のファイルに先立って読み出される。
【０１４５】
ファイル"PLAYLIST.DAT"は、クリップＡＶストリームの再生順を指定するプレイリストが記述されたプレイリストファイルである。図２４〜図２６を用いて、ファイル"PLAYLIST.DAT"の内部構造について説明する。図２４は、ファイル"PLAYLIST.DAT"の全体構造を表す一例のシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるＣ言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
【０１４６】
フィールドname_lengthは、８ビットのデータ長を有し、このプレイリストファイルに付された名称の長さを示す。フィールドname_stringは、２５５バイトのデータ長を有し、このプレイリストファイルに付された名称を示す。フィールドname_stringは、その先頭から、フィールドname_lengthが表すバイト長までが、有効な名称として使用される。例えば、フィールドname_lengthが値"１０"を持つ場合には、フィールドname_stringの先頭から１０バイト分が有効な名称として解釈される。
【０１４７】
フィールドnumber_of_PlayListsは、１６ビットのデータ長を有し、続けて記述されるブロックPlayList()の個数を示す。次行のforループによりフィールドnumber_of_PlayListsに示される回数分だけ、当該個数のブロックPlayList()が記述される。ブロックPlayList()は、プレイリストそのものである。
【０１４８】
ブロックPlayList()の一例の内部構造について説明する。ブロックPlayList()の先頭には、フィールドPlayList_data_lengthが配される。フィールドPlayList_data_lengthは、３２ビットのデータ長を有し、当該フィールドPlayList_data_lengthを含むブロックPlayList()のデータ長を示す。続いて、１５ビットのデータ長を有するフィールドreserved_for_word_alignmentと、１ビットのデータ長を有するフラグcapture_enable_flag_PlayListとが配される。フィールドreserved_for_word_alignmentは、データ長が１ビットのフラグcapture_enable_flag_PlayListと組み合わせて、ブロックPlayList()内での配置を１６ビットの位置に揃えるために用いられる。
【０１４９】
フラグcapture_enable_flag_PlayListは、当該capture_enable_flag_PlayListを含むブロックPlayList()に属する動画像の二次利用を許可するか否かを示すフラグである。例えば、このフラグcapture_enable_flag_PlayListの値が"１"であれば、当該PlayList()に属する動画像の、再生機内での２次利用を許可することを示す。
【０１５０】
なお、上述では、フラグcapture_enable_flag_PlayListを１ビットのフラグとしたが、これはこの例に限定されない。例えば、フラグcapture_enable_flag_PlayListを複数ビット構成として、２次利用の段階的な許可を記述するようにしてもよい。一例として、フラグcapture_enable_flag_PlayListを２ビット構成とし、値が"０"の場合には２次利用を完全禁止とし、値が"１"の場合には例えば６４画素×６４ラインなど、所定の解像度以下に圧縮符号化した場合のみ２次利用を可能とする。また、値が"２"であれば、制限無く２次利用を許可するといった利用が考えられる。これに限らず、２ビット構成のうちビット０が値"１"の場合にはコンテンツ再生アプリケーションでの２次使用を許可し、ビット１が値"１"の場合には同一筐体内の他のアプリケーション（例えば壁紙画像やスクリーンセーバ）での２次使用を許可する。この場合には、ビット０およびビット１の値を組み合わせて用いることができる。
【０１５１】
フィールドPlayList_name_lengthは、８ビットのデータ長を有し、このブロックPlayList()に付された名称の長さを示す。フィールドPlayList_name_stringは、２５５ビットのデータ長を有し、このブロックPlayList()に付された名称を示す。フィールドPlayList_name_stringは、その先頭から、フィールドPlayList_name_stringが表すバイト長までが、有効な名称として使用される。
【０１５２】
フィールドnumber_of_PlayItemsは、１６ビットのデータ長を有し、続けて記述されるブロックPlayItem()の個数を示す。次行のforループによりフィールドnumber_of_PlayItem2に示される回数分だけ、当該個数のブロックPlayItem()が記述される。ブロックPlayItem()は、プレイアイテムそのものである。
【０１５３】
ブロックPlayList()内の各ブロックPlayItem()には、識別情報（ＩＤ）が付与される。例えば、ブロックPlayList()内の最初に記述されるブロックPlayItem()は、０番とされ、以降、ブロックPlayItem()の出現順に、１番、２番、・・・と通し番号が付される。この通し番号が各ブロックPlayItem()の識別情報として用いられる。ブロックPlauItem()の個数だけ繰り返されるforループの引数iを、対応するブロックPlayItem()の識別情報として用いることができる。ブロックPlayItem()の次に、ブロックPlayListMark()が配置される。
【０１５４】
図２５を用いて、ブロックPlayItem()の一例の内部構造について説明する。ブロックPlayItem()の先頭には、フィールドlengthが配される。フィールドlengthは、１６ビットのデータ長を有し、当該ブロックPlayItem()の長さを示す。続いて、フィールドClip_Information_file_name_lengthが配される。フィールドClip_Information_file_name_lengthは、１６ビットのデータ長を有し、このブロックPlayItem()に対応するクリップインフォメーションファイルの名称の長さを示す。フィールドClip_Information_file_nameは、バイト単位で可変長のデータ長を有し、このブロックPlayItem()に対応するクリップインフォメーションファイルの名称を示す。フィールドClip_Information_file_nameは、その先頭から、フィールドClip_Information_file_name_lengthが表すバイト長までが、有効な名称として使用される。フィールドClip_Information_file_nameでクリップインフォメーションファイルが指定されると、上述したファイル名の対応関係により、当該クリップインフォメーションファイルに対応するクリップＡＶストリームファイルが特定できる。
【０１５５】
フィールドIN_timeおよびフィールドOUT_timeは、それぞれ３２ビットのデータ長を有し、ブロックPlayItem()内においてフィールドClip_Information_file_nameで指定したクリップインフォメーションファイルに対応するクリップＡＶストリームファイルの再生開始位置および再生終了位置を指定する時刻情報である。これらフィールドIN_timeおよびフィールドOUT_timeの情報を用いることで、クリップＡＶストリームファイルの先頭以外の部分からの再生開始を指定することができる。同様に、クリップＡＶストリームファイルの後端以外の再生終了を指定することができる。
【０１５６】
図２６を用いて、ブロックPlayListMark()の一例の内部構造について説明する。ブロックPlayListMark()の先頭には、フィールドlengthが配される。フィールドlengthは、３２ビットのデータ長を有し、当該ブロックPlayListMark()の長さを示す。続いて、フィールドnumber_of_PlayList_marksが配される。フィールドフィールドnumber_of_PlayList_marksは、１６ビットのデータ長を有し、続くブロックMark()の個数を示す。次行のforループによりフィールドnumber_of_PlayList_marksに示される回数分だけ、当該個数のブロックMark()が記述される。
【０１５７】
ブロックMark()の一例の内部構造について説明する。ブロックMark()は、先頭にフィールドmark_typeが配される。フィールドmark_typeは、８ビットのデータ長を有し、当該フィールドmark_typeを含むブロックMark()の種類を示す。この実施の一形態では、図２７に一例が示されるように、チャプタマーク、インデックスマークおよびイベントマークの３種類のマークが規定されている。チャプタは、プレイリスト（ブロックPlayList()）を分割する頭出し単位であり、インデックスは、チャプタをさらに分割する頭出し単位である。チャプタマークおよびインデックスマークは、それぞれ、これらチャプタ位置およびインデックス位置を時刻情報で示す。イベントマークは、マークイベントを発生させるマークである。
【０１５８】
フィールドmark_name_lengthは、８ビットのデータ長を有し、このブロックMark()に付された名称の長さを示す。ブロックMark()の最下行に配されるフィールドmark_name_stringは、このブロックMark()に付された名称を示す。フィールドmark_name_stringは、その先頭から、フィールドmark_name_lengthが表すバイト長までが、有効な名称として使用される。
【０１５９】
フィールドref_to_PlayItem_id、フィールドmark_time_stamp、フィールドentry_ES_stream_idおよびフィールドentry_ES_private_stream_idの４要素は、ブロックPlayList()上で定義されるブロックMark()を、クリップＡＶストリームファイルと対応付ける。すなわち、フィールドref_to_PlayItem_idは、１６ビットのデータ長を有し、ブロックPlayItem()の識別情報を示す。これにより、クリップインフォメーションファイルと、クリップＡＶストリームファイルとが特定される。
【０１６０】
フィールドmark_time_stampは、３２ビットのデータ長を有し、クリップＡＶストリームファイル内でのマークの時刻を指定するために用いられる。図２８を用いて、概略的に説明する。図２８において、プレイリストは、番号０、１および２がそれぞれ指定された３つのプレイアイテム（PlayItem(#0)、PlayItem(#1)およびPlayItem(#2)）からなり、プレイリスト上の時刻ｔ0は、番号１のプレイアイテム（PlayItem(#1)）に含まれるものとする。また、番号０、１および２の各プレイアイテムは、それぞれ対応するクリップインフォメーションファイルを介してクリップＡＶストリームファイルのプログラムストリーム(Program Sream)Ａ、ＢおよびＣにそれぞれ対応しているものとする。
【０１６１】
このような場合において、プレイリスト上の時刻ｔ0にマークを指定する場合、フィールドref_to_PlayItem_idの値を、時刻ｔ0を含むプレイアイテムを示す"１"とし、さらに、対応するクリップＡＶストリームファイルＢ上で時刻ｔ0に相当する時刻を、フィールドmark_time_stampに記述する。
【０１６２】
図２６の説明に戻り、フィールドmark_time_stampに続けてフィールドentry_ES_stream_idおよびフィールドentry_ES_private_stream_idが配される。フィールドentry_ES_stream_idおよびフィールドentry_ES_private_stream_idは、それぞれ８ビットのデータ長を有し、当該ブロックMark()が特定のエレメンタリストリームに関連付けられている場合に、そのエレメンタリストリームを特定するために用いられる。フィールドentry_ES_stream_idおよびフィールドentry_ES_private_stream_idは、それぞれ該当するエレメンタリストリームが多重化されているパケット(packet())のストリームＩＤ(stream_id)と、プライベートパケットヘッダ(private_packet_header())のプライベートストリームＩＤ(private_stream_id)を示す。
【０１６３】
なお、これらパケット(packet())のストリームＩＤ(stream_id)、プライベートパケットヘッダ(private_packet_header())のプライベートストリームＩＤ(private_stream_id)は、例えばＭＰＥＧ２システムのプログラムストリームの規定に基づく。
【０１６４】
これらフィールドentry_ES_stream_idおよびフィールドentry_ES_private_stream_idは、例えば、クリップＡＶストリーム＃０とクリップＡＶストリーム＃１とで異なるチャプタ構成である場合などに用いられる。該当するブロックMark()が特定のエレメンタリストリームに関連付けられていない場合には、これら２つのフィールドの値がそれぞれ"０"とされる。
【０１６５】
次に、図２９〜図３３を用いて、クリップインフォメーションファイルの内部構造について説明する。クリップインフォメーションファイル"XXXXX.CLP"は、上述したように、ディレクトリ"STREAM"の下に置かれた、対応するクリップＡＶストリームファイル"XXXXX.PS"の性質などを記述する。
【０１６６】
図２９は、クリップＡＶストリームファイル"XXXXX.CLP"の全体構造を表す一例のシンタクスを示す。クリップＡＶストリームファイル"XXXXX.CLP"は、先頭に、フィールドpresentation_start_timeおよびフィールドpresentation_end_timeがそれぞれ配される。フィールドpresentation_start_timeおよびフィールドpresentation_end_timeは、それぞれ３２ビットのデータ長を有し、対応するクリップＡＶストリームファイルの先頭と後端の時刻を示す。時刻情報は、ＭＰＥＧ２システムにおけるＰＴＳ(Presentation Time Stamp)を用いることができる。ＰＴＳは、９０ｋＨｚの精度を有する。
【０１６７】
次に、７ビットのデータ長を有するフィールドreserved_for_word_alignmentと、１ビットのデータ長を有するフラグcapture_enable_flag_Clipとが配される。フィールドreserved_for_word_alignmentは、データ長が１ビットのフラグcapture_enable_flag_Clipと組み合わせて、ファイル"XXXXX.CLP"内での配置を１６ビットの位置に揃えるために用いられる。フラグcapture_enable_flag_Clipは、当該ファイル"XXXXX.CLP"に対応するクリップＡＶストリームファイルに含まれる動画像の２次利用を許可するか否かを示すフラグである。例えば、このフラグcapture_enable_flag_Clipの値が"１"であれば、当該ファイル"XXXXX.CLP"に対応するクリップＡＶストリームファイルの動画像の、再生機内での２次利用を許可することを示す。
【０１６８】
フィールドnumber_of_streamsは、８ビットのデータ長を有し、続くブロックStreamInfo()構造の個数を示す。フィールドnumber_of_streamsの次から、forループによりフィールドnumber_of_streamsで示される回数分だけ、ブロックStreamInfo()が記述される。forループの後には、ブロックEP_map()が配される。
【０１６９】
ブロックStreamInfo()の一例の内部構造について説明する。ブロックStreamInfo()の先頭には、フィールドlengthが配される。フィールドlengthは、１６ビットのデータ長を有し、当該ブロックStreamInfo()の長さを示す。続いて、それぞれ８ビットのデータ長を有するフィールドstream_idおよびフィールドprivate_stream_idが配され、図３０に一例が示されるように、当該ブロックStreamInfo()をエレメンタリストリームに関連付けている。この図３０の例では、当該ブロックStreamInfo()は、フィールドstream_idが値"０ｘＥ０"〜値"０ｘＥＦ"でビデオストリームに関連付けられ、値"０ｘＢＤ"でＡＴＲＡＣ(Adaptive Transform Acoustic Coding)オーディオストリーム、ＬＰＣＭ(Linear Pulse Code Modulation)オーディオストリームまたは字幕ストリームと関連付けられる。また、当該ブロックStreamInfo()は、フィールドprivate_stream_idが値"０ｘ００"〜値"０ｘ０Ｆ"、値"０ｘ１０"〜値"０ｘ１Ｆ"および値"０ｘ８０"〜値"０ｘ９Ｆ"で、ＡＴＲＡＣオーディオストリーム、ＬＰＣＭオーディオストリームおよび字幕ストリームにそれぞれ関連付けられる。
【０１７０】
なお、図３０での値の表記において、「０ｘ」は、後続する数値が１６進表記であることを示す。これは、以下の同様な表現において、共通である。
【０１７１】
ここで、ブロックStreamInfo()は、大別して、ストリーム中で変化しない情報とストリーム中で変化する情報との２種類の情報が記述されている。ストリーム中で変化しない情報は、ブロックStaticInfo()に記述される。一方、ストリーム中で変化する情報は、変化点を時刻情報で指定して、ブロックDynamicInfo()に記述される。
【０１７２】
ブロックStreamInfo()において、ブロックStaticInfo()の後ろにバイト位置を揃えるための、８ビットのデータ長を有するフィールドreserved_for_word_alignmentが配され、その次に、フィールドnumber_of_DynamicInfoが配される。フィールドnumber_of_DynaminInfoは、８ビットのデータ長を有し、ブロックStreamInfo()内にその後に記述されるブロックDynamicInfo()の個数が示される。forループにより、フィールドnumber_of_DynamicInfoで示される回数分だけ、フィールドpts_change_pointおよびブロックDynamicInfo()が記述される。
【０１７３】
フィールドpts_change_pointは、３２ビットのデータ長を有し、対応するブロックDynamicInfo()の情報が有効になる時刻をＰＴＳにより示す。ストリーム毎に先頭となる時刻も、フィールドpts_change_pointで示され、これは、ファイル"XXXXX.CLP"内で定義される、上述したフィールドpresentation_start_timeと等しくなる。
【０１７４】
図３１を用いて、ブロックStaticInfo()の一例の内部構造について説明する。ブロックStaticInfo()は、対応するエレメンタリストリームの種類により内容が異なる。対応するエレメンタリストリームの種類は、図３０を用いて説明した、フィールドstream_idおよびフィールドprivate_stream_idの値に基づき判断できる。図３１では、ブロックStaticInfo()が対応するエレメンタリストリームの種類がビデオストリーム、オーディオストリームおよびサブタイトル（字幕）ストリームの何れであるかを、if構文を用いてそれぞれ記述している。以下、ブロックStaticInfo()について、エレメンタリストリーム毎に説明する。
【０１７５】
エレメンタリストリームがビデオストリームであった場合、ブロックStaticInfo()は、それぞれ４ビットのデータ長を有するフィールドpicture_sizeおよびフィールドframe_rate、１ビットのデータ長を有するフラグcc_flagからなる。フィールドpicture_sizeおよびフィールドframe_rateは、当該ビデオストリームの画像のサイズおよびフレーム周波数をそれぞれ示す。フラグcc_flagは、当該ビデオストリームがクローズドキャプションを含むか否かを示す。例えば、フラグcc_flagの値が"１"で、当該ビデオストリームがクローズドキャプションを含む。フィールドreserved_for_word_alignmentは、データ配置を１６ビットに揃えるために用いられる。
【０１７６】
エレメンタリストリームがオーディオストリームであった場合、ブロックStaticInfo()は、１６ビットのデータ長を有するフィールドaudio_language_code、８ビットのデータ長を有するフィールドchannel_configuration、１ビットのデータ長を有するフラグlfe_exsistanceおよび４ビットのデータ長を有するフィールドsampling_frequencyからなる。フィールドaudio_language_codeは、当該オーディオストリームに含まれている言語を表すコードを示す。フィールドchannel_configurationは、モノラル、ステレオ、マルチチャンネルなど、オーディオデータのチャンネル属性を示す。フィールドlfe_existanceは、低域強調チャンネルが含まれているか否かを示し、例えば値が"１"で、含まれていることを示す。フィールドsampling_frequencyは、オーディオデータのサンプリング周波数を示す。フィールドreserved_for_word_alignmentは、データ配置を１６ビットに揃えるために用いられる。
【０１７７】
エレメンタリストリームがサブタイトル（字幕）ストリームであった場合、ブロックStaticInfo()は、１６ビットのデータ長を有するフィールドsubtitle_language_codeおよび１ビットのデータ長を有するフラグconfigurable_flagからなる。フィールドsubtitle_language_codeは、当該字幕ストリームに含まれている言語を表すコードを示す。フラグconfigurable_flagは、当該字幕ストリームを行事する際に、文字の大きさや位置の変更を許可するか否かを示し、例えば値が"１"で、許可することを示す。フィールドreserved_for_word_alignmentは、データ配置を１６ビットに揃えるために用いられる。
【０１７８】
図３２を用いて、ブロックDynamicInfo()の一例の内部構造について説明する。ブロックDynamicInfo()は、先頭に、８ビットのデータ長を有するフィールドreserved_for_word_alignmentが配される。続く内容は、対応するエレメンタリストリームの種類により異なる。対応するエレメンタリストリームの種類は、図３０を用いて説明した、フィールドstream_idおよびフィールドprivate_stream_idの値に基づき判断できる。図３２では、ブロックDynamicInfo()が対応するエレメンタリストリームの種類がビデオストリーム、オーディオストリームおよびサブタイトル（字幕）ストリームの何れであるかを、if構文を用いてそれぞれ記述している。以下、ブロックDynamicInfo()について、エレメンタリストリーム毎に説明する。
【０１７９】
エレメンタリストリームがビデオストリームであった場合、ブロックDynamicInfo()は、４ビットのデータ長を有するフィールドdisplay_aspect_ratioからなる。フィールドdisplay_aspect_ratioは、ビデオの表示出力アスペクト比が１６：９か４：３かを示す。フィールドreserved_for_word_alignmentは、データ配置を１６ビットに揃えるために用いられる。
【０１８０】
エレメンタリストリームがオーディオストリームであった場合、ブロックDynamicInfo()は、４ビットのデータ長を有するフィールドchannel_assignmentからなる。フィールドchannel_assignmentは、当該オーディオストリームが２チャンネルで構成されている場合に、出力がステレオかデュアルモノかを示す。デュアルモノは、例えば２ヶ国語の音声を再生可能とする際に用いられる。フィールドreserved_for_word_alignmentは、データ配置を１６ビットに揃えるために用いられる。
【０１８１】
エレメンタリストリームが字幕ストリームであった場合、ブロックDynamicInfo()は、データ配置を１６ビットに揃えるために用いられる、フィールドreserved_for_word_alignmentで構成される。すなわち、字幕ストリームに関しては、動的に変化する属性が定義されていない。
【０１８２】
図３３を用いて、ブロックEP_map()の一例の内部構造について説明する。ブロックEP_map()は、エレメンタリストリーム毎に、ビットストリーム内のデコード開始可能位置（エントリポイント）を、時刻情報と位置情報とを用いて表したものである。位置情報は、例えばエレメンタリストリームが記録される記録媒体における、アクセスの最小単位を用いることができる。各エレメンタリストリームは、ブロックEP_map()で示された位置からのデコード処理が可能であるものとする。
【０１８３】
固定レートのストリームでは、デコード開始可能位置を計算で求めることができるので、このブロックEP_map()のような情報は、不要である。一方、可変レートのストリームや、ＭＰＥＧ系のビデオの圧縮符号化方式のようにアクセスユニット毎にデータのサイズが変わるようなストリームの場合には、ランダムアクセスを行うために重要な情報となる。
【０１８４】
ブロックEP_map()は、先頭に、配置を１６ビットに揃えるために、８ビットのデータ長を有するフィールドreserve_for_word_alignmentが配される。続いて、フィールドnumber_of_stream_id_entriesが配される。フィールドnumber_of_stream_id_entriesは、８ビットのデータ長を有し、このブロックEP_map()に記述されているエレメンタリストリームの数を示す。第１のforループにより、フィールドstream_id、フィールドprivate_stream_idおよびフィールドnumber_of_EP_entriesが、フィールドnumber_of_stream_id_entriesで示される回数分だけ、記述される。さらに、第１のforループの１回の記述毎に、第２のforループにより、フィールドnumber_of_EP_entriesで示される回数分だけ、フィールドPTS_EP_startおよびフィールドRPN_EP_startが配される。
【０１８５】
第１のforループ内において、最初に、それぞれ８ビットのデータ長を有するフィールドstream_idおよびフィールドprivate_stream_idが配され、図３０に一例が示されるようにして、エレメンタリストリームを特定している。次に、配されるフィールドnumber_of_EP_entriesは、３２ビットのデータ長を有し、当該エレメンタリストリームに対して記述されているエントリポイントの数を示す。その後、第２のforループにて、フィールドnumber_of_EP_entriesが示す数だけ、フィールドPTS_EP_startおよびフィールドRPN_EP_startがそれぞれ配される。
【０１８６】
フィールドPTS_EP_startおよびフィールドRPN_EP_startは、それぞれ３２ビットのデータ長を有し、エントリポイント自体を表す。フィールドPTS_EP_startは、エントリポイントのクリップＡＶストリームファイル内での時刻をＰＴＳで示す。一方、フィールドRPN_EP_startは、エントリポイントのクリップＡＶストリームファイル内での位置を例えば２０４８バイト単位で示す。
【０１８７】
この実施の一形態においては、ディスク状のアクセス単位である１セクタが２０４８バイトとされる。そのため、エントリポイントのクリップＡＶストリームファイル内での位置は、フィールドRPN_EP_startにより、セクタ単位で示されることになる。
【０１８８】
ここで、ビデオストリームの再生開始可能位置の直前には、必ず、パケットprivate_stream_2が配される。このパケットprivate_stream_2は、ビデオストリームをデコードするために利用可能な情報が格納されるパケットである。そのため、ビデオストリームのエントリポイントの位置は、当該パケットprivate_stream_2が格納されるパックpack()の位置とされる。
【０１８９】
ブロックEP_map()は、上述のようにして、クリップＡＶストリーム上の時刻と、クリップＡＶストリームファイル内での位置とを対応付けている。これにより、クリップＡＶストリームへのアクセスポイントの時刻情報（タイムスタンプ）が与えられたときに、クリップＡＶストリームファイルの中でデータの読み出しを開始すべきデータアドレスを検索することが容易となり、ディスクのランダムアクセスをスムースに行うことができる。
【０１９０】
なお、この実施の一形態では、ブロックEP_map()において、エレメンタリストリーム毎の時刻情報と位置情報との組（第２のforループ内のフィールドPTS_EP_startとフィールドRPN_EP_startとの組）は、フィールドPTS_EP_startおよびRPN_EP_startの両方に対して昇順（または降順）に予め並べて登録するようにしている。換言すれば、時刻情報と位置情報とは、予め所定の方向に並べ替えられている。このため、このままのデータに対して二分検索を実行することが可能である。
【０１９１】
なお、この発明の実施の一形態では、ビデオのエレメンタリストリームは、ＭＰＥＧ２−Ｖｉｄｅｏの規格に基づくエレメンタリストリームであるとして説明したが、これはこの例に限定されない。例えば、ビデオのエレメンタリストリームは、ＭＰＥＧ４−Ｖｉｓｕａｌや、ＭＰＥＧ４−ＡＶＣによるものでもよい。また、オーディオのエレメンタリストリームは、ＡＴＲＡＣオーディオのエレメンタリストリームであるとして説明したが、これもこの例に限らず、例えばＭＰＥＧ１／２／４オーディオにも適用可能である。
【０１９２】
７．ディスク再生装置について
次に、この発明の実施の一形態を適用可能なディスク再生装置について説明する。図３４は、この発明を適用可能なディスク再生装置１００の一例の構成を概略的に示す。バス１１１に対して、ＣＰＵ(Central Processing Unit)１１２、メモリ１１３、ドライブインターフェイス１１４、入力インターフェイス１１５、ビデオデコーダ１１６、オーディオデコーダ１１７、ビデオ入出力インターフェイス１１８およびオーディオ入出力インターフェイス１１９がそれぞれ接続される。このディスク再生装置１００の各部は、バス１１１を介してビデオストリーム、オーディオストリーム、各種コマンドやデータなどを互いにやりとりできるようになっている。
【０１９３】
ドライブインターフェイス１１４には、さらに、ディスクドライブ１０２が接続される。ディスクドライブ１０２は、ドライブインターフェイス１１４を介してバス１１１とデータやコマンドのやりとりを行う。
【０１９４】
ＣＰＵ１１２は、ＲＯＭ(Read Only Memory)およびＲＡＭ(Random Access Memory)を有し（図示しない）、ＲＯＭに予め記憶されたプログラムやデータに従い、バス１１１を介してこのディスク再生装置１００の各部とデータやコマンドのやりとりを行い、このディスク装置１００の全体を制御する。ＲＡＭは、ＣＰＵ１１２のワークメモリとして用いられる。
【０１９５】
入力インターフェイス１１５は、ユーザにより実際に入力操作が行われる入力装置からの入力信号が供給される。入力装置は、例えば、赤外線信号などで遠隔的にディスク再生装置１００を操作するリモートコントロールコマンダや、このディスク再生装置１００に直接的に設けられたキーなどである。入力インターフェイス１１５は、これらの入力装置から供給された入力信号を、ＣＰＵ１１２に対する制御信号に変換して出力する。
【０１９６】
ディスク１０１は、図２３以降で説明したようなフォーマットで以て、プレイリスト、スクリプトプログラム、クリップインフォメーションファイル、クリップＡＶストリームファイルなどが記録されている。ディスク１０１がディスクドライブ１０２に装填されると、自動再生またはユーザの入力操作に従いディスク１０１が再生される。ディスク１０１から読み出されたスクリプトファイルやプレイリストファイル、クリップインフォメーションファイルは、ＣＰＵ１１２に供給され、例えばＣＰＵ１１２が有するＲＡＭに記憶される。ＣＰＵ１１２は、ＲＡＭに記憶されたこれらのデータやスクリプトプログラムに基づき、ディスク１０１からクリップＡＶストリームファイルを読み出す。
【０１９７】
ディスク１０１から読み出されたクリップＡＶストリームファイルは、メモリ１１３に一旦格納される。ビデオデコーダ１１６は、ＣＰＵ１１２の命令に基づき、メモリ１１３に格納されたクリップＡＶストリームファイルのビデオストリームや字幕ストリームをデコードする。デコードされたビデオデータや字幕データは、例えばＣＰＵ１１２によりそれぞれ拡大、縮小処理などの画像処理を施されると共に、合成、加算処理を施され、１本のビデオデータとされる。これらの画像処理は、これに限らず、ビデオデコーダ１１６やビデオ出力インターフェイス１１８において行うこともできる。このビデオデータは、メモリ１１３にバッファリングされ、ビデオ出力インターフェイス１１８に供給される。ビデオ出力インターフェイス１１８は、例えば、供給されたビデオデータをアナログビデオ信号に変換して、ビデオ出力端子１２０に導出する。
【０１９８】
同様に、オーディオデコーダ１１７は、ＣＰＵ１１２の命令に基づき、メモリ１１３に格納されたクリップＡＶストリームファイルのオーディオストリームをデコードする。デコードされたオーディオデータは、メモリ１１３にバッファリングされ、オーディオ出力インターフェイス１１９に供給される。オーディオ出力インターフェイス１１９は、供給されたオーディオデータを、例えばアナログオーディオ信号に変換してオーディオ出力端子１２１に導出する。
【０１９９】
なお、ここでは、図３４に示される各部がそれぞれ独立したハードウェアで構成されているように説明したが、これはこの例に限定されない。例えば、ビデオデコーダ１１６および／またはオーディオデコーダ１１７は、ＣＰＵ１１２上で動作するソフトウェアにより構成することができる。
【０２００】
図３５は、図３４に示したディスク再生装置１００における動作をより詳細に説明するための機能ブロック図である。ディスク再生装置１００は、概略的には、オペレーションシステム２０１と、ビデオコンテンツ再生部２１０とからなる。ビデオコンテンツ再生部２１０は、実質的には、オペレーションシステム２０１上で動作するソフトウェアプログラムである。これに限らず、ビデオコンテンツ再生部２１０は、ソフトウェアとハードウェアが統合的に動作するものとしてもよい。以下では、ビデオコンテンツ再生部２１０がソフトウェアであるものとして説明する。なお、図３５では、ディスクドライブ１０２は、省略されている。
【０２０１】
オペレーションシステム２０１は、ディスク再生装置１００に電源が投入されるとＣＰＵ１１２において最初に起動し、各部の初期設定など必要な処理を行い、アプリケーションプログラム（ここではビデオコンテンツ再生部２１０）をＲＯＭから呼び出す。オペレーションシステム２０１は、ビデオコンテンツ再生部２１０の動作中に、ビデオコンテンツ再生部２１０に対して、ディスク１０１からのファイルの読み出しやファイルシステムの解釈といった、基本的なサービスを提供する。例えば、オペレーションシステム２０１は、ビデオコンテンツ再生部２１０から渡されたファイル読み出しリクエストに応じて、ドライブインターフェイス１１４を介してディスクドライブ１０２を制御し、ディスク１０１に記録されているデータを読み出す。読み出されたデータは、オペレーションシステム２０１の制御により、ビデオコンテンツ再生部２１０に渡される。
【０２０２】
また、オペレーションシステム２０１は、マルチタスク処理機能を備え、複数のソフトウェアモジュールを、例えば時分割制御により見かけ上並列的に制御することができる。すなわち、図３５に一例が示される、ビデオコンテンツ再生部２１０を構成する各モジュールは、オペレーションシステム２０１のマルチタスク処理機能により、全て、並列的な動作が可能である。
【０２０３】
以下、ビデオコンテンツ再生部２１０の動作について、より具体的に説明する。ビデオコンテンツ再生部２１０は、内部にさらに幾つかのモジュールを有しており、下記の機能を実現する。
（１）装填されたディスク１０１がＵＭＤビデオの規格に準じたディスク（以下、ＵＭＤビデオディスクと呼ぶ）であるか否かを判断する。
（２）装填されたディスク１０１がＵＭＤビデオディスクであると判断した場合、ディスク１０１からスクリプトファイルを読み出して、スクリプト制御モジュール２１１に渡す。
（３）装填されたディスク１０１がＵＭＤビデオディスクであると判断した場合、さらに、データベースを構成するファイル（プレイリストファイル、クリップインフォメーションファイルなど）を読み出して、プレーヤ制御モジュール２１２に渡す。
【０２０４】
以下、ビデオコンテンツ再生部２１０の各モジュールの動作について説明する。
【０２０５】
スクリプト制御モジュール２１１は、スクリプトファイル"SCRIPT.DAT"に記述されているスクリプトプログラムを解釈して実行する。プレーヤモデルの説明で既に述べたように、メニュー画面などの画像の作成および出力や、ユーザ入力に応じたカーソル移動、メニュー画面の変更といったＧＵＩは、スクリプトプログラムによりグラフィクス処理モジュール２１９を制御することで実現する。また、スクリプト制御モジュール２１１は、スクリプトプログラムの実行により、プレーヤ制御モジュール２１２の制御などが可能である。
【０２０６】
プレーヤ制御モジュール２１２は、ディスク１０１から読み出された、プレイリストファイル"PLAYLIST.DAT"や、クリップインフォメーションファイル"XXXXX.CLP"といったファイルに格納されたデータベース情報を参照して、ディスク１０１に記録されているビデオコンテンツの再生に関わる、以下のような制御を行う。
（１）プレイリストやクリップインフォメーションといったデータベース情報を解析する。
（２）コンテンツデータ供給モジュール２１３、デコード制御モジュール２１４およびバッファ制御モジュール２１５を制御する。
（３）スクリプト制御モジュール２１１または入力インターフェイス１１５からの指示に従い、再生、再生停止、再生一時停止といったプレーヤの状態遷移制御や、ストリーム切り替えなどの再生制御処理を行う。
（４）デコード制御モジュール２１４から、再生中のビデオストリームについて、時刻情報を取得し、時刻表示やマークイベントの生成などを行う。
【０２０７】
コンテンツデータ供給モジュール２１３は、プレーヤ制御モジュール２１２の指示に従い、ディスク１０１からクリップＡＶストリームファイルといったコンテンツデータを読み出し、バッファ制御モジュール２１５に渡す。バッファ制御モジュール２１５は、渡されたコンテンツデータをバッファの実体２１５Ａとしてのメモリ１１３に溜め込む。コンテンツデータ供給モジュール２１３は、バッファ制御モジュール２１５を制御し、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７および字幕デコーダ制御モジュール２１８からの要求に従い、メモリ１１３に溜め込まれたコンテンツデータを、これらのモジュール２１６、２１７および２１８に所定に供給する。また、コンテンツデータ供給モジュール２１３は、バッファ制御モジュール２１５により溜め込まれるコンテンツデータの量を所定に制御するように、ディスク１０１からコンテンツデータの読み込みを行う。
【０２０８】
デコード制御モジュール２１４は、プレーヤ制御モジュール２１２の指示に従い、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７および字幕デコーダ制御モジュール２１８の動作を制御する。また、デコード制御モジュール２１４は、内部に時計機能を有し、ビデオデータとオーディオデータとが同期的に出力されるように、各デコーダ制御モジュール２１６、２１７および２１８の動作を制御する。
【０２０９】
バッファ制御モジュール２１５は、バッファの実体２１５Ａとして、メモリ１１３の一部を排他的に用いる。また、バッファ制御モジュール２１５は、データ先頭ポインタおよびデータ書き込みポインタを記憶する。バッファ制御モジュール２１５は、さらに、内部モジュールとしてビデオ読み出し機能、オーディオ読み出し機能および字幕読み出し機能を有する。ビデオ読み出し機能の内部には、ビデオ読み出しポインタを有する。また、ビデオ読み出し機能の内部には、アクセスユニット情報である情報au_information()を蓄積するためのレジスタを備える。オーディオ読み出し機能の内部には、オーディオ読み出しポインタを有する。字幕読み出し機能の内部には、字幕読み出しポインタと字幕読み出し機能フラグとを有する。字幕読み出し機能フラグは、書き込む値に応じて字幕読み出し機能の有効／無効を制御する。例えば、字幕読み出し機能フラグに"１"を書き込むと、字幕読み出し機能が有効とされ、"０"を書き込むと、字幕読み出し機能が無効とされる。
【０２１０】
バッファ制御モジュール２１５の内部モジュールであるビデオ読み出し機能、オーディオ読み出し機能および字幕読み出し機能は、さらに、ビデオストリーム、オーディオストリームおよび字幕ストリームが多重化されたクリップＡＶストリームから、それぞれのストリームを分離するデマルチプレクサ機能を有する。この発明の実施の一形態では、ＭＰＥＧ２システムのプログラムストリームの形式で複数のエレメンタリストリームが時分割多重されて、クリップＡＶストリームが形成されている。したがって、ビデオ読み出し機能、オーディオ読み出し機能および字幕読み出し機能は、ＭＰＥＧ２システムのプログラムストリームに対するデマルチプレクサ機能を有する。
【０２１１】
このため、ビデオ読み出し機能は、ストリーム内に所定に配置されるフィールドstream_id（図３０参照）の値を読み取り、保持する。同様に、オーディオ読み出し機能および字幕読み出し機能は、フィールドstream_idおよびフィールドprivate_stream_id（図３０参照）の値を読み取り、保持する。これらフィールドstream_idやフィールドprivate_stream_idの値は、供給されたビットストリームを解析する際に用いる。
【０２１２】
ビデオデコーダ制御モジュール２１６は、メモリ１１３からビデオストリームの単一のビデオアクセスユニットを読み出してビデオデコーダ１１６に供給するように、バッファ制御モジュール２１５内のビデオ読み出し機能に対して指示を出す。そして、ビデオデコーダ制御モジュール２１６は、ビデオデコーダ１１６を制御して、ビデオデコーダ１１６に供給されたビデオストリームをアクセスユニット単位でデコードする。ビデオストリームをデコードして生成されたビデオデータは、グラフィクス処理モジュール２１９に供給される。
【０２１３】
同様に、オーディオデコーダ制御モジュール２１７は、メモリ１１３からオーディオストリームの単一のオーディオアクセスユニットを読み出してオーディオデコーダ１１７に供給するように、バッファ制御モジュール２１５内のオーディオ読み出し機能に対して指示を出す。なお、この実施の一形態では、オーディオストリームを構成するアクセスユニット（オーディオフレーム）は、既知の固定長とする。そして、オーディオデコーダ制御モジュール２１７は、オーディオデコーダ１１７を制御して、オーディオデコーダ１１７に供給されたオーディオストリームをアクセスユニット単位でデコードする。オーディオストリームをデコードして生成されたオーディオデータは、オーディオ出力モジュール２４２に供給される。
【０２１４】
さらに、字幕デコーダ制御モジュール２１８は、メモリ１１３から字幕ストリームの単一の字幕アクセスユニットを読み出して字幕デコーダ制御モジュール２１８に供給するように、バッファ制御モジュール２１５内の字幕読み出し機能に対して指示を出す。なお、この実施の一形態では、字幕ストリームを構成する字幕アクセスユニットは、ユニットの先頭に当該ユニットの長さ情報が格納されている。字幕デコーダ制御モジュール２１８は、字幕デコード機能を有し、供給された字幕ストリームをデコードすることができる。字幕デコーダ制御モジュール２１８の字幕デコード機能により字幕ストリームがデコードされた字幕の画像データは、グラフィクス処理モジュール２１９に供給される。
【０２１５】
グラフィクス処理モジュール２１９は、上述したように、ビデオデコーダ制御モジュール２１６の制御に基づきビデオデコーダ１１６でデコードされたビデオデータと、字幕デコーダ制御モジュール２１８によりデコードされた字幕の画像データとが供給される。グラフィクス処理モジュール２１９は、供給されたこれらビデオデータに対して字幕の画像データを所定に加算し、出力するためのビデオ信号を生成する。グラフィクス処理モジュール２１９では、さらに、スクリプト制御モジュール２１１やプレーヤ制御モジュール２１２の指示に従い、メニュー画像やメッセージ画像を生成し、出力ビデオ信号に対して合成（オーバーレイ）する。
【０２１６】
例えば、グラフィクス処理モジュール２１９は、供給された字幕の画像データに対して、スクリプト制御モジュール２１１からの指示に従い拡大処理や縮小処理を行い、ビデオデータに対して所定に加算する。
【０２１７】
また、グラフィクス処理モジュール２１９は、予め指定された出力ビデオデバイスのアスペクトレシオと、ディスク１０１から再生されたコンテンツ内で指定された出力アスペクトレシオとに基づき、出力信号のアスペクト変換を行う。例えば、出力ビデオデバイスのアスペクトレシオが１６：９である場合、出力アスペクトレシオが１６：９であれば、ビデオデータをそのまま出力し、出力アスペクトレシオが４：３であれば、出力されるビデオデータを、画像の高さが出力ビデオデバイスの画面高さに一致するようにスクイーズ（縮小）処理し、画像の左右に黒画像を挿入して出力する。出力ビデオデバイスが４：３である場合には、出力アスペクトレシオが４：３であれば、ビデオデータをそのまま出力し、出力アスペクトレシオが１６：９であれば、出力されるビデオデータを、画像の幅が出力ビデオデバイスの画面幅に一致するようにスクイーズ処理し、画像の上下に黒画像を挿入して出力する。
【０２１８】
グラフィクス処理モジュール２１９は、さらに、プレーヤ制御モジュール２１２からの要求に応じて、現在処理中のビデオ信号をキャプチャし、プレーヤ制御モジュール２１２に返すような処理も行う。
【０２１９】
ビデオ出力モジュール２４１は、メモリ１１３の一部を排他的に占有してＦＩＦＯ(First In First Out)のバッファとして用い、グラフィクス処理モジュール２１９により処理されたビデオデータをこのバッファに一時的に溜め込み、所定のタイミングで読み出す制御を行う。バッファから読み出されたビデオデータは、ビデオ出力インターフェイス１１８から出力される。
【０２２０】
オーディオ出力モジュール２４２は、メモリ１１３の一部を排他的に占有してＦＩＦＯのバッファとして用い、オーディオデコーダ１１９から出力されたオーディオデータをこのバッファに溜め込み、所定のタイミングで読み出す制御を行う。バッファから読み出されたオーディオデータは、オーディオ出力インターフェイス１１９から出力される。
【０２２１】
また、オーディオ出力モジュール２４２は、コンテンツのオーディオモードがデュアルモノ（例えば２ヶ国語）であった場合、予め指定された音声出力モードに従いオーディオデータを出力する。音声出力モードが「主音声」に指定されている場合、例えばメモリ１１３において左チャンネルのオーディオデータを右チャンネルにもコピーして、２チャンネルの出力を両方とも左チャンネルのオーディオデータとして出力する。音声出力モードが「副音声」であった場合には、例えばメモリ１１３において右チャンネルのオーディオデータを左チャンネルにもコピーして、２チャンネルの出力を両方とも右チャンネルのオーディオデータとして出力する。音声出力モードが「主・副音声」である場合や、コンテンツがステレオである場合には、オーディオデータをそのまま出力する。
【０２２２】
このような音声出力モードの設定は、ビデオコンテンツ再生部２１０が生成するメニュー画面などにより、ユーザが対話的に行うことができるようになっている。
【０２２３】
不揮発性メモリ制御モジュール２５０は、プレーヤ制御モジュール２１２からの指示により、ビデオコンテンツ再生部２１０が終了しても消去されない領域へのデータの書き込みや、当該領域からのデータの読み出しを行う。タイトル識別ＩＤ(Title_ID)をキーとして、データSaved_Player_StatusおよびデータSaved_User_Dataの組を複数件、当該領域に記憶する機能を有する。データSaved_Player_Statusとして、プレーヤ制御モジュール２１２の持つデータBackup_Player_Statusが記憶される。このデータBackup_Player_Statusは、例えば上述したプレーヤステータス３２３Ｂの、プレーヤ制御モジュール２１２が終了する直前のデータに対応し、データSaved_Player_Statusは、リジュームインフォメーション３２４に対応する。また、データSaved_User_Dataとして、プレーヤ制御モジュール２１２が持つデータUser_Dataが記憶される。データUser_Dataは、ユーザによりプレーヤ制御モジュール２１２に対して設定された所定のデータである。
【０２２４】
例えば、ディスク再生装置１００が不揮発性のメモリであるフラッシュメモリなどを有する場合、不揮発性メモリ制御モジュール２５０は、このフラッシュメモリの所定領域にこれらデータSaved_Player_StatusおよびデータSaved_User_Dataの組を、ディスク１０１のタイトルＩＤと関連付けて記憶する。不揮発性メモリ制御モジュール２５０がデータを記憶する記憶媒体は、フラッシュメモリに限らず、例えばハードディスクなどでもよい。
【０２２５】
８．ユーザオペレーションの制御について
次に、この発明の実施の一形態によるユーザオペレーション制限について説明する。この発明の実施の一形態では、ユーザオペレーションに対する制限の組み合わせを、モード（ユーザオペレーションマスクモード：UOP mask modeと呼ぶ）として定義する。すなわち、その操作を許可するか否かを示すフラグをユーザオペレーション毎に設けるのではなく、頻繁に使用されると考えられるユーザオペレーションのセットを予めプレーヤ側で用意しておき、コンテンツ制作者側では、用意されたモードを選択することで、ユーザオペレーションに対する制限を実現する。
【０２２６】
ユーザオペレーションマスクモードの情報は、プレイリストのシンタクスにおいてフィールドUOP_mask_modeとして定義し、プレイリスト毎に持つものとする。このユーザオペレーションマスクモード情報は、プレイリストの階層でのみ持ち、複数の階層で持つことはしない。
【０２２７】
これによれば、ユーザオペレーションに対する制限の組み合わせは、ユーザオペレーションマスクモードとして、プレーヤ側に実装されてコンテンツ制作者側に提供される。そのため、コンテンツ制作者側による動作検証の負担が軽減される。
【０２２８】
また、コンテンツ制作者がユーザオペレーションの制限を行いたい場合、予め用意されたユーザオペレーションマスクモードを選択するだけでよいため、ユーザオペレーションをより容易に制御することができる。そのため、コンテンツ制作者側の制作および検証の負担が軽減されると共に、プレーヤ側の実装時の検証の負担も軽減される。
【０２２９】
以下、この発明の実施の一形態におけるユーザオペレーション制限について、より詳細に説明する。図３６は、この発明の実施の一形態によるファイル"PLAYLIST.DAT"の一例のシンタクスを示す。図３６に一例が示されるように、この実施の一形態では、図２４を用いて既に説明したＵＭＤビデオ規格によるファイル"PLAYLIST.DAT"に対して、フィールドUOP_mask_modeが追加されている。図３６の例では、フィールドUOP_mask_modeは、図２４のファイル"PLAYLIST.DAT"におけるフィールドPlayList_data_lengthの後のフィールドreserve_for_word_alignmentと、フィールドcapture_enable_flag_PlayListの間に追加されている。したがって、フィールドUOP_mask_modeは、ファイル"PLAYLIST.DAT"に含まれるプレイリスト毎に記述される。
【０２３０】
なお、このフィールドUOP_mask_modeの位置は一例であって、この例に限定されるものではない。
【０２３１】
図３を用いて既に説明したように、ムービープレーヤ３００は、ディスク１０１の再生開始時にファイル"PLAYLIST.DAT"を読み込み、このディスク１０１の再生中は、読み込んだプレイリストの情報を内部のメモリに保持している。したがって、フィールドUOP_masu_modeの情報も、該当するプレイリストを再生中は、メモリに保持されている。
【０２３２】
フィールドUOP_mask_modeは、４ビットのデータ長を有し、このファイル"PLAYLIST.DAT"に含まれるプレイリスト毎に定義される、ユーザオペレーションマスクモードを示す。図３７は、フィールドUOP_mask_modeが表す値の意味を例示する。値「０ｘ０」は、当該プレイリストのユーザオペレーションマスクモードが、全てのユーザオペレーションが可能であるモードであることを示す。
【０２３３】
フィールドUOP_mask_modeが値「０ｘ１」とされているときは、当該プレイリストに対して、ユーザオペレーションマスクモード「１」が設定されていることを示す。ユーザオペレーションマスクモード「１」が設定されたプレイリストは、ユーザオペレーションとしては、再生停止(stop)のみが有効とされる。当該プレイリストの再生中にその他のユーザオペレーションが行われても、プレーヤ側は、無視する。
【０２３４】
また、ユーザオペレーションマスクモードが「１」に設定されているプレイリストに対し、当該プレイリスト中の任意の時刻からの再生を開始する、所謂「飛び込み再生」のユーザオペレーションがなされたときは、当該プレイリストの先頭から、順方向の１倍速再生として再生を開始しなければいけないように、定義する。すなわち、他のプレイリストを再生中に、ユーザオペレーションマスクモードが「１」に設定されているプレイリストに対する飛び込み再生が発生した場合、当該プレイリストの先頭から順方向の１倍速での再生が行われる。
【０２３５】
このユーザオペレーションマスクモード「１」は、例えば映画コンテンツなどが収録されたディスク１０１において、映画コンテンツに先立って再生される、無断複製や無断放送などを禁止するメッセージが表示される警告画面（ＦＢＩ  ＷＡＲＮＩＮＧ）を再生するためのプレイリストに対して用いられることが想定されている。
【０２３６】
フィールドUOP_mask_modeが値「０ｘ２」とされているときは、当該プレイリストに対して、ユーザオペレーションマスクモード「２」が設定されていることを示す。ユーザオペレーションマスクモード「２」が設定されたプレイリストは、ユーザオペレーションとしては、当該プレイリストを再生中に、ユーザ操作により当該プレイリストの末尾にジャンプすることが禁止される。ただし、再生の停止は、常に許可される。また、順方向への高速再生や、逆方向への高速再生は、許可される。
【０２３７】
このユーザオペレーションマスクモード「２」は、上述のモード「１」よりはユーザオペレーションの制限に対する強制力が弱い。このユーザオペレーションマスクモード「２」は、例えば、レンタル用のコンテンツが収録されたディスク１０１の、先頭や末尾に収録されている宣伝用映像（トレーラ）を再生するプレイリストに対して用いられることが想定されている。
【０２３８】
なお、フィールドUOP_mask_modeにおいて、値「０ｘ３」〜「０ｘＦ」は、将来のための予約値である
【０２３９】
次に、上述したフィールドUOP_mask_modeの値を用いて行われるユーザオペレーションの制御について説明する。図３８は、ムービープレーヤ３００内でユーザオペレーション制限機能を実現するための一例の機能ブロック図を示す。ムービープレーヤ３００は、ディスク１０１から読み込まれたプレイリストの属性情報５００、すなわちフィールドUOP_mask_modeが示す値に基づきコマンドフィルタテーブル５０１を生成する。
【０２４０】
一方、ユーザオペレーションは、ネイティブ実装プラットフォーム３０１に対するユーザ入力３１０として入力される。ネイティブ実装プラットフォーム３０１は、入力されたユーザ入力３１０を制御コマンド３１１に変換し、ムービープレーヤ３００に供給する。この制御コマンド３１１は、ムービープレーヤ３００内のコマンドフィルタ５０２に渡される。コマンドフィルタ５０２は、コマンドフィルタテーブル５０１を参照し、渡された制御コマンド３１１をプレイバックモジュール３２１に渡すか否かを判断する。フィールドUOP_mask_modeにより制限されるユーザオペレーションは、コマンドフィルタテーブル５０１でフィルタリングされ、プレイバックモジュール３２１に渡されない制御コマンド３１１に対応するユーザオペレーションである。
【０２４１】
図３９は、コマンドフィルタテーブル５０１の一例の作成手順を示すフローチャートである。例えばディスク再生装置１００においてディスク１０１がロードされると（ステップＳ８０）、ムービープレーヤ３００は、ディスク１０１からプレイリストやクリップインフォメーションファイルを読み込む。そして、読み込んだプレイリストの属性情報から、フィールドUOP_mask_modeを読み込む（ステップＳ８１）。そして、読み込んだフィールドUOP_mask_modeに示されるユーザオペレーションマスクモードに対応したコマンドフィルタテーブル５０１を作成する（ステップＳ８２）。コマンドフィルタテーブル５０１は、プレイリスト毎に作成される。
【０２４２】
図４０は、ユーザオペレーションマスクモード「１」に対応する一例のコマンドフィルタテーブル５０１を示す。このコマンドフィルタテーブル５０１では、当該プレイリストの先頭以外からの再生開始が「禁止」とされると共に、許可される制御コマンド３１１は、コマンドuo_stop()（図１１参照）のみとされる。
【０２４３】
図４１は、ユーザオペレーションマスクモード「２」に対応する一例のコマンドフィルタテーブル５０１を示す。当該プレイリストの先頭以外からの再生開始が「許可」されると共に、図１１を用いて説明した各制御コマンド３１１中、コマンドuo_jumpToEnd()だけが禁止される。換言すれば、ユーザオペレーションマスクモード「２」では、コマンドuo_jumpToEnd()以外の制御コマンド３１１が全て許可される。
【０２４４】
図４０および図４１で説明したようなコマンドフィルタテーブル５０１は、コンテンツ制作者側で用意するものではなく、ムービープレーヤ３００の内部で生成されるものである。コマンドフィルタテーブル５０１をどのような形式でプレーヤ内部に持つかは、任意であって、プレーヤの実装に依存する。
【０２４５】
なお、図４０および図４１では、コマンドフィルタテーブル５０１をユーザオペレーションマスクモード「１」および「２」についてそれぞれ示したが、これはこの例に限定されない。例えば、コマンドフィルタテーブル５０１は、ユーザオペレーションマスクモードを一覧してまとめて生成してもよい。また、if構文を用いて記述することもできる。if構文を用いる場合は、コマンドフィルタテーブル５０１の機能をスクリプト自体によって実現することが可能である。
【０２４６】
図４２は、コマンドフィルタテーブル５０１を用いてユーザオペレーションを制限する一例の処理を示すフローチャートである。なお、このフローによる処理が開始されるのに先立って、ディスク１０１がプレーヤにロードされ、ロード時に読み込まれたファイル"PLAYLIST.DAT"に基づき、コマンドフィルタテーブル５０１が生成されているものとする。
【０２４７】
ステップＳ１００で、プレーヤに対するユーザ操作が発生すると、このユーザ操作に対応したユーザ入力３１０がネイティブ実装プラットフォーム３０１に入力される。ステップＳ１０１で、ネイティブ実装プラットフォーム３０１がこのユーザ入力３１０を受け付けると、次のステップＳ１０２で、ネイティブ実装プラットフォーム３０１は、受け付けたユーザ入力３１０をムービープレーヤ３００に対する制御コマンド３１１に変換し、ムービープレーヤ３００に通知する。
【０２４８】
ムービープレーヤ３００は、この制御コマンド３１１を受け取ると、現在再生中のプレイリストのコマンドフィルタテーブル５０１を参照する（ステップＳ１０３）。そして、ステップＳ１０４で、コマンドフィルタテーブル５０１に基づき、通知された制御コマンド３１１の実行が許可されているか否かを判断する。若し、当該制御コマンド３１１の実行が許可されていないと判断されれば、処理はステップＳ１０５に移行し、ムービープレーヤ３００は、当該制御コマンド３１１による処理を実行しない。
【０２４９】
一方、ステップＳ１０４で、当該制御コマンド３１１の実行が許可されていると判断されれば、処理はステップＳ１０６に移行する。ステップＳ１０６では、当該制御コマンド３１１が現在再生中のプレイリスト内において実行されるものであるか否かが判断される。すなわち、ステップＳ１０６では、例えば、制御コマンド３１１が当該プレイリスト内の他のチャプタにジャンプするチャプタジャンプや、ストリーム切り替えのような動作を指示する、現在再生中のプレイリスト内で実行されるものであるか、他のプレイリストの所定のチャプタからの再生開始を指示するような、現在のプレイリスト再生を中断して新たに他のプレイリストの再生を開始するものであるかを判断する。
【０２５０】
若し、ステップＳ１０６で、当該制御コマンド３１１が現在再生中のプレイリスト内で実行されるものであると判断されれば、処理はステップＳ１０７に移行され、当該制御コマンド３１１が実行される。なお、この制御コマンド３１１の実行に対して、イベントハンドラにより制限を与えることができる。すなわち、ユーザオペレーションに対して、ユーザオペレーションマスクによるフィルタリングを行った後に、さらにイベントハンドラによるフィルタリングを行うことができる。
【０２５１】
一方、ステップＳ１０６で、当該制御コマンド３１１が現在再生中のプレイリストで実行されるものではないと判断されれば、処理はステップＳ１０８に移行される。ステップＳ１０８では、新たに再生が開始されようとしている他のプレイリストのコマンドフィルタテーブル５０１が参照される。例えば、上述のステップＳ１０２でムービープレーヤ３００に通知された制御コマンド３１１が、現在再生中のプレイリストから他のプレイリストにジャンプする動作を指示するコマンドであるような場合、ジャンプ先のプレイリストのコマンドフィルタテーブル５０１が参照される。
【０２５２】
処理はステップＳ１０９に移行され、新たに再生が開始されようとしている他のプレイリストのコマンドフィルタテーブル５０１に基づき、当該他のプレイリストにおいて、先頭からの再生のみが許可されているか否かが判断される。若し、先頭からの再生のみが許可されていると判断されれば、処理はステップＳ１１０に移行される。そして、ムービープレーヤ３００は、当該制御コマンド３１１が当該他のプレイリストの先頭以外の位置からの再生を指示するものであっても、当該他のプレイリストの先頭から再生開始するように、プレイバックモジュール３２１に対して指示する。
【０２５３】
一方、ステップＳ１０９で、当該他のプレイリストが先頭以外の位置からの再生が許可されていると判断されれば、処理はステップＳ１１１に移行される。そして、ムービープレーヤ３００は、当該制御コマンド３１１に従い、制御コマンド３１１により指定された時刻やチャプタから当該他のプレイリストを再生するように、プレイバックモジュール３２１に対して指示する。
【０２５４】
以上説明したようにして、この発明の実施の一形態によるユーザオペレーションの制御が実現される。
【図面の簡単な説明】
【０２５５】
【図１】ＵＭＤビデオ規格のレイヤ構成を示す略線図である。
【図２】この発明の実施の一形態による一例のプレーヤモデルを模式的に示す略線図である。
【図３】ムービープレーヤの一例の内部構成を示す略線図である。
【図４】ムービープレーヤの一例の内部構成を示す略線図である。
【図５】この発明の実施の一形態によるムービープレーヤのイベントモデルを模式的に示す略線図である。
【図６】プレイリストの再生中に発生する一例のイベントを示す略線図である。
【図７】ムービープレーヤオブジェクトが有する一例のプロパティを一覧して示す略線図である。
【図８】ムービープレーヤオブジェクトが有する一例のメソッドを一覧して示す略線図である。
【図９】ユーザ入力による一例のキー入力を示す略線図である。
【図１０】ユーザ入力による一例のキー入力を示す略線図である。
【図１１】キー入力に応じた一例の制御コマンドを示す略線図である。
【図１２】キー入力に対応する一例のイベントを示す略線図である。
【図１３】一例のイベントハンドラを示す略線図である。
【図１４】一例のイベントハンドラを示す略線図である。
【図１５】ユーザ入力イベントをきっかけとして、用意されたプログラムが実行される一例の処理を示すフローチャートである。
【図１６】ＵＭＤビデオプレーヤにディスクがロードされてからイジェクトされるまでの処理を概略的に示すフローチャートである。
【図１７】スクリプトファイルの構成例を示す略線図である。
【図１８】イベントハンドラonAutoPlay()を実行する一例の手順を示すフローチャートである。
【図１９】イベントハンドラonContinuePlay()を実行する一例の手順を示すフローチャートである。
【図２０】再生終了時の一例の処理を示すフローチャートである。
【図２１】スクリプトプログラムの例について説明するための図である。
【図２２】一例のスクリプトプログラムを示す略線図である。
【図２３】ＵＭＤビデオ規格に適用されるファイルの管理構造を
【図２４】ファイル"PLAYLIST.DAT"の全体構造を表す一例のシンタクスを示す略線図である。
【図２５】ブロックPlayItem()の一例の内部構造を示す略線図である。
【図２６】ブロックPlayListMark()の一例の内部構造を示す略線図である。
【図２７】ブロックMark()内のフィールドmark_typeについて説明するための図である。
【図２８】クリップＡＶストリームファイル内でのマーク時刻の指定について説明するための図である。
【図２９】クリップＡＶストリームファイル"XXXXX.CLP"の全体構造を表す一例のシンタクスを示す略線図である。
【図３０】ブロックStreamInfo()のエレメンタリストリームに対する関連付けを説明するための図である。
【図３１】ブロックStaticInfo()の一例の内部構造を示す略線図である。
【図３２】ブロックDynamicInfo()の一例の内部構造を示す略線図である。
【図３３】ブロックEP_map()の一例の内部構造を示す略線図である。
【図３４】この発明を適用可能なディスク再生装置の一例の構成を概略的に示すブロック図である。
【図３５】ディスク再生装置における動作をより詳細に説明するための機能ブロック図である。
【図３６】この発明の実施の一形態によるファイル"PLAYLIST.DAT"の一例のシンタクスを示す略線図である。
【図３７】フィールドUOP_mask_modeが表す値の意味を例示する略線図である。
【図３８】ムービープレーヤ内でユーザオペレーション制限機能を実現するための一例の機能ブロック図である。
【図３９】コマンドフィルタテーブルの一例の作成手順を示すフローチャートである。
【図４０】ユーザオペレーションマスクモード「１」に対応する一例のコマンドフィルタテーブルを示す略線図である。
【図４１】ユーザオペレーションマスクモード「２」に対応する一例のコマンドフィルタテーブルを示す略線図である。
【図４２】コマンドフィルタテーブルを用いてユーザオペレーションを制限する一例の処理を示すフローチャートである。
【図４３】従来のＤＶＤビデオ規格によるユーザオペレーション制御を説明するための略線図である。
【符号の説明】
【０２５６】
１０１  ディスク
１１２  ＣＰＵ
１１３  メモリ
１１５  入力インターフェイス
１１６  ビデオデコーダ
１１７  オーディオデコーダ
１１８  ビデオ出力インターフェイス
１１９  オーディオ出力インターフェイス
２０１  オペレーションシステム
２１０  ビデオコンテンツ再生部
２１１  スクリプト制御モジュール
２１２  プレーヤ制御モジュール
２１４  デコード制御モジュール
２１５  バッファ制御モジュール
２１６  ビデオデコーダ制御モジュール
２１７  オーディオデコーダ制御モジュール
２１８  字幕デコーダ制御モジュール
２１９  グラフィクス制御モジュール
２４１  ビデオ出力モジュール
２４２  オーディオ出力モジュール
２５０  不揮発性メモリ制御モジュール
３００  ムービープレーヤ
３０１  ネイティブ実装プラットフォーム
３０２  スクリプトレイヤ
３１０  ユーザ入力
３１１  制御コマンド
３１２  イベント
３１３  メソッド
３２０  データベース
３２１  プレイバックモジュール
３２２  デコーダエンジン
３２３  プロパティ
３２４  リジュームインフォメーション
【図１】
2006059434.tif 000003
【図２】
2006059434.tif 000004
【図３】
2006059434.tif 000005
【図４】
2006059434.tif 000006
【図５】
2006059434.tif 000007
【図６】
2006059434.tif 000008
【図７】
2006059434.tif 000009
【図８】
2006059434.tif 000010
【図９】
2006059434.tif 000011
【図１０】
2006059434.tif 000012
【図１１】
2006059434.tif 000013
【図１２】
2006059434.tif 000014
【図１３】
2006059434.tif 000015
【図１４】
2006059434.tif 000016
【図１５】
2006059434.tif 000017
【図１６】
2006059434.tif 000018
【図１７】
2006059434.tif 000019
【図１８】
2006059434.tif 000020
【図１９】
2006059434.tif 000021
【図２０】
2006059434.tif 000022
【図２１】
2006059434.tif 000023
【図２２】
2006059434.tif 000024
【図２３】
2006059434.tif 000025
【図２４】
2006059434.tif 000026
【図２５】
2006059434.tif 000027
【図２６】
2006059434.tif 000028
【図２７】
2006059434.tif 000029
【図２８】
2006059434.tif 000030
【図２９】
2006059434.tif 000031
【図３０】
2006059434.tif 000032
【図３１】
2006059434.tif 000033
【図３２】
2006059434.tif 000034
【図３３】
2006059434.tif 000035
【図３４】
2006059434.tif 000036
【図３５】
2006059434.tif 000037
【図３６】
2006059434.tif 000038
【図３７】
2006059434.tif 000039
【図３８】
2006059434.tif 000040
【図３９】
2006059434.tif 000041
【図４０】
2006059434.tif 000042
【図４１】
2006059434.tif 000043
【図４２】
2006059434.tif 000044
【図４３】
2006059434.tif 000045