以下、図面を参照しながらこの発明の一実施の形態を説明する。
(アプリケーションの概要)
図1はこの発明のオブジェクト・メタデータを動画像と共に利用することにより実現されるアプリケーション(動画像ハイパーメディア)の画面上の表示例である。図1(a)の100は動画像の再生画面、そして101はマウスカーソルである。動画像の再生画面100で再生される動画像のデータは、ローカルにある動画像データ記録媒体に記録されている。102は動画像中に登場するオブジェクトの領域である。ユーザがオブジェクトの領域内にマウスカーソルを移動させてクリック等によりオブジェクトを選択すると、所定の機能が実行される。例えば図1(b)では、ローカルおよび/またはネットワーク上にあるドキュメント(クリックされたオブジェクトに関連した情報)103が表示されている。そのほか、動画像の別の場面にジャンプしたり、別の動画像ファイルが再生されたり、再生モードを変更するなどの機能を実行することができる。
オブジェクトの領域102のデータ及びこの領域がクリック等により指定された場合のクライアント装置の動作データなどをまとめて、オブジェクト・メタデータまたはVclickデータと呼ぶことにする。オブジェクト・メタデータはローカルにある動画像データ記録媒体(光ディスク、ハードディスク、半導体メモリ等)に動画像データと共に記録されていても良いし、ネットワーク上のサーバに蓄積されていてネットワーク経由でクライアントに送られるようにしても良い。以下ではこのアプリケーションがどのように実現されるかについて詳細に説明する。
(システムモデル)
図2はこの発明の一実施の形態に係るストリーミング装置(ネットワーク対応ディスクプレーヤ)の概略構成を示す図である。この図を用いて各構成要素の機能について説明する。
200はクライアント装置、201はサーバ装置、221はサーバ装置201とクライアント装置200を結ぶネットワークである。クライアント装置200は、動画再生エンジン203、Vclickエンジン202、ディスク装置230、ユーザ・インタフェース240、ネットワーク・マネージャ208、ディスク装置マネージャ213、を備えている。また、204から206は動画再生エンジンに含まれる装置、207、209から212、214から218はVclickエンジンに含まれる装置、219と220はサーバ装置201に含まれる装置である。クライアント装置200はディスク装置230にある動画像データの再生や、HTML等のマークアップ言語で書かれたドキュメントの表示を行うことができる。また、ネットワーク上にあるHTML等のドキュメントの表示を行うことも可能である。
クライアント装置200にある動画像データに関連したメタデータがサーバ装置201に存在する場合、クライアント装置200はこのメタデータとディスク装置230にある動画像データとを利用した再生を以下のように行うことが可能である。まず、サーバ装置201はクライアント装置200からの要求によりネットワーク221を介してクライアント装置200にメディアデータM1を送る。クライアント装置200では、送られてきたメディアデータを動画像の再生と同期させて処理することでハイパーメディアなどの付加機能を実現させる(ここでの“同期”とは、物理的に完全なタイミングの一致のみに限定されず、多少のタイミングずれも許容している)。
動画再生エンジン203は、ディスク装置230にある動画像データを再生するためのエンジンであり、204、205、206の装置を有している。231は動画像データ記録媒体であり、具体的にはDVD、ビデオCD、ビデオテープ、ハードディスク、半導体メモリなどである。動画像データ記録媒体231にはデジタルおよび/またはアナログの動画像データが記録されている。動画像データに関連したメタデータは、動画像データと共に動画像データ記録媒体231に記録されている場合もある。205は、動画像再生制御用のコントローラであり、Vclickエンジン202のインタフェース・ハンドラ207から出力される“コントロール”信号に応じて、動画像データ記録媒体231からの映像・音声・副映像データD1の再生を制御することもできるように構成されている。
具体的には、動画像再生コントローラ205は、動画像の再生時に、インタフェース・ハンドラ207からあるイベント(例えばユーザ指示によるメニュー・コールやタイトル・ジャンプ)が発生した際に送信される“コントロール”信号に応じて、インタフェース・ハンドラ207に対して、映像・音声・副映像データD1の再生状況を示す“トリガ”信号を出力することができる。その際(トリガ信号の出力と同時に、あるいはその前後の適当なタイミングで)、動画像再生コントローラ205は、プロパティ情報(例えばプレーヤに設定されている音声言語、副映像字幕言語、再生動作、再生位置、各種時間情報、ディスクの内容等)を示す“ステータス”信号をインタフェース・ハンドラ207に出力することができる。これらの信号の送受信により動画像データ読み出しの開始および停止や、動画像データ中の所望の位置へのアクセスが可能となる。
AVデコーダ206は、動画像データ記録媒体231に記録されている映像データ、音声データ、および副映像データをそれぞれデコードし、デコードされた映像データ(前述の映像データと前述の副映像データを合成したもの)と音声データをそれぞれ出力する機能を持っている。これにより、動画再生エンジン203は、既存のDVDビデオ規格に基づいて製造される通常のDVDビデオプレーヤの再生エンジンと同じ機能を持つようになる。つまり、図2のクライアント装置200は、MPEG−2プログラムストリーム構造の映像、音声等のデータを通常のDVDビデオプレーヤと同様に再生することができ、これにより既存のDVDビデオディスク(従来のDVDビデオ規格に則ったディスク)の再生が可能となる(既存DVDソフトに対する再生互換確保)。
インタフェース・ハンドラ207は、動画像再生エンジン203、ディスク装置マネージャ213、ネットワーク・マネージャ208、メタデータ・マネージャ210、バッファ・マネージャ211、スクリプト・インタプリタ212、メディア・デコーダ216(メタデータ・デコーダ217を含む)、レイアウト・マネージャ215、AVレンダラー218などのモジュール間のインタフェース制御を行う。また、ユーザ操作(マウス、タッチパネル、キーボード等の入力デバイスへの操作)による入力イベントをユーザ・インタフェース240から受け取り、適切なモジュールにイベントを送信する。
インタフェース・ハンドラ207はVclickアクセス・テーブル(図53を参照して後述するVCAに対応)を解釈するアクセステーブル・パーサー、Vclick情報ファイル(図53を参照して後述するVCIに対応)を解釈する情報ファイル・パーサー、Vclickエンジンの管理するプロパティを記録しておくプロパティ・バッファ、Vclickエンジンのシステムクロック、動画再生エンジンにある動画像クロック204のクロックをコピーした動画像クロック等を有している。
ネットワーク・マネージャ208は、ネットワークを介してHTML等のドキュメントや静止画・音声等のデータをバッファ209へ取得する機能を持っており、インターネット接続部222の動作を制御する。ネットワーク・マネージャ212は、ユーザ操作または、メタデータ・マネージャ210からの要求を受けたインタフェース・ハンドラ207より、ネットワークへの接続や非接続の指示が来ると、インターネット接続部222の接続・非接続の切替を行う。また、サーバ装置201とインターネット接続部222とのネットワーク確立時には、制御データやメディアデータ(オブジェクト・メタデータ)の送受信を行う。なお、バッファ209は、具体的には所定のサイズが割り当てられたリングバッファを利用して構成することができ、その詳細については、図87以降を参照して後述する。
クライアント装置200からサーバ装置201へ送信するデータとしては、セッション構築の要求、セッション終了の要求、メディアデータ(オブジェクト・メタデータ)送信の要求、OKやエラーなどのステータス情報などがある。また、クライアント装置の状態情報の送信を行うようにしても良い。一方、サーバ装置201からクライアント装置200へ送信するデータにはメディアデータ(オブジェクト・メタデータ)、OKやエラーなどのステータス情報がある。
ディスク装置マネージャ213は、HTML等のドキュメントや静止画・音声等のデータをバッファ209へ取得する機能及び、動画再生エンジン203へ映像・音声・副映像データD1を送信する機能を持っている。ディスク装置マネージャ213は、メタデータ・マネージャ210からの指示に従ってデータ送信処理を行う。
バッファ209は、ネットワークを介して(ネットワーク・マネージャ経由で)サーバ装置201から送られてきたメディアデータM1を一時的に蓄積する。また、動画像データ記録媒体231にメディアデータM2が記録されていることがあるが、この場合も同様にディスク装置マネージャ経由でバッファ209へメディアデータM2を蓄積することになる。なお、メディアデータにはVclickデータ(オブジェクト・メタデータ)、HTML等のドキュメントやこれに付随する静止画・動画像データなど)が含まれる。
動画像データ記録媒体231にメディアデータM2が記録されている場合は、映像・音声・副映像データD1の再生を開始する前にあらかじめ動画像データ記録媒体231からメディアデータM2を読み出し、バッファ209に記憶しておいてもよい。これは、動画像データ記録媒体231上のメディアデータM2と映像・音声・副映像データD1のデータ記録位置が異なるため、通常の再生を行った場合にはディスクのシーク等が発生してシームレスな再生が保障できなくなってしまうため、これを回避するための手段となる。
以上のように、サーバ装置201からダウンロードしたメディアデータM1も、動画像データ記録媒体231に記録されているメディアデータM2と同様に、バッファ209に記憶させることにより、映像・音声・副映像データD1とメディアデータを同時に読み出して再生することが可能になる。
なお、バッファ209の記憶容量には限界がある。つまり、バッファ209に記憶できるメディアデータM1、M2のデータサイズには限りがある。このため、メタデータ・マネージャ210、および/またはバッファ・マネージャ211の制御(バッファ・コントロール)により、不必要なデータの消去を行うことにしてもよい。
メタデータ・マネージャ210は、バッファ209に蓄積されたメタデータを管理しており、インタフェース・ハンドラ207からの動画像の再生に同期させた適切なタイミング(“動画像クロック”信号)を受けて、該当するタイムスタンプを持つメタデータをバッファ209よりメディア・デコーダ216に転送する。
なお、該当するタイムスタンプを持つメタデータがバッファ209に存在しない場合は、メディア・デコーダ216に転送しなくてもよい。また、メタデータ・マネージャ210は、バッファ209より送出したメタデータのサイズ分、または、任意のサイズのデータをサーバ装置201、またはディスク装置230からバッファ209へ読み込むためのコントロールを行う。具体的な処理としては、メタデータ・マネージャ210は、インタフェース・ハンドラ207経由で、ネットワーク・マネージャ208、またはディスク装置マネージャ213に対し、指定サイズ分のメタデータ取得要求を行う。ネットワーク・マネージャ208、またはディスク装置マネージャ213は、指定サイズ分のメタデータをバッファ209に読み込み、メタデータ取得済の応答をインタフェース・ハンドラ207経由で、メタデータ・マネージャ210へ通知する。
バッファ・マネージャ211は、バッファ209に蓄積されたメタデータ以外のデータ(HTML等のドキュメントやこれに付随する静止画・動画像データなど)の管理をしており、インタフェース・ハンドラ207からの動画像の再生に同期させた適切なタイミング(“動画像クロック”信号)を受けてバッファ209に蓄積されたメタデータ以外のデータをパーサー214やメディア・デコーダ216に送る。バッファ・マネージャ211は、不要になったデータをバッファ209から削除してもよい。
パーサー214は、HTML等のマークアップ言語で書かれたドキュメントの構文解析を行い、スクリプトはスクリプト・インタプリタ212へ、そしてレイアウトに関する情報はレイアウト・マネージャ215に送る。
スクリプト・インタプリタ212は、パーサー214から入力されるスクリプトを解釈し、実行する。スクリプトの実行には、インタフェース・ハンドラ207から入力されるイベントやプロパティの情報を利用することもできる。動画像中のオブジェクトがユーザにより指定された場合には、スクリプトはメタデータ・デコーダ217からスクリプト・インタプリタ212へ入力される。
AVレンダラー218は、映像・音声・テキスト出力を制御する機能をもつ。具体的には、AVレンダラー218は、レイアウト・マネージャ215から出力される“レイアウト・コントロール”信号に応じて、例えば、映像・テキストの表示位置、表示サイズや(これらとともに表示タイミング、表示時間を含むこともある)、音声の大きさ(これらとともに出力タイミング、出力時間を含むこともある)を制御したり、指定されているモニターの種別かつ/または表示する映像の種類に応じて、その映像の画素変換を行う。制御の対象となる映像・音声・テキスト出力は、動画再生エンジン203およびメディア・デコーダ216からの出力である。さらに、AVレンダラー218は、インタフェース・ハンドラ207から出力される“AV出力コントロール”信号に従って、動画再生エンジン203から入力される映像・音声データとメディア・デコーダから入力される映像・音声・テキストデータのミキシング(混合)、スイッチング(切替)を制御する機能をもつ。
レイアウト・マネージャ215は、“レイアウト・コントロール”信号をAVレンダラー218に出力する。“レイアウト・コントロール”信号には、出力する動画・静止画・テキストの大きさやその位置に関する情報(表示開始・終了・継続といった表示時間に関する情報を含む場合もある)が含まれており、どのようなレイアウトで表示すべきかをAVレンダラー218に指示するための情報となっている。また、インタフェース・ハンドラ207から入力されるユーザのクリック等の入力情報に対して、どのオブジェクトが指定されたのかを判定し、指定されたオブジェクトに対して定義された関連情報の表示などの動作命令を取り出すようにメタデータ・デコーダ217に対して指示する。取り出された動作命令は、スクリプト・インタプリタ212に送られ実行される。
メディア・デコーダ216(メタデータデコーダを含む)は、動画・静止画・テキストデータをデコードする。これらデコードされた映像データ、テキスト画像データをメディア・デコーダ216からAVレンダラー218に送信する。また、これらデコードデータは、インタフェース・ハンドラ202からの“メディア・コントロール”信号の指示によりデコードを行うとともに、インタフェース・ハンドラ202からの“タイミング”信号に同期してデコードが行われる。
219はサーバ装置201のメタデータ記録媒体であり、クライアント装置200に送信するメタデータが記録されたハードディスク、光ディスク、半導体メモリ、磁気テープなどである。このメタデータは、動画像データ記録媒体231に記録されている動画像データに関連したメタデータである。このメタデータには、後で説明するオブジェクト・メタデータが含まれている。220はサーバ装置201のネットワーク・マネージャであり、クライアント装置200とネットワーク221を介してデータの送受信を行う。
(EDVDデータ構造とIFOファイル)
図53は、動画像データ記録媒体231としてエンハンスドDVDビデオディスクを用いた際のデータ構造の一例を示す図である。エンハンスドDVDビデオディスクのDVDビデオエリアは、DVDビデオ規格と同じデータ構造のDVDビデオコンテンツ(MPEG−2プログラムストリーム構造を持つ)を格納する。さらに、エンハンスドDVDビデオディスクの他の記録エリアは、ビデオコンテンツの再生をバラエティに富んだものにできるエンハンスド・ナビゲーション(以下ENAVと略記する)コンテンツを格納する。なお、上記“他の記録エリア”は、DVDビデオ規格でも存在が認められている。
ここで、DVDビデオディスクの基本的なデータ構造について説明する。すなわち、DVDビデオディスクの記録エリアは、内周から順にリードインエリア、ボリュームスペース、およびリードアウトエリアを含んでいる。ボリュームスペースは、ボリューム/ファイル構造情報エリア、およびDVDビデオエリア(DVDビデオゾーン)を含み、さらにオプションで他の記録エリア(DVDアザーゾーン)を含むことができる。
上記ボリューム/ファイル構造情報エリアは、UDF(Universal Disk Format)ブリッジ構造のために割り当てられたエリアである。UDFブリッジフォーマットのボリュームは、ISO/IEC13346のパート2に従って認識されるようになっている。このボリュームを認識するスペースは、連続したセクタからなり、図53のボリュームスペースの最初の論理セクタから始まる。その最初の16論理セクタは、ISO9660で規定されるシステム使用のために予約されている。従来のDVDビデオ規格との互換性を確保するには、このような内容のボリューム/ファイル構造情報エリアが必要となる。
また、DVDビデオエリアには、ビデオマネージャVMGという管理情報と、ビデオタイトルセットVTS(VTS#1〜VTS#n)というビデオコンテンツが1つ以上記録されている。VMGは、DVDビデオエリアに存在する全てのVTSに対する管理情報であり、制御データVMGI、VMGメニュー用データVMGM_VOBS(オプション)、およびVMGのバックアップデータを含んでいる。また、各VTSは、そのVTSの制御データVTSI、VTSメニュー用データVTSM_VOBS(オプション)、そのVTS(タイトル)の内容(映画等)のデータVTSTT_VOBS、およびVTSIのバックアップデータを含んでいる。従来のDVDビデオ規格との互換性を確保するには、このような内容のDVDビデオエリアも必要となる。
各タイトル(VTS#1〜VTS#n)の再生選択メニュー等は、VMGを用いてプロバイダ(DVDビデオディスクの制作者)により予め与えられ、特定タイトル(例えばVTS#1)内での再生チャプター選択メニューや記録内容(セル)の再生手順等は、VTSIを用いてプロバイダにより予め与えられている。従って、ディスクの視聴者(DVDビデオプレーヤのユーザ)は、予めプロバイダにより用意されたVMG/VTSIのメニューやVTSI内の再生制御情報(プログラムチェーン情報PGCI)に従ってそのディスクの記録内容を楽しむことができる。しかし、DVDビデオ規格では、視聴者(ユーザ)が、プロバイダが用意したVMG/VTSIと異なる方法でVTSの内容(映画や音楽)を再生することはできない。
プロバイダが用意したVMG/VTSIと異なる方法でVTSの内容(映画や音楽)を再生したり、プロバイダが用意したVMG/VTSIとは異なる内容を付加して再生したりする仕組みのために用意したのが、図53のエンハンスドDVDビデオディスクである。このディスクに含まれるENAVコンテンツは、DVDビデオ規格に基づき製造されたDVDビデオプレーヤではアクセスできない(仮にアクセスできたとしてもその内容を利用できない)が、この発明の一実施の形態のDVDビデオプレーヤ(例えば図2のVclickエンジン202を装備したクライアント装置200)ではアクセスでき、その再生内容を利用できるようになっている。
ENAVコンテンツは、音声、静止画、フォント・テキスト、動画、アニメーション、Vclickデータ等のデータと、これらの再生を制御するための情報であるENAVドキュメント(これはMarkup/Script言語で記述されている)を含むように構成される。この再生を制御するための情報には、ENAVコンテンツ(音声、静止画、フォント・テキスト、動画、アニメーション、Vclick等から構成される)および/またはDVDビデオコンテンツの再生方法(表示方法、再生手順、再生切換手順、再生対象の選択等)がMarkup言語やScript言語を用いて記述されている。例えば、Markup言語として、HTML(Hyper Text Markup Language)/XHTML(eXtensible Hyper Text Markup Language)やSMIL(Synchronized Multimedia Integration Language)、Script言語として、ECMA(European Computer Manufacturers Association)ScriptやJavaScript(R)のようなScript言語などを組み合わせながら用いることができる。
ここで、図53のエンハンスドDVDビデオディスクは、他の記録エリア以外の内容がDVDビデオ規格に従っているので、既に普及しているDVDビデオプレーヤを用いても、DVDビデオエリアに記録されたビデオコンテンツを再生できる(つまり従来のDVDビデオディスクと互換性がある)。他の記録エリアに記録されたENAVコンテンツは従来のDVDビデオプレーヤでは再生できない(あるいは利用できない)が、この発明の一実施の形態に係るDVDビデオプレーヤでは再生でき利用できる。従って、この発明の一実施の形態に係るDVDビデオプレーヤを用いENAVコンテンツを再生すれば、プロバイダが予め用意したVMG/VTSIの内容だけに限定されることなく、よりバラエティに富んだビデオ再生が可能になる。
特に、図53に示すように、ENAVコンテンツはVclickデータVCDを含み、このVclickデータVCDは、Vclick情報ファイル(Vclickインフォ)VCI、Vclickアクセス・テーブルVCA、VclickストリームVCS、Vclick情報ファイル・バックアップ(Vclickインフォ・バックアップ)VCIB、Vclickアクセス・テーブル・バックアップVCABを含んで構成される。
Vclick情報ファイルVCIは、後述のVclickストリームVCSが、DVDビデオコンテンツのどの箇所(例えば、DVDビデオコンテンツのタイトル全体、チャプター全体、あるいはその一部であるプログラムチェーン、プログラム、またはセル等)に付加しているかを表すデータである。Vclickアクセス・テーブルVCAは、後述のVclickストリームVCS毎に存在し、VclickストリームVCSにアクセスするためのテーブルである。VclickストリームVCSは、動画像中のオブジェクトの位置情報やオブジェクトがクリックされた際の動作記述等のデータを含むストリームである。Vclick情報ファイル・バックアップVCIBは、前述のVclick情報ファイルVCIのバックアップであり、Vclick情報ファイルVCIと常に同じ内容のものである。また、Vclickアクセス・テーブル・バックアップVCABは、前述のVclickアクセス・テーブルVCAのバックアップであり、Vclickアクセス・テーブルVCAと常に同じ内容のものである。
図53の例ではVclickデータVCDはエンハンスドDVDビデオディスク上に記録されている。しかし、前述したようにVclickデータVCDはネットワーク上のサーバ装置201に置かれている場合もある。すなわち、VclickデータVCDは、ディスク内および/またはディスク外に用意しておくことができる。そして、ディスク外にVclickデータVCDを用意しておけば、VclickデータVCDが記録されていない旧タイプのディスク(過去に市販されたビデオディスクなど)のコンテンツ再生においても、あるいはTV放送を録画したコンテンツの再生においても、VclickデータVCDを利用した再生が可能になる(それらのコンテンツに対応してVclickデータVCDが作成されている場合)。
さらには、ビデオ記録可能な媒体(例えばDVD−Rディスク、DVD−RWディスク、DVD−RAMディスク、ハードディスクなど)と、ビデオレコーダ(例えばDVD−VRレコーダ、DVD−SRレコーダ、HD−DVDレコーダ、HDDレコーダなど)を用いてユーザが独自のディスクを作成した場合において、このディスクにVclickデータVCDを含むENAVコンテンツを記録するか、このディスク以外のパーソナルコンピュータのデータストレージなどにVclickデータVCDを用意しこのパーソナルコンピュータとレコーダを接続すれば、DVD−ROMビデオ+図2のENAVプレーヤと同様なメタデータ再生を楽しむことができる。
図54は、上述した、Vclick情報ファイルVCI、Vclickアクセス・テーブルVCA、VclickストリームVCS、Vclick情報ファイル・バックアップVCIB、Vclickアクセス・テーブル・バックアップVCABを構成するためのファイルの例を示す。Vclick情報ファイルVCIを構成するファイル(VCKINDEX.IFO)は、例えばXML(Extensible Markup Language)言語で記述されており、VclickストリームVCSと、そのVclickストリームVCSが付加されるDVDビデオコンテンツの位置情報(VTS番号、タイトル番号、PGC番号等)が記述されている。Vclickアクセス・テーブルVCAは、一つ以上のファイルから構成されており(VCKSTR01.IFO〜VCKSTR99.IFO、または任意のファイル・ネーム)、一つのアクセス・テーブルVCA・ファイルは、一つのVclickストリームVCSに対応する。
Vclickストリーム・ファイルは、VclickストリームVCSの位置情報(ファイルの先頭からの相対バイト・サイズ)と時間情報(対応する動画像のタイムスタンプもしくはファイルの先頭からの相対時間情報…図80、図81参照)の関係が記述されており、与えられた時間に対応する再生開始位置を検索することができる。
VclickストリームVCSは、一つ以上のファイルから構成されており(VCKSTR01.VCK〜VCKSTR99.VCK、または任意のファイル・ネーム)、前述のVclick情報ファイルVCIの記述を参照して、付加されるDVDビデオコンテンツとともに再生できる。また、複数の属性が存在する場合(例えば日本語用VclickデータVCDと英語用VclickデータVCD等)は、属性毎に、異なるVclickストリームVCS(つまり異なるファイル)として構成することも可能である(例えば図83参照)。また、それぞれの属性をマルチプレクスして、一つのVclickストリームVCS(つまり一つのファイル)として構成することも可能である(例えば図5参照)。
なお、前者(異なる属性を複数のVclickストリームVCSで構成…後述する図83のような例など)の場合は、再生装置(プレーヤ)にいったん記憶させるときのバッファ(図2の例では209)の占有容量を少なくすることができる。また、後者(異なる属性を一つのVclickストリームVCSで構成…前述した図5のような例など)の場合は、属性を切り替えるとき、ファイルを切り替えずに、一つのファイルを再生したままでよいので、切り替える速度を速くすることができる。
ここで、VclickストリームVCSとVclickアクセス・テーブルVCAの関連付けは、例えばファイル名にて行うことが可能である。前述の例においては、一つのVclickストリームVCS(VCKSTRXX.VCK、XXは01〜99)に対して、一つのVclickアクセス・テーブルVCA(VCKSTRXX.IFO、XXは01〜99)を割り当てており、拡張子以外のファイル名を同じものにすることにより、VclickストリームVCSとVclickアクセス・テーブルVCAの関連付けが識別可能になる。
これ以外にも、Vclick情報ファイルVCIにて、VclickストリームVCSとVclickアクセス・テーブルVCAの関連付けを記述することにより(具体的には、VCI内においてVCSの記述とVCAの記述を並行に記載することにより)、VclickストリームVCSとVclickアクセス・テーブルVCAの関連付けが識別可能になる。
Vclick情報ファイル・バックアップVCIBはVCKINDEX.BUPファイルにて構成されており、前述のVclick情報ファイルVCI(VCKINDEX.IFO)と全く同じ内容のものである。VCKINDEX.IFOが何らかの理由により(ディスクの傷や汚れ等により)、読み込みが不可能な場合、このVCKINDEX.BUPを代わりに読み込むことにより、所望の手続きを行うことができる。Vclickアクセス・テーブル・バックアップVCABはVCKSTR01.BUP〜VCKSTR99.BUPファイルにて構成されており、前述のVclickアクセス・テーブルVCA(VCKSTR01.IFO〜VCKSTR99.IFO)と全く同じ内容のものである。一つのVclickアクセス・テーブルVCA(VCKSTRXX.IFO、XXは01〜99)に対して、一つのVclickアクセス・テーブル・バックアップVCAB(VCKSTRXX.BUP、XXは01〜99)を割り当てており、拡張子以外のファイル名を同じものにすることにより、Vclickアクセス・テーブルVCAとVclickアクセス・テーブル・バックアップVCABの関連付けが識別可能になる。VCKSTRXX.IFOが何らかの理由により(ディスクの傷や汚れ等により)、読み込みが不可能な場合、このVCKSTRXX.BUPを代わりに読み込むことにより、所望の手続きを行うことができる。
図55〜図57は、Vclick情報ファイルVCIの構成例を示す。Vclick情報ファイルVCIは、XML言語で構成されており、最初に、XML言語であることが宣言され、次にXML言語で構成されたVclick情報ファイルVCIであることが宣言される。更に、<vclickinfo>タグを用いてVclick情報ファイルVCIの内容を記述する。
<vclickinfo>の領域は、0もしくは1つの<vmg>タグと、0もしくは1つ以上の<vts>タグから構成される。<vmg>の領域は、DVDビデオにおけるVMG空間を表しており、<vmg>の領域に記述されたVclickストリームは、VMG空間のDVDビデオデータに付加されることを表している。また、<vts>の領域は、DVDビデオにおけるVTS空間を表しており、<vts>タグ内にnum属性を付加することによりVTS空間の番号を指定している。例えば、<vts num="n">はn番目のVTS空間を示している。<vts num="n">の領域に記述されたVclickストリームは、n番目のVTS空間を構成するDVDビデオデータに付加されることを表している。
<vmg>の領域は、0もしくは1つ以上の<vmgm>タグから構成される。<vmgm>の領域は、VMG空間におけるVMGメニュー・ドメインを表しており、<vmgm>タグ内にnum属性を付加することによりVMGメニュー・ドメインの番号を指定している。例えば、<vmgm num="n">はn番目のVMGメニュー・ドメインを示している。<vmgm num="n">の領域に記述されたVclickストリームは、n番目のVMGメニュー・ドメインを構成するDVDビデオデータに付加されることを表している。
更に、<vmgm>の領域は、0もしくは1つ以上の<pgc>タグから構成される。<pgc>の領域は、VMGメニュー・ドメインにおけるPGC(Program Chain)を表しており、<pgc>タグ内にnum属性を付加することによりPGCの番号を指定している。例えば、<pmg num="n">はn番目のPGCを示している。<pgc num="n">の領域に記述されたVclickストリームは、n番目のPGCを構成するDVDビデオデータに付加されることを表している。
次に、<vts>の領域は、0もしくは1つ以上の<vts_tt>タグと、0もしくは1つ以上の<vtsm>タグとから構成される。<vts_tt>の領域は、VTS空間におけるタイトル・ドメインを表しており、<vts_tt>タグ内にnum属性を付加することによりタイトル・ドメインの番号を指定している。例えば、<vts_tt num="n">はn番目のタイトル・ドメインを示している。<vts_tt num="n">の領域に記述されたVclickストリームは、n番目のタイトル・ドメインを構成するDVDビデオデータに付加されることを表している。
また、<vtsm>の領域は、VTS空間におけるVTSメニュー・ドメインを表しており、<vtsm>タグ内にnum属性を付加することによりVTSメニュー・ドメインの番号を指定している。例えば、<vtsm num="n">はn番目のVTSメニュー・ドメインを示している。<vtsm="n">の領域に記述されたVclickストリームは、n番目のVTSメニュー・ドメインを構成するDVDビデオデータに付加されることを表している。
更に、<vts_tt>の領域もしくは<vtsm>の領域は、0もしくは1つ以上の<pgc>タグから構成される。<pgc>の領域は、タイトル・ドメインもしくVTSメニュー・ドメインにおけるPGC(Program Chain)を表しており、<pgc>タグ内にnum属性を付加することによりPGCの番号を指定している。例えば、<pmg num="n">はn番目のPGCを示している。<pgc num="n">の領域に記述されたVclickストリームは、n番目のPGCを構成するDVDビデオデータに付加されることを表している。
図55〜図57の例においては、6つのVclickストリームが、DVDビデオコンテンツに付加されている。例えば、最初の(一番目の)Vclickストリームは、<vmg>での<vmgm num="1">における<pgc num="1">において、<object>タグを用いて指定されている。これは、VMG空間における、1番目のVMGメニュー・ドメインにおける、1番目のPGCに対して、<object>タグにより指定されたVclickストリームが付加されることを示している。
<object>タグでは、"data"属性を用いて、Vclickストリームの存在する場所を示す。例えば、この発明の一実施の形態においては、"file://dvdrom:/dvd_enav/vclick1.vck"においてVclickストリームの存在する場所が指定されている。ここで、"file://dvdrom:/"はVclickストリームがエンハンスドDVDディスク内に存在することを示し、更に、"dvd_enav/"はディスク中の"DVD_ENAV"ディレクトリの下に存在することを示し、"vclick1.vck"はVclickストリームのファイル名を示している。また、Vclickストリームを記述する<object>タグと、Vclickアクセス・テーブルVCAを記述する<object>タグを併記することにより、Vclickストリームに対応したVclickアクセス・テーブルVCAの情報を記述することができる。<object>タグ内において"data"属性を用い、Vclickアクセス・テーブルVCAの存在する場所を示す。例えば、この発明の一実施の形態においては、"file://dvdrom:/dvd_enav/vclick1.ifo"においてVclickアクセス・テーブルVCAの存在する場所が指定されている。ここで、"file://dvdrom:/"はVclickアクセス・テーブルVCAがエンハンスドDVDディスク内に存在することを示し、更に、"dvd_enav/"はディスク中の"DVD_ENAV"ディレクトリの下に存在することを示し、"vclick1.ifo"はVclickアクセス・テーブルVCAのファイル名を示している。
次の(ニ番目の)Vclickストリームは、<vmg>における、<vmgm num="n">において、<object>タグを用いて指定されている。これは、VMG空間における、1番目のVMGメニュー・ドメイン全体に対して、<object>タグにより指定されたVclickストリームが付加されることを示している。<object>タグでは、"data"属性を用いて、Vclickストリームの存在する場所を示す。例えば、この発明の一実施の形態においては、"http//www.vclick.com/dvd_enav/vclick2.vck"においてVclickストリームの存在する場所が指定されている。ここで、"http//www.vclick.com/dvd_enav/"はVclickストリームが外部のサーバ(図2の201など)内に存在することを示し、"vclick2.vck"はVclickストリームのファイル名を示している。
Vclickアクセス・テーブルVCAに関しても同様に、<object>タグ内において"data"属性を用い、Vclickアクセス・テーブルVCAの存在する場所を示す。例えば、この発明の一実施の形態においては、"http//www.vclick.com/dvd_enav/vclick2.ifo"においてVclickアクセス・テーブルVCAの存在する場所が指定されている。ここで、"http//www.vclick.com/dvd_enav/"はVclickアクセス・テーブルVCAが外部のサーバ(201)内に存在することを示し、"vclick2.ifo"はVclickアクセス・テーブルVCAのファイル名を示している。
三番目のVclickストリームは、<vts num="1">における、<vts_tt num="1">における、<pgc num="1">において、<object>タグを用いて指定されている。これは、1番目のVTS空間における、1番目のタイトル・ドメインにおける、1番目のPGCに対して、<object>タグにより指定されたVclickストリームが付加されることを示している。<object>タグでは、"data"属性を用いて、Vclickストリームの存在する場所を示す。例えば、この発明の一実施の形態においては、"file://dvdrom:/dvd_enav/vclick3.vck"においてVclickストリームの存在する場所が指定されている。ここで、"file://dvdrom:/dvd_enav/"は、Vclickストリームがディスク中の"DVD_ENAV"ディレクトリの下に存在することを示し、"vclick3.vck"はVclickストリームのファイル名を示している。
四番目のVclickストリームは、<vts num="1">における、<vts_tt num="n">において、<object>タグを用いて指定されている。これは、1番目のVTS空間における、n番目のタイトル・ドメインにおいて、<object>タグにより指定されたVclickストリームが付加されることを示している。<object>タグでは、"data"属性を用いて、Vclickストリームの存在する場所を示す。例えば、この発明の一実施の形態においては、"file://dvdrom:/dvd_enav/vclick4.vck"においてVclickストリームの存在する場所が指定されている。ここで、"file://dvdrom:/dvd_enav/"は、Vclickストリームがディスク中の"DVD_ENAV"ディレクトリの下に存在することを示し、"vclick4.vck"はVclickストリームのファイル名を示している。
五番目のVclickストリームは、<vts num="1">における、<vtsm num="1">において、<object>タグを用いて指定されている。これは、1番目のVTS空間における、1番目のVTSメニュー・ドメインにおいて、<object>タグにより指定されたVclickストリームが付加されることを示している。<object>タグでは、"data"属性を用いて、Vclickストリームの存在する場所を示す。例えば、この発明の一実施の形態においては、"file://dvdrom:/dvd_enav/vclick5.vck"においてVclickストリームの存在する場所が指定されている。ここで、"file://dvdrom:/dvd_enav/"は、Vclickストリームがディスク中の"DVD_ENAV"ディレクトリの下に存在することを示し、"vclick5.vck"はVclickストリームのファイル名を示している。
六番目のVclickストリームは、<vts num="1">における、<vtsm num="1">における、<pgc num="1">において、<object>タグを用いて指定されている。これは、1番目のVTS空間における、1番目のVTSメニュー・ドメインにおける、1番目のPGCに対して、<object>タグにより指定されたVclickストリームが付加されることを示している。<object>タグでは、"data"属性を用いて、Vclickストリームの存在する場所を示す。例えば、この発明の一実施の形態においては、"file://dvdrom:/dvd_enav/vclick6.vck"においてVclickストリームの存在する場所が指定されている。ここで、"file://dvdrom:/dvd_enav/"は、Vclickストリームがディスク中の"DVD_ENAV"ディレクトリの下に存在することを示し、"vclick6.vck"はVclickストリームのファイル名を示している。
図58は、前述のVclickインフォVCIの記述例にて記述されたVclickストリームVCSとDVDビデオコンテンツの関係を例示する図である。この例では、1番目のVTS空間(VTS#1)における、1番目のVTSメニュー・ドメイン(VTSメニュー#1)での1番目のPGC(PGC#1)に対して、前述の五番目のVclickストリームVCS(Vclick#5)と、六番目のVclickストリームVCS(Vclick#6)が付加されている。これは、DVDビデオコンテンツに対して、二つのVclickストリームVCS(Vclick#5とVclick#6)が付加されていることを表している。これらのストリーム(Vclick#5とVclick#6)は、例えば、ユーザによって、あるいはコンテンツ・プロバイダ(コンテンツ・オーサ)によって、切り替えることが可能となっている。
ユーザが切り替える場合は、VclickストリームVCSを切り替えるための“Vclick切り替えボタン”が図2の装置に付属するリモートコントローラに備え付けてあり、これにより二つもしくはそれ以上のVclickストリームを自由に変更することができる。図示しないが、このリモートコントローラは、一般的なDVDビデオプレーヤのリモートコントローラキーの他に“Vclick切り替えボタン”を持ち、このボタンが押されると、プレーヤはVclickストリーム切り替えモードに入る。そして、このモードにおいて“Vclick切り替えボタン”をクリックするか、あるいはこのモードにおいて図示しないリモートコントローラの上下または左右カーソルキーを押すことで、Vclickストリームのストリーム番号の指定を順次切り替えることができる。あるいは、このモードにおいて、図示しないリモートコントローラのテンキーから、ダイレクトにVclickストリームVCSのストリーム番号を指定する方法も採用できる。
一方、VclickストリームVCSをコンテンツ・プロバイダが変更する場合は、Markup言語にVclick切り替えのためのコマンド(記述形式は例えば"changeVclick()")が記述されており、コンテンツ・プロバイダがMarkup言語にて指定したタイミングでこの切り替えコマンドを発行することで、二つもしくはそれ以上のVclickストリームVCSを自由に変更できる。
図59〜図65は、Vclick情報ファイルVCIの別の記述例(7つ)を示す。最初の例(図59)においては、一つのPGC(PGC#1)に対し、ディスク上に記録されている二つのVclickストリーム(Vclickストリーム#1、Vclickストリーム#2)とサーバ(図2の201など)上に記録されている一つのVclickストリーム(Vclickストリーム#3)が付加されている。これは前述のように、ユーザのリモートコントローラ操作によってVclickストリーム#1、Vclickストリーム#2、Vclickストリーム#3を自由に切り替えさせることもでき、コンテンツ・プロバイダによって(例えば前述した"changeVclick()"コマンドを用いて)切り替えさせることもできる。
上記の例においてコンテンツ・プロバイダによって切り替えさせる場合、例えば、再生装置(図2の200など)にVclickストリーム#3の再生が指示されたが再生装置(200)が外部サーバ(201)につながっていない場合、あるいは、つながってはいるがVclickストリーム#3が外部サーバから取得できない場合は、取得できないVclickストリーム#3に代わって、ティスク上のVclickストリーム#1またはVclickストリーム#2に代替させることができる。また、<object>タグ内の"priority”属性は、それぞれのストリームを切り替える際の順番を示しており、例えば、前述のユーザ(“Vclick切り替えボタン”を用いる)やコンテンツ・プロバイダ(Vclick切り替えのためのコマンド"changeVclick()"を用いる)がVclickストリームを順次切り替える際に、"priority”属性の順序を参照することで、Vclickストリーム#1→Vclickストリーム#2→Vclickストリーム#3→Vclickストリーム#1→...というように切り替えることができる。
また、コンテンツ・プロバイダは、Markup言語において、Vclick切り替えのためのコマンド(記述形式は例えば"changeVclick(priority)")を用いることにより、コンテンツ・プロバイダがMarkup言語にて指定したタイミングでコマンドを発行し、任意のVclickストリームを選択することもできる。例えば、"changeVclick(2)"コマンドを発行した場合は、"priority属性"が"2"であるVclickストリーム#2が再生される。
次の例(図60)においては、一つのPGC(PGC#2)に対し、ディスク上に記録されている二つのVclickストリーム(Vclickストリーム#1、Vclickストリーム#2)が付加されている。ここで、<object>タグ内の"audio"属性は、オーディオ・ストリーム番号に対応しており、この例においては、DVDビデオコンテンツのオーディオ・ストリーム#1が再生されている場合は、Vclickストリーム#1(Vclick1.vck)を同期再生し、オーディオ・ストリーム#2が再生されている場合は、Vclickストリーム#2(Vclick2.vck)を同期再生することを示す。
例えば、ビデオコンテンツのオーディオ・ストリーム#1が日本語音声、オーディオ・ストリーム#2が英語音声にて構成されている場合、図68に示すようにVclickストリーム#1を日本語にて(つまりVclickオブジェクトの説明の表示が日本語で記述されている、またはVclickオブジェクトがクリックさせたあとのアクセス先が日本語で構成されているサイトやページ)構成し、図67に示すようにVclickストリーム#2を英語にて(つまりVclickオブジェクトの説明の表示が英語で記述されている、またはVclickオブジェクトがクリックさせたあとのアクセス先が日本語で構成されているサイトやページ)を構成することにより、DVDビデオコンテンツの音声の言語とVclickストリームの言語を合わせることができる。実際には、再生装置は、再生装置内のシステムパラメータであるSPRM(1)(オーディオ・ストリーム番号)を参照し、それに対応したVclickストリームを、このVclick情報ファイルVCIから検索して再生する。
上記は一例にすぎず、例えばDVDビデオコンテンツが英語音声である場合に日本語のMarkupページが同期再生されるように構成してもよい(図67の左側と図68の右側の組み合わせなど)。逆に、DVDビデオコンテンツが日本語音声である場合に英語のMarkupページが同期再生されるように構成してもよい。これは、Vclickオブジェクトのアクション属性(図20)のScriptフィールドに記述する情報を何にするかで自在に実現できる。
三番目の例(図61)においては、一つのPGC(PGC#3)に対し、ディスク上に記録されている三つのVclickストリーム(Vclickストリーム#1、Vclickストリーム#2、Vclickストリーム#3)が付加されている。ここで、<object>タグ内の"subpic"属性は、サブピクチャ・ストリーム番号(副映像番号)に対応しており、この例においては、DVDビデオコンテンツのサブピクチャ・ストリーム#1が再生されている場合は、Vclickストリーム#1(Vclick1.vck)を同期再生し、サブピクチャ・ストリーム#2が再生されている場合は、Vclickストリーム#2(Vclick2.vck)を同期再生し、サブピクチャ・ストリーム#3が再生されている場合は、Vclickストリーム#3(Vclick3.vck)を同期再生することを示す。
例えば、ビデオコンテンツのサブピクチャ・ストリーム#1が日本語字幕、サブピクチャ・ストリーム#3が英語字幕にて構成されている場合、図70に示すように、Vclickストリーム#1を日本語にて(つまりVclickオブジェクトの説明の表示が日本語で記述されている、またはVclickオブジェクトがクリックさせたあとのアクセス先が日本語で構成されているサイトやページ)構成し、図69に示すように、Vclickストリーム#2を英語にて(つまりVclickオブジェクトの説明の表示が英語で記述されている、またはVclickオブジェクトがクリックさせたあとのアクセス先が日本語で構成されているサイトやページ)を構成することにより、DVDビデオコンテンツの字幕の言語とVclickストリームの言語を合わせることができる。実際には、再生装置は、再生装置内のシステムパラメータであるSPRM(2)(サブピクチャ・ストリーム番号)を参照し、それに対応したVclickストリームを、このVclick情報ファイルVCIから検索して再生する。なお、上記は一例にすぎず、例えばユーザの希望に応じて、DVDビデオコンテンツが英語字幕(または日本語字幕)である場合に日本語解説(または英語解説)のMarkupページが同期再生されるように構成することもできる。
四番目の例(図62)においては、一つのPGC(PGC#4)に対し、ディスク上に記録されている二つのVclickストリーム(Vclickストリーム#1、Vclickストリーム#2)が付加されている。ここで、<object>タグ内の"angle"属性は、アングル番号に対応しており、この例においては、ビデオコンテンツのアングル#1が再生されている場合は、Vclickストリーム#1(Vclick1.vck)を同期再生し(図71)、アングル#3が再生されている場合は、Vclickストリーム#2(Vclick2.vck)を同期再生し(図72)、アングル#2が再生されている場合は、Vclickストリームを再生しないことを示す。通常、アングルが異なる場合は、人物などのVclickオブジェクトを付加する対象の位置が異なるため、アングルごとにVclickストリームを構成する必要がある(後述する図83がこの場合の一例に対応)。あるいは、前述した図5のように、一つのVclickストリーム506にそれぞれのVclickオブジェクト・データをマルチプレクスしてもよい。実際には、再生装置(図2のクライアント装置200に対応)は、再生装置内のシステムパラメータであるSPRM(3)(アングル番号)を参照し、それに対応したVclickストリームVCSを、このVclick情報ファイルVCIから検索して再生する。
五番目の例(図63)においては、一つのPGC(PGC#5)に対し、ディスク上に記録されている三つのVclickストリーム(Vclickストリーム#1、Vclickストリーム#2、Vclickストリーム#3)が付加されている。ここで、<object>タグ内の"aspect"属性は、(初期)表示アスペクト比に対応しており、<object>タグ内の"display"属性は、(現在)表示モードに対応している。
この例においては、DVDビデオコンテンツ自体が"16:9"のアスペクト比で構成されており、"16:9"のアスペクト比をもつTVモニターには"ワイド(wide)"出力を、"4:3"のアスペクト比をもつTVモニターには"レターボックス(lb)"または"パンスキャン(ps)"出力が許されている例を示す。これに対して、Vclickストリームは、(初期)表示アスペクト比が"16:9"かつ(現在)表示モードが"wide"のときはVclickストリーム#1を同期再生し(図73)、(初期)表示アスペクト比が"4:3"かつ(現在)表示モードが"lb"のときはVclickストリーム#2を同期再生し(図74)、(初期)表示アスペクト比が"4:3"かつ(現在)表示モードが"ps(パンスキャン)"のときはVclickストリーム#3を同期再生する(図75)。
ここで、例えば"16:9"のアスペクト比で表示されていたときに人物の真横に表示されていたVclickオブジェクトの吹き出しを"4:3"のアスペクト比の"レターボックス"に表示する場合は、画面の上下(図74では図示上下のハッチング部分)に表示してもよい。あるいは、この吹き出しを"4:3"のアスペクト比の"パンスキャン"で表示する場合は、画面の左右が切れてしまうが、吹き出しおよびオブジェクトの位置を、図75に例示されるように、表示が可能な位置に変更(移動)してもよい。
また、画面の構成に応じて、吹き出し文字の表示エリアが画面からはみ出さないように吹き出しのサイズを小さくしたり、または吹き出し文字の表示エリアサイズとオブジェクトサイズの表示バランスが適正となるように吹き出し文字の表示エリアを大きくしたり、吹き出し文字の表示エリア内の文字のサイズを小さくまたは大きくして吹き出しエリア内の文字の表示バランスを適正化してもよい。ここで、吹き出し内の文字サイズを小さくしたときは、文字周辺と文字との間のコントラストを大きくとり、文字周辺に対して文字が目立つように文字の色を工夫し(例えば白地に赤文字とか黒地に黄文字)、および/またはフォントを太字に変更するなどして、文字の視認性が悪くならないように工夫するとよい。
これにより、DVDビデオコンテンツの表示状態に応じたVclickオブジェクトの表示を行うことが可能になる。実際には、再生装置は、再生装置内のシステムパラメータであるSPRM(14)(ビデオ用のプレーヤ構成)における“初期表示アスペクト比”と“現在表示モード”を参照し、それに対応したVclickストリームVCSを、Vclick情報ファイルVCIから検索して再生する。
六番目の例(図64)においては、一つのPGC(PGC#6)に対し、ディスク上に記録されている一つのVclickストリーム(Vclickストリーム#1)が付加されている。前例と同様に、<object>タグ内の"aspect"属性は、(初期)表示アスペクト比に対応しており、<object>タグ内の"display"属性は、(現在)表示モードに対応している。この例においては、DVDビデオコンテンツ自体が"4:3"のアスペクト比で構成されており、"4:3"のアスペクト比をもつTVモニターには"通常"モードで出力する場合に適用される。
最後に、前述の機能を組み合わせて用いることが可能であることを示す例(図65)を示す。一つのPGC(PGC#7)に対し、ディスク上に記録されている四つのVclickストリーム(Vclickストリーム#1、Vclickストリーム#2、Vclickストリーム#3、Vclickストリーム#4)が付加されている。この例においては、DVDビデオコンテンツのオーディオ・ストリーム#1が再生され、かつサブピクチャ・ストリーム#1が再生され、かつアングル#1が再生されている場合はVclickストリーム#1(Vclick1.vck)を同期再生し、オーディオ・ストリーム#1が再生され、かつサブピクチャ・ストリーム#2が再生され、かつアングル#1が再生されている場合はVclickストリーム#2(Vclick2.vck)を同期再生し、アングル#2が再生されている場合はVclickストリーム#3(Vclick3.vck)を同期再生し、オーディオ・ストリーム#2が再生され、かつサブピクチャ・ストリーム#2が再生されている場合はVclickストリーム#4(Vclick4.vck)を同期再生する。
以上、7つの例(図59〜図65)に関して、DVDビデオコンテンツのPGCとその属性に対する付加されるVclickストリームの関係を図66に示す。図66の例においては、大きくいってPGC毎にVclickストリームVCSが割り当てられており、その割り当て方が、各PGCの属性等に応じて細分化されている。
すなわち、PGC#1ではそのPGC全体に対してVclick#1〜#3のストリームが割り当てられている(図59に対応)。この例では、Vclick#1のストリームを例えば英語ページとし、Vclick#2のストリームを例えば日本語ページとし、Vclick#3のストリームを例えば中国語ページとし、これらのストリームを適宜切り替え選択できるように構成できる(ビデオコンテンツのPGCの再生区間に応じてメタデータのストリーム選択を行う構成)。
図66のPGC#2では、そのオーディオ#1に対してVclick#1のストリームが割り当てられ、そのオーディオ#2に対してVclick#2のストリームが割り当てられている(図60に対応)。PGC#3ではそのサブビクチャ(字幕などの副映像)#1に対してVclick#1のストリームが割り当てられ、そのサブビクチャ#2に対してVclick#2のストリームが割り当てられ、そのサブビクチャ#3に対してVclick#3のストリームが割り当てられている(図61に対応)。PGC#4ではそのアングル#1に対してVclick#1のストリームが割り当てられ、そのアングル#2に対してはVclickストリームが割り当てられておらず、そのアングル#3に対してVclick#2のストリームが割り当てられている(図62に対応)。PGC#5では、表示のアスペクト比が16:9のワイドならVclick#1のストリームが割り当てられ、表示のアスペクト比が4:3のパンスキャンならVclick#2のストリームが割り当てられ、表示のアスペクト比が4:3のレターボックスならVclick#3のストリームが割り当てられている(図63に対応)。PGC#6では、表示のアスペクト比が通常の4:3ならVclick#4のストリームが割り当てられるようになっている(図64に対応)。
図66のPGC#7では、アングル#1のオーディオ#1(例えば英語音声)にリンクしたサブピクチャ#1(例えば英語字幕)に対してはVclick#1のストリーム(例えば英語ページ)が割り当てられ、アングル#1のオーディオ#1(英語音声)にリンクしたサブピクチャ#2(例えば日本語字幕)に対してはVclick#2のストリーム(例えば日本語ページ)が割り当てられている。また、アングル#1のオーディオ#2(例えば日本語音声)にリンクしたサブピクチャ#1(英語字幕)に対してはVclickストリームは割り当てられておらず、アングル#1のオーディオ#2(日本語音声)にリンクしたサブピクチャ#2(日本語字幕)に対してはVclick#4のストリーム(例えば他の日本語ページ)が割り当てられている。さらに、アングル#2のオーディオ#1(英語音声)にリンクしたサブピクチャ#1(英語字幕)とサブピクチャ#2(日本語字幕)に対してはVclick#3のストリーム(例えば中国語ページ)が割り当てられていおり、アングル#2のオーディオ#2(日本語音声)にリンクしたサブピクチャ#1(英語字幕)とサブピクチャ#2(日本語字幕)に対してはVclick#3のストリーム(中国語ページ)が割り当てられている。そのうち、アングル#2のオーディオ#2(日本語音声)にリンクしたサブピクチャ#2(日本語字幕)に対してはVclick#3のストリーム(中国語ページ)の他にVclick#4のストリーム(他の日本語ページ)がさらに割り当てられている。アングル#2のオーディオ#2(日本語音声)にリンクしたサブピクチャ#2(日本語字幕)に対しては、Vclick#3のストリーム(中国語ページ)またはVclick#4のストリーム(他の日本語ページ)を切り替え選択できる。
なお、Vclickストリームと同期再生する対象がDVDビデオコンテンツである場合は、Vclickストリーム切り替えのタイミングは、大きくはDVDビデオのタイトル(VTS)単位とすることができ、それより小さな切り替えタイミングの単位としてはパートオブタイトル(チャプタ)単位とすることができる。また、より小さな切り替えタイミングの単位としてはプログラムチェーン(PGC)単位とすることができ、さらに小さくはプログラム(PG)単位とすることができ、もっと小さくはセル単位とすることができる。
この発明の一実施の形態に係るVclickストリームがDVD−VR、DVD−SR、HD−DVDレコーダなどの録再系に適用される場合は、ユーザ定義のPGC(プレイリスト)を単位として、あるいはPGCを構成するプログラム内の一部にマーキングされるエントリポイントを単位として、Vclickストリームを切り替えるようにしてもよい。
この発明の一実施の形態における再生装置(エンハンスドDVDプレーヤ)は、DVDビデオコンテンツを再生する前に、Vclick情報ファイルVCIをあらかじめ読み込むことにより、もしくは適宜参照することにより、DVDビデオコンテンツの再生状態に応じて、逐次付加するVclickストリーム・ファイルを変化させることが可能となる。これにより、Vclickストリームを構成するにあたり自由度を持つことができ、オーサリングの負担を軽減することが可能となる。
また、一つのVclickコンテンツのファイル数(ストリーム数)を増やし、各々のファイル・サイズを小さくすることにより、再生装置に必要とされるVclickストリームVCSを格納するための領域(図2の装置ではバッファ209)を小さくすることも可能になる。
また、ファイル・サイズは大きくなるが、ファイル数を減らす(つまり一つのストリームが複数のVclickデータを含む構成にする)ことにより、DVDビデオコンテンツの再生状態が変化した場合、スムーズにVclickデータを切り替えることが可能となる(バッファリングされているVclickデータの情報量が大きいため)。
(データ構造の概略とアクセス・テーブル)
VclickストリームVCSには、動画像データ記録媒体231に記録されている動画像に登場する人・物などのオブジェクトの領域に関するデータと、クライアント装置200におけるオブジェクトの表示方法とユーザがそれらオブジェクトを指定したときにクライアント装置が取るべき動作のデータが含まれている。以下では、Vclickデータの構造とその構成要素の概要について説明する。
まず動画像に登場する人・物などのオブジェクトの領域に関するデータであるオブジェクト領域データについて説明する。
図3はオブジェクト領域データの構造を説明する図である。300は、1つのオブジェクトの領域が描く軌跡をX(映像の水平方向の座標値)、Y(映像の垂直方向の座標値)、T(映像の時刻)の3次元座標上に表現したものである。オブジェクト領域はあらかじめ決められた範囲内の時間(例えば0.5秒から1.0秒の間や、2秒から5秒の間、など)ごとにオブジェクト領域データに変換される。図3では1つのオブジェクト領域300が301から305の5つのオブジェクト領域データに変換されており、これらオブジェクト領域データは別々のVclickアクセスユニット(AU)(後述)に格納される。このときの変換方法としては、例えばMPEG−4の形状符号化やMPEG−7の時空間領域記述子などを使うことができる。MPEG―4形状符号化やMPEG−7時空間記述子はオブジェクト領域の時間的な相関を利用してデータ量を削減する方式であるため、途中からデータが復号できないことや、ある時刻のデータが欠落した場合に周囲の時刻のデータも復号できなくなるという問題がある。図3のように長い時間連続して動画像中に登場しているオブジェクトの領域を時間方向に分割してデータ化することにより、ランダムアクセスを容易にし、一部のデータの欠落の影響を軽減することができる。各Vclick_AUは動画像の中である特定の時間区間でのみ有効である。このVclick_AUが有効な時間区間をVclick_AUの有効期間(lifetime)と呼ぶ。
図4は、この発明の一実施の形態で用いるVclickストリームVCS中の、独立にアクセス可能な1単位(Vclick_AU)の構造を表したものである。400はオブジェクト領域データである。図3で説明したとおり、ここには1つのオブジェクト領域のある連続した時間区間における軌跡がデータ化されている。このオブジェクト領域が記述されている時間区間をそのVclick_AUのアクティブ期間(active time)と呼ぶ。通常はVclick_AUのアクティブ期間はそのVclick_AUの有効期間と同一である。しかし、Vclick_AUのアクティブ期間をそのVclick_AUの有効期間の一部とすることも可能である。
401はVclick_AUのヘッダである。ヘッダ401には、Vclick_AUを識別するためのIDと、そのAUのデータサイズを特定するデータが含まれる。402はタイムスタンプであり、このVclick_AUの有効期間開始のタイムスタンプを示している。通常はVclick_AUのアクティブ期間と有効期間が同一であるため、オブジェクト領域データ400に記述されたオブジェクト領域が動画像のどの時刻に相当するかも示している。図3に示されるように、オブジェクト領域はある時間範囲に及んでいるため、通常はタイムスタンプ402にはオブジェクト領域の先頭の時刻を記述しておく。もちろんオブジェクト領域データに記述されたオブジェクト領域の時間間隔やオブジェクト領域の末尾の時刻も記述するようにしても良い。403はオブジェクト属性情報であり、例えばオブジェクトの名称、オブジェクトが指定された際の動作記述、オブジェクトの表示属性などが含まれる。これらVclick_AU内のデータに関しては、後でより詳細に説明する。Vclick_AUは、サーバ装置(図2の201など)においては送信しやすいようにタイムスタンプ順に並べて記録しておくほうが良い。
図5は複数のAUをタイムスタンプ順に並べてVclickストリームVCSを生成する方法を説明する図である。この図では、カメラアングル1とカメラアングル2の2つのカメラアングルがあり、クライアント装置でカメラアングルを切り替えると表示される動画像も切り替えられることを想定している。また、選択可能な言語モードには日本語と英語の2種類があり、それぞれの言語に対して別々のVclickデータが用意されている場合を想定している。
図5に於いて、カメラアングル1かつ日本語用のVclick_AUは500、501、502であり、カメラアングル2かつ日本語用のVclick_AUのAUは503である。そして英語用のVclick_AUは504と505である。500から505はそれぞれ動画像中の一つのオブジェクトに対応したデータである。すなわち、図3と図4で説明したとおり一つのオブジェクトに関するメタデータは一つまたは複数のVclick_AUで構成されている(図5では1つの長方形が1つのAUを表している)。この図の横軸は動画像中の時間に対応しており、オブジェクトの登場時間に対応させて500から505を表示してある。
各Vclick_AUの時間的な区切りは任意でもよいが、図5に例示されるように、全てのオブジェクトに対してVclick_AUの区切りを揃えておくと、データの管理が容易になる。506は、これらのVclick_AU(500から705)から構成されたVclickストリームVCSである。VclickストリームVCSは、ヘッダ部507に続いてVclick_AUをタイムスタンプ順にならべることにより構成される。
選択しているカメラアングルはユーザが視聴中に変更する可能性が高いため、このようにVclickストリームVCSに異なるカメラアングルのVclick_AUを多重化してVclickストリームVCSを作った方が良い。これは、クライアント装置200側で高速な表示切り替えが可能だからである。例えば、Vclickデータがサーバ装置201に置かれているとき、複数のカメラアングルのVclick_AUを含むVclickストリームVCSをそのままクライアント装置200に送信すれば、クライアント装置200では視聴中のカメラアングルに対応したVclick_AUが常に届いているため、瞬時にカメラアングルの切り替えができる。もちろん、クライアント装置200の設定情報をサーバ装置201に送り、必要なVclick_AUのみをVclickストリームVCSから選択して送信することも可能であるが、この場合はサーバ(201)との通信を行う必要があるため多少処理が遅くなる(もっとも、通信に光ファイバなどの高速手段を用いればこの処理遅延の問題は解決できる)。
一方、動画像タイトル、DVDビデオのPGC、動画像のアスペクト比、視聴地域等の属性は変更の頻度が低いため、別々のVclickストリームVCSとして作成しておいた方がクライアント装置200の処理が軽くなり、ネットワークの負荷も軽くなる。複数のVclickストリームVCSがある場合にどのVclickストリームVCSを選択すべきかは、すでに説明したようにVclick情報ファイルVCIを参照して決定できる。
次に、別のVclick_AUの選択方法について説明する。クライアント装置200がサーバ装置201から、Vclickストリーム(VCS)506を取得し、クライアント装置200の側で必要なアクセスユニット(AU)のみを利用する場合を考える。この場合、必要なVclick_AUを識別する為のIDが各AUに振られていても良い。これをフィルタIDと呼ぶ。
必要とされるアクセスユニット(AU)の条件は、例えば、Vclick情報ファイルVCI中に次のように記述される:
<pgc num="7">
//audio/subpictureストリームとangleによるVclickストリームVCSの定義
<object data="file://dvdrom:/dvd_enav/vclick1.vck" audio="1" subpic="1" angle="1"/>
<object data="file://dvdrom:/dvd_enav/vclick1.vck" audio="3" subpic="2" angle="1"/>
</pgc>
ここでは、一つのVclickストリームVCSに対して、二種類のフィルタリング条件が記述されている。これは、クライアントのシステムパラメータの設定に応じて、同一のVclickストリームVCSから異なる属性を有する二種類のVclick_AUが選択可能である事を示している。
なお、Vclick情報ファイルVCIは、動画像データ記録媒体(例えば図53のエンハンスドDVDビデオディスク)上に存在しても良いし、サーバ装置201からネットワーク経由でクライアント装置200にダウンロードされるように構成しても良い。Vclick情報ファイルVCIは、通常は、動画像データ記録媒体(エンハンスドDVDビデオディスク)やサーバ装置(201)など、VclickストリームVCSと同じところから供給される。
アクセスユニット(AU)が前述したフィルタIDを持たない場合、メタデータ・マネージャ210が必要なVclick_AUを識別するには、AUのタイムスタンプや属性などを見て、与えられた条件に適合するAUを選択する。
フィルタIDを用いる例を、上記の記述に即して説明する。audioはオーディオ・ストリーム番号を表しているが、これを4ビットの数値で表現する。同様に、副映像番号subpicとアングル番号angleに、それぞれ4ビットの数値を割り当てる。これにより、三つのパラメータの状態を12ビットの数値で表現する事ができる。例えば、audio="3"、subpic="2"かつangle="1"のパラメータは、16進表記で0x321と表現される。これをフィルタIDとして用いる。即ち、Vclick_AUは12ビットのフィルタIDをVclick_AUヘッダ内に有する(図14のfiltering_id参照)。これは、AUを選別する独立なパラメータ値のそれぞれに数字を割り当て、当該数字の組み合わせによりフィルタIDを定める方法である。なお、フィルタIDはVclick_AUヘッダ以外の場所に記述しても良い。
クライアント装置200のフィルタリング動作を図44に示す。まず、メタデータ・マネージャ210がインタフェース・ハンドラ207から、動画像クロック値TとフィルタID xとを受け取る(ステップS4401)。データ・マネージャ210は、バッファ209に格納されているVclickストリームVCSの中から、有効期間が動画像クロック値Tを含むようなVclick_AUを全て見出す(ステップS4402)。このようなAUを見出すには、Vclickアクセス・テーブルVCAを用いて、図45及び図46のような手続きを用いることができる。メタデータ・マネージャ210は、上記Vclick_AUヘッダを調べ、xと同一のフィルタIDを有するAUのみをメディア・デコーダ216に送る(ステップS4403〜S4405)。
以上の手続きによって、バッファ209からメタデータ・デコーダ217に送られるVclick_AUは次の性質を有する:
i)これら全てのAUは同一の有効期間を有するが、動画像クロックTは当該有効期間に含まれる;
ii)これら全てのAUは、同一のフィルタID xを有する。
上記i)及びii)の条件を満足する、当該オブジェクト・メタデータ・ストリーム中のAUは、これらのAU以外には存在しない。なお、あるフィルタIDで特定のAUを識別し選択するということは、選択されたAUを含むVclickストリームを選択することにもなる。一方、再生すべきVclickストリームの選択は、VclickインフォVCIファイルを参照することによっても可能である(後述する図82のステップS8207の処理参照)。
上記では、フィルタIDは、パラメータに割り当てられたの組み合わせによって定義されていたが、Vclick情報ファイルVCIの中でフィルタIDを直接指定するようにしても良い。例えば、IFOファイル中には次のように定められている:
<pgc num="5">
<param angle="1">
<object data="file://dvdrom:/dvd_enav/vclick1.vck" filter_id="3"/>
</param>
<param angle="3">
<object data="file://dvdrom:/dvd_enav/vclick2.vck" filter_id="4"/>
</param>
<param aspect="16:9" display="wide">
<object data="file://dvdrom:/dvd_enav/vclick1.vck" filter_id="2"/>
</param>
</pgc>
上記の記述は、各パラメータの指定によって、VclickストリームVCSとフィルタIDの値が定まる事を示している。フィルタIDによるVclick_AUの選別と、バッファ209からメディア・デコーダ217へのAUの転送は、図44の手続きと同じである。上記Vclick情報ファイルVCIの指定に基づき、プレーヤのアングル番号が3である場合、"vclick2.vck"というファイルに格納されているVclickストリームVCSから、フィルタIDの値が4に等しいVclick_AUのみが、バッファ209からメディア・デコーダ217に送られる。
サーバ装置201にVclickデータがある場合、動画像が先頭から再生される場合にはサーバ装置201はVclickストリームVCSを先頭から順にクライアント装置に配信すればよい。しかし、ランダムアクセスが生じた場合にはVclickストリームVCSの途中からデータを配信する必要がある。このとき、VclickストリームVCS中の所望の位置に高速にアクセスするためには、Vclickアクセス・テーブルVCAが必要となる。
図6はVclickアクセス・テーブルVCAの例である。このテーブルはあらかじめ作成され、サーバ装置201内に記録されている。Vclick情報ファイルVCIと同じファイルにしておくことも可能である。600はタイムスタンプの配列であり、動画像のタイムスタンプが列挙されている。601はアクセスポイントの配列であり、動画像のタイムスタンプに対応したVclickストリームVCSの先頭からのオフセット値が列挙されている。動画像のランダムアクセス先のタイムスタンプに対応した値がVclickアクセス・テーブルVCAにない場合は、近い値のタイムスタンプのアクセスポイントを参照し、そのアクセスポイント周辺でVclickストリームVCS内のタイムスタンプを参照しながら送信開始場所を探索する。もしくは、Vclickアクセス・テーブルVCAから動画像のランダムアクセス先のタイムスタンプよりも手前の時刻のタイムスタンプを探索し、そのタイムスタンプに対応したアクセスポイントからVclickストリームVCSを送信する。
上記Vclickアクセス・テーブルVCAは、サーバ装置201が格納しており、サーバ装置201がクライアントからのランダムアクセスに応じて、送信すべきVclickデータの検索の便宜に資する為のものである。しかし、サーバ装置201が格納しているVclickアクセス・テーブルVCAをクライアント装置200にダウンロードして、VclickストリームVCSの検索をクライアント装置200に行わせるようにしても良い。特に、VclickストリームVCSが、サーバ装置201からクライアント装置200に一括ダウンロードされる場合、Vclickアクセス・テーブルVCAも又、サーバ装置201からクライアント装置200に一括ダウンロードされる。
一方、VclickストリームVCSがDVDなどの動画像記録媒体に記録されて提供される場合も考えられる。この場合も、再生コンテンツのランダムアクセスに応じて、利用すべきデータを検索するために、クライアント装置200がVclickアクセス・テーブルVCAを利用する事は有効である。この場合Vclickアクセス・テーブルVCAは、VclickストリームVCS同様、動画像記録媒体に記録されており、クライアント装置200は当該動画像記録媒体から当該Vclickアクセス・テーブルVCAを内部の主記憶等に読み出して利用する。
動画像のランダム再生などに伴って発生する、VclickストリームVCSのランダム再生は、メタデータ・デコーダ217によって処理される。図6のVclickアクセス・テーブルVCAにおいて、タイムスタンプtimeは、動画像記録媒体に記録された動画像のタイムスタンプの形式を有する時刻情報である。例えば、動画像がMPEG−2で圧縮されて記録されているなら、timeはMPEG−2のPTS(Presentation Time Stamp)の形式をとる。更に、動画像が、例えばDVDのように、タイトルやプログラム・チェーンなどのナビゲーション構造を持つ場合、それらを表現するパラメータ(タイトル番号TTN、ビデオタイトルセットタイトル番号VTS_TTN、タイトルプログラムチェーン番号TT_PGCN、パートオブタイトル番号PTTNなど)がtimeの形式に含まれる。
タイムスタンプの値の集合には、何らかの自然な全順序関係が定義されているものと仮定する。例えば、上記のPTSについては時刻としての自然な順序関係が導入可能である。DVDのパラメータを含むタイムスタンプについても、DVDの自然な再生順序に従って、順序関係を導入する事が可能である。VclickストリームVCSは次の条件を満たしている:
i)VclickストリームVCS中のVclick_AUはタイムスタンプの昇順に並べられている。このとき、Vclick_AUの有効期間を次のように決定する:あるAUのタイムスタンプ値をtとおく。VclickストリームVCSにおいて当該AU以降にあるAUのタイムスタンプ値uについて、上記条件によりu >= tなる関係が成立する。このようなuの中でu≠tである最小の値をt’とおく。時刻tを開始時刻、時刻t’を終了時刻とする期間を、当該AUの有効期間とする。ただし、当該AU以降にu > tなるタイムスタンプ値uを有するAUが存在しない場合、当該AUの有効期間の終了時刻は、動画像の終了時刻に一致するものとする。
ii)Vclick_AUのアクティブ期間は、先に定義したとおり、Vclick_AU含まれるオブジェクト領域データに記述されているオブジェクト領域の時間範囲である。
ここで、VclickストリームVCSについて、アクティブ期間に関する次の制約条件をおく:
Vclick_AUのアクティブ期間は、当該AUの有効期間に含まれている。
上記i)、ii)の制約条件を満たすVclickストリームVCSは、以下に示すような良い性質を有する:
第一には、下に述べるように、VclickストリームVCSのランダムアクセスを高速に行う事が可能である。第二には、VclickストリームVCSの再生を行う際のバッファ処理を単純化する事が可能となる。バッファ(図2の209など)にはVclickストリームVCSがVclick_AU単位で格納され、大きいタイムスタンプを持つAUから消去されて行く。もし、上記二つの仮定が無ければ、有効なAUをバッファ上に保持しておく為に、大きなバッファと複雑なバッファ管理が必要になる。以後、VclickストリームVCSは、上記i)及びii)の二条件を満たすと仮定して説明を行う。
図6のVclickアクセス・テーブルVCAにおいて、アクセスポイントoffsetはVclickストリームVCS上の位置を指し示す。例えば、VclickストリームVCSはファイルであり、offsetは当該ファイルのファイル・ポインタの値を指し示す。タイムスタンプtimeと組になっているアクセスポイントoffsetの関係は次のようになっている:
i)offsetの示す位置は、あるVclick_AUの先頭位置である;
ii)当該AUがもつタイムスタンプの値は、timeの値以下である;
iii)当該AUより一つ前にあるAUがもつタイムスタンプの値は、timeより真に小さい。
Vclickアクセス・テーブルVCAにおけるtimeの並びの間隔は任意で良いし、均等である必要もない。しかし、検索等の便宜を考慮して、均等にとっても良い。
Vclickアクセス・テーブルVCAを用いた具体的な検索手順を図45及び図46に示す。VclickストリームVCSがサーバ装置201からバッファ209に予めダウンロードされる場合、Vclickアクセス・テーブルVCAも同様にサーバ装置201からダウンロードされ、バッファ209内に格納される。VclickストリームVCSとVclickアクセス・テーブルVCAとが共に動画像データ記録媒体231に蓄積されている場合も同様に、VclickストリームVCSとVclickアクセス・テーブルVCAはディスク装置230からロードされ、バッファ209内に格納される。
メタデータ・マネージャ210は、インタフェース・ハンドラ207から動画像クロックTを受け取ると(ステップS4501)、バッファ209に格納されているVclickアクセス・テーブルVCAのtimeを検索し、t’ <= Tなる最大のtime t’を求める(ステップS4502)。ここでの検索のアルゴリズムとして、例えばバイナリ・サーチを用いて、高速に検索を行う事ができる。Vclickアクセス・テーブルVCAにおいて、得られたtime t’と組になっているoffset値を変数hに代入する(ステップS4503)。メタデータ・マネージャ210は、バッファ209に格納されているVclickストリームVCSの先頭からhバイト目に存在するAUxを見出し(ステップS4504)、xのタイムスタンプ値を変数tに代入する(ステップS4505)。上記条件より、tはt’以下であるから、t <= Tが成立する。
メタデータ・マネージャ210は、xから始めて、当該VclickストリームVCS中のVclick_AUを順次調べて行き、次のAUを改めてxとおく(ステップS4506)。続いて、変数h’にxのオフセット値を代入し(ステップS4507)、xのタイムスタンプ値を変数uに代入する(ステップS4508)。u > Tであれば(ステップS4509イエス)、バッファ209に対して、VclickストリームVCSのオフセットhからh’までを、メディア・デコーダ216に送るよう指示を出す(ステップS4510〜S4511)。一方、u <= Tであって(ステップS4509ノー)、かつu > tであれば(ステップS4601イエス)、tの値をuで更新する(即ちt = uとする)(ステップS4602)。そして、変数hの値をh’で更新する(即ちh= h’とする)(ステップS4603)。
VclickストリームVCS上に、次のAUが存在すれば(即ち、xが最後のAUでなければ)(ステップS4604イエス)、次のAUを改めてxとおき、上記手続きを繰り返す(図45のステップS4506へ戻る)。ここで、もし、xが当該VclickストリームVCSの最後のVclick_AUであれば(ステップS4604ノー)、バッファ209に対して、VclickストリームVCSのオフセットhから最後までを、メディア・デコーダ216に送るよう指示を出す(ステップS4605〜S4606)。
以上の手続きによって、バッファ209からメディア・デコーダ216に送られるVclick_AUは、明らかに次の性質を有する:
i)全てのVclick_AUは同一の有効期間を有する。しかも、動画像クロックTは当該有効期間に含まれる。
ii)上記i)の条件を満足する、当該VclickストリームVCS中のVclick_AUは、これらのAU以外には存在しない。
VclickストリームVCSにおけるVclick_AUの有効期間は、当該AUのアクティブ期間を含んでいるが、これらは常に一致しているとは限らない。実際、図47に示すような状況が考えられる。それぞれオブジェクト1及びオブジェクト2を記述するAU#1及びAU#2の有効期間は、AU#3の有効期間の開始時刻(t476)までである。しかし、各AUのアクティブ期間は有効期間に一致していない(図47の例ではt476≠t474≠t472)。
いま、AUが#1、#2、#3の順に並んだVclickストリームVCSを考える。そして、図47の例において、動画像クロックTが指定されたとする。この場合、図45及び図46に示すような手続きによれば、当該VclickストリームVCSからAU#1とAU#2とがメディア・デコーダ216に送られる。メディア・デコーダ216は受け取ったVclick_AUのアクティブ期間を認識できるため、この処理によりランダムアクセスが実現可能である。しかし実際には、オブジェクトが存在しない時刻T(有効期間内ではあるが非アクティブ期間であるt474〜t476の間)についても、バッファ209からのデータ転送と、メディア・デコーダ216におけるデコード処理が発生するため、クライアント装置200におけるハードウエアの計算効率が低下するという問題がある。この問題は、NULL_AUと呼ぶ特別なVclick_AUを導入することで解決できる。
NULL_AUの構造を図48に示す。NULL_AUは、通常のVclick_AUが必ず持つオブジェクト領域データを持たない。すなわち、NULL_AUは有効期間のみを持ち、アクティブ期間は存在しない。NULL_AUのヘッダには当該AUがNULL_AUである事を示すフラグが含まれている。NULL_AUは、VclickストリームVCSにおいて、オブジェクト(図49の例ではオブジェクト2)のアクティブ期間が存在しない時間範囲(図49の例ではt494〜t496)に挿入する事ができる。
メタデータ・マネージャ210は、ヘッダ(図48の“Vclick AU Header”)に含まれる図示しないフラグから当該AUが“NULL_AU”であることを検知すると、このNULL_AUをメディア・デコーダ216に送出しない。このようなNULL_AUを導入した場合、図47は例えば図49の様に変化する。図49のAU#4がNULL_AUである。この場合、VclickストリームVCSおいて、Vclick_AUは例えばAU#1'、#2'、#4、#3の順に並んでいる。NULL_AUを含むVclickストリームVCSに関して、図45及び図46に相当するメタデータ・マネージャ210の動作を図50、図51及び図52に示す。
すなわち、メタデータ・マネージャ210がインターフェース・ハンドラ207から動画像クロックTを受け取り(ステップS5001)、 t’ <= Tである最大のt’を求め(ステップS5002)、 t’と組になるoffset値を変数hに代入する(ステップS5003)。続いて、オブジェクトメタデータストリームにおいてオフセット値hにあるアクセスユニットAUをxとおき(ステップS5004)、xのタイムスタンプ値を変数tに格納する(ステップS5005)。ここで、xがNULL_AUであれば(ステップS5006イエス)、xの次のAUを改めてxとおいて(ステップS5007)、ステップS5006に戻る。ここで、xがNULL_AUでなければ(ステップS5006ノー)、xのオフセット値を変数h’に格納する(ステップS5101)。この後の処理(図51のステップS5102〜S5105および図52のステップS5201〜S5206)は、図45のステップS4508〜S454511および図46のステップS4601〜S4606と同様な処理となる。
次にサーバ装置・クライアント装置間のプロトコルについて説明する。Vclickデータをサーバ装置201からクライアント装置200に送信するときに使用するプロトコルとしては、例えばRTP(Real-time Transport Protocol)がある。RTPはUDP/IPとの相性が良く、リアルタイム性を重視しているためにパケットが欠落する可能性がある。RTPを用いると、VclickストリームVCSは送信用パケット(RTPパケット)に分割されて送信される。ここではVclickストリームVCSの送信用パケットへの格納方法例を説明する。
図7と図8はそれぞれVclick_AUのデータサイズが小さい場合と大きい場合の送信用パケット構成方法を説明する図である。図7の700はVclickストリームVCSである。送信用パケットはパケットヘッダー701とペイロードからなる。パケットヘッダー701にはパケットのシリアル番号、送信時刻、発信元の特定情報などが含まれている。ペイロードは送信データを格納するデータ領域である。ペイロードにVclick_AU700から順に取り出したVclick_AU(702)を納めていく。ペイロードに次のVclick_AUが入りきらない場合には残りの部分にパディングデータ703を挿入する。パディングデータはデータのサイズを合わせるためのダミーデータであり、例えば0値の連続である。ペイロードのサイズを1つまたは複数のVclick_AUサイズと等しくできる場合にはパディングデータは不要である。
一方、図8はペイロードに1つのVclick_AUが収まりきらない場合の送信用パケットの構成方法である。Vclick_AU(800)はまず1番目の送信用パケットのペイロードに入りきる部分(802)のみペイロードに格納される。残りのデータ(804)は第2の送信用パケットのペイロードに格納され、ペイロードの格納サイズに余りが生じていればパディングデータ805で埋める。一つのVclick_AUを3つ以上のパケットに分割する場合の方法も同様である。
RTP以外のプロトコルとしては、HTTP(Hypertext Transport Protocol)またはHTTPSを用いることができる。HTTPはTCP/IPとの相性が良く、この場合欠落したデータは再送されるため信頼性の高いデータ通信が行えるが、ネットワークのスループットが低い場合にはデータの遅延が生じるおそれがある。HTTPではデータの欠落がないため、VclickストリームVCSをどのようにパケットに分割して格納するかを特に考慮する必要はない。
(再生手順(ネットワーク))
次に、VclickストリームVCSがサーバ装置201上にある場合における再生処理の手順について説明する。
図37はユーザが再生開始を指示してから再生が開始されるまでの再生開始処理手順を表す流れ図である。まずステップS3700でユーザにより再生開始の指示が入力される。この入力は、インタフェース・ハンドラ207が受け取り、動画像再生コントローラ205に動画像再生準備の命令を出す。次に、分岐処理ステップS3701として、すでにサーバ装置201とのセッションが構築されているかどうかの判定を行う。セッションがまだ構築されていなければステップS3702に、すでに構築されていればステップS3703に処理を移す。ステップS3702ではサーバとクライアント間のセッションを構築する処理を行う。
図9はサーバ・クライアント間の通信プロトコルとしてRTP用いた場合の、セッション構築からセッション切断までの通信手順例である。セッションの始めにサーバ・クライアント間でネゴシエーションを行う必要があるが、RTPの場合にはRTSP(Real Time Streaming Protocol)が用いられることが多い。ただし、RTSPの通信には高信頼性が要求されるため、RTSPはTCP/IPで、RTPはUDP/IPで通信を行うのが好ましい。まず、セッションを構築するために、クライアント装置(図2の例では200)はストリーミングされるVclickデータに関する情報提供をサーバ装置(図2の例では201)に要求する(RTSPのDESCRIBEメソッド)。
ここで、再生される動画像に対応したデータを配信するサーバ(201)のアドレスは、例えば動画像データ記録媒体にアドレス情報を記録しておくなどの方法であらかじめクライアント(200)に知らされているものとする。サーバ装置201はこの応答としてVclickデータの情報をクライアント装置200に送る。具体的には、セッションのプロトコルバージョン、セッション所有者、セッション名、接続情報、セッションの時間情報、メタデータ名、メタデータ属性といった情報がクライアント装置に送られる。これらの情報記述方法としては、例えばSDP(Session Description Protocol)を使用する。次にクライアント装置200はサーバ装置201にセッションの構築を要求する(RTSPのSETUPメソッド)。サーバ装置201はストリーミングの準備を整え、セッションIDをクライアント装置200に返す。ここまでの処理がRTPを用いる場合のステップS3702の処理である。
RTPではなくHTTPが使われている場合の通信手順は、例えば図10のように行う。まず、HTTPより下位の階層であるTCPでのセッション構築(3 way handshake)を行う。ここで、先ほどと同様に、再生される動画像に対応したデータを配信するサーバ(201)のアドレスはあらかじめクライアント(200)に知らされているものとする。この後、クライアント装置200の状態(例えば、製造国、言語、各種パラメータの選択状態など)をSDP等を用いてサーバ装置201に送る処理が行われるようにしてもよい。ここまでがHTTPの場合のステップS3702の処理となる。
ステップS3703では、サーバ装置201とクライアント装置200間のセッションが構築された状態で、サーバ(201)にVclickデータ送信を要求する処理を行う。これはインタフェース・ハンドラ207がネットワーク・マネージャ208に指示を出し、ネットワーク・マネージャ208がサーバ(201)に要求を出すことにより行われる。RTPの場合には、ネットワーク・マネージャ208はRTSPのPLAYメソッドをサーバに送ることでVclickデータ送信を要求する。サーバ装置は、これまでにクライアントから受け取った情報とサーバ装置内にあるVclickインフォVCIを参照して送信すべきVclickストリームVCSを特定する。さらに、Vclickデータ送信要求に含まれる再生開始位置のタイムスタンプ情報とサーバ装置内にあるVclickアクセス・テーブルVCAを用いてVclickストリームVCS中の送信開始位置を特定し、VclickストリームVCSをパケット化してRTPによりクライアント装置に送る。
一方HTTPの場合には、ネットワーク・マネージャ208はHTTPのGETメソッドを送信することによりVclickデータ送信を要求する。この要求には、動画像の再生開始位置のタイムスタンプの情報を含めても良い。サーバ装置は、RTPの時と同様の方法により送信すべきVclickストリームVCSと、このストリーム中の送信開始位置を特定し、VclickストリームVCSをHTTPによりクライアント装置に送る。
次に、ステップS3704では、サーバから送られてくるVclickストリームVCSをバッファ209にバッファリングする処理を行う。これは、VclickストリームVCSの再生中にサーバからのVclickストリーム送信が間に合わず、バッファ209が空になってしまうことをさけるために行われる。メタデータ・マネージャ210からバッファに十分なVclickストリームVCSが蓄積されたことがインタフェース・ハンドラに通知されると、ステップS3705の処理に移る。ステップS3705では、インタフェース・ハンドラがコントローラ205に動画像の再生開始命令を出し、さらにメタデータ・マネージャ210にVclickストリームVCSのメタデータ・デコーダ217への送出を開始するよう命令を出す。
図38は図37とは別の再生開始処理の手順を説明する流れ図である。図37の流れ図で説明される処理では、ネットワークの状態やサーバ、クライアント装置の処理能力により、ステップS3704でのVclickストリームVCSを一定量バッファリングする処理に時間がかかる場合がある。すなわち、ユーザが再生を指示してから実際に再生が始まるまでに時間がかかってしまうことがある。図38の処理手順では、ステップS3800でユーザが再生開始を指示すると、次のステップS3801で直ちに動画像の再生が開始される。すなわち、ユーザからの再生開始指示を受けたインタフェース・ハンドラ207は、直ちにコントローラ205に再生開始命令を出す。これにより、ユーザは再生を指示してから動画像を視聴するまで待たされることがなくなる。次の処理ステップS3802からステップS3805までは、図37のステップS3701からステップS3704と同一の処理である。
ステップS3806では、再生中の動画像に同期させてVclickストリームVCSを復号する処理を行う。すなわち、インタフェース・ハンドラ207は、メタデータ・マネージャ210からバッファ209に一定量のVclickストリームVCSが蓄積された通知を受け取ると、メタデータ・マネージャ210にVclickストリームVCSのメタデータ・デコーダ217への送出開始を命令する。メタデータ・マネージャ210はインタフェース・ハンドラから再生中の動画像のタイムスタンプを受け取り、バッファに蓄積されたデータからこのタイムスタンプに該当するVclick_AUを特定し、メタデータ・デコーダ217へ送出する。
図38の処理手順では、ユーザは再生を指示してから動画像を視聴するまで待たされることがないが、再生開始直後はVclickストリームVCSの復号が行われないため、オブジェクトに関する表示が行われなかったり、オブジェクトをクリックしても何も動作が起こらないなどの問題点がある。
上記の問題は、動画像再生開始後VclickストリームVCSの復号が開始されたあとは解消する。従い、再生開始後一定量のVCS(Vclick_AU)の復号が済むまでの期間を、ユーザが苛立たない程度に短縮すればこの問題は実用上解決できる。そこで、クライアント装置200とサーバ装置201を高速回線を介して常時接続状態としておき、ディスク装置231にVclickを利用するDVDディスクが装填されたとき(あるいは装填されたディスクから再生するタイトルが選択されたあと)、ステップS3802〜S3803の処理を予めバックグラウンドで実行しておくことが考えられる。この場合、ステップS3800のユーザ指示があると、直ぐにステップS3801のDVD再生が開始されると同時に、ステップS3802〜S3803の処理を飛ばして、高速回線を介してサーバから直ぐにVclickストリームVCSのバッファ取り込み(ステップS3804〜S3805)が始まる。この取り込み量が一定量(例えば図87の例に合わせるなら12kバイト)に達したら、直ちにVclickストリームVCS(その中の最初のVclick_AU)の復号が始まる(ステップS3806)。
動画像の再生中、クライアント装置200のネットワーク・マネージャ208はサーバ装置201から次々に送られてくるVclickストリームVCSを受信し、バッファ209に蓄積する。蓄積されたオブジェクト・メタデータは適切なタイミングでメタデータ・デコーダ217に送られる。すなわち、メタデータ・マネージャ208は、メタデータ・マネージャ210から送られてくる再生中の動画像のタイムスタンプを参照し、バッファ209に蓄積されているデータからそのタイムスタンプに対応したVclick_AUを特定し、この特定されたオブジェクト・メタデータをAU単位でメタデータ・デコーダ217に送る。メタデータ・デコーダ217は受け取ったデータを復号する。ただし、クライアント装置200が現在選択しているカメラアングルと異なるカメラアングル用のデータの復号は行わないようにしても良い。また、再生中の動画像のタイムスタンプに対応したVclick_AUがすでにメタデータ・デコーダ217にあることがわかっている場合には、オブジェクト・メタデータをメタデータ・デコーダ217に送らないようにしても良い。
再生中の動画像のタイムスタンプは逐次インタフェース・ハンドラ207からメタデータ・デコーダ217に送られている。メタデータ・デコーダ217ではこのタイムスタンプに同期させてVclick_AUを復号し、必要なデータをAVレンダラー218に送る。例えば、Vclick_AUに記述された属性情報によりオブジェクト領域の表示が指示されている場合には、オブジェクト領域のマスク画像や輪郭線などを生成し、再生中の動画像のタイムスタンプに合わせてA/Vレンダラー218に送る。また、メタデータ・デコーダ217は再生中の動画像のタイムスタンプとVclick_AUの有効時刻とを比較し、不要になった古いオブジェクト・メタデータを判定してそのデータを削除する。
図39は再生停止処理の手順を説明する流れ図である。ステップS3900では、ユーザにより動画像の再生中に再生停止が指示される。次にステップS3901で動画像再生を停止する処理が行われる。これはインタフェース・ハンドラ207がコントローラ205に停止命令を出すことにより行われる。また、同時にインタフェース・ハンドラはメタデータ・マネージャ210にオブジェト・メタデータのメタデータ・デコーダ217への送出停止を命令する。
ステップS3902はサーバ(201)とのセッションを切断する処理である。RTPを用いている場合には、図9に示すようにRTSPのTEARDOWNメソッドをサーバに送る。TEARDOWNのメッセージを受け取ったサーバ装置201はデータ送信を中止してセッションを終了し、クライアント装置200に確認メッセージを送る。この処理により、セッションに使用していたセッションIDが無効となる。一方、HTTPを用いている場合には、図10に示されているようにHTTPのCloseメソッドをサーバ(201)に送り、セッションを終了させる。
(ランダムアクセス手順(ネットワーク))
次に、VclickストリームVCSがサーバ装置201上にある場合におけるランダムアクセス再生の手順について説明する。
図40はユーザがランダムアクセス再生の開始を指示してから再生が開始されるまでの処理手順を表す流れ図である。まずステップS4000でユーザによりランダムアクセス再生の開始指示が入力される。入力の方法としては、チャプター等のアクセス可能位置のリストからユーザが選択する方法、動画像のタイムスタンプに対応づけられたスライドバー上からユーザが一点を指定する方法、直接動画像のタイムスタンプを入力する方法などがある。入力されたタイムスタンプは、インタフェース・ハンドラ207が受け取り、動画再生コントローラ205に動画像再生準備の命令を出す。もしもすでに動画像を再生中である場合には、再生中の動画像の再生停止を指示してから動画像再生準備の命令を出す。次に、分岐処理ステップS4001として、すでにサーバ装置201とのセッションが構築されているかどうかの判定を行う。動画像を再生中である場合など、すでにセッションが構築されている場合にはステップS4002のセッション切断処理を行う。セッションがまだ構築されていればステップS4002の処理を行わずにステップS4003に処理を移す。ステップS4003ではサーバ(201)とクライアント(200)間のセッションを構築する処理を行う。この処理は図37のステップS3702と同一の処理である。
次にステップS4004では、サーバ装置201とクライアント装置200間のセッションが構築された状態で、サーバ(201)に再生開始位置のタイムスタンプを指定してVclickデータ送信を要求する処理を行う。これはインタフェース・ハンドラ207がネットワーク・マネージャ208に指示を出し、ネットワーク・マネージャ208がサーバ(201)に要求を出すことにより行われる。RTPの場合には、ネットワーク・マネージャ208はRTSPのPLAYメソッドをサーバに送ることでVclickデータ送信を要求する。このとき、Range記述を用いるなどの方法で再生開始位置を特定するタイムスタンプもサーバ(201)に送る。サーバ装置201は、これまでにクライアント(200)から受け取った情報とサーバ装置201内にあるVclickインフォVCIを参照して送信すべきオブジェクト・メタデータ・ストリームを特定する。さらに、サーバ装置201は、Vclickデータ送信要求に含まれる再生開始位置のタイムスタンプ情報とサーバ装置201内にあるVclickアクセス・テーブルVCAを用いてVclickストリームVCS中の送信開始位置を特定し、VclickストリームVCSをパケット化してRTPによりクライアント装置200に送る。
一方、HTTPの場合には、ネットワーク・マネージャ208はHTTPのGETメソッドを送信することによりVclickデータ送信を要求する。この要求には、動画像の再生開始位置のタイムスタンプの情報が含まれている。サーバ装置201は、RTPの時と同様に、Vclick情報ファイルVCIを参照して送信すべきVclickストリームVCSを特定し、さらにタイムスタンプ情報とサーバ装置201内にあるVclickアクセス・テーブルVCAを用いてVclickストリームVCS中の送信開始位置を特定し、VclickストリームVCSをHTTPによりクライアント装置200に送る。
次に、ステップS4005では、サーバ(201)から送られてくるVclickストリームVCSをバッファ209にバッファリングする処理を行う。これは、VclickストリームVCSの再生中にサーバ(201)からのVclickストリーム送信が間に合わず、バッファ209が空になってしまうことをさけるために行われる。メタデータ・マネージャ210からバッファ209に十分な(例えば図87の初期化用文書に記述された12Kバイト)VclickストリームVCSが蓄積されたことがインタフェース・ハンドラに通知されると、ステップS4006の処理に移る。ステップS4006では、インタフェース・ハンドラ207が、コントローラ205に動画像の再生開始命令を出し、さらにメタデータ・マネージャ210にVclickストリームVCSのメタデータ・デコーダ217への送出を開始するよう命令を出す。
図41は図40とは別のランダムアクセス再生開始処理の手順を説明する流れ図である。図40の流れ図で説明される処理では、ネットワークの状態やサーバ/クライアント装置(201/200)の処理能力により、ステップS4005でのVclickストリームVCSを一定量バッファリングする処理に時間がかかる場合がある。すなわち、ユーザが再生を指示してから実際にステップS4006での再生が始まるまでにユーザを苛立たせるほど時間がかかってしまうことがある。
これに対し、図41の処理手順では、ステップS4100でユーザが再生開始を指示すると、次のステップS4101で直ちに動画像の再生が開始される。すなわち、ユーザからの再生開始指示を受けたインタフェース・ハンドラ207は、直ちにコントローラ205にランダムアクセス再生開始命令を出す。これにより、ユーザは再生を指示してから動画像を視聴するまで待たされることがなくなる。以後の処理ステップS4102からステップS4106までは、図40のステップS4001からステップS4005と同一の処理である。
ステップS4107では、再生中の動画像に同期させてVclickストリームVCSを復号する処理を行う。すなわち、インタフェース・ハンドラ207は、メタデータ・マネージャ210からバッファ209に一定量のVclickストリームVCSが蓄積された通知を受け取ると、メタデータ・マネージャ210にVclickストリームVCSのメタデータ・デコーダ217への送出開始を命令する。メタデータ・マネージャ210は、インタフェース・ハンドラ207から再生中の動画像のタイムスタンプを受け取り、バッファ209に蓄積されたデータからこのタイムスタンプに該当するVclick_AUを特定し、特定したAUをメタデータ・デコーダ217へ送出する。
図41の処理手順では、ユーザは再生を指示してから動画像を視聴するまで待たされることがないが、再生開始直後はVclickストリームVCSの復号が行われないため、オブジェクトに関する表示が行われなかったり、オブジェクトをクリックしても何も動作が起こらないなどの問題点がある。
上記の問題は、動画像再生開始後VclickストリームVCSの復号が始まったあとは解消するのであるから、再生開始後VCSの復号が始まるまでの期間を、ユーザが苛立たない程度に短縮すればこの問題は実用上解決できる。そこで、クライアント装置200とサーバ装置201を高速回線を介して常時接続状態としておき、ディスク装置231にVclickを利用するDVDディスクが装填されたとき(あるいは装填されたディスクから再生するタイトルが選択されたあと)、ステップS4102〜S4104の処理を予めバックグラウンドで実行しておくことが考えられる。この場合、ステップS4100のユーザ指示があると、直ぐにステップS4101のDVD再生が開始されると同時に、ステップS4102〜S4104の処理を飛ばして、高速回線を介してサーバから直ぐにVclickストリームVCSのバッファ取り込みが始まる(ステップS4106)。この取り込み量が一定量(例えば12kバイト)に達したら、直ちにVclickストリームVCS(その中の最初のVclick_AU)の復号が始まる(ステップS4107)。なお、その後の動画像の再生中の処理と動画像停止処理は、通常のDVD再生処理の場合と同一であるため、説明は省略する。
(再生手順(ローカル))
次に、VclickストリームVCSが動画像データ記録媒体231上にある場合における再生処理の手順について説明する。
図42はユーザが再生開始を指示してから再生が開始されるまでの再生開始処理手順を表す流れ図である。まずステップS4200でユーザにより再生開始の指示が入力される。この入力は、インタフェース・ハンドラ207が受け取り、動画再生コントローラ205に動画像再生準備の命令を出す。次に、ステップS4201では、使用するVclickストリームVCSを特定する処理が行われる。この処理では、インタフェース・ハンドラは動画像データ記録媒体231上にあるVclick情報ファイルVCIを参照し、ユーザが再生を指定した動画像に対応するVclickストリームVCSを特定する。
ステップS4202では、バッファにVclickストリームVCSを格納する処理が行われる。この処理を行うため、インタフェース・ハンドラ207はまずメタデータ・マネージャ210にバッファを確保する命令を出す。確保すべきバッファのサイズは、特定されたVclickストリームVCSを格納するのに十分なサイズとして決められるが、通常はこのサイズを記述したバッファ初期化用文書が動画像データ記録媒体231に記録されている。初期化用文書がない場合には、あらかじめ決められているサイズを適用する。バッファの確保が完了すると、インタフェース・ハンドラ207はコントローラ205に特定されたVclickストリームVCSを読み出してバッファに格納する命令を出す。
VclickストリームVCSがバッファ209に格納されると、次にステップS4203の再生開始処理が行われる。この処理では、インタフェース・ハンドラ207が動画再生コントローラ205に動画像の再生命令を出し、同時にメタデータ・マネージャ210にVclickストリームVCSのメタデータ・デコーダ217への送出を開始するよう命令を出す。
動画像の再生中、動画像データ記録媒体231から読み出されたVclick_AUはバッファ209に蓄積される。蓄積されたVclickストリームVCSは適切なタイミングでメタデータ・デコーダ217に送られる。すなわち、メタデータ・マネージャ208は、メタデータ・マネージャ210から送られてくる再生中の動画像のタイムスタンプを参照し、バッファ209に蓄積されているデータからそのタイムスタンプに対応したVclick_AUを特定し、この特定されたVclick_AUをメタデータ・デコーダ217に送る。メタデータ・デコーダ217は受け取ったデータを復号する。ただし、クライアント装置が現在選択しているカメラアングルと異なるカメラアングル用のデータの復号は行わないようにしても良い。また、再生中の動画像のタイムスタンプに対応したVclick_AUがすでにメタデータ・デコーダ217にあることがわかっている場合には、VclickストリームVCSをメタデータ・デコーダ217に送らないようにしても良い。
再生中の動画像のタイムスタンプは逐次インタフェース・ハンドラからメタデータ・デコーダ217に送られている。メタデータ・デコーダ217ではこのタイムスタンプに同期させてVclick_AUを復号し、必要なデータをAVレンダラー218に送る。例えば、オブジェクト・メタデータのAUに記述された属性情報によりオブジェクト領域の表示が指示されている場合には、オブジェクト領域のマスク画像や輪郭線などを生成し、再生中の動画像のタイムスタンプに合わせてA/Vレンダラー218に送る。また、メタデータ・デコーダ217は再生中の動画像のタイムスタンプとVclick_AUの有効時刻とを比較し、不要になった古いVclick_AUを判定してそのデータを削除する。
ユーザにより動画像の再生中に再生停止が指示されると、インタフェース・ハンドラ207はコントローラ205に動画像再生の停止命令と、VclickストリームVCSの読み出しの停止命令を出す。この指示により、動画像の再生が終了する。
(ランダムアクセス手順(ローカル))
次に、VclickストリームVCSが動画像データ記録媒体231上にある場合におけるランダムアクセス再生の処理手順について説明する。
図43はユーザがランダムアクセス再生の開始を指示してから再生が開始されるまでの処理手順を表す流れ図である。まずステップS4300でユーザによりランダムアクセス再生開始の指示が入力される。入力の方法としては、チャプター等のアクセス可能位置のリストからユーザが選択する方法、動画像のタイムスタンプに対応づけられたスライドバー上からユーザが一点を指定する方法、直接動画像のタイムスタンプを入力する方法などがある。入力されたタイムスタンプは、インタフェース・ハンドラ207が受け取り、動画再生コントローラ205に動画像のランダムアクセス再生準備の命令を出す。
次に、ステップS4301では、使用するVclickストリームVCSを特定する処理が行われる。この処理では、インタフェース・ハンドラは動画像データ記録媒体231上にあるVclick情報ファイルVCIを参照し、ユーザが再生を指定した動画像に対応するVclickストリームVCSを特定する。さらに、動画像データ記録媒体231上にあるVclickアクセス・テーブルVCA、もしくはメモリ(バッファ209もしくはその他のワークメモリエリア)上に読み込んであるVclickアクセス・テーブルVCAを参照し、動画像のランダムアクセス先に対応するVclickストリームVCS中のアクセスポイントを特定する。
ステップS4302は分岐処理であり、特定されたVclickストリームVCSが現在バッファ209に読み込まれているかどうかを判定する。バッファに読み込まれていない場合にはステップS4303の処理を行ってからステップS4304の処理に移る。現在バッファに読み込まれている場合には、ステップS4303の処理は行わずにステップS4304の処理に移る。ステップS4304は動画像のランダムアクセス再生開始、及びVclickストリームVCSの復号開始である。この処理では、インタフェース・ハンドラ207が動画再生コントローラ205に動画像のランダムアクセス再生命令を出し、同時にメタデータ・マネージャ210にVclickストリームVCSのメタデータ・デコーダ217への送出を開始するよう命令を出す。その後は動画像の再生に同期させてVclickストリームVCSの復号処理が行われる。その後の動画像再生中および動画像再生停止処理については、通常の再生処理と同一であるため、説明は省略する。
(クリックから関連情報表示までの手順)
次に、ユーザがマウス等のポインティングデバイスを使ってオブジェクト領域内をクリックした場合のクライアント装置の動作について説明する。ユーザがクリックを行うと、まず動画像上のクリックされた座標位置がインタフェース・ハンドラ207に入力される。インタフェース・ハンドラ207はメタデータ・デコーダ217にクリック時の動画像のタイムスタンプと座標を送る。メタデータ・デコーダ217は、タイムスタンプと座標から、ユーザによって指示されたオブジェクトがどれであるかを特定する処理を行う。メタデータ・デコーダ217では、動画像の再生に同期させてVclickストリームVCSをデコードしており、従ってクリックされた時のタイムスタンプにおけるオブジェクトの領域が生成されているため、この処理は容易に実行できる。クリックされた座標に複数のオブジェクト領域が存在する場合には、Vclick_AU内に含まれる階層情報を参照して最も前面にあるオブジェクトを特定する。
ユーザによって指定されたオブジェクトが特定されると、メタデータ・デコーダ217はそのオブジェクト属性情報403に記述されたアクション記述(動作を指示するスクリプト)をスクリプト・インタプリタ212に送る。アクション記述を受け取ったスクリプト・インタプリタ212は、その動作内容を解釈し、実行する。例えば、指定されたHTMLファイルの表示を行ったり、指定された動画像の再生を開始したりする。これらHTMLファイルや動画像データは、クライアント装置200に記録されている場合、サーバ装置201からネットワーク経由で送られてくる場合、ネットワーク上の別のサーバ上に存在している場合の、いずれでも良い。
(データ構造の詳細)
次に、より具体的なデータ構造の構成例について説明する。図11はVclickストリームVCS(図5では506)のデータ構造の例である。各データ要素の意味は以下の通りである:
vcs_start_codeは、VclickストリームVCSの始まりを示す;
data_lengthは、このVclickストリームVCSにおけるdata_lengthより後の部分のデータ長をバイトで指定する;
data_bytesはVclick_AUのデータ部である。この部分には先頭にVclickストリーム506のヘッダ507(図5)があり、続いて1つまたは複数のVclick_AU(図4、図77、または図78)やNULL_AU(図48)が並ぶ。
図12はVclickストリーム(図5の例でいえばストリーム506のヘッダ507)のデータ構造の例である。各データ要素の意味は以下の通りである:
vcs_header_codeは、VclickストリームVCS(506)のヘッダ(507)の始まりを示す;
data_lengthは、VclickストリームVCSのヘッダのうち、data_lengthより後の部部のデータ長をバイト単位で表す;
vclick_versionは、フォーマットのバージョンを指定する。この値はこの仕様の中では例えば01hとする;
bit_rateは、このVclickストリームVCSの最大のビット・レートを指定する。
図13はVclick_AU(図5の例でいえば500〜505の各長方形部分)のデータ構造の例である。各データ要素の意味は以下の通りである:
vclick_start_codeは、各Vclick_AUの始まりを示す;
data_lengthは、このVclick_AUのdata_lengthより後の部分のデータ長をバイトで指定する;
data_byteはVclick_AUのデータ部である。この部分にヘッダ401、タイムスタンプ402、オブジェクト属性情報403、オブジェクト領域情報400が含まれる。
図14はVclick_AUのヘッダ401(図4、図77、または図78)のデータ構造の例である。各データ要素の意味は以下の通りである:
vclick_header_codeは、各Vclick_AUのヘッダの始まりを示す;
data_lengthは、このVclick_AUのヘッダにおけるdata_lengthより後の部分のデータ長をバイトで指定される;
filtering_idはVclick_AUの識別IDである。クライアント装置の属性とこのIDにより、復号すべきVclick_AUかどうかを判定するためのデータである;
object_idはVclickデータで記述されるオブジェクトの識別番号である。object_idの同じ値が2つのVclick_AUの中で使用される場合、両者は意味的に同一のオブジェクト用のデータである;
object_subidはオブジェクトの意味的な連続性を表す。2つのVclick_AUにおいてobject_idおよびobject_subidの両方が同じである場合、両者は連続的なオブジェクトを意味する;
continue_flagはフラグである。このフラグが"1"である場合、このVclick_AUに記述されたオブジェクト領域と、同一のobject_idを有する次のVclick_AUに記述されたオブジェクト領域とは連続していることを示す。そうでない場合にはこのフラグは"0"となる;
layerは、オブジェクトの階層値を表す。階層値が大きいほどオブジェクトが画面上で手前にあることを意味する。なお、上述したように、filtering_idにより「復号すべきVclick_AUかどうかを判定」できることから、filtering_idにより、「復号すべきVclick_AUを含むVclickストリームVCS」も識別できることになる。すなわち、filtering_idにより、「動画像メタデータのストリーム選択を行う」ことができる。
図15はVclick_AUのタイムスタンプ(図4の402、図77のB01、または図78のC01/C02)のデータ構造の例である。この例では、動画像データ記録媒体としてDVDを用いる場合を仮定している。以下のタイムスタンプを用いることにより、DVD上の動画像の任意の時刻を指定することが可能となり、動画像とVclickデータの同期が実現できる。各データ要素の意味は以下の通りである:
time_typeは、DVD用タイムスタンプの始まりを示す;
data_lengthは、このタイムスタンプのうちdata_lengthより後の部分のデータ長をバイトで指定する;
VTSNは、DVDビデオのVTS(ビデオタイトルセット)番号を示す。
TTNは、DVDビデオのタイトル・ドメインにおけるタイトル番号を示すもので、DVDプレーヤのシステムパラメータSPRM(4)にストアされる値に相当する;
VTS_TTNは、DVDビデオのタイトル・ドメインにおけるVTSタイトル番号を示すもので、DVDプレーヤのシステムパラメータSPRM(5)にストアされる値に相当する;
TT_PGCNは、DVDビデオのタイトル・ドメインにおけるタイトルPGC(プログラムチェーン)番号を示すもので、DVDプレーヤのシステムパラメータSPRM(6)にストアされる値に相当する;
PTTNは、DVDビデオの部分タイト(Part_of_Title)番号を示すもので、DVDプレーヤのシステムパラメータSPRM(7)にストアされる値に相当する。
CNは、DVDビデオのセル番号を示す;
AGLNは、DVDビデオのアングル番号を示す;
PTS[s .. e]は、DVDビデオの表示タイムスタンプのうち、sビット目からeビット目までのデータを示す。
図16はVclick_AUのタイムスタンプ・スキップのデータ構造の例である。タイムスタンプ・スキップがタイムスタンプの代わりにVclick_AUに記述されている場合、このVclick_AUのタイムスタンプが直前のVclick_AUのタイムスタンプと同一である事を意味している。各データ要素の意味は以下の通りである:
time_typeは、タイムスタンプ・スキップの始まりを示す;
data_lengthは、このタイムスタンプ・スキップのうちdata_lengthより後の部分のデータ長をバイトで指定する。しかし、タイムスタンプ・スキップはtime_typeとdata_lengthのみから構成されるため、この値は常に0となる。
図17はVclick_AUのオブジェクト属性情報403(図4、図77、または図78)のデータ構造の例である。各データ要素の意味は以下の通りである:
vca_start_codeは、各Vclick_AUのオブジェクト属性情報の始まりを示す;
data_lengthは、このオブジェクト属性情報のうちdata_lengthより後の部分のデータ長をバイトで指定する;
data_bytesはオブジェクト属性情報のデータ部である。この部分には1つまたは複数の属性が記述される。
次に、オブジェクト属性情報403の中に記述される属性情報の詳細について説明する。図18はオブジェクト属性情報403の中で記述可能な属性の種類の一覧である。最大値の欄には、それぞれの属性について、一つのオブジェクト・メタデータAU内に記述可能な最大のデータ数の例を示してある。
attribute_idは、各属性データ中に含まれるIDで、属性の種類を見分けるためのデータである。名前属性は、オブジェクトの名前を特定するための情報である。アクション属性は、動画像中のオブジェクト領域がクリックされたときに、どのようなアクションを行うべきかが記述される。輪郭線属性は、オブジェクトの輪郭線をどのように表示させるかの属性を表す。点滅領域属性は、オブジェクト領域を点滅して表示する際の点滅色を特定する。モザイク領域属性は、オブジェクト領域をモザイク化して表示する際のモザイク化の仕方が記述されている。塗りつぶし領域属性は、オブジェクト領域に色を付けて表示させる際の色を特定する。
テキストカテゴリーに属する属性は、動画像に文字を表示させたいときに、表示させる文字に関する属性を定義する。テキスト情報には、表示させるテキストを記述する。テキスト属性は、表示させるテキストの色やフォント等の属性を特定する。ハイライト効果属性は、テキストの一部または全てをハイライト表示させる際に、どの文字をどのようにハイライト表示させるかを特定する。点滅効果属性は、テキストの一部または全てを点滅表示させる際に、どの文字をどのように点滅表示させるかを特定する。スクロール効果属性には、表示させるテキストをスクロールさせる際に、どの方向にどのような速さでスクロールさせるかが記述されている。カラオケ効果属性は、テキストの色を順次変更していく際に、どのようなタイミングでどこの文字の色を変更させるかを特定する。
最後に、階層拡張属性は、オブジェクトの階層値がVclick_AU内で変化する場合に、階層値の変化のタイミングとその値を定義するために用いられる。以上の属性のデータ構造について、以下で個々に説明する。
図19はオブジェクトの名前属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。名前属性については、この値は00hとする;
data_lengthは、名前属性データのdata_lengthより後のデータ長をバイトで表す;
languageは、以下の要素(nameとannotation)の記述に用いた言語を特定する。言語の指定にはISO-639「code for the representation of names of languages」を用いる;
name_lengthは、バイトでname要素のデータ長さを指定する;
nameは文字列であり、このVclick_AUで記述されているオブジェクトの名前を表す;
annotation_lengthは、バイトでannotation要素のデータ長を表す;
annotationは文字列であり、このVclick_AUで記述されているオブジェクトに関する注釈を表す。
図20はオブジェクトのアクション属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。アクション属性については、この値は01hとする;
data_lengthは、アクション属性データのうちdata_lengthより後の部分のデータ長をバイトで表す;
script_languageは、script要素に記述されているスクリプト言語の種類を特定する;
script_lengthは、バイト単位でscript要素のデータ長を表す;
scriptは文字列であり、このVclick_AUで記述されているオブジェクトがユーザにより指定された場合に実行すべきアクションをscript_languageで指定されたスクリプト言語で記述されている。
図21はオブジェクトの輪郭線属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性のタイプを指定する。輪郭線属性については、この値は02hとする;
data_lengthは、輪郭線属性データうちdata_lengthより後の部分のデータ長を指定する;
color_r、color_g、color_b、color_aは、このオブジェクト・メタデータAUで記述されているオブジェクトの輪郭の表示色を指定する;
color_r、color_gおよびcolor_bはそれぞれ色のRGB表現における赤、緑および青の値を指定する。一方、color_aは透明度を示す;
line_typeは、このVclick_AUで記述されているオブジェクトの輪郭線の種類(実線、破線など)指定する;
thicknessは、このVclick_AUで記述されているオブジェクトの輪郭線の太さをポイントで指定する。
図22はオブジェクトの点滅領域属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。点滅領域属性データについては、この値は03hとする;
data_lengthは、点滅領域属性データのうちdata_lengthより後の部分のデータ長をバイトで指定する;
color_r、color_g、color_b、color_aは、このVclick_AUで記述されているオブジェクトの領域の表示色を指定する。color_r、color_gおよびcolor_bはそれぞれ色のRGB表現における赤、緑および青の値を指定する。一方、color_aは透明度を示す。オブジェクト領域の点滅は、塗りつぶし領域属性の中で指定された色とこの属性で指定された色とを交互に表示させることにより実現される;
intervalは、点滅の時間間隔を指定する。
図23はオブジェクトのモザイク領域属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。モザイク領域属性データについては、この値は04hとする;
data_lengthは、モザイク領域属性データのうちdata_lengthより後の部分のデータ長をバイトで指定する;
mosaic_sizeは、モザイク・ブロックのサイズをピクセル単位で指定する;
randomnessはモザイク化したブロックの位置を入れ替える場合に、どの程度ランダムに入れ替えるかを表す。
図24はオブジェクトの塗りつぶし領域属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。塗りつぶし領域属性データについては、この値は05hとする;
data_lengthは、塗りつぶし属性データのうちdata_lengthより後の部分のデータ長をバイトで指定する;
color_r、color_g、color_b、color_aは、このVclick_AUで記述されているオブジェクト領域の表示色を指定する。color_r、color_gおよびcolor_bはそれぞれ色のRGB表現における赤、緑および青の値を指定する。一方、color_aは透明度を示す。
図25はオブジェクトのテキスト情報のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトのテキスト情報については、この値は06hとする;
data_lengthは、オブジェクトのテキスト情報のうちdata_lengthより後の部分のデータ長をバイトで指定する;
languageは、記述されたテキストの言語を示す。言語の指定方法は、例えばISO-639「code for the representation of names of languages」を使うことができる;
char_codeは、テキストのコード種類を特定する。例えば、UTF-8、UTF-16、ASCII、Shift JISなどを指定する;
directionは、文字を並べる際の方向として、左方向、右方向、下方向、上方向を特定する。例えば、英語やフランス語ならば通常文字は左方向に並べる。一方、アラビア語ならば右方向に、日本語ならば左方向か下方向のどちらかに並べる。ただし、言語ごとに決まっている並び方向以外を指定しても良い。また、斜め方向を指定できるようにしても良い;
text_lengthは、バイトでtimed textの長さを指定する;
textは文字列であり、char_codeで指定された文字コードを用いて記述されたテキストである。
図26はオブジェクトのテキスト属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトのテキスト属性については、この値は07hとする;
data_lengthは、オブジェクトのテキスト属性のうちdata_lengthより後の部分のデータ長をバイトで指定する;
font_lengthは、フォントの記述長をバイト単位で指定する;
fontは文字列であり、テキストを表示する際に用いるフォントを指定する;
color_r、color_g、color_b、color_aは、テキストを表示する際の表示色を指定する。色はRGBにより表現される。また、color_r、color_gおよびcolor_bは、赤、緑および青の値をそれぞれ指定する。また、color_aは透過度を示す。
図27はオブジェクトのテキスト・ハイライト効果属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトのテキスト・ハイライト効果属性データについては、この値は08hとする;
data_lengthは、オブジェクトのテキスト・ハイライト効果属性データのうちdata_lengthより後の部分のデータ長をバイトで指定する;
entryは、このテキスト・ハイライト効果属性データ中のhighlight_effect_entryの数を示す;
data_bytesにentry個のhighlight_effect_endtryが含まれる;
highlight_effect_endtryの仕様は以下に示す通りである。
図28はオブジェクトのテキスト・ハイライト効果属性のエントリーのデータ構造の例である。各データ要素の意味は以下の通りである:
start_positionは、強調される文字の開始位置を先頭から当該文字までの文字数により指定する;
end_positionは、強調される文字の終了位置を先頭から当該文字までの文字数により指定する;
color_r、color_g、color_b、color_aは、強調後の文字の表示色を指定する。色はRGBにより表現される。また、color_r、color_gおよびcolor_bは、赤、緑および青の値をそれぞれ指定する。また、color_aは透過度を示す。
図29はオブジェクトのテキスト点滅効果属性のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトのテキスト点滅効果属性データについては、この値は09hとする;
data_lengthは、テキスト点滅効果属性データのうちdata_lengthより後の部分のデータ長をバイトで指定する;
entryは、このテキスト点滅効果属性データ中のblink_effect_entryの数を示す;
data_bytesにentry個のblink_effect_entryを含む;
blink_effect_entryの仕様は以下の通りである。
図30はオブジェクトのテキスト点滅効果属性のエントリーのデータ構造の例である。各データ要素の意味は以下の通りである:
start_positionは、点滅させる文字の開始位置を先頭から当該文字までの文字数により指定する;
end_positionは、点滅させる文字の終了位置を先頭から当該文字までの文字数により指定する;
color_r、color_g、color_b、color_aは、点滅文字の表示色を指定する。色はRGBにより表現される。また、color_r、color_gおよびcolor_bは、赤、緑および青の値をそれぞれ指定する。また、color_aは透過度を示す。ここで指定された色と、テキスト属性で指定された色とを交互に表示させることで文字を点滅させる;
intervalは、点滅の時間間隔を指定する。
図31はオブジェクトのテキスト・スクロール効果属性のエントリーのデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトのテキスト・スクロール効果属性データについては、この値は0ahとする;
data_lengthは、テキスト・スクロール効果属性データのうちdeta_lengthより後の部分のデータ長をバイト単位で指定する;
directionは文字をスクロールする方向を指定する。例えば、0は右から左を、1は左から右を、2は上から下を、3は下から上を示す;
delayは、スクロールの速度を、表示させる先頭の文字が表示されてから最後の文字が表示されるまでの時間差により指定する。
図32はオブジェクトのテキスト・カラオケ効果属性のエントリーのデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトのテキスト・カラオケ効果属性データについては、この値は0bhとする;
data_lengthは、テキスト・カラオケ効果属性データのうちdeta_lengthより後の部分のデータ長をバイト単位で指定する;
start_timeはこの属性データのdata_bytesに含まれる先頭のkaraoke_effect_entryで指定される文字列の文字色の変更開始時刻を指定する;
entryは、このテキスト・カラオケ効果属性データ中のkaraoke_effect_entryの数を示す;
data_bytesにentry個のkaraoke_effect_entryを含む;
karaoke_effect_entryの仕様は次に示す。
図33はオブジェクトのテキスト・カラオケ効果属性のエントリーのデータ構造の例である。各データ要素の意味は以下の通りである:
end_timeはこのエントリーで指定される文字列の文字色の変更終了時刻を表す。また、このエントリーに続くエントリーがある場合には、次のエントリーで指定される文字列の文字色の変更開始時刻も表す;
start_positionは文字色を変更すべき文字列の先頭文字の位置を、先頭から当該文字までの文字数により指定する;
end_positionは文字色を変更すべき文字列の最後の文字の位置を、先頭から当該文字までの文字数により指定する。
図34はオブジェクトの階層属性拡張のデータ構造の例である。各データ要素の意味は以下の通りである:
attribute_idは、属性データのタイプを指定する。オブジェクトの階層属性拡張データについては、この値は0chとする;
data_lengthは、階層属性拡張データのうちdeta_lengthより後の部分のデータ長をバイト単位で指定する;
start_timeはこの属性データのdata_bytesに含まれる先頭のlayer_extension_entryで指定される階層値が有効となる開始時刻を指定する;
entryは、この階層属性拡張データに含まれるlayer_extension_entryの数を指定する;
data_bytesにentry個のlayer_extension_entryが含まれる;
layer_extension_entryの仕様を次に説明する。
図35はオブジェクトの階層属性拡張のエントリーのデータ構造の例である。各データ要素の意味は以下の通りである:
end_timeは、このlayer_extension_entryで指定される階層値が無効になる時刻を指定する。また、このエントリーの次にもエントリーがある場合には、次のエントリーで指定sれる階層値が有効になる開始時刻も同時に指定する;
layerは、オブジェクトの階層値を指定する。
図36はオブジェクト・メタデータのAUのオブジェクト領域データ400のデータ構造の例である。各データ要素の意味は以下の通りである:
vcr_start_codeは、オブジェクト領域データの開始を意味する;
data_lengthは、オブジェクト領域データのうちdata_lengthより後の部分のデータ長をバイトで指定する;
data_bytesはオブジェクト領域が記述されているデータ部である。オブジェクト領域の記述には、例えばMPEG-7のSpatioTemporalLocatorのバイナリフォーマットを用いることができる。
(アプリケーション・イメージの説明)
図76は、この発明のオブジェクト・メタデータを動画像と共に利用することにより実現されるアプリケーション(動画像ハイパーメディア)の図1とは別の画面上の表示例である。図1では動画像を表示するウインドウ(図1(a))と関連情報を表示するウインドウ(図1(b))はそれぞれ別々であったが、図76では一つのウインドウA01に動画像A02と関連情報A03が表示されている。関連情報としては、テキストのみでなく、静止画A04やA02とは別の動画像を表示させることも可能である。
(継続時間データを使ったVclick_AUの有効期間指定方法の説明)
図77は、図4とは別のVclick_AUのデータ構造の例である。図4との違いは、Vclick_AUの有効期間を特定するためのデータが、タイムスタンプのみではなく、タイムスタンプB01と存続時間または継続時間B02の組み合わせとなっている点である。タイムスタンプB01はVclick_AUの有効期間の開始時刻であり、継続時間B02はVclick_AUの有効期間の開始時刻から終了時刻までの継続時間である。継続時間の具体的な構成は、例えば図79のようにすればよい。ここでtime_typeは図79のデータが継続時間を意味することを特定するためのIDであり、durationが継続時間である。durationはあらかじめ決められた単位(例えば、1ミリ秒や0.1秒など)で継続時間を表す。
このようにVclick_AUを特定するためのデータとして継続時間も記述することの利点は、処理対象のVclick_AUだけを見ればそのVclick_AUの継続時間を知ることができる点である。従って、例えばあるタイムスタンプで有効なVclick_AUを探索しているような場合に、他のVclick_AUのデータを調べることなく、そのVclick_AUが探索対象であるかどうかが判定できる。ただし、図4の場合よりも継続時間B02の分だけデータサイズが大きくなる。
図78は図77とはまた別のVclick_AUのデータ構造の例である。この例では、Vclick_AUの有効期間を特定するためのデータとしてVclick_AUの有効期間の開始時刻を特定するタイムスタンプC01と終了時刻を特定するタイムスタンプC02を使用している。このデータ構造を用いる場合の利点は図77のデータ構造を用いる場合と実質的に同じである。
図80は、この発明の一実施の形態に係るVclick情報の記述例8を説明する図である。この例では、一つのPGC(PGC#8)に対し、ディスク上に記録されている一つのVclickストリームVCS#1(Vclick1.vck)が付加されている。ここでは、<object>タグ内に"start"、"end"属性が記述されている。ここで、"start"属性は、VclickストリームVCSの表示を開始する時間の相対値を、'HH:MM:SS:FF'形式(時間:分:秒:フレーム)の精度で表している。また、"end"属性は、VclickストリームVCSの表示を終了する時間の相対値を、'HH:MM:SS:FF'形式(時間:分:秒:フレーム)の精度で表している。ここで、"start"、"end"属性は、VclickストリームVCSがこの例のようにPGCに対して付加されている場合は、PGCの開始位置からの相対時間を表している。もし、タイトル・ドメイン("<vts_tt>")に対して付加されている場合は、タイトル・ドメインの開始位置からの相対時間を表す。
図81は、この発明の一実施の形態に係るVclick情報の記述例9を説明する図である。この例では、一つのPGC(PGC#9)に対し、ディスク上に記録されている一つのVclickストリームVCS(Vclick2.vck)が付加されている。ここでは、<object>タグ内の"start_ptm"、"end_ptm"属性が記述されている。ここで、"start_ptm"属性は、付加オブジェクトの表示を開始する時間の相対値を、PTM(Presentation Time:90kHzのクロックによるカウンタ)の精度で表している。また、"end_ptm"属性は、付加オブジェクトの表示を終了する時間の相対値を、PTM(Presentation Time:90kHzのクロックによるカウンタ)の精度で表している。ここで、"start_ptm"、"end_ptm"属性は、付加オブジェクトがこの例のようにPGCに対して付加されている場合は、PGCの開始位置からの相対時間を表している。もし、タイトル・ドメイン("<vts_tt>")に対して付加されている場合は、タイトル・ドメインの開始位置からの相対時間を表す。
図82は、この発明の他の実施の形態に係る再生処理手順を説明するフローチャートである。このフローチャートは、ユーザからの入力(リモコン操作など)に応じて再生するVclickストリームVCSを変更する手順を例示している。
まず、DVDビデオコンテンツの再生に同期してVclickストリームVCSを再生しているとき(ステップS8201ノーのループ)、ユーザからなんらかの入力があったものとする(ステップS8201イエス)。ここでのユーザ入力としては、音声の切り替え、字幕の切り替え、アングルの切り替え等の再生属性の変更や、早送り、巻き戻し、スキップ等の特殊再生の開始などが考えられる。
ユーザ入力が再生属性の変更であった場合は(ステップS8202の“再生属性の変更”側分岐)、再生装置(図2ではクライアント装置200)は、変更された再生属性情報(例えば音声のストリーム番号、サブピクチャ・ストリーム番号、アングル番号)に対応したデータ(Vclick_AU)を現在再生中のVclickストリームVCS中から検索する(ステップS8204)。変更された再生属性情報に対応するVclick_AUが再生中のVclickストリームVCSから検索できた場合(ステップS8205イエス)、再生を行うVclick_AUのフィルタID(図14のfiltering_id)を検索されたVclick_AUのもつフィルタIDに変更し(ステップS8206)、変更後の新しいフィルタIDで識別されるVclick_AUを含むVclickストリームVCSを選択して、その再生を開始する。
もし、再生中のVclickストリームVCS中に再生するVclick_AUが見つからなかった場合は(ステップS8205ノー)、対応するVclick_AUを含むVclickストリームVCSを再生する必要がある。このVclickストリームVCSを検索するのに、VclickインフォVCIのファイル(図54のVCKINDEX.IFO)を用いる(ステップS8207)ことができる。このVclickインフォVCIファイルは予め再生装置のメモリ(図2のバッファ209あるいは図示しないワークメモリの一部のエリアなど)に展開されており、再生属性情報を与えることにより、それに対応したVclickストリームVCSの存在する場所、ファイル名の情報を得ることができる。
もし、VclickインフォVCIファイルが再生装置のメモリ(バッファ209など)に展開されていない場合は、ディスク上の決められた場所(図53のVCD内)、もしくは外部サーバ(201)上の決められた場所からVclickインフォVCIファイルを読み込み、再生装置のメモリ(図2では209)に展開する。ここで、ディスク上の決められた場所から読み込む場合には、必要に応じて、現在再生しているDVDビデオコンテンツを停止し、所望のVclickインフォVCIファイルを読み込むことになる。
なお、VclickインフォVCIファイル上に変更された再生状態に対応したVclickストリームVCSが存在しない場合は(ステップS8208ノー)、VclickストリームVCSの再生を停止し、DVDビデオコンテンツの再生を継続する。
VclickインフォVCIファイルを用いて、変更された再生状態に対応したVclickストリームVCSが見つかった場合で(ステップS8208イエス)、また、このVclickストリームVCSが外部サーバ(201)上にあった場合(ステップS8209の“サーバ”側分岐)は、再生状態が変更される前にバッファ209に格納していたVclickストリームVCSを消去し(ステップS8220)、そのバッファ209に新たに外部サーバ(201)上のVclickストリームVCSを読み込んだのち(ステップS8221)、VclickストリームVCSの再生を開始する(“新しいVclickストリーム再生開始”)。このとき、DVDビデオコンテンツの再生は継続しているため、現在再生しているDVDビデオコンテンツの時間情報を参照し、現在再生しているDVDビデオコンテンツと同期するようにVclickストリームVCSを再生する。
もし、変更された再生状態に対応したVclickストリームVCSが見つかった場合で(ステップS8208イエス)、この変更されたVclickストリームVCSがディスク上にある場合(ステップS8209の“ディスク”側分岐)は、再生状態が変更される前にバッファ209に格納していたVclickストリームVCSを消去し(ステップS8210)、そのバッファ209に新たにディスク上のVclickストリームVCSを読み込む(ステップS8211)。ここで、DVDドライブの読み込み速度が十分速い場合は、現在再生しているDVDビデオコンテンツの再生を継続しながら、VclickストリームVCSを読み込むことができる。しかしながら、DVDドライブの読み込み速度が不十分な場合は、DVDビデオコンテンツの再生を一旦停止し、VclickストリームVCSをディスクから読み込む。そののち、再生を開始するDVDビデオコンテンツの時間情報を参照しながら、DVDビデオコンテンツと、VclickストリームVCSの同期再生を開始する(ステップS8212およびその後の“新しいVclickストリーム再生開始”)。
ユーザ入力が特殊再生の開始であった場合は(ステップS8202の“特殊再生”側分岐)、特殊再生によるジャンプ先のVclickストリームVCSが現在デコード中のものと同じかどうかチェックする。同じであれば(ステップS8203イエス)、同じVclickストリームVCSをバッファ209に保持したまま特殊再生を継続する。同じでなければ(ステップS8203ノー)、ステップS8207の処理へジャンプする。
例えば、ユーザから上記の特殊再生が要求された場合、まず再生装置は、次に指定された再生位置(早送りの場合現在よりも先の場所、巻き戻しの場合現在よりも前の場所、スキップの場合は指定された場所)が、現在再生しているVclickストリームVCS中にある場合は、指定された再生位置からのDVDビデオコンテンツと、VclickストリームVCSの同期再生を開始する。
もし、指定された再生位置が、現在再生しているVclickストリームVCS中にない場合は、指定された再生位置を含むVclickストリームVCSを再生する必要がある。このVclickストリームVCSを検索するのに、VclickインフォVCIファイルを用いる(ステップS8207)。VclickインフォVCIファイルはあらかじめ再生装置のメモリ(バッファ209)に展開されており、再生位置情報を与えることにより、それに対応したVclickストリームVCSの存在する場所および該当ファイル名の情報を得ることができる。もし、VclickインフォVCIファイルが再生装置のメモリに展開されていない場合、ディスク上の決められた場所、もしくは外部サーバ(201)上の決められた場所からVclickインフォVCIファイルを読み込み、再生装置のメモリに展開する(ステップS8210〜S8211もしくはステップS8220〜S8221)。ここで、ディスク上の決められた場所から読み込む場合には、必要に応じて、現在再生しているDVDビデオコンテンツを停止し、所望のVclickインフォVCIファイルを読み込むことになる。
すなわち、VclickインフォVCIファイルを用いて指定された再生位置に対応したVclickストリームVCSが見つかった場合で(ステップS8208イエス)、このVclickストリームVCSが外部サーバ(201)上にあった場合は、特殊再生を行う前にバッファ209に格納していたVclickストリームVCSを消去し(ステップS8220)、そのバッファ209に新たに外部サーバ(201)上のVclickストリームVCSを読み込んだ(ステップS8221)のち、VclickストリームVCSの再生を開始する。このとき、DVDビデオコンテンツの再生は継続しているため、現在再生しているDVDビデオコンテンツの時間情報を参照し、同期するように再生する。
一方、変更されたVclickストリームVCSがディスク上にある場合は、特殊再生を行う前にバッファ209に格納していたVclickストリームVCSを消去し(ステップS8210)、そのバッファ209に新たにディスク上のVclickストリームVCSを読み込む(ステップS8211)。ここで、DVDドライブの読み込み速度が十分速い場合は、現在再生しているDVDビデオコンテンツの再生を継続しながら、VclickストリームVCSを読み込むことができるが、そうでない場合は、DVDビデオコンテンツの再生を一旦停止し、VclickストリームVCSをディスクから読み込む。そののち、再生を開始するDVDビデオコンテンツの時間情報を参照しながら、DVDビデオコンテンツと、VclickストリームVCSの同期再生を開始する(ステップS8212以降)。
もし、VclickインフォVCIファイル上に、指定された再生位置に対応したVclickストリームVCSが存在しない場合は(ステップS8208ノー)、VclickストリームVCSの再生を停止し、DVDビデオコンテンツの再生を継続する。
図83は、この発明の他の実施の形態に係るVclickストリームVCS(マルチストリーム)の構成方法を説明する図である。この例は、図5の変形例である。すなわち、図5の例では複数アングルのVclick_AUが1本のVclickストリームVCSに纏められているが、図83では、複数アングル各々のVclick_AUを、対応する複数VclickストリームVCSに格納している。つまり、図83の例では、Vclickストリーム836は日本語アングル1用のVclick_AU830〜831で構成され、Vclickストリーム837は日本語アングル2用のVclick_AU832で構成され、Vclickストリーム838は英語アングル1用のVclick_AU833〜834で構成されている。
図84は、この発明の他の実施の形態に係る起動処理手順を説明するフローチャートである。この処理手順は、図83のような複数Vclickストリームがある場合に対応している。
まず、VclickインフォVCIファイル(図54のVCKINDEX.IFO)をエンハスドDVDビデオディスク(図53)あるいは外部サーバ装置201(図2)から読み込み(ステップS8401)、再生装置(図2ではクライアント装置200)のメモリ(ワークメモリあるいはバッファ209)に格納する。このVclickインフォVCIファイルから、VclickストリームVCSの存在する場所およびそのファイル名などの情報を得ることができる(図54の説明におけるVclickインフォ・ファイルの解説参照)。こうして得た情報から、必要なVclickストリームVCS(図83の例では3本のストリーム836〜838)を抽出する(ステップS8402)。抽出したVclickストリームVCSのデータはバッファ209に格納される(ステップS8403)。
このバッファ格納において、複数のストリーム(図83では836〜838)のどれからバッファリングするか(バッファへの読み込み優先度の設定方法)については、幾つかの方法がある。その方法の第1の例は、各ストリームに対応するビデオコンテンツのPGC番号の小さいものから該当ストリームを読み込むというものである。例えばPGC#1にVclickストリーム#1が付加されており、PGC#2にVclickストリーム#2が付加されており、読み込むべきストリームがVclickストリーム#1とVclickストリーム#2であるときは、まずVclickストリーム#1がバッファ209に読み込まれ、次にVclickストリーム#2がバッファ209に読み込まれる。
第2の例は、プレーヤ(クライアント装置200)に予め設定されている言語に従い読み込み優先度を決めるというものである。例えば、プレーヤに第1言語(あるいはデフォルト選択の言語)として日本語が設定され、第2言語として英語が設定されている場合であって、Vclickストリーム#1に英語の属性(例えば図25の“language”で英語が指定される)が付与され、Vclickストリーム#2に日本語の属性(例えば図25の“language”で日本語が指定される)が付与されているときは、まずVclickストリーム#2がバッファ209に読み込まれ、次にVclickストリーム#1がバッファ209に読み込まれる。
第3の例は、読み込むべきストリームがディスクにある場合を、外部サーバにある場合より優先させるものである。例えばVclickストリーム#2が外部サーバにありVclickストリーム#1とVclickストリーム#3がディスクにある場合において、Vclickストリーム#1〜Vclickストリーム#3を読み込むときは、まずVclickストリーム#1とVclickストリーム#3がその番号順でバッファ209に読み込まれ、その後にVclickストリーム#2がバッファ209に読み込まれる。
バッファ209にアサインされたサイズ(後述する図87の例では2Mバイト)までVclickストリームの格納が済むと(ステップS8404イエス)、DVDビデオコンテンツの再生が開始される(ステップS8405)。あるいは、バッファ209に格納されたVclickストリームのサイズが予め決められた再生サイズ(後述する図87の例では12kバイト)に達したら、DVDビデオコンテンツの再生を開始する(ステップS8405)ようにしてもよい。
DVDビデオコンテンツの再生開始後、その再生情報(タイトル、PGC番号、音声ストリーム番号、サブピクチャストリーム番号、アングル番号、アスペクト比情報、再生時間情報など)を取得し(ステップS8406)、取得した情報の少なくとも一部(例えばPGC番号)に基づいて、それに対応するVclickストリームをVclickインフォ・ファイルより検索する(ステップS8407)。例えば、ステップS8406で取得した再生情報が図66におけるPGC#1であったとすれば、Vclick#1〜#3のストリームがステップS8407において検索される。そして、Vclickストリーム#1〜#3のデータが現在バッファ209内にあれば(ステップS8408イエス)、直ぐにVclickストリーム#1〜#3の再生が、現在のDVD再生(ステップS8405)と同期して、開始される。
Vclickストリーム#1〜#3のデータが現在バッファ209内にないときは(ステップS8408ノー)、バッファ209から不要データを消去して(ステップS8409)、あるいは不要データのバッファエリアにオーバーライトするようにして、バッファ209に、検索されたVclickストリーム#1〜#3のデータが読み込まれる(ステップS8410)。そして、バッファ209に読み込まれるデータ量が最小の再生サイズ(例えば12kバイト)に達したら、そのバッファリングされたVclickストリームの再生が、現在のDVD再生(ステップS8405)と同期して、開始される。
なお、ステップS8403およびステップS8410におけるバッファ209への読み込みにおいては、図48、図49に示した“NULL_AU”の部分については、データ転送は行われない(“NULL_AU”であるか否かは、図48の“Vclick AU Header”内の図示しないフラグで識別できる)。
上記では、VclickストリームVCS上に“NULL_AU”を配する事で、バッファ209からメディア・デコーダ216への無用なデータ転送と、その結果生ずるメディア・デコーダ216での処理のオーバーヘッドを軽減する方法を記述した。しかし、Vclickアクセス・テーブルVCAを用いてVclickストリームVCS上のAUにアクセスする場合、VclickストリームVCS上の“NULL_AU”に代わって、Vclickアクセス・テーブルVCA上の“NULL Pointer”を用いて、更に無用な処理のオーバーヘッドを回避する事が可能である。以下、これについて述べる。
図47は“NULL_AU”の説明(図48〜図49の説明)に関連した、VclickストリームVCSの例である。図47のVclickストリームVCSにおいて、アクセスユニットAUは#1,#2,#3の順に並べられている。このVclickストリームVCSに対応するVclickアクセス・テーブルVCAは、例えば図6に示すようになっている。図6において、offset#3は、例えば、AU#1の先頭位置、offset#4はAU#3の先頭位置を指している。この図6の構成を前記“NULL Pointer”を用いる場合に拡張すると、図85のようになる。
図85は、この発明の他の実施の形態に係るVclickアクセス・テーブルVCAの構成例を説明する図である。図85の例には、図6と異なり、タイムスタンプ850がtime*のとき、該当するアクセスポイント851が“NULL”であることを示す場合が追加されている。つまり、この“NULL”であることを示すNULL Pointer(ファイルポインタfpの1つ)を利用する場合のVclickアクセス・テーブルVCAが、図85に例示されている。
図85のアクセスポイント851中の“NULL”は、「当該VclickストリームVCSにおけるAUのアクティブ期間は、time*以上time#4未満の時間範囲と交わり(または係わり)を持たない」ことを意味するフラグである。いま、図2のインタフェース・ハンドラ207からメタデータ・マネージャ210へ与えられる動画像クロックTについて、下記の条件が成立したとする:
time* <= T < time#4
この時、メタデータ・マネージャ210は、図85のVclickアクセス・テーブルVCAを検索して、“NULL”のフラグを得る。“NULL”フラグを得た場合は、メタデータ・マネージャ210は、VclickストリームVCSを読み込むことなく、動作を終了するか、或いは、次の動作に移る。この場合のメタデータ・マネージャ210の動作の一例を図86のフローチャートに示す。
図86は、この発明の他の実施の形態に係るメタデータ・マネージャの処理手順の例を説明するフローチャートである。すなわち、メタデータ・マネージャ210がインターフェース・ハンドラ207から動画像クロックTを受け取ると(ステップS8601)、バッファ209内のアクセスポイントテーブルを検索し、 t<= Tである最大のtを求め(ステップS8602)、 tと組になるoffset値hを見出す(ステップS8603)。見出されたhが“NULL”であれば(これは、図47、図49、図85の例でいえば、ステップS8602で求めたtが“time*”に該当する場合)(ステップS8604イエス)、ステップS8601に戻り、ステップS8601〜S8604の処理を繰り返す。
見出されたhが“NULL”でなければ(図47、図49、図85の例でいえば、ステップS8602で求めたtが例えば“time#4”に該当する場合)(ステップS8604ノー)、ファイルポインタfpをhとする(ステップS8605)。そして、インターフェース・ハンドラ207は、このhに対応するアクセスユニットAUのタイムスタンプ値t’(図85の例では、アクセスポイント851の“offset#4”に対応する、タイムスタンプ850の“time#4”)を読む(ステップS8606)。
次に、ファイルポインタfpを、現在のfpに現在のAUのサイズを足した値に変更し(ステップS8607)、変更後のfpがVclickインフォ・ファイルの最後を指しているかどうかチェックする。fpがファイルの最後を指していないときは(ステップS8608ノー)、インターフェース・ハンドラ207は現在のAUのタイムスタンプ値uを読む(ステップS8609)。そして、読んだタイムスタンプ値uが前記タイムスタンプ値t’より大きくなければ(ステップS8610ノー)、ステップS8607に戻り、ステップS8607〜S8610の処理を繰り返す。uがt’より大きいとき(ステップS8610イエス)、あるいはfpがファイルの最後を指しているときは(ステップS8608イエス)、インターフェース・ハンドラ207は、バッファ209に対して、「オブジェクト・メタデータ・ストリーム(現在のAUを含むVclickストリームVCS)のオフセットhからファイルポインタfpまでのデータを、メタデータ・デコーダ217へ転送せよ」との指令を出す(ステップS8611)。こうして、「“NULL”であることを示すNULL Pointerを利用する場合」のメタデータ・マネージャ210の動作例(図86)は終了する。
図87はこの発明のさらに他の実施の形態に係るバッファアサインモデルを説明する図(初期化用文書の例)である。以下、実際にVclickデータVCD用のバッファをアサインするモデルを説明する。図87の322は、図2(または後述する図91、図98、図104、図106)のバッファ209に対応するもので、初期化用文書320で特定サイズが割り当てられたリングバッファを示す。あるいは、このリングバッファ322は、図示しないワークメモリの一部に確保されたバッファリングエリアであってもよい。
ここでは、リングバッファ322(図2では209)のバッファサイズを定義するため、Loading InformationファイルなどのXML形式で記述された初期化用文書320を使用する。XML文書内でのバッファ322(図2の209に対応)のアサインは、memoryタグのname属性の値をAssignとすることで定義し、また、アサインするサイズはmemoryタグのsize属性の値で定義する(この定義の記載方法は図87の例では321)。この初期化用文書320がロードされるたびに、バッファ322をアサインする。このとき、指定した量だけバッファ322にコンテンツが蓄積した時点を再生開始タイミングとし、その時点から再生を開始する再生開始タイミング判定用定義323を付け加えてもよい。この再生開始タイミング判定定義はmemoryタグのname属性をPlaybackとすることで定義し、バッファ322のアサインサイズはsize属性の値で定義する。なお、バッファアサイン直後、もしくは利用開始直前までに少なくとも一回、バッファ322はフラッシュ初期化しておく(このバッファフラッシュについては図97を参照して後述する)。
上記初期化用文書320は、エンハンスドDVDビデオディスク(図53のディスク、あるいは図103〜図106の231)においては、VclickデータVCD内(より具体的には、例えば図53のVclickインフォVCI内;図54ではVCKINDEX.IFOファイル内)に格納することができる。もしくは、初期化用文書320は、サーバ上におかれたダウンロード用のVclickデータに格納されていても良い。ディスク上の初期化用文書とサーバ上の初期化用文書が両方存在する場合はサーバ上の初期化用文書を常に参照する。または、バージョン管理によって参照する初期化用文書を決定しても良い。
図88は、この発明のさらに他の実施の形態に係るバッファアサイン時の処理手順を説明するフローチャートである。ネットワーク接続にてVclickストリームVCSをダウンロードする場合、回線状態によっては十分な速度でダウンロードできない時もある。その場合、無駄なバッファエリアを他のエンジンで利用することもできるので、バッファアサイン時には、以下のような処理を行うとよい:
<1>図87の初期化用文書320よりアサインサイズ321と再生開始サイズ323を読み出す(ステップS8801);
<2>ネットワークからダウンロードするかどうか判定する(ステップS8802);
<3>ダウンロードする場合は(ステップS8802イエス)、現在のネットワークの回線状態を検出する(ステップS8803)。
<4>検出された回線状態により、バッファのアサインサイズを調整する(ステップS8804)。たとえば、利用時間帯によってはインターネット回線がビジーで繋がりにくいことがあり、そのときはネットワークからのダウンロードでバッファの内容が更新される前にバッファの内容を読み出し切ってしまう可能性がある。その場合はVclickストリームの再生が途中で途切れる恐れがある。そのようなときは、過去の経験データなどに基づいて、回線状態に応じたバッファサイズを幾つか決めておくことが考えられる。たとえば、回線がいつでも繋がるような状態ではバッファサイズは2Mバイトとし、繋がりにくいときは8Mバイトとし、その中間状態では4Mバイトとする。そして、例えばバッファサイズに8Mバイトをアサインしたときは、回線が繋がっているときは、8Mバイト目一杯使ってVclickデータをバッファに入れられるだけ入れておく。そうすれば、一度回線が切られ、次に回線が繋がるまでの間にバッファリングしておくVclickデータの量が大きくなるので、Vclickストリームの再生が途中で途切れる恐れが少なくなる。
<5>ダウンロードしない場合は(ステップS8802ノー)、初期化用文書320に記載されたアサインサイズをアサインサイズとして、バッファ322をアサインする(ステップS8805);
<6>アサインサイズ分バッファ322をアサインする(ステップS8806)。
以上のように、初期化用文書320に記述されたアサインサイズを利用するか、回線状態によりアサインサイズを調整するかどうかの判断をする処理が可能である。また、回線状態によってアサインサイズを変更(図87では321のサイズを変更)した場合において、「再生開始タイミングが指定された」コンテンツであった場合(図87では323のサイズ指定がある場合)は、それに応じて、少なくとも“「変更されたアサインサイズ」≧「再生開始タイミング時の蓄積コンテンツサイズ」”となるように再生開始タイミング時の蓄積コンテンツサイズも変更する。
そうすれば、「再生開始タイミング時の蓄積コンテンツサイズ」も考慮して「変更されたアサインサイズ」を水増しする(例えばバッファアサインサイズを回線状態に応じて4Mバイトから2Mバイトに変更したが、そのときに再生開始タイミングが3Mバイトと指定されていたら、実際のバッファアサインサイズは少なくとも1Mバイト水増しして3Mバイト以上とする)といった必要性が無くなる。すなわち、この場合では図87の再生開始サイズ323を2Mバイト以下に変更することになる。これによって無駄なバッファエリア(上記の例では1Mバイト分)を他のエンジンで利用することができるようになる。
また、ネットワークの状態によって、同様に再生開始タイミング時のアサインサイズのみを調整することもできる。すなわち、“「現在のアサインサイズ」≧「再生開始タイミング時の蓄積コンテンツサイズ」”となるように、図87の再生開始サイズ(再生開始タイミング判定用定義)323の記述を変更する(現在のサイズ指定323よりも指定サイズを小さくする)。この場合は、再生開始までのVclickデータのバッファへのロード時間を短縮することができる。
図89は、この発明のさらに他の実施の形態に係るバッファの使用例を説明する図である。図89には、バッファ322(図2、図91等では209)の使用量の変化が例示されている(ここでは、バッファ作成から実際のデータの書込み開始までの処理過程は省略されている)。
実際にバッファ322(または209)へデータ書込みが始まった直後、図87に示す初期化用文書320内の再生開始タイミング判定用定義323に記載されたサイズ分(もしくは再生機器によって定義された分)323だけ一定量バッファ322にデータがたまるまでは再生は開始されない(図89の再生開始待ち状態324部分)。この再生が開始されるタイミングは、サーバ〜クライアント間の接続を開始してからの時間(ダウンロードを始めてからの時間)、またはバッファ322(または209)にコンテンツがどれだけ蓄積されたかのいずれかによって定義することができる。
サーバ〜クライアント間の接続が確立されてからの時間を使う場合は、ダウンロード速度とバッファ322(または209)容量によってその時間を決定する。この時間は、回線が切断されるなどのエラーによって再度接続が必要になった場合で、バッファ322内に蓄積されたコンテンツを使用して再度接続を確立してダウンロードを開始するようになった場合でも、再生が途切れない程度のコンテンツ(Vclickデータ)をバッファ322内にダウンロードできる時間であり、この時間は、再生機器側で定義し決定する。この場合は再生機器側で時間を定義することで環境に応じたそれぞれのスループットに最適な時間を定義することができる。
また、上記の時間をバッファ322(または209)内コンテンツ蓄積量で判断する場合は、次のようにすればよい。すなわち、回線が切断されるなどのエラーによって再度回線接続が必要になった場合でもバッファ322内に蓄積されたコンテンツを使用して再度接続を確立してダウンロードを開始するまで再生が途切れない程度のコンテンツをバッファ322内に蓄積している蓄積量で、上記の時間を定義する。
ここで、この実施の形態に適用される規格(EnhancedDVD規格あるいはEDVD規格)において最低スループットが規定(例えば128kbps)されているときは、「再生が途切れない程度のコンテンツをバッファ322内に蓄積している蓄積量で定義する」ことは、機器(プレーヤ)側での定義の他に、コンテンツの再生開始タイミングに定義しておくことが可能となる。
その後、再生開始時からは「データの書込み」と「データの再生のための読出し」が平行して行われる(図89の再生初期状態325部分)。バッファへのダウンロード速度がバッファからの再生利用量より十分早い場合には、バッファ322は徐々に使用量を増加させていく(図89の状態325内の右肩上がりカーブ参照)。しかしまだバッファ322は一杯にならない。バッファ322内のデータが初期化用文書320内のアサインサイズ321まで増加した後(図89のバッファフル状態326部分)は、時間の経過にともないバッファ322使用量はアプリケーションで利用したデータ分の減少とデータ読み込みによる増加を繰り返すため、図89のバッファフル状態326内の実線カーブ部分のように微小な増減を繰り返すことになる。
図90および図92〜図96は、この発明のさらに他の実施の形態に係るリングバッファの利用例を説明する図である。ここではバッファ322(図2、図91他では209)を決められたサイズ分で利用するので、リングバッファとして利用している。その利用方法を以下に示す。
図90ではバッファ322を連続したものと考え、図中では円327にて示す。円を左周り(反時計回り)328に新しく受信したデータを記録していくように利用する。現在受信完了位置331から左周りに受信したVclickストリームVCSを記録329し、現在再生位置332からも左周りでVclickストリームVCSを必要になる都度、送出330していく。
このような利用方法において、例えば図89の再生開始待ち状態324および再生初期状態325では、図92のように現在再生位置332から左、現在受信完了位置331までの領域341aはデータが書き込まれている状態で、現在受信完了位置331から右、現在再生位置332までの領域341はデータが書き込まれていない状態となる。次にある程度時間がたつとバッファ322(209)への書込みが、再生による読出しに追いついてしまいバッファフル状態(図89の326部分)になる。すると、図93に示されるように、現在再生位置331が現在受信完了位置332に近くなる。その後は「再生による読出し」で使用した分だけ、「書込み」を行うので、バッファ322使用量は微少な上下動を繰り返す。
以上のようなリングバッファ322を図2のバッファ209にあてはめて対応をとると、例えば以下のようになる。すなわち、VclickストリームVCSに含まれるアクセスユニットAUのタイムスタンプは昇順に並んでいる。図2のインターフェース・ハンドラ207は、メタデータ・マネージャ210に対して、ある動画像クロック値Tを送る。すると、メタデータ・マネージャ210は、受け取ったクロック値Tを含むアクセスユニットAUをバッファ209(図87では322)から検索する。該当するAUが検索されると、当該AUはバッファ209からメディアデコーダ217に転送される。この転送に伴い、当該AUが読み込まれた以前にバッファ209に読み込まれた(古い)AUが占める領域をバッファ209から解放する。この解放されたバッファエリアは、図92では領域341に対応する。メタデータ・マネージャ210は、解放された領域の総バイト数分だけVclickストリームVCSをネットワーク221から読み込むように、バッファ209に指示を出す。もしくは、メタデータ・マネージャ210はインターフェースハンドラ207を介してネットワーク・マネージャ208に解放された領域の総バイト数分だけVclickストリームVCSをネットワーク221から読み込むように指示を出す。
図91は、この発明のさらに他の実施の形態に係る「再生による読出し」おおび「書込み」のアルゴリズムを説明する図である。インターフェース・ハンドラ207よりメタデータ・マネージャ210に対して、ある動画像クロック値333を送る。メタデータ・マネージャ210は受け取ったクロック値333を含むAUを検索する。このとき、インターフェース・ハンドラ207からの動画像クロックの値から判断して、AUに重複がある場合は、メタデータ・マネージャ210で丸め込んでもよい(具体的には、重複のあるAUはそのうちの1つのAUの情報を用いる)。メタデータ・マネージャ210は該当するAUデータ334をバッファ209(図87では322)より読出し、メディアデコーダ216に該当データ335を送出する。送出後、インターフェース・ハンドラ207に送出した総バイト数336を通知する。インターフェース・ハンドラ207は送出した総バイト数336と等しいバイト数337を読込みよう、ネットワークマネージャ208に通知する。すると、ネットワークマネージャ208は、指示されたバイト数分、サーバ201からVclickストリームVCSを取り出し、バッファ209(322)に書き込む338。また、ネットワークマネージャ208は、書き込んだバイト数339をインターネットハンドラ207に通知する。以上の操作を必要都度繰り返す。これが基本モデルである。
次に、図94〜図96を参照して特殊なバッファモデルを説明する。このモデルでは、「現在受信完了位置331」と「現在再生位置332」に隔たりを持たせ、意図的に「現在再生位置よりも過去のデータを保持しておく」ようにしている。こうすることで、特殊再生時にユーザオペレーションに対する使用感あるいはレスポンスを改善している。仮に0.5ms毎のVclick_AUが2時間分あったとする。そのとき画面上には常に2つの対象オブジェクトが表示される場合、VclickストリームVCSのサイズは約7Mbyteとなる。またアサインされたバッファ322(図2、図91他では209)を2Mbyteとしたとして、図94の場合、意図的に25%のバッファを過去データ343として利用する。上記の条件であれば約8.5分のVclickストリームVCSがバッファにストックされている計算になる。仮に巻き戻し再生を行っても、過去分のデータがバッファに保持されているので、動画像の巻き戻し再生と同時再生されるVclickデータの再生も途切れることなく、ユーザへの使用感あるいはレスポンス性能を向上させることができる。
上記と同じ条件であれば、図95は意図的に50%のバッファを過去データ343として利用する。上記の条件であれば約17分のVclickストリームVCSがバッファにストックされている計算になる。仮に巻き戻しを想定した場合、より多くの過去分データを保持しておくことにより、動画像の巻き戻し再生と同時再生されるVclickデータの再生も長時間途切れることなく、ユーザへの使用感あるいはレスポンス性能を向上させることが可能となる。
また、図96の例では、意図的に75%のバッファを過去データ343として利用する。上記の条件であれば約25.5分のVclickストリームVCSがバッファにストックされている計算になる。仮に巻き戻しを想定した場合、さらに多くの過去分データを保持しておくことにより、動画像の巻き戻し再生と同時再生されるVclickデータの再生もさらに長時間途切れることなく、ユーザへの使用感あるいはレスポンス性能を向上させることが可能となる。
図97は、この発明のさらに他の実施の形態に係るバッファフラッシュ(初期化)時の処理手順(バッファフラッシュモデル)を説明するフローチャートである。すなわち、インターフェース・ハンドラ207からフラッシュ指示を受信してから(ステップS9701)、バッファ209をフラッシュ(消去)する(ステップS9702)。このバッファフラッシュは、以下のタイミングで行うことができる:
(a)初期化用文書によるバッファ生成時;
(b)再生中の映像の未来もしくは過去へのジャンプ操作(バッファ上に映像データがない場合);
(c)回線切断時(ストリーム取得先変更等、意図的な回線切断)…コネクションをクローズしたら、バッファをクリア。
換言すれば、バッファ(図2の209;図87の322)以外へのデータアクセスが発生する場合に、このバッファはクリアまたはフラッシュされる(ステップS9702)。
図98は、この発明のさらに他の実施の形態に係る「バッファクリア時のシーケンス」を説明する図である。この例では、バッファフラッシュのタイミングはインターフェース・ハンドラ207より通知され、インターフェース・ハンドラ207からメタデータ・マネージャ210に通知がある都度、バッファ209のフラッシュが行なわれる。
図99は、この発明のさらに他の実施の形態に係る「Get連続発行による特殊再生」(イベント発生の都度Vclickデータを要求するモデル)を説明する図である。ここでは、仮に回線を切断し、再度VclickストリームVCSをダウンロードする場合のモデルを示している。インターフェース・ハンドラ207よりネットワークマネージャ208に対して回線切断指示346(図98)を出す。ネットワークマネージャ208は回線断処理完了後、インターフェース・ハンドラ207に回線切断完了通知347(図98)を送信する。その後インターフェース・ハンドラ207はメタデータ・マネージャ210にバッファ209のクリア指示344(図98)を出す。メタデータ・マネージャ210は、クリア完了後、インターフェース・ハンドラ207にクリア完了通知352(図98)を送信する。その後、回線再接続が必要であれば、インターフェース・ハンドラ207は、ネットワークマネージャ208に対し、回線接続通知349(図98)を送信し、接続完了後、回線接続完了通知350(図98)を受信する。その後は必要な処理を行う。
またHTTPプロトコルには(Keep aliveの説明)接続を保ったままであれば、HTTP:GETメソッドが発行された順にデータを送り、メソッドの発行タイミングによりデータの送付は前後しないという特性があり、これをKeep Alive特性という。このKeep Alive特性を利用すると以下のような動作が可能となる。すなわち、Keep Alive特性はバッファのフラッシュを行わなければ情報が途切れることはない。かつ情報が前後することもないので、イベントが発生する都度、HTTP:GETメソッドを発行すれば、VclickストリームVCSが順次ダウンロードされる(図99)。
図100は、この発明のさらに他の実施の形態に係る「Get連続発行による特殊再生」(予めイベント発生順が分かっているモデル)を説明する図である。ここで、イベントの発生順が予め分かっているときは、一度にHTTP:GETメソッドを発行してもよい。このKeep Alive特性を利用することにより、VclickストリームVCSを任意の順にダウンロードし、シャッフル再生やランダム再生を行なうことができる。
図101は、この発明のさらに他の実施の形態に係る「早送り再生時のバッファ状態」を説明する図である。早送り(FF)あるいは早戻し(FR)再生時はDVDコンテンツの再生ペースが早まるので、これと同期するバッファ209からのメタデータの読み出しペースも早くなり、バッファ209にバッファリングされているメタデータの消費が早くなる。バッファ209へのメタデータの補充がこの高速消費に追いつかなくなると、場合によってはバッファ209が一時的に空になってしまう。すると、再びバッファ209に最低限のメタデータ(例えば図87の323に記述されるサイズのデータ)がバッファリングされるまで待ち時間が生じることになり、早いDVD再生速度に対してバッファ209からのメタデータの供給が追いつけずに、両者間の再生同期関係が成立しなくなる。
この問題は、早送りあるいは早戻し再生時におけるバッファリングでは、メタデータ(Vclickデータ)の読み飛ばしを行うようにアプリケーション(制御ファームウエア)を組むことで、解決できる。例えば、0.1秒毎に10秒分バッファリングしたときのデータ量は、読み飛ばしして例えば1秒毎に100秒分バッファリングしたときと同じになる。この場合、10倍速のFF/FR再生に合わせてバッファ209からメタデータの読み出しがなされても、再生時間ベースでみれば、バッファ209のデータ消費レートは、見かけ上、読み飛ばしをしない場合の1倍速の通常再生時の消費レートと同じになる。このようにして、バッファ209へのメタデータのバッファリングが早いDVD再生速度に追いつけるように考慮すれば、上記の問題は解決できる。
図101では、実線三角カーブで、上記読み飛ばしがない(あるいは読み飛ばしの間隔が不十分)な場合のバッファ209のデータ消費状態を例示している。この場合は、早いDVD再生に合わせてバッファ209内のメタデータが短時間に消費されてしまうので、バッファ209にバッファリングされているメタデータ量の増減が激しくなる。一方、図101の破線三角カーブは、適切な読み飛ばしが行われてバッファリングが再生速度に実用上問題なく追いついている場合の、バッファ209のデータ消費状態を例示している。
図102は、この発明のさらに他の実施の形態に係る「早送りまたは早戻し再生時のアクセスユニットの取り扱い方法(早送り/早戻しモデル)」を説明する図である。早送り時は、メタデータマネージャ210が、バッファ209からメディアデコーダ216に転送するAUを間引く。インターフェース・ハンドラ207は、メタデータ・マネージャ210に対して、動画像クロック(T)353、356を送る。メタデータ・マネージャ210は、受け取ったクロックTに適当な時間α354とβ355(ただしα>β)を加えた時刻を計算し、時刻T+βから時刻T+αに含まれるタイムスタンプを有するAU(図102ではAU2とAU5)をメディアデコーダ216に転送するように指示を出す。かつ、送出したサイズ分をネットワークから読み込むように指示を出す。αとβの値は早送り速度に依存して定めることができる。こうすることで、早送り時のAUを速度に応じて必要分転送することができ、早送り再生時にもVclickデータを再生することが可能となる。図101はこの場合のバッファ209使用量の変化例を示す。
図103は、この発明のさらに他の実施の形態に係る「Vclickストリームが動画像データ記録媒体上にあったときのモデル」(シームレス再生を保証する場合)を説明する図である。また、図104は、図103のモデルにおける処理を説明する図である。
いま、VclickストリームVCSが動画像データ記録媒体231上にあった場合を想定する。シームレス再生させる必要があるので、動画像データ記録媒体231に対するシークを発生させないようにする必要がある。そのため、メタデータ・マネージャ210は、インターフェース・ハンドラ207の指示により、VclickストリームVCSを動画像再生前に全て読み込んでおく必要がある(図103)。その場合、図104のような処理を行う。
すなわち、インターフェース・ハンドラ207はディスク装置マネージャ213に対しVclickストリームVCSの取得を指示357する。ディスク装置マネージャ213は動画像データ記録媒体231から指示されたバイト数分の当該VclickストリームVCSを取得しバッファ209に記録358する。バッファ209に記録した後、インターフェース・ハンドラ207にVclickストリーム取得済応答359を送信する。インターフェース・ハンドラ207は、メタデータ・マネージャ210に対し、Vclickストリーム取得済応答360を通知する。インターフェース・ハンドラ207は、Vclickストリーム取得済応答360を送信した後、動画像の再生を行う。
図105は、この発明のさらに他の実施の形態に係る「Vclickストリームが動画像データ記録媒体上にあったときのモデル」(シームレス再生を保証しない場合)を説明する図である。また、図106は、図105のモデルにおける処理を説明する図である。
図103〜図104の場合とは逆に、シークを発生させる場合は、動画像の再生を一旦止める必要が出てくる(図105)。一般的には、メタデータ・マネージャ210は、バッファ209を監視しておき、バッファ209のVclickストリームVCSが空(エンプティ)状態となった場合、イベント・ハンドラ207に「Vclickストリーム取得要求361」を通知する。イベント・ハンドラ207は、動画像の再生を止める等の読み込み準備を行った後、改めて図104と同じシーケンスを繰り返す(図106)。こうすることで、Vclickデータがバッファ209内にある場合はシークを発生させることなく、シームレス再生を補償することができる。なお、シームレスの補償をしなくても良い場合は、バッファ209内にデータがなくても良く、読み込み処理から行なうことで任意の場所へアクセスできる。
上述した実施の形態において、図87の初期化文書320によってバッファ209の利用方法を最適化できる。また、プレーヤ依存ではなくコンテンツ依存にてバッファリング処理時間を短縮させ、より少ないバッファ容量でメタデータの再生を行うことが可能になる。
さらに、ユーザが早送り、巻戻し、ジャンプ再生、シャッフル再生、ランダム再生等の特殊再生をする場合においても、図94〜図96のバッファモデルを採用することによって、例えば合計34分のメタデータを自由にバッファにアサインし、動画像とともにVclickデータのシームレスな再生を保障することができる。
なお、この発明は上記した実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を種々変形して具体化することができる。例えば、この発明は現在世界的に普及しているDVD−ROMビデオのみならず、近年急速に需要が伸びている録画再生可能なDVD−VR(ビデオレコーダ)にも適用できる。さらには、近々普及が始まるであろう次世代HD−DVDの再生系または録再系にも適用可能である。
また、図2のバッファ209は、図87以降を参照して説明したリングバッファに限定されるものではなく、通常のメモリエリアの一部をバッファ209として利用することも、ファーストイン・ファーストアウト型のシリアルバッファをバッファ209として利用することも可能である。
さらに、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構成要素を適宜組み合わせても良い。
200…クライアント装置;201…サーバ装置;202…Vclickエンジン;203…動画再生エンジン;209、322…バッファ(リングバッファ);221…サーバ装置とクライアント装置を結ぶネットワーク;301〜305…Vclickアクセスユニット;400…Vclickアクセスユニットのオブジェクト領域データ;401…Vclickアクセスユニットのヘッダ;402…Vclickアクセスユニットのタイムスタンプ;403…Vclickアクセスユニットのオブジェクト属性情報。