本願に包含されている再生装置の発明、集積回路の発明、再生方法の発明は、パッケージメディアに対応するプレーヤ機器として実施することができる。図面を参照しながら、上記課題解決手段を具備した再生装置の実施形態について説明する。
1.再生装置の使用形態
先ず始めに、上記課題解決手段を具備した再生装置の使用形態について説明する。
図1は、プレーヤ機器を含むホームシアターシステムを示す図である。本システムは、パッケージメディアである記録媒体100、プレーヤ機器である再生装置200、操作装置300、テレビ400、液晶眼鏡500から構成される。
(1-1)記録媒体100
記録媒体100は、上記ホームシアターシステムに、例えば映画作品を供給する。
(1-2)再生装置200
再生装置200は、テレビ400と接続され、記録媒体100を再生する。こうして再生される再生映像には、2D映像、3D映像が存在する。
2D映像とは、表示装置の表示画面をX-Y平面として捉えて、このX-Y平面上の画素にて表現される画像であり、平面視画像とも呼ばれる。対照的に3D映像とは、表示装置の画面におけるX-Y平面上の画素に、Z軸方向の奥行きを加えた画像である。3D映像は、左目瞳孔に入射される左目映像と、右目瞳孔に入射される右目映像とを共に再生して、これら左目映像、右目映像で立体視効果を発揮することにより、ユーザによる視聴に供される。3D映像における画素のうち、正のZ軸座標をもつものをユーザは、表示装置の画面より手前にあると感じ、負のZ軸座標をもつものを、画面より奥に存在すると感じる。
(1-3)リモコン300
リモコン300は、階層化されたGUIに対する操作をユーザから受け付ける機器であり、かかる操作受け付けのため、リモコン100は、GUIを構成するメニューを呼び出すメニューキー、メニューを構成するGUI部品のフォーカスを移動させる矢印キー、メニューを構成するGUI部品に対して確定操作を行う決定キー、階層化されたメニューをより上位のものにもどってゆくための戻りキー、数値キーを備える。
(1-4)テレビ400
テレビ400は、映画作品の再生映像を表示したり、メニュー等を表示することで、対話的な操作環境をユーザに提供する。
(1-5)液晶眼鏡500
液晶眼鏡500は、液晶シャッタと、制御部とから構成され、ユーザの両目における視差を用いて立体視を実現する。液晶眼鏡500の液晶シャッタは、印加電圧を変えることにより、光の透過率が変化する性質を有する液晶レンズを用いたシャッタである。液晶眼鏡500の制御部は、再生装置から送られる右目瞳孔への入射用の画像と左目瞳孔への入射用の画像の出力の切り替えの同期信号を受け、この同期信号に従って、第1の状態、第2の状態の切り替えを行う。
第1の状態とは、右目に対する液晶レンズが光を透過しないように印加電圧を調節し、左目に対する液晶レンズが光を透過するように印加電圧を調節した状態であり、この状態において、左目画像が視聴に供され、右目では左目画像が見えないに状態となる。
第2の状態とは、右目に対する液晶レンズが光を透過するように印加電圧を調節し、左目に対する液晶レンズが光を透過しないように印加電圧を調節した状態であり、この状態において、右目への入射画像が視聴に供され、左目への入射画像が見えない状態となる。
(1-5-1)液晶眼鏡500着用時の視聴
図2は、左目用ピクチャデータ、右目用ピクチャデータが、シャッター眼鏡500を着用したユーザによってどのように見えるかを示す。
図中の矢印vw1は、左目瞳孔への入射期間における瞳孔への映像入力を示し、図中の矢印vw2は、右目瞳孔への入射期間における瞳孔への映像入力を示す。左目瞳孔への入射期間では、矢印vw1に示すように、左目瞳孔への入射期間では、左目用ピクチャデータの格納内容がシャッター眼鏡500を通じてユーザの左目瞳孔に入射する。右目瞳孔への入射期間では、この矢印vw2に示すように、右目用ピクチャデータの格納内容がシャッター眼鏡500を通じてユーザの右目瞳孔に入射する。
2.3D映像を再生するための再生モード
このホームシアターシステムによって再生される3D映像には、"立体視モード"という再生モードで再生されるもの、"1plane+Offsetモード"という再生モードで再生されるものの2種類がある。
(2-1)立体視モード
立体視モードについて説明する。立体視モードとは、Multiview Video Coding規格で規定されたベースビュービデオストリーム、ディペンデントビューストリームを同時に再生させることで立体視を実現する再生モードである。Multiview Video Coding(MVC)規格は、MPEG-4 AVC/H.264の修正規格であり、ISO/IEC MPEGとITU-T VCEGの共同プロジェクトであるJoint Video Team(JVT)によって策定された。MVCでは、複数視点の映像をまとめて符号化することが可能であり、映像の時間方向の類似性だけでなく視点間の類似性も予測符号化に利用することで、複数視点の独立した圧縮に比べて圧縮効率を向上させている。
(2-1-1)ベースビュービデオストリーム
ベースビュービデオストリームは、view_idが0のサブビットストリームであり、view_idが0のビューコンポーネントのシーケンスである。MPEG-4 MVC ベースビュービデオストリームは、MPEG-4 AVCビデオストリームの制約を守る。
(2-1-2)ディペンデントビュービデオストリーム
ディペンデントビュービデオストリーム は、view_idが1のサブビットストリームであり、view_idが1のビューコンポーネントのシーケンスである。
(2-1-3)ビューコンポーネント
ベースビュービデオストリームの内部には、ベースビュービデオストリームを構成する複数のベースビューコンポーネントを記載している。またディペンデントビューストリームの内部には、ディペンデントビューストリームを構成する複数のディペンデントビューコンポーネントを記載している。これらのベースビューコンポーネント、ディペンデントビューコンポーネントは、IDR,B,Pというようなピクチャタイプを有している。
ビューコンポーネントとは、一個のフレーム期間において、立体視再生のために同時に再生される複数のピクチャデータのそれぞれのものをいう。視点間の相関性を用いた圧縮符号化は、ベースビュービデオストリーム及びディペンデントビュービデオストリームのビューコンポーネントをピクチャデータとして用いて、ピクチャ間の相関性を用いた圧縮符号化を実現することでなされる。1つのフレーム期間に割り当てられたベースビュービデオストリームのビューコンポーネントと、ディペンデントビュービデオストリームのビューコンポーネントとの組みが、1個のアクセスユニットを構成することになり、このアクセスユニットの単位でランダムアクセスが可能になる。
(2-1-4)GOP構造
ベースビュービデオストリーム及びディペンデントビュービデオストリームは、何れも個々のビューコンポーネントを"ピクチャ"としたGOP構造を有しており、クローズドGOP、オープンGOPから構成される。クローズドGOPは、IDRピクチャと、このIDRピクチャに続くBピクチャと、Pピクチャとから構成される。オープンGOPは、Non-IDR Iピクチャと、Non-IDR Iピクチャに続くBピクチャと、Pピクチャとから構成される。図2に示すような、左目瞳孔への入射画像、右目瞳孔への入射画像は、これらベースビュービデオストリーム 、ディペンデントビューストリームを同時に再生することでなされる。
(2-2)1plane+Offsetモード
1plane+Offsetモードについて説明する。1plane+Offsetモードとは、プレーンメモリの後段にシフト部を組込んで、シフト部を機能させることで立体視を実現する再生モードである。プレーンオフセット部は、左目瞳孔への入射期間及び右目瞳孔への入射期間のそれぞれにおいて、プレーンメモリにおけるライン単位の画素の座標を、左方向又は右方向にシフトさせ、右目視線及び左目視線の結像点を手前方向、又は、奥行方向に変位させることで奥行き感を変化させる。具体的には、左目瞳孔への入射期間で左方向、右目瞳孔への入射期間で右方向に、画素座標を変化させれば、両目の視線の結像点は手前になり、左目瞳孔への入射期間で右方向、右目瞳孔への入射期間で左方向に、画素座標を変化させれば、両目の視線の結像点は手前になる。
かかるプレーンシフトでは、立体視のためのプレーンメモリが1プレーンで足りるので、簡易に立体視映像を作り出すのに最適である。このプレーンシフトでは、平面的な映像が手前に来たり、奥に引込んだりするという立体視映像を産み出すに過ぎないから、メニューや字幕の立体視効果には適しているものの、キャラクターや物体の立体視効果の実現にはやや物足りない。キャラクターの顔のくぼみや凹凸等が再現できないからである。
1plane+Offsetモードをサポートする場合、再生装置の構成は以下の通りになる。グラフィクスの再生のため、再生装置にはプレーンメモリと、CLUT部、合成部が存在しており、このCLUT部、合成部の間にプレーンシフト部が組み入れられる。そして、シフト部は、ディペンデントビュービデオストリームのアクセスユニット構造に組込まれたオフセットシーケンスにおけるオフセットを用いて、上述したような画素の座標変化を実現する。こうすることで、1plane+Offsetモードにおける画素の飛出度合は、MVCビデオストリームと緻密に同期したものになる。
(2-2-1)シフト制御の対象となるプレーンメモリ
オフセットシーケンスによるシフト制御の対象となるプレーンメモリは、所定のレイヤモデルを構成する複数のプレーンメモリである。プレーンメモリとは、一画面分の画素データをライン単位で格納しておき、水平同期信号、垂直同期信号に沿ってこれらの画素データを出力するためのメモリである。プレーンメモリは、ビデオデコーダ、プレゼンテーショングラフィクス(PG)デコーダのデコードによって得られた1画面分の画素データや、OSD(On Screen Display)を描画するための作成された1画面分の画素データを格納する。OSDとは、再生装置において、マニファクチャが作成した機器組込みGUIの1つである。
所定のレイヤモデルは、左目用ビデオプレーン及び右目用ビデオプレーンの階層、PGプレーンの階層、GFXプレーンの階層から構成され、各階層のプレーンメモリの格納内容を、左目用ビデオプレーン→PGプレーン→GFXプレーンの順にレイヤ合成することを意図したものである。
上記レイヤ合成は、プレーンメモリのレイヤモデルにおいて、2つの階層のプレーンメモリに格納されている画素データの画素値を重畳させるという処理を、レイヤモデルにおける2つの階層の全ての組合せに対して実行することでなされる。以下、各階層のプレーンメモリについて述べる。
左目用ビデオプレーンは、ベースビュービデオストリームを構成するビューコンポーネントをデコードすることで得られる一画面分の画素データを格納することができるプレーンメモリである。右目用ビデオプレーンは、ディペンデントビュービデオストリームを構成するビューコンポーネントをデコードすることで得られる一画面分の画素データを格納することができるプレーンメモリである。
プレゼンテーショングラフィクス(PG)プレーンとは、パイプライン式で動作するグラフィクスデコーダが、デコード処理を行うことで得られたグラフィクスの格納に用いられるプレーンメモリである。GFXプレーンとは、OSDの描画のために用いられるプレーンメモリである。
上記レイヤモデルにおいて、ビデオプレーンについては、ベースビュー用のビデオプレーンと、ディペンデントビュー用のビデオプレーンとが存在するものの、GFXプレーン、PGプレーンについては、ベースビュー用、ディペンデントビュー用のそれぞれについて、プレーンメモリが存在する訳ではない。よってGFXプレーン、PGプレーンがシフト制御の対象になる。
(2-2-2)正と負のプレーンオフセットの見え方
図3は、正と負のプレーンオフセットの見え方の違いの一例を示す図である。
同図(a)(b)において、手前の方は、ライトビュー出力時にシフトしたシフト後のグラフィクスプレーンを用いて出力されるライトビュー用のグラフィクスイメージを示す。奥の方は、左目瞳孔への入射出力時にシフトしたシフト後のグラフィクスプレーンを用いて出力される左目瞳孔への入射用のグラフィクスイメージを示す。
本図(a)は、プレーンオフセットの符号が正(左目瞳孔への入射用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合を示す。プレーンオフセットが正の値であると、左目瞳孔への入射出力時の字幕がライトビュー出力時の字幕より右の位置に見えるようになる。つまり、輻輳点(焦点位置)がスクリーンより手前にくるので、字幕も手前に見えるようになる。
本図(b)は、プレーンオフセットの符号が負である場合を示す。負の値であると、図14に示したように、左目瞳孔への入射出力時の字幕がライトビューの出力時の字幕より左の位置に見えるようになる。つまり、輻輳点(焦点位置)がスクリーンより奥にゆくので、字幕も奥に見えるようになる。
図4は、プレーンオフセットの符号が正(左目瞳孔への入射期間における描画イメージの書き込み位置を右方向へずらし、右目瞳孔への入射期間における描画イメージの書き込み位置を左方向へずらす)である場合、像が表示画面よりも手前にあるように見える原理を説明するための図である。
本図において、丸で示したものは、表示画面上に表示される像である。まず、2D表示モードである場合、右目に見える像も左目に見える像も同じ位置であるため、両目を用いて、この像を見たときの焦点位置は、表示画面上に位置する(図4(a))。結果として表示される像は表示画面上に位置する。
左目瞳孔への入射期間において、左目に見える像はプレーンオフセットが0の場合に比べて右側の位置に見えるようシフトして表示する。このとき右目にはシャッター眼鏡500により何も見えないようにする。一方、右目に見える像は、プレーンオフセットが0の場合に比べて左側の位置に見えるようにシフトして表示する。このとき左目にはシャッター眼鏡500により何も見えないようにする(図4(b))。
人間は両目を用いて焦点をあわせてその焦点位置に像があるように認識する。従って、シャッター眼鏡500により左目に像が見える状態と、右目に像が見える状態とを交互に短い時間間隔で切り替えると、人間の両目は表示画面よりも手前の位置に焦点位置を、合わせようとし、結果として表示画面よりも手前に位置する焦点位置に像があるように錯覚を起こす(図4(c))。
図5は、像が表示画面よりも奥にあるように見える原理を説明するための図である。
図5において、丸で示したものは、表示画面上に表示される像である。まず2D表示モードにおいて、右目に見える像も左目に見える像も同じ位置であるため、両目を用いて、この像を見たときの焦点位置は、表示画面上に位置する(図5(a))。結果として表示される像は表示画面上に位置する。
一方、左目瞳孔への入射期間において、左目に見える像はプレーンオフセットが0の場合に比べて左側の位置に見えるようにする。このとき右目にはシャッター眼鏡500により何も見えないようにする。一方、右目に見える像は、オフセットが"0"の場合に比べて右側の位置に見えるようにする、このとき左目にはシャッター眼鏡500により何も見えないようにする(図5(b))。
シャッター眼鏡500により左目に像が見える状態と、右目に像が見える状態と互に短い時間間隔で切り替えると、人間の両目は表示画面よりも奥の位置に焦点位置を、合わせようとし、結果として表示画面よりも奥の位置に像があるように錯覚を起こす(図5(c))。
(2-2-3)ディペンデントビュービデオストリームにおける改良点
ディペンデントビューストリームには、1plane+Offsetモードに用いられるオフセットシーケンスが組み込まれている点がベースビュービデオストリームと異なる。ここでオフセットシーケンスについて説明する。1plane+Offsetモードに用いられるオフセットシーケンスは、ディペンデントビュービデオストリームのビデオアクセスユニット内に複数存在する。
ディペンデントビュービデオストリームのビデオアクセスユニットは、ビデオアクセスユニットデリミター、シーケンスパラメータセット、ピクチャパラメータセット、MVCスケーラブルネスティングSEIメッセージ、ファーズトビューコンポーネント、シーケンス終端コード、ストリーム終端コードを配列することにより構成される。そしてこのMVCスケーラブルネスティングSEIメッセージの中に、ユーザデータコンテナが存在する。ユーザデータコンテナは、アンレジスタードユーザデータ(未登録ユーザデータ)のことであり、クローズドキャプション情報、GOP構造マップ、オフセットメタデータという3つの種類がある。これらの種類のうち何れかであるかは、コンテナ中のtype_ indicatorに明示される。
(2-2-3-1)オフセットメタデータの詳細
オフセットメタデータは、ディペンデントビューアクセスユニットの符号化順序における各GOPの先頭のビデオコンポーネントのMVCスケーラブルネスティングSEIメッセージに格納されねばならない。オフセットメタデータの内部に、上述した複数のオフセットシーケンスが存在する。オフセットシーケンスは、グループオブピクチャに属する各ピクチャデータと、グラフィクスとを合成する場合における制御パラメータを、グループオブピクチャにおけるフレーム期間毎に示すパラメータシーケンスであり、number_of_displayed_frames_in_GOPに示される個数の制御パラメータから構成される。この制御パラメータは、プレーンオフセット方向情報と、プレーンオフセット値とから構成される。
プレーンオフセット方向情報(Plane_offset_direction)は、プレーンにおけるオフセット方向を指示する。値"0"でフロント設定、つまり、プレーンメモリは、TVと視聴者との間に存在し、左目瞳孔への入射期間においてプレーンは右方向に、右目瞳孔への入射期間においてプレーンは左方向にシフトされる。値"=1"でビハインド設定、つまり、プレーンメモリは、TV又はスクリーンの背後に存在し、左目瞳孔への入射期間においてプレーンは左方向に、右目瞳孔への入射期間においてプレーンは右方向にシフトされる。プレーンオフセット方向情報がフロント設定を示す場合、3次元座標系における制御パラメータのZ軸座標は、正の座標になる。プレーンオフセット方向情報がビハインド設定を示す場合、3次元座標系における制御パラメータのZ軸座標は、負の座標になる。
プレーンオフセット値(Plane_offset_value)は、グラフィクスを構成する画素の水平方向の変位量の指定であり、プレーンのオフセット値を画素単位で指示する。以上で、1plane+Offsetモードの説明を終える。
続いて、これら立体モード、1plane+Offsetモードを実現する、記録媒体について説明する。
3.記録媒体の内部構成
図6は、第1実施形態に係る記録媒体における内部構成を示す。本図(a)に示すように、第1実施形態に係る記録媒体には、「インデックステーブル」、「動作モードオブジェクトのプログラムファイル」、「プレイリスト情報ファイル」、「ストリーム情報ファイル」、「ストリームファイル」が記録されている。
(3-1)インデックステーブル
インデックステーブルは記録媒体全体に関する管理情報であり、再生装置への記録媒体挿入後に、インデックステーブルが最初に読み出されることで、再生装置において記録媒体が一意に認識される。
(3-2)動作モードオブジェクトのプログラムファイル
動作モードオブジェクトのプログラムファイルは、再生装置を動作させるための制御プログラムを格納している。このプログラムファイルにおけるプログラムには、コマンドによって記述されたものと、オブジェクト指向のコンパイラ言語によって記述されたものがある。前者のプログラムは、コマンドベースの動作モードにおいて、複数のナビゲーションコマンドをバッチジョブとして再生装置に供給し、これらナビゲーションコマンドに基づき再生装置を動作させる。このコマンドベースの動作モードを、「HDMVモード」と呼ぶ。
後者のプログラムは、オブジェクト指向型のコンパイラ言語ベースの動作モードにおいて、クラス構造体のインスタンスであるバイトコードアプリケーションを再生装置に供給し、このインスタンスに基づき再生装置を動作させる。クラス構造体のインスタンスには、バイトコードアプリケーションの1つであるJava(TM)アプリケーションを用いることができる。オブジェクト指向型コンパイラ言語ベースの動作モードを、「BD-Jモード」と呼ぶ。
(3-3)ストリームファイル
ストリームファイルは、ビデオストリーム、1つ以上のオーディオストリーム、グラフィクスストリームを多重化することで得られたトランスポートストリームを格納している。ストリームファイルには、2D専用のものと、2D-3D兼用のものとがある。2D専用のストリームファイルは、通常のトランスポートストリーム形式であり、2D-3D兼用のストリームファイルは、立体視インターリーブドストリームファイルのファイル形式を有する。
立体視インターリーブドストリームファイル形式とは、ベースビューストリームを含むメインのトランスポートストリーム(メインTS)のエクステントと、ディペンデントビュービデオストリームを含むサブトランスポートストリーム(サブTS)のエクステントとをインターリーブ形式で交互配置したものである。
ストリームファイルに格納されるメイントランスポートストリーム(TS)は、複数種別のPESストリームを管理・制御するための情報として、欧州デジタル放送規格に規定されたパケット管理情報(PCR,PMT,PAT)を具備している。これらのPCR,PMT,PATは、欧州デジタル放送規格において、一個の放送番組(Program)を構成するパーシャルTSを規定する役割をもち、再生装置は、欧州デジタル放送規格において、一個の放送番組を構成するパーシャルTSを扱うかの如く、TSをデコーダによる処理に供することができる。これは、欧州デジタル放送規格の端末装置と、記録媒体再生装置との互換性を意図したものである。
メインTSにおけるエクステント及びサブTSにおけるエクステントの組みは、再生時においてダブルバッファをアンダーフローさせないデータサイズに設定されており、再生装置は、これらのエクステントの組みを途切れなく読み込んでゆくことができる。
以上がストリームファイルについての説明である。
(3-4)ストリーム情報ファイル
ストリーム情報ファイルは、ストリームファイルにおけるトランスポートストリーム内の任意のソースパケットに対するランダムアクセスや、他のトランスポートストリームとの途切れ無き再生を保障する。このストリーム情報ファイルを通じることにより、ストリームファイルは「AVクリップ」として管理されることになる。ストリーム情報ファイルは、AVクリップにおけるストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置のソースパケット番号を、フレーム期間のプレゼンテーションタイムスタンプと対応付けて示す基本エントリーマップをもっているので、ストリームファイルのアクセスに先立ち、このストリーム情報ファイルをメモリにロードしておけば、アクセスしようとするストリームファイル中のトランスポートストリームがどのようなものであるのかを把握することができるので、ランダムアクセスの実行を保障することができる。ストリーム情報ファイルには、2Dストリーム情報ファイルと、3Dストリーム情報ファイルとがあり、3Dストリーム情報ファイルは、ベースビューのためのクリップ情報(クリップベース情報)と、ディペンデントビューのためのクリップ情報(クリップディペンデント情報)と、立体視用の拡張エントリーマップとを含む。
(3-4-1)クリップベース情報
クリップベース情報は、ベースビューのためのエクステントスタートポイント情報を含み、クリップディペンデント情報は、ディペンデントビューのためのエクステントスタートポイント情報を含む。ベースビューのためのエクステントスタートポイント情報は、複数のソースパケット番号から構成される。それぞれのソースパケット番号は、メインTSにおけるエクステントの分割位置が何パケット目に存在するかを示す。ディペンデントビューのためのエクステントスタートポイント情報も複数のソースパケット番号から構成され、サブTSにおける分割位置が何パケットに存在するかを示す。これらのエクステントスタートポイント情報を用いることで、立体視インターリーブドストリームファイルは、メインTSと、サブTSとに分割されることになる。
(3-4-2)拡張エントリーマップ
拡張エントリーマップは、GOP先頭のフレーム期間を表すプレゼンテーションタイムスタンプに対応付けて、ディペンデントビュービデオストリームにおけるGOP先頭のビューコンポーネントの先頭位置となるアクセスユニットデリミターのソースパケット番号を示す。
(3-4-3)基本エントリーマップ
基本エントリーマップは、2Dストリーム情報ファイルとの互換をもちつつも、GOP先頭のフレーム期間を表すプレゼンテーションタイムスタンプに対応付けて、ベースビュービデオストリームにおけるGOP先頭のビューコンポーネントの先頭位置となるアクセスユニットデリミターのソースパケット番号を示す。
(3-5)プレイリスト情報ファイル
プレイリスト情報ファイルは、再生装置にプレイリストを再生させるための情報を格納したファイルである。「プレイリスト」とは、トランスポートストリーム(TS)の時間軸上で再生区間を規定するとともに、この再生区間同士の再生順序を論理的に指定することで規定される再生経路であり、TSのうち、どれをどの部分だけ再生して、どのような順序でシーン展開してゆくかを規定する役割をもつ。プレイリスト情報は、かかるプレイリストの「型」を定義する。プレイリスト情報によって定義される再生経路は、いわゆる「マルチパス」である。マルチパスとは、主となるTSに対して定義された再生経路(メインパス)と、従となるTSに対して定義された再生経路(サブパス)とを束ねたものである。このマルチパスにおいてベースビュービデオストリームの再生経路を規定し、サブパスにおいてディペンデントビュービデオストリームの再生経路を規定すれば、立体視を再生するためのビデオストリームの組合せを、好適に規定することができる。
オブジェクト指向プログラミング言語ベースのアプリケーションが、このプレイリスト情報を再生するフレームワークプレーヤインスタンスの生成を命じることで、マルチパスによるAV再生を開始させることができる。フレームワークプレーヤインスタンスとは、メディアフレームワークプレーヤクラスを基にして仮想マシンのヒープメモリ上に生成される実際のデータのことである。またコマンドベースのプログラムが、このプレイリスト情報を引き数で指定した再生コマンドを発行することで、マルチパスによる再生を開始することもできる。
(3-3-1)エレメンタリストリームの詳細
図5(b)は、メインTSを構成する複数のエレメンタリストリームを示し、同図(c)は、サブTSを構成する複数のエレメンタリストリームを示す。同図(b)に示すように、メインTSは、1本のベースビュービデオストリームと、32本の左目PGストリーム、32本の左目用インタラクティブグラフィクス(IG)ストリーム、32本のオーディオストリームを含むものとする。同図(c)に示すように、サブTSは、1本のディペンデントビュービデオストリームと、32本の右目PGストリーム、32本の右目用IGストリームを含むものとする。
TSに多重化されるエレメンタリストリーム(ES)は、上述したベースビュービデオストリーム、ディペンデントビュービデオストリームの他に、オーディオストリーム、プレゼンテーショングラフィクスストリーム、インタラクティブグラフィクスストリームがある。
・オーディオストリーム
オーディオストリームには、プライマリオーディオストリーム、セカンダリオーディオストリームの2種類がある。プライマリオーディオストリームは、ミキシング再生を行う場合、主音声となるべきオーディオストリームであり、セカンダリオーディオストリームは、ミキシング再生を行う場合、副音声をとなるべきオーディオストリームである。セカンダリオーディオストリームは、このミキシングのためのダウンサンプリングのための情報、ゲイン制御のための情報が存在する。
・プレゼンテーショングラフィクスストリーム(PGストリーム)
PGストリームは、デコーダにパイプラインを採用することで、映像との緻密な同期を実現することができ、字幕表示に適したグラフィクスストリームであり、2DPGストリームと、立体視PGストリームという2つの種類がある。立体視PGストリームには、左目PGストリーム及び右目PGストリームという二種類のものがある。
2DPGストリームは最大32本、左目PGストリームの最大32本、右目PGストリームも最大32本定義することができる。これらのPGストリームには、それぞれ、別々のパケット識別子が付与されており、多重分離部に、再生すべきパケット識別子を指示することで、これらのPGストリームのうち、所望のものが再生に供されることになる。
パイプラインによるデコード動作の実現により、動画像との緻密な同期を実現するので、PGストリームの用途は字幕のような文字再生に限定されない。映画作品のマスコットキャラクタを表示して、これを動画像と同期させつつ動作させるなど、緻密な同期が必要なグラフィクス再生であれば、どのようなものも、PGストリームによる再生対象として、採用することができる。
ストリームファイルに多重化されないが、字幕を現すストリームには、PGストリームの他に、テキスト字幕(textST)ストリームというものがある。textSTストリームは、字幕の内容をキャラクタコードで現したストリームである。
PGストリーム、テキスト字幕ストリームは、これらの種類が区別されることなく、同じストリーム種別であるとして、これらPGストリーム及びテキスト字幕ストリームは、同じストリーム登録列に登録される。そして、ストリーム選択のプロシージャを実行するにあたって、ストリーム登録列におけるストリーム登録の順位に従い、再生されるべきPGストリーム又はテキスト字幕ストリームが定まる。PGストリーム、テキスト字幕ストリームは、ストリーム種が区別されることなく、ストリーム選択のプロシージャに供されるのでこれらPGストリーム及びテキスト字幕ストリームを1つのストリーム種別、つまり、「PG_テキスト字幕ストリーム(略して、字幕ストリームと呼ぶ場合もある)」という種別で扱う。
2D用のPG_テキスト字幕ストリームは、1plane+Offsetモードにおいて再生される。以降の説明では、2DPG_テキスト字幕ストリームを、1plane+OffsetPG_テキスト字幕ストリームであるとして説明する。
・インタラクティブグラフィクス(IG)ストリーム
IGストリームは、対話操作の情報を具備することで、ビデオストリームの再生進行に伴ってメニューを表示したり、またユーザ操作に従いポップアップメニューを表示することができるグラフィクスストリームである。
IGストリームが対話操作の情報をもつ意義は以下の通りである。Java仮想マシンがアプリケーションからの要求に応じてプレイリスト再生の開始を再生制御の主体である再生制御エンジンに指示する場合、Java仮想マシンは、再生制御エンジンに再生を命じた後、プレイリスト再生を開始した旨のレスポンスをアプリケーションに返す。つまり、再生制御エンジンによるプレイリスト再生が継続している間、Java仮想マシンは、実行終了待ちにはならない。何故なら、Java仮想マシンは、いわゆるイベントドリブン型の動作主体であり、再生制御エンジンがプレイリストの再生を行っている間も、動作を行うことができるからである。
一方、HDMVモードにおいて、コマンドインタプリタが、プレイリスト再生を再生制御エンジンに命じる場合、プレイリスト再生が終了するまで、そのプレイリスト再生の実行終了待ちとなる。再生制御エンジンによる再生が継続している間、コマンド実行部は、対話的な処理を実行することはできない。このコマンドインタプリタの代わりに、グラフィクスデコーダが対話的な動作を行う。グラフィクスデコーダに対話的な動作を行わせるため、IGストリームには、ボタン部材を用いた対話的な操作を規定する制御情報が組込まれている。
以上がストリームファイルについての説明である。続いて、プレイリスト情報の詳細について説明する。
上述したようなマルチパスを定義するため、プレイリスト情報は図7のような内部構成を有する。図7は、プレイリスト情報の内部構成を示す。同図(a)に示すようにプレイリスト情報は、「メインパス情報」、「サブパス情報」、「プレイリストマーク情報」、「エクステンションデータ」を含む。以下、これらの構成要素について説明する。
(3-5-1)メインパス情報
メインパス情報は、1つ以上の主たる再生区間情報から構成される。図7(b)は、メインパス情報、及び、サブパス情報の内部構成を示す図であり、本図に示すように、メインパス情報は、1つ以上の主たる再生区間情報から構成される。サブパス情報は、1つ以上の従たる再生区間情報から構成される。
主たる再生区間情報はプレイアイテム情報と呼ばれ、TSの再生時間軸のうち、In_Timeとなる時点と、Out_Timeとなる時点の組みを1つ以上定義することにより、論理的な再生区間を定義する情報である。再生装置は、カレントのプレイアイテムの番号を格納するプレイアイテム番号レジスタを含み、複数のプレイアイテムのうち、対応するプレイアイテム番号が、このプレイアイテム番号レジスタに格納されているものが、現在の再生対象になる。プレイリスト情報は、プレイアイテム情報−ストリーム情報−トランスポートストリームという階層構造を有しており、トランスポートストリーム及びストリーム情報の組みと、プレイアイテム情報との比率については、1対多の関係にして、1つのトランスポートストリームを複数のプレイアイテム情報から多重参照することができる。よって、あるプレイリストのために作成されたトランスポートストリームをバンクフィルムとして採用し、これを複数のプレイリスト情報ファイルにおけるプレイアイテム情報から参照することで、映画作品のバリエーションを効率良く作成することができる(尚、バンクフィルムとは、映画業界の用語であり、複数のシーンで使いまわしされる映像内容のことである)。一般には、プレイリストという単位はユーザから認識されないので、ストリームファイルから派生した複数のバリエーション(例えば劇場公開版やTV放映版)が、プレイリストとして認識される。
図7(c)は、プレイアイテム情報の内部構成を示す。本図に示すように、「ストリーム参照情報」、「インタイムアウトタイム情報」、「接続状態情報」、「基本ストリーム選択テーブル」を含む。
「ストリーム参照情報」は、プレイアイテムを構成するトランスポートストリームを「AVクリップ」として管理しているストリーム情報ファイルを示す「ストリーム情報ファイルネーム情報(clip_information_file_name)」、そのTSにおける符号化方式を示す「クリップ符号化方式識別子(Clip_codec_identifier)」、当該TSのSTCシーケンスにおいて、インタイム及びアウトタイムが設定されているSTCシーケンスがどれであるかを示す「STC識別子レファレンス(STC_ID_reference)」を含む。
『インタイムアウトタイム情報(In_Time,Out_Time)』は、STCシーケンス時間軸におけるプレイアイテムの始点と、STCシーケンス時間軸上におけるプレイアイテムの終点とを示す。
『接続状態情報』は、プレイアイテム情報に対応する再生区間と、その直前の再生区間との接続情報が、シームレス接続であるか否かを規定する。
『基本ストリーム選択テーブル』については後で詳しく説明する。
(3-5-2)サブパス情報
サブパス情報は、複数の従たる再生区間情報(サブプレイアイテム情報)から構成される。図7(d)は、サブプレイアイテムの内部構成を示す。本図に示すように、サブプレイアイテム情報は、STCシーケンスの時間軸にインタイムと、アウトタイムとの組みを規定することで、サブパスを構成する再生区間を定義する情報であり、「ストリーム参照情報」、「インタイムアウトタイム情報」、「シンクロプレイアイテムレファレンス」、「シンクロ開始時刻情報」を含む。 「ストリーム参照情報」は、プレイアイテム情報と同様、『ストリーム情報ファイルネーム情報』『クリップ符号化方式識別子』、『STC識別子レファレンス』を含む。
「インタイムアウトタイム情報(SubPlayItem_In_Time,SubPlayItem_Out_Time)」は、STCシーケンス時間軸における、サブプレイアイテムの始点と、STCシーケンス時間軸上における、サブプレイアイテムの終点とを示す。
「シンクロプレイアイテムレファレンス(Sync_PlayItem_Id)」は、プレイアイテムのうち、本サブプレイアイテムが同期すべきものを一意に指定する情報である。サブプレイアイテムインタイムは、この同期プレイアイテム参照子で指定されたプレイアイテムの再生時間軸上に存在する。
「シンクロ開始時刻情報(Sync_Start_PTS_of_PlayItem)」は、同期プレイアイテム参照子で指定されたプレイアイテムのSTCシーケンスの時間軸のうち、サブプレイアイテムインタイムで指定されたサブプレイアイテムの始点が、どの時点に写像されるかを示す。
(3-5-3)プレイリストマーク情報
プレイリストマーク情報は、再生区間固有のマークポイントを定義する情報であり、再生区間を示す参照子と、デジタルストリームの時間軸において、マークポイントが何処にあるかを示すタイムスタンプと、マークポイントの属性を示す属性情報とを含む。そして属性情報は、プレイリストマーク情報により定義されたマークポイントが、リンクポイントであるか、エントリーマークであるかを示す。
リンクポイントは、リンクコマンドによるリンクが可能であるが、チャプタースキップ操作がユーザによりなされた場合の選択対象にはならないマークポイントである。
エントリーマークは、リンクコマンドによるリンクが可能であり、尚且つチャプタースキップ操作がユーザによりなされた場合の選択対象になるマークポイントである。
IGストリームのボタン情報内に組込まれたリンクコマンドは、プレイリストマーク情報を介した間接参照の形式で頭出し位置を指定している。
以上がプレイリスト情報を構成するプレイアイテム情報、サブプレイアイテム情報、プレイリストマーク情報についての説明である。続いて、基本ストリーム選択テーブルの詳細について説明する。
(3-5-4)基本ストリーム選択テーブル(STreamNumber_table)
基本ストリーム選択テーブルは、プレイリストを構成する複数のプレイアイテムのうち、その基本ストリーム選択テーブルを包含しているものがカレントプレイアイテムになった際、マルチパスのメインパスにて参照されているAVクリップに多重化されているES、及び、マルチパスのサブパスにて参照されているAVクリップに多重化されているESのうち、どれの再生を許可するかを、複数のストリーム種別毎に規定するテーブルである。ここでのストリーム種別とは、ピクチャインピクチャにおけるプライマリビデオストリーム、ピクチャインピクチャにおけるセカンダリビデオストリーム、サウンドミキシングにおけるプライマリオーディオストリーム、サウンドミキシングにおけるセカンダリオーディオストリーム、PG_テキスト字幕ストリーム、IGストリームといった種別をいい、基本ストリーム選択テーブルは、これらのストリーム種別毎に、再生を許可すべきストリームを登録することができる。具体的には、基本ストリーム選択テーブルは、ストリーム登録の配列から構成される。ここでストリーム登録とは、基本ストリーム選択テーブルが帰属しているプレイアイテムがカレントプレイアイテムになった際、再生を許可すべきESがどのようなストリームであるかを、そのストリーム番号に対応付けて示すものであり、ストリーム登録は、論理的なストリーム番号に、ストリームエントリー及びストリーム属性の組合せを対応付けるというデータ構造になっている。 ストリーム登録におけるストリーム番号は、1、2、3というような整数値で表現され、ストリーム番号の最大数は、対応するストリーム種別のストリーム本数となる。
再生装置には、このストリーム種別毎に、ストリーム番号レジスタが存在しており、このストリーム番号レジスタに格納されたストリーム番号で指示されるエレメンタリストリームが、現在再生対象になっているエレメンタリストリーム、つまりカレントストリームになる。
このストリームエントリー内に、再生すべきエレメンタリストリーム(ES)のパケット識別子が記述される。ストリームエントリー内に、再生すべきESのパケット識別子を記述することができるので、ストリーム登録におけるストリーム番号を再生装置のストリーム番号レジスタに格納し、ストリーム登録におけるストリームエントリー内のパケット識別子に基づいて再生装置のPIDフィルタにパケットフィルタリングを再生装置に実行させる。こうすることで、基本ストリーム選択テーブルにおいて再生が許可されたESのTSパケットがデコーダに出力され、ESの再生がなされることになる。
基本ストリーム選択テーブルにおけるこれらのストリーム登録は、ストリーム番号の順序に従って並べられており、ストリーム番号の順序に基づくストリーム登録の順位は、「再生装置が再生することができる」、「ストリームの言語属性が再生装置の言語設定と一致する」の条件を満たすストリームが複数存在する場合、ストリーム登録列におけるストリーム番号の順位によって、選択対象となるストリームが決定される。
こうすることで、基本ストリーム選択テーブルにおけるストリーム登録の中に、再生装置が再生できないものが存在する場合、かかるストリームは再生から除外されることになり、また、「再生装置が再生することができる」、「ストリームの言語属性が再生装置の言語設定と一致する」との条件を満たすストリームが複数存在する場合は、それらのうちどれを優先的に選択すべきか、という指針をオーサリング者は再生装置に伝えることができる。
「再生装置が再生することができる」、「ストリームの言語属性が再生装置の言語設定と一致する」という条件を満たすストリームが存在するかどうかという判定や、「再生することができる」、「ストリームの言語属性が再生装置の言語設定と一致する」との条件を満たすストリームのうちどれを選択するかという選択手順は、ストリーム選択プロシージャと呼ばれる。ストリーム選択プロシージャは、カレントプレイアイテムが新しいものに切り替った際、また、ユーザからストリーム切り替えが要求された際、実行される。
カレントプレイアイテムが新しいものに切り替わる等、再生装置の状態変化が生じた際、上述したような判定や選択を行い、再生装置のストリーム番号レジスタにストリーム番号を設定する一連の手順を「状態変化時に実行すべきプロシージャ」という。ストリーム番号レジスタは、ストリーム種別毎に存在するから、上記プロシージャは、ストリーム種別ごとに実行されることになる。
ストリーム切り替え要求がユーザによってなされた場合、上述したような判定や選択を行い、再生装置のストリーム番号レジスタにストリーム番号を設定する一連の手順を「ストリーム変化が要求された際のプロシージャ」という。
ディスクが装填された際、ストリーム番号レジスタをストリーム登録列における初期値に設定しておくとの手順を、「初期化」という。
基本ストリーム選択テーブルにおけるストリーム登録列は、サブプレイアイテム情報によって指定されているストリームと、プレイアイテム情報によって指定されているストリームとに一律に優先順序を付与しているので、ビデオストリームとは多重化されていないストリームであっても、サブプレイアイテム情報によって指定されていれば、ビデオストリームと同期再生すべきストリームの選択にあたっての選択の対象となる。
そして、サブプレイアイテム情報にて指定されたストリームを再生装置が再生することができ、尚且つ、サブプレイアイテム情報にて指定されたストリームの優先順序がビデオストリームと多重化されたグラフィクスストリームの優先順序よりも高い場合は、ビデオストリームと多重化されたストリームの代わりに、サブプレイアイテム情報にて指定されたストリームを再生に供することができる。
基本ストリーム選択テーブルにおけるストリーム番号の用途を述べる。基本ストリーム選択テーブルに記載されたストリーム番号は、セットストリームコマンドのオペランドに使うことができる。
セットストリームコマンドとは、オペランドに指定されたストリーム番号をカレントストリーム番号としてストリーム番号レジスタに設定して、カレントストリームの切り替えを再生装置に命じるコマンドであり、コマンドベースのプログラムが、ストリームの切り替えを再生装置に実行させる際に用いられる。
また、ストリームチェンジUOの引き数やセットストリームAPIの引き数にも使用することができる。ストリームチェンジUOとは、引き数に指定されたストリーム番号をカレントストリーム番号としてストリーム番号レジスタに設定して、カレントストリームの切り替えを再生装置に命じるユーザ操作イベントである。
セットストリームAPIとは、引き数に指定されたストリーム番号をカレントストリーム番号としてストリーム番号レジスタに設定して、カレントストリームの切り替えを再生装置に命じるAPIであり、オブジェクト指向プログラミング言語ベースのプログラムが、ストリーム切り替えを再生装置に実行させる際に用いられる。
<基本ストリーム選択テーブルの具体例>
図8は、基本ストリーム選択テーブルの一例を示す。同図(a)は、ストリーム種別に、プライマリビデオストリーム、プライマリオーディオストリーム、PGストリーム、IGストリーム、セカンダリビデオストリーム、セカンダリオーディオストリームといった種別が存在する場合に、基本ストリーム選択テーブルに設けられる複数のストリーム登録列を示す。同図(b)は、基本ストリーム選択テーブルにより、メインTS,サブTSから、どのようなESが分離されるかを示す。同図左側は、メインTS、サブTSを示し、真ん中は、基本ストリーム選択テーブルと、多重分離部とを示す。右側は、基本ストリーム選択テーブルに基づき分離されるプライマリビデオストリーム、プライマリオーディオストリーム、PGストリーム、IGストリーム、セカンダリビデオストリーム、セカンダリオーディオストリームを示す。以上が基本ストリーム選択テーブルについての説明である。続いて、エクステンションデータの詳細について説明する。図9は、エクステンションデータの内部構成を示す図である。エクステンションデータは、2Dモードにおいて不要であり、3Dモードのみ必要となる拡張データの総称である。図9に示すように、エクステンションデータは、ベースビューインディケータと、拡張ストリーム選択テーブルと、プレーン内有効化情報列とから構成される。
(3-5-5)ベースビューインディケータ
「ベースビューインディケータ」は、視点間の相関性を利用した圧縮符号化の基礎となるベースビュービデオストリームを、左目及び右目のどちらとして表示されるべきかを3D用プレイリスト毎に指定する。プレイリスト情報におけるベースビューインディケータを変化させることで、ベースビュービデオストリームを、左目及び右目用のうちどちらにするかという割り当てをプレイリストのレベルで変化させることができる。
ストリームの構造に依拠しないプレイリストのレベルで、上記割り当てを変化させることができるので、画像中の物体の位置及び角度がベースビュー=左目、ディペンデントビュー=右目用のように設定されているプレイリストが存在する場合、このプレイリストとは別バージョンとして、ベースビュー=右目用、ディペンデントビュー=左目のように設定されているプレイリストを作成することができる。
プレイリストのレベルで、ベースビュー、ディペンデントビューに対する左目、右目用の割り当てを逆転させれば、立体視効果を逆転させることができる。例えば、画面の手前に対象物が出現するような立体視効果を意図したプレイリストが既に作成されている場合、かかるプレイリストと別に、画面の奥に対象物が出現するような立体視効果を意図したプレイリストを作成することができる。よって3Dプレイリストでは、立体視効果が異なる、プレイリストのバリエーションを簡易に作成することがでるという効果を奏する。
(3-5-6)拡張ストリーム選択テーブル(STreamNumber_table_StereoScopic(SS))
拡張ストリーム選択テーブルは、3D用プレイリスト固有の情報であり、立体視出力モードにおいてのみ、ストリーム選択テーブルと共に使用されるストリーム選択テーブルである。プレイアイテムの再生や、これに関連するサブパスが再生されている際、選択することができるエレメンタリストリームを定義する。
拡張ストリーム選択テーブルは、立体視出力モードにおいてのみ再生を許可すべきエレメンタリストリームを示し、ストリーム登録列を含む。ストリーム登録列における個々のストリーム登録情報は、ストリーム番号と、そのストリーム番号に対応するストリームエントリーと、ストリーム属性とを含む。拡張ストリーム選択テーブルは、立体視出力モード固有の拡張を意味するので、各プレイアイテム情報に拡張ストリーム選択テーブル(STN_table_SS)が関連付けられているプレイリストを「3Dプレイリスト」という。
拡張ストリーム選択テーブルにおけるストリームエントリーは、再生装置が立体視出力モードに設定されている場合において、対応するストリーム番号が再生装置におけるストリーム番号レジスタに設定された際、再生装置が多重分離に用いるべきパケット識別子を示す。ここで、基本ストリーム選択テーブルとの違いは、拡張ストリーム選択テーブルにおけるストリーム登録列は、ストリーム選択プロシージャの対象にならない点である。つまり、基本ストリーム選択テーブルにおけるストリーム登録列におけるストリーム登録情報は、個々のESの優先順序と解釈され、何れかのストリーム登録情報内のストリーム番号が、ストリーム番号レジスタに書き込まれる。しかし拡張ストリーム選択テーブルにおけるストリーム登録列は、ストリーム選択プロシージャの対象とはならず、拡張ストリーム選択テーブルにおけるストリーム登録情報は、何れかのストリーム番号がストリーム番号レジスタに格納された際、そのストリーム番号に対応するストリームエントリー及びストリーム属性を取り出すという目的のみに用いられる。
平面視モードから立体視モードへと出力モードが切り替った際、対象となるストリーム選択テーブルが、基本ストリーム選択テーブルから拡張ストリーム選択テーブルに切り替ったために、ストリーム選択プロシージャを実行したとなると、ストリーム番号の同一性を維持することができず、強いては、言語属性の同一性も失われる可能性がある。
平面視モードから立体視モードへの切り替え時に、言語属性を始めとするストリーム属性の同一性を維持するため、拡張ストリーム選択テーブルの用途を、上記のものにも留めている。
拡張ストリーム選択テーブルにおけるストリーム番号の用途を述べる。拡張ストリーム選択テーブルに記載されたストリーム番号は、セットストリームコマンドやセット立体視ストリームコマンドのオペランドに使うことができる。
セット立体視ストリームコマンドとは、オペランドに指定された立体視のためのストリーム番号をカレントストリーム番号としてストリーム番号レジスタに設定して、カレントストリームの切り替えを再生装置に命じるコマンドであり、コマンドベースのプログラムが、立体視ストリームへの切り替えを再生装置に実行させる際に用いられる。
また、ストリームチェンジUOの引き数やセットストリームAPIの引き数にも使用することができる。拡張ストリーム選択テーブルは、ディペンデントビュービデオストリームのストリーム登録列、PGストリームのストリーム登録列、IGストリームのストリーム登録列から構成される。
拡張ストリーム選択テーブルにおけるストリーム登録列は、ストリーム選択テーブルにおける同じストリーム種別のストリーム登録列に結合される。この結合は、ストリーム選択テーブルにおけるプライマリビデオストリームのストリーム登録列に、拡張ストリーム選択テーブルにおけるディペンデントビュービデオストリームのストリーム登録列を結合し、ストリーム選択テーブルにおけるPGストリームのストリーム登録列に、拡張ストリーム選択テーブルにおけるPGストリームのストリーム登録列を結合し、IGストリームのストリーム登録列に、拡張ストリーム選択テーブルにおけるIGストリームのストリーム登録列を結合することでなされる。
上記の結合がなされれば、結合後のストリーム選択テーブルのうち、基本ストリーム選択テーブルにおけるストリーム登録列に対して上記プロシージャが実行される。
<拡張ストリーム選択テーブルの詳細>
図9における拡張ストリーム選択テーブルは、各プレイアイテムにおけるそれぞれのストリーム種別に対応するストリーム登録列から構成される。
ここでプレイアイテム#1〜#NというN個のプレイアイテムが存在する場合、プレイアイテム#1〜#Nのそれぞれに対応するストリーム登録列が、拡張ストリーム選択テーブルに設けられる。各プレイアイテムに対応するストリーム登録列は、ディペンデントビューストリーム登録列、PGストリーム登録列、IGストリーム登録列である。
図10(a)は、拡張ストリーム選択テーブルにおけるPGストリームのストリーム登録列の内部構成を示す。PGストリームのストリーム登録列は、M個のストリーム登録情報から構成される。ここで、"M"とは、プレイアイテム情報#xの基本ストリーム選択テーブルにおいて、再生が許可されているPGストリームの本数である。
図中の引き出し線は、ストリーム登録列の共通の内部構成をクローズアップして示している。
『PG_テキスト字幕オフセットシーケンスIDレファレンス情報(PGtextST_offset_sequence_id_ref)』は、PG_テキスト字幕ストリームオフセットシーケンスレファレンス情報であり、1plane+OffsetモードのPG_テキスト字幕ストリームについてのオフセットシーケンスを指示する。
オフセットメタデータは、ディペンデントビュービデオストリームのアクセスユニットによって供給される。再生装置は、このフィールドによって提供されたオフセットを1plane+Offsetモードタイプのプレゼンテーショングラフィクス(PG)プレーンに適用せねばならない。
このフィールドが不定値(FF)である場合、再生装置はPGプレーンに、このオフセットを適用しない。
『上端配置存否フラグ』は、上端配置字幕ストリームが存在するか否かを示す。
『下端配置存否フラグ』は、下端配置字幕ストリームが存在するか否かを示す。
『立体視存否フラグ』は、PGストリームにおける左目用IGのストリームエントリー、右目用IGのストリームエントリーが存在するか否かを示す。立体視PGストリームにおける構造が存在しない場合、このフィールドは0に設定されねばならない。立体視PGストリームにおける構造が存在する場合、このフィールドは1に設定されねばならない。
『上端字幕ストリームエントリー』は、上端配置字幕ストリームが定義されているサブパスや上端配置字幕ストリームが格納されているストリームファイル、当該ストリームファイルにおける上端配置字幕ストリームのパケット識別子のレファレンスを含む。
拡張ストリーム選択テーブルによって再生可能であると設定されている複数の字幕ストリームのうち、表示座標Y0,Y1が、グラフィクスプレーンの上端領域に設定されているものが、このストリームエントリーによって上端配置字幕ストリームであるとして指定されることになる。
『上端字幕ストリーム属性』は、上端配置字幕ストリームの符号化方式や言語属性を示す。
『上端字幕のオフセットシーケンスIDレファレンス』は、上端配置字幕ストリームを再生する場合に適用すべきオフセットシーケンスを示す。
『下端字幕ストリームエントリー』は、下端字幕ストリームが定義されているサブパスや下端字幕ストリームが格納されているストリームファイル、当該ストリームファイルにおける下端字幕ストリームのパケット識別子のレファレンスを含む。
拡張ストリーム選択テーブルによって再生可能であると設定されている複数の字幕ストリームのうち、表示座標Y0,Y1が、グラフィクスプレーンの下端領域に設定されているものが、このストリームエントリーによって下端字幕ストリームであるとして指定されることになる。
『下端字幕ストリーム属性』は、下端字幕ストリームの符号化方式や言語属性を示す。
『下端字幕のオフセットシーケンスIDレファレンス』は、下端字幕ストリームを再生する場合に適用すべきオフセットシーケンスを示す。
『左目PGのストリームエントリー』は、立体視における左目PGストリームが定義されているサブパスや左目PGストリームが格納されているストリームファイル、当該ストリームファイルにおける左目PGストリームのパケット識別子のレファレンスを含む。
『右目PGのストリームエントリー』は、立体視における右目PGストリームが定義されているサブパスや右目PGストリームが格納されているストリームファイル、当該ストリームファイルにおける右目PGストリームのパケット識別子のレファレンスを含む。
『立体視PGのストリーム属性』は、立体視PG再生時に再生されるべき字幕ストリームの符号化方式や言語属性を示す。
『立体視PGのオフセットシーケンスIDレファレンス』は、立体視PG再生時に適用すべきオフセットシーケンスを示す。以上が拡張ストリーム選択テーブルについての説明である。
(3-5-6)プレーン内有効化情報列
プレーン内有効化情報列は、プレイアイテム情報#1,#2〜#Nのそれぞれに対応するプレーン内有効化情報の集まりである。プレーン内有効化情報とは、左目ビデオプレーン及び右目ビデオプレーンにおける領域のうち、一部を有効化する情報である。図10(b)は、プレーン内有効化情報の内部構成を示す。プレーン内有効化情報は、対応するプレイリスト情報がカレントプレイリストとして選択されている場合、ビデオプレーンにおける画素領域のうち、どの部分を有効にするかを規定する情報でありbottom_margin、top_margin、top_down_offset、bottom_up_offsetから構成される。
top_margin、bottom_marginは、通常レイアウトを採用する場合、画面の上端領域の縦幅、下端領域の縦幅がどれだけであるかを規定する。top_margin、bottom_marginには、画素数を2で割った値が記載されている。よって、再生時において、このtop_margin、bottom_marginに示される値に"2"を乗ずれば、通常レイアウト時においてビデオプレーンの上下端に設けるべき余白のサイズを算出することができる。top_margin、bottom_marginとしては、69と設定することが望ましい。この場合、top_margin、bottom_marginに2を乗じることで、138という画素数が、ビデオプレーンの上下端に確保される。
top_down_offsetは、上端配置レイアウトを採用する場合、画面の上端領域の縦幅をどれだけにするかを規定する。
bottom_up_offsetは、下端配置レイアウトを採用する場合、画面の下端領域の縦幅をどれだけにするかを規定する。top_down_offset、bottom_up_offsetには、画素数を2で割った値が記載されている。よって、再生時において、このtop_down_offset、bottom_up_offsetに示される値に"2"を乗ずれば、ビデオプレーンにおける画素の上下シフトに必要な画素数を算出することができる。top_down_offsetとしては、104と設定することが望ましい。この場合、top_down_offsetに2を乗じることで、208という画素数が、ビデオプレーンの下方向シフトに利用される。bottom_up_offsetとしては、34と設定することが望ましい。この場合、bottom_up_offsetに2を乗じることで、68という画素数が、ビデオプレーンの上方向シフトに利用される。bottom_up_offset、top_down_offsetにて指定された画面端部に、字幕を表示したり、またバイトコードアプリケーションがGUIを表示したりすることができる。
これで、再生装置による再生処理の対象となる記録媒体についての説明を終える。続いて、再生装置の詳細について説明する。
(4-1)再生装置の内部構成
図11は、再生装置の内部構成を示す。本図に示すように再生装置は、読出部1、ビデオデコーダ2、ビデオプレーン3、字幕デコーダ4、グラフィクスプレーン5、合成部6、送受信部7、左右シフト部8a,8b、上下シフト部9、多重分離部10、レジスタセット11、プレイリスト情報メモリ12、プロシージャ実行部13、再生制御部14、操作受付部15、OSD処理部16から構成される。
(4-1-1)読出部1
読出部1は、記録媒体からインデックステーブル、プログラムファイル、プレイリスト情報ファイル、ストリーム情報ファイル、ストリームファイルを読み出す。読出部201は、立体視インターリーブドストリームファイルの読み出しにあたって、3Dストリーム情報ファイルにおけるクリップベース情報内のエクステントスタートポイント情報と、クリップディペンデント情報内のエクステントスタートポイント情報とを用いて、立体視インターリーブドストリームファイルを、メインTSと、サブTSとに分割して、別々のリードバッファに格納するという処理を行う。この分割は、クリップディペンデント情報におけるエクステントスタートポイント情報に示されているソースパケット番号のパケット数だけ、立体視インターリーブドストリームファイルからソースパケットを取り出してメインTSに追加するという処理と、クリップベース情報におけるエクステントスタートポイント情報に示されているソースパケット番号のパケット数だけ、立体視インターリーブドストリームファイルからソースパケットを取り出してサブTSに追加するという処理とを繰り返すことでなされる。
(4-1-2)ビデオデコーダ2
ビデオデコーダ2は、コーデッドデータバッファ、デコードデータバッファを備え、ディペンデントビュービデオストリームを構成するビューコンポーネントをコーデッドデータバッファにプリロードした上、ベースビュービデオストリーム内のクローズGOPの先頭に位置するデコーダリフレッシュを意図したピクチャタイプ(IDRタイプ)のビューコンポーネントをデコードする。このデコードにあたって、コーデッドデータバッファ、デコードデータバッファを全クリアする。こうしてIDRタイプのビューコンポーネントをデコードした後、このビューコンポーネントとの相関性に基づき圧縮符号化されているベースビュービデオストリームの後続のビューコンポーネント、及び、ディペンデントビュービデオストリームのビューコンポーネントをデコードする。デコードによって当該ビューコンポーネントについての非圧縮のピクチャデータが得られれば、デコードデータバッファに格納し、かかるピクチャデータを参照ピクチャとする。
この参照ピクチャを用いて、ベースビュービデオストリームの後続のビューコンポーネント、及び、ディペンデントビュービデオストリームのビューコンポーネントについて、動き補償を行う。動き補償によって、ベースビュービデオストリームの後続のビューコンポーネント、及び、ディペンデントビュービデオストリームのビューコンポーネントについて、非圧縮のピクチャデータが得られれば、これらをデコードデータバッファに格納し参照ピクチャとする。以上のデコードは、個々のアクセスユニットのデコードタイムスタンプに示されているデコード開始時刻が到来時になされる。
(4-1-3)ビデオプレーン3
ビデオプレーン3は、左目用プレーンメモリ、右目用プレーンメモリから構成される。ベースビューのビューコンポーネントをデコードすることで得られた非圧縮のピクチャデータ、ディペンデントビューのビューコンポーネントをデコードすることで得られた非圧縮のピクチャデータが、これら左目用プレーンメモリ、右目用プレーンメモリに書き込まれる。この書き込みは、個々のアクセスユニットのプレゼンテーションタイムスタンプに示されている再生開始時刻の到来時になされる。
左目用のプレーンメモリ、右目用プレーンメモリのうち、どちらにデコード後のピクチャデータを書き込むかは、プレイリスト情報におけるベースビューインディケータに従う。ベースビューインディケータが、ベースビュービデオストリームを"左目用"として指定していれば、ベースビュービデオストリームのビューコンポーネントとなるピクチャデータが左目用プレーンメモリに書き込まれ、ディペンデントビュービデオストリームのビューコンポーネントとなるピクチャデータが右目用のプレーンメモリに書き込まれる。
ベースビューインディケータが、ベースビュービデオストリームを"右目用"として指定していれば、ベースビュービデオストリームのビューコンポーネントであるピクチャデータが右目用のプレーンメモリに書き込まれ、ディペンデントビュービデオストリームのビューコンポーネントであるピクチャデータが左目用のプレーンメモリに書き込まれる。そして、これらのビューコンポーネントは、順次表示装置に出力される。具体的にいうと、一個のフレーム期間において、左目用プレーンメモリのピクチャデータと、右目用プレーンメモリのピクチャデータとを同時に出力する。左目用ビデオプレーン及び右目用ビデオプレーンは、複数のラインメモリからなり、ビデオデータを構成する画素データは、ラインメモリを構成する32ビット長の記憶素子にそれぞれ格納される。そしてピクチャデータを構成する画素データの画面上の座標は、例えばビデオプレーンにおけるラインメモリのアドレスであるROWアドレスと、ラインメモリにおける記憶素子の相対アドレスであるCOLUMNアドレスとの組みに対応する。
(4-1-4)字幕デコーダ4
字幕デコーダ4は、PG_テキスト字幕ストリームをデコードして、デコードにより得られた非圧縮のビットマップやグラフィクスをグラフィクスプレーンに書き込む。
(4-1-5)グラフィクスプレーン5
グラフィクスプレーン5は、PGプレーン5a、GFXプレーン5bから構成される。PGプレーン5aは、字幕デコーダ4のデコードによって得られた字幕を格納する。GFXプレーン5bは、OSD処理部16によって描画されたOSDを格納する。
(4-1-5-1)PGプレーン5a
PGプレーン5aは、複数のラインメモリからなり、非圧縮の字幕を構成する画素データは、PGプレーンのラインメモリを構成するハーフワード(8ビット)長の記憶素子にそれぞれ格納される。そして字幕を構成する画素データの画面上の座標は、例えばPGプレーンにおける画素データのラインメモリを指示するROWアドレスと、そのラインメモリにおける記憶素子を指示するCOLUMNアドレスとの組みに対応する。PGプレーンに格納される画素データとは、8ビットのピクセルコードである。8ビットのピクセルコードは、カラールックアップテーブルを用いた色変換によって、Y値、Cr値、Cb値、α値に変換される。例えばピクチャデータの解像度が1920×1080に設定されている場合、PGプレーンは、横1920×縦1080の画素データを格納する。PGプレーンの背景部分にあたる記憶素子には、透明色を示すY値、Cr値、Cb値、α値とが格納されており、この部分には、左目用ビデオプレーン及び右目用ビデオプレーンとの合成時において、左目用ビデオプレーン及び右目用ビデオプレーンにおける動画像が透けて見えるようになる。一方、前景部分にあたる記憶素子には、透明色以外を示すY値、Cr値、Cb値、α値が格納されており、この透明色以外のY値、Cr値、Cb値、α値によって、字幕が描かれることになる。
(4-1-5-2)GFXプレーン5b
GFXプレーン5bは、複数のラインメモリからなり、OSDを構成する画素データは、GFXプレーンのラインメモリを構成するダブルワード(32ビット)長の記憶素子にそれぞれ格納される。そしてOSDを構成する画素データの画面上の座標は、例えばGFXプレーンにおける画素データのラインメモリを指示するROWアドレスと、そのラインメモリにおける記憶素子を指示するCOLUMNアドレスとの組みに対応する。GFXプレーンにおける画素データは、8ビットのR値、8ビットのG値、8ビットのR値、8ビットの透明度αから構成される。解像度が1920×1080に設定されている場合、GFXプレーンは横1920×縦1080の画素データを格納する。GFXプレーンの背景部分にあたる記憶素子には、透明色を示すR値、G値、B値、α値が格納されており、この部分には、左目用ビデオプレーン及び右目用ビデオプレーンとの合成時において、左目用ビデオプレーン及び右目用ビデオプレーンにおける動画像が透けて見えるようになる。一方、前景部分にあたる記憶素子には、透明色以外を示すR値、G値、B値、α値が格納されており、この透明色以外のR値、G値、B値、α値によって、字幕が描かれることになる。
(4-1-6)レイヤ合成部6
レイヤ合成部6は、複数のプレーンメモリにおけるレイヤ合成を行う。レイヤ合成の対象になるプレーンメモリには、左目用ビデオプレーン、右目用ビデオプレーン、PGプレーン、GFXプレーンがあり、これらは、左目用ビデオプレーン及び右目用ビデオプレーンが下位のレイヤに存在していて、その1つ上のレイヤにPGプレーンが存在し、更にその上のレイヤにGFXプレーンが存在するという階層構造を有している。レイヤ合成部6は、この階層構造に従ってレイヤ合成を行い、左目用ピクチャデータ及び右目用ピクチャデータのそれぞれに、字幕やOSDが合成された合成映像を得て、出力に供する。
(4-1-7)送受信部7
送受信部7は、ホームシアターシステムにおける他の機器とインターフェイスを介して接続された際、ネゴシエーションフェーズを経て、データ伝送フェーズに移行し、データ伝送を行う。このネゴシエーションフェーズは、相手側機器のケーパビリティ(デコード能力、再生能力、表示周波数を含む)を把握して、プレーヤ設定レジスタに設定しておき、以降の伝送のための伝送方式を定めるものであり、互いの装置の正当性を確認し合う相互認証フェーズを含む。このネゴシエーションフェーズを経て、レイヤ合成がなされたピクチャデータにおける一ライン分の非圧縮・平文形式の画素データを、表示装置における水平同期期間に従い表示装置に高い転送レートで転送する。一方、表示装置における水平帰線期間、及び、垂直帰線期間において、再生装置と接続された他の装置(表示装置のみならずアンプ、スピーカを含む)に、非圧縮・平文形式のオーディオデータを転送する。こうすることで、表示装置、アンプ、スピーカといった機器は、非圧縮・平文形式のピクチャデータ、非圧縮・平文形式のオーディオデータを受け取ることができ、再生出力を実現することができる。また、相手側機器にデコード能力が存在する場合、ビデオストリーム、オーディオストリームのパススルー伝送が可能になる。パススルー伝送では、ビデオストリーム、オーディオストリームを圧縮・暗号化形式のまま伝送することができる。
(4-1-8-1)左右シフト部8a
左右シフト部8aは、PGプレーンにおける画素データのX座標に水平方向のオフセットを与えることで、立体視を実現する。上述したように、字幕を構成する画素データの画面上の座標は、PGプレーンにおける画素データのラインメモリを指示するROWアドレスと、そのラインメモリにおける記憶素子を指示するCOLUMNアドレスとの組みに対応する。PGプレーンにおける字幕の各画素データの記憶素子を指示するCOLUMNアドレスを、オフセットシーケンスのplane_offset_valueに相当するアドレスだけ、増減させれば、画素データの座標を左右方向に変位させることができる。画素データのアドレスシフトは、アドレス調整を伴う画素データのコピー処理によって実現できる。ここで、オフセットシーケンスのplane_offset_valueにて指定される画素数Xだけ、画素データのX座標を変更したい場合、画素データのコピー時において、そのコピー先となる記憶素子を指示するCOLUMNアドレスを、画素数Xに相当するアドレスだけ前後に調整しておく。このような調整を前提にしてコピーを実行すれば、画素データの座標は、左右方向にシフトすることになる。レイヤ合成部6がレイヤ合成を行う際、PGプレーンを構成するラインメモリと、レイヤ合成部6内のラインメモリとの間で、上記画素データのコピーはなされるので、このコピーの際、上述したようなアドレス調整を行えば、PGプレーンの左右シフトは可能になる。
(4-1-8-2)左右シフト部8b
左右シフト部8bは、GFXプレーンにおける画素データのX座標に水平方向のオフセットを与えることで、立体視を実現する。上述したように、OSDを構成する画素データの画面上の座標は、GFXプレーンにおける画素データのラインメモリを指示するROWアドレスと、そのラインメモリにおける記憶素子を指示するCOLUMNアドレスとの組みに対応するので、GFXプレーンにおけるOSDの各画素データの記憶素子を指示するCOLUMNアドレスを、plane_offset_valueに相当するアドレスだけ、増減させれば、画素データの座標を左右方向に変位させることができる。画素データのアドレスシフトは、アドレス調整を伴う画素データのコピー処理によって実現できる。ここで、plane_offset_valueにて指定される画素数Xだけ、画素データのX座標を変更したい場合、画素データのコピー時において、そのコピー先となる記憶素子を指示するCOLUMNアドレスを、画素数Xに相当するアドレスだけ前後に調整しておく。このような調整を前提にしてコピーを実行すれば、画素データの座標は、左右方向にシフトすることになる。レイヤ合成部6がレイヤ合成を行う際、GFXプレーンを構成するラインメモリと、レイヤ合成部6内のラインメモリとの間で、上記画素データのコピーはなされるので、このコピーの際、上述したようなアドレス調整を行えば、GFXプレーンの左右シフトは可能になる。
(4-1-9)上下シフト部9
上下シフト部9は、ビデオプレーンにおける画素データを上下方向にシフトすることで、ビデオプレーンの上端又は下端に余白領域を設ける。上述したように、ピクチャデータを構成する画素データの画面上の座標は、ビデオプレーンにおけるラインメモリのアドレスと、ラインメモリにおける記憶素子を指示するCOLUMNアドレスとの組みに対応する。よって、ビデオプレーンにおける画素データのラインメモリを指示するROWアドレスを、top_down_offset、bottom_up_offsetに相当するアドレスだけ、シフトさせれば、画素データの座標を上下方向に変位させることができる。画素データのアドレスシフトは、アドレス調整を伴う画素データのコピー処理によって実現できる。ここで、予め定められた画素数Yだけ、画素データのY座標を変更したい場合、画素データのコピー時において、そのコピー先となるラインメモリを指示するROWアドレスを、Yライン上又はYライン下に調整しておく。このような調整を前提にして画素データコピーを実行すれば、画素データのラインメモリを指示するROWアドレスは変更することになり、この変更に伴い、画素データの座標は、上方向又は下方向にシフトすることになる。レイヤ合成部6がレイヤ合成を行う際、ビデオプレーンを構成するラインメモリと、レイヤ合成部6内のラインメモリとの間で、上記画素データのコピーはなされるので、このコピーの際、上述したようなアドレス調整を行えば、ビデオプレーンの上下シフトは可能になる。
(4-1-10)多重分離部10
多重分離部10は、ソースパケットをTSパケットに変換するソースデパケッタイザ、パケットフィルタリングを実行するPIDフィルタを備え、3Dプレイリスト情報の基本ストリーム選択テーブルのストリームエントリーに記述されているパケット識別子を有するソースパケットを、TSパケットに変換した上でデコーダに出力し、3Dプレイリスト情報の立体視ストリーム選択テーブルのストリームエントリーに記述されているパケット識別子を有するソースパケットを、TSパケットに変換した上でデコーダに出力する。基本ストリーム選択テーブルの複数のエントリー及び拡張ストリーム選択テーブルの複数のエントリーのうち、どれのパケット識別子をもちいるかは、プレーヤ状態レジスタのうち、ストリーム番号レジスタの設定に従う。
(4-1-11)レジスタセット11
レジスタセット11は、複数のプレーヤ状態レジスタ、複数のプレーヤ設定レジスタから構成される。個々のプレーヤ状態レジスタ、プレーヤ設定レジスタは何れも語長が32ビットのレジスタであり、32ビット長のレジスタのそれぞれにはレジスタ番号が与えられ、このレジスタ番号を用いてアクセスすべきレジスタが特定される。
各レジスタの一語(32ビット)を構成する各ビットデータのビット位置は、b0〜b31と呼ばれる。最上位ビットはb31、最下位ビットはb0と呼ぶ。そして、32ビットのうち、bxビット目のビット位置からbyビット目のビット位置までのビット範囲は、[bx:by]という表記で表現される。
所定のレジスタ番号のプレーヤ設定レジスタ/プレーヤ状態レジスタに格納されている32ビット長のビット列であって、任意のビット範囲[bx:by]のものの値は、プログラムが動作を行うにあたっての動作システムの環境変数(システムパラメータ又はプレーヤ変数という)として扱われる。再生制御を行うプログラムは、システムプロパティやアプリケーションプログラミングインターフェイス(API)を通じて、システムパラメータを取得することができる。また、特に禁止されていない限り、これらのプレーヤ状態レジスタ、プレーヤ設定レジスタの値をプログラムは書き換えることができる。オブジェクト指向プログラミング言語ベースのプログラムについては、システムパラメータの取得や書き換えについて正当権限が与えられていることが要件になる。
プレーヤ状態レジスタは、再生装置のMPUが算術演算やビット演算を行う際、その被演算子となる数値を格納しておくためのハードウェア資源であり、光ディスクが装填された際に初期値が設定され、またカレントプレイアイテムの変更等、再生装置の状態が変化した際に、その格納値の有効性が判定されるレジスタである。この格納値としては、カレントのタイトル番号、カレントのプレイリスト番号、カレントのプレイアイテム番号、カレントのストリーム番号、カレントのチャプター番号等がある。光ディスクの装填時に初期値が格納されるので、この格納値は一時的なものであり、光ディスクがイジェクトされたり、また再生装置の電源が断たれれば、この格納値は有効性を失う。
プレーヤ設定レジスタは、電源対策が施されている点がプレーヤ状態レジスタとは異なる。電源対策が施されているので、再生装置の電源遮断時において、その格納値が不揮発性のメモリに退避され、再生装置の電源投入時において、その格納値が復帰される。再生装置の製造主体(マニファクチャ)が再生装置の出荷時に定めた再生装置の各種コンフィグレーションや、ユーザがセットアップ手順に従い設定した各種コンフィグレーション、そして、再生装置がTVシステムやステレオ、アンプ等のホームシアターシステムの機器と接続された際、接続相手となる機器とのネゴシエーションにより判明した相手側機器のケーパビリティがプレーヤ設定レジスタに設定される。
(4-1-12)プレイリスト情報メモリ12
プレイリスト情報メモリ12は、プレイリスト情報を構成する複数のプレイアイテム情報を格納すると共に、プレイアイテム情報に含まれる基本ストリーム選択テーブルと、拡張ストリーム選択テーブルとを結合することで得られた結合ストリーム登録列を格納する。
(4-1-13)プロシージャ実行部13
プロシージャ実行部13は、基本ストリーム選択テーブル及び拡張ストリーム選択テーブルの結合ストリーム登録情報に対してストリーム選択プロシージャを実行し、カレントの字幕ストリーム番号をレジスタセット11内のストリーム番号レジスタに書き込む。そして、カレント字幕ストリームにとって最適なレイアウトを決定して、このレイアウトに対応するビデオプレーンのシフトを上下シフト部9に行わせる。字幕レイアウトには通常レイアウト、上端配置レイアウト、下端配置レイアウトがあり、カレント字幕ストリームのレイアウトとして、上端配置レイアウトを採用した場合は、上下シフト部9を制御してビデオプレーンを下方向にシフトさせる。カレント字幕ストリームのレイアウトとして、下端配置レイアウトを採用した場合、上下シフト部9を制御してビデオプレーンを上方向にシフトさせる。
(4-1-14)再生制御部14
再生制御部14は、ビデオストリームの時間軸における任意の時点からのランダムアクセスを実行する。具体的には、ビデオストリームの時間軸における任意の時点からの再生が命じられた場合、3Dストリーム情報ファイルにおける基本エントリーマップと、拡張エントリーマップとを用いて、その任意の時点に対応するアクセスユニットのソースパケット番号をサーチする。かかるアクセスユニットは、ベースビュービデオストリームのビューコンポーネント、及び、ディペンデントビュービデオストリームのビューコンポーネントの組みを含むものであり、上記サーチによって、当該アクセスユニットについてのアクセスユニットデリミターを格納したソースパケットのソースパケット番号が特定される。かかるソースパケット番号からの読み出し、及び、デコードを実行することでランダムアクセスがなされる。3Dプレイリスト再生にあたっては、3Dプレイリスト情報のメインパス情報にて規定されているインタイム、アウトタイムと、サブパス情報にて規定されているインタイム、アウトタイムとを用いて、メインTS、サブTSのそれぞれに対してランダムアクセスを実行することで、プレイリスト再生を開始する。
(4-1-15)操作受付部15
操作受付部15は、リモコンや再生装置102のフロントパネルといった入力機器に対してなされたユーザ操作を検知して、通知する。この通知は、これらの入力機器に対応するデバイスドライバ内の割込みハンドラが発生する割込みに従い、UOPを生成することでなされる。UOPとは、リモコンやフロントパネルに設けられたキーマトッリクスでキー押下を検知した際、発生するイベント(UOPイベント)であり、押下されたキーに対応した属性をもつ。具体的には、リモコンやフロントパネルに対応するデバイスドライバの割込みハンドルが、キーマトリックスに対するキーセンスでキー押下を検出した際、そのキー押下に基づき割込み信号を発生することで、UOPイベントは、生成される。
(4-1-16)OSD処理部16
OSD処理部16は、操作受付部15が受け付けた操作に従った処理を再生制御部14が実行する際、その操作に応じた組込み用GUIを表示して、ユーザによる操作を視覚的にフィードバックし、そのユーザ操作に応じた処理を実行する。本実施形態では、組込み用GUIの一例としてOSDを用いる。
ユーザ操作により要求された処理がセットアップ処理であれば、セットアップメニューのOSDを画面に表示して、そのOSDに対する設定操作を受け付ける。その設定操作に従い、レジスタセット11内のプレーヤ設定レジスタを更新する。再生、停止であれば、そのユーザ操作に従い、再生制御部14にプレイリスト再生やプレイリスト再生の停止を行わせる。
一時停止、早送り、巻戻し、録画、音声選択、字幕選択であればそのユーザ操作が、プレイアイテム情報毎のユーザ操作マスクテーブルにて許可されているかどうかを判定する。許可されている操作がなされた場合、その操作を視覚的に表すOSDを表示し、禁止されている操作がなされた場合、その操作が禁止されている旨を視覚的に示すOSDを表示する。これらのOSDの表示にあたって、字幕デコーダ4が字幕表示に使用している配置レイアウトと同じレイアウトを選択する。
以上が再生装置の内部構成についての説明である。
(4-2)レジスタセット11の内部構成
続いて、レジスタセット11内に存在するプレーヤ設定レジスタ、プレーヤ状態レジスタのうち、特に重要なものについて説明する。本願明細書で特に使用するのは、レジスタセットにおける2番目のプレーヤ状態レジスタ(PSR2)、22番目のプレーヤ状態レジスタ(PSR22)である。図12は、PSR2、PSR22の内部構成を示す図であり、これまでに示した内部構成やデータ構造から特に説明が必要な構成要素を抜き出して、構成要素間の関連を描いたものである
下側に、多重分離部10、字幕デコーダ4を示す。上側に、レジスタセット11内の32ビット長のレジスタであるPSR2、PSR22と、拡張ストリーム選択テーブルを格納したメモリを描いている。図中の矢印Py1,Py2は、多重分離部10によるPSR2、ストリーム登録情報における上端字幕のストリームエントリー、下端字幕のストリームエントリーの参照を模式的に示す。図中の矢印Py3,Py4,Py5は、字幕デコーダ4による上端配置存否フラグ/下端配置存否フラグの参照と、上シフト/下シフトステータスレジスタの参照と、立体視ステータスレジスタの参照とを模式的に示す。
PSR2の[b11:b0]は、ストリーム番号レジスタを構成する。ストリーム番号レジスタは、1〜255の値をストリーム番号として格納する。0XFFFを格納することで、字幕非選択状態を示す。
PSR22の[b0]は、立体視ステータスレジスタを構成する。立体視ステータスレジスタは、0に設定されることで、2D再生モードであるである旨を示す。1に設定されることで、3D再生モードであるである旨を示す。
PSR22の[b2:b1]は、上シフト/下シフトステータスレジスタを構成する。上シフト/下シフトステータスレジスタは、b2,b1が0,0に設定されることで、上シフト、下シフトのケーパビリティが存在しない旨を示す。b2,b1が1,0に設定されることでビデオプレーンの下シフトのケーパビリティが存在する旨を示す。b2,b1が1,1に設定されることでビデオプレーンの上シフトのケーパビリティが存在する旨を示す。
(4-3)字幕及びOSDのレイアウト
字幕のレイアウトと同じものを、OSDのレイアウトとして選択する場合、OSDのXY座標は、字幕のレイアウトから決める必要がある。ここでOSDが取りうる座標のうち、上側座標をY0とし、下側座標をY1とした場合、これらのY0、Y1をどのようにして決定すべきかについて、図13を参照しながら説明する。
図13(a)は、通常レイアウトを示す。本図に示すように、字幕の上端側にはtop_marginの高さの余白が存在する。下端側にはbottom_marginの高さの余白が存在する。かかるレイアウトで動画像を表示する場合、動画像の縦幅は、Frame_Height-(top_margin+bottom_margin)の大きさになる。この場合、OSDのY0、Y1は、下端側余白に確保する。
これらのbottom_margin、top_marginの値は、プレイリスト情報におけるプレーン内有効化情報のbottom_marginフィールド、top_marginフィールドに記載されたオフセットを2倍することで得られる値である。
図13(b)は、上端配置レイアウトを示す。この場合、画面の上端側にはtop_down_offsetの余白領域が存在する。Y0、Y1は、この上端側余白の余白領域に確保される。
グラフィクスプレーンの座標系において、上側の余白領域は、0からtop_down_offsetまでに存在する。Y0、Y1はこの上端側余白になる。よってY0は、0になり、Y1はtop_down_offsetになる。このtop_down_offsetの値は、プレイリスト情報におけるプレーン内有効化情報のtop_down_offsetフィールドに記載されたオフセットを2倍することで得られる値である。
図13(c)は、下端配置レイアウトを示す。この場合、上端側にはbottom_up_offsetの余白が存在する。グラフィクスプレーンの座標系において、下側の余白領域の上端座標は、bottom_up_offsetに、動画像枠の縦幅であるFrame_Height-(top_margin+bottom_margin)を足し合わせた座標となる。このbottom_up_offsetの値は、プレイリスト情報におけるプレーン内有効化情報のbottom_up_offsetフィールドに記載されたオフセットを2倍することで得られる値である。また下側の余白領域の下端座標は、Frame_Heightとなる。Y0、Y1はこの下端側余白になる。よってY0は、bottom_up_offset+Frame_Height-(top_margin+bottom_margin)になり、Y1はFrame_Heightになる。
特に映画作品の映像においては、シネスコサイズ(1:2.35)のアスペクト比が一般的であり、BD-ROMなどの光ディスクに映像を格納する場合には、アスペクト比は変更せずに本編映像を16:9のHDTV映像の中央に配置し、図13(a)のように、画面上下に黒枠を挿入することが一般的である。そのため、図13(b)(c)のレイアウトを採用すれば、映像の上下にある黒枠をビデオプレーンの上又は下に集めた広い字幕表示領域に、字幕を表示することが可能となる。よって画面の利用効率を向上させることができ、立体視効果を向上させることができる。
(4-4)ビデオプレーンとのレイヤ合成
以降、上下方向のシフトがなされたビデオプレーンと、グラフィクスプレーンとのレイヤ合成について説明する。図14は、下方向シフトがなされたビデオプレーンの内容と、グラフィクスプレーンとのレイヤ合成を示す。
本図において、ビデオプレーンは図13(b)のレイアウトになっており、上端側に余白領域が存在し、Y0=0、Y1=top_down_offsetに設定されている。図14(a)は、字幕を手前側に見せるためのシフトがなされるケースであり、図14(b)は、字幕を奥手に見せるためのシフトがなされるケースである。図14(a)、(b)のそれぞれで、奥手側がビデオプレーンであり、手前がグラフィクスプレーンである。ビデオプレーンは、下方向シフトがなされることで、図14(b)に示すような上端配置レイアウトになっている。(a)では、手前側のグラフィクスプレーンに対して、字幕を手前に見せるためのプレーンシフトがなされており、グラフィクスプレーン内の画素のX座標に、左右方向のオフセットが作り出されることで、グラフィクスプレーンが手前に見えるようになっている。
図15は、上方向シフトがなされたビデオプレーンの内容と、グラフィクスプレーンとのレイヤ合成を示す。本図において、ビデオプレーンは、図13(c)のレイアウトになっており、下端側に余白領域が存在し、Y0がbottom_up_offset+Frame_Height-(top_margin+bottom_margin)に設定されている。
図15(a)は、字幕を手前側に見せるためのシフトがなされるケースであり、図15(b)は、字幕を奥手に見せるためのシフトがなされるケースである。図15(a)、(b)のそれぞれで、奥手側がビデオプレーンであり、手前がグラフィクスプレーンである。ビデオプレーンは、上方向シフトがなされることで、図13(b)に示すような下端配置レイアウトになっている。図15(a)では、手前側のグラフィクスプレーンに対して、字幕を手前に見せるためのプレーンシフトがなされており、グラフィクスプレーン内の画素のX座標に、左右方向のオフセットが作り出されることで、グラフィクスプレーンが手前に見えるようになっている。
図16(a)は、図14のレイヤ合成で得られる立体視映像を示す。図16(b)は、図15のレイヤ合成で得られる立体視映像を示す。以上がビデオプレーンとのレイヤ合成についての説明である。
(4-5)グラフィクスプレーンレイアウトの時間的遷移
続いて、グラフィクスプレーンレイアウトの時間的遷移の詳細について説明する。図17は、PGプレーンのレイアウトと、OSDのレイアウトとの時間的な変遷を示す。第1段目は、複数のピクチャと、各ピクチャに合成されたOSDとを示す。第2段目は、プレイアイテム情報#1,#2,#3を示す。第3段目は、各プレイアイテム情報に対応する拡張ストリーム選択テーブルにおけるストリーム登録情報の記述内容を示す。ここで再生装置のストリーム番号レジスタがストリーム番号"=1"に設定されており、プレイアイテム情報#1の拡張ストリーム選択テーブルにおけるストリーム番号"=1"についてのストリーム登録情報が、上端配置存否フラグ"=1"、下端配置存否フラグ"=0"に設定されている場合、PGプレーンのレイアウトは上端配置レイアウトとなる。そうすると、OSDのレイアウトは、上端配置レイアウトとして選択される。
プレイアイテム情報#2の拡張ストリーム選択テーブルにおけるストリーム番号"=1"についてのストリーム登録情報が、上端配置存否フラグ"=0"、下端配置存否フラグ"=0"に設定されている場合、PGプレーンのレイアウトは通常レイアウトとなる。そうすると、OSDのレイアウトは、通常レイアウトとして選択される。
プレイアイテム情報#3の拡張ストリーム選択テーブルにおけるストリーム番号"=1"についてのストリーム登録情報が、上端配置存否フラグ"=1"、下端配置存否フラグ"=0"に設定されている場合、PGプレーンのレイアウトは上端配置レイアウトとなる。そうすると、OSDのレイアウトは、上端配置レイアウトとして選択される。
図18は、PGプレーンのレイアウトと、OSDのレイアウトとの時間的な変遷を示す。第1段目は、複数のピクチャと、各ピクチャに合成されたOSDとを示す。第2段目は、プレイアイテム情報を示す。第3段目は、各プレイアイテム情報に対応する拡張ストリーム選択テーブルにおけるストリーム登録情報の記述内容を示す。ここで再生装置のストリーム番号レジスタがストリーム番号"=1"に設定されており、プレイアイテム情報#1の拡張ストリーム選択テーブルにおけるストリーム番号"=1"についてのストリーム登録情報が、上端配置存否フラグ"=0"、下端配置存否フラグ"=1"に設定されている場合、PGプレーンのレイアウトは下端配置レイアウトとなる。そうすると、OSDのレイアウトは、下端配置レイアウトとして選択される。
プレイアイテム情報#2の拡張ストリーム選択テーブルにおけるストリーム番号"=1"についてのストリーム登録情報が、上端配置存否フラグ"=0"、下端配置存否フラグ"=0"に設定されている場合、PGプレーンのレイアウトは通常レイアウトとなる。そうすると、OSDのレイアウトは、通常レイアウトとして選択される。
プレイアイテム情報#3の拡張ストリーム選択テーブルにおけるストリーム番号"=1"についてのストリーム登録情報が、上端配置存否フラグ"=0"、下端配置存否フラグ"=1"に設定されている場合、PGプレーンのレイアウトは下端配置レイアウトとなる。そうすると、OSDのレイアウトは、下端配置レイアウトとして選択される。
以上が字幕レイアウト及びOSDレイアウトについての説明である。
(4-6)プレイリスト再生の制御手順
以上の字幕ストリームの選択や字幕表示のためのレイアウト選択は、プレイリストの再生と連動してなされる。字幕ストリーム選択や字幕レイアウトの選択の前提となる、プレイリスト再生の制御手順について説明する。
以上の再生制御は、図19から図24までのフローチャートに示される処理手順をオブジェクト指向型コンパイラ言語で記述してコンピュータに実行させることで実現することができる。
図19は、プレイリスト再生手順を示す。本フローチャートは、ステップS1においてカレントプレイアイテム番号を1に設定した後、ステップS2〜ステップS6の処理を繰り返すループを構成する。このループでは、Procedure when playback condition is changedによりストリーム番号を決定して(ステップS2)、ストリーム番号に対応するESを格納したストリームファイルをオープンしてソースパケット列を読み出し(ステップS3)、読み出されたソースパケット列のうち、ストリーム番号に対応しているものの多重分離を指示し(ステップS4)、読み出されたソースパケットをプレイアイテムのインタイムからアウトタイムまで、サブプレイアイテムのインタイムからアウトタイムまで再生するようデコーダに命じる(ステップS5)という処理を、カレントプレイアイテム番号が最終番号になるまで繰り返すものである。ここで最終番号でなければ(ステップS6でNo)、カレントプレイアイテム番号がインクリメントされて、ステップS7に移行する。
この際、ステップS7においてストリーム選択要求があったかどうかを判定し、もし要求があれば、要求されたストリーム番号をxにして、Procedure when stream change is requestedを実行する(ステップS8)。最終番号であれば、処理を終了する(ステップS6でYes)。
(4-7)カレントストリーム及びその再生タイプ決定
PSR2のPG_テキスト字幕ストリーム番号によって参照されるPG_テキスト字幕ストリームは、出力モード(PSR22)、PSR24における立体視PGケーパビリティと、is_SS_PGを用いて選択される。
図20は、PGtestSTストリームについてのProcedure when playback condition is changedについての処理手順を示すフローチャートである。本フローチャートのうち、ステップS11〜ステップS22の処理は、立体視モード及び平面視モードの共通処理となる。ステップS23〜ステップS24が、立体視モード特有の処理となる。
ステップS11においてPSR2からカレントPG_テキスト字幕ストリーム番号を取得し、ステップS12において、カレントPG_テキスト字幕ストリーム番号は、PGストリームについてのものかテキスト字幕ストリームについてのものかを判定する。ステップS13は、カレントPG_テキスト字幕ストリーム番号に対応するPGストリームが、条件(A)、条件(B)を満たすか否かをチェックする。
ここで条件(A),条件(B)は、以下のように規定される。
条件(A):カレントPG_テキスト字幕ストリーム番号から特定されるPGストリームをデコードする能力が再生装置に存在する。
条件(B):カレントPG_テキスト字幕ストリーム番号から特定されるPGストリームの言語属性と、再生装置の言語設定とが同一である。
一方ステップS14では、カレントPG_テキスト字幕ストリーム番号に対応するテキスト字幕ストリームが、条件(A)、条件(B)を満たすか否かをチェックするものである。
条件(A):カレントPG_テキスト字幕ストリーム番号のテキスト字幕ストリームのキャラクターコードをビットマップに展開する能力が再生装置に存在すること。かかる再生能力は、レジスタセット23におけるPSR30に示されている。
条件(B):カレントPG_テキスト字幕ストリーム番号のテキスト字幕ストリームの言語特性をサポートする能力が再生装置に存在すること。
ここで、ある言語の字幕がテキスト字幕ストリームで表現されている場合、その言語のテキスト字幕ストリームを、「デコードすることができる」といえるには、その言語における文字コードを、ビットマップに展開する能力と、その言語の特性をサポートするサポート能力とが再生装置側に存在する必要がある。
ビットマップ展開について説明する。テキスト字幕からビットマップへの展開能力が再生装置に存在するといえるには、ある言語のテキストコードを、ビットマップに展開できる処理能力が存在する必要がある。世界には、BIG5キャラクターコード,GB2312用のCN-GB符号化方式、GB18030-2000キャラクターコード、KSC5601-1987用のEUC-KR符号化方式、Shift-JISキャラクターコード・符号化方式といった種別が現存する。そして、テキスト字幕ストリームをビットマップに展開することができるかどうかは、対象となるテキスト字幕ストリームのテキストコードが、これらのキャラクタコード・符号化方式のうちどれに該当するかによって異なる。ここで、再生装置の30番目のプレーヤ設定レジスタ(PSR30)には、BIG5キャラクターコード,GB2312用のCN-GB符号化方式、GB18030-2000キャラクターコード、KSC5601-1987用のEUC-KR符号化方式、Shift-JISキャラクターコード・符号化方式のそれぞれについて、テキストコードをビットマップに展開するという処理能力が再生装置に存在するか否かを設定できるようになっている。よって、対象となるテキスト字幕ストリームをデコードすることができるかどうかは、PSR30に示されているキャラクターコード・符号化方式毎の処理能力のうち、そのテキスト字幕ストリームのテキストコードの種別に該当するものを参照することによって判断が可能になる。
言語特性のサポート能力について説明する。英語、日本語、アラビア語を例にとってみると、英語の字幕表示は、「横書き」,「カーニング」,「合字・抱き字」という機能がサポートされて初めて、言語特性がサポートされていると判断することができる。
日本語の字幕表示は、「横書き」,「縦書き」,「行末禁則」,「ルビ」という機能がサポートされて初めて、言語特性がサポートされていると判断することができる。
アラビア語の字幕表示は、「右から左の描画」、「合字・抱き字」という機能がサポートされて初めて、言語特性がサポートされていると判断することができる。
ある言語のテキスト字幕ストリームをビットマップに展開することができ、その言語の特性をサポートすることができる場合、上記条件(A)、条件(B)は、満たされているということができる。その言語のテキスト字幕ストリームをビットマップに展開することができるが、その言語の特性をサポートすることができない場合、上記条件(B)は満たされず、条件(A)のみが、満たされているということができる。
言語毎のサポート能力は、レジスタセットにおけるPSR48〜61の各ビットにおいて、言語毎に設定されている。具体的には、PSR48〜61には、IS0639-2/Tで規定された3バイトの言語コードのそれぞれに対応するフラグが存在しており、これらのフラグに、各言語コードに対応するテキスト字幕の表示能力の有無が設定されている。
IS0639-2/Tで規定された3バイトの言語コードにおいて「ita」という3バイトのコードはイタリア語を示し、「jpn」という3バイトのコードは日本語を示す。「jav」という3バイトのコードはジャワ語を示す。IS0639-2/Tで規定された言語コードは、このようは3バイトのコードによって430言語を網羅するから、カレントPG_テキスト字幕ストリームの決定において、ストリーム番号テーブルに記載されたテキスト字幕ストリームがデコードできるかどうかの判定にあたって、このPSR48〜61におけるフラグを参照する。こうすることで、少数派の言語であっても、デコードできるかどうかを適格に判断可能となる。
以上の判定を経た後、ステップS15を実行する。ステップS15は、再生装置は、条件(Z)を満たすか否かを判定するものである
ここで条件(Z)とは、言語特性のサポートがないアンサポート言語の字幕を、再生することをユーザが意図していることであり、かかる意図は、レジスタセットにおけるPSR30に示されている。
その後、ステップS16の判定ステップを実行する。これは、カレントプレイアイテムのストリーム選択テーブルにおけるPG_テキスト字幕ストリームの本数が=0であるか否かを判定するものである。ストリーム選択テーブルに再生が許可されているPG_テキスト字幕ストリームが存在しない場合、PSR2におけるPG_テキスト字幕ストリームの番号を維持する(ステップS17)。
カレントストリーム選択テーブルにおいて再生が許可されているPG_テキスト字幕ストリームが少なくとも1つ存在する場合、ステップS18を実行する。これは、カレントPG_テキスト字幕ストリーム番号の有効性を問うステップであり、カレントPG_テキスト字幕ストリーム番号がストリーム選択テーブルにおけるstream_entryの総数以下であり、且つ、条件(A)、条件(B)を満たすかどうかを判定する。
もしステップS18で満たさないと判定されたなら、ステップS20の判定を実行する。これは、カレントPG_テキスト字幕ストリーム番号がストリーム選択テーブルにおけるstream_entryの総数以下であり、且つ、条件(A)(Z)を満たすかどうかを判定するものである。もし満たすなら、PSR2には、アンサポート言語のテキスト字幕のPG_テキスト字幕ストリーム番号が設定されているが、ユーザはアンサポート言語の再生を意図しているので、PSR2を変化させない(ステップS21)。ステップS20において満たさないと判定されたなら、カレントプレイアイテムについて最適なストリームを選択する(ステップS22)。
次のステップS23では、PSR22のPG_テキスト字幕ストリームのストリーム登録情報を、カレントPG_テキスト字幕ストリームを拡張ストリーム選択テーブルから取得する。その後、ステップS24において、カレントPG_テキスト字幕ストリームの再生タイプを決定する。
以上が、PG_テキスト字幕ストリームにおけるProcedure when playback condition is changedについての説明である。
図21は、カレントプレイアイテムについて最適なPG_テキスト字幕ストリームを選択する処理手順を示すフローチャートである。
ステップS30において、全てのPG_テキスト字幕ストリームについて、条件(a)〜条件(c)を満たすかどうかをチェックする。
チェック対象となるPGストリームを、PGストリームiとした場合、条件(a)〜条件(c)は、以下のように規定される。
条件(a):PGストリームiをデコードする能力が再生装置に存在する。
条件(b):PGストリームiのPG_language_codeが、再生装置における言語設定と一致している。ここで、再生装置における言語設定は、レジスタセットにおけるPSR17に示されている。
チェック対象となるテキスト字幕ストリームを、テキスト字幕ストリームiとした場合、条件(a)〜条件(c)は、以下のように規定される。
条件(a):テキスト字幕ストリームiのキャラクターコードをビットマップに展開する能力が再生装置に存在すること。
条件(b):テキスト字幕ストリームiの言語属性をサポートする能力が再生装置に存在すること。
条件(c):テキスト字幕ストリームiのtextST_language_codeが、再生装置における言語設定と一致していること。
以上のチェックを経た後、ステップS31では、再生装置が、前のフローチャートで述べた条件(Z)(:アンサポート言語の再生)を満たすかどうかを判定する。みたさない場合、ステップS32において、条件(a)〜条件(c)を満たすPG_テキスト字幕ストリームが存在するかを判定する。存在するなら、条件(a)〜条件(c)を満たすPG_テキスト字幕ストリームのうち、対応するストリームエントリーがストリーム選択テーブルにおいて先頭順位に位置するものを選択して、選択したPG_テキスト字幕ストリーム番号を、PSR2に設定する(ステップS33)。
条件(a)〜条件(c)を満たすPG_テキスト字幕ストリームが存在しないなら、ステップS34において、より緩和された条件を満たすテキスト字幕ストリームが存在するか否かを判定する。緩和された条件とは、条件(a)、条件(b)を満たすことであり、これを満たすテキスト字幕ストリームが存在するかが、ステップS34で判定される。存在するなら、条件(a)、条件(b)を満たすPG_テキスト字幕ストリームのうち、対応するストリームエントリーがストリーム選択テーブルにおいて先頭順位に位置するものを選択して、選択したPG_テキスト字幕ストリーム番号を、PSR2に設定する(ステップS36)。
存在しないなら、0xFFFであるPG_テキスト字幕ストリーム番号をPSR2に設定する(ステップS35)。ステップS31において、条件(Z)を満たすと判定されたなら、ステップS37において、別の緩和された条件を満たすPG_テキスト字幕ストリームが存在するかを判定する。別の緩和された条件とは、条件(a)、条件(c)を満たすものであり、ステップS37では、これらを満たすPG_テキスト字幕ストリームが存在するか否かが判定される。
もし存在するなら、条件(a)、条件(c)を満たすPG_テキスト字幕ストリームのうち、対応するストリームエントリーがストリーム選択テーブルの最初に位置するものを選択して、選択したもののPG_テキスト字幕ストリーム番号を、PSR2に設定する(ステップS38)。
存在しない場合、ステップS39において、条件(a)を満たすPG_テキスト字幕ストリームが存在するかを判定する。存在する場合、条件(a)を満たすPG_テキスト字幕ストリームのうち、対応するストリームエントリーがストリーム選択テーブルにおいて先頭順位に位置するものを選択して、選択したもののPG_テキスト字幕ストリーム番号を、PSR2に設定する(ステップS40)。存在しない場合、0xFFFをPSR2に設定する(ステップS35)。
以上が、最適なPG_テキスト字幕ストリームの選択手順についての説明である。
(4-8)ストリーム変化が要求された際の手順
図22は、セット立体視ストリームコマンド(SetstreamSSCommand)によってストリーム変化が要求された場合に実行すべきProcedure when stream change is requestedの処理手順を示すフローチャートである。
ステップS41では、セット立体視ストリームコマンドにおいて、オペランドで指定された番号Xは、PGストリームについてのストリーム番号を意味するか、テキスト字幕ストリームについてのストリーム番号を意味するかを判定する。ステップS42は、番号Xに対応するPGストリーム(PGx)が、以下の条件(A)、条件(B)を満たすか否かをチェックする。
条件(A):番号Xから特定されるPGストリームをデコードする能力が再生装置に存在すること。
条件(B):特定されたPGストリームの属性となる言語が、再生装置の言語設定に一致すること。
ステップS43は、番号Xに対応するテキスト字幕ストリーム(textSTx)が、以下の条件(A)、条件(B)を満たすか否かをチェックする。
条件(A):番号Xに対応するテキスト字幕ストリームXのキャラクターコードをビットマップに展開する能力が再生装置に存在すること。
条件(B):番号Xに対応するテキスト字幕ストリームXの言語属性をサポートする能力が再生装置に存在すること。
ステップS44では、再生装置は、条件(Z)を満たすか否かをチェックし、ステップS45の判定を行う。この判定は、番号がストリーム選択テーブルにおけるstream_entryの総数以下であり、且つ、条件(A)(B)を満たすかどうかを判定する。もし満たすなら、番号XにあたるPG_テキスト字幕ストリーム番号のPG_テキスト字幕ストリームを選択して、PSR2に設定する(ステップS46)。
ステップS45において満たさないと判定されたなら、ステップS47の判定を実行する。この判定は、番号がストリーム選択テーブルにおけるstream_entryの総数以下であり、且つ、条件(A)(Z)を満たすかどうかを判定するものである。満たすなら、番号XにあたるPG_テキスト字幕ストリームを選択して、そのPG_テキスト字幕ストリーム番号をPSR2に設定する(ステップS48)。
満たさないなら、ステップS49の判定を行う。この判定は、番号Xが、0xFFFであるか否かを判定するものである。そうでないなら、ストリーム選択テーブルに再生が許可されているPG_テキスト字幕ストリームが存在しないとして、PSR2の値を維持する(ステップS50)。
0xFFFであるなら、カレントプレイアイテムについて最適なPG_テキスト字幕ストリームを選択する(ステップS51)。この最適なPG_テキスト字幕ストリームの選択は、図23に示したものと同じである。
以降のステップS52〜ステップS55は立体視モード特有の処理である。具体的には、PGストリーム番号Xによって特定されるPGストリームXのis_SS_PGを拡張ストリーム選択テーブルにおけるストリーム登録情報から取得する(ステップS23)。
図23は、セットストリームコマンド、又は、ストリーム番号変更を要求するユーザ操作によってストリーム変化が要求された場合に実行すべきProcedure when stream change is requestedの処理手順を示すフローチャートである。本フローチャートでは、ステップS56において、セットストリームコマンドのオペランドで指定されたストリーム番号、又は、ストリーム番号変更を要求するユーザ操作で指定されたストリーム番号を番号Xに設定した上で、ステップS41〜ステップS50、S23、S24の処理を実行する。このステップS41〜ステップS50、S23、S24の処理内容は、図22と同一のものであるから、同一の参照符号を付してその説明を省略する。
(4-9)カレント字幕ストリームの再生タイプ決定
以上のストリーム選択プロシージャの処理手順において、カレント字幕ストリームの再生タイプは、再生装置における字幕表示のケーパビリティと、プレイリスト情報におけるプレイアイテム情報毎の拡張ストリーム選択テーブルの内容とに応じて決定にする必要がある。図20〜図23のサブルーチンとして、カレント字幕ストリームの再生タイプ決定の処理手順を示したのが、図24のフローチャートである。
図24は、カレントストリームタイプの再生タイプ決定の処理手順を示すフローチャートである。本フローチャートは、ステップS62、ステップS63、ステップS64の判定ステップにおける判定結果の組合せに応じて、ステップS65〜ステップS67、ステップS68〜ステップS70、ステップS72、S73、ステップS71の何れかに、処理を分岐させる構造になっている。ステップS62は、カレント字幕ストリーム番号に対応する上端配置存否フラグがオンに設定されていて、ビデオプレーンの下シフトケーパビリティフラグにおいて、"ケーパビリティ有り"と示されているかどうかの判定であり、このステップS62がYesであれば、ステップS65においてカレント字幕の再生タイプを、上端配置レイアウトの再生タイプとし、ステップS66において、ビデオプレーンをtop_down_offsetだけ下にシフトする。
ステップS67では、拡張ストリーム選択テーブルにおける複数のストリーム登録情報のうち、PSR2に格納されたカレントストリームのストリーム番号に対応するものの上端字幕オフセットシーケンスIDレファレンス情報で指示されているオフセットシーケンスを用いたプレーンシフトをグラフィクスプレーンで実行する。つまり、オフセットシーケンスのoffset_directionに示される方向に、オフセットシーケンスのoffset_valueに示される画素数だけ、PGプレーン及びGFXプレーンの画素を左方向又は右方向にシフトさせる。
ステップS63は、ステップS62がNoであることを前提にして実行されるステップである。つまり、ステップS63は、カレント字幕ストリーム番号に対応する下端配置存否フラグがオンに設定されていて、上シフトケーパビリティフラグが存在するかどうかの判定であり、このステップS63がYesであれば、ステップS68においてカレント字幕の再生タイプを、下端配置レイアウトの再生タイプとし、ステップS69において、ビデオプレーンをbottom_up_offsetだけ上にシフトする。ステップS70では、拡張ストリーム選択テーブルにおける複数のストリーム登録情報のうち、PSR2に格納されたカレントストリームのストリーム番号に対応するものの下端字幕オフセットシーケンスIDレファレンス情報で指示されているオフセットシーケンスを用いたプレーンシフトをグラフィクスプレーン上で実行する。
ステップS64は、カレント字幕ストリーム番号に対応する立体視存否フラグがオンに設定されており、かつ、PSR24におけるb2の立体視PGケーパビリティが"1"であるか否かを判定する。ステップS64がYesであれば、カレント字幕ストリームの再生タイプを左目PGストリーム及び右目PGストリームを用いる立体視PGとする(ステップS71)。
再生タイプを立体視PGとした場合、拡張ストリーム選択テーブルにおける複数のストリーム登録情報のうち、PSR2に格納されたカレントストリームのストリーム番号に対応するものの右目ストリームエントリー及び左目ストリームエントリー内のパケット識別子レファレンスを用いて、立体視再生を行う。具体的には、PSR2に格納されたカレントストリームのストリーム番号に対応するものの右目ストリームエントリー及び左目ストリームエントリー内のパケット識別子レファレンスで指示されているパケット識別子のTSパケットの多重分離を多重分離部に行わせる。
ステップS64がNoであれば、再生タイプを1plane+Offsetとする(ステップS72)。ステップS73では、拡張ストリーム選択テーブルにおける複数のストリーム登録情報のうち、PSR2に格納されたカレントストリームのストリーム番号に対応するもののPG_テキスト字幕オフセットシーケンスIDレファレンス情報で指示されているオフセットシーケンスを用いたプレーンシフトをグラフィクスプレーンで実行する。
ステップS67、ステップS70、ステップS73において、これらのプレーンシフト方向情報、プレーンオフセット値に基づく左右方向のシフトを左右シフト部8に実行させるので、字幕の飛出し量・引っ込み量は、ベースビュービデオストリームの時間軸におけるGOPの個々のフレーム期間において、最適なものになる。
以上がカレント字幕ストリームの再生タイプ決定についての説明である。これまでの説明は、プレイリスト情報に基づく再生処理の説明が中心であったが、これ以降は、OSD描画部の詳細の説明となる。
(5-1)OSDの類型
次に、OSD処理部16によって描画されるOSDの類型を示す。
図25(a)は、タイトル名、チャプター名、再生経過時刻の表示ガイダンスを示す。以降で使用する画面例では、タイトル名をTxと表記し、チャプター名をCxとして表記し、再生経過時刻をXX:YY:ZZと表記する。
同図(b)は、ユーザ操作に対する視覚フィードバックのためのOSDを示す。再生マークmk1、ポーズマークmk2、早送りマークmk3、巻戻しマークmk4、録画マークmk5は、何れも、ユーザが該当する操作を行った場合、これらの操作が再生装置によって受理されたことを視覚的にフィールドするものである。禁止マークmk6は、上述したような操作のうち、禁止されているものをユーザが行った場合、その禁止の旨をユーザにフィードバックするためのものである。EGマークmk7は、英語字幕への選択が要求されたことを視覚的にフィードバックする。JPマークmk8は、日本語字幕への選択が要求されたことを視覚的にフィードバックする。
同図(c)は、メニューコールをした場合に表示されるメニューOSDを示す。音声のボタン部材、字幕のボタン部材、リピート再生のボタン部材から構成され、音声のボタン部材については、日本語、英語などの言語種を設定できるようになっている。字幕についてのボタン部材については、日本語、英語などの言語種を設定できるようになっている。リピート再生のボタン部材については、リピート再生をチャプター単位で行うか、タイトル単位で行うかを具体的に設定できるようになっている。かかるメニューOSDは、表示時間の制限がなく、ユーザによってメニューコールがなされれば、ユーザによってメニューを閉じる操作がない限り、メニューは表示されたままになる。
同図(d)は、OSDを格納したGFXプレーンと、字幕を格納したPGプレーン、ビデオプレーンとのレイヤ合成を示す。OSDを格納したGFXプレーンは、一番手前側になるように、レイヤ合成に供される。
以上がOSD処理部16によって表示されるOSDの類型である。
(5-2)OSD処理部16におけるソフトウェアのレイヤ階層
次に、ソフトウェアのレイヤ階層の観点から、OSD処理部16について説明する。図26(a)は、OSD処理部16におけるソフトウェアのレイヤ階層を示す図である。本図に示すように、OSD処理部16は、OSD情報のデータベース18と、メニューコールに応じてOSDのメニューを表示しユーザ操作を受け付けて、そのユーザ操作を処理するプログラム19と、OSD情報の検索要求を受け付けて、OSD情報データベースを検索し、検索要求に合致するOSD情報を表示するOSD表示プログラム20とから構成される。
(5-3)OSD処理部16の機能ブロック
これらOSD処理部16を構成するプログラムは、再生装置内のフラッシュROMに格納され、CPUによって読み出されて実行に供される。このプログラムを構成する様々な実行モジュールを機能的な構成要素として捉えて、機能的な側面から、OSD処理部16の内部構成を描いたのが図26(b)のブロック図である。以降、このブロック図を参照しながら、OSD処理部16の機能的な構成要素について説明する。
本図に示すようにOSD処理部16は、機能的にOSDレイアウト選択部21、OSD深度調整部22、特殊字幕判定部23、余白領域検出部24、OSD配置決定部25、縮小部26から構成される。
(5-3-1)OSDレイアウト選択部21
OSDレイアウト選択部21は、字幕のレイアウトとして上端配置レイアウト又は下端配置レイアウトが選択されれば、同じレイアウトを機器組込みのGUIのレイアウトとして選択する。ここで、字幕のレイアウトが上端配置レイアウト、下端配置レイアウト、通常レイアウトのうちどれであるかは、拡張ストリーム選択テーブルの上端配置存否フラグ、下端配置存否フラグと、PSR22における上端配置ステータスフラグ、下端配置ステータスフラグを参照することでなされる。
(5-3-2)OSD深度調整部22
OSD深度調整部22は、機器組込みのGUIを1plane+Offsetモードで表示させるにあたって、機器組込みのGUIの深度を調整する。このOSD深度調整部22による調整は、PGストリーム、テキスト字幕ストリームを1plane+Offsetモードで再生する場合の水平方向のオフセットやシフト方向を、機器組込みのGUIを1plane+Offsetモードで表示させる場合の水平方向のオフセットとして採用する。つまりOSD深度調整部22は、字幕を1plane+Offsetモードで表示する場合に、ベースビュービデオストリーム及びディペンデントビューストリームの個々のGOPの個々のフレーム期間毎に定義されているオフセットシーケンスであって、図24の再生タイプ決定で選択されたものの制御パラメータに基づいて、機器組込みのGUIを1plane+Offsetモードで表示させる場合における、各フレーム期間毎のシフト方向(offset_direction)と、シフト量(offset_value)とを定める。このように定めたシフト方向、シフト量で、GFXプレーンにおけるプレーンシフトを左右シフト部8bに実行させる。こうすることでGFXプレーンにおけるOSDは、字幕と同じ方向及び同じ量だけ、立体的に再生されることになる。
(5-3-3)特殊字幕判定部23
特殊字幕判定部23は、再生対象となるカレント字幕ストリームが、文字数が通常の字幕よりも多い特殊字幕であるか否かを判定する。特殊字幕判定部23による判定は、同じ言語属性の2以上の字幕ストリームであって、その優先順位が、ストリーム選択テーブルにおいて2番目以下に設定されているものを、特殊な字幕のための字幕ストリームであると判定することでなされる。
(5-3-4)余白領域検出部24
余白領域検出部24は、上端配置レイアウト又は下端配置レイアウトにおいて、カレントの字幕ストリームがテキスト字幕ストリームである場合、画面の上端又は下端に確保された字幕領域の余白領域を検出する。上端配置レイアウト又は下端配置レイアウトにおける字幕領域における字幕の配置は、右寄り、左寄り、中央寄せの何れであり、余白領域検出部24による余白領域の検出は、字幕領域における字幕の配置と、字幕の文字数とに基づいてなされる。
(5-3-5)OSD配置決定部25
OSD配置決定部25は、機器組込みのGUIであるOSDの配置を決定する。ここで、字幕ストリームが特殊な字幕であると判定した場合、余白領域検出部24により余白領域が検出されるので、機器組込みのGUIの配置位置は、余白領域検出部24により検出された余白領域内となる。
(5-3-6)縮小部26
縮小部26は、字幕領域に表示すべき機器組込みのGUIを縮小する。
以上がOSD処理部16についての説明である。
(5-4)OSD情報
続いて、これらのOSDを定義するための情報(OSD情報)の詳細について説明する。図25に示したOSDは、何れも図27(a)に示すような共通の具体的なデータ構造をもつOSD情報によって定義される。この共通のデータ構造について説明する。
図27(a)は、OSD情報の共通のデータ構造を示す。
本図に示すように、ID、output position、output size、minimum scalling size、output_duration、output_dataから構成される。
IDは、個々のOSDに付与された番号である。output positionは、GFXプレーンにおけるOSDの配置座標(x,y)を示す。output sizeは、GFXプレーンにおけるwidth、heightを示す。minimum scalling sizeは、GFXプレーンにOSDを配置する場合において、最小となるOSDサイズを示す。output_durationは、ビデオストリームの時間軸において、OSDの表示をどれだけ継続させるかを示す。output_dataは、OSDの画像を表す画像ビットマップ、テキストである。
(5-5)OSDデータベース
図25における様々なOSDは、図27(a)における共通のデータ構造で定義されて、再生装置において、データベースを構築する。
図27(b)は、OSDデータベースと、GFXプレーンとの対応を示す。データベースには、上述したような共通のデータ構造で定義されるOSD情報から構築されており、このデータベースにおけるOSD情報は、番号の指定によって、呼び出すことができる。そして、呼び出されたOSD情報のoutput_positionにおいて、OSDは、OSD情報のwidth、heightに示される大きさで表示されることになる。以上が、OSDを実現するためのOSD情報と、このOSD情報によって再生装置内に構築されるデータベースについての説明である。
(5-6)OSD処理部16における処理手順
続いて、OSD処理部16の処理手順の詳細について説明する。OSD処理部16の処理としては、ユーザ操作による要求に応じて要求された処理を実行するかどうかを判定し、要求された処理の実行が禁止されていなければ、視覚的なフィードバックを行い、その処理を実行し、要求された処理の実行が禁止されていれば、かかる処理が禁止されている旨をユーザに視覚的にフィードバックするというものである。
上述した2つのプログラムによる処理手順のうち、ユーザ操作に応じた処理の処理手順、及び、OSD表示の処理手順を示したのが、図28のフローチャート、図29のフローチャートである。
(5-6-1)ユーザ操作に応じた処理
図28は、ユーザ操作に応じた処理の処理手順を示すフローチャートである。ステップS71は、再生開始待ちのステップであり、再生装置の起動時において、かかるループを繰り返すことになる。再生が開始されれば、再生マークのOSDを一定期間だけ表示して(ステップS72)、ステップS73、ステップS74、ステップS75の判定ステップから構成される判定ステップ列に移行する。
ステップS73は、早送り/巻戻し/一時停止/音声・字幕切替が要求されたかどうかの判定、ステップS74は、タイトル/チャプター/時刻表示の表示操作がなされたかどうかの判定、ステップS75は、停止操作がなされたかどうかの判定である。早送り/巻戻し/一時停止/音声・字幕切替が要求された場合、ステップS73がYesになりステップS78に移行する。ステップS78は、指定された操作がユーザ操作マスクテーブルで禁止されているかどうかの判定であり、禁止されている場合、ステップS79において禁止マークのOSD表示を行った後、ステップS73〜ステップS75のループに戻る。
禁止されていない場合、ステップS80において、早送り/巻戻し/一時停止/音声・字幕切替えのOSD表示を行い、ステップS81において、UOPに対応する処理を行う。
ステップS74においてYesと判定された場合、ステップS77に移行する。ステップS77は、タイトル/チャプター/時刻のOSD表示を行い、ステップS73〜ステップS75のループに戻る。
(5-6-2)OSD表示の処理手順
図29は、OSD表示の処理手順を示すフローチャートである。ステップS82において、表示すべきOSDの識別でOSDデータベースを検索してOSD情報を得て、ステップS83において字幕レイアウトを判定する。ステップS84では、カレントの字幕レイアウトのY0〜Y1から余白領域を検出し、ステップS86において、現在選択されているカレントのPG_テキスト字幕ストリームが、通常の字幕であるか、文字数が多い特殊な字幕であるかの判定を行う。特殊な字幕には、聴覚障害者用字幕(SDH:Subtitle for Defect Hearing)や、映画監督のコメンタリが存在する。説明の簡略化を図るため、「文字数が多い特殊な字幕」は、特に断らない限り、SDHであるものとする。ステップS87では、OSDの配置について、配置位置や配置方法の選択を行い、ステップS85において、OSD描画可能な(X0,Y0)〜(X1,Y1)からOSD情報のx,y,height,width、倍率、サイズ、表示時間を設定する。そしてステップS89において、指定されたIDのOSDを、GFXプレーンにレンダリングする。
字幕のレイアウトは、図13(a)〜(c)の通常レイアウト、上端レイアウト、下端レイアウトに示した3通りのものがあり、これらの何れがカレント字幕ストリームのレイアウトとして設定されるかを判定せねばならない。このカレント字幕ストリームのレイアウト判定の処理手順は、図30のフローチャートに示されるものとなる。
(5-7)OSDのレイアウト選択
図30は、OSDレイアウト選択の処理手順を示すフローチャートである。図26(b)に示したOSDレイアウト選択部21の実体は、この図30におけるサブルーチンとなる。
本フローチャートに示される処理手順は、サブルーチン化されたものであり、サブルーチンコール時において、1つ以上の引数を受け付けた上で本フローチャートに示される処理を実行し、当該処理の実行後、戻り値を返す。ステップS91においてPSR22を取得して、ステップS92、ステップS93の判定に移行する。ステップS92は、PSR22における表示状態の判定であり、2Dなら、ステップS94において通常レイアウトに設定する。3Dなら、ステップS93の判定を行う。
ステップS93は、字幕レイアウトの判定であり、ビデオプレーンのシフトケーパビリティを示すPSR22のb2-b1が00ならば、ステップS94において通常レイアウトとする。PSR22のb2-b1が11ならば、ステップS95において下端配置レイアウトとする。PSR22のb2-b1が10ならばステップS96において上端配置レイアウトとする。
字幕レイアウトには、上述したような3つのタイプがあり、またそれぞれのレイアウトにおいて字幕領域の上側Y座標であるY0、下側Y座標であるY1は変化する。
(5-8)余白領域の検出手順
字幕のレイアウトがカレント字幕ストリーム毎に変化するのと同様に、カレント字幕のレイアウトにおいて、画面上の余白の位置も、カレント字幕ストリーム毎に変化する。字幕ストリームのレイアウトにおいて、OSDの配置に適した余白領域が何処に存在するかの検出手順を規定したのが、図31のフローチャートである。図26(b)に示した余白領域検出部24の実体は、この図31におけるサブルーチンとなる。
図31は、余白領域の検出手順を示すフローチャートである。本フローチャートに示される処理手順は、サブルーチン化されたものであり、サブルーチンコール時において、1つ以上の引数を受け付けた上で本フローチャートに示される処理を実行し、当該処理の実行後、戻り値を返す。本サブルーチンの第1引数は、再生されている字幕レイアウト、第2引数は、再生されている3D映像の基本サイズ、第3引数は、字幕種別である。戻り値は、OSD描画可能な余白情報(領域、位置、字幕種別)である。ステップS101は、字幕レイアウトの判定であり、字幕レイアウトが上端配置レイアウトならば、ステップS102において、Y0"=0"からY1=top_down_offsetの範囲を字幕領域とする。通常レイアウトであるなら、ステップS103においてY0=Frame_Height−bottom_marginからY1=Frame_Heightの範囲までを字幕領域とする。上端配置レイアウトであるなら、ステップS104においてY0=bottom_up_offset+(Frame_Heightーtop_margin+bottom_margin)からY1=Frame_Heightまでの範囲を字幕領域とする。ステップS105は、字幕種別の判定であり、字幕種別がテキスト字幕ストリームであるなら、テキスト字幕ストリームの余白検出を行い、その余白座標を、OSD配置のX座標であるX0として確定する(ステップS106)。
PGであるならステップS106をスキップする。ステップS107では、X1をFrame_Widthとして、X0,Y0,X1,Y1をOSD配置可能な領域(x0,y0)〜(x1,y1)とする。
以上のように本実施形態によれば、字幕のレイアウトが上端配置レイアウト、下端配置レイアウトに変化した場合、字幕のレイアウトと同じものを機器組込みのGUIのレイアウトとして選択するので、機器組込みのGUIと字幕とが同じ表示領域に配置されることになり、機器組込みのGUIのみが動画像と重複するような位置に配置されることはない。
(第2実施形態)
第2実施形態では、字幕デコーダと、この字幕デコーダのデコードの対象となるストリームの内部構成について説明する。
PGストリームにおけるデコーダの構成は、1plane+Offset方式を採用する場合、1デコーダ+1プレーン構成になる。3D-立体視モードを採用する場合、2デコーダ+2プレーン構成になる。
テキスト字幕ストリームにおけるデコーダ構成では3D-立体視モードが存在せず、1plane+Offsetモードである場合、1デコーダ+1プレーン構成になる。
始めに、PGストリームの内部構成と、PGストリームをデコードする字幕デコーダであるPGデコーダの内部構成とについて説明する。
(6)PGストリームの内部構成
左目用PGストリーム、右目用PGストリームは、何れも複数のディスプレイセットを含む。ディスプレイセットとは、一個の画面表示を構成する機能セグメントの集まりのことである。機能セグメントは、約2KバイトのPESパケットのペイロードに格納されてデコーダに供給され、DTS、PTSを用いて、再生制御がなされる処理単位のことである。
各ディスプレイセットは、複数の機能セグメントを含む。この複数の機能セグメントには以下のものがある。
(6-1)オブジェクト定義セグメント
オブジェクト定義セグメントは、グラフィクスオブジェクトを定義する機能セグメントである。グラフィクス定義セグメントは、コード値と、そのコード値のランレングスとを用いることで、グラフィクスオブジェクトを定義している。
(6-2)パレット定義セグメント
パレット定義セグメントは、各コード値と、輝度、赤色差・青色差との対応関係を示したパレットデータを含む。左目用グラフィクスストリームのパレット定義セグメントと、右目用グラフィクスストリームのパレット定義セグメントとでは、コード値と、輝度及び色差との対応関係が同一の内容に設定されている。
(6-3)ウィンドゥ定義セグメント
ウィンドゥ定義セグメントは、非圧縮のグラフィクスオブジェクトを画面上に展開するためのプレーンメモリにおいて、ウィンドゥと呼ばれる矩形枠を定義する機能セグメントである。グラフィクスオブジェクトの描画は、このプレーンメモリの内部で制限されており、このウィンドゥの外部では、グラフィクスオブジェクトの描画は行えない。
プレーンメモリの一部をグラフィクスの表示のためのウィンドゥとして指定するので、再生装置は、プレーン全体のグラフィクス描画を行う必要はない。ある限られた大きさのウィンドゥに対してのみ、グラフィクス描画を行えばよい。表示用の平面のうち、ウィンドゥ以外の部分の描画を省くことができるので、再生装置側のソフトウェアの負担は遥かに軽くなる。
(6-4)画面構成セグメント
画面構成セグメントは、グラフィクスオブジェクトを用いた画面構成を規定する機能セグメントであり、グラフィクスデコーダにおけるコンポジションコントローラに対する複数の制御項目を含む。画面構成セグメントは、グラフィクスストリームにおけるディスプレイセットの詳細を規定すると共に、グラフィクスオブジェクトを用いた画面構成を規定する機能セグメントである。かかる画面構成には、Cut-In/Out、Fade-In/Out、Color Change、Scroll、Wipe-In/Outといったものがあり、画面構成セグメントによる画面構成を伴うことにより、ある字幕を徐々に消去しつつ、次の字幕を表示させるという表示効果が実現可能になる。
(6-5)エンドセグメント
1つのディスプレイセットに属する複数の機能セグメントの最後尾に位置する機能セグメントである。再生装置は、画面構成セグメントからこのエンドセグメントまでが、1つのディスプレイセットを構成する機能セグメントであるとして解釈する。
PGストリームにおいてディスプレイセットの開始時点は、画面構成セグメントを格納したPESパケットのDTSによって特定され、ディスプレイセットの終了時点は、画面構成セグメントを格納したPESパケットのPTSによって特定される。
左目用グラフィクスストリーム及び右目用グラフィクスストリームは、パケッタイズドエレメンタリストリーム(PES)であり、画面構成セグメントは、PESパケットに格納され、画面構成セグメントを格納したPESパケットのPTSは、画面構成セグメントが属するディスプレイセットによる表示を何時実行するかを示す。
画面構成セグメントを格納したPESパケットのPTSの値は、左目用ビデオストリームと、右目用ビデオストリームとで同一の内容になっている。
(6-2)PGデコーダのデコーダモデル
PGデコーダは、PGストリームから読み出される機能セグメントを格納する「コーデッドデータバッファ」と、画面構成セグメントをデコードしてグラフィクスオブジェクトを得る「ストリームグラフィクスプロセッサ」と、デコードにより得られたグラフィクスオブジェクトを格納する「オブジェクトバッファ」と、画面構成セグメントを格納する「コンポジションバッファ」と、コンポジションバッファに格納された画面構成セグメントを解読して、これらの画面構成セグメントにおける制御項目に基づき、オブジェクトバッファに得られたグラフィクスオブジェクトを用いてグラフィクスプレーン上で画面構成を行う「コンポジションコントローラ」とを含む。
このグラフィクスプレーンの前段には、機能セグメントを構成するTSパケットの入力速度を調整するためのトランスポートバッファが存在する。
グラフィクスデコーダの後段には、グラフィクスプレーンと、パレット定義セグメントに基づいて、グラフィクスプレーンに格納されたグラフィクスオブジェクトを構成する画素コードを、輝度・色差に変換するCLUT部と、プレーンシフトのためのシフト部とが存在する。
PGストリームにおけるパイプラインは、グラフィクスデコーダあるディスプレイセットに属するオブジェクト定義セグメントをデコードしてグラフィクスオブジェクトをオブジェクトバッファに書き込む処理と、先行するディスプレイセットに属するオブジェクト定義セグメントをデコードすることにより得られたグラフィクスオブジェクトをオブジェクトバッファからプレーンメモリに書き込む処理とを同時に実行することでなされる。
図32は、PGデコーダの内部構成を示す。同図(a)は、1plane+Offsetモード方式で表示するためのデコーダモデルである。同図(b)は、立体視モードのデータを表示する場合のデコーダモデルである。
本図において、PGデコーダの本体にあたる部分は黒枠で囲こみ、PGデコーダ後段にあたる部分は一点鎖線で囲っている。
同図(a)では、PGデコーダは1デコーダ構成になっており、グラフィクスプレーンも1プレーン構成になっている。しかしグラフィクスプレーンの出力が、左目用、右目用のそれぞれに別れていて、個々の左目用出力、右目用出力に対して、シフト部が付加される。
同図(b)では、トランスポートバッファ−PGデコーダ−グラフィクスプレーン−CLUT部が2組み存在していて、左目用ストリーム、右目用ストリームをそれぞれ独立に処理することができる。
オフセットシーケンスは右目用ビデオストリームに含まれているので、プレーンオフセット形式では、PGデコーダは1デコーダ構成になり、この1つのPGデコーダの出力が、左目用と右目用とに切り替えられる。
PGデコーダの2D/3D切り替え時の動作は以下の通りである。
1.1plane+Offsetモードと平面視モードとの相互切り替え時は、シームレスに切り替えられる。これは、Offsetを無効化することでなされる。
2.立体視モードと、平面視モードとでは、PID切り替えが伴うため、一端字幕が消える。これはストリーム切り替えと同じである。
以上がPGデコーダについての説明である。
続いて、テキスト字幕ストリームと、テキスト字幕ストリームをデコードするテキスト字幕デコーダとの詳細について説明する。
(7-1)テキスト字幕デコーダのデコーダモデル
テキスト字幕ストリームは、複数の字幕記述データから構成される。
テキスト字幕デコーダは、字幕記述データから、テキストコードと、制御情報とを分離する「字幕プロセッサ」と、字幕記述データから分離されたテキストコードを格納する「管理情報バッファ」と、制御情報を格納する「制御情報バッファ」と、フォントデータを用いて、管理情報バッファ内のテキストコードをビットマップに展開する「テキストレンダー」と、展開により得られたビットマップを格納する「オブジェクトバッファ」と、字幕記述データから分離された制御情報を用いて、時間軸に沿ったテキスト字幕再生の制御を実行する「描画制御部」とを含む。
テキスト字幕デコーダの前段には、フォントデータのプリロードを行う「フォントプリロードバッファ」、テキスト字幕ストリームを構成するTSパケットの入力速度を調整する「トランスポートストリーム(TS)バッファ」、プレイアイテムの再生に先立ち、テキスト字幕ストリームをプリロードしておくための「字幕プリロードバッファ」が存在する。
テキスト字幕デコーダの後段には、「グラフィクスプレーン」と、パレット定義セグメントに基づいて、グラフィクスプレーンに格納されたグラフィクスオブジェクトを構成する画素コードを、輝度・色差に変換する「CLUT部」と、プレーンシフトのための「シフト部」とが存在する。
図33は、テキスト字幕デコーダの内部構成を示す。同図(a)は、1plane+Offsetモードにおけるテキスト字幕デコーダのデコーダモデルを示し、同図(b)は、立体視モードにおけるテキスト字幕デコーダのデコーダモデルを示す。本図において、テキスト字幕デコーダ本体にあたる部分は黒枠で囲こみ、テキスト字幕デコーダ後段にあたる部分は一点鎖線で囲んでいる。テキスト字幕デコーダ前段にあたる部分は、破線枠で囲んでいる。
同図(a)では、グラフィクスプレーンの出力が、左目用、右目用のそれぞれに別れていて、個々の左目用出力、右目用出力に対して、シフト部が付加される。
同図(b)では、左目用のグラフィクスプレーンと、右目用のグラフィクスプレーンとが存在していて、テキスト字幕デコーダによって展開されたビットマップを、これらのそれぞれのグラフィクスプレーンに書き込む。
テキスト字幕ストリームは、PGストリームと異なり、グラフィクスデータをビットマップとして送るのではなく、フォントデータと文字コードを送ることにより、レンダリングエンジンで字幕を生成するから、字幕の立体視は、1plane+Offsetモードによって実現する。
以上がテキスト字幕ストリーム及びテキスト字幕デコーダについての説明である。続いて、これらのPGデコーダ、テキスト字幕デコーダの出力を合成して出力するための、出力段の内部構成について説明する。
(8)再生装置における出力段の内部構成
図34は、これらのデコーダモデルの出力を合成し、1plane+Offsetモード方式で出力するための内部構成を示している。
左目ビデオプレーン、右目ビデオプレーン、PGプレーン、IGプレーンのレイヤモデルは黒枠で囲こみ、プレーンメモリ後段にあたる部分は一点鎖線で囲んでいる。本図からも明らかなように、上述したようなレイヤモデルは、1組みだけが存在していることがわかる。また、プレーンメモリ後段にあたる部位は、2組み存在している。
1plane+Offsetモード方式では、ビデオプレーンは、左目用のものと、右目用のものとが準備されている。PGプレーン、IGプレーンについては、左目用、右目用のそれぞれに別れておらず、左目用、右目用で共通の1枚のプレーンメモリのみが存在する。そして、これらの左目用出力、右目用出力のそれぞれに対して上述したようなレイヤ合成がなされるようになっている。
再生装置は、B−Dプレゼンテーションモード、1plane+Offsetモードの双方をサポートにする必要があるので、再生装置のハードウェア構成としては、基本的に2デコーダ+2プレーンの構成になっていて、1plane+Offsetモード、平面視モードに再生装置が切り替った際、1デコーダ+1プレーンの組みのうち一方を無効化して、1デコーダ+1プレーン構成になる。
以上のように本実施形態によれば、立体視モード、1plane+Offsetモードのそれぞれにおいて、適切な字幕デコーダの構成を採用することができる。
(第3実施形態)
第1実施形態においては、カレントの字幕ストリームがテキスト字幕ストリームであり、このテキスト字幕ストリームがSDHを構成するなら、字幕の配置領域を最適なものに決定するとした。本実施形態では、テキスト字幕ストリームがカレントの字幕ストリームである場合における、OSD配置領域の決定の仕方の詳細について説明する。
カレントテキスト字幕ストリームがテキスト字幕ストリームである場合、このカレントテキスト字幕ストリームがSDHであるか否かは、基本ストリーム選択テーブルにおいてそのカレントテキスト字幕ストリームがどのような位置付けになっているかを解析することで静的に検出することができる。この特殊字幕であるSDHの静的な検出の処理手順を示したのが、図35のフローチャートである。図35は、特殊字幕であるSDH検出のフローチャートである。本フローチャートに示される処理手順は、サブルーチン化されたものであり、1つ以上の引数を受け付けて処理を行い、戻り値を返す。このサブルーチンにおける第1引数は、再生中の字幕ストリームのストリーム番号が格納されているストリーム番号レジスタ、第2引数は、基本ストリーム選択テーブルである。戻り値は、選択されているカレント字幕ストリームは、SDHであるか否かの判断結果である。
このフローチャートは、ストリーム選択テーブルにおける番号"=1"のストリーム番号をストリーム番号xとして、ストリーム番号"=1"の字幕から、カレントストリーム番号の字幕まで、ステップS115〜ステップS119の処理を繰り返すループになっている(ステップS113、S114)。字幕番号=xの字幕ストリームについての言語属性を取得して(ステップS115)、その番号=xの字幕ストリームの言語属性が、カレント字幕ストリームの言語属性と同じであり(ステップS116)、カレント字幕ストリームのストリーム番号が、字幕ストリームxのストリーム番号よりも大きいかどうかを判定するものである(ステップS117)。
番号=xの字幕ストリームの言語属性が、カレント字幕ストリームの言語属性と同じであるのに、カレント字幕ストリームのストリーム番号が、字幕ストリームxのストリーム番号よりも大きいということは、同じ言語属性をもつ2以上の字幕ストリームが、ストリーム選択テーブルに2つ以上存在しており、その2以上の字幕ストリームのうち、ストリーム選択テーブルにおけるエントリー順位が低いものが、カレント字幕ストリームとして選択されていることを意味する。
SDHは、同じ言語属性の2以上の字幕ストリームの中で、ストリーム選択テーブルにおけるエントリー順位が低く設定されており、このようなエントリー順位が低い字幕ストリームがカレント字幕ストリームとして選択されているということは、ストリーム選択コマンドやストリーム選択APIを通じて、SDHの字幕ストリームが選択されていると考えられる。
同じ言語属性でありながら、再生中の字幕番号が大きい場合は、SDHであると判定して、ループを抜ける。そして字幕ストリームxはSDHの字幕ストリームであるとして、SDHの字幕ストリームの再生中であるとして処理を終了する。言語属性が異なれば、ステップS117〜ステップS119のスキップして、次の番号の字幕ストリームを判定対象とする。以上の処理によって、テキスト字幕ストリームを静的に解析することで、SDHか否かの検出を好適に実現することができる。
<OSD配置決定の手順>
OSD配置決定の単純としては、上述したようなテキスト字幕ストリームがSDHかどうか、OSDの表示に使用することができる領域の大きさがどれだけであるかによって、選択すべきである。この、最適なOSDの配置決定の手順を示したのが図36のフローチャートである。図26(b)に示したOSD配置決定部25の実体は、この図36におけるサブルーチンとなる。
図36は、OSD配置決定のフローチャートである。本フローチャートに示される処理手順は、サブルーチン化されたものであり、サブルーチンコール時において、1つ以上の引数を受け付けた上で本フローチャートに示される処理を実行し、当該処理の実行後、戻り値を返す。第1引数は、OSD描画が可能な余白領域、第2引数は、SDHを再生しているかどうかという判断結果、第3引数は、表示すべきOSDについてのOSD情報である。戻り値は、表示するOSDに関する情報であり、余白領域、SDHの表示領域によって調整されたOSD情報である表示位置、サイズ、表示時間、縮小倍率となる。
ステップS121は、OSD表示時間の確認である。以降、ステップS122〜ステップS126の判定結果の組合せによって、ステップS127〜ステップS130の処理を選択的に実行する。ステップS122は、表示時間設定の判定であり、ステップS123は、SDH再生中かどうかの判定である。ステップS124は、字幕種別の判定であり、ステップS125は、OSDサイズが余白領域サイズ以下であるか否かの判定である。ステップS126は、OSDサイズ×限界縮小率が余白領域サイズ以下かどうかの判定である。
ステップS122がYesであれば、OSDの表示時間は無限時間であり、すぐに消えることはないから、ステップS127において標準の表示位置を選択する。
有限時間だが、通常の字幕である場合、ステップS123がNoになり、ステップS129に移行する。ステップS129において通知された余白領域内から表示位置を選択する。有限時間だが、SDHである場合、ステップS125の判定がなされる。ステップS125は、OSDサイズが余白領域以下であるか否かの判定である。OSDサイズが余白領域以下であればステップS125がYesになり、ステップS129において通知された余白領域からOSDの表示位置を選択する。
OSDサイズが余白領域を上回る場合、ステップS126に移行する。ステップS126は、OSDサイズに限界縮小率を乗じたサイズが余白領域サイズ以下であるか否かの判定である。OSDサイズに限界縮小率を乗じたサイズが余白領域サイズ以下であれば、ステップS126がYesになり、ステップS128に移行する。ステップS128においてOSD最適縮小率を算出した上で、ステップS129において通知された余白領域からOSDの表示位置を選択する。
ステップS124においてカレント字幕がPGであると判定された場合、ステップS130において選択された余白領域以外を選択する。
OSDサイズに限界縮小率を乗じたサイズが余白領域サイズを上回る場合、ステップS126がNoになるから、ステップS130において選択された余白領域以外を選択する。以上がOSD配置決定の処理手順についての説明である。続いて、OSDの配置位置決定手順の詳細について説明する。
<OSD配置位置決定手順>
テキスト字幕ストリームは、1つの画面に、複数の字幕領域を定義することができ、これらの字幕領域の右端座標は、字幕領域毎に異なる。よってOSDを画面上に配置する際に関しては、グラフィクスプレーンのうち、最も右側に存在するテキスト字幕を基準として、OSD配置のための余白を決定せねばならない。
字幕領域における余白領域の検出は、グラフィクスプレーン内の複数の字幕領域を定義する領域情報が存在することを前提にしている。字幕領域における余白領域検出の前提として、テキスト字幕ストリームにおける字幕の配置領域がどのように定義されるかについて説明する。
<テキスト字幕ストリームにおける配置領域の定義>
図37(a)は、テキスト字幕ストリームにおいて、複数の領域情報を定義するための領域フォーマット情報のシンタックスを示す。図37(a)のシンタックスにおいて、for(i=0;i<number_of_area_format;i++)は、領域情報area_infoと、領域におけるテキスト文字列の水平位置であるcharacter_horizontal_position、領域におけるテキスト文字列の垂直位置であるcharacter_vertivcal_position、テキスト文字列の横幅であるcharacter_width、テキスト文字列の縦幅であるcharacter_height、テキスト文字列のフロー制御を規定するCharacter_flow、テキスト文字列の水平方向の位置調整の仕方を示すcharacter_horizontal_verification、テキスト文字列の垂直方向の位置調整の仕方を指定するcharacter_vertivcal_verificationとをメンバー変数とするデータ構造を、予め定められた数(number_of_area_format)だけ繰り返す構造になっており、この繰り返し構造により、予め定められた数(number_of_area_format)だけ、図37(a)のメンバー変数からなる領域フォーマット情報のインスタンスが生成されることになる。
上記領域情報(area_info)は、領域の水平開始位置であるarea_horizontal_position、領域の垂直開始位置であるare_vertivcal_position、水平幅であるarea_width、垂直幅であるarea_heightから構成される。
領域内にテキスト文字列をどのように配置するかは、領域情報におけるcharacter_horizontal_verificationによって規定される。そして、個々の領域内でテキスト文字列が占有する領域の右端座標は、character_horizontal_verificationによって、テキスト文字列がどのように配置されるかで決まる。
図37(b)〜(d)は、テキスト文字列が占有する領域の右端座標が、グラフィクスプレーンにおける複数の領域のそれぞれでどのように決まるかを示す。図37(b)〜(d)のそれぞれにおいて全体枠はグラフィクスプレーンを示し、全体枠内部の枠は領域である。
図37(b)は、左寄せ配置時におけるテキスト文字列列の右端座標(Lx,Ly)を示す。Lxは、area_horizontal_position+character_widthとなり、Lyは、are_vertivcal_positionと同じになる。
図37(c)は、右寄せ配置時におけるテキスト文字列列の右端座標(Rx、Ry)を示す。Rxは、area_horizontal_position+area_widthとなり、Ryは、are_vertivcal_positionになる。
図37(d)は、中央寄せ配置時におけるテキスト文字列列の右端座標(Cx、Cy)を示す。Cxは、area_horizontal_position+area_width−(area_width−character_width)/2となり、Cyは、are_vertivcal_positionになる。
グラフィクスプレーン内の個々の領域におけるテキスト文字列の占有範囲の右端座標を検出すれば、この右端座標を、余白領域の基準にすることができる。以上のようなテキスト字幕ストリームの領域情報のシンタックスを用いれば、図38のフローチャートの処理手順を実行するようなプログラムを記述してCPUに実行させることで、再生装置に余白領域検出を実行させることができる。以上がテキスト字幕ストリームによる領域定義についての説明である。続いて、テキスト字幕ストリームの余白領域検出手順の詳細について説明する。
<テキスト字幕ストリームの余白領域検出手順>
図38は、テキスト字幕ストリームにおける余白領域検出のフローチャートである。本フローチャートに示される処理手順は、サブルーチン化されたものであり、サブルーチンコール時において、1つ以上の引数を受け付けた上で本フローチャートに示される処理を実行し、当該処理の実行後、戻り値を返す。この引数は、テキスト字幕ストリームの再生のために、グラフィクスプレーンに確保された複数の字幕表示領域のそれぞれとなる。戻り値は、複数の字幕表示領域におけるテキスト字幕のうち、最も右側に位置するもののX座標になる。
ステップS131は、領域数確認であり、その後、ステップS132〜ステップS133のループに移行する。このループは、グラフィクスプレーンに存在する複数の字幕表示領域のそれぞれを処理対象として選んで、この処理対象となる字幕表示領域の右端座標X0をステップS134〜ステップS138の手順で検出し、こうして算出した字幕表示領域のX0が、これまでに算出された字幕表示領域の右端座標の最大値よりも大きいかどうかをステップS140で判定して、大きければ、領域の右端座標の最大値を更新する(ステップS141)という処理を繰り返すものである。
ステップS134は、字幕の配置仕方の確認であり、字幕配置が左寄せならステップS136、中央寄せならステップS137、右寄せならステップS138を実行する。字幕を左寄せする場合、ステップS136においてarea_horizontal_position+character_horizontal_position+character_widthをX0とする。
字幕を中央寄せする場合、ステップS137においてarea_horizontal_position+area_width−(area_width−character_width)/2をX0とする。字幕を右寄せする場合、ステップS138においてarea_horizontal_position+area_widthをX0とする。
以上がテキスト字幕ストリームの余白領域検出手順についての説明である。
まとめとして、字幕の配置レイアウトに応じた場合分けを行い、通常レイアウト、上端レイアウト、下端レイアウトの個々のレイアウト毎の最適なOSD配置について説明する。
<レイアウト毎の最適なOSD配置>
図39(a)は、標準状態で画面上部にOSDが配置されるケースを示す。この標準状態は、上下に黒帯が存在する状態である。
(b)は、ビデオプレーンが下シフトされ、且つ、通常字幕を表示するケースである。この場合、字幕とOSDとが干渉する。この際、OSDのレイアウトとして、通常字幕と同一のレイアウトを選択するので、OSDは字幕領域で表示され、OSDには字幕深度が反映される。
図39(c)は、ビデオプレーンが下シフトであり、字幕がSDHテキスト字幕であり、OSDをビデオの表示領域に配置するケースを示す。これにより、OSDと、字幕との干渉を回避することができる。
図39(d)は、ビデオプレーンが下シフトであり、字幕がSDHテキスト字幕であり、OSDを縮小表示するケースを示す。
この場合、字幕とOSDとが干渉する。そこで、OSDの縮小を行い、SDH字幕領域の余白に、OSDを配置する。これにより字幕深度を反映させつつ、OSDを字幕領域で縮小表示する。
図40(a)においては、ビデオプレーンが下シフトであり、字幕がSDHテキスト字幕であるケースを想定している。この場合、字幕とOSDとが干渉する。また縮小して表示するだけの余白もない。そこで、SDHテキスト字幕領域を回避して、映像領域での表示を選択する。これにより字幕深度を反映させつつ、OSDを映像領域で表示する。
(b)は、表示タイムアウトがないOSDを表示させるケースを示す。この場合、3D映像と、OSDとが長時間干渉する。この場合、標準表示位置を選択する。そして設定OSDを、映像領域と、字幕領域とに配置する。
テキスト字幕ストリームは、プレイアイテムの再生時においてテキスト字幕デコーダにプリロードされ、デコードに供されるから、このプリロード時にテキスト字幕ストリームにおける領域フォーマット情報、領域情報を解析することで、SDHやコメンタリ字幕が表示される際の余白領域を好適に検出することができる。
以上のように本実施形態によれば、デコード時に字幕デコーダにプリロードされることが予定されているテキスト字幕ストリームから領域フォーマット情報を取り出して、解析することで、字幕の余白領域を適切に解析することができる。また、あるテキスト字幕ストリームがSDHであるか、コメンタリ字幕であるかの判定は、ストリーム選択テーブルにおいて、対象となるテキスト字幕ストリームにどのような優先順序が与えられているかを参考にしてなされるので、余白領域解析の対象を、一部の字幕ストリームに絞り込むことができる。よって余白領域検出のためのテキスト字幕ストリーム解析が余剰になされることは無いから、テキスト字幕の再生を大きく遅延させることはない。
(第4実施形態)
本実施形態では、OSD表示アプリケーションの作成について述べる。これまでの実施形態で述べた再生装置の再生制御部は、いわゆるBD-Jプラットフォームとして構成することができる。この場合、OSD表示アプリケーションは、BD-Jプラットフォーム上で動作するシステムアプリケーションとして実装することができる。
BD-Jプラットフォームは、バイトコードをネイィティブコードに変換するバイトコードインタプリタ、クラスロードのためのクラスローダやアプリケーションシグナリングのためのアプリケーションマネージャ、HAViデバイス、Javaメディアフレームワークによるプレイリスト再生のための再生制御エンジン、キャッシュイン・キャッシュアウト管理のためのキャッシュマネージャ、イベント処理のためのイベントマネージャといったソフトウェア群、つまり、デジタル放送のマルチメディアホームプラットフォーム端末(DVB-MHP)におけるソフトウェア群と良く似たソフトウェア群が動作主体になる。
BD-Jプラットフォーム上で動作するシステムアプリケーションとして、OSD表示アプリケーションを実装する場合、BD-Jプラットフォームにおいて立体視再生の実現に利用できるAPIには、Java2Micro_Edition(J2ME) Personal Basis Profile(PBP 1.0)と、Globally Executable MHP specification(GEM1.0.2)for package media targetsがある。これらのAPIを利用すれば、ネットワーク処理のためのjava.net、GUI処理のためのjava.awt、言語処理のためのjava.lang、記録媒体に対するI/O処理のためのjava.io、ユーティリティであるjava.util、メディアフレームワークのためのjavax.mediaといったクラスのメソッド、コンストラクタ、インターフェイス、イベントを用いた構造化プログラミングで、OSD表示に関する処理の記述が可能になる。
BD-JプラットフォームのためのエクステンションAPI(BD-Jエクステンションと呼ばれる)を用いることで、これまでの実施形態で述べた立体視再生のためのデータ構造、立体視再生における再生単位を用いた制御を実現する。このBD-Jエクステンションはjava.net、java.awt、java.lang、java.io、java.util、javax.mediaクラスのメソッドからのインへリッドメソッドを含み、これらのクラスのインターフェイスをエンベデッドインターフェイス、スーパーインターフェイスとしているので、java.net、java.awt、java.lang、java.io、java.util、javax.mediaクラスを用いたプログラミング技法の延長線上で、立体視再生を前提にしたOSD表示アプリケーションを作成することができる。
例えばBD-JプラットフォームにおけるエクステンションAPIは、レジスタセットにおける立体視ステータスレジスタ、上シフト/下シフトステータスレジスタの状態設定や状態取得を命じる設定取得クラスを含む。かかる設定取得クラスは、立体視ステータスレジスタ、上シフト/下シフトステータスレジスタの保持値を示すコンスタントフィールドと、PSRの保持値の取得を命じる取得メソッドと、プレーヤ設定レジスタ、プレーヤ状態レジスタの保持値の設定を命じる設定メソッドとから構成される。
設定取得クラスのメソッドは、java.lang.objectクラスのメソッドのインヘリッドメソッドを含む。また、メソッドコールの際の引数が不正であれば、java.langクラスのイベントであるjava.lang.IlleghalArgumentExceptionイベントをスロウする。本クラスは、java.lang.objectのメソッドやイベントを継承しているので、プログラマは、java.lang.objectの延長線で、立体視ステータスレジスタ、上シフト/下シフトステータスレジスタの保持値を利用したプログラムを作成することができる。
(第5実施形態)
これまでの実施形態において、3Dコンテンツは、記録媒体に記録され、読み出されることで再生に供されたが、本実施形態は、3Dコンテンツが"3Dデジタル放送コンテンツ"であり、デジタル放送システムで放送されて再生装置に供給されるケースを想定する。
図41は、3Dデジタル放送コンテンツを再生装置に供給するためのトランスポートストリームの内部構成を示す。
第1段目は、トランスポートストリームを構成する複数のTSパケットを示す。このトランスポートストリームは、先頭にPATを格納したTSパケットが存在し、その次に、PMTを格納したTSパケット、その次にPCRを格納したTSパケットが存在する。これ以降に、マルチストリームのTSパケット群が存在する。
PAT(Program Association Table)は、PIDが0であるテーブルであり、PMTのPIDを示す。
PMT(Program Map Table)は、あるサービスに含まれるビデオストリーム、オーディオストリーム、字幕ストリームなどのPIDを格納したテーブルである。
PCR(Program Clock Reference)は、再生装置におけるクロックの初期値を示す。
マルチストリームパケット群は、ビデオストリーム、オーディオストリーム、字幕ストリームを構成するTSパケット、字幕情報テーブル、プレーン内有効化情報テーブルを格納したTSパケットが多重化されたものである。
第2段目はビデオストリーム、第3段目はオーディオストリーム、第4段目は字幕ストリームを示す。この第2段目におけるビデオストリームは、複数のピクチャデータから構成されるが、個々のピクチャデータは、サイドバイサイド形式になっている。サイドバイサイド形式のピクチャデータとは、左目画像及び右目画像を横方向に結合することで得れられる多視点画像である。第4段目における字幕ストリームは、ランレングス符号化されたグラフィクス字幕を再生装置に提供する。第5段目における字幕情報テーブルは、字幕ストリームについての詳細を再生装置に提供する。第5段目のプレーン内有効化情報テーブルは、ビデオプレーンの内部領域のうち、どの部分を有効にするかを再生装置に指示する。
図42(a)は、字幕ストリームの内部構成を示す。本図に示すように、字幕ストリームは、Page Composition Segment(PCS)、Region Composition Segment(RCS)、Pallet Define Segment(PDS)、Object Define Segmentt(ODS)といった複数種別の機能セグメントから構成される。
以降、字幕ストリームについて説明する。3Dデジタル放送コンテンツにおける字幕ストリームにも"エポック"という単位が存在する。この3Dデジタル放送コンテンツにおけるエポックは、デコーダのメモリ使用の完全記述をその開始点で渡すものである。したがって、エポック境界は保証されたサービスアクジッションポイントを提供する。あるセグメントが述べる「モード変更」のページの構成法でエポック境界のシグナリングはなされる。
図42(b)は、PCSと、RCSと、字幕情報テーブルとの関係を示す。本図の左側はPCSの内部構成を示し、真ん中は、RCSの内部構成を示す。右側は、字幕情報テーブルの内部構成を示す。
Page Composition Segment(PCS)は、sync_byte,segment_type,page_id,segment_length,page_time_out,page_version_number,region_id,region_horizontal_address,region_vertical_addressから構成される。
Region Composition Segments(RCS)は、sync_byte,segment_type,page_id,region_id,region_version_number,region_fill_flag,region_width,region_height,region_depth.clut_id,pixel_code,object_id,object_type,pbject_provider_flag,object_horizontal_position,object_vertical_position,foreground_pixel_code,background_pixel_codeから構成され、1つ以上の領域リストを伝送する。領域リストは、PTSによって関連付けられた時刻で表示されるべき領域の集合を定義する。
Region Composition Segments(RCS)の完全記述のセットに続く、「モード変更」か「アクジッションポイント」のディスプレイセットにおけるRCSは、領域を導入して、それらのためのメモリを割り当てる。ページアップデートをもたらすディスプレイセットはコンテンツが変更される領域だけを含む。以上がPCS,RCSについての説明である。続いて、字幕情報テーブルの詳細について説明する。
字幕情報テーブルは、「上端配置存否フラグ」、「下端配置存否フラグ」、「region_vertical_address」、「region_height」から構成される。これらのうち、region_vertical_addressは、PCSに記述されていたものと同じであり、region_heightは、RCSに記述されていたものと同じである。図中の矢印cf1,cf2は、字幕情報テーブルにおける「region_vertical_address」、「region_height」と、PCSにおける「region_vertical_address」、RCSにおける「region_height」との同一性を示す。つまり、region_vertical_address、及び、region_heightが字幕情報テーブルに記述されているので、再生装置は、PCS、RCSの内部を解析することなく、字幕が上端に配置されるのか、下端に配置されるのか、字幕の配置領域の位置及び大きさがどれだけであるのかを知得することができる。
図42(c)は、プレーン内有効化情報テーブルの内部構成を示す。本図に示すように、プレーン内有効化情報テーブルとして、図10(b)と同一の情報要素が規定されているので、第1実施形態で説明したような字幕の上端配置、下端配置が可能になる。
図43は、第5実施形態に係る再生装置の構成を示す機能ブロック図である。本図は、第1実施形態における図11の内部構成図をベースとして作図されており、このベースとなる内部構成図と比較して、読出部1がサービス受付部101と、受信部102とに置き換えられ、多重分離部10が多重分離部103に置き換えられ、ビデオデコーダ2がビデオデコーダ104に置き換えられ、グラフィクスプレーン5が字幕ラインメモリ105に置き換えられ、GFXプレーンがOSDラインメモリ106に置き換えられ、字幕デコーダ4が字幕デコーダ107に置き換えられている点が異なる。以下、本実施形態における新規の構成要素(サービス受付部101、受信部102、多重分離部103、ビデオデコーダ104、字幕ラインメモリ105、OSDラインメモリ106、字幕デコーダ107)について説明する。
サービス受付部101は、サービス選択を管理する。具体的には、リモコン信号からのユーザの指示やアプリからの指示によるサービスの変更要求を受け取り、受信部102に通知する。
受信部102は、選択されたサービスが配信されているTSの搬送波の周波数における信号をアンテナやケーブルから受信し、復調する。そして多重分離部103に復調したTSを送出する。
多重分離部103は、受信部102より送出されたトランスポートストリームを受け取ると、トランスポートストリームに多重化されているビデオ・オーディオデータと、字幕ストリームと、オブジェクトカルーセルと、字幕情報テーブルと、プレーン内有効化情報テーブルとに分離する。
ビデオデコーダ104は、3Dデジタル放送コンテンツのビデオストリームを構成するサイドバイサイド形式のピクチャデータをデコーダして、非圧縮の左目画像及び右目画像の組みを左目ビデオプレーン3a及び右目ビデオプレーン3bに書き込む。
字幕ラインメモリ105は、複数のラインメモリからなる。個々のラインメモリには、一行分の字幕を構成する画素データが格納される。
OSDラインメモリ106は、複数のラインメモリからなる。個々のラインメモリには、一行分のOSDを構成する画素データが格納される。
字幕デコーダ107は、コーデッドデータバッファ、ピクセルバッファという2つのバッファメモリを具備していて、3Dデジタル放送コンテンツにおける字幕ストリームのデコードを行う。コードデータバッファは、符号化された状態のオブジェクト定義セグメントを格納する。
ピクセルバッファは、オブジェクト定義セグメントを復号することで得られるグラフィクスオブジェクトを格納する。そして字幕デコーダ107は、PCSに従い、ピクセルバッファからラインメモリへの転送を行う。以下、ピクセルバッファからラインメモリへの転送について説明する。この転送にあたって、ピクセルバッファにはRegionのリストが定義される。Regionとは、字幕のデコーダモデルにおいて、字幕のデコード処理(Subtitle Processing)にて得られたグラフィクスが格納されるバッファ(Pixel Buffer)上に定義される領域である。
Pixel Buffer上に定義されているRegionのうち、表示すべきものを、PCS(Page Composition Segment)に記述することで、グラフィクス表示は、実現される。
例えば「Shall We?」という字幕を包含したRegion1と、「Said the fly on the mirror」という字幕を包含したRegion2とがPixel Bufferに定義されていて、このうちRegion1の識別子が、PCSに記述されれば、その識別子の記述に基づき、「Shall We?」という字幕を構成する非圧縮のグラフィクスが、ピクセルバッファから動画像との合成のためのバッファ(Display)に転送される。これにより、「Shall We?」が、表示される。またRegion2の識別子が、PCSに記述されれば、非圧縮のグラフィクスが、ピクセルバッファからビデオプレーンに転送される。そうすると、その識別子の記述に基づき、「Said the fly on the mirror」という字幕が表示される。このように、コーデッドデータバッファ、ピクセルバッファというバッファメモリをデコーダに設け、このピクセルバッファ中のRegionを、動画像との合成のためのバッファ("Display"のためのラインメモリ)に転送することで、字幕表示がなされる。
以上が新規の構成要素についての説明である。これらの新規な構成要素が存在するため、既存の構成要素のうち、OSD処理部16について改良が加えられている。以下、既存の構成要素(OSD処理部16)における改良内容について説明する。
OSD処理部16が3Dデジタル放送コンテンツにおける字幕レイアウトを判定する場合、留意すべきは、3Dデジタル放送コンテンツにおいては、ピクチャデータの上端側の表示領域となるRegion、下端側の表示領域となるRegionが定義されることで、図13(a)(c)に示したような字幕の上端配置、下端配置がなされる点である。具体的には、字幕ストリームのPCSには、region_vertical_addressというフィールドがあり、このregion_vertical_addressフィールドで、Regionにおける左上座標が規定される。またRCSには、region_width,region_heightというフィールドがあり、region_heightフィールドによって、Regionの縦幅が規定される。
そこで本実施形態では、字幕が上端側に配置されるか、下端側に配置されるかを示す情報(上端配置存否フラグ、下端配置存否フラグ)と、上端側Region又は下端側Regionが表示されるにあたっての左上座標を示すregion_vertical_addressと、上端側Region又は下端側Regionの縦幅を示すregion_heightとを、別途の字幕情報テーブルとして記述しておき、OSD処理部16は、この字幕情報テーブルに従い、字幕レイアウト判定を行う。そして、ピクチャデータの上端側表示領域、及び、下端側表示領域を定義するRCSにおいて、Regionの左上座標及び縦幅を示す情報を用いて、字幕領域を算出する。
レイアウト毎の字幕領域の左上座標Y0、及び、左下座標Y1の算出について説明する。
下端配置レイアウトでは、下端側Regionの左上座標を示すregion_vertical_addressを、下端側の字幕領域の左上座標Y0とする。このregion_vertical_address(=Y0)に下端側Regionにおけるregion_heightフィールドを足した値(region_vertical_address+region_height)を下端側の字幕領域の左下座標Y1とする。
上端配置レイアウトでは、上端側Regionの左上座標を示すregion_vertical_addressを、上端側の字幕領域の左上座標Y0とする。このregion_vertical_address(=Y0)に下端側Regionにおけるregion_heightフィールドを足した値(region_vertical_address+region_height)を上端側の字幕領域の左下座標Y1とする。
通常配置レイアウトでも同様であり、Regionの左上座標を示すregion_vertical_addressを、下端側の字幕領域の左上座標Y0とする。このregion_vertical_address(=Y0)に下端側Regionにおけるregion_heightフィールドをたした値(region_vertical_address+region_height)を下端側の字幕領域の左下座標Y1とする。
以上の過程を経て、RCS及びPCSから字幕領域のレイアウトが何れのレイアウトであるかを判定すれば、OSD処理部16は、字幕レイアウトと同じレイアウトを、OSDの表示レイアウトとして採用する。また、デジタル放送3Dコンテンツで、プレーン内有効化情報テーブルが送信される場合、第1実施形態と同様の手順で、字幕の上端配置時、下端配置時における配置領域の座標を取得してもよい。
以上のように本実施形態によれば、3Dデジタル放送コンテンツを再生装置が再生しているケースにおいて、字幕のレイアウトが上端配置レイアウト、下端配置レイアウトに変化した場合、字幕のレイアウトと同じものを機器組込みのGUIのレイアウトとして選択するので、機器組込みのGUIと字幕とが同じ表示領域に配置されることになり、機器組込みのGUIのみが動画像と重複するような位置に配置されることはない。
(第6実施形態)
本実施形態は、BD-ROMに格納されるべきエレメンタリストリームを、3Dデジタル放送コンテンツのトランスポートストリームで伝送すると共に、BD-ROMのディレクトリ構成及びファイル構成を、オブジェクトカルーセルで伝送する改良である。
図44は、第1実施形態における記録媒体として、BD-ROMを選んだ場合におけるディレクトリ構成及びファイル構成を示す図である。本図のディレクトリ構成とは、ルートディレクトリの配下にBDMVディレクトリが存在し、当該BDMVディレクトリに、インデックステーブルを格納したファイル(index.bdmv)が存在する。BDMVディレクトリの配下には、オブジェクトディレクトリ(図中のBDJOディレクトリ)、プレイリストディレクトリ(図中のPLAYLISTディレクトリ)、クリップ情報ディレクトリ(図中のclipinfディレクトリ)、ストリームディレクトリ(図中のSTREAMディレクトリ)がある。BDJOディレクトリには、動作モードオブジェクトのファイル(00001.bdjo)が格納され、PLAYLISTディレクトリには、プレイリスト情報のファイル(00001.mpls)が格納される。clipinfディレクトリには、ストリーム管理情報のファイル(00001.clpi)が格納され、STREAMディレクトリには、デジタルストリームのファイル(00001.m2ts)が格納される。
図45は、第6実施形態にかかるトランスポートストリームの内部構成を示す。本図におけるトランスポートストリームのマルチストリームパケット群は、第1段目に示すベースビュービデオストリーム、第2段目に示すディペンデントビュービデオストリーム、第3段目に示す32本のプレゼンテーショングラフィクスストリーム、第4段目に示す32本のインタラクティブグラフィクスストリーム、第5段目に示す32本のオーディオストリーム、第6段目に示すプログラム情報ファイルストリームを多重化したものである。
第7段目は、プログラム情報ファイルストリームによって伝送されるオブジェクトカルーセルを示す。オブジェクトカルーセルには、「index」、「object」、「Playlist」、「clipinf」という一連のものがある。
「index」は、BD-ROMのBDMVディレクトリ及び当該ディレクトリに格納されるべきインデックステーブルを格納したオブジェクトカルーセルである。
「object」は、BDJOディレクトリ及び当該ディレクトリに格納されるべき動作モードオブジェクトを格納したオブジェクトカルーセルである。
「playlist」は、BD-ROMのplaylistディレクトリ及び当該ディレクトリに格納されるべきプレイリスト情報ファイルを一体化したオブジェクトカルーセルである。
「clipinfo」は、BD-ROMのclipinfOディレクトリ及び当該ディレクトリに格納されるべきストリーム情報ファイルを一体化したオブジェクトカルーセルである。図44の破線枠は、図45における個々のオブジェクトカルーセルが、どのディレクトリ及びファイルを格納しているかを模式的に示す。
これらのindex、object、playlist、clipinfという一連のオブジェクトカルーセルは、複数回送信される。これにより、伝送路上で発生するエラーに対して耐性を高めている。
以上が3Dデジタル放送コンテンツにおけるトランスポートストリームについての説明である。次に、本実施形態に係る再生装置について説明する。トランスポートストリームが新規な内容になっているため、既存の構成要素のうち、受信部102について改良が加えられている。以下、既存の構成要素である受信部102における改良内容について説明する。
本実施形態に係る再生装置の受信部102は、選択されたサービスに対応するオブジェクトカルーセルを受信して、オブジェクトカルーセルに格納されているディレクトリ及び当該ディレクトリ配下のファイルのキャッシュインを行う。図45のオブジェクトカルーセルを全て受信してキャッシュインすることにより、BD-ROMのディレクトリ構成及びファイル構成がキャッシュ上で再現される。
キャッシュに存在するプレイリスト情報、ストリーム管理情報を用いて第1実施形態の処理を行うことにより、立体視再生モードにおいて、OSDを字幕と同じレイアウトで表示することができる。
以上のように本実施形態によれば、BD-ROMのディレクトリ及びファイルを構成するためのオブジェクトカルーセルを受信して、キャッシュインすることにより、第1実施形態の記録媒体で供給されるべきディレクトリやファイルを取得することができる。
(備考)
以上、本願の出願時点において、出願人が知り得る最良の実施形態について説明したが、以下に示す技術的トピックについては、更なる改良や変更実施を加えることができる。各実施形態に示した通り実施するか、これらの改良・変更を施すか否かは、何れも任意的であり、実施する者の主観によることは留意されたい。
(字幕ストリームの種別)
字幕ストリームがテキスト字幕ストリームであること、再生装置が図37のテキスト字幕余白検出を行うことは、本願発明の必須の要件ではない。テキスト字幕余白検出を行わず、PGストリームによる字幕又はテキスト字幕を画面の余白領域の右端に配置するという定型化又は簡略化された処理を実現するとしても、字幕とOSDとの重複を回避することができ、本願の課題解決を図ることができるからである。
(集積回路の実施形態)
本発明にかかる集積回路は、システムLSIであり、再生装置のハードウェア構成のうち、記録媒体のドライブ部や、外部とのコネクタ等、機構的な部分を排除して、論理回路や記憶素子に該当する部分、つまり、論理回路の中核部分を内蔵したものである。システムLSIとは、高密度基板上にベアチップを実装し、パッケージングしたものをいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものはマルチチップモジュールと呼ばれるが、このようなものに、システムLSIに含まれる。
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、電源供給やグランド、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置の中核としての役割を果たす。
システムLSIのアーキテクチャは、「フロントエンド部」と、「信号処理部」と、「バックエンド部」と、「メディアインターフェイス」と、「メモリコントローラ」と、「主制御部」とから構成され、メディアインターフェイス、メモリコントローラを通じて、再生装置におけるドライブやメモリ、送受信部と接続されている。再生装置におけるドライブには、BD-ROMのドライブ、ビルドインメディアのドライブ、リムーバブルメディアのドライブ等がある。また、再生装置のメモリには、リードバッファ、各種プレーンメモリ、ビデオデコーダにおけるコーデッドデータバッファ、デコーデッドデータバッファが確保される。
「フロントエンド処理部」は、プリプログラムされたDMAマスタ回路等から構成され、ストリーム処理全般を実行する。このストリーム処理には、立体視インターリーブドストリームファイルからATCシーケンスを復元する処理、多重分離部によるソースパケットデパケッタイザの処理、PIDフィルタの処理が該当する。再生装置のメモリに確保された、リードバッファ、各種プレーンメモリ、ビデオデコーダにおけるコーデッドデータバッファ、デコーデッドデータバッファ間でDMA転送を実現することにより、上述したようなストリーム処理を実現する。
「信号処理部」は、SIMDプロセッサ等から構成され、信号処理全般を実行する。信号処理には、ビデオデコーダによるデコードやオーディオデコーダによるデコードがある。
「バックエンド部」は、AV出力処理全般を行う。AV出力処理は、画素処理を含み、かかる画素処理によってレイヤ合成のための画像重畳、リサイズ、画像フォーマット変換がなされる。また、デジタル/アナログ変換等を併せて実行する。
「メディアインターフェイス」は、ドライブ、ネットワークとのインターフェイスである。
「メモリコントローラ」は、メモリアクセスのためのスレーブ回路であり、フロントエンド部、信号処理部、バックエンド部の要求に応じて、パケットやピクチャデータの読み書きを実現する。
「主制御部」は、ホストマイコンに該当する構成要素であり、メディアインターフェイス、フロントエンド部、信号処理部、バックエンド部に対して、全体制御を実行する。この全体制御には、再生制御エンジン、BD-Jプラットフォーム、HDMVコマンドインタプリタ、モジュールマネージャとしての制御がある。また、PGデコーダによるデコードやテキスト字幕デコーダの機能を兼ねる場合もある。この主制御部におけるマイコンは、ROM、命令RAM、命令キャッシュ、データRAM、データキャッシュ、MPUから構成され、このMPUは、命令フェッチ部、デコーダ、実行ユニット、レジスタファイルを有している。そして、これまでの実施形態で述べた各種処理を実行するプログラムは、組込プログラムとして、基本入出力プログラム(BIOS)、様々なミドルウェア(オペレーションシステム)がと共に、この主制御部におけるマイコン内のROMに記憶されている。よって再生装置の主たる機能は、このシステムLSI内に組込んでおくことができる。 図46は、集積回路の外観を示す図である。本発明にかかる集積回路は、再生装置の本体基板のソケットに取り付けることことができる。
図47は、集積回路のアーキテクチャを示す図である。本図に示すように、システムLSIである集積回路70のアーキテクチャは、フロントエンド部71と、信号処理部72と、バックエンド部73と、メディアI/O74と、メモリコントローラ75と、ホストマイコン76とから構成され、メディアI/O74、メモリコントローラ75を通じて、再生装置におけるドライブやメモリ、送受信部と接続されている。再生装置におけるドライブには、BD-ROMのドライブ、ローカルストレージのドライブ、リムーバブルメディアのドライブ等がある。
フロントエンド処理部71は、プリプログラムされたDMAマスタ回路やI/Oプロセッサ等から構成され、パケット処理全般を実行する。このパケット処理には、デマルチプレクサによるソースパケットデパケッタイザの処理、PIDフィルタの処理が該当する。再生装置のメモリに確保された、トラックバッファ、各種プレーンメモリ、各種バッファ間でDMA転送を実現することにより、上述したようなパケット処理を実現する。
信号処理部72は、信号処理プロセッサやSIMDプロセッサ等から構成され、信号処理全般を実行する。信号処理には、ビデオデコーダによるデコードやオーディオデコーダによるデコードがある。
バックエンド部73は、加算器、フィルタから構成され、AV出力処理全般を行う。AV出力処理には画素処理があり、かかる画素処理によってレイヤ合成のための画像重畳、リサイズ、画像フォーマット変換がなされる。また、デジタル/アナログ変換等を併せて実行する。
メディアインターフェイス74は、ドライブ、ネットワークとのインターフェイスである。
メモリコントローラ75は、メモリアクセスのためのスレーブ回路であり、フロントエンド部、信号処理部、バックエンド部の要求に応じて、パケットやピクチャデータのメモリの読み書きを実現する。 このメモリコントローラ75を通じたメモリの読み書きによって、メモリは、トラックバッファやビデオプレーン、グラフィクスプレーン、ビデオデコーダにおける各種バッファとして機能することになる。
ホストマイコン76は、MPU,ROM,RAMから構成され、メディアインターフェイス、フロントエンド部、信号処理部、バックエンド部に対して、全体制御を実行する。この全体制御には、再生制御部、バイトコード処理モジュール、コマンド処理モジュール、モード管理モジュールとしての制御がある。このホストマイコンにおけるCPUは、命令フェッチ部、デコーダ、実行ユニット、レジスタファイル、プログラムカウンタを有している。そして、これまでの実施形態で述べた各種処理を実行するプログラムは、組込プログラムとして、基本入出力システム(BIOS)、様々なミドルウェア(オペレーションシステム)と共に、このホストマイコンにおけるマイコン内のROMに記憶されている。よって再生装置の主たる機能は、このシステムLSI内に組込んでおくことができる。
(プログラムの実施形態)
各実施形態に示したプログラムは、以下のようにして作ることができる。先ず初めに、ソフトウェア開発者は、プログラミング言語を用いて、各フローチャートや、機能的な構成要素を実現するようなソースプログラムを記述する。この記述にあたって、ソフトウェア開発者は、プログラミング言語の構文に従い、クラス構造体や変数、配列変数、外部関数のコールを用いて、各フローチャートや、機能的な構成要素を具現するソースプログラムを記述する。
記述されたソースプログラムは、ファイルとしてコンパイラに与えられる。コンパイラは、これらのソースプログラムを翻訳してオブジェクトプログラムを生成する。
コンパイラによる翻訳は、構文解析、最適化、資源割付、コード生成といった過程からなる。構文解析では、ソースプログラムの字句解析、構文解析および意味解析を行い、ソースプログラムを中間プログラムに変換する。最適化では、中間プログラムに対して、基本ブロック化、制御フロー解析、データフロー解析という作業を行う。資源割付では、ターゲットとなるプロセッサの命令セットへの適合を図るため、中間プログラム中の変数をターゲットとなるプロセッサのプロセッサが有しているレジスタまたはメモリに割り付ける。コード生成では、中間プログラム内の各中間命令を、プログラムコードに変換し、オブジェクトプログラムを得る。
ここで生成されたオブジェクトプログラムは、各実施形態に示したフローチャートの各ステップや、機能的構成要素の個々の手順を、コンピュータに実行させるような1つ以上のプログラムコードから構成される。ここでプログラムコードは、プロセッサのネィティブコード、JAVAバイトコードというように、様々な種類がある。プログラムコードによる各ステップの実現には、様々な態様がある。外部関数を利用して、各ステップを実現することができる場合、この外部関数をコールするコール文が、プログラムコードになる。また、1つのステップを実現するようなプログラムコードが、別々のオブジェクトプログラムに帰属することもある。命令種が制限されているRISCプロセッサでは、算術演算命令や論理演算命令、分岐命令等を組合せることで、フローチャートの各ステップを実現してもよい。
オブジェクトプログラムが生成されるとプログラマはこれらに対してリンカを起動する。リンカはこれらのオブジェクトプログラムや、関連するライブラリプログラムをメモリ空間に割り当て、これらを1つに結合して、ロードモジュールを生成する。こうして生成されるロードモジュールは、コンピュータによる読み取りを前提にしたものであり、各フローチャートに示した処理手順や機能的な構成要素の処理手順を、コンピュータに実行させるものである。かかるプログラムを非一時的なコンピュータプログラムとしてコンピュータ読取可能な記録媒体に記録してユーザに提供してよい。
(記録媒体のバリエーション)
各実施の形態における記録媒体は、光ディスク、半導体メモリーカード等、パッケージメディア全般を含んでいる。本実施の形態の記録媒体は予め必要なデータが記録された光ディスク(例えばBD-ROM、DVD-ROMなどの既存の読み取り可能な光ディスク)を例に説明をするが、これに限定される必要はなく、例えば、放送またはネットワークを経由して配信された本発明の実施に必要なデータを含んだ3Dコンテンツを光ディスクへ書き込む機能を有する端末装置(例えば左記の機能は再生装置に組み込まれていても良いし、再生装置とは別の装置であってもよい)を利用して書き込み可能な光ディスク(例えばBD-RE、DVD-RAMなどの既存の書き込み可能な光ディスク)に記録し、この記録した光ディスクを本発明の再生装置に適用しても本発明の実施は可能である。
(半導体メモリカード記録装置及び再生装置の実施形態)
各実施の形態で説明をしたデータ構造を半導体メモリーに記録する記録装置、及び、再生する再生装置の実施形態について説明する。
まず、前提となる技術として、BD-ROMに記録されているデータの著作権保護の仕組みについて説明する。
BD-ROMに記録されたデータのうち、例えば著作権の保護、データの秘匿性の向上の観点からデータの一部が、必要に応じて暗号化されている場合がある。
例えば、BD-ROMに記録されたデータのうち、暗号化されているデータは、例えばビデオストリームに対応するデータ、オーディオストリームに対応するデータ、またはこれらを含むストリームに対応するデータであったりする。
以後、BD-ROMに記録されたデータのうち、暗号化されているデータの解読について説明をする。
半導体メモリカード再生装置においては、BD-ROM内の暗号化されたデータを解読するために必要な鍵に対応するデータ(例えばデバイスキー)が予め再生装置に記憶されている。
一方、BD-ROMには暗号化されたデータを解読するために必要な鍵に対応するデータ(例えば上述のデバイスキーに対応するMKB(メディアキーブロック))と、暗号化されたデータを解読するための鍵自体を暗号化したデータ(例えば上述のデバイスキー及びMKBに対応する暗号化タイトルキー)が記録されている。ここで、デバイスキー、MKB、及び暗号化タイトルキーは対になっており、さらにBD-ROM上の通常コピーできない領域(BCAと呼ばれる領域)に書き込まれた識別子(例えばボリュームID)とも対応付けがされている。この組み合わせが正しくなければ、暗号の解読ができないものとする。組み合わせが正しい場合のみ、暗号解読に必要な鍵(例えば上述のデバイスキー、MKB及びボリュームIDを元に、暗号化タイトルキーを復号して得られるタイトルキー)を導き出すことができ、この暗号解読に必要な鍵を用いて、暗号化されたデータの解読が可能となる。
装填されたBD-ROMを再生装置において再生する場合、例えばBD-ROM内の暗号化タイトルキー、MKBと対になっている(または対応する)デバイスキーが再生装置内になければ、暗号化されたデータは再生がなされない。何故ならば、暗号化されたデータの解読に必要な鍵(タイトルキー)は、鍵自体が暗号化されて(暗号化タイトルキー)BD-ROM上に記録されており、MKBとデバイスキーの組み合わせが正しくなければ、暗号の解読に必要な鍵を導き出すことができないからである。
逆に暗号化タイトルキー、MKB、デバイスキー及びボリュームIDの組み合わせが正しければ、例えば上述の暗号解読に必要な鍵(デバイスキー、MKB及びボリュームIDを元に、暗号化タイトルキーを復号して得られるタイトルキー)を用いてビデオストリームがデコーダにてデコードされ、オーディオストリームがオーディオデコーダにてデコードされるように再生装置は構成されている。
以上が、BD-ROMに記録されているデータの著作権保護の仕組みであるが、この仕組みは、BD-ROMに必ずしも限定されるのではなく、例えば、読込み/書込み可能な半導体メモリー(例えばSDカードなどの可搬性を有する半導体メモリーカード)に適用した場合においても、実施が可能である。
半導体メモリーカード再生装置の再生手順について説明する。光ディスクでは例えば、光ディスクドライブを介してデータを読み出すように構成していたのに対し、半導体メモリーカードを用いた場合には、半導体メモリーカード内のデータを読み出すためのI/Fを介してデータを読み出すように構成すればよい。
より詳細には、再生装置のスロットに半導体メモリーカードが挿入されると、半導体メモリーカードI/Fを経由して再生装置と半導体メモリーカードが電気的に接続される。半導体メモリーカードに記録されたデータは半導体メモリーカードI/Fを介して読み出すように構成すれば良い。
(受信装置としての実施形態)
各実施形態で説明した再生装置は、本実施の形態で説明をしたデータに相応するデータ(配信データ)を電子配信サービスの配信サーバから受信し、半導体メモリカードに記録する端末装置としても実現することができる。
かかる端末装置は、各実施形態で説明した再生装置がそのような動作を行なえるように構成をされていても良いし、本実施の形態の再生装置とは別に半導体メモリーに配信データを記憶することを行う専用の端末装置にて行なうような形態であっても良い。ここでは再生装置が行なう例について説明をする。また記録先の半導体メモリーとしてSDカードを例に説明をする。
再生装置が備えるスロットに挿入されたSDメモリーカードに配信データを記録する場合、まず配信データを蓄積する配信サーバへ配信データの送信を要求する。このとき再生装置は挿入したSDメモリーカードを一意に識別するための識別情報(例えば個々のSDメモリーカード固有の識別番号、より具体的には、例えばSDメモリーカードのシリアル番号等)をSDメモリーカードから読み出して、読み出した識別情報を配信要求とともに、配信サーバへ送信する。
この、SDメモリーカードを一意に識別するための識別情報は例えば上述のボリュームIDに相当する。
一方、配信サーバでは、配信するデータのうち必要なデータ(例えばビデオストリーム、オーディオストリーム等)が暗号解読に必要な鍵(例えばタイトルキー)を用いて暗号の解除ができるように暗号化がなされてサーバ上に格納されている。
例えば配信サーバは、秘密鍵を保持しており、半導体メモリーカードの固有の識別番号のそれぞれに対して異なる公開鍵情報が動的に生成できるように構成されている。
また、配信サーバは、暗号化されたデータの解読に必要な鍵(タイトルキー)自身に対して暗号化ができるように構成されている(つまり暗号化タイトルキーを生成できるように構成されている)。
生成される公開鍵情報は例えば上述のMKB、ボリュームID及び暗号化タイトルキーに相当する情報を含む。暗号化されたデータは例えば半導体メモリー固有の識別番号、後述する公開鍵情報に含まれる公開鍵本体、および再生装置に予め記録されたデバイスキーの組み合わせが正しければ、暗号解読に必要な鍵(例えばデバイスキー、MKB及び半導体メモリー固有の識別番号を元に、暗号化タイトルキーを復号して得られるタイトルキー)が得られ、この得られた暗号解読に必要な鍵(タイトルキー)を用いて、暗号化されたデータの解読ができるものである。
次に、再生装置は、受信した公開鍵情報と配信データをスロットに挿入した半導体メモリーカードの記録領域に記録する。
次に、半導体メモリーカードの記録領域に記録した公開鍵情報と配信データに含まれるデータのうち暗号化したデータを復号して再生する方法の一例について説明をする。
受信した公開鍵情報は例えば公開鍵本体(例えば上述のMKB及び暗号化タイトルキー)、署名情報、半導体メモリーカードの固有の識別番号、および無効にすべきデバイスに関する情報を示すデバイスリストが記録されている。
署名情報には例えば、公開鍵情報のハッシュ値を含む。
デバイスリストには例えば、不正に再生がなされる可能性があるデバイスに関する情報が記載されている。これは例えば再生装置に予め記録されたデバイスキー、再生装置の識別番号、または再生装置が備えるデコーダの識別番号といったように、不正に再生される可能性がある装置、装置に含まれる部品、または機能(プログラム)といったものを一意に特定するための情報である。
半導体メモリーカードの記録領域に記録した配信データのうち、暗号化されたデータの再生に関し、説明をする。
まず、公開鍵本体を利用して暗号化したデータを復号する前に復号鍵本体を機能させてよいかどうかに関するチェックを行う。
具体的には、(1) 公開鍵情報に含まれる半導体メモリー固有の識別情報と半導体メモリーカードに予め記憶されている固有の識別番号とが一致するかどうかのチェック(2) 再生装置内で算出した公開鍵情報のハッシュ値と署名情報に含まれるハッシュ値が一致するかのチェック(3) 公開鍵情報に含まれるデバイスリストに示される情報に基づいて、再生を行う再生装置が不正な再生が可能かどうかのチェック(例えば公開鍵情報に含まれるデバイスリストに示されるデバイスキーと、再生装置に予め記憶されたデバイスキーが一致するかどうかのチェック)
を行なう。これらのチェックを行なう順番は、どのような順序で行なってもよい。
上述の(1)〜(3)のチェックにおいて、公開鍵情報に含まれる半導体メモリー固有の識別情報と半導体メモリーに予め記憶されている固有の識別番号とが一致しない、再生装置内で算出した公開鍵情報のハッシュ値と署名情報に含まれるハッシュ値が一致しない、または、再生を行う再生装置が不正に再生される可能性があると判断した、のいずれかを満足すれば、再生装置は、暗号化されたデータの解読がなされないように制御する。
また、公開鍵情報に含まれる半導体メモリーカードの固有の識別情報と半導体メモリーカードに予め記憶されている固有の識別番号とが一致し、かつ再生装置内で算出した公開鍵情報のハッシュ値と署名情報に含まれるハッシュ値が一致し、かつ再生を行う再生装置が不正に再生される可能性がないと判断したのであれば、半導体メモリー固有の識別番号、公開鍵情報に含まれる公開鍵本体、および再生装置に予め記録されたデバイスキーの組み合わせが正しいと判断し、暗号解読に必要な鍵(デバイスキー、MKB及び半導体メモリー固有の識別番号を元に、暗号化タイトルキーを復号して得られるタイトルキー)を用いて、暗号化されたデータの解読を行なう。
例えば暗号化されたデータがビデオストリーム、オーディオストリームである場合、ビデオデコーダは上述の暗号解読に必要な鍵(暗号化タイトルキーを復号して得られるタイトルキー)を利用してビデオストリームを復号し(デコードし)、オーディオデコーダは、上述の暗号解読に必要な鍵を利用してオーディオストリームを復号する(デコードする)。
このように構成をすることにより、電子配信時において不正利用される可能性がある再生装置、部品、機能(プログラム)などが分っている場合、これらを識別するための情報をデバイスリストに示して、配信するようにすれば、再生装置側がデバイスリストに示されているものを含むような場合には公開鍵情報(公開鍵本体)を用いた復号を抑止できるようにできるため、半導体メモリー固有の識別番号、公開鍵情報に含まれる公開鍵本体、および再生装置に予め記録されたデバイスキーの組み合わせが、たとえ正しくても、暗号化されたデータの解読がなされないように制御できるため、不正な装置上での配信データの利用を抑止することが可能となる。