以下、図を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した情報処理装置としての再生装置1の構成例を示すブロック図である。
コントローラ21は、予め用意されている制御プログラムを実行するか、または、光ディスクドライブ22を制御して光ディスク11に記録されているナビゲーションプログラム(後述)を読み出し、メモリ23に展開して実行することで、再生装置1の全体の動作を制御する。例えば、コントローラ21は、光ディスク11が装着されたとき、所定のメニュー画面を外部の表示装置に表示させることができる。
光ディスクドライブ22は、コントローラ21による制御に従って光ディスク11からデータを読み出し、読み出したデータを、コントローラ21、メモリ23、または、デコーダ26に出力する。光ディスク11から読み出された情報が、ナビゲーションプログラムやPlayListなどであった場合、光ディスクドライブ22により読み出された情報は、コントローラ21、または、メモリ23に出力される。光ディスク11から読み出された情報が、AVストリームやテキストデータであった場合、光ディスクドライブ22により読み出された情報は、デコーダ26に出力される。
図2は、記録媒体のアプリケーションフォーマットの例を示す図である。ここで言う記録媒体とは、本発明を適用した再生装置1に装着される光ディスク11を含む他、例えば、磁気ディスクや半導体メモリ等も含む。
このアプリケーションフォーマットは、AV(Audio Visual)ストリームの管理のためにPlayListとClipの2つのレイヤをもつ。ここでは、1つのAVストリームまたはテキストデータとそれに付随する情報であるClip Informationのペアを1つのオブジェクトと考え、それらをまとめてClipと称する。以下、AVストリームのデータファイルをAVストリームファイルと称する。また、Clip InformationのデータファイルをClip Informationファイルと称する。
一般的に、コンピュータ等で用いられるファイルはバイト列として扱われるが、AVストリームファイルのコンテンツは時間軸上に展開され、Clipのアクセスポイントは、主に、タイムスタンプでPlayListにより指定される。
Clip中のアクセスポイントがタイムスタンプでPlayListにより示されている場合、Clip Informationファイルは、タイムスタンプから、AVストリームファイル中のデコードを開始すべきアドレス情報を見つけるために用いられる。
PlayListはAVストリームの再生区間を示す情報の集合である。あるAVストリーム中の1つの再生区間を示す情報はPlayItemと呼ばれ、PlayItemは、時間軸上の再生区間のIN点(再生開始点)とOUT点(再生終了点)のペアで表される。したがって、PlayListは、図2に示されるように1つ、または複数のPlayItemにより構成される。
図2において、左から1番目に図示されている第1のPlayListは2つのPlayItemから構成され、その2つのPlayItemにより、左側に図示される第1のClipに含まれるAVストリームの前半部分と後半部分がそれぞれ参照されている。また、左から2番目に図示されている第2のPlayListは1つのPlayItemから構成され、それにより、右側に図示されている第2のClipに含まれるAVストリーム全体が参照されている。更に、左から3番目に図示されている第3のPlayListは2つのPlayItemから構成され、その2つのPlayItemにより、左側に図示されている第1のClipに含まれるAVストリームの所定の部分と、右側に図示されている第2のClipに含まれるAVストリームの所定の部分とがそれぞれ参照されている。
ナビゲーションプログラム(Navigation program)は、PlayListの再生の順序や、PlayListのインタラクティブな再生をコントロールする機能を、コントローラ21に実行させるためのプログラムである。また、ナビゲーションプログラムは、各種の再生の実行をユーザが指示するためのメニュー画面を表示する機能なども有する。このナビゲーションプログラムは、例えば、Java(登録商標)などのプログラミング言語で記述され、光ディスク11などの記録媒体に記録される。例えば、ナビゲーションプログラムがコントローラ21により実行されて、そのときの再生位置を表す情報として、図2において左から1番目に図示される第1のPlayListに含まれる第1のPlayItemが指定された場合、そのPlayItemが参照する、左側に図示される第1のClipに含まれるAVストリームの前半部分の再生が行われる。
また、図2を用いて説明したPlayListには、PlayItemにより指定されるメインパス(Main Path)に加えて、図3に示されるようなサブプレイアイテム(Sub Play Item)を用いて指定されるサブパス(Sub path)の情報を含ませるようにすることもできる。SubPlayItemを定義すると、例えば、PlayItemにより指定されるClip(例えば、MPEG2トランスポートストリーム)に多重化されていない、独立したデータストリームをAVストリーム再生に同期して再生させることができる。
例えば、PlayItemにより指定されるメインパス(Main Path)のClip AVストリームに対応させて、テキスト字幕ファイル、および、レンダリングに必要となるフォントファイルから構成される字幕関連情報と、字幕関連情報の再生区間を指定したSubPlayItemを用意することで、Clip AVストリームの再生と同時に、テキスト字幕ファイルに記載されているデータに対応する字幕を、フォントファイルに記載されているフォントスタイルデータに基づいた表示フォントで、表示装置に表示させるようにすることができる。
テキスト字幕ファイルおよびレンダリングに必要となるフォントファイルから構成される字幕関連情報や、SubPlayItemは、予め光ディスク11に記録されていても良いし、ネットワーク2を介して、サーバ3からダウンロードされるものであっても良いし、または、リムーバブルメディア(例えば、後述するリムーバブルメディア28)を用いて取得することができるようにしても良い。
再び、図1の説明に戻る。
メモリ23は、コントローラ21が各種の処理を実行する上において必要なデータなどを適宜記憶する。ローカルストレージ24は、例えば、HDD(Hard Disk Drive)などより構成される。
インターネットインタフェース25は、有線または無線によりネットワーク2に接続されており、コントローラ21からの制御に従って、ネットワーク2を介して、サーバ3との間で通信を行い、サーバ3からダウンロードされたデータをローカルストレージ24に供給する。サーバ3からは、例えば、そのとき再生装置1に装着されている光ディスク11に記録されている、図2を用いて説明したデータをアップデートさせるデータがコンテンツとしてダウンロードされる。ローカルストレージ24は、サーバ3からネットワーク2経由でダウンロードしたコンテンツを記録することができる。
デコーダ26は、光ディスクドライブ22、または、ローカルストレージ24から供給されるAVストリーム、または、テキストデータをデコードし、得られたビデオ信号とオーディオ信号を外部の表示装置に出力する。表示装置においては、デコーダ26によりデコードされた信号に基づいて、例えば、光ディスク11に記録されているコンテンツの出力(映像の表示、音声の出力)が行われる。
操作入力部29は、例えば、ボタン、キー、タッチパネル、ジョグダイヤル、マウスなどの入力デバイスや、所定のリモートコマンダから送信される赤外線などの信号を受信する受信部により構成され、ユーザの操作入力を取得し、コントローラ21に供給する。
また、コントローラ21には、必要に応じてドライブ27も接続されており、ドライブ27には、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVDを含む)、光磁気ディスク(MD(登録商標)(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア28が装着される。
次に、再生装置1に装着された光ディスク11に記録されたデータ、および、ローカルストレージ24に記憶されたデータを再生する方法について説明する。
再生装置1はHDD(Hard Disk Drive)などよりなるローカルストレージ24を内部に備える。再生装置1は、有線または無線によりネットワーク2に接続されており、サーバ3からネットワーク2経由でダウンロードしたコンテンツを、このローカルストレージ24に記録することができる。サーバ3からは、例えば、そのとき再生装置1に装着されている光ディスク11に記録されている映画などのコンテンツをアップデートさせるデータをダウンロードすることができる。
ダウンロードされたコンテンツがローカルストレージ24に記録されている状態で、操作入力部29から、光ディスク11に記録されているコンテンツの再生が指示されたとき、コントローラ21は、光ディスク11に記録されているコンテンツと、ローカルストレージ24に記録されているコンテンツを関連付けて、コンテンツの再生処理を実行する。
図4は、図1のコントローラ21の機能構成例を示すブロック図である。
図4の各構成は、予め用意されている制御プログラムがコントローラ21により実行されることにより、または、光ディスク11に記録されているナビゲーションプログラムがコントローラ21により実行されることにより実現される。
メニュー画面表示制御部31は、光ディスク11に記録されているコンテンツの音声、または字幕の言語や、映像のアングルを選択するときにユーザにより操作されるボタンや、ダウンロードするアップデートファイルを選択するときにユーザにより操作されるボタンなどを含むメニュー画面を外部の表示装置に表示させる。
操作入力取得部32は、操作入力部29から入力された、ユーザからの操作入力を示す信号を取得し、ユーザからの操作入力を示す信号を、メニュー画面表示制御部31、データ取得部33、または、再生制御部37のうちの対応する箇所に出力する。
データ取得部33は、図1のインターネットインタフェース25において行われる通信、または、ドライブ27によるリムーバブルメディア28との情報の授受を制御する。例えば、データ取得部33は、ユーザが指示したアップデートファイルをサーバ3からダウンロードして取得し、取得したファイルをローカルストレージディレクトリ管理部34に出力する。
ローカルストレージディレクトリ管理部34は、ローカルストレージ24のディレクトリを管理し、ローカルストレージ24に対するデータの書き込み、および、ローカルストレージ24からのデータの読み出しを制御する。例えば、ローカルストレージディレクトリ管理部34の制御によりローカルストレージ24から読み出されたPlayListは、メモリ23に出力され、ローカルストレージ24から読み出されたAVストリームの音声データおよび映像データやテキスト字幕ファイルのテキストデータは、デコーダ26に出力される。また、ローカルストレージディレクトリ管理部34は、後述するように、光ディスク11のファイルシステムと、ローカルストレージ24のファイルシステムとのマージがファイルシステムマージ処理部36により行われる場合、ローカルストレージ24のファイルシステムに関する情報をファイルシステムマージ処理部36に出力する。
光ディスクディレクトリ管理部35は、光ディスク11のディレクトリを管理し、光ディスク11からの各データの読み出しを制御する。光ディスク11には識別情報であるStudio_idとContent_idが設定されており、光ディスクディレクトリ管理部35の制御により、光ディスク11から読み出されたStudio_idとContent_idは、データ取得部33とローカルストレージディレクトリ管理部34に出力される。また、光ディスクディレクトリ管理部35の制御により、光ディスク11から読み出されたPlayListは、メモリ23に出力され、光ディスク11から読み出されたAVストリームの音声データおよび映像データやテキスト字幕ファイルのテキストデータは、デコーダ26に出力される。また、光ディスクディレクトリ管理部35は、後述するように、光ディスク11のファイルシステムと、ローカルストレージ24のファイルシステムとのマージがファイルシステムマージ処理部36により行われる場合、光ディスク11のファイルシステムに関する情報をファイルシステムマージ処理部36に出力する。
ファイルシステムマージ処理部36は、光ディスクディレクトリ管理部35から供給される光ディスク11のファイルシステムと、ローカルストレージディレクトリ管理部34から供給されるローカルストレージ24のファイルシステムをマージし、1つの仮想的なファイルシステムを生成する。ファイルシステムマージ処理部36は、マージすることで生成した仮想的なファイルシステムを再生制御部37に出力する。以下、適宜、第1の実施の形態においてファイルシステムマージ処理部36によりマージされることで生成される1つのファイルシステムを第1の仮想ファイルシステムと称する。
再生制御部37は、ファイルシステムマージ処理部36から供給される第1の仮想ファイルシステムで指定されるナビゲーションプログラムを実行し、コンテンツの再生を制御する。具体的には、再生制御部37はメモリ23に供給され、記憶されたPlayListを参照し、ローカルストレージディレクトリ管理部34または光ディスクディレクトリ管理部35を制御して、光ディスク11またはローカルストレージ24に記録されているAVストリームの音声データ、映像データ、および、必要に応じてテキスト字幕ファイルのテキストデータを読み出させ、図1のデコーダ26を制御して、光ディスク11またはローカルストレージ24に記録されているAVストリームの音声データ、映像データ、および、必要に応じてテキスト字幕ファイルのテキストデータのデコード(再生)を行わせる。
ここで、ファイルシステムマージ処理部36により行われる、光ディスク11のファイルシステムと、サーバ3からダウンロードするなどによりローカルストレージ24に記録されたファイルシステムのマージについて説明する。例えば、このマージは光ディスク11に記録されているコンテンツの再生が指示されたときに行われる。
図5は、光ディスク11のファイルシステム(左側)と、ローカルストレージ24のファイルシステム(右側)の例を示す図である。図に示されるように、各ファイルシステムはディレクトリ構造を有している。
光ディスク11の「root」の下には「BDMV」の名前が設定されたフォルダが用意され、そのフォルダに、「info.bdmv」の名前が設定されたファイルと、「Navigation.class」の名前が設定されたファイルが格納されている。以下、これらのファイルを、適宜、info.bdmvファイル、Navigation.classファイルとそれぞれ称する。他のファイル、フォルダについても同様に、「ファイル名」に「ファイル」を付加した形で、または、「フォルダ名」に「フォルダ」を付加した形で称する。
info.bdmvファイルには、光ディスク11の製作者の識別情報であるStudio_id、コンテンツの識別情報であるContent_idが記述されている。
すなわち、Studio_idとContent_idにより、流通するコンテンツ全体の中から光ディスク11に記録されているコンテンツが識別される。図5の例においては、Studio_idは「xxx」であり、Content_idは「yyy」である。なお、Studio_idとContent_idは、ダウンロードするアップデートファイルを識別するためにも利用される。
Navigation.classファイルは、所定のプログラム言語で記述されたナビゲーションプログラムである。
BDMVフォルダにはまた、「PLAYLIST」の名前が設定されたフォルダ(PLAYLISTフォルダ)、「CLIPINF」の名前が設定されたフォルダ(CLIPINFフォルダ)、「STREAM」の名前が設定されたフォルダ(STREAMフォルダ)が格納されている。
図5においては、PLAYLISTフォルダには、「11111.mpls」の名前が設定されたファイルと「22222.mpls」の名前が設定されたファイルが格納されている。これらのファイルは、AVストリームファイルなどの再生区間をタイムスタンプで表すPlayListである。
CLIPINFフォルダには、「01000.clpi」の名前が設定されたファイルと「02000.clpi」の名前が設定されたファイルなどが格納されている。これらのファイルは、タイムスタンプと、AVストリームファイルまたは字幕関連情報のアドレス情報の対応を表すClip Informationである。
STREAMフォルダには、「01000.m2ts」の名前が設定されたファイルと「02000.m2ts」の名前が設定されたファイルなどが格納されている。これらのファイルは、AV streamや字幕関連情報などである。
一方、ローカルストレージ24の「root」の下には「xxx-yyy」の名前が設定されたフォルダが格納されている。フォルダ名の「xxx-yyy」は、このフォルダに格納されているデータが、光ディスク11に記録されている、Studio_id「xxx」、Content_id「yyy」で識別されるコンテンツに対応するデータであることを表す。xxx-yyyフォルダは、Studio_id「xxx」、Content_id「yyy」を有する光ディスク11が再生装置1に装着され、アップデートファイル(xxx-yyyフォルダに格納される各ファイル)のダウンロードが行われたときに作成されるものである。
xxx-yyyフォルダには、info.bdmvファイル、Navigation.classファイルが格納されている。このinfo.bdmvファイルは光ディスク11のinfo.bdmvファイルと同じであり、Navigation.classファイルは、光ディスク11のNavigation.classファイルをアップデートさせたファイルである。すなわち、ローカルストレージ24のNavigation.classファイルは、光ディスク11に記録されているものと較べて、バージョンアップされたナビゲーションプログラムを記述するファイルである。
xxx-yyyフォルダには、更に、PLAYLISTフォルダ、CLIPINFフォルダ、STREAMフォルダが格納されている。
図5においては、ローカルストレージ24のPLAYLISTフォルダに「11111.mpls」の名前が設定されたファイルと「22222.mpls」の名前が設定されたファイルが格納されており、このうちの「22222.mpls」の名前が設定されたファイルは、光ディスク11の同じ名前が設定されているファイルをアップデートしたファイルとされている。例えば、ローカルストレージ24の「22222.mpls」の名前が設定されたファイルは、ダウンロードされたUpdate PlayListを表し、このファイルに、PlayListにSubPlayItemが付加されたデータが記述される。
ローカルストレージ24のCLIPINFフォルダには、光ディスク11にも記録されている、「01000.clpi」の名前が設定されたファイルと「02000.clpi」の名前が設定されたファイルの他に、「04000.clpi」の名前が設定されたファイルが格納されている。すなわち、「04000.clpi」の名前が設定されたファイルは、ダウンロードにより新たに取得されたファイルである。
ローカルストレージ24のSTREAMフォルダには、「04000.m2ts」の名前が設定されたファイルが格納されている。このファイルは、ダウンロードにより新たに取得されたファイルである。
なお、同様に、図5の例においては、ローカルストレージ24の「root」の下には「xxx-aaa」の名前が設定されたフォルダと、「yyy-bbb」の名前が設定されたフォルダが格納されている。これらは、Studio_id「xxx」、Content_id「aaa」で識別される光ディスク、Studio_id「yyy」、Content_id「bbb」で識別される光ディスクが再生装置1に装着されたときにそれぞれ作成されたものであり、それぞれのコンテンツに対応するファイルが格納されている。
このような光ディスク11のファイルシステムとローカルストレージ24のファイルシステムがある場合、コントローラ21のファイルシステムマージ処理部36は、光ディスク11のファイルシステムと、ローカルストレージ24のファイルシステムをメモリ23上でマージし、第1の仮想ファイルシステムを生成する。
具体的には、ファイルシステムマージ処理部36は、同じ名前のファイルが光ディスク11とローカルストレージ24の両方にある場合、それぞれのファイルに記述されるタイムスタンプ(作成日時)やバージョンに基づいて、ダウンロードにより取得されたファイルがコンテンツの再生時に参照するファイルとされるようにマージを行う。また、ファイルシステムマージ処理部36は、光ディスク11にはなく、ローカルストレージ24にのみあるファイルがコンテンツの再生時に参照するファイルとされるようにマージを行う。
図6は、図5の2つのファイルシステムから得られる第1の仮想ファイルシステムの例を示す図である。
図6においては、光ディスク11に記録されているファイルのうち、Navigation.classファイルと「22222.mpls」の名前が設定されたファイルが、ダウンロードされたファイルによりアップデートされている(置き換えられている)。また、光ディスク11には記録されていない、「04000.clpi」の名前が設定されたファイルと、「04000.m2ts」の名前が設定されたファイルが追加されている。
すなわち、ダウンロードされたファイルに、アップデートされたナビゲーションプログラムやPlayListがある場合、そのファイルによって、光ディスク11の同じ名前のファイルがアップデートされる(置き換えられる)。また、光ディスク11にはないClipのファイル(Clip Informationファイル、AVストリームファイル)がダウンロードされた場合、それがファイルシステムに追加される。
このようにして生成された第1の仮想ファイルシステムを通して、ナビゲーションプログラムに基づくAVストリームへのアクセスが行われる(直接、光ディスク11やローカルストレージ24にアクセスが行われるのではない)。
したがって、新たにダウンロードまたはコピーされた新規ナビゲーションプログラムの処理により、光ディスク11に予め記憶されているデータと、新たにダウンロードまたはコピーされてローカルストレージ24に記憶されたデータとは区別されることなく処理される。図7に示されるように、所定の区間のAVストリームに対応させて字幕を表示させるための字幕関連情報が、複数の言語の字幕に対応するテキスト字幕ファイルを構成するテキストサブタイトルデータと、フォントファイルを構成するデータにより構成されている場合、ユーザの操作入力に基づいて、光ディスク11に予め記憶されている字幕関連情報と、新たにダウンロードまたはコピーされてローカルストレージ24に記憶された字幕関連情報とにより表示可能とされる複数の言語による字幕のうち、ユーザが所望する言語の字幕データが、光ディスク11に予め記憶されているAVストリームに対応付けられて、処理されて表示される。
一方、光ディスクの販売者側(販売者、製作者)は、例えば、アラビア語の字幕情報は後からネットワーク2を介して提供するものとし、英語字幕のみを表示可能な状態で、映画が記録された光ディスク11を販売することができる。すなわち、光ディスクの販売者側は、一度に多言語を翻訳することなく、より早いタイミングでディスクを販売し、必要に応じて、他の言語に対応する字幕関連情報を追加して提供することが可能になる。また、主な言語に対応する地域に光ディスクを先行販売し、他の言語の翻訳処理の終了後、光ディスクの販売地域を後から追加するとともに、対応する言語のテキスト字幕ファイルのダウンロードサービスを開始するようにすることなども可能になる。
光ディスクの販売者側(販売者、製作者)は、光ディスク11に予め記憶されているAVストリームに対応付けて字幕データを表示可能とするために、少なくとも、アップデートされた新規のプレイリストファイルと、テキスト字幕ファイルを配布する必要があり、これに加えて、テキスト字幕ファイルに記載されているテキストデータに対応する字幕の表示形式を定義するためのフォントファイルを配布するようにしても良い。
このような追加して配布される対象となるデータ(ローカルストレージ24に記憶されるデータに対応する)のアーカイブを図8に示す。
追加して配布するデータには、プレイリストファイル(PlayList_file)、テキストサブタイトルファイルの番号を示す8ビットの番号情報(number_of_TextSubTitle)、および、上述したテキスト字幕ファイルに対応するテキストサブタイトルファイル(text_subtitle_file)が含まれ、更に、フォントファイル(font_file)が含まれる場合がある。
図9は、SubPlayItemのシンタックスを示す図である。
Ref_to_STC_idの8ビットのフィールドは、Clipが参照するSTCシーケンスの識別子を指定する。SubPlayItem_IN_timeは、SubPlayItemの再生開始時刻を指定する。SubPlayItem_OUT_timeは、SubPlayItemの再生終了時刻を指定する。すなわち、SubPlayItem_IN_timeおよびSubPlayItem_OUT_timeで、SubPlayItemの再生区間を指定することができる。なお、SubPlayItem_IN_timeおよびSubPlayItem_OUT_timeに記載される時刻情報は、STCで使用されている45kHzのクロックをベースに表現される。
number_of_ClipTextSubtitleの8ビットのフィールドは、SubPlayItem中で定義する字幕のテキストの総数を指定する。language_idの8ビットのフィールドは、字幕として使用する言語の識別子を指定する。language_idフィールドのデータは、ISO/IEC 639-1規格に従うものとする。character_code_idの8ビットのフィールドは、文字データの符号化方式の識別子を指定する。font_format_idの8ビットのフィールドは、フォントフォーマットの識別子を指定する。
font_file_path_lengthの16ビットのフィールドは、font_file_pathに記載されるフォントファイルのパス名称のバイト数を指定する。このフィールドには、font_file_pathのバイト数として、0を指定することができる。0が指定された場合は、再生装置1に予め保存されている内蔵フォントが指定されたものとして処理される。font_file_pathは、字幕データを描画するために使用するフォントファイルのパス名称を指定する。font_file_pathのフィールドに、空文字列が指定された場合、再生装置1に予め保存されている内蔵フォントが指定されたものとして処理される。font_file_path本フィールド値は、ISO/IEC 646方式で符号化されるものとする。
subtitle_file_path_lengthの16ビットのフィールドは、subtitle_file_pathに記載されるテキスト字幕ファイルのパス名称のバイト数を指定する。subtitle_file_pathは、テキスト字幕ファイルのパス名称を指定する。subtitle_file_pathフィールド値は、ISO/IEC 646方式で符号化されるものとする。
comment_lengthの16ビットのフィールドは、commentに記述される情報のバイト数を指定する。Commentには、テキスト字幕に関するコメントが記述される。なお、Commentに記載されるコメントは、文字集合ISO/IEC 646を使用して記述するものとされている。
本実施の形態では、テキスト字幕ファイル(テキストサブタイトルファイルであって、図8で言うtext_subtitle_file)は、図10に示されるようなストリームファイルとして構成されている。以下、このようにストリームファイルとして構成されるテキスト字幕ファイルを、テキストサブタイトルストリームファイル(Text_Subtitle_Stream File)と称する。
図10の一番上の図に示されるように、テキストサブタイトルストリームファイルは、伝送時には、複数のトランスポートパケット(図10中TPと記述されているパケットであり、以下、その記載に併せてTPと称する)から構成されるトランスポートストリームの形態を取っている。
なお、図10の例では、トランスポートストリームは、0x1800という同一のPIDを有するTPのみで構成されている。換言すると、図10の例では、トランスポートストリームは、テキストサブタイトルストリームファイルの一部に対応するTPのみで構成されている。即ち、図10の例では、トランスポートストリームは、テキストサブタイトルストリームファイルのみから構成されている。
このようなトランスポートストリームは、データ処理時(例えば記録処理時や再生処理時)またはその前に、図10の上から2番目の図に示されるように、PES(Packetized Elementary Stream)パケットを単位とするストリームに変換される。即ち、図10の上から2番目の図は、PESパケット(PES Packet)を単位とするテキストサブタイトルストリームファイルの構成例を示している。テキストサブタイトルストリームファイルを構成する複数のPESパケットのうちの一番先頭のPESパケットは、Dialog Style Segmentと称されている。このDialog Style Segmentが、後述する属性データに対応するPESパケットである。また、Dialog Style Segmentに続く複数のPESパケットのそれぞれは、Dialog Presentation Segmentと称されている。このDialog Presentation Segmentが、後述する文字オブジェクトに対応するPESパケットである。
図11は、このようなテキストサブタイトルストリーム(Text_subtitle_stream)ファイルのシンタックスを示す図である。
図11において、number_of_dialog_presentation_segmentsの16ビットのフィールドは、Dialog Style Segmntに続くDialog Presentation Segmentの個数を指定する。即ち、テキストサブタイトルストリーム(Text_subtitle_stream)ファイルは、先頭にDialog Style Segmentが配置され、その後には、number_of_dialog_presentation_segmentsで指定された個数分のDialog Presentation Segmentが続いて配置されて構成されることになる。
図12は、1つのセグメント(Segment)の一般的なシンタックスを示す図である。
図12に示されるように、1つのセグメント(Segment)は、segment_descriptorとsegment_dataとから構成される。
図13は、segment_descriptorのシンタックスを示す図である。
segment_typeの8ビットのフィールドは、セグメントのタイプを指定する。具体的には、segment_typeには、図14に示されるセグメントのタイプのうちの所定の1つが、それに対応する値(図14中同一行の値)で指定される。即ち、セグメントのタイプがDialog Style Segmentの場合、0x81がsegment_typeに設定される。また、セグメントのタイプがDialog Presentation Segmentの場合、0x82がsegment_typeに設定される。なお、0x00乃至0x13、0x19乃至0x7F、および、0x83乃至0xFFは、予備として用意されている。また、0x14乃至0x18、および、0x80は、グラフィックストリーム用のセグメントを指定する値として用意されている。
segment_lengthの16ビットのフィールドは、このセグメント(segment)のバイト数を指定する。
このような図12乃至図14のシンタックスを有するsegmentのうちの、Dialog Style Segmentのシンタックスは図15に示される通りになる。
即ち、図12のsegment_dataは、図15のDialog Style Segmentではdialog_style_setとなる。
図16と図17は、このdialog_style_setのシンタックスを示している。詳細については後述するが、このシンタックスにより、本発明の特徴のひとつである「字幕等を構成するテキストで利用される文字オブジェクトにアウトラインを付ける」ことが実現可能になる。
図16において、player_style_flagの1ビットのフィールドは、このdialog_style_setをユーザ独自のスタイルに変更することの許可の有無を指定する。即ち、図18に示されるように、その許可を行わない(禁止する)場合には、player_style_flagとして0bが指定される。これに対して、その許可を行う場合には、player_style_flagとして1bが指定される。
number_of_region_stylesの8ビットのフィールドは、このdialog_style_setで使われるregion_style(後述)の個数を指定する。number_of_user_stylesの8ビットのフィールドは、このdialog_style_setで使われるuser_style(後述)の個数を指定する。
region_style_idの8ビットのフィールドは、対象のregion_style(リージョン スタイル)の識別子を指定する。region(リージョン)とは描画領域を示す。
region_horizontal_positionの16ビットのフィールドは、対象のリージョンの水平方向座標を指定する。region_vertical_positionの16ビットのフィールドは、対象のリージョンの垂直方向座標を指定する。region_widthの16ビットのフィールドは、対象のリージョンの幅を指定する。region_heightの16ビットのフィールドは、対象のリージョンの高さを指定する。region_bg_palette_entry_id_refの8ビットのフィールドは、対象のリージョンのバックグラウンドの色を指定する。
text_box_horizontal_positionの16ビットのフィールドは、対象のリージョン中のテキストボックス(字幕を構成するテキストが表示される範囲)の水平方向座標を指定する。text_box_vertical_positionの16ビットのフィールドは、そのテキストボックスの垂直方向座標を指定する。text_box_widthの16ビットのフィールドは、そのテキストボックスの幅を指定する。text_box_heightの16ビットのフィールドは、そのテキストボックスの高さを指定する。
text_flowの8ビットのフィールドは、対象のリージョン中のテキストボックスに表示されるテキストの表示方向を指定する。具体的には、text_flowには、図19に示される表示方向のうちの所定の1つが、それに対応する値(図19中同一行の値)で指定される。即ち、表示方向が水平方向のうちの左から右に向かう方向である場合、1がtext_flowに指定される。表示方向が水平方向のうちの右から左に向かう方向である場合、2がtext_flowに指定される。表示方向が垂直方向のうちの上から下に向かう方向である場合、3がtext_flowに指定される。なお、予備の値として、0、および1乃至3以外の値が用意されている。
text_horizontal_alignmentの8ビットのフィールドは、対象のリージョン中のテキストボックスに表示されるテキストの右寄せ、左寄せ、中央寄せ(水平方向での中央寄せ)を指定する。具体的には、図20に示されるような値がtext_horizontal_alignmentに指定される。即ち、左寄せの場合、1がtext_horizontal_alignmentに指定される。中央寄せの場合、2がtext_horizontal_alignmentに指定される。右寄せの場合、3がtext_horizontal_alignmentに指定される。なお、予備の値として、0、および1乃至3以外の値が用意されている。
text_vertical_alignmentの8ビットのフィールドは、対象のリージョン中のテキストボックスに表示されるテキストの上寄せ、下寄せ、中央寄せ(垂直方向での中央寄せ)を指定する。具体的には、図21に示されるような値がtext_vertical_alignmentに指定される。即ち、上寄せの場合、1がtext_vertical_alignmentに指定される。中央寄せの場合、2がtext_vertical_alignmentに指定される。下寄せの場合、3がtext_vertical_alignmentに指定される。なお、予備の値として、0、および1乃至3以外の値が用意されている。
line_spaceの8ビットのフィールドは、対象のリージョンにおけるベースラインの間隔を指定する。
font_id_refの8ビットのフィールドは、対象のリージョン中のテキストボックスに表示されるテキストのフォントを指定する。
font_styleの8ビットのフィールドは、対象のリージョン中のテキストボックスに表示されるテキストのフォントスタイルを指定する。具体的には、図22に示されるような値がfont_styleに指定される。即ち、フォントスタイルがNormal(予め標準として設定されたフォントスタイル)の場合、0x00がfont_styleに指定される。フォントスタイルがBold(ボールド体)の場合、0x01がfont_styleに指定される。フォントスタイルがItalic(イタリック体)の場合、0x02がfont_styleに指定される。フォントスタイルがBold and Italic(ボールド アンド イタリック体)の場合、0x03がfont_styleに指定される。フォントスタイルがOutline-bordered(アウトライン)の場合、0x04がfont_styleに指定される。フォントスタイルがBold and Outline-bordered(ボールド アンド アウトライン)の場合、0x05がfont_styleに指定される。フォントスタイルがItalic and outline-bordered(イタリック アンド アウトライン)の場合、0x06がfont_styleに指定される。フォントスタイルがBold,Italic and Outline-bordered(ボールド ,イタリック アンド アウトライン)の場合、0x07がfont_styleに指定される。
以上説明したフォントスタイルのうちの0x04乃至0x07で指定されるフォントスタイルこそが、本発明の特徴のひとつである「字幕等を構成するテキストで利用される文字オブジェクトにアウトライン(輪郭)を付ける」ことの実現に必要なフォントスタイルである。即ち、本発明の特徴のひとつである「字幕等を構成するテキストで利用される文字オブジェクトにアウトラインを付ける」ことを実現するためには、font_styleの値が0x04乃至0x07のうちの何れかに指定されている必要がある。
なお、以下、font_styleとして0x00乃至0x03が指定されるフォントスタイルを通常フォントスタイルと総称する。また、font_styleとして0x04乃至0x07が指定されるフォントスタイルをアウトラインスタイル総称する。
font_sizeの8ビットのフィールドは、対象のリージョン中のテキストボックスに表示されるテキストのフォントのサイズを指定する。font_palette_entry_id_refのフィールドは、そのフォントの色を指定する。
図16と図17の例のdialog_style_setのシンタックスでは、font_styleとして0x04乃至0x07のうちの何れかが指定されている場合、即ち、本発明の特徴のひとつである「字幕等で利用される文字オブジェクトにアウトラインを付ける」を実現するためにアウトラインスタイルが指定されている場合、outline_palette_entry_id_refという8ビットのフィールドと、outline_sizeという8ビットのフィールドとが指定される。
outline_palette_entry_id_refは、アウトラインのついたフォントスタイルでテキストが表示される場合におけるアウトライン(そのテキストの輪郭)の色を指定する。outline_sizeは、そのアウトラインのサイズ(幅)を指定する。なお、アウトラインの色やサイズについては、図28乃至図30を参照して後述する。
なお、inline_styleにおいて部分的にfont_styleをアウトラインスタイルに変更するために、従来のBlu-Ray Disc Read-Only Format Version0.89r3のTable 9-59(Data_type definition)に対して、図23の灰色の項目を付加したテーブル、即ち、Data_typeが0x033である項目(行)において、Data_Lengthが3に変更され、かつ、inline_style_values() or text_stringにoutline_palette_entry_id_refとoutline_sizeとが新規に追加されたテーブルを採用する必要がある。
図16と図17の例のdialog_style_setのシンタックスのうちの、以上説明したregion_styleのシンタックスに対して、user_styleの変更設定(以下、user_changeable_Style_set)のシンタックスが図17に示されている。
図17において、user_style_idの8ビットのフィールドは、対象のUser_control_styleの識別子を指定する。
region_horizontal_position_directionの1ビットのフィールドは、region_horizontal_positionの移動方向を指定する。具体的には、移動方向が右方向の場合には0が、移動方向が左方向の場合には1が、それぞれregion_horizontal_position_directionに指定される。region_horizontal_position_deltaの15ビットのフィールドは、region_horizontal_positionの水平方向の移動量を指定する。
region_vertical_position_directionの1ビットのフィールドは、region_vertical_positionの進行(移動)方向を指定する。具体的には、進行方向が下方向の場合には0が、進行方向が上方向の場合には1が、それぞれregion_vertical_position_directionに指定される。region_vertical_position_deltaの15ビットのフィールドは、region_vertical_positionの垂直方向の移動量を指定する。
font_size_inc_decの1ビットのフィールドは、フォントサイズの変更の方向、即ち、その変更後に大きくなるのかそれとも小さくなるかを指定する。具体的には、大きくなる場合には0bが、小さくなる場合には1bが、それぞれfont_size_inc_decに指定される。font_size_deltaの7ビットのフィールドは、フォントサイズの変更量を指定する。
text_box_horizontal_position_directionの1ビットのフィールドは、テキストボックスの水平方向の移動方向を指定する。具体的には、移動方向が右方向の場合には0が、移動方向が左方向の場合には1が、それぞれtext_box_horizontal_position_directionに指定される。text_box_horizontal_position_deltaの15ビットのフィールドは、テキストボックスの水平方向の移動量を指定する。
text_box_vertical_position_directionの1ビットのフィールドは、テキストボックスの垂直方向の移動方向を指定する。具体的には、移動方向が下方向の場合には0が、移動方向が上方向の場合には1が、それぞれtext_box_vertical_position_directionに指定される。text_box_vertical_position_deltaの15ビットのフィールドは、テキストボックスの垂直方向の移動量を指定する。
text_box_width_inc_decの1ビットのフィールドは、テキストボックスの幅の変更の方向、即ち、その変更後に幅が太くなるのかそれとも狭くなるかを指定する。具体的には、太くなる場合には0bが、狭くなる場合には1bが、それぞれtext_box_width_inc_decに指定される。text_box_width_deltaの15ビットのフィールドは、テキストボックスの幅の変更量を指定する。
text_box_height_inc_decの1ビットのフィールドは、テキストボックスの高さの変更の方向、即ち、その変更後に高くなるのかそれとも低くなるかを指定する。具体的には、高くなる場合には0bが、低くなる場合には1bが、それぞれtext_box_height_inc_decに指定される。text_box_height_deltaの15ビットのフィールドは、テキストボックスの高さの変更量を指定する。
line_space_inc_decの1ビットのフィールドは、line_spaceの変更の方向、即ち、その変更後に増えるのかそれとも減るのかを指定する。具体的には、増える場合には0bが、減る場合には1bが、それぞれline_space_inc_decに指定される。line_space_deltaという7ビットのフィールドは、line_spaceの変更量を指定する。
palette()は、図示はしないが、次のようなフィールドにより構成される。即ち、このpalette()の長さを指定するlength、paletteの特定の色の識別子を指定するpalette_entry_id、(Y, Cb, Cr)のうちのYの値を指定するY_value、(Y, Cb, Cr)のうちのCbの値を指定するCb_value、(Y, Cb, Cr)のうちのCrの値を指定するCr_value、および、透明度を指定するT_value、といったフィールドからpalette()は構成される。
次に、図24は、ローカルストレージ24の仮想的な記憶領域を示す図である。
ローカルストレージ24には、図4を用いて説明したように、ダウンロードまたはコピーされた各種情報が図5を用いて説明したファイル形式で記憶される。これらのファイルを記憶するために、ローカルストレージ24には、仮想的な記憶領域として、ダウンロードされたナビゲーションプログラムが記憶される領域であるナビゲーションプログラム記憶部51、ダウンロードされたプレイリストが記憶される領域であるプレイリスト記憶部52、ダウンロードされたテキストサブタイトルファイル(テキスト字幕ファイル)が記憶される領域であるテキストサブタイトルファイル記憶部53、ダウンロードされたフォントファイルが記憶される領域であるフォントファイル記憶部54が設けられているものとすることができる。ナビゲーションプログラム記憶部51およびプレイリスト記憶部52に記憶されたデータファイルは、図4を用いて説明したローカルストレージディレクトリ管理部34の制御に基づいて読み出されてメモリ23に供給され、テキストサブタイトルファイル記憶部53およびフォントファイル記憶部54、に記憶されたデータファイルは、図4を用いて説明したローカルストレージディレクトリ管理部34の制御に基づいて読み出されてデコーダ26に供給される。
なお、図24に図示されたローカルストレージ24のナビゲーションプログラム記憶部51、プレイリスト記憶部52、テキストサブタイトルファイル記憶部53、および、フォントファイル記憶部54のそれぞれの記憶領域は仮想的なものであるから、ローカルストレージ24の記憶領域は、図24に図示されているように記憶される情報の種類により物理的に分割されていなくても良いことはいうまでもない。
コントローラ21の制御に基づいて、光ディスク11、または、ローカルストレージ24から読み出されたデータは、図示せぬ復調およびECC復号部により復調され、誤り訂正が施され、デコーダ26に供給される。図25は、デコーダ26の詳細な構成を説明するためのブロック図である。
デコーダ26には、制御部81、ディスクデータ取得部82、バッファ83および84、PID(パケットID)フィルタ85、オーディオデコーダ86、MPEG(Moving Picture Experts Group)ビデオデコーダ87、ビデオプレーン処理部88、GUI(Graphic User Interface)データデコーダ89、GUIグラフィックスプレーン処理部90、ストレージデータ取得部91、テキスト字幕処理部92、字幕グラフィックスプレーン処理部93、および、合成処理部94が設けられている。
制御部81は、再生制御部37の制御に基づいて、デコーダ26の各部の処理を制御するものである。ディスクデータ取得部82は、光ディスク11から読み出されたデータのうち、デコーダ26に供給されたデータを取得し、図7を用いて説明したPlayItemにより指定されるAVストリームなどの多重化ストリームを、メインパスを構成するPlayItemにより指定されるデータのリードバッファであるバッファ83に供給し、SubPlayItemにより指定される、テキスト字幕ファイルまたはフォントファイルのデータ(フォントファイルのデータは指定されていない場合がある)を、サブパスを構成するSubPlayItemにより指定されるデータのリードバッファであるバッファ84に供給する。
バッファ83から読み出されたストリームデータは、所定のタイミングで、後段のPIDフィルタ55へ出力される。このPIDフィルタ85は、入力された多重化ストリームを、PIDに応じて、後段の各エレメンタリストリームのデコーダであるオーディオデコーダ86、MPEGビデオデコーダ87、または、GUIデータデコーダ89へ振り分けて出力する。すなわち、PIDフィルタ55は、音声(オーディオ)ストリームをオーディオデコーダ86に供給し、映像(ビデオ)ストリームをMPEGビデオデコーダ87に供給し、ユーザインターフェース関連の画像データをGUIデータデコーダ89に供給する。
オーディオデコーダ86は、オーディオストリームをデコードし、デコードされたオーディオストリームのデータを出力する。MPEGビデオデコーダ87は、ビデオストリームをデコードし、デコードされたビデオデータをビデオプレーン処理部88へ出力する。ビデオプレーン処理部88は、デコードされたビデオデータに基づいて、1ページ(または、1フレーム)に表示される画像(動画像である映像を構成する画像)に対応するビデオプレーンを生成し、合成処理部94に出力する。
GUIデータデコーダ89は、インタラクティブグラフィクスストリームをデコードし、デコードされたGUIデータを、GUIグラフィックスプレーン処理部90に供給する。GUIグラフィックスプレーン処理部90は、1画面に表示されるGUIに対応するグラフィックスプレーンを生成し、合成処理部94に出力する。
ストレージデータ取得部91は、ローカルストレージ24から読み出されたデータのうち、デコーダ26に供給されたデータ(すなわち、テキスト字幕ファイルまたはフォントファイルのデータ)を取得し、テキスト字幕処理部92に供給する。テキスト字幕処理部92は、制御部81の制御に従い、ストレージデータ取得部91から供給される、または、バッファ84から読み出されるテキストデータをデコードし、所定のフォントスタイルデータに基づいて、ビットマップなどのラスタデータ(文字オブジェクトデータ)に変換(ラスタライズ)し、字幕グラフィックスプレーン処理部93に供給する。テキスト字幕処理部92についての詳細は、図26を用いて後述する。字幕グラフィックスプレーン処理部93は、デコードされレンダリングされたテキストデータを基に、1ページ(または、1フレーム)に表示される字幕に対応する字幕グラフィックスプレーンを生成し、合成処理部94に出力する。
合成処理部94は、ビデオプレーン処理部88から供給されたビデオプレーン、GUIグラフィックスプレーン処理部90から供給されたGUIに対応するグラフィックスプレーン、および、字幕グラフィックスプレーン処理部93から供給された字幕グラフィックスプレーンを合成し、ビデオ信号として出力する。
図26は、テキスト字幕処理部92の詳細な構成を説明するためのブロック図である。
テキストデータデコーダ121は、テキスト字幕ファイル(テキストサブタイトルファイル)のデータをデコードし、文字オブジェクトは文字オブジェクトバッファ122に、属性(アトリビュート)データは、アトリビュートデータバッファ123に供給する。
ここで言うテキスト字幕ファイルとは、例えば上述した図10に示されるテキストサブタイトルストリームファイル等を指す。従って、文字オブジェクトとは、例えば上述した図10のDialog presentation Segment等を指す。また、ここで言う属性データとは、例えば上述した図10のDialog Style Segment等を指し、具体的には例えば、図16に示される、アウトラインスタイルまたは通常フォントスタイルが指定されているfont_style、アウトラインのついたフォントスタイルにおけるアウトラインの色が指定されているoutline_palette_entry_id_ref、および、アウトラインのついたフォントスタイルにおけるアウトラインのサイズ(幅)が指定されているoutline_size等を指す。
アトリビュートデータバッファ123に保存される属性データは、ユーザの操作入力に基づいて、制御部81の制御に従い変更される。例えば、ユーザがフォントサイズや文字色の変更を指令した場合、制御部81の制御により、アトリビュートデータバッファ123に保存される属性データのうち、対応するUser_control_style()(図17)が変更される。
フォントラスタライザ124は、アトリビュートデータバッファ123から読み出した属性の指定と、バッファ84またはストレージデータ取得部91から供給されるフォントスタイルデータに基づいて、文字オブジェクトバッファ122から読み出した文字オブジェクトをビットマップなどのラスタデータ(文字オブジェクトデータ)に変換して字幕グラフィックスプレーン処理部93に出力する。さらに、フォントラスタライザ124は、アトリビュートデータバッファ123から読み出した属性に基づいて、ブックマークが付与されている文字オブジェクトを検出し、ブックマークバッファ125を利用して、同一のブックマークIDが付与されている文字オブジェクトに関しては、重複してラスタライズを行わないようにする。なお、フォントラスタイザ124についての詳細は、図27を用いて後述する。
ブックマークバッファ125は、フォントラスタライザ124の処理により、ブックマークが付与されている文字オブジェクトのラスタデータを保持するとともに、フォントラスタライザ124により、保持しているラスタデータが読み出される。
図27は、フォントラスタライザ124の詳細な構成を説明するためのブロック図である。
文字オブジェクト取得部151は、文字オブジェクトバッファ122(図26)から読み出した文字オブジェクトを取得し、ブックマーク検出部152に供給する。
ブックマーク検出部152は、文字オブジェクト取得部151から供給された文字オブジェクトが、既にブックマークが付与されてブックマークバッファ125(図26)に記憶されているか否か、即ち、同一のブックマークIDが付与されている文字オブジェクトがブックマークバッファ125に既に記憶されているか否かを検出する。
そして、ブックマーク検出部152は、同一のブックマークIDが付与されている文字オブジェクトがブックマークバッファ125に記憶されていることを検出した場合、同一のブックマークIDが付与されている文字オブジェクト(既にラスタライズされたデータ)をブックマークバッファ125から取得して、字幕グラフィックスプレーン処理部93(図25)に出力する。
これに対して、ブックマーク検出部152は、同一のブックマークIDが付与されている文字オブジェクトがブックマークバッファ125にまだ記憶されていないことを検出した場合、文字オブジェクト取得部151から供給された文字オブジェクトをそのままラスタライズ部153に供給する。
ラスタライズ部153は、アトリビュートデータバッファ123から読み出した属性の指定と、通常フォントスタイル取得部156から供給された通常フォントスタイルのフォントスタイルデータ、若しくは、アウトラインスタイル加工部157から供給されたアウトラインスタイルのフォントスタイルデータに基づいて、ブックマーク検出部152から供給された文字オブジェクトをビットマップなどのラスタデータ(文字オブジェクトデータ)に変換して、字幕グラフィックスプレーン処理部93に出力するとともに、ブックマーク記憶制御部154に供給する。
なお、ラスタライズ部153に設けられている合成部164については後述する。
また、詳細については図28乃至図31を用いて後述するが、アウトラインスタイル加工部157から供給されてくるアウトラインスタイルのフォントスタイルデータは、元のフォントスタイルデータに対して、そのアウトラインの色やサイズ(幅)が必要に応じて変更(加工)されたフォントスタイルデータである。
ブックマーク記憶制御部154は、ラスタライズ部153から供給された文字オブジェクトの属性データに基づいて、新たなブックマークが記載されているか否かを判断し、ブックマークが記載されている場合、そのラスタデータをブックマークバッファ125に記憶させる制御を行い、ブックマークが記載されていない場合、その制御を禁止する。
フォントスタイル検出部155は、アトリビュートデータバッファ123に記憶されている属性データのうちの対応するfont_styleを参照して、文字オブジェクト取得部151に取得された文字オブジェクトをラスタライズするために必要なフォントスタイルを検出する。そして、フォントスタイル検出部155は、フォントスタイルが通常フォントスタイルであることを検出した場合、その検出結果を通常フォントスタイル取得部156に通知する。これに対して、フォントスタイル検出部155は、フォントスタイルがアウトラインスタイルであることを検出した場合、その検出結果をアウトラインスタイル加工部157のアウトラインスタイル取得部161に通知する。
通常フォントスタイル取得部156は、バッファ84またはストレージデータ取得部91から供給されるフォントスタイルデータのうちの、フォントスタイル検出部155の検出結果で特定される通常フォントスタイルのフォントスタイルデータを取得し、ラスタライズ部153に供給する。
アウトラインスタイル加工部157は、バッファ84またはストレージデータ取得部91から供給されるフォントスタイルデータのうちの、フォントスタイル検出部155の検出結果で特定されるフォントスタイル、即ち、アウトラインスタイルのフォントスタイルデータを取得する。さらに、アウトラインスタイル加工部157は、アトリビュートデータバッファ123に記憶されている属性データのうちの対応するoutline_palette_entry_id_refを参照して、アウトラインの色を更新する。また、アウトラインスタイル加工部157は、アトリビュートデータバッファ123に記憶されている属性データのうちの対応するoutline_sizeを参照して、アウトラインのサイズ(幅)を更新する。そして、アウトラインスタイル加工部157は、アウトラインの色やサイズ(幅)が更新されたフォントスタイルデータをラスタライズ部153(より正確には後述する合成部164)に供給する。
ここで、アウトラインスタイル加工部157の詳細な構成例を説明する前に、図28乃至図31を参照して、アウトラインのサイズ(幅)の変更手法の一例について説明する。なお、アウトラインのサイズ(幅)の変更手法は、次の例に限定されないことは言うまでも無い。
図28には、通常フォントスタイルの文字オブジェクトデータの一例として、アルファベットのAが示されている。なお、以下、通常フォントスタイルのAの文字オブジェクトデータを、文字オブジェクトデータ171と称する。
また、図29には、アウトラインスタイルの文字オブジェクトデータの一例として、アルファベットのAが示されている。なお、以下、アウトラインスタイルのAの文字オブジェクトデータを、文字オブジェクトデータ181と称する。
文字オブジェクトデータ181は、アウトラインデータに基づいて生成される。アウトラインデータとは、文字の形がアウトライン(輪郭)として表現されるフォントスタイルデータのひとつである。このアウトラインデータはアウトラインフォントで利用されていた。即ち、アウトラインフォントとは、従来から存在するフォントの形式のひとつであって、アウトラインデータを保持し、レタリングを行う形式のことを言う。アウトラインフォントは、ビットマップフォント(ビットマップを保持する形式)に比べて拡大や縮小に強いという特徴がある。
図30は、この文字オブジェクトデータ181のアウトライン(輪郭)の幅を変更するための変更手法のうちの、従来の手法を説明する図である。
図30に示されるように、従来においては、文字オブジェクトデータ181のアウトライン181−L0は、アウトラインに対して垂直方向のうちの両方向とも均等な割合でその幅が伸縮され(図30の例では水平方向のうちの左方向も右方向も伸ばされ)、その結果、アウトライン181−L1のように変更される。
即ち、従来においては、文字オブジェクトデータ181は、アウトラインに対して垂直方向のうちの両方向とも均等な割合でアウトラインの幅が太くされ、その結果、図31に示されるような文字オブジェクトデータ182に変更される。
この文字オブジェクトデータ182と元の文字オブジェクトデータ181とを比較すると容易にわかることであるが、アウトラインに対して垂直方向のうちの両方向とも均等な割合でアウトラインの幅が太くされてしまうと、アウトラインで囲まれた白色の領域(白抜き部分)の面積がその分だけ小さくされ、最悪白色の領域が消されてしまう(白抜き部分がつぶれてしまう)という問題が従来の手法では発生してしまう。
そこで、この従来の手法の問題を解決すべく、本実施の形態では、図31に示されるような手法を採用することで、文字オブジェクトデータ181のアウトラインのサイズ(幅)を可変するようにしている。即ち、図31は、アウトラインのサイズ(幅)の変更手法のうちの、従来の手法の問題を解決可能な変更手法の一例を説明する図である。換言すると、本実施の形態では、図31の手法は、ラスタライズ部153の合成部164(図27)に適用されている。
以下、図31の手法についてさらに説明する。換言すると、以下、合成部164の動作(処理)について説明する。
最初に、合成部164は、アウトラインデータに基づいて文字オブジェクトデータ181を生成する。次に、合成部164は、図30で説明した従来の手法に従って、文字オブジェクトデータ181のアウトラインの幅を、アウトラインに対して垂直方向のうちの両方向とも均等な割合で変更した文字オブジェクトデータ182を生成する。
なお、合成部164は、この文字オブジェクトデータ182を生成するために、アウトラインスタイル加工部157から供給されるアウトラインのついたフォントスタイルデータを利用することになる。ただし、このアウトラインのついたフォントスタイルデータについては後述する。
次に、合成部164は、文字オブジェクトデータ182の上に文字オブジェクトデータ181を重ね合わせる(合成処理を実行する)。その結果、文字オブジェクトデータ181のアウトラインを中心線と称するとすると、中心線に対して、白抜き部分に向かう方向(以下、内側方向と称する)とは逆方向(以下、外側方向と称する)のみが太くなったアウトラインを有する文字オブジェクトデータ183、即ち、文字オブジェクトデータ181に対して白抜き部分の面積は変更されずに、アウトラインの幅だけが外側に太くなった文字オブジェクトデータ183が生成される。
ところで、上述したように、合成部164は、文字オブジェクトデータ182を生成するためにアウトラインスタイル加工部157から供給されるアウトラインスタイルのフォントスタイルデータを利用する。また、この文字オブジェクトデータ182は、アウトラインデータ(従来のアウトラインフォントで利用されていたアウトラインスタイルのフォントスタイルデータ)から生成される文字オブジェクトデータ181のアウトラインに対して、その幅(内側方向と外側方向とも)や色が変更されたアウトラインを有している。従って、アウトラインスタイル加工部157は、文字オブジェクトデータ181を生成するために必要なアウトラインデータを、文字オブジェクト182を生成するために必要なフォントスタイルデータに変更する必要がある。このため、本実施の形態では、アウトラインスタイル加工部157は図27に示されるように構成されているのである。即ち、図27の例では、アウトラインスタイル加工部157は、アウトラインスタイル取得部161、色変更部162、および、両幅変更部163から構成されている。
アウトラインスタイル取得部161は、バッファ84またはストレージデータ取得部91から供給されるフォントスタイルデータのうちの、フォントスタイル検出部155の検出結果で特定されるフォントスタイル、即ち、アウトラインスタイルのフォントスタイルデータ(アウトラインデータ)を取得する。取得されたアウトラインスタイルのフォントスタイルデータは、色変更部162に提供される。
色変更部162は、アトリビュートデータバッファ123に記憶されている属性データのうちの対応するoutline_palette_entry_id_refを参照して、アウトラインスタイル取得部161から供給されたアウトラインスタイルのフォントスタイルデータについて、そのアウトラインの色を変更する。アウトラインの色が変更されたアウトラインスタイルのフォントスタイルデータは、両幅変更部163と、ラスタライズ部153の合成部164とに供給される。
即ち、合成部164は、例えば図31の例では、色変更部162から供給されたフォントスタイルデータに基づいて、そのフォントスタイルデータに対応する色のアウトラインを有する文字フォントデータ181を生成することになる。
両幅変更部163は、アトリビュートデータバッファ123に記憶されている属性データのうちの対応するoutline_sizeを参照して、色変更部162から供給されたアウトラインスタイルのフォントスタイルデータについて、そのアウトラインのサイズ(幅)を外側方向も内側方向も均等な割合で伸縮する。アウトラインのサイズ(幅)が外側方向と内側方向ともに変更されたアウトラインスタイルのフォントスタイルデータは、両幅変更部163から合成部164に供給される。
すると、合成部164は、両幅変更部163から供給されたフォントスタイルデータに基づいて、上述した図30の従来の手法に従った処理を実行する。具体的には例えば、図31の文字オブジェクトデータ181を既に生成している場合、合成部164は、両幅変更部163から供給されたフォントスタイルデータに基づいて、文字オブジェクト181のアウトラインの幅に対して、その外側方向と内側方向ともに同率で伸縮された幅のアウトラインを有する(かつ色が変更された)文字オブジェクトデータ182を生成する。
そして、上述したように、合成部164は、文字オブジェクトデータ181と、文字オブジェクトデータ182とを合成することで、文字オブジェクト181のアウトラインの幅に対して、その外側方向だけが伸縮された幅のアウトラインを有する(かつ色が変更された)文字オブジェクトデータ183を生成する。
次に、図32を参照して、コントローラ21(図1)の再生処理について説明する。
上述したようにしてダウンロードされたアップデートファイルがローカルストレージ24に記録されている状態で、光ディスク11に記録されているコンテンツの再生が指示された場合、ステップS1において、光ディスクディレクトリ管理部35は、光ディスク11からStudio_idとContent_idを読み出し、読み出したStudio_idとContent_idをローカルストレージディレクトリ管理部34に出力する。
ステップS2において、ローカルストレージディレクトリ管理部34は、光ディスクディレクトリ管理部35から供給されたStudio_idとContent_idに基づいて、光ディスク11のファイルシステムに対応する、ローカルストレージ24のファイルシステムを検索し、ファイルシステムマージ処理部36に供給する。上述したように、光ディスク11のファイルシステムに対応するファイルシステムは、ローカルストレージ24において、Studio_idとContent_idを含む名前が設定されたディレクトリに格納されている(図5)。
このとき、光ディスクディレクトリ管理部35からは、光ディスク11のファイルシステムがファイルシステムマージ処理部36に出力される。
ステップS3において、ファイルシステムマージ処理部36は、光ディスク11のファイルシステムと、ローカルストレージ24のファイルシステムとを、図5および図6を参照して説明したようにしてマージし、第1の仮想ファイルシステムを生成する。生成された第1の仮想ファイルシステムは再生制御部37に出力され、AVストリームファイルの再生に用いられる。
ステップS4において、再生制御部37は、供給されてきた第1の仮想ファイルシステムからナビゲーションプログラムを指定し、実行する。従って、図6に示されるように、アップデートされたナビゲーションプログラムが第1の仮想ファイルシステムにある場合、そのナビゲーションプログラム(ローカルストレージ24に記録されているナビゲーションプログラム)が実行される。
ステップS5において、再生制御部37は、ナビゲーションプログラムが再生区間として指定するPlayListとSubPlayItemを取得し、ステップS6に進み、ローカルストレージディレクトリ管理部34および光ディスクディレクトリ管理部35を制御して、取得したPlayListとSubPlayItemが参照するファイル(AVファイル、テキスト字幕ファイル、フォントファイルなど)を読み出させて、デコーダ26に供給させる。ここでは、PlayListやSubPlayItemにより表されるタイムスタンプがClip informationによりアドレスに変換され、AVストリームなどに対するアクセスが行われる。
すなわち、再生制御部37は、PlayListやSubPlayItemが参照するAVストリームファイルがローカルストレージ24に存在する場合は、ローカルストレージ24からそのAVストリームファイルを読み出し、存在しない場合、光ディスク11からAVストリームファイルを読み出す。
例えば、再生制御部37が、図6のファイルシステムに従って、ローカルストレージディレクトリ管理部34および光ディスクディレクトリ管理部35を制御して、AVストリームの読み出しを行わせている場合、光ディスク11に予め用意されている「01000.m2ts」のファイル名が設定されているAVストリームファイルや、「02000.m2ts」のファイル名が設定されているAVストリームファイルについては光ディスク11からの読み出しが行われ、ダウンロードにより追加された「04000.m2ts」のファイル名が設定されているAVストリームファイルについては、ローカルストレージ24からの読み出しが行われる。
ステップS7において、図33を用いて後述するコンテンツ再生処理が実行されて、読み出したAVストリームファイルやテキスト字幕ストリームファイル(テキストサブタイトルストリームファイル)などがデコードされ、映像や音声、または字幕が表示装置から出力されて、処理が終了される。
以上のように、第1の仮想ファイルシステムが生成され、コンテンツの再生時に利用されることにより、例えば、SubPlayItemが参照するテキスト字幕ファイルのデータが、AVストリームと同時に読み出されて再生される。
次に、図33のフローチャートを参照して、図32のステップS7において実行される、コンテンツ再生処理について説明する。
ステップS21において、再生制御部37(図4)は、デコーダ26を制御して、PlayItemにより指定されるAVストリームデータを再生させる。
ステップS22において、操作入力取得部32は、字幕データの表示を指令する操作入力を受けたか否かを判断する。ステップS22において、字幕データの表示を指令する操作入力を受けていないと判断された場合、処理は、後述するステップS28に進む。
ステップS22において、字幕データの表示を指令する操作入力を受けたと判断された場合、ステップS23において、操作入力取得部32は、ユーザの操作入力に対応する信号をメニュー画面表示制御部31に供給する。メニュー画面表示制御部31は、表示装置に、表示可能な字幕データの一覧メニューを表示させる。
ステップS24において、操作入力取得部32は、表示させる字幕データの言語を指定する操作入力を受けたか否かを判断する。ステップS24において、表示させる字幕データの言語を指定する操作入力を受けていないと判断された場合、処理は、ステップS23に戻り、それ以降の処理が繰り返される。
ステップS24において、表示させる字幕データの言語を指定する操作入力を受けたと判断された場合、ステップS25において、操作入力取得部32は、ユーザの操作入力に対応する信号を再生制御部37に供給する。再生制御部37は、ローカルストレージディレクトリ管理部34を制御し、ユーザの操作入力に基づいて指定されるSubPlayItemにより参照されるテキストサブタイトルデータを読み出させて、デコーダ26のストレージデータ取得部91に供給させるとともに、必要に応じて、ユーザに指定されたフォント(アウトラインフォント等)に対応するフォントスタイルデータを読み出させて、デコーダ26のストレージデータ取得部91に供給させる。
ステップS26において、デコーダ26により、図34と図35とを用いて後述する字幕表示処理が実行される。
ステップS27において、操作入力取得部32は、表示させる字幕データの言語の変更を指令する操作入力を受けたか否かを判断する。ステップS27において、表示させる字幕データの言語の変更を指令する操作入力を受けたと判断された場合、処理は、ステップS25に戻り、それ以降の処理が繰り返される。
ステップS22において、字幕データの表示を指令する操作入力を受けていないと判断された場合、または、ステップS27において、表示させる字幕データの言語の変更を指令する操作入力を受けていないと判断された場合、ステップS28において、操作入力取得部32は、コンテンツの再生の終了を指令する操作入力を受けたか、または、再生中のAVストリームデータが終了したか否かを判断する。
ステップS28において、コンテンツの再生の終了を指令する操作入力を受けず、かつ、再生中のAVストリームデータが終了していないと判断された場合、ステップS29において、操作入力取得部32は、字幕の表示を中止させる操作入力を受けたか否かを判断する。
ステップS29において、字幕の表示を中止させる操作入力を受けていないと判断された場合、処理は、ステップS26に戻り、それ以降の処理が繰り返される。ステップS29において、字幕の表示を中止させる操作入力を受けたと判断された場合、処理は、ステップS21に戻り、それ以降の処理が繰り返される。
ステップS28において、コンテンツの再生の終了を指令する操作入力を受けたか、再生中のAVストリームデータが終了したと判断された場合、処理が終了される。
このような処理により、光ディスク11に予め記録されている、または、サーバ3からダウンロードされ、ローカルストレージ24に記憶されているテキスト字幕ファイルが用いられて、ユーザが所望した言語の字幕がコンテンツの映像および音声とともに表示され、ユーザの操作入力に基づいて、表示される字幕の言語を変更するために、読み出されるテキスト字幕ファイルが変更される。
次に、図34と図35とのフローチャートを参照して、図33のステップS26において実行される字幕表示処理について説明する。
ステップS51において、デコーダ26(図25)のテキスト字幕処理部92のテキストデータデコーダ121(図26)は、ストレージデータ取得部91により取得されたテキストサブタイトルデータをデコードする。
ステップS52において、テキストデータデコーダ121は、デコードされたテキストサブタイトルデータに含まれる文字オブジェクトを文字オブジェクトバッファ122に供給するので、文字オブジェクトバッファ122に、文字オブジェクトがバッファリングされる。
ステップS53において、テキストデータデコーダ121は、デコードされたテキストサブタイトルデータに含まれる、フォントスタイル(font_style)、アウトラインの色(outline_palette_entry_id_ref)やサイズ(outline_size)等の属性データをアトリビュートデータバッファ123に供給するので、アトリビュートデータバッファ123に属性データがバッファリングされる。
ステップS54において、フォントラスタライザ124のフォントスタイル検出部155(図27)は、ステップS53の処理でバッファリングされたフォントスタイルは、アウトラインスタイルであるか否かを判定する。
ステップS54において、アウトラインスタイルではないと判定された場合、即ち、通常フォントスタイルであると判定された場合、ステップS55において、通常フォントスタイル取得部156は、通常フォントスタイルのフォントスタイルデータを取得する。
これに対して、ステップS54において、アウトラインスタイルであると判定された場合、ステップS56において、アウトラインスタイル加工部157は、アウトラインスタイルのフォントスタイルデータを取得する。そして、ステップS57において、アウトラインスタイル加工部157は、ステップS53の処理でバッファリングされたアウトラインのサイズや色等の属性データを基に、アウトラインスタイルのフォントスタイルデータを更新する。即ち、そのアウトラインの色や幅が変更されたアウトラインスタイルのフォントスタイルデータが生成される。
ステップS55の処理で通常フォントスタイルのフォントスタイルデータが取得されるか、または、ステップS56の処理で取得されたアウトラインスタイルのフォントスタイルデータがステップS57の処理で更新されると、処理は図35のステップS58に進む。
ステップS58において、文字オブジェクト取得部151は、文字オブジェクトバッファ122(図26)から文字オブジェクトを取得して、ブックマーク検出部152に供給する。
ステップS59において、ラスタライズ部153は、通常フォントスタイル取得部156またはアウトラインスタイル加工部157からフォントスタイルデータを取得する。
ステップS60において、ブックマーク検出部152は、ステップS53(図34)の処理でバッファリングされた属性、およびブックマークバッファ125を参照し、ラスタライズしようとしている字幕データ(ステップS58の処理で取得された文字オブジェクトに対応する字幕データ)は、ブックマークされ、すでにブックマークバッファ125にバッファリングされている字幕データであるか否かを判断する。
ステップS60において、ブックマークされ、バッファリングされている字幕データであると判断された場合、ステップS61において、ブックマーク検出部152は、ブックマークバッファ125から、保存されているブックマーク対象の字幕画像データ(ラスタデータ)を読み出して出力する。これにより、処理はステップS65に進む。
これに対して、ステップS60において、すでにブックマークされている字幕データではないと判断された場合、ステップS58の処理で取得された文字オブジェクトは、ブックマーク検出部152からラスタライズ部153に供給される。これにより、処理はステップS62に進む。
ステップS62において、ラスタライズ部153は、ステップS58の処理で取得された文字オブジェクト、図34のステップS55またはS56の処理で取得された(さらに必要に応じてステップS57の処理で更新された)フォントスタイルデータ、および図34のステップS53の処理でバッファリングされた属性データを基に、ラスタライズを実行して、その実行結果であるラスタデータ(文字オブジェクトデータ)を、字幕グラフィックスプレーン処理部93(図25)に出力するともにブックマーク記憶制御部154に供給する。字幕グラフィックスプレーン処理部93は、供給されたラスタデータを基に、字幕グラフィックスプレーンを生成し、合成処理部94に供給する。
ステップS63において、ブックマーク記憶制御部154は、ステップS62の処理でラスタライズされた字幕データ(ラスタデータである文字オブジェクトデータ)の属性データを基に、この属性データには、新たなブックマークが記載されているか否かを判断する。
ステップS63において、ブックマークが記載されていると判断した場合、ステップS64において、ブックマーク記憶制御部154は、ラスタライズされた字幕画像データ(ラスタデータ)をブックマークバッファ125に保存する。
ステップS62の処理の終了後、ステップS63において、ブックマークが記載されていないと判断された場合、または、ステップS61の処理が終了した場合、ステップS65において、合成処理部94(図25)は、供給された字幕画像データを映像データと合成して出力する。これにより、図33のステップS26の処理である字幕表示処理は終了し、処理はステップS27に進む。
このような処理により、ユーザの所望する言語の字幕データが、ユーザの所望する属性で、ユーザの所望するフォントで表示されるように、テキスト字幕ファイルおよびフォントファイルのデータの読み出しが制御されて、必要に応じてバッファリングされている属性データが変更され、ラスタライズされる。
従って、現在再生されているフレームが例えば字幕の色とビデオの色とが同一または類似となってしまうフレームのような場合、即ち、ユーザからすると、あたかも字幕がビデオと一体化してしまって、字幕を判別できないような場合、ユーザは、所望のアウトラインスタイルを指定することで、字幕を構成するテキストがその所望のアウトラインスタイルで表示されるようになるので、その字幕を確実に判別できるようになる。
ところで、上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
このプログラム格納媒体は、図1に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア28により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROMまたはRAMなどのメモリ23や、ハードディスクなどのローカルストレージ24などにより構成される。
また、本明細書において、プログラム格納媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的または個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。