(57)【要約】【課題】デジタル映画上映システムの字幕生成の際に、上映時における字幕処理の負担を軽減させる。【解決手段】映画館側のユーザ側システム３は、映画の字幕ファイル１０が格納されているデータ格納装置２００と、字幕ファイル１０から内部ファイル４０を生成するコンピュータ４００と、内部ファイル４０を復号して字幕を生成する復号装置１００とを備える。字幕ファイル１０は、テキストデータ及び制御情報が記述されているＸＭＬファイル１１と、画像ファイルであるＰＮＧファイル１３とから構成されている。内部ファイル４０は、メインファイル１１とフォントファイル１２と画像ファイル１３とを合成して一本化したファイルである。復号装置１００は、映画の上映に先立って、字幕ファイル１０から内部ファイル４０を生成しておく。【選択図】図２
2006311328.tif 000002
【特許請求の範囲】
【請求項１】
デジタル映画上映システムで用いられる字幕生成装置において、
映画の字幕ファイルが格納されている記憶部と、
前記字幕ファイルに基づき内部ファイルを生成する制御部と、
前記内部ファイルを復号して字幕を生成し、当該字幕を映画の画像合成する字幕処理部とを備え、
前記字幕ファイルは、映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されており、
前記内部ファイルは、前記メインファイルの記述内容に対して、前記フォントファイル及び画像ファイルの実体データを合成することにより、前記メインファイルと前記フォントファイルと前記画像ファイルとを一本化したファイルであり、
前記制御部は、映画の表示に先立って、前記字幕ファイルから前記内部ファイルを生成しておくこと
を特徴とする字幕生成装置。
【請求項２】
前記内部ファイルには、メインファイルのヘッダ情報が含まれているヘッダ部と、テキストデータが含まれているテキストデータ部と、画像データが含まれているピクチャデータ部とに分離されており、それぞれの部がまとめて記述されていること
を特徴とする請求項１記載の字幕生成装置。
【請求項３】
前記内部ファイルには、ヘッダ部、テキストデータ部及びピクチャデータ部の要素毎のデータサイズ、及び、各要素に対する処理の繰り返し回数が記述されたインデックス部を有すること
を特徴とする請求項２記載の字幕生成装置。
【請求項４】
前記インデックス部は、内部ファイルの先頭に記述されていること
を特徴とする請求項３記載の字幕生成装置。
【請求項５】
インデックス部、ヘッダ部、テキストデータ部、ピクチャデータ部は、それぞれ独立したファイルとして管理されていること
を特徴とする請求項３記載の字幕生成装置。
【請求項６】
インデックス部は、他のファイルと独立したファイルとして管理されていること
を特徴とする請求項３記載の字幕生成装置。
【請求項７】
ピクチャデータ部は、他のファイルと独立したファイルとして管理されていること
を特徴とする請求項３記載の字幕生成装置。
【請求項８】
デジタル映画上映システムで用いられる字幕生成装置において、
映画の字幕ファイルが格納されている記憶部と、
前記字幕ファイルに基づき内部ファイルを生成する制御部と、
前記内部ファイルを復号して字幕を生成し、当該字幕を映画の画像合成する字幕処理部とを備え、
前記字幕ファイルは、映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されており、
前記内部ファイルは、ピクチャデータ部の要素毎のデータサイズ、及び、各要素の表示時刻も記述されたインデックス部を有するファイルであり、
前記制御部は、映画の表示に先立って、前記字幕ファイルから前記内部ファイルを生成しておくこと
を特徴とする字幕生成装置。
【請求項９】
内部ファイルを前記記憶部から字幕処理部へ転送する転送制御部を備え、
前記転送制御部は、前記インデックス部を読み出して当該インデックス部を解析することにより、前記字幕処理部の内部メモリの容量を、各要素の前記表示時刻及びデータサイズから換算し、前記内部メモリが溢れないように内部メモリを転送すること
を特徴とする請求項８記載の字幕生成装置。
【請求項１０】
前記記憶部から字幕処理部へデータを転送する転送制御部を備え、
前記字幕処理部は、前記インデックス部を読み出して当該インデックス部を解析することにより、前記字幕処理部の内部メモリの容量を各要素の前記表示時刻及びデータサイズから換算し、前記内部メモリが溢れないようにインデックス部以降のデータの転送命令を前記転送制御部に対して発行すること
を特徴とする請求項８記載の字幕生成装置。
【請求項１１】
デジタル映画上映システムにおける字幕の生成方法において、
映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されている字幕ファイルを、記録媒体に格納しておき、
前記字幕ファイルに基づき、前記メインファイルの記述内容に対して、前記フォントファイル及び画像ファイルの実体データを合成することにより、前記メインファイルと前記フォントファイルと前記画像ファイルとを一本化した内部ファイルを、映画の表示に先立って生成しておき、
映画の映像の表示とともに前記内部ファイルを復号して字幕を生成し、当該字幕を映画の画像合成すること
を特徴とする字幕生成方法。
【請求項１２】
前記内部ファイルには、メインファイルのヘッダ情報が含まれているヘッダ部と、テキストデータが含まれているテキストデータ部と、画像データが含まれているピクチャデータ部とに分離されており、それぞれの部がまとめて記述されていること
を特徴とする請求項１１記載の字幕生成方法。
【請求項１３】
前記内部ファイルには、少なくともピクチャデータ部の要素毎のデータサイズ、及び、各要素に対する処理の繰り返し回数が記述されたインデックス部を有すること
を特徴とする請求項１１記載の字幕生成方法。
【請求項１４】
前記インデックス部は、内部ファイルの先頭に記述されていること
を特徴とする請求項１１記載の字幕生成方法。
【請求項１５】
インデックス部、ヘッダ部、テキストデータ部、ピクチャデータ部は、それぞれ独立したファイルとして管理されていること
を特徴とする請求項１１記載の字幕生成方法。
【請求項１６】
インデックス部は、他のファイルと独立したファイルとして管理されていること
を特徴とする請求項１１記載の字幕生成方法。
【請求項１７】
ピクチャデータ部は、他のファイルと独立したファイルとして管理されていること
を特徴とする請求項１１記載の字幕生成方法。
【請求項１８】
デジタル映画上映システムにおける字幕の生成方法において、
映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されている字幕ファイルを、記録媒体に格納しておき、
前記内部ファイルは、ピクチャデータ部の要素毎のデータサイズ、及び、各要素の表示時刻も記述されたインデックス部を有するファイルであり、
前記制御部は、映画の表示に先立って、前記字幕ファイルから前記内部ファイルを生成しておくこと
を特徴とする字幕生成方法。
【請求項１９】
内部メモリの容量を、各要素の前記表示時刻及びデータサイズから換算し、内部ファイルを転送する際に前記内部メモリが溢れないように制御すること
を特徴とする請求項１８記載の字幕生成方法。
【請求項２０】
上記内部メモリへの転送制御は、字幕処理を行うプロセッサが行うこと
を特徴とする請求項１９記載の字幕生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル映画上映システムで用いられる字幕生成装置及び字幕の生成方法に関するものである。
【背景技術】
【０００２】
近年、映像ソースとしてフィルムを用いずにデジタルデータを用いて映画を大型スクリーンに投射するデジタル映画上映システムが広く推進されてきている。米大手映画会社が作る業界団体のDigital Cinema Initiatives ,LCC（ＤＣＩ：非特許文献１参照。）は、デジタル映画の規格を提案している。
【０００３】
ＤＣＩが提案するデジタル映画の規格では、映像のフォーマットとして、２Ｋ（1920H×1080V）及び４Ｋ（4096H×2160V）の画素の静止画像を、２４枚／秒毎に、ＪＰＥＧ２０００方式で符号化することを規格化している。
【０００４】
また、ＤＣＩでは、映像に重畳表示する字幕を、映像データとは別にファイル化してユーザ（映画館）に提供し、表示時において映像と字幕とを合成表示することについて仕様の提案がされている。
【０００５】
詳細規格化はＳＭＰＴＥ（Society of Motion Picture and Television Engineers：全米映画テレビジョン技術者協会）のTechnology Committees, Digital Cinema Technology (DC28)分科会にて進行している。
(http://www.smpte.org/engineering_committees/technology_committees/)
図１７に、デジタル映画上映システムにおける字幕ファイルの制作／上映の例を示す。
【０００６】
デジタル映画上映システム１は、図１７に示すように、コンテンツを作成して所定の形式にデータ化するコンテンツ制作者側システム２と、映像をスクリーンに表示する映画館に備えられるユーザ側システム３とから構成される。
【０００７】
コンテンツ制作者側システム２では、映像に字幕として表示する情報内容を示すテキストデータ、字幕として表示する各文字の書体（フォント）の実体データ、テキストデータで表現されない文字や絵等を表示する際に字幕として表示する画像データを生成し、字幕ファイル作成装置２-１に入力する。字幕ファイル作成装置２-１は、これらのテキストデータ、フォントの実体データ及び画像データを、SMPTEで規定された所定の形式の字幕ファイル１０に変換する。コンテンツ制作者側システム２で制作された字幕ファイル１０は、例えば記録媒体にパッケージ化され、ユーザ側システム３に渡される。又は、ネットワーク等を介してコンテンツ制作者側システム２からユーザ側システム３に転送されてもよい。
【０００８】
ユーザ側システム３では、コンテンツ制作者側システム２から記録媒体やネットワークを介して字幕ファイル１０を受け取り、コンテンツ格納部２００に格納する。コンテンツ格納部２００に格納されている字幕ファイル１０（ＸＭＬデータ１１、フォントファイル１２、ＰＮＧファイル１３）は、コンテンツ復号装置１００により読み出されて復号及び描画がされ、描画された字幕が映画の映像データに合成される。字幕が合成された映画の映像データは、プロジェクタ等の映像出力装置３００に供給され、スクリーンに投射される。
【０００９】
字幕ファイル１０は、メインファイルとなるＸＭＬファイル１１と、フォントファイル１２と、ＰＮＧファイル１３とを含んでいる。
【００１０】
ＸＭＬファイル１１は、ＸＭＬ（extensible markup language：文書の記述言語の一つ）で記述されている。ＸＭＬファイル１１は、字幕として表示する文字及び記号を示したテキストデータが、要素毎（例えばシーン毎）に記述されているとともに、そのテキストデータを表示する際の要素毎の表示時間、表示位置、そのフォントの区別等を示した制御データが記述されている。また、ＸＭＬファイル１１は、字幕としてＰＮＧデータを表示する場合には、そのＰＮＧデータのファイル名（ネットワークを介して取得する場合にはＵＲＬ等のネットワーク上の格納場所）が記述されているとともに、そのＰＮＧデータを表示する際の要素毎の表示時間及び表示位置等を示す制御データも記述されている。
【００１１】
フォントファイル１２は、画像としてスクリーン上にテキストデータを表示する際の書体（フォント）の実体が格納されているファイルである。例えば、ゴチック体等といったフォントの実体データが格納されている。映画の場合、特に、一般の書籍やコンピュータで使われているフォントではなく、特別な映画専用のフォントが使われることが多い。コンテンツ制作者は、フォントの作成者から使用のライセンスを取得して当該字幕ファイルに含めることとなる。
【００１２】
ＰＮＧファイル１３は、フォントファイルで含まれていない特殊なフォントや記号，絵等を表示する場合に、その特殊なフォントや記号，絵等をＰＮＧ形式で作成した画像データである。ＰＮＧファイル１３は、１本の映画内で当該字幕画像を表示するシーン毎に形成されるため、１本の映画で数１０００ファイル形成される場合もある。
【００１３】
図１８は、データ格納装置２００に格納された場合の、字幕ファイル１０のディレクトリ／ファイル構造の一例を示している。
【００１４】
ＳＴＰが、字幕ファイル１０である。ＳＴＰ内には、ｘｍｌフォルダ、ｆｏｎｔフォルダ、ＰＮＧフォルダが形成されている。
【００１５】
ｘｍｌフォルダ内には、ＸＭＬファイル１１（subtitle.xml）が格納されている。ｆｏｎｔフォルダ内には、ＸＭＬファイル１１で参照される１又は複数のフォントファイル１２（MovieFont1.ttf, MovieFont2.ttf, MovieFont3.ttf ）が格納されている。フォントファイル１２は、一本の映画に表示する字幕で使用するフォントの種類分だけ、フォントファイルが存在する。ＰＮＧフォルダ内には、ＸＭＬファイル１１で参照される１又は複数のＰＮＧファイル１３（PNG001.PNG, PNG002.PNG, PNG003.PNG,…,PNGxxx.PNG）が格納されている。
【００１６】
つぎに、SMPTEで規定されたＸＭＬファイル１１の記述の一例を示す。
【００１７】
--------------------------------------------------------------
<Subtitle SpotNumber="3" 
TimeIn="00:00:13:000" TimeOut="00:00:16:000" 
FadeUpTime="00:00:00:020" FadeDownTime="00:00:00:020">
<Font ID="映画字幕書体3" Script="normal" Effect="border" 
Italic="no" Underline="no" Weight="normal" 
Color="FFFFFFFF" EffectColor="FF000000" Size="42">
<Text Halign="center" Hposition="0" 
Valign="bottom" Vposition="10" Direction="ltr">
映画字幕書体3の文字です。
</Text>
<Text Halign="center" Hposition="0" 
Valign="bottom" Vposition="4" Direction="ltr">
2行目の文字です。
</Text>
</Font>
</Subtitle>
--------------------------------------------------------------
【００１８】
前記のＸＭＬファイル１１の記述のフォーマットの意味内容は次の通りである。
【００１９】
"<Subtitle"〜"</Subtitle>"で囲まれた領域の中が、字幕データの各種記述であることを示している。SpotNumber="xxx" は、その字幕のシーン番号（要素番号）を示している。
【００２０】
TimeIn="HH:MM:SS:EEE"は、文字又はピクチャの表示開始時刻である。TimeOut="HH:MM:SS:EEE"は、文字又はピクチャの表示終了時刻である。FadeUpTime="HH:MM:SS:EEE"は、100%透明から完全不透明に至る時間である。FadeDownTime="HH:MM:SS:EEE"は、完全不透明から100%透明に至る時間である。
【００２１】
"<Font"〜"</Font>"で囲まれた領域の中は、フォントに関する情報の記述である。
【００２２】
ID="xxxxxxx"は、フォントファイルのファイル名である。Script="xxxxx"は、文字の上付き、下付き、通常の違いを規定する。Effect="xxxxx"は、縁取り、影付き、通常の違いを規定する。Italic="xx"は、イタリック体にするか否かを規定する。Underline="xxxxx"は、アンダーラインを付けるか否かを規定する。Weight="xxxxx"は、太字とするか否かを規定する。Color="xxxxx"は、文字色を規定する。EffectColor="xxxxx"は、Effectで縁取りか影付きが選択された場合に縁取り部分、もしくは影付き部分の色を規定する。Size="xxxxx"は、字のサイズを規定する。
【００２３】
"<Text"〜"</Text>"で囲まれた領域の中は、テキストに関する情報の記述である。
【００２４】
Halign="xxxxx"は、文字又はピクチャの水平位置をHpositionを基準として規定する。Hposition="xxxxx"は、文字又はピクチャの水平位置の基準を規定する。例えば、Halign=Leftの時は、画面左端を基準、Halign=Rightの時は、画面右端を基準、Halign=Centerの時は、画面中央を基準とする。Valign="xxxxx"は、文字又はピクチャの垂直位置をVpositionを基準として規定する。Vposition="xxxxx"は、文字又はピクチャの垂直位置の基準を規定する。例えば、Valign=Topの時は、画面上端を基準、Valign= Bottomの時は、画面底を基準、Valign= Centerの時は、画面中央を基準とする。Direction"xxxxx"は、文字描画方向を規定する。さらに、</Text>の手前に記載されたテキストの内容が、字幕として表示する文字の内容である。
【００２５】
以上のようなＸＭＬファイル１１が含まれた字幕ファイル１０を、コンテンツ復号装置１００内の字幕処理プロセッサで処理して描画する場合には、字幕処理プロセッサは、次のような処理を行う必要がある。
【００２６】
まず、字幕処理プロセッサは、"<Subtitle"〜"</Subtitle>"で囲まれた領域の中から、TimeIn, TimeOut, FadeUpTime, FadeDownTime情報を抜き出す。
【００２７】
続いて、字幕処理プロセッサは、  "<Font"〜"</Font>"で囲まれた領域の中から、Italic, Underline,  Weight, Color, EffectColor情報を抜き出す。
【００２８】
続いて、字幕処理プロセッサは、"<Text"〜"</Text>"で囲まれた領域の中から、２行の文字列があることを判断し、さらに、各々の行に対してHalign, Hposition, Valign, Vposition情報を抜き出し、さらに、各々の行に文字情報が、１行目は「映画字幕書体3の文字です。」、２行目は「2行目の文字です。」であることを抜き出す。
【００２９】
つぎに、SMPTEで規定されたＸＭＬファイル１１の記述の、他の一例を示す。
【００３０】
--------------------------------------------------------------
<Subtitle SpotNumber="1" 
TimeIn="00:00:05:000" TimeOut="00:00:15:000" 
FadeUpTime="00:00:00:020" FadeDownTime="00:00:00:020">
<Image Halign="center" Hposition="0" 
Valign="bottom" Vposition="10">
.\STP\PNG\PNG001.png
</Image>
</Subtitle>
--------------------------------------------------------------
【００３１】
前記のＸＭＬファイル１１の記述のフォーマットの意味内容は次の通りである。
【００３２】
なお、先に示したＸＭＬファイル１１で説明した内容と同一の部分については説明を略する。
【００３３】
"<Image "〜"</Image>"で囲まれた領域の中は、字幕としてＰＮＧファイルの画像データを表示する際にその画像データに関する情報の記述である。
【００３４】
Halign="xxxxx"は、その画像の水平位置をHpositionを基準として規定する。Hposition="xxxxx"は、その画像の水平位置の基準を規定する。Valign="xxxxx"は、その画像の垂直位置をVpositionを基準として規定する。Vposition="xxxxx"は、その画像の垂直位置の基準を規定する。
【００３５】
さらに、</Image>の手前に記載されたファイル格納場所又はネットワークアドレスが、字幕として表示するＰＮＧファイル１３の実体の存在場所である。
【００３６】
以上のようなＸＭＬファイル１１が含まれた字幕ファイル１０を、コンテンツ復号装置１００内の字幕処理プロセッサで処理して描画する場合には、字幕処理プロセッサは、次のような処理を行う必要がある。
【００３７】
まず、字幕処理プロセッサは、"<Subtitle"〜"</Subtitle>"で囲まれた領域の中から、TimeIn, TimeOut, FadeUpTime, FadeDownTime情報を抜き出す。
【００３８】
続いて、字幕処理プロセッサは、"<Image "〜"</Image>"で囲まれた領域の中から、Halign, Hposition, Valign, Vposition情報を抜き出し、さらに、データ格納装置２００やネットワークにアクセスをしてそのファイルの格納場所から、ＰＮＧファイル１３を読み出して、さらに、ＰＮＧファイル１３のデコード処理を行う。
【００３９】
デジタル映画上映システム１におけるユーザ側システム３では、以上のように字幕に対する処理が行われる。
【００４０】
【非特許文献１】Digital Cinema Initiatives, LLC (DCI)ホームページ、［online］、［平成１７年４月２８日検索］、インターネット＜URL : http://www.dcimovies.com/＞
【発明の開示】
【発明が解決しようとする課題】
【００４１】
ところで、字幕のテキストデータ部分の容量は、１シーンあたりの文字数が２０文字（４０ｂｙｔｅｓ）で、１作品あたりに３０００シーンが含まれているとすると、合計１２０Ｋバイトとなる。また、ＸＭＬに変換した後の制御データ等のオーバーヘッドを考慮すると、テキストデータ及びその他の制御データを含むＸＭＬファイル１１の容量は、数Ｍバイト分となる。
【００４２】
フォントファイル１２は、１ファイルあたり数１０Ｍバイト程度であり、１作品あたり５種類のフォントが必要であると考えると、１作品全体で１００Ｍバイトの容量となる。
【００４３】
ＰＮＧファイル１３は、１ファイルあたり１００Ｋバイト、１作品あたりに３０００シーンが含まれているとすると、１作品全体で３００Ｍバイトの容量となる。また、１ファイルあたり３００Ｋバイトあるとすれば、１作品全体で９００Ｍバイトの容量となる。
【００４４】
ＸＭＬファイル１１及びフォントファイル１２は、合わせて１００Ｍバイト程度の容量であり、比較的に少ない。そのため、コンテンツ復号装置１００内の字幕処理プロセッサに対して処理をさせる際に、ＸＭＬファイル１１及びフォントファイル１２については、データ格納装置２００から、コンテンツ復号装置１０の字幕処理プロセッサのワーキングメモリ上へ、映画上映の前に予め全て転送しておくことが可能な容量である。
【００４５】
これに対して、ＰＮＧファイル１３の総容量は、３００Ｍバイト或いはそれ以上となる。このため、映画上映の前に予め全て字幕処理プロセッサのワーキングメモリ上へ転送することはできないので、ＰＮＧファイルについては、上映処理を進めながら、適宜に、データ転送装置２００にアクセスを行いファイル転送を実行する必要がある。
【００４６】
しかしながら、ファイル転送が頻繁に行われると、ファイルアクセス処理と、各々の処理回路への制御処理との競合が発生するため、ファイル転送の遅れ、消失、もしくは制御の遅れとなる可能性があり、システム制御の信頼性が低下するという問題がある。
【００４７】
さらに、ＸＭＬファイル１１及びフォントファイル１２も確かに字幕処理プロセッサのワーキングメモリ上へ転送することは可能であるが、字幕データを解釈して情報を抜き出す処理は、組み込み処理を実現するプロセッサにより実現される字幕処理プロセッサにとっては負担が重い。
【００４８】
本発明は、以上のような問題を解決するものであり、デジタル映画上映システムの字幕生成の際に、上映時における字幕処理の負担を軽減させることが可能な、字幕生成装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００４９】
本発明に係る字幕生成装置は、デジタル映画上映システムで用いられる字幕生成装置において、映画の字幕ファイルが格納されている記憶部と、前記字幕ファイルに基づき内部ファイルを生成する制御部と、前記内部ファイルを復号して字幕を生成し、当該字幕を映画の画像合成する字幕処理部とを備え、前記字幕ファイルは、映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されており、前記内部ファイルは、前記メインファイルの記述内容に対して、前記フォントファイル及び画像ファイルの実体データを合成することにより、前記メインファイルと前記フォントファイルと前記画像ファイルとを一本化したファイルであり、前記制御部は、映画の表示に先立って、前記字幕ファイルから前記内部ファイルを生成しておくことを特徴とする。
【００５０】
本発明に係る字幕生成装置は、デジタル映画上映システムで用いられる字幕生成装置において、映画の字幕ファイルが格納されている記憶部と、前記字幕ファイルに基づき内部ファイルを生成する制御部と、前記内部ファイルを復号して字幕を生成し、当該字幕を映画の画像合成する字幕処理部とを備え、前記字幕ファイルは、映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されており、  前記内部ファイルは、ピクチャデータ部の要素毎のデータサイズ、及び、各要素の表示時刻も記述されたインデックス部を有するファイルであり、前記制御部は、映画の表示に先立って、前記字幕ファイルから前記内部ファイルを生成しておくことを特徴とする。
【００５１】
本発明に係る字幕生成方法は、デジタル映画上映システムにおける字幕の生成方法において、映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されている字幕ファイルを、記録媒体に格納しておき、前記字幕ファイルに基づき、前記メインファイルの記述内容に対して、前記フォントファイル及び画像ファイルの実体データを合成することにより、前記メインファイルと前記フォントファイルと前記画像ファイルとを一本化した内部ファイルを、映画の表示に先立って生成しておき、映画の映像の表示とともに前記内部ファイルを復号して字幕を生成し、当該字幕を映画の画像合成することを特徴とする。
【００５２】
本発明に係る字幕生成方法は、デジタル映画上映システムにおける字幕の生成方法において、映画の字幕として表示する文字内容を示すテキストデータ、映画の字幕として表示する画像内容を示す画像データのファイルを特定する情報が、字幕を表示するための制御データとともに記述されているメインファイルと、前記テキストデータのフォントデータが含まれている１以上のフォントファイルと、前記画像データが含まれている１以上の画像ファイルとから構成されている字幕ファイルを、記録媒体に格納しておき、前記内部ファイルは、ピクチャデータ部の要素毎のデータサイズ、及び、各要素の表示時刻も記述されたインデックス部を有するファイルであり、前記制御部は、映画の表示に先立って、前記字幕ファイルから前記内部ファイルを生成しておくことを特徴とする。
【発明の効果】
【００５３】
本発明に係る字幕生成装置及び方法では、メインファイルとフォントファイルと画像ファイルとから構成される字幕ファイルを、映画の表示に先立って一本化した内部ファイルを生成しておく。
【００５４】
このことにより、字幕生成装置及び方法では、デジタル映画上映システムの字幕生成の際に、上映時における字幕処理の負担を軽減させることができる。
【発明を実施するための最良の形態】
【００５５】
本発明が適用されたデジタル映画上映システムについて説明をする。なお、以下説明を行うデジタル映画上映システムは、ＤＣＩに提案されているデジタル映画を上映することが可能なシステムである。
【００５６】
（全体構成の説明）
図１は、上記デジタル映画システムをブロック構成図で表した図であり、図２は、本発明が適用されたデジタル映画上映システムのユーザ側（映画館側）のシステムを模式的に表した図である。
【００５７】
デジタル映画上映システム１は、図１に示すように、コンテンツを作成して所定の形式にデータ化するコンテンツ制作者側システム２と、映像をスクリーンに表示する映画館に備えられるユーザ側システム３とから構成される。
【００５８】
ユーザ側システム３は、図１及び図２に示すように、映像，音声，字幕の映画ソースとなる各映像，音声，字幕ファイルから映像，音声及び字幕を復号するコンテンツ復号装置１００と、映像，音声，字幕等の映画ソースとなる各ファイルを格納する例えばハードディスク群から構成されたデータ格納装置２００と、コンテンツ復号装置１００により復号された映像を投射する映像出力装置３００と、コンテンツ復号装置１００を外部から制御等をする制御用コンピュータ４００と、映像出力装置３００により投射された映像を映し出すスクリーン５００と、コンテンツ復号装置１００により復号された音声を出力する音声出力装置６００とを備えている。
【００５９】
なお、ユーザ側システム３のコンテンツ復号装置１００及びデータ格納装置２００は、映画のソースとなる映像，音声，字幕ファイルのセキュリティを守るために、物理的にも電子的にもソースデータが参照されないようなセキュアな状態となっている。
【００６０】
コンテンツ制作者側システム２では、SMPTEの規格に基づく映像ファイル２０，音声ファイル３０及び字幕ファイル１０を生成し、これらを記録媒体やネットワークを介して、ユーザ側システム３に受け渡す。映像ファイル２０，音声ファイル３０及び字幕ファイル１０は、従来のフィルムに変わる映画上映のためのソースである。映像ファイル２０は、映像を表示するためのデータであり、音声ファイル３０は、音声を出力するためのデータであり、字幕ファイル１０は、字幕を映像に重畳して描画するためのデータである。
【００６１】
字幕ファイル１０は、図１８等を参照して背景技術で説明したものと同様である。すなわち、字幕ファイル１０は、ＸＭＬファイル１１と、フォントファイル１２と、ＰＮＧファイル１３とから構成されたファイルである。
【００６２】
ユーザ側システム３では、コンテンツ制作者側システム２から映像ファイル２０，音声ファイル３０及び字幕ファイル１０を受け取り、コンテンツ格納部２００に格納する。
【００６３】
映画の上映が開始されると、コンテンツ格納部２００に格納されている映像ファイル２０，音声ファイル３０及び字幕ファイル１０は、コンテンツ復号装置１００により読み出されて復号がされる。コンテンツ復号装置１００は、映像ファイル２０を復号するとともに字幕を合成した映像データを生成し、映像出力装置３００に供給する。映像出力装置３００は、供給された映像データをスクリーン５００上に投射する。また、コンテンツ復号装置１００は、音声ファイル３０を復号して音声データを生成し、音声出力装置６００に供給する。音声出力装置６００は、供給された音声データをスピーカから出力する。
【００６４】
ここで、コンテンツ制作者側システム２では、字幕ファイル１０（ＸＭＬデータ１１、フォントファイル１２、ＰＮＧファイル１３）が、映画の上映前に予め一体化（一本化）され、所定のフォーマット（以下、内部フォーマットという。）で記述された１つの内部ファイル４０が作成されている。映画の上映時には、コンテンツ復号装置１００は、字幕ファイル１０ではなく、内部ファイル４０を読み出して、字幕の復号及び描画処理を行う。また、字幕ファイル１０から内部ファイル４０を作成するのは、制御用コンピュータ４００により行われる。
【００６５】
なお、内部ファイル４０について、並びに、字幕ファイル１０から内部ファイル４０を作成する処理についてはその詳細を後述する。
【００６６】
（コンテンツ復号装置）
つぎに、コンテンツ復号装置１００の構成について、図３を参照して説明をする。
【００６７】
コンテンツ復号装置１００は、図３に示すように、制御用コンピュータ４００と通信を行う第１のネットワークＩ/Ｆ１１１と、データ格納装置２００と高速通信を行うファイバーチャネルＩ/Ｆ１１２と、ホストＣＰＵ（Central Processing Unit）１１３と、ホストＣＰＵ１１３のワーキングメモリとなる主メモリ１１４と、ホストＣＰＵ１１３がデータ格納装置２００と通信を行うための第２のネットワークＩ/Ｆ１１５とを備えている。
【００６８】
また、コンテンツ復号装置１００は、制御データ等の解析並びに映像及び音声の復号処理を行う映像音声処理回路１２０と、字幕の処理を行う字幕処理回路１３０とを備えている。
【００６９】
コンテンツ復号装置１００では、バス１１６上に、第１のネットワークＩ/Ｆ１１１、ファイバーチャネルＩ/Ｆ１１２、ホストＣＰＵ１１３及び映像音声処理回路１２０が接続されており、ホストＣＰＵ１１３の制御に従い互いに通信を行う。
【００７０】
映像音声処理回路１２０は、バス１１６との通信を行うバスＩ/Ｆ１２１と、入出力するデータのコンテンツ構文を解釈し、そのデータが映像、音声又は字幕であるか否かを判断して適切に分配を行うコンテンツ構文処理部１２３と、当該コンテンツ構文処理部１２３のワーキングメモリとなるローカルメモリ１２２と、音声復号処理を行う音声復号処理部１２４と、映像復号処理を行う映像復号処理部１２５と、映像復号処理のための各種制御を行う信号処理ＣＰＵ１２６と、その信号処理ＣＰＵ１２６のワーキングメモリとなる主メモリ１２７と、映像復号処理部１２５により復号された画像を一時的に格納し、その格納している画像に字幕処理回路１３０で処理された字幕画像を合成するフレームバッファ（映像/字幕合成部）１２８とを備えている。
【００７１】
字幕処理回路１３０は、字幕の復号及び描画処理を行う字幕処理プロセッサ１３１と、コンテンツ構文処理部１２３から字幕に関するデータを受信するためのローカルＩ/Ｆ１３２と、字幕処理プロセッサ１３１のワーキングメモリとなる主メモリ１３３と、映像音声処理回路１２０の信号制御ＣＰＵ１２６と字幕処理プロセッサ１３１との通信のためのＩ/Ｆメモリ１３４と、復号された字幕を画像として描画するためのバッファメモリ１３５と、データ格納装置２００から受信された復号前の字幕に関するデータを格納しておく字幕メモリ１３６とを備えている。
【００７２】
このような構成のコンテンツ復号装置１００の動作を説明する。
【００７３】
コンテンツ制作者が制作した映像ファイル１２０、音声ファイル１３０及び内部ファイル４０は、データ格納装置２００に格納されている。ホストＣＰＵ１１３はデータ格納装置２００に格納された各ファイルにアクセスし、ファイバーチャネルＩ/Ｆ１１２又は第２のネットワークＩ/Ｆ１１５を介して各ファイルを取得する。ホストＣＰＵ１１３は、取得した各ファイルをバス１１６を経由して映像音声処理回路１２０に転送する。
【００７４】
映像音声処理回路１２０に転送された各ファイルは、バスＩ/Ｆ１２１を経由してコンテンツ構文処理装置１２３に渡される。コンテンツ構文処理装置１２３は、転送されたファイルのコンテンツの構文処理を行い、動画ファイル２０、音声ファイル３０、内部ファイル４０への分解を行い、動画ファイル２０については映像復号処理部１２５へ、音声ファイル３０については音声復号処理部１２４へ渡す。内部ファイル４０については、字幕処理回路１３０のローカルＩ/Ｆ１３２を経由して、字幕メモリ１３６へ格納される。
【００７５】
字幕処理プロセッサ１３６は、一旦字幕メモリ１３６へ格納された内部ファイル４０のうち、テキストデータ部分及びフォント部分を主メモリ１３３へ転送し、上映再生の準備が整ったことをＩ/Ｆメモリ１３４、信号制御ＣＰＵ１２６、バス１１６を経由してホストＣＰＵ１１３へ伝える。
【００７６】
ホストＣＰＵ１１３は、音声復号処理部１２４、映像復号処理部１２５の上映再生の準備が整ったことを信号制御ＣＰＵ１２６、バス１１６を経由した通知と合わせて受け取り、全体の上映再生の準備が整ったことの判断とする。この判断の後、ホストＣＰＵ１１３はバス１１６、信号制御ＣＰＵ１２６を経由して音声復号処理部１２４、映像復号処理部１２５へ上映開始の制御信号を送り、同時にバス１１６、信号制御ＣＰＵ１２６、Ｉ/Ｆメモリ１３４を経由して字幕処理プロセッサ１３１へ伝える。
【００７７】
字幕処理プロセッサ１３１は、ホストＣＰＵ１１３からの上映開始の制御信号を受け取った後、字幕メモリ１３６へ格納されているＰＮＧデータ部分を主メモリ１３３へ転送し、ＰＢＧのデコード処理を進め、デコードされた静止画データをバッファメモリ１３５に書き込む。すでに格納されているテキストデータ部分及びフォント部分も、字幕処理プロセッサ１３６で描画処理を進め、処理結果をバッファメモリ１３５に書き込む。書き込まれた静止画データ、文字データは、フレームバッファ１２８に送られ、映像復号処理部１２５の出力動画データと合成される。合成された画像は、映像出力装置３００に供給される。音声データも同様に、音声復号処理部１２４からの信号が音声出力装置６００に供給される。
【００７８】
（字幕ファイルから内部ファイルを作成する処理）
つぎに、字幕ファイル１０を、内部ファイル４０へ変換する処理について説明をする。
【００７９】
ユーザ側システム３では、上映時における字幕の処理負担が軽くなるように、映画の上映に先立って、コンテンツ制作者により作成された字幕ファイル１０を、内部ファイル４０に変換している。
【００８０】
内部ファイル４０は、字幕ファイル１０のＸＭＬファイル１１、１又は複数のフォントファイル１２及び１又は複数のＰＮＧファイル１３を一本化した合成ファイルである。
【００８１】
具体的には、内部ファイル４０は、字幕ファイル１０内のＸＭＬファイル１１の各種制御情報の記述を切り出して、そのまま反映されている。それとともに、内部ファイル４０には、ＸＭＬファイル１１にフォントファイル１２のファイル名（又はＵＲＬ）が記述されていれば、予めその実体データが読み出されて、ファイル内に取り込まれている。また、内部ファイル４０には、ＸＭＬファイル１１にＰＮＧファイル１３のファイル名（又はＵＲＬ）が記述されていれば、予めその実体データを読み出されて、ファイル内に取り込まれている。
【００８２】
また、内部ファイル４０は、先頭から、インデックス部と、ヘッダ部と、テキストデータ部と、ピクチャデータ部とに構成が分離されている。
【００８３】
ヘッダ部は、字幕ファイル１０の先頭部分に記述されている字幕ファイル１０の全体の内容を特定する情報と、フォントファイル２０の実体データが含まれている。
【００８４】
テキストデータ部は、字幕ファイル１０の字幕に関する情報が記述されている部分（<Subtitle>〜</ Subtitle >で囲まれた部分）のなかで、テキストデータが記述された部分（<Text >〜</ Text >で囲まれた部分）並びに字幕ファイル１０のフォントに関する情報が記述された部分（<Font>〜</ Font >で囲まれた部分）の記述が含まれている。
【００８５】
ピクチャデータ部は、字幕ファイル１０の字幕に関する情報が記述されている部分（<Subtitle>〜</ Subtitle >で囲まれた部分）のなかで、字幕ファイル１０のピクチャデータが記述された部分（<Image >〜</ Image >で囲まれた部分）のＰＮＧファイルの表示時刻、位置情報及びＰＮＧファイルの実体データとが含まれている。
【００８６】
インデックス部は、ヘッダ部、テキストデータ部及びピクチャデータ部の各サイズ、並びに、ピクチャデータ部の要素（シーン）毎のサイズ及び表示時刻を記述している。
【００８７】
以下、内部ファイル４０のそれぞれの部分の作成アルゴリズムを、図４〜図９のフローチャートを参照して説明する。
【００８８】
（内部ファイルのヘッダ部の作成処理）
図４及び図５は、制御用コンピュータ４００による内部ファイル４０のヘッダ部の作成処理のフローチャートである。
【００８９】
まず、制御用コンピュータ４００は、ステップＳ１０１において、字幕ファイル１０のＸＭＬファイル１１をデータ格納装置２００から読み出して入力する。
【００９０】
続いて、制御用コンピュータ４００は、ステップＳ１０２において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< ID >”を検出する。文字列“< ID >”が検出できない場合には、異常終了する。文字列“< ID >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１０３において、入力した字幕ファイル１０のＸＭＬファイル１１から、< ID >〜< /ID >で囲まれた領域の文字を抜き取り、内部ファイル４０のヘッダ部に出力する。
【００９１】
続いて、制御用コンピュータ４００は、ステップＳ１０４において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< ContentTitle Text >”を検出する。文字列“< ContentTitle Text >”が検出できない場合には、異常終了する。文字列“<  ContentTitle Text  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１０５において、入力した字幕ファイル１０のＸＭＬファイル１１から、<  ContentTitle Text  >〜< / ContentTitle Text  >で囲まれた領域の文字を抜き取り、内部ファイル４０のヘッダ部の続きに出力する。
【００９２】
続いて、制御用コンピュータ４００は、ステップＳ１０６において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< Annotation Text >”を検出する。文字列“<  Annotation Text  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１０７において、入力した字幕ファイル１０のＸＭＬファイル１１から、< Annotation Text >〜< / Annotation Text >で囲まれた領域の文字を抜き取り、抜き取った文字列に対応するサイズをbyte数に換算してAnnotationTextSize変数として記述し、その後、文字列を内部ファイル４０のヘッダ部の続きに出力する。一方、文字列“<  Annotation Text  >”が検出できない場合には、制御用コンピュータ４００は、ステップＳ１０８において、内部ファイル４０のヘッダ部の続きに、AnnotationTextSize=0という記述を出力する。
【００９３】
続いて、制御用コンピュータ４００は、ステップＳ１０９において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< IssueDate >”を検出する。文字列“<  IssueDate  >”が検出できない場合には、異常終了する。文字列“<  IssueDate  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１１０において、入力した字幕ファイル１０のＸＭＬファイル１１から、<  IssueDate  >〜< / IssueDate  >で囲まれた領域の文字を抜き取り、内部ファイル４０のヘッダ部の続きに出力する。
【００９４】
続いて、制御用コンピュータ４００は、ステップＳ１１１において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< ReelNumber  >”を検出する。文字列“<  ReelNumber  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１１２において、ReelNumberExist=1と記述し、その後、入力した字幕ファイル１０のＸＭＬファイル１１から、<  ReelNumber  >〜< / ReelNumber  >で囲まれた領域の文字を抜き取り、内部ファイル４０のヘッダ部の続きに出力する。一方、文字列“<  ReelNumber  >”が検出できない場合には、制御用コンピュータ４００は、ステップＳ１１３において、内部ファイル４０のヘッダ部の続きに、ReelNumberExist=0という記述を出力する。
【００９５】
続いて、制御用コンピュータ４００は、ステップＳ１１４において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< Language >”を検出する。文字列“<  Language  >”が検出できない場合には、異常終了する。文字列“<  Language  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１１５において、入力した字幕ファイル１０のＸＭＬファイル１１から、<  Language  >〜< / Language  >で囲まれた領域の文字を抜き取り、内部ファイル４０のヘッダ部の続きに出力する。
【００９６】
続いて、制御用コンピュータ４００は、ステップＳ１１６において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< StartTime  >”を検出する。文字列“<  StartTime  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１１７において、StartTimeExist=1と記述し、その後、入力した字幕ファイル１０のＸＭＬファイル１１から<  StartTime  >〜< / StartTime  >で囲まれた領域の文字を抜き取り、内部ファイル４０のヘッダ部の続きに出力する。一方、文字列“<  StartTime  >”が検出できない場合には、制御用コンピュータ４００は、ステップＳ１１８において、内部ファイル４０のヘッダ部の続きに、StartTimeExist=0という記述を出力する。
【００９７】
続いて、制御用コンピュータ４００は、ステップＳ１１９において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< LoadFont  >”を検出する。文字列“<  LoadFont  >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ１２０において、入力した字幕ファイル１０のＸＭＬファイル１１に含まれている< LoadFont  >タグの発生回数をＮとし、LoadFontNumber=Nとして記述して、内部ファイル４０のヘッダ部の続きに出力する。文字列“<  LoadFont  >”が検出できなかった場合には、制御用コンピュータ４００は、ステップＳ１２１において、LoadFontNumber=0として記述して、内部ファイル４０のヘッダ部の続きに出力する。
【００９８】
続いて、制御用コンピュータ４００は、ステップＳ１２３の処理を、< LoadFont  >タグの発生回数をＮだけ繰り返し行う。なお、ステップＳ１２２はそのループの始点を示しており、ステップＳ１２４はそのループの終点を示している。
【００９９】
ステップＳ１２３では、< LoadFont >タグが示すフォントファイルの名称< ID >に示されたフォントファイルの実体データを読み出し、その名称< ID >と、その実体データと、そのファイルサイズとを、内部ファイル４０のヘッダ部の続きに出力する。
【０１００】
続いて、制御用コンピュータ４００は、ステップＳ１２５において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“< SubtitleList >を検出する。文字列“< SubtitleList >が検出できない場合には、異常終了する。文字列“< SubtitleList >”が検出できた場合には、制御用コンピュータ４００は、そのまま正常終了する。
【０１０１】
（内部ファイルのテキストデータ部の作成処理）
図６及び図７は、制御用コンピュータ４００による内部ファイルのテキストデータ部の作成処理のフローチャートである。
【０１０２】
まず、制御用コンピュータ４００は、ステップＳ２０１において、字幕ファイル１０のＸＭＬファイル１１をデータ格納装置２００から読み出して入力する。
【０１０３】
続いて、制御用コンピュータ４００は、ステップＳ２０２において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“<SubtitleList>”を検出する。文字列“< SubtitleList >”が検出できない場合には、異常終了する。
【０１０４】
続いて、制御用コンピュータ４００は、ステップＳ２０３において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“<Text>”タグを含む<Subtitle>を検出する。文字列“<Text>”タグを含む<Subtitle>が検出できなかった場合には、正常終了する。
【０１０５】
続いて、制御用コンピュータ４００は、ステップＳ２０４において、入力した字幕ファイル１０のＸＭＬファイル１１に含まれている文字列“<Text>”タグを含む<Subtitle>タグの発生回数をＮとし、TextInstanceNumber=Nとして記述して、内部ファイル４０のテキストデータ部の続きに出力する。
【０１０６】
以下、TextInstance毎に以下処理を進める。
【０１０７】
続いて、制御用コンピュータ４００は、ステップＳ２０５において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“<Font>”を検出する。文字列“< Font >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ２０６において、入力した字幕ファイル１０のＸＭＬファイル１１から、<Font >〜</ Font>で囲まれた領域の文字を抜き取り、内部ファイル４０のテキストデータ部の続きに出力する。なお、内部ファイル４０への記述の方法は、後述する「シンタックス」「セマンティクス」に示した規則に従う。一方、文字列“< Font>”が検出できない場合には、制御用コンピュータ４００は、ステップＳ２０７において、内部ファイル４０のテキストデータ部の続きに、FontElementExist=0という記述を出力する。
【０１０８】
続いて、制御用コンピュータ４００は、ステップＳ２０８以下の表示テキストループの処理を、TextInstanceNumberで指定された回数だけ繰り返し行う。なお、ステップＳ２０８は当該表示テキストループの始点を示しており、ステップＳ２１７は当該表示テキストループの終点を示している。
【０１０９】
続いて、制御用コンピュータ４００は、ステップＳ２０９において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“<Font>”を検出する。文字列“< Font >”が検出できた場合には、制御用コンピュータ４００は、ステップＳ２１０において、入力した字幕ファイル１０のＸＭＬファイル１１から、<Font >〜</ Font>で囲まれた領域の文字を抜き取り、内部ファイル４０のテキストデータ部の続きに出力する。なお、内部ファイル４０への記述の方法は、後述する「シンタックス」「セマンティクス」に示した規則に従う。一方、文字列“< Font>”が検出できない場合には、制御用コンピュータ４００は、ステップＳ２１１において、内部ファイル４０のテキストデータ部の続きに、FontElementExist=0という記述を出力する。
【０１１０】
続いて、制御用コンピュータ４００は、ステップＳ２１２において、入力した字幕ファイル１０のＸＭＬファイル１１から、<Text >〜</ Text >で囲まれた領域の文字を抜き取り、内部ファイル４０のテキストデータ部の続きに出力する。なお、内部ファイル４０への記述の方法は、後述する「シンタックス」「セマンティクス」に示した規則に従う。
【０１１１】
続いて、制御用コンピュータ４００は、ステップＳ２１３において、入力した字幕ファイル１０のＸＭＬファイル１１に含まれている文字列“<Text>”タグの発生回数をＮとし、ColumnNumber=Nとして記述して、内部ファイル４０のテキストデータ部の続きに出力する。
【０１１２】
続いて、制御用コンピュータ４００は、ステップＳ２１４以下の改行ループの処理を、ColumnNumberで指定された回数だけ繰り返し行う。なお、ステップＳ２１４は当該表示テキストループの始点を示しており、ステップＳ２１６は当該表示テキストループの終点を示している。
【０１１３】
続いて、制御用コンピュータ４００は、ステップＳ２１５において、入力した字幕ファイル１０のＸＭＬファイル１１から、<Text >〜</ Text >で囲まれた領域の文字を抜き取り、内部ファイル４０のテキストデータ部の続きに出力する。なお、内部ファイル４０への記述の方法は、後述する「シンタックス」「セマンティクス」に示した規則に従う。
【０１１４】
そして、改行ループ及び表示テキストループが終了すると、ステップＳ２１６及びステップＳ２１７を抜け、テキストデータ部の作成処理を正常終了する。
【０１１５】
（内部ファイルのピクチャデータ部の作成処理）
図８は、制御用コンピュータ４００による内部ファイルのピクチャデータ部の作成処理のフローチャートである。
【０１１６】
まず、制御用コンピュータ４００は、ステップＳ３０１において、字幕ファイル１０のＸＭＬファイル１１をデータ格納装置２００から読み出して入力する。
【０１１７】
続いて、制御用コンピュータ４００は、ステップＳ３０２において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“<SubtitleList>”を検出する。文字列“< SubtitleList >”が検出できない場合には、異常終了する。
【０１１８】
続いて、制御用コンピュータ４００は、ステップＳ３０３において、入力した字幕ファイル１０のＸＭＬファイル１１から、文字列“<Image>”タグを含む<Subtitle>を検出する。文字列“<Image>”タグを含む<Subtitle>が検出できなかった場合には、正常終了する。
【０１１９】
続いて、制御用コンピュータ４００は、ステップＳ３０４において、入力した字幕ファイル１０のＸＭＬファイル１１に含まれている文字列“<Image>”タグを含む<Subtitle>タグの発生回数をＮとし、PictureNumber=Nとして記述して、内部ファイル４０のピクチャデータ部の続きに出力する。
【０１２０】
以下、PictureInstance毎に以下処理を進める。
【０１２１】
続いて、制御用コンピュータ４００は、ステップＳ３０５以下の表示ピクチャループの処理を、PictureNumberで指定された回数だけ繰り返し行う。なお、ステップＳ３０５は当該表示ピクチャループの始点を示しており、ステップＳ３０７は当該表示ピクチャループの終点を示している。
【０１２２】
続いて、制御用コンピュータ４００は、ステップＳ３０６において、入力した字幕ファイル１０のＸＭＬファイル１１から、<Image >〜</ Image>で囲まれた領域の文字を抜き取り、内部ファイル４０のピクチャデータ部の続きに出力する。なお、内部ファイル４０への記述の方法は、後述する「シンタックス」「セマンティクス」に示した規則に従う。
【０１２３】
また、このときに、ＰＮＧファイル（PNG file()）が含まれていれば、その実体データであるＰＮＧファイル１３をデータ格納装置２００から読み出して、内部ファイル４０の当該ピクチャ部に割り当てる。
【０１２４】
そして、表示ピクチャループが終了すると、ステップＳ３０７を抜け、ピクチャデータ部の作成処理を正常終了する。
【０１２５】
（内部ファイルのインデックス部の作成処理）
図９は、制御用コンピュータ４００による内部ファイルのインデックス部の作成処理のフローチャートである。
【０１２６】
まず、制御用コンピュータ４００は、ステップＳ４０１において、これまでに作成した内部ファイルのヘッダ部、テキストデータ部及びピクチャデータ部をデータ格納装置２００から読み出して入力する。
【０１２７】
続いて、制御用コンピュータ４００は、ステップＳ４０２において、ヘッダ部、テキストデータ部及びピクチャデータ部の合計のサイズを、TotalSizeとして記述して、内部ファイル４０のインデックス部の続きに出力する。また、制御用コンピュータ４００は、ヘッダ部のサイズとテキストデータ部のサイズとの和のサイズを、TextSizeとして記述して、内部ファイル４０のインデックス部の続きに出力する。また、制御用コンピュータ４００は、ピクチャデータ部のサイズを、PictureSizeとして記述して、内部ファイル４０のインデックス部の続きに出力する。また、制御用コンピュータ４００は、各ピクチャデータ部に記述されたPictureNumberを、内部ファイル４０のインデックス部の続きに出力する。
【０１２８】
続いて、制御用コンピュータ４００は、ステップＳ４０３〜ステップＳ４０５の記録ピクチャループの処理を、PictureNumberで指定された回数だけ繰り返し行う。なお、ステップＳ４０３は当該記録ピクチャループの始点を示しており、ステップＳ４０５は当該記録ピクチャループの終点を示している。
【０１２９】
記録ピクチャループ内のステップＳ４０４では、制御用コンピュータ４００は、ピクチャデータ部に記述されたPictureNumberで指定された繰り返しループの先頭のTimeINの値（そのピクチャの表示開始時間）をStaretTimeとして、内部ファイル４０のインデックス部の続きに出力する。また、制御用コンピュータ４００は、ピクチャデータ部に記述されたPictureNumberで指定された繰り返しループの先頭のTimeINの項目と、ピクチャデータ部の先頭からのオフセット値とTextSizeとの和をOffsetSizeとして、内部ファイル４０のインデックス部の続きに出力する。
【０１３０】
続いて、制御用コンピュータ４００は、ステップＳ４０６において、インデックスデータ部のサイズを計算して、その値をindexsizeとして、内部ファイル４０のインデックス部の続きに出力する。また、制御用コンピュータ４００は、既に記述しているTotalSizeを、TotalSize=TotalSize+indexsizeと修正して、内部ファイル４０のインデックス部に上書き出力をする。
【０１３１】
続いて、制御用コンピュータ４００は、ステップＳ４０７〜ステップＳ４０９の補正ループの処理を、PictureNumberで指定された回数だけ繰り返し行う。なお、ステップＳ４０７は当該補正ループの始点を示しており、ステップＳ４０９は当該補正ループの終点を示している。
【０１３２】
補正ループ内のステップＳ４０８では、制御用コンピュータ４００は、既に記述しているoffsetSizeを、offsetSize = offsetSize +indexsizeと修正して、内部ファイル４０のインデックス部に上書き出力をする。
【０１３３】
そして、補正ループが終了すると、ステップＳ４０８を抜け、インデックス部の作成処理を正常終了する。
【０１３４】
（内部ファイルの転送処理）
このように内部ファイルのインデックス部には、ヘッダ部、テキストデータ部及びピクチャデータ部のそれぞれのデータサイズが記述される。また、さらに、ピクチャデータ部のそれぞれの字幕の表示の画像要素毎（例えばシーン毎）に、そのデータサイズ、及び、その表示開始時間が、先頭からのオフセットの形で表されている。
【０１３５】
このため、映画上映時において、字幕処理プロセッサ１３１が字幕に対する処理を行っている最中に、ホストＣＰＵ１１３がデータ格納装置２００から字幕メモリ１３６へ適宜データ転送を行うが、その際に、ホストＣＰＵ１１３が、各要素のデータサイズ及び表示開始時間に基づき、字幕メモリ１３６内のデータ占有量を算出し、当該字幕メモリ１３６が溢れないようにデータ転送の制御をすることが可能となる。従って、字幕処理プロセッサ１３１が、データの読み出し命令等を発行する必要がなくなり、また、ホストＣＰＵ１１３がＸＭＬファイルを解析して容量を計算する必要がなくなり、字幕処理時の処理負担を大幅に軽減することが可能となる。
【０１３６】
具体的に、内部ファイル４０を、データ格納装置２００から字幕処理部１３０の字幕メモリ１３６へ転送する際の、ホストＣＰＵ１１３の転送処理のフローを図１０に示す。
【０１３７】
まず、ホストＣＰＵ１１３は、ステップＳ５０１において、字幕メモリ１３６の占有量を管理するマップの内容をクリアするとともに、変数PictureNumberを０に設定する。
【０１３８】
続いて、ホストＣＰＵ１１３は、ステップＳ５０２において、内部ファイル４０のインデックス部をデータ格納装置２００から読み出して入力する。
【０１３９】
続いて、ホストＣＰＵ１１３は、ステップＳ５０３において、内部ファイル４０のテキストデータ部を、字幕メモリ１３６経由で、字幕処理プロセッサ１３１のワーキングメモリである主メモリ１３３に転送する。
【０１４０】
続いて、ホストＣＰＵ１１３は、ステップＳ５０４において、PictureNumber＝PictureNumber＋１の演算を行う。
【０１４１】
続いて、ホストＣＰＵ１１３は、ステップＳ５０５において、入力されたインデックス部のPictureNumberに対応するstartTime(n)及びoffsetSize(n)を取得する。
【０１４２】
続いて、ホストＣＰＵ１１３は、ステップＳ５０６において、startTime(n)は現在時刻よりも進んでいるか否かを判断する。ステップＳ５０６でstartTime(n)が現在時刻よりも進んでいると判断した場合には異常終了する。
【０１４３】
続いて、ホストＣＰＵ１１３は、ステップＳ５０７において、字幕メモリマップの容量の総和＋PictureSizeと、字幕メモリ１３６の容量とを比較する。比較した結果、字幕メモリ１３６の容量の方が大きい場合には、ステップＳ５１１に進み、字幕メモリマップの容量の総和＋PictureSizeの方が大きい場合にはステップＳ５０８に進む。
【０１４４】
ステップＳ５０８において、ホストＣＰＵ１１３は、字幕メモリマップの先頭の要素の表示時刻は、現在時刻よりも進んでいるか否かを判断する。進んでいなければステップＳ５０９で１秒待機して、再度ステップＳ５０８の処理を行い、字幕メモリマップの先頭の要素の表示時刻を過ぎるまでステップＳ５０８で待機する。
【０１４５】
ステップＳ５０８を抜けると、続いて、ホストＣＰＵ１１３は、ステップＳ５１０において、字幕メモリマップの容量の総和＝（字幕メモリマップの容量の総和−先頭の要素のファイルサイズ）とし、さらに、字幕メモリマップから、先頭の要素の項目を削除する。
【０１４６】
ステップＳ５１０の処理を終えると、ホストＣＰＵ１１３は、ステップＳ５０７に進み、再度、字幕メモリマップの容量の総和＋PictureSizeと、字幕メモリ１３６の容量とを比較する。
【０１４７】
字幕メモリマップの容量の総和＋PictureSizeよりも字幕メモリ１３６の容量の方が大きくなると、ステップＳ５０７を抜けて、ステップＳ５１１に進む。
【０１４８】
ホストＣＰＵ１１３は、ステップＳ５１１において、字幕メモリマップの最後尾の項目に新たな要素のファイルサイズと表示時刻を登録し、さらに、ファイルサイズの総和を更新する。
【０１４９】
続いて、ホストＣＰＵ１１３は、ステップＳ５１２において、内部ファイル４０のピクチャデータ部に含まれているＰＮＧｆｉｌｅ（）を、データ格納装置２００から字幕メモリ１３６に転送する。転送する際には、先頭からの位置を示したオフセット（OffsetSize(n)）とサイズ（PictureSize(n)）を参照して、内部ファイル４０から該当部分を切り出して転送する。
【０１５０】
続いて、ホストＣＰＵ１１３は、ステップＳ５１３において、インデックス部の最後まで処理をしたか否かを判断する。最後まで処理をしていない場合には、ステップＳ５０４にもどり、次のピクチャに対する処理を行う。
【０１５１】
ホストＣＰＵ１１３は、インデックス部の最後まで処理をしたと判断した場合には、当該転送処理を終了する。
【０１５２】
（コンテンツ復号装置の第１の変形例）
つぎに、コンテンツ復号装置１００の第１の変形例について、図１１を参照して説明をする。
【０１５３】
図１１に示した第１の変形例は、字幕処理回路１３０の部分を、コンテンツ復号装置１００から分離して字幕処理/表示装置７００として構成したものである。この場合、字幕処理/表示７００の内部構成は、字幕処理回路１３０が有していた構成要素は全て有しており、さらに、ネットワークＩ/Ｆ１３７と、フレームバッファ１２８とを有している。また、コンテンツ復号装置１００には、ネットワークＩ/Ｆ１１７が追加されている。
【０１５４】
字幕処理/表示装置７００は、ネットワークＩ/Ｆ１３７を介してコンテンツ復号装置１００から、内部ファイル４０の転送を受け、字幕の復号を行う。また、字幕処理/表示装置７００は、コンテンツ復号装置１００により復号された映像データがフレームバッファ１２８に格納され、当該フレームバッファ１２８上で復号した字幕画像と合成して映像出力装置３００に供給される。
【０１５５】
（コンテンツ復号装置の第２の変形例）
つぎに、コンテンツ復号装置１００の第２の変形例について、図１２、図１３及び図１４を参照して説明をする。
【０１５６】
図１２に示した第２の変形例は、データ転送を行う部分を、コンテンツ復号装置１００から分離してデータ転送装置８００として構成したものである。
【０１５７】
この場合、データ転送装置８００は、第１のネットワークＩ/Ｆ１１１、ファイバチャネルＩ/Ｆ１１２、ホストＣＰＵ１１３、主メモリ１１４及び第２のネットワークＩ/Ｆ１１５に加えて、ネットワークＩ/Ｆ１１８及びデータＩ/Ｆ１１９とを備えている。また、コンテンツ復号装置１００の映像音声処理回路１２０には、バスＩ/Ｆ１２１に代わるデータＩ/Ｆ１２１と、ネットワークＩ/Ｆ１２９を備えている。
【０１５８】
データ転送装置８００は、ネットワークＩ/Ｆ１１８を介して内部ファイル４０をコンテンツ復号装置１００に転送する。また、コンテンツ格納装置２００に格納されている映像ファイル２０，音声ファイル３０はデータＩ/Ｆ１１９、１２１を介してデータＩ/Ｆコンテンツ構文処理１２３に転送する。上映開始の命令等の信号は、ネットワークＩ/Ｆ１１８を介してコンテンツ復号装置１００に転送する。  
次に、第２の変形例において、内部ファイル４０を、データ格納装置２００から字幕処理部１３０の字幕メモリ１３６へ転送する際の字幕処理プロセッサ１３１で転送処理について説明をする。図１３及び図１４は、内部ファイル４０の転送時の字幕処理プロセッサ１３１の処理内容を示したフローチャートである。
【０１５９】
まず、字幕処理プロセッサ１３１は、ステップＳ６０１において、字幕メモリ１３６の占有量を管理するマップの内容をクリアするとともに、変数PictureNumberを０に設定する。
【０１６０】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０２において、内部ファイル４０のインデックス部を、ホストＣＰＵ１１３で制御されるデータ転送装置８００を介して、データ格納装置２００から入力する。
【０１６１】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０３において、内部ファイル４０のテキストデータ部を、字幕メモリ１３６経由で、字幕処理プロセッサ１３１のワーキングメモリである主メモリ１３３に転送する。
【０１６２】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０４において、転送されたインデックス部とテキストデータ部の総サイズの転送が終了したことを検出し、ある規定時間を設け、この規定時間以内に転送が終了しない場合は異常終了する。転送が終了した場合は次のステップＳ６０５へ進む。
【０１６３】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０５において、PictureNumber＝PictureNumber＋１の演算を行う。
【０１６４】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０５において、入力されたインデックス部のPictureNumberに対応するstartTime(n)及びoffsetSize(n)を取得する。
【０１６５】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０６において、startTime(n)は現在時刻よりも進んでいるか否かを判断する。ステップＳ６０６でstartTime(n)が現在時刻よりも進んでいると判断した場合には異常終了する。
【０１６６】
続いて、字幕処理プロセッサ１３１は、ステップＳ６０７において、字幕メモリマップの容量の総和＋PictureSizeと、字幕メモリ１３６の容量とを比較する。比較した結果、字幕メモリ１３６の容量の方が大きい場合には、ステップＳ６１１に進み、字幕メモリマップの容量の総和＋PictureSizeの方が大きい場合にはステップＳ６０８に進む。
【０１６７】
ステップＳ６０８において、字幕処理プロセッサ１３１は、字幕メモリマップの先頭の要素の表示時刻は、現在時刻よりも進んでいるか否かを判断する。進んでいなければステップＳ６０９で１秒待機して、再度ステップＳ６０８の処理を行い、字幕メモリマップの先頭の要素の表示時刻を過ぎるまでステップＳ６０８で待機する。
【０１６８】
ステップＳ６０８を抜けると、続いて、字幕処理プロセッサ１３１は、ステップＳ６１０において、字幕メモリマップの容量の総和＝（字幕メモリマップの容量の総和−先頭の要素のファイルサイズ）とし、さらに、字幕メモリマップから、先頭の要素の項目を削除する。
【０１６９】
ステップＳ６１０の処理を終えると、字幕処理プロセッサ１３１は、ステップＳ６０７に進み、再度、字幕メモリマップの容量の総和＋PictureSizeと、字幕メモリ１３６の容量とを比較する。
【０１７０】
字幕メモリマップの容量の総和＋PictureSizeよりも字幕メモリ１３６の容量の方が大きくなると、ステップＳ６０７を抜けて、ステップＳ６１１に進む。
【０１７１】
字幕処理プロセッサ１３１は、ステップＳ６１１において、字幕メモリマップの最後尾の項目に新たな要素のファイルサイズと表示時刻を登録し、さらに、ファイルサイズの総和を更新する。
【０１７２】
続いて、字幕処理プロセッサ１３１は、ステップＳ６１２において、ホストＣＰＵ１１３で制御されるデータ転送装置８００に対してPictureNumberに対応するピクチャデータの送信を要求する。
【０１７３】
送信要求を受けて、ホストＣＰＵ１１３で制御されるデータ転送装置８００は、ステップＳ６１３において、内部ファイル４０のピクチャデータ部に含まれているＰＮＧｆｉｌｅ（）をデータ格納装置２００から字幕メモリ１３６に転送する。転送する際には、先頭からの位置を示したオフセット（OffsetSize(n)）とサイズ（PictureSize(n)）を参照して、内部ファイル４０から該当部分を切り出して転送する。
【０１７４】
続いて、字幕処理プロセッサ１３１は、ステップＳ６１４において、PictureSize分のピクチャデータの総サイズの転送が終了したことを検出し、ある規定時間を設け、この規定時間以内に転送が終了しない場合は異常終了する。転送が終了した場合は次のステップＳ６１５へ進む。
【０１７５】
続いて、字幕処理プロセッサ１３１は、ステップＳ６１５において、インデックス部の最後まで処理をしたか否かを判断する。最後まで処理をしていない場合には、ステップＳ６０４にもどり、次のピクチャに対する処理を行う。
【０１７６】
字幕処理プロセッサ１３１は、インデックス部の最後まで処理をしたと判断した場合には、当該転送処理を終了する。
【０１７７】
次に、第２の変形例において、内部ファイル４０を、データ格納装置２００から字幕処理部１３０の字幕メモリ１３６へ転送する際の字幕処理プロセッサ１３１の転送処理の第２の例について説明をする。本例では、内部ファイルとしてまとめられたインデックスデータを元に字幕メモリ１３６の占有量を管理し、コンテンツ格納部２００に格納されているPNGファイルを転送する例である。図１５及び図１６は、内部ファイル４０の転送時の字幕処理プロセッサ１３１の処理内容を示したフローチャートである。インデックスデータとして、図１５及び図１６に示すように、各PictureNumber毎に、コンテンツ格納部２００内の対応するfile_nameを記述する。
【０１７８】
まず、字幕処理プロセッサ１３１は、ステップＳ７０１において、字幕メモリ１３６の占有量を管理するマップの内容をクリアするとともに、変数PictureNumberを０に設定する。
【０１７９】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０２において、内部ファイル４０のインデックス部を、ホストＣＰＵ１１３で制御されるデータ転送装置８００を介して、データ格納装置２００から入力する。
【０１８０】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０３において、内部ファイル４０のテキストデータ部を、字幕メモリ１３６経由で、字幕処理プロセッサ１３１のワーキングメモリである主メモリ１３３に転送する。
【０１８１】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０３ａにおいて、転送されたインデックス部とテキストデータ部の総サイズの転送が終了したことを検出し、ある規定時間を設け、この規定時間以内に転送が終了しない場合は異常終了する。転送が終了した場合は次のステップＳ７０４へ進む。
【０１８２】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０４において、PictureNumber＝PictureNumber＋１の演算を行う。
【０１８３】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０５において、入力されたインデックス部のPictureNumberに対応するstartTime(n)及びoffsetSize(n)を取得する。
【０１８４】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０６において、startTime(n)は現在時刻よりも進んでいるか否かを判断する。ステップＳ７０６でstartTime(n)が現在時刻よりも進んでいると判断した場合には異常終了する。
【０１８５】
続いて、字幕処理プロセッサ１３１は、ステップＳ７０７において、字幕メモリマップの容量の総和＋PictureSizeと、字幕メモリ１３６の容量とを比較する。比較した結果、字幕メモリ１３６の容量の方が大きい場合には、ステップＳ７１１に進み、字幕メモリマップの容量の総和＋PictureSizeの方が大きい場合にはステップＳ７０８に進む。
【０１８６】
ステップＳ７０８において、字幕処理プロセッサ１３１は、字幕メモリマップの先頭の要素の表示時刻は、現在時刻よりも進んでいるか否かを判断する。進んでいなければステップＳ７０９で１秒待機して、再度ステップＳ７０８の処理を行い、字幕メモリマップの先頭の要素の表示時刻を過ぎるまでステップＳ７０８で待機する。
【０１８７】
ステップＳ７０８を抜けると、続いて、字幕処理プロセッサ１３１は、ステップＳ７１０において、字幕メモリマップの容量の総和＝（字幕メモリマップの容量の総和−先頭の要素のファイルサイズ）とし、さらに、字幕メモリマップから、先頭の要素の項目を削除する。
【０１８８】
ステップＳ７１０の処理を終えると、字幕処理プロセッサ１３１は、ステップＳ７０７に進み、再度、字幕メモリマップの容量の総和＋PictureSizeと、字幕メモリ１３６の容量とを比較する。
【０１８９】
字幕メモリマップの容量の総和＋PictureSizeよりも字幕メモリ１３６の容量の方が大きくなると、ステップＳ７０７を抜けて、ステップＳ７１１に進む。
【０１９０】
字幕処理プロセッサ１３１は、ステップＳ７１１において、字幕メモリマップの最後尾の項目に新たな要素のファイルサイズと表示時刻を登録し、さらに、ファイルサイズの総和を更新する。
【０１９１】
続いて、字幕処理プロセッサ１３１は、ステップＳ７１２において、ホストＣＰＵ１１３で制御されるデータ転送装置８００に対してPictureNumberに対応するピクチャデータの送信を要求する。
【０１９２】
送信要求を受けて、ホストＣＰＵ１１３で制御されるデータ転送装置８００は、ステップＳ７１３において、PictureNumberに対応するfile_nameからＰＮＧｆｉｌｅ（）を特定し、データ格納装置２００から字幕メモリ１３６に転送する。
【０１９３】
続いて、字幕処理プロセッサ１３１は、ステップＳ７１４において、PictureSize分のピクチャデータの総サイズの転送が終了したことを検出し、ある規定時間を設け、この規定時間以内に転送が終了しない場合は異常終了する。転送が終了した場合は次のステップＳ７１５へ進む。
【０１９４】
続いて、字幕処理プロセッサ１３１は、ステップＳ７１５において、インデックス部の最後まで処理をしたか否かを判断する。最後まで処理をしていない場合には、ステップＳ７０４にもどり、次のピクチャに対する処理を行う。
【０１９５】
字幕処理プロセッサ１３１は、インデックス部の最後まで処理をしたと判断した場合には、当該転送処理を終了する。
【０１９６】
（内部ファイル４０の他の構成例）
以上説明をしたデジタル映画上映システムにおいては、内部ファイル４０は、先頭から、インデックス部と、ヘッダ部と、テキストデータ部と、ピクチャデータ部とが、連続して記述されているとともに、これらの部分を一つのファイルとして取り扱っている。
【０１９７】
しかしながら、本発明では、それぞれの部分を、別々にファイル化して、４つのファイルとして取り扱ってもよい。
【０１９８】
また、インデックス部は、ヘッダ部、テキストデータ部及びピクチャデータ部を読み出しの時間及び容量が記述されているため、インデックス部のみを別ファイルとし、ヘッダ部、テキストデータ部及びピクチャデータ部を一つのファイルとして構成してもよい。
【０１９９】
また、ピクチャデータ部は、画像データが含まれているために、他の部分と比べてデータサイズが大きくなる。従って、取り扱いが簡単になるように、ピクチャデータ部のみを別ファイルとし、インデックス部、ヘッダ部及びテキストデータ部を一つのファイルとして構成してもよい。
【０２００】
またデータ転送に際しては、内部ファイルとしてインデックス部を単独に記録し、他の字幕メインファイルと、テキストデータのフォントデータが含まれている１以上のフォントファイルと、画像データが含まれている１以上の画像ファイルを従来通りに記録する構成としてもよい。
【０２０１】
（字幕ファイル及び内部ファイルの記述例）
つぎに、字幕ファイル１０及び内部ファイル４０の記述例を示す。
【０２０２】
---------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<SubtitleReel 
xmlns="http://www.smpte-ra.org/415M/2005/DCST-1#" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.smpte-ra.org/415M/2005/DCST-1#">
<ID>b0d9a865-0909-4024-b04a-1145ee4a0001</ID>
<ContentTitleText Language="en">Subtitle sample</ContentTitleText>
<AnnotationText Language="ja">
xml字幕データのサンプルファイル(subtitle.xml)です。
</AnnotationText>
<IssueDate>2004-10-20T20:00:00Z</IssueDate>
<ReelNumber>1</ReelNumber>
<Language>ja</Language>
<StartTime>00:00:00:000</StartTime>
<LoadFont ID="映画字幕書体1">.\STP\font\MovieFont1.ttf</LoadFont>
<LoadFont ID="映画字幕書体2">.\STP\font\MovieFont2.ttf</LoadFont>
<LoadFont ID="映画字幕書体3">.\STP\font\MovieFont3.ttf</LoadFont>
<SubtitleList>
<Font ID="映画字幕書体1" Script="normal" Effect="border" 
Italic="no" Underline="no" Weight="normal" 
Color="FFFFFFFF" EffectColor="FF000000" Size="42">
<Subtitle SpotNumber="1" 
TimeIn="00:00:05:000" TimeOut="00:00:15:000" 
FadeUpTime="00:00:00:020" FadeDownTime="00:00:00:020">
<Image Halign="center" Hposition="0" 
Valign="bottom" Vposition="10">
.\STP\PNG\PNG001.png
</Image>
</Subtitle>
<Subtitle SpotNumber="2" 
TimeIn="00:00:09:000" TimeOut="00:00:12:000" 
FadeUpTime="00:00:00:020" FadeDownTime="00:00:00:020">
<Text Halign="center" Hposition="0" 
Valign="bottom" Vposition="10" Direction="ltr">
映画字幕書体1の文字です。
</Text>
</Subtitle>
</Font>
<Subtitle SpotNumber="3" 
TimeIn="00:00:13:000" TimeOut="00:00:16:000" 
FadeUpTime="00:00:00:020" FadeDownTime="00:00:00:020">
<Font ID="映画字幕書体3" Script="normal" Effect="border" 
Italic="no" Underline="no" Weight="normal" 
Color="FFFFFFFF" EffectColor="FF000000" Size="42">
<Text Halign="center" Hposition="0" 
Valign="bottom" Vposition="10" Direction="ltr">
映画字幕書体3の文字です。
</Text>
<Text Halign="center" Hposition="0" 
Valign="bottom" Vposition="4" Direction="ltr">
2行目の文字です。
</Text>
</Font>
</Subtitle>
<Subtitle SpotNumber="1" 
TimeIn="00:00:17:000" TimeOut="00:00:27:000" 
FadeUpTime="00:00:00:020" FadeDownTime="00:00:00:020">
<Image Halign="center" Hposition="0" 
Valign="bottom" Vposition="10">
.\STP\PNG\PNG002.png
</Image>
</Subtitle>
</SubtitleList>
</SubtitleReel>
--------------------------------------------------------------
【０２０３】
つぎに、以上のように記述された字幕データ１０を一本化した内部ファイル４０の記述例「シンタックス」を示す。
【０２０４】
--------------------------------------------------------------
index() {
TotalSize                       10 bytes
TextSize                         8 bytes
PictureSize                      6 bytes
PictureNumber                    4 bytes
for(i=0; i<PictureNumber; i++) {
startTime                     12 bytes
offsetSize                    10 bytes
}
}
SubtitleReel() {
ID                              36 bytes
ContentTitleTextLanguage         2 bytes
ContentTitleTextSize             2 bytes
for(i=0; i<ContentTitleTextSize; i++){
ContentTitleText               bytes
}
AnnotationTextLanguage           2 bytes
AnnotationTextSize               2 bytes
for(i=0; i<AnnotationTextSize; i++){
AnnotationText                 bytes
}
IssueDate                       20 bytes
ReelNumberExist                  1 byte
if (ReelNumberExist){
ReelNumber                     4 bytes
}
Language                         2 bytes
StartTimeExist                   1 byte
if (StartTimeExist){
StartTime                     12 bytes
}
LoadFontNumber                   2 bytes
for(i=0; i<LoadFontNumber; i++){
FontID                        26 bytes
fontFileSize                   6 bytes
for(i=0; i<fontFileSize; i++){
FontFile                     bytes
}
}
SubtitleTextList() {
FontElementExist               1 byte
if (FontElementExist){
FontID                      26 bytes
Script                       1 byte
Effect                       1 byte
Italic                       1 byte
Underline                    1 byte
Weight                       1 byte
Color                        8 bytes
EffectColor                  8 bytes
Size                         3 bytes
}
TextInstanceNumber             4 bytes
for(i=0; i<TextInstanceNumber; i++){
FontElementExist             1 byte
if (FontElementExist){
FontID                    26 bytes
Script                     1 byte
Effect                     1 byte
Italic                     1 byte
Underline                  1 byte
Weight                     1 byte
Color                      8 bytes
EffectColor                8 bytes
Size                       3 bytes
}
TimeIn                      12 bytes
TimeOut                     12 bytes
FadeUpTime                  12 bytes
FadeDownTime                12 bytes
Halign                       1 byte
Hposition                    2 byte
Valign                       1 byte
Vposition                    1 byte
Direction                    3 bytes
ColumnNumber                 1 byte
for(i=0; i<ColumnNumberr; i++){
textSize                   2 byte
for(i=0; i<textSize; i++){
text                       bytes
}
}
}
}
SubtitlePictureList() {
PictureNumber                  4 bytes
for(i=0; i<PictureNumber; i++) {
TimeIn                      12 bytes
TimeOut                     12 bytes
FadeUpTime                  12 bytes
FadeDownTime                12 bytes
Halign                       1 byte
Hposition                    1 byte
Valign                       1 byte
Vposition                    1 byte
PictureSize                  4 bytes
for(i=0; i<PictureSize; i++) {
PNG file()                 5 bytes
}
}
}
}
--------------------------------------------------------------
【０２０５】
つぎに、以上の内部ファイル４０の各コードの意味内容「セマンティクス」を以下に示す。
【０２０６】
--------------------------------------------------------------
index()
TotalSize
ファイルサイズ。単位はbyte。10進数で1-9,999,999,999まで。
TextSize
SubtitleTextList()のサイズ。単位はbyte。10進数で1-99,999,999まで。
PictureSize
SubtitlePictureList()のサイズ。単位はbyte。10進数で1-999,999まで。
PictureNumber
<SubtitleReel>タグで示された領域内に含まれる PNGファイルの数。
10進数で1-9,999まで。
PictureStartTime
各PNGファイルに対して設定されている TimeInの値。
PictureOffsetSize
各PNGファイルのファイル先頭からの差分位置。単位はbyte。
10進数で1-9,999,999,999まで。
SubtitleReel()
ID
time-low "-" time-mid "-" time-high-and-version "-"
clock-seq-and-reserved, clock-seq-low "-" node
time-low               =  8hexDigit
time-mid               =  4hexDigit
time-high-and-version  =  4hexDigit
clock-seq-and-reserved =  2hexDigit
clock-seq-low          =  2hexDigit
node                   = 12hexDigit
example) f81d4fae-7dec-11d0-a765-00a0c91e6bf6
ContentTitleTextLanguage
ContentTitleTextを示す言語コード。
XML xs:language typeであらわす。
ContentTitleTextSize
ContentTitleTextの byteサイズ。10進数で1-99まで。
ContentTitleText
コンテンツのタイトル等を記述する文字情報。
AnnotationTextLanguage
AnnotationTextを示す言語コード。
XML xs:language typeであらわす。
AnnotationTextSize
AnnotationTextのサイズ(byte)。10進数で0-99まで。
AnnotationText
コンテンツの内容等を記述する文字情報。
IssueDate
ファイル作成時の日時情報。
XML xs:dateTime typeであらわす。
example) 2005-03-20T20:00:00Z
ReelNumberExist
xmlファイルの<ReelNumber>タグで示された ReelNumber element
の有無を表す。1:exist, 0:not exist
ReelNumber
複数リールに渡ってファイルが含まれる場合、
ファイルが含まれているリールの番号を示す。
10進数で1-9999まで
Language
字幕ファイルのテキストが使用している言語コード。
XML xs:language typeであらわす。
StartTimeExist
xmlファイルの<StartTime>タグで示された StartTime element
の有無を表す。1:exist, 0:not exist
StartTime
字幕処理開始時刻を規定する。
example) 01:00:00:000
LoadFontNumber
ダウンロードするフォントファイルの数。10進数で0-99まで。
FontID
SubtitleTextList()の Fontエレメント内の IDで規定される
使用フォントとの対応がとれるように、ダウンロードするフォ
ントに IDを規定する。例えばフォントファイル名称を示す。
fontFileSize
フォントファイルのサイズ(byte)。xml の <LoadFontID>
タグで示されるファイルのサイズ。10進数で1-999999まで。
FontFile
フォントファイルの実体。xml の <LoadFontID>タグで
示されるファイル。
SubtitleTextList()
TextInstanceNumber
FontElementとTextElement、もしくは TextElementの繰り
返しの回数。10進数で0-9999まで。
FontElementExist
xmlファイルの<Font>タグで示された Font element の有無を
表す。1:exist, 0:not exist, X:記述が無い場合
FontID
SubtitleTextReel()の FontIDで規定される使用フォントとの
対応がとれるように、ダウンロードするフォントに IDを規定
する。例えばフォントファイル名称を示す。記述が無い場合は all"0"
Script
文字修飾機能の一部。
文字の上付き、下付き、通常の違いを規定する。
0 : 上付き、1 : 下付き、2 : 通常か、記述が無い場合
Effect
文字修飾機能の一部。
0 : 縁取り、1 : 影付き、2 : 通常か、記述が無い場合
Italic
0 : off、1 : on(Italic)    記述が無い場合は "0"
Underline
0 : off、1 : on(Underline) 記述が無い場合は "0"
Weight
0 : off、1 : on(Italic)    記述が無い場合は "0"
Color
文字のカラー、ARGBを各々 2hexDigitであらわす。
記述が無い場合は "FFFFFFFF"(不透明の白)
EffectColor
文字修飾部のカラー、ARGBを各々 2hexDigitであらわす。
記述が無い場合は "FF000000"(不透明の黒)
Size
文字のサイズ。単位はポイント。10進数で1-999まで。
【０２０７】
記述が無い場合は "42"
TimeIn
HH:MM:SS:EEEで示される文字またはピクチャの表示開始時刻。
EEEは edit units = 1/250sec = 4msec
TimeOut
HH:MM:SS:EEE)で示される文字またはピクチャの表示終了時刻。
FadeUpTime
HH:MM:SS:EEEで示される100%透明から完全不透明に至る時間。
FadeDownTime
HH:MM:SS:EEEで示される完全不透明から100%透明に至る時間。
Halign
文字またはピクチャの水平位置を Hpositionとの組み合わせで
規定。  0 : Left, 1 : Center, 2 : Right
Hposition
文字またはピクチャの水平位置を Halignとの組み合わせで
規定。Halign = Leftの時は、画面左端を基準、
Halign = Rightの時は、画面右端を基準、
Halign = Centerの時は、画面中央を基準、として、
基準からの配置距離を画面水平枠に対する比率(%)で規定する。
Valign
文字またはピクチャの垂直位置を Vpositionとの組み合わせで
規定。  0 : Top, 1 : Center, 2 :  Bottom
Vposition
文字またはピクチャの垂直位置を Valignとの組み合わせで
規定。Valign = Topの時は、画面上端を基準、
Halign = Bottomの時は、画面底を基準、
Halign = Centerの時は、画面中央を基準、として、
基準からの配置距離を画面高に対する比率(%)で規定する。
Direction
文字描画方向を規定する。
0 : left to right
1 : right to left
2 : top to bottom
ColumnNumber
表示する文字の行数。xmlファイルの<Subtitle>タグで示される
Subtitle element内の <Text>タグで指定された領域の発生回数。
textSize
表示する文字のbyte数。xmlファイルの<Subtitle>タグで示される
Subtitle element内の <Text>タグで指定された領域で規定される
表示文字のbyte数。
text
表示文字。xmlファイルの<Subtitle>タグで示されるSubtitle 
element内の <Text>タグで指定された文字。
PictureNumber
<SubtitleReel>タグで示された領域内に含まれる PNGファイルの数。
PictureSize
PNGファイルのサイズ。単位はbyte。10進数で1-99999まで。
PNG file()
PNGファイルの実体。xml の <Image>タグで示されるファイル。
【図面の簡単な説明】
【０２０８】
【図１】デジタル映画システムを表したブロック構成図である。
【図２】本発明が適用されたデジタル映画上映システムのユーザ側（映画館側）のシステムを模式的に表した図である。
【図３】コンテンツ復号装置の構成を表したブロック図である。
【図４】内部ファイルのヘッダ部の作成処理のフローチャートである。
【図５】図４に続くフローチャートである。
【図６】内部ファイルのテキストデータ部の作成処理のフローチャートである。
【図７】図６に続くフローチャートである。
【図８】内部ファイルのピクチャデータ部の作成処理のフローチャートである。
【図９】内部ファイルのインデックス部の作成処理のフローチャートである。
【図１０】内部ファイルの転送処理のフローチャートである。
【図１１】コンテンツ復号装置の第１の変形例の構成を表したブロック図である。
【図１２】コンテンツ復号装置の第２の変形例の構成を表したブロック図である。
【図１３】第２の変形例での内部ファイルの転送処理のフローチャートである。
【図１４】図１３に続く内部ファイルの転送処理のフローチャートである。
【図１５】第２の変形例での内部ファイルの他の転送処理のフローチャートである。
【図１６】図１５に続く内部ファイルの転送処理のフローチャートである。
【図１７】デジタル映画上映システムにおける字幕ファイル制作／上映を表すブロック図である。
【図１８】データ格納部に格納された字幕ファイルのディレクトリ／ファイル構造を示す図である。
【符号の説明】
【０２０９】
１  デジタル映画上映システム、２  コンテンツ制作者側システム、３  ユーザ側システム、１０  字幕ファイル、１１  ＸＭＬファイル、１２  フォントファイル、１３  ＰＮＧファイル、４０  内部ファイル、１００  コンテンツ復号装置、２００  データ格納装置、３００  映像出力装置、４００  制御用コンピュータ、５００  スクリーン、６００  音声出力装置
【図１】
2006311328.tif 000003
【図２】
2006311328.tif 000004
【図３】
2006311328.tif 000005
【図４】
2006311328.tif 000006
【図５】
2006311328.tif 000007
【図６】
2006311328.tif 000008
【図７】
2006311328.tif 000009
【図８】
2006311328.tif 000010
【図９】
2006311328.tif 000011
【図１０】
2006311328.tif 000012
【図１１】
2006311328.tif 000013
【図１２】
2006311328.tif 000014
【図１３】
2006311328.tif 000015
【図１４】
2006311328.tif 000016
【図１５】
2006311328.tif 000017
【図１６】
2006311328.tif 000018
【図１７】
2006311328.tif 000019
【図１８】
2006311328.tif 000020