以下、本発明の実施の形態を、BDに適用した場合を例に説明する。
[BDの管理構造]
まず、現行のBDに関し、"Blu-ray Disc Read-Only Format Ver1.0 part3 Audio Visual Specifications"で規定されている、読み出し専用タイプのBDであるBD-ROMに記録されたコンテンツ、すなわち、AV(Audio/Video)データ等の管理構造(以下、BDMVフォーマットともいう)について説明する。
例えば、MPEG(Moving Picture Experts Group)ビデオや、MPEGオーディオ等の符号化方式で符号化され、MPEG2システムに従って多重化されたビットストリームは、クリップAVストリーム(またはAVストリーム)と呼ばれる。クリップAVストリームは、BDに関する規格の一つである"Blu-ray Disc Read-Only Format part2"で定義されたファイルシステムにより、ファイルとしてBDに記録される。クリップAVストリームのファイルは、クリップAVストリームファイル(またはAVストリームファイル)と呼ばれる。
クリップAVストリームファイルは、ファイルシステム上での管理単位であり、クリップAVストリームファイル(のクリップAVストリーム)を再生に必要な情報等は、データベースとしてBDに記録される。このデータベースについては、BD規格の一つである"Blu-ray Disc Read-Only Format part3"で規定されている。
図1は、BDMVフォーマットの概要を説明する図である。
BDMVフォーマットは、4層のレイヤから構成される。
最下位のレイヤは、クリップAVストリームが属するレイヤであり、以下、適宜、クリップレイヤともいう。
クリップレイヤの1つ上のレイヤは、クリップAVストリームに対する再生箇所を指定するための、プレイリスト(Movie PlayList)が属するレイヤで、以下、プレイリストレイヤともいう。
プレイリストレイヤの1つ上のレイヤは、プレイリストに対して再生順等を指定するコマンドからなるムービーオブジェクト(Movie Object)等が属するレイヤで、以下、オブジェクトレイヤともいう。
オブジェクトレイヤの1つ上のレイヤ(最上位のレイヤ)は、BDに格納されるタイトル等を管理するインデックステーブルが属するレイヤで、以下、インデクスレイヤともいう。
クリップレイヤ、プレイリストレイヤ、オブジェクトレイヤ、及び、インデクスレイヤについて、さらに説明する。
クリップレイヤには、クリップAVストリームや、クリップ情報(Clip Information)等が属する。
クリップAVストリームは、コンテンツのデータとしてのビデオデータやオーディオデータ等をTS(MPEG2 TS(Transport Stream))の形にしたストリームである。
クリップ情報(Clip Information)は、クリップAVストリームに関する情報であり、ファイルとして、BDに記録される。
なお、クリップAVストリームには、字幕やメニュー等のグラフィクスのストリームも、必要に応じて含まれる。
字幕(のグラフィクス)のストリームは、プレゼンテーショングラフィクス(PG(Presentaion Graphics))ストリームと呼ばれ、メニュー(のグラフィクス)のストリームは、インタラクティブグラフィクス(IG(Interactive Graphics))ストリームと呼ばれる。
また、クリップAVストリームファイルと、対応するクリップ情報(そのクリップAVストリームファイルのクリップAVストリームに関するクリップ情報)のファイル(クリップ情報ファイル)とのセットは、クリップ(Clip)と呼ばれる。
クリップは、クリップAVストリームとクリップ情報とから構成される、1つのオブジェクトである。
クリップを構成するクリップAVストリームに対応するコンテンツを時間軸上に展開したときの最初と最後の位置(時刻)を含む複数の位置は、アクセスポイントに設定される。アクセスポイントは、主に、タイムスタンプで、上位のレイヤのプレイリスト(PlayList)により指定される。
クリップを構成するクリップ情報は、プレイリストがタイムスタンプで指定したアクセスポイントが表す、クリップAVストリームの位置のアドレス(論理アドレス)を含む。
プレイリストレイヤには、プレイリスト(Movie PlayList)が属する。
プレイリストは、再生を行うAVストリームファイルと、そのAVストリームファイルの再生箇所を指定する再生開始点(IN点)、及び、再生終了点(OUT点)とを含むプレイアイテム(PlayItem)から構成される。
したがって、プレイリストは、プレイアイテムの集合で構成される。
ここで、プレイアイテムの再生とは、そのプレイアイテムに含まれるIN点とOUT点とによって特定される、クリップAVストリームの区間の再生を意味する。
オブジェクトレイヤには、ムービーオブジェクト(Movie Object)や、BD-Jオブジェクト(Blu-ray Disc Java(登録商標) Object)が属する。
ムービーオブジェクトは、HDMV(High Definition Movie)ナビゲーションコマンドプログラム(ナビコマンド)と、ムービーオブジェクトとを連携するターミナルインフォメーションを含む。
ナビコマンドは、プレイリストの再生を制御するためのコマンドである。ターミナルインフォメーションは、BDを再生するBDプレーヤに対するユーザのインタラクティブな操作を許可するための情報を含む。BDプレーヤでは、ターミナルインフォメーションに基づき、メニューの呼び出しや、タイトルサーチといったユーザオペレーションが制御される。
BD-Jオブジェクトは、Java(登録商標)プログラムであり、ナビコマンドよりも、より高度な(洗練された)インタラクティブ機能を、ユーザに提供することができる。
インデクスレイヤには、インデクステーブル(Index table)が属する。
インデクステーブルは、BD-ROMディスクのタイトルを定義する、トップレベルのテーブルである。
インデクステーブルのエントリ(欄)は、タイトルに対応し、各エントリからは、そのエントリに対応するタイトル(HDMVタイトル、BD-Jタイトル)のオブジェクト(ムービーオブジェクト、BD-Jオブジェクト)にリンクがはられる。
図2は、"Blu-ray Disc Read-Only Format part3"で規定された、BDのファイルの管理構造を説明する図である。
BDでは、ファイルは、ディレクトリ構造により階層的に管理される。
ここで、図2では、ディレクトリの下のファイル(ディレクトリを含む)とは、そのディレクトリの直下にあるファイルを意味し、ディレクトリに含まれるファイルとは、そのディレクトリの直下にあるファイルや、そのディレクトリの、いわゆるサブディレクトリの下にあるファイルを意味する。
BDの最上位階層のディレクトリは、ルート(root)ディレクトリになっている。
ルートディレクトリの直下には、ディレクトリ"BDMV"と、ディレクトリ"CERTIFICATE"とが存在する。
ディレクトリ"CERTIFICATE"には、著作権に関する情報(ファイル)が格納される。
ディレクトリ"BDMV"には、図1で説明したBDMVフォーマットのファイルが格納される。
ディレクトリ"BDMV"の直下には、ファイル"index.bdmv"、及び"MovieObject.bdmv"の2つのファイルが格納される。なお、ディレクトリ"BDMV"の直下には、ファイル"index.bdmv"、及び"MovieObject.bdmv"以外のファイル(ディレクトリを除く)は、格納することができない。
ファイル"index.bdmv"は、BDを再生するメニューに関する情報としての、図1で説明したインデクステーブルを含む。
BDプレーヤは、例えば、BDのコンテンツを全て再生する、特定のチャプタのみを再生する、繰り返し再生をする、所定のメニューを表示する等の内容の項目を含む初期メニュー(の画面)を、ファイル"index.bdmv"に基づいて再生する。
また、ファイル"index.bdmv"には、各項目が選択されたときに実行するムービーオブジェクト(Movie Object)を設定することができ、ユーザにより初期メニュー画面から1つの項目が選択された場合、BDプレーヤは、ファイル"index.bdmv"に設定されているMovie Objectのコマンドを実行する。
ファイル"MovieObject.bdmv"は、Movie Objectの情報を含むファイルである。Movie Objectは、BDに記録されているPlayListの再生を制御するコマンドを含み、例えば、BDプレーヤは、BDに記録されているMovieObjectの中から1つを選択して実行することにより、BDに記録されているコンテンツ(タイトル)を再生する。
ディレクトリ"BDMV"の直下には、ディレクトリ"PLAYLIST","CLIPINF","STREAM","AUXDATA","META","BDJO","JAR"、及び"BACKUP"が設けられる。
ディレクトリ"PLAYLIST"には、プレイリストのデータベースが格納される。すなわち、ディレクトリ"PLAYLIST"には、プレイリストのファイル"xxxxx.mpls"が格納される。ファイル"xxxxx.mpls"のファイル名には、5桁の数字"xxxxx"と、拡張子"mpls"とからなるファイル名が用いられる。
ディレクトリ"CLIPINF"は、クリップのデータベースが格納される。すなわち、ディレクトリCLIPINF"には、クリップAVストリームファイルのそれぞれに対するクリップインフォメーションファイル"xxxxx.clpi"が格納される。クリップインフォメーションファイル"xxxxx.clpi"のファイル名には、5桁の数字"xxxxx"と、拡張子"clpi"とからなるファイル名が用いられる。
ディレクトリ"STREAM"には、クリップAVストリームファイル"xxxxx.m2ts"が格納される。クリップAVストリームファイル"xxxxx.m2ts"には、TSが格納される。クリップAVストリームファイル"xxxxx.m2ts"のファイル名には、5桁の数字"xxxxx"と、拡張子"m2ts"とからなるファイル名が用いられる。
なお、あるクリップを構成するクリップインフォメーションファイル"xxxxx.clpi"と、クリップAVストリームファイル"xxxxx.m2ts"のファイル名としては、拡張子を除き、一致するファイル名が用いられる。これにより、あるクリップを構成するクリップインフォメーションファイル"xxxxx.clpi"と、クリップAVストリームファイル"xxxxx.m2ts"とを、容易に特定することができる。
ディレクトリ"AUXDATA"には、メニューの表示等に用いられる、サウンドファイル、フォントファイル、フォントインデクスファイル及びビットマップファイル等が格納される。
図2では、ディレクトリ"AUXDATA"に、ファイル"sound.bdmv"や、拡張子が"otf"のファイルが格納されている。
ファイル"sound.bdmv"には、所定のサウンドデータ(オーディオデータ)が格納される。ファイル"sound.bdmv"のファイル名は、"sound.bdmv"が固定的に用いられる。
拡張子が"otf"のファイルには、字幕の表示や、BD-Jオブジェクト(アプリケーション)等で用いられるフォントのデータが格納される。拡張子が"otf"のファイルのファイル名のうちの拡張子以外の部分には、5桁の数字が用いられる。
ディレクトリ"META"には、メタデータのファイルが格納される。ディレクトリ"BDJO"及びディレクトリ"JAR"は、BD-Jオブジェクトのファイルが格納される。ディレクトリ"BACKUP"は、BDに記録されたファイルのバックアップが格納される。
[BDプレーヤのハードウェアの構成例]
図3は、BDを再生するBDプレーヤのハードウェアの構成例を示すブロック図である。
図3のBDプレーヤは、3D画像のコンテンツが記録されたBDの再生を行うことができるようになっている。
BDプレーヤは、CPU(Central Processing Unit)102等の、プロセッサ(コンピュータ)を内蔵している。CPU102には、バス101を介して、入出力インタフェース110が接続されている。
CPU102は、入出力インタフェース110を介して、ユーザによって、入力部107が操作等されることにより指令が入力されると、それに従って、ROM(Read Only Memory)103に格納されているプログラムを実行する。あるいは、CPU102は、ハードディスク105や、ドライブ109に装着されたディスク100に記録されたプログラムを、RAM(Random Access Memory)104にロードして実行する。
これにより、CPU102は、後述する各種の処理を行う。そして、CPU102は、その処理結果を、必要に応じて、例えば、入出力インタフェース110を介して、出力部106から出力、あるいは、通信部108から送信、さらには、ハードディスク105に記録等させる。
なお、入力部107は、キーボードや、マウス、マイク等で構成される。また、出力部106は、LCD(Liquid Crystal Display)やスピーカ等で構成される。通信部108は、ネットワークカード等で構成される。
ここで、CPU102が実行するプログラムは、BDプレーヤに内蔵されている記録媒体としてのハードディスク105やROM103に予め記録しておくことができる。
あるいはまた、プログラムは、ディスク100等のリムーバブル記録媒体に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。ここで、リムーバブル記録媒体としては、例えば、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリ等がある。
なお、プログラムは、上述したようなリムーバブル記録媒体からBDプレーヤにインストールする他、通信網や放送網を介して、BDプレーヤにダウンロードし、内蔵するハードディスク105にインストールすることができる。すなわち、プログラムは、例えば、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、BDプレーヤに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、BDプレーヤに有線で転送することができる。
図3において、ディスク100は、例えば、BDであり、そこには、3D画像のコンテンツが、レガシープレーヤで再生されるBDとの互換性を維持する形で記録されている。
したがって、ディスク100は、レガシープレーヤでも再生することができるし、3D画像のコンテンツの再生を行うことができるBDプレーヤ(以下、3D対応プレーヤともいう)である図3のBDプレーヤでも再生することができる。
ここで、レガシープレーヤとは、現行の、2D画像のコンテンツが記録されたBDの再生をすることはできるが、3D画像のコンテンツを再生することができないBDプレーヤである。
レガシープレーヤでは、ディスク100から、2D画像のコンテンツを再生することはできるが、3D画像のコンテンツを再生することはできない。
一方、3D対応プレーヤである図3のBDプレーヤでは、ディスク100から、2D画像のコンテンツを再生することもできるし、3D画像のコンテンツを再生することもできる。
図3のBDプレーヤでは、BDであるディスク100がドライブ109に装着されると、CPU102が、ドライブ109を制御することにより、ディスク100の再生を行う。
[BD-Jアプリケーションの説明]
ディスク100(図3)には、3D画像のコンテンツの1つとして、BD-Jアプリケーション(BD-Jタイトル)(BD-Jオブジェクト)が記録されている。
3D対応プレーヤである図3のBDプレーヤでは、CPU102が、Java(登録商標)仮想マシンを実行し、そのJava(登録商標)仮想マシン上で、BD-Jアプリケーションが実行される。
図4は、3D対応プレーヤによる3D画像の処理の概要(BD-J stereoscopic graphicsの概要)を説明する図である。
3D対応プレーヤは、3D画像を、論理プレーン10、PGプレーン12、又は、ビデオプレーン13に描画する。なお、論理プレーン10、PGプレーン12、及び、ビデオプレーン13の実体は、例えば、図3のRAM104の一部の記憶領域である。
3D対応プレーヤが描画する3D画像には、BD規格に規定されたBD-Jのグラフィクス、PG(Presentation Graphics)、ビデオ、及び、バックグラウンドがある。
ここで、図4では、グラフィクスの3D画像(stereo graphics source)は、左眼で観察される画像である左眼用画像(L(Left)-view)と、右眼で観察される画像である右眼用画像(R(Right)-view)とから構成される。
PGの3D画像(stereo PG source)、ビデオの3D画像(stereo video source)、及び、バックグラウンドの3D画像(stereo background source)も、同様に、左眼用画像と右眼用画像とから構成される。
なお、ビデオの3D画像等を構成する左眼用画像、及び、右眼用画像は、例えば、H.264 AVC(Advanced Video Coding)/MVC(Multi-view Video coding)等で符号化することができる。
ここで、H.264 AVC/MVCでは、ベースビュー(Base View)と呼ばれる画像ストリームと、ディペンデントビュー(Dependent View)と呼ばれる画像ストリームとが定義されている。
ベースビューには、他のストリームを参照画像とする予測符号化が許されていないが、ディペンデントビューには、ベースビューを参照画像とする予測符号化が許されている。左眼用画像、及び右眼用画像のうちの、例えば、左眼用画像は、ベースビューとし、右眼用画像は、ディペンデントビューとすることができる。
3D対応プレーヤは、論理プレーン10に描画された3D画像を、グラフィクスプレーン11や、バックグラウンドプレーン14に描画する。
グラフィクスプレーン11は、左眼用画像を記憶するLグラフィクスプレーン(L(Left) graphics plane)11Lと、右眼用画像を記憶するRグラフィクスプレーン(R(Right) graphics plane)11Rとから構成される。
論理プレーン10に描画されたグラフィクスの3D画像を構成する左眼用画像は、Lグラフィクスプレーン11Lに描画され、右眼用画像は、Rグラフィクスプレーン11Rに描画される。
ここで、Lグラフィクスプレーン11Lは、左眼で観察されるL(Left)用の画像(左眼用画像)を記憶する1面分の画像の記憶領域(L領域)である。また、Rグラフィクスプレーン11Rは、右眼で観察されるR(Right)用の画像(右眼用画像)を記憶する1面分の画像の記憶領域(R領域)である。
Lグラフィクスプレーン11L、及び、Rグラフィクスプレーン11R、すなわち、グラフィクスプレーン11の実体は、論理プレーン10とは別の、図3のRAM104の一部の記憶領域である。
PGプレーン12、ビデオプレーン13、及び、バックグラウンドプレーン14も同様である。
PGプレーン12は、左眼用画像を記憶するL-PGプレーン(L(Left) PG plane)12Lと、右眼用画像を記憶するR-PGプレーン(R(Right) PG plane)12Rとから構成される。
3D対応プレーヤは、PGの3D画像を構成する左眼用画像を、L-PGプレーン12Lに描画し、右眼用画像を、R-PGプレーン12Rに描画する。
ビデオプレーン13は、左眼用画像を記憶するLビデオプレーン(L(Left) video plane)13Lと、右眼用画像を記憶するRビデオプレーン(R(Right) video plane)13Rとから構成される。
3D対応プレーヤは、ビデオの3D画像を構成する左眼用画像を、Lビデオプレーン13Lに描画し、右眼用画像を、Rビデオプレーン13Rに描画する。
バックグラウンドプレーン14は、左眼用画像を記憶するLバックグラウンドプレーン(L(Left) background plane)14Lと、右眼用画像を記憶するRバックグラウンドプレーン(R(Right) background plane)14Rとから構成される。
論理プレーン10に描画されたバックグラウンドの3D画像を構成する左眼用画像は、Lバックグラウンドプレーン14Lに描画され、右眼用画像は、Rバックグラウンドプレーン14Rに描画される。
グラフィクスプレーン11、PGプレーン12、ビデオプレーン13、及び、バックグラウンドプレーン14に描画(記憶)された左眼用画像、及び、右眼用画像は、ミキサ15に供給される。
ミキサ15は、グラフィクスプレーン11からのグラフィクスの左眼用画像、PGプレーン12からのPGの左眼用画像、ビデオプレーン13からのビデオの左眼用画像、及び、バックグラウンドプレーン14からのバックグラウンドの左眼用画像をブレンディング(ミキシング)(合成)し、その合成結果である左眼用画像を出力する。
また、ミキサ15は、グラフィクスプレーン11からのグラフィクスの右眼用画像、PGプレーン12からのPGの右眼用画像、ビデオプレーン13からのビデオの右眼用画像、及び、バックグラウンドプレーン14からのバックグラウンドの右眼用画像をブレンディング合成し、その合成結果である右眼用画像を出力する。
ミキサ15が出力する左眼用画像は、左用のディスプレイ出力(L(Left) display output)として、図示せぬディスプレイに供給される。また、ミキサ15が出力する右眼用画像は、右用のディスプレイ出力(R(Right) display output)として、図示せぬディスプレイに供給される。
図示せぬディスプレイでは、ミキサ15からの左眼用画像と右眼用画像とが、交互、又は、同時に表示されることで、3D画像が表示される。
BD-Jアプリケーションは、グラフィクスプレーン11、PGプレーン12、ビデオプレーン13、及び、バックグラウンドプレーン14のうちの、グラフィクスプレーン11、及び、バックグラウンドプレーン14に、画像の描画を行うことができる。
なお、本実施の形態では、BD-Jアプリケーションは、論理プレーン10にしかアクセスすることはできず、グラフィクスプレーン11、及び、バックグラウンドプレーン14には、直接アクセスすることはできないこととする。
したがって、BD-Jアプリケーションは、画像の描画を、論理プレーン10に対して行うことができるだけで、グラフィクスプレーン11、及び、バックグラウンドプレーン14に対して直接的に行うことはできない。このため、BD-Jアプリケーションは、論理プレーン10に、画像を描画することで、間接的に、グラフィクスプレーン11や、バックグラウンドプレーン14に、画像を描画する。
但し、以下では、説明の便宜上、BD-Jアプリケーションによる、論理プレーン10を介しての、グラフィクスプレーン11や、バックグラウンドプレーン14への画像の描画を、単に、グラフィクスプレーン11や、バックグラウンドプレーン14への画像の描画とも記載する。
なお、3D対応プレーヤは、論理プレーン10なしで構成することができる。この場合、BD-Jアプリケーションは、画像を、グラフィクスプレーン11や、バックグラウンドプレーン14に、直接描画する。
BD-Jアプリケーションは、グラフィクスプレーン11、及び、バックグラウンドプレーン14への画像の描画の他、ビデオとPGのスケーリングや位置(表示位置)の制御等の、ビデオとPGの再生制御を行うことができる。
なお、BD-Jアプリケーションは、ビデオとPGとは、1組で(まとめて)扱われる。すなわち、BD-Jアプリケーションは、ビデオとPGとを区別しない(区別することができない)。
[BD-Jアプリケーションによるグラフィクスの画像の描画]
図5は、BD-Jアプリケーションによる、グラフィックスプレーン11(Stereoscopic grapics planes)への、グラフィクスの3D画像の描画を説明する図である。
3D画像の描画方式としては、第1の描画方式と、第2の描画方式とを採用することができる。
図5Aは、第1の描画方式を説明する図である。
第1の描画方式では、BD-Jアプリケーションのオーサ(author)は、ステレオプレーンに描画を行う。
すなわち、第1の描画方式では、グラフィクスの3D画像のデータが、左眼用画像のデータと、右眼用画像のデータとで構成され、BD-Jアプリケーションは、その左眼用画像と右眼用画像とを、論理プレーン10に描画する。
そして、論理プレーン10に描画された左眼用画像と右眼用画像とが、そのまま、グラフィックスプレーン11に描画される。すなわち、論理プレーン10に描画された左眼用画像が、そのまま、Lグラフィックスプレーン11Lに描画され、論理プレーン10に描画された右眼用画像が、そのまま、Rグラフィックスプレーン11Rに描画される。
図5Bは、第2の描画方式を説明する図である。
第2の描画方式では、BD-Jアプリケーションのオーサは、モノプレーンに描画する。また、オーサは、同時に、オフセット値(graphics plane offset値)を供給する。3D対応プレーヤは、オフセット値に基づき、モノプレーンからステレオプレーンを生成する。
すなわち、第2の描画方式では、3D画像のデータが、3D画像を生成する、いわば元となる元画像のデータと、元画像に視差を与えて、元画像から、左眼用画像と右眼用画像とを生成するための視差のデータとで構成される。
BD-Jアプリケーションは、元画像を、論理プレーン10に描画する。3D対応プレーヤは、論理プレーン10に描画された元画像に、視差を与えることで生成される左眼用画像と右眼用画像を、それぞれ、Lグラフィックスプレーン11LとRグラフィックスプレーン11Rに描画する。
ここで、視差のデータを、オフセット値(offset)ということとすると、オフセット値としては、元画像の位置を、水平方向(x方向)にずらす画素数(ピクセル数)を採用することができる。
Lグラフィックスプレーン11Lにおいては、左から右方向を正の方向として、論理プレーン10に描画された元画像が、水平方向の位置を、オフセット値だけずらした位置に描画される。すなわち、論理プレーン10に描画された元画像の水平方向の位置を、オフセット値だけずらした結果得られる画像が、左眼用画像として、Lグラフィクスプレーン11Lに描画される。
Rグラフィックスプレーン11Rにおいては、右から左方向を正の方向として、論理プレーン10に描画された元画像が、水平方向の位置を、オフセット値だけずらした位置に描画される。すなわち、論理プレーン10に描画された元画像の水平方向の位置を、オフセット値だけずらした結果得られる画像が、右眼用画像として、Rグラフィクスプレーン11Rに描画される。
なお、Lグラフィックスプレーン11Lには、論理プレーン10に描画された元画像が、水平方向の位置をずらして描画されるため、描画を行うべき領域(水平方向の位置をずらさない場合に描画がされる領域)の中に、描画が行われない領域(画素)が生じる。Lグラフィックスプレーン11Lの、元の画像の描画が行われない領域は、透明色が描画される。Rグラフィクスプレーン11Rについても、同様である。
ここで、オフセット値が、正である場合には、左眼用画像と右眼用画像とで表示される3D画像は、図示せぬディスプレイの表示画面に垂直な奥行き方向の手前側に、浮き上がって見える。一方、オフセット値が、負である場合には、左眼用画像と右眼用画像とで表示される3D画像は、奥行き方向の奥側に、へこんで見える。
図6は、BD-Jアプリケーションが、グラフィックスプレーン11に、グラフィクスの3D画像を描画することにより、グラフィクスの画像を再生するグラフィクスモードを示す図である。
Reference Decoder Model上では、3D対応プレーヤは、常に2-plane(Lグラフィクスプレーン11L、及び、Rグラフィクスプレーン11R)を有し、BD-Jアプリケーションは、論理プレーン10に対して描画する仕様とする。
そして、最終的には、Lグラフィクスプレーン11Lに描画されたグラフィクスの左眼用画像(L graphics plane)は、Lビデオプレーン13Lに描画されたビデオ(及びPG)の左眼用画像(L video plane)とブレンディングされる。また、Rグラフィクスプレーン11Rに描画されたグラフィクスの右眼用画像(R graphics plane)は、Rビデオプレーン13Rに描画されたビデオの右眼用画像(R video plane)とブレンディングされる。
図6Aは、グラフィクスモードの1つのモードMode#1であるmono-logical-plane + offset valueモード(以下、オフセットグラフィクスモードともいう)を示している。
オフセットグラフィクスモードでは、BD-Jアプリケーションは、グラフィクスの2D画像であるモノ画像を、論理プレーン10に描画する。また、BD-Jアプリケーションは、オフセット値を、3D対応プレーヤに与える。
3D対応プレーヤは、論理プレーン10描画されたモノ画像と、BD-Jアプリケーションから与えられたオフセット値とから、グラフィクスの3D画像であるステレオ画像を生成する。さらに、BDプレーヤは、ステレオ画像を構成する左眼用画像を、Lグラフィクスプレーン11L(L領域)に描画する(記憶させる)とともに、そのステレオ画像を構成する右眼用画像を、Rグラフィクスプレーン11R(R領域)に描画する(記憶させる)。
そして、ミキサ15は、Lグラフィクスプレーン11Lに描画(記憶)されたグラフィクスの左眼用画像を、Lビデオプレーン13Lに描画されたビデオ(及びPG)の左眼用画像とブレンディングして出力する。さらに、ミキサ15は、Rグラフィクスプレーン11Rに描画されたグラフィクスの右眼用画像を、Rビデオプレーン13Rに描画されたビデオの右眼用画像とブレンディングして出力する。
図6Bは、グラフィクスモードの1つのモードMode#2であるstereo-logical-planeモード(以下、ステレオグラフィクスモードともいう)を示している。
ステレオグラフィクスモードでは、BD-Jアプリケーションは、グラフィクスの3D画像であるステレオ画像を構成する左眼用画像と右眼用画像を、論理プレーン10に描画する。
3D対応プレーヤは、論理プレーン10に描画された左眼用画像を、Lグラフィクスプレーン11Lに描画するとともに、論理プレーン10に描画された右眼用画像を、Rグラフィクスプレーン11Rに描画する。
そして、ミキサ15は、Lグラフィクスプレーン11Lに描画されたグラフィクスの左眼用画像を、Lビデオプレーン13Lに描画されたビデオの左眼用画像とブレンディングして出力する。さらに、ミキサ15は、Lグラフィクスプレーン11Rに描画されたグラフィクスの右眼用画像を、Rビデオプレーン13Rに描画されたビデオの右眼用画像とブレンディングして出力する。
図6Cは、グラフィクスモードの1つのモードMode#3であるmono-logical-planeモード(以下、モノグラフィクスモードともいう)を示している。
モノグラフィクスモードでは、BD-Jアプリケーションは、グラフィクスの2D画像であるモノ画像を、論理プレーン10に描画する。
3D対応プレーヤは、論理プレーン10に描画されたモノ画像を、Lグラフィクスプレーン11L、及び、Rグラフィクスプレーン11Rのうちの一方である、例えば、Lグラフィクスプレーン11Lだけに描画する。
そして、ミキサ15は、Lグラフィクスプレーン11Lに描画されたグラフィクスのモノ画像を、Lビデオプレーン13Lに描画されたビデオの画像とブレンディングして出力する。
[オフセット値の設定と取得]
3D対応プレーヤにおいて、オフセット値は、グラフィックプレーン11と、PGプレーン12に適用することができる。
ここで、グラフィックプレーン11に適用されるオフセット値(グラフィクスの画像に、視差を与えるデータ)を、グラフィクスプレーンオフセット(Graphics plane offset)値ともいう。また、PGプレーン12に適用されるオフセット値(PGの画像に、視差を与えるデータ)を、PGプレーンオフセット(PG plane offset)値ともいう。
BDプレーヤは、BDの再生に関する情報を記憶するPSR(Player Setting Register)を有し、グラフィクスプレーンオフセット値、及び、PGプレーンオフセット値は、PSRのうちの、レガシープレーヤで予約(reserved)になっている、例えば、PSR#21に保存することができる。
ここで、PSRの実体は、図3のRAM104やハードディスク105の一部の記憶領域である。
ところで、現行のBD規格(BD-ROM規格)では、BD-Jアプリケーションからの、BDプレーヤのPSRへの書き込みが禁止されている。
3D対応プレーヤである図3のBDプレーヤに、BD-JアプリケーションからのPSRへの書き込みを許してしまうと、現行のBD規格の大規模な改定が必要となる。
そこで、3D対応プレーヤでは、General Preferenceとして、オフセット値を定義することで、間接的に、PSRへの書き込みが可能なようになっている。
すなわち、3D対応プレーヤは、BD規格のグラフィクスや、PGの画像に視差を与えるデータであるオフセット値を、BD規格のジェネラルプリファレンス(General Preference)の1つとして、BDの再生に関する情報を記憶するPSR#21に対するオフセット値の読み書きを行うジェネラルプリファレンスAPI(Application Programming Interface)を備える。
ここで、PSR#21は、BD規格part3-2 Annex Lの General Preferenceにマッピングされ、org.dvb.user. GeneralPreference APIで、値の設定、取得を行うことができる。
ジェネラルプリファレンスAPIで、PSRにアクセスするためのジェネラレルプリファレンスネーム(General Preference name)は、以下のように定義することができる。
すなわち、グラフィクスプレーンオフセット値のジェネラレルプリファレンスネームは、例えば、"graphics offset"と定義することができる。また、PGプレーンオフセット値のジェネラレルプリファレンスネームは、例えば、"subtitle offset"と定義することができる。
なお、"graphics offset" General Preference、及び、"subtitle offset" General Preferenceのデフォルト値は、例えば、いずれも0とする。
また、グラフィクスプレーンオフセット値の設定、取得には、以下のような専用のAPIを定義し、その専用のAPIによって、グラフィクスプレーンオフセット値の設定、取得を行うこともできる。
org.bluray.ui.3D
public void setOffset(int offset)
デフォルト値は、0
public int getOffset()
デフォルト値は、0
なお、setOffset()メソッドが、グラフィクスプレーンオフセット値を、PSR#21に設定するメソッドであり、getOffset()が、PSR#21に設定されているグラフィクスプレーンオフセット値を取得するメソッドである。
図7は、以上のように、BD規格のグラフィクス、及び、PGのオフセット値を、BD規格のジェネラルプリファレンスの1つとして、PSR#21に対するオフセット値の読み書きを行うジェネラルプリファレンスAPIを備える3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
図7の3D対応プレーヤにおいて、BD-Jアプリケーションは、ジェネラルプリファレンスAPI(General Preference API)に対して、オフセット値の読み書き(設定、又は取得)を要求する。
すなわち、読み書きを要求するオフセット値が、グラフィックスプレーンオフセット値である場合、BD-Jアプリケーションは、ジェネラレルプリファレンスネーム(General Preference name)を、"graphics offset"として、ジェネラルプリファレンスAPIを呼び出す。
また、読み書きを要求するオフセット値が、PGプレーンオフセット値である場合、BD-Jアプリケーションは、ジェネラレルプリファレンスネームを、"subtitle offset"として、ジェネラルプリファレンスAPIを呼び出す。
ジェネラルプリファレンスAPIは、BD-Jからの要求に応じて、PSR(Player Setting Register)のうちのPSR#21に、オフセット値を設定するか、又は、PSR#21から、オフセット値を取得し、BD-Jアプリケーションに返す。
なお、図7において、プレイバックコントロールエンジン(Playback Control Engine)は、PSR#21に設定されたオフセット値に応じて、BD-Jアプリケーションが論理プレーン10に描画した画像(元画像)から、左眼用画像と右眼用画像を生成(再生)するための制御を行う。
以上のように、General Preference APIが、BD-Jアプリケーションからの要求に応じて、BD規格のグラフィクスと、PGの画像に視差を与えるデータであるオフセット値を、BD規格のGeneral Preferenceの1つとして、BDの再生に関する情報を記憶するPSR#21に対するオフセット値の読み書きを行うことで、BD-Jアプリケーションから、画像に視差を与えるオフセット値を、間接的に、設定、取得することができる。
[コンフィグレーション]
図8は、ビデオプレーン13のコンフィグレーション(configration)の1つである、ビデオの画像を再生するビデオモードを示す図である。
図8Aは、ビデオモードの1つのモードMode#1であるdual-mono-videoモード(以下、デュアルモノビデオモードともいう)を示している。
デュアルモノビデオモードでは、3D対応プレーヤは、ビデオの2D画像であるモノ画像を、(左眼用画像として、)Lビデオプレーン13L(L領域)に描画する(記憶させる)とともに、そのモノ画像を、(右眼用画像として、)Rビデオプレーン13R(R領域)に描画する(記憶させる)。
そして、Lビデオプレーン13Lに描画(記憶)されたビデオのモノ画像、及び、Rビデオプレーン13Rに描画されたビデオのモノ画像は、いずれも、ミキサ15に供給される。
図8Bは、ビデオモードの1つのモードMode#2であるstereo-videoモード(以下、ステレオビデオモードともいう)を示している。
ステレオビデオモードでは、3D対応プレーヤは、ビデオの3D画像であるステレオ画像を構成する左眼用画像を、Lビデオプレーン13Lに描画するとともに、そのステレオ画像を構成する右眼用画像を、Rビデオプレーン13Rに描画する。
そして、Lビデオプレーン13Lに描画(記憶)されたビデオの左眼用画像、及び、Rビデオプレーン13Rに描画されたビデオの右眼用画像は、いずれも、ミキサ15に供給される。
図8Cは、ビデオモードの1つのモードMode#3であるflattened-stereo-videoモード(以下、フラットステレオビデオモードともいう)を示している。
フラットステレオビデオモードでは、3D対応プレーヤは、ビデオの3D画像であるステレオ画像を構成する左眼用画像、及び、右眼用画像のうちの一方である、例えば、左眼用画像だけを、Lビデオプレーン13L、及び、Rビデオプレーン13Rの両方に描画し、他方の右眼用画像を捨てる。
そして、Lビデオプレーン13Lに描画(記憶)されたビデオの左眼用画像が、ミキサ15に供給されるとともに、Rビデオプレーン13Rに描画されたビデオの左眼用画像が、(右眼用画像として、)ミキサ15に供給される。
図9は、バックグラウンドプレーン14のコンフィグレーション(configration)の1つである、バックグラウンドの画像を再生するバックグラウンドモードを示す図である。
図9Aは、バックグラウンドモードの1つのモードMode#1であるdual-mono-backgroundモード(以下、デュアルモノバックグラウンドモードともいう)を示している。
デュアルモノバックグラウンドモードでは、BD-Jアプリケーションは、バックグラウンドの2D画像であるモノ画像を、左眼用画像、及び、右眼用画像として、論理プレーン10に描画する。
そして、3D対応プレーヤは、論理プレーン10に描画された左眼用画像を、Lバックグラウンドプレーン14L(L領域)に描画する(記憶させる)とともに、論理プレーン10に描画された右眼用画像を、Rバックグラウンドプレーン14R(R領域)に描画する(記憶させる)。
Lバックグラウンドプレーン14Lに描画(記憶)されたバックグラウンドの左眼用画像、及び、Rバックグラウンドプレーン14Rに描画されたバックグラウンドの右眼用画像は、いずれも、ミキサ15に供給される。
図9Bは、バックグラウンドモードの1つのモードMode#2であるstereo-backgroundモード(以下、ステレオバックグラウンドモードともいう)を示している。
ステレオバックグラウンドモードでは、BD-Jアプリケーションは、バックグラウンドの3D画像であるステレオ画像を構成する左眼用画像、及び、右眼用画像を、論理プレーン10に描画する。
そして、3D対応プレーヤは、論理プレーン10に描画された左眼用画像を、Lバックグラウンドプレーン14Lに描画するとともに、論理プレーン10に描画された右眼用画像を、Rバックグラウンドプレーン14Rに描画する。
Lバックグラウンドプレーン14Lに描画されたバックグラウンドの左眼用画像、及び、Rバックグラウンドプレーン14Rに描画されたバックグラウンドの右眼用画像は、いずれも、ミキサ15に供給される。
図9Cは、バックグラウンドモードの1つのモードMode#3であるflattened-stereo-backgroundモード(以下、フラットステレオバックグラウンドモードともいう)を示している。
フラットステレオバックグラウンドモードでは、BD-Jアプリケーションは、バックグラウンドの3D画像であるステレオ画像を構成する左眼用画像、及び、右眼用画像を、論理プレーン10に描画する。
そして、3D対応プレーヤは、論理プレーン10に描画された左眼用画像、及び、右眼用画像のうちの一方である、例えば、左眼用画像だけを、Lバックグラウンドプレーン14L、及び、Rバックグラウンドプレーン14Rの両方に描画し、他方の右眼用画像を捨てる。
そして、Lバックグラウンドプレーン14Lに描画されたバックグラウンドの左眼用画像が、ミキサ15に供給されるとともに、Rバックグラウンドプレーン14Rに描画されたバックグラウンドの左眼用画像が、(右眼用画像として、)いずれも、ミキサ15に供給される。
ここで、図4に示した、グラフィクスを記憶するグラフィクスプレーン11、ビデオを記憶するビデオプレーン13(と、PGを記憶するPGプレーン12)、及び、バックグラウンドを記憶するバックグラウンドプレーン14を、まとめて、デバイスプレーンとも呼ぶこととする。
3D対応プレーヤである図3のBDプレーヤでは、デバイスプレーンのコンフィグレーションが、(1)画枠、及び、色深度、(2)ビデオモード(Video mode)、(3)グラフィクスモード(BD-J Graphics mode)、並びに、(4)バックグラウンドモード(Background mode)、の4つの属性によって表現されるように定義されている。
図10は、デバイスプレーンであるグラフィクスプレーン11、PGプレーン12、ビデオプレーン13、及び、バックグラウンドプレーン14の関係を示している。
グラフィクスプレーン11は、左眼用画像を記憶する記憶領域であるL領域としてのLグラフィクスプレーン11Lと、右眼用画像を記憶する記憶領域であるR領域としてのRグラフィクスプレーン11Rとから構成される。そして、グラフィクスプレーン11では、Lグラフィクスプレーン11Lと、Rグラフィクスプレーン11Rとが並んで配置されている。
すなわち、図10では、L領域であるLグラフィクスプレーン11Lを上側にし、かつ、R領域であるRグラフィクスプレーン11Rを下側にする形で、Lグラフィクスプレーン11L、及び、Rグラフィクスプレーン11Rを上下に並べて配置することにより、グラフィクスプレーン11が構成されている。
他のデバイスプレーン、すなわち、PGプレーン12、ビデオプレーン13、及び、バックグラウンドプレーン14も、グラフィクスプレーン11と同様に構成されている。
グラフィクスプレーン11、PGプレーン12、ビデオプレーン13、及び、バックグラウンドプレーン14に描画された画像は、手前側から、グラフィクスプレーン11、PGプレーン12、ビデオプレーン13、バックグラウンドプレーン14の順番で重ねられ(ブレンディングされ)、その結果得られるL領域の画像と、R領域の画像とが、例えば、交互に、ディスプレイの表示画面を抽象化した論理スクリーン21に描画(記憶)される。
ここで、論理スクリーン21の実体は、RAM104の一部の記憶領域である。
また、デバイスプレーンは、いずれも1面分の画像の記憶領域であるL領域とR領域とを、上下に並べた記憶領域であり、したがって、2面分の画像の記憶領域であるが、論理スクリーン21は、1面分の画像の記憶領域である。
デバイスプレーンのコンフィグレーションは、3D画像については、2面分の画像の記憶領域であるデバイスプレーン全体に対して定義される。
図11は、デバイスプレーンのコンフィグレーションの1つである(1)画枠(Resolution)、及び、色深度(color-depth)を示している。
図11において、上から5行の画枠(デバイスプレーンの横×縦の画素数)(解像度)、及び、色深度は、3D画像の画枠、及び、色深度を示しており、残りの5行(下から5行)の画枠、及び、色深度は、2D画像の画枠、及び、色深度を示している。
2D画像の1面分を、1面分の画像とすると、3D画像は、左眼用画像と右眼用画像で構成されるため、2面分の画像となる。また、デバイスプレーンは、いずれも1面分の画像の記憶領域であるL領域とR領域とを、上下に並べた記憶領域になっているため、そのようなデバイスプレーンに記憶される3D画像の画枠は、対応する2D画像(左眼用画像(、又は、右眼用画像)と同一のサイズの2D画像)の画枠の垂直方向の画素数を2倍にしたサイズになっている。
なお、現行のBD規格において、2D画像については、グラフィクスプレーン11に記憶されるグラフィクス(の画像)、及び、バックグラウンドプレーン14に記憶されるバックグラウンド(の画像)の画枠は、いずれも、ビデオプレーン13に記憶されるビデオ(の画像)の画枠と、原則、一致する。
但し、2D画像については、ビデオプレーン13に記憶されるビデオの画枠が、1920×1080画素である場合に、バックグラウンドプレーン14に記憶されるバックグラウンドの画枠は、ビデオプレーン13に記憶されるビデオの画枠と同様に、1920×1080画素であるが、グラフィクスプレーン11に記憶されるグラフィクスの画枠が、ビデオプレーン13に記憶されるビデオの画枠の横及び縦のそれぞれを1/2にした960×540画素であるケース(図11において、下から4行目)(以下、2D画像の不一致ケースともいう)がある。
この場合、グラフィクスプレーン11に記憶される960×540画素のグラフィクスは、横及び縦のそれぞれを2倍にすることで、サイズを、ビデオプレーン13に記憶されるビデオの画枠である1920×1080画素に一致させてから表示される。
3D画像についても、2D画像の不一致ケースに対応するケース(以下、3D画像の不一致ケースともいう)が存在する。
3D画像の不一致ケースでは、ビデオプレーン13に記憶されるビデオの画枠が、1920×2160画素である場合に、バックグラウンドプレーン14に記憶されるバックグラウンドの画枠が、ビデオプレーン13に記憶されるビデオの画枠と同様に、1920×2160画素であるが、グラフィクスプレーン11に記憶されるグラフィクスの画枠が、ビデオプレーン13に記憶されるビデオの画枠の横及び縦のそれぞれを1/2にした960×1080画素となる(図11において、上から3行目)。
3D画像の不一致ケースでも、960×1080画素のグラフィクスは、横及び縦のそれぞれを2倍にすることで、サイズを、ビデオプレーン13に記憶されるビデオの画枠である1920×2160画素に一致させてから表示される。
図12は、3D画像の不一致ケースにおいて、第2の描画方式(図5B)で、3D画像を描画する方法を説明する図である。
第2の描画方式では、図5Bで説明したように、3D画像を生成する元となる元画像が、論理プレーン10に描画され、その後、元画像を、オフセット(offset)値だけ水平方向にすらすことで生成される左眼用画像と右眼用画像が、グラフィクスプレーン11に描画される。
ここで、第2の描画方式は、元画像と、元画像のコピーとの2つの画像を上下に並べた縦長の画像の、上側の半分と下側の半分とのそれぞれを、オフセット値に従って水平方向にずらすことにより得られる2つの画像を、左眼用画像と右眼用画像として、グラフィクスプレーン11に描画する方式であるともいえる。
いま、第2の描画において、3D画像の不一致ケースにおける、960×1080画素のグラフィクスの、上側の半分と下側の半分とのそれぞれを、オフセット値に従って水平方向にすらすことで得られる、960×540画素の左眼用画像と右眼用画像を、グラフィクスプレーン11に描画し、その後、グラフィクスプレーン11の左眼用画像と右眼用画像の横及び縦のそれぞれを2倍にすると、その結果得られる左眼用画像と右眼用画像は、水平方向のずれ量が、オフセット値の2倍になっている画像となる。
したがって、この場合、左眼用画像と右眼用画像によって表示される3D画像の奥行き方向の位置が、オーサが意図していた位置と異なる位置となる。
そこで、3D画像の不一致ケースにおいて、第2の描画方式で、3D画像を描画する場合には、3D画像を生成する元となる元画像の横及び縦のそれぞれを2倍にした画像を、論理プレーン10に描画し、その後、論理プレーン10に描画された画像を、オフセット値だけ水平方向にすらすことで生成される左眼用画像と右眼用画像を、グラフィクスプレーン11に描画する必要がある。
このようにすることで、左眼用画像と右眼用画像によって表示される3D画像の奥行き方向の位置は、オーサが意図していた位置となる。
図13は、デバイスプレーンを説明する図である。
現行のBD規格では、論理スクリーン21としては、1面分の画像の記憶領域を想定しており、その1面分の画像の記憶領域である論理スクリーン21に、左眼用画像(Left/Left-eye)と右眼用画像(Right/Right-eye)を、交互に描画することは、想定されていない。
そして、現行のBD規格は、デバイスプレーンのコンフィグレーションと、論理スクリーン21との間に、1対1の関係があることを前提としている。この前提の下では、3D画像の処理に、論理スクリーン21として、左眼用画像を描画する論理スクリーンと、右眼用画像を描画する論理スクリーンとの、2つの別個の論理スクリーンが必要となる。
そこで、3D対応プレーヤである図3のBDプレーヤでは、解像度の定義を縦方向に2倍にすることで、L/R用のデバイス・コンフィグレーションを1面で定義する。論理スクリーン自体は従来どおりの1面とし、そこにL/R用の出力を同時に描画する描画モデルを定義する。
すなわち、図3のBDプレーヤは、BD規格のグラフィクス、ビデオ、又は、バックグラウンドの画像を記憶するデバイスプレーン(グラフィクスプレーン11、ビデオプレーン13(PGプレーン12)、及び、バックグラウンドプレーン14)を備える。
デバイスプレーンは、左眼用画像を記憶する1面分の画像の記憶領域であるL領域と、右眼用画像を記憶する1面分の画像の記憶領域であるR領域との、2面分の画像の記憶領域が並んで配置された記憶領域であり、デバイスプレーンのコンフィグレーションは、2面分の画像の記憶領域であるデバイスプレーン全体に対して定義される。
そして、デバイスプレーンに記憶された左眼用画像と右眼用画像は、例えば、交互に、論理スクリーン21に描画される。
このようにすることで、論理スクリーンとして、左眼用画像(L用の画像)を記憶する論理スクリーンと、右眼用画像(R用の画像)を記憶する論理スクリーンとを、別個に設けずに済む。
[ビデオモード、グラフィクスモード、バックグラウンドモード]
コンフィグレーションは、BD-Jオブジェクト(Object)のファイル中に、コンフィグレーションを指定するためのビットフィールドを設けて、そのビットフィールドによって指定(設定)することができる。
図14は、BD-Jオブジェクトのファイル中に、コンフィグレーションを指定するために設けるビットフィールドを示している。
BD-Jオブジェクトのファイル中には、コンフィグレーションを指定するために、initial_configuration_id,initial_graphics_mode,initial_video_mode、及び、initial_background_modeの4つのフィールドを設けることができる。
initial_configuration_idは、(1)画枠、及び、色深度を指定するフィールドである。initial_configuration_idがとる値を、configuration idとすると、configuration idとしては、以下の値を定義することとする。
HD_1920_1080 = 1
HD_1280_720 = 2
SD_720_576 = 3
SD_720_480 = 4
QHD_960_540 = 5
HD_1920_2160 = 6
HD_1280_1440 = 7
SD_720_1152 = 8
SD_720_960 = 9
QHD_960_1080 = 10
なお、HD_1920_1080は、図11の上から6行目の画枠及び色深度を、HD_1280_720は、図11の上から8行目の画枠及び色深度を、SD_720_576は、図11の上から10行目の画枠及び色深度を、SD_720_480は、図11の上から9行目の画枠及び色深度を、QHD_960_540は、図11の上から7行目の画枠及び色深度を、HD_1920_2160は、図11の上から1行目の画枠及び色深度を、HD_1280_1440は、図11の上から2行目の画枠及び色深度を、SD_720_1152は、図11の上から5行目の画枠及び色深度を、SD_720_960は、図11の上から4行目の画枠及び色深度を、QHD_960_1080は、図11の上から3行目の画枠及び色深度を、それぞれ表す。
initial_graphics_modeは、(3)グラフィクスモードを指定するフィールドである。
ここで、グラフィクスモード(BD-J Graphics mode)としては、図6で説明したオフセットグラフィクスモード(offset)、ステレオグラフィクスモード(stereo)、及び、モノグラフィクスモード(mono (Legacy playback mode))に、フラットステレオグラフィクスモード(flattened-stereo)を加えた、合計で4つのモードがある。
フラットステレオグラフィクスモードでは、グラフィクスの画像が、ステレオ画像(3D画像)である場合に、そのステレオ画像を構成する左眼用画像、及び、右眼用画像のうちの一方である、例えば、左眼用画像が、グラフィクスプレーン11のLグラフィクスプレーン11L、及び、Rグラフィクスプレーン11Rの両方に描画(記憶)される。
グラフィクスモードを指定するinitial_graphics_modeとしては、以下の値を定義することとする。
GRAPHICS_MONO_VIEW = 21
GRAPHICS_STEREO_VIEW = 22
GRAPHICS_PLANE_OFFSET = 23
GRAPHICS_DUAL_MONO_VIEW = 24
なお、GRAPHICS_MONO_VIEWは、モノブラフィクスモードを、GRAPHICS_STEREO_VIEWは、ステレオグラフィクスモードを、GRAPHICS_PLANE_OFFSETは、オフセットグラフィクスモードを、GRAPHICS_DUAL_MONO_VIEWは、フラットステレオグラフィクスモードを、それぞれ表す。
また、initial_configuration_idが、1,2,3,4,5のいずれかに設定されている場合、initial_graphics_modeは、無視される。
initial_video_modeは、(2)ビデオモードを指定するフィールドである。
ここで、ビデオモード(Video mode)としては、図8で説明したデュアルモノビデオモード(dual-mono)、ステレオビデオモード(stereo)、及び、フラットステレオビデオモード(flattened-stereo)に、モノビデオモード(mono (Legacy playback mode))を加えた、合計で4つのモードがある。
モノビデオモードでは、ビデオの画像が、2D画像であるモノ画像である場合に、そのモノ画像が、ビデオプレーン13のLビデオプレーン13L、及び、Rビデオプレーン13Rのうちの一方である、例えば、Lビデオプレーン13Lに描画される。
ビデオモードを指定するinitial_video_modeとしては、以下の値を定義することとする。
VIDEO_MONO_VIEW = 25
VIDEO_STEREO_VIEW = 26
VIDEO_FLATTENED_STEREO_VIEW = 27
VIDEO_DUAL_MONO_VIEW = 28
なお、VIDEO_MONO_VIEWは、モノビデオモードを、VIDEO_STEREO_VIEWは、ステレオビデオモードを、VIDEO_FLATTENED_STEREO_VIEWは、フラットステレオビデオモードを、VIDEO_DUAL_MONO_VIEWは、デュアルモノビデオモードを、それぞれ表す。
また、initial_configuration_idが、1,2,3,4,5のいずれかに設定されている場合、initial_video_modeは、無視される。
initial_background_modeは、(4)バックグラウンドモードを指定するフィールドである。
ここで、バックグラウンドモード(Background mode)としては、図9で説明したデュアルモノバックグラウンドモード(dual-mono)、ステレオバックグラウンドモード(stereo)、及び、フラットステレオバックグラウンドモード(flattened-stereo)に、モノバックグラウンドモード(mono (Legacy playback mode))を加えた、合計で4つのモードがある。
モノバックグラウンドモードでは、バックグラウンドの画像が、2D画像であるモノ画像である場合に、そのモノ画像が、バックグラウンドプレーン14のLバックグラウンドプレーン14L、及び、Rバックグラウンドプレーン14Rのうちの一方である、例えば、Lバックグラウンドプレーン14Lに描画される。
バックグラウンドモードを指定するinitial_background_modeとしては、以下の値を定義することとする。
BACKGROUND_MONO_VIEW = 17
BACKGROUND_STEREO_VIEW = 18
BACKGROUND_FLATTENED_STEREO_VIEW = 19
BACKGROUND_DUAL_MONO_VIEW = 20
なお、BACKGROUND_MONO_VIEWは、モノバックグラウンドモードを、BACKGROUND_STEREO_VIEWは、ステレオバックグラウンドモードを、BACKGROUND_FLATTENED_STEREO_VIEWは、フラットステレオバックグラウンドモードを、BACKGROUND_DUAL_MONO_VIEWは、デュアルモノバックグラウンドモードを、それぞれ表す。
また、initial_configuration_idが、1,2,3,4,5のいずれかに設定されている場合、initial_background_modeは、無視される。
ここで、BD-J Object ファイルでは、initial_configuration_id,initial_graphics_mode,initial_video_mode、及び、initial_background_modeのうちの、initial_configuration_idのみを指定する仕様を採用することができる。
BD-J Object ファイルにおいて、initial_configuration_idのみを指定する場合、initial_video_mode,initial_graphics_mode、及び、initial_background_modeのデフォルトの規定値が必要となる。
図15は、initial_video_mode,initial_graphics_mode、及び、initial_background_modeのデフォルトの規定値を示している。
なお、ビデオモード(initial_video_mode)のSTEREO_VIEWは、上述のVIDEO_STEREO_VIEW 、又は、VIDEO_FLATTENED_STEREO_VIEWを表し、MONO_VIEWは、上述のVIDEO_MONO_VIEW、又は、VIDEO_DUAL_MONO_VIEWを表す。
また、グラフィクスモード(initial_graphics_mode)のSTEREO_VIEWは、上述のGRAPHICS_STEREO_VIEW、又は、GRAPHICS_PLANE_OFFSETを表し、MONO_VIEWは、上述のGRAPHICS_MONO_VIEW、又は、GRAPHICS_DUAL_MONO_VIEWを表す。
さらに、バックグラウンドモード(initial_background_mode)のSTEREO_VIEWは、上述のBACKGROUND_STEREO_VIEW、又は、BACKGROUND_FLATTENED_STEREO_VIEWを表し、MONO_VIEWは、上述のBACKGROUND_MONO_VIEW、又は、BACKGROUND_DUAL_MONO_VIEWを表す。
[コンフィグレーションの変更]
次に、コンフィグレーションの変更について説明する。
コンフィグレーションは、BD-Jタイトル起動時、PlayList再生時のオートリセットが行われるとき(動的変更)、及び、BD-JアプリケーションによるAPIの呼び出しが行われるとき(動的変更)のそれぞれのタイミングで、変更することができる。
従来のmono video + mono graphicsの再生時とは異なり、AV再生中であってもplane configurationの変更は可能である。
すなわち、3D対応プレーヤでは、AVストリーム(ビデオ)を再生しているときに、コンフィグレーションを変更することができる。
Mono-viewと同様にKEEP_RESOLUTION再生以外の再生では、画枠が揃うように(BD-Jタイトル起動時は、video/backgroundがgraphicsの画枠に揃うように、PlayList再生時は、graphics/backgroundがvideoの画枠に揃うように、BD-JアプリケーションによるAPI呼び出し時は、APIで設定したプレーンの画枠に、それ以外の設定されていないプレーンの画枠が揃うように)、コンフィグレーションの変更の処理を、3D対応プレーヤが行う。また、コンフィグレーションの変更時のエラー処理は、3D対応プレーヤに依存する。
ここで、KEEP_RESOLUTION再生とは、SD(Standard definition)ビデオとHD(High Definition)グラフィックス、HDバックグラウンドの合成をする再生モードであり、1920×1080画素のGraphics、720×480画素のVideo+PG、及び、1920×1080画素のBackgroundが合成される場合と、1920×1080画素のGraphics、720×576画素のVideo+PG、及び、1920×1080画素のBackgroundが合成される場合とがある。なお、HD画像ではあるが、1280×720画素の画像の再生は、KEEP_RESOLUTION再生には含まれない。
図16及び図17に、KEEP_RESOLUTION再生以外の再生の、Video+PG,BD-J graphics、及び、backgroundの解像度(画枠)の組み合わせを示す。なお、図17は、図16に続く図である。
図18は、コンフィグレーションの変更の処理の例を示している。
図18Aは、グラフィクス(グラフィクスプレーン11)のコンフィグレーション(ビデオモード)が、STEREO_VIEWからMONO_VIEWに変更された場合の、3D対応プレーヤの処理の例を示している。
例えば、3D対応プレーヤにおいて、ビデオモードが、STEREO_VIEWであり、1920×2160画素のグラフィクスプレーン11を構成するLグラフィクスプレーン11L、及び、Rグラフィクスプレーン11Rに、グラフィクスが描画されている場合に、グラフィクスプレーン11(としての記憶領域)をリセットすることなしに、ビデオモードが、STEREO_VIEWから、MONO_VIEWに変更されたとする。
この場合、3D対応プレーヤでは、グラフィクスプレーン11を構成するLグラフィクスプレーン11L、及び、Rグラフィクスプレーン11Rのうちの一方である、例えば、Lグラフィクスプレーン11Lに記憶(描画)された画像だけが、論理スクリーン21に供給されて表示され、他方であるRグラフィクスプレーン11Rに記憶された画像は、捨てられる。
なお、この場合、3D対応プレーヤは、エラーとして(画像の再生を)強制終了しても良い。
図18Bは、ビデオモードが、MONO_VIEWからSTEREO_VIEWに変更された場合の、3D対応プレーヤの処理の例を示している。
例えば、3D対応プレーヤにおいて、ビデオモードが、MONO_VIEWであり、1920×1080画素のグラフィクスプレーン11を構成するLグラフィクスプレーン11Lだけに、グラフィクスが描画されている場合に、グラフィクスプレーン11をリセットすることなしに、ビデオモードが、MONO_VIEWから、STEREO_VIEWに変更されたとする。
この場合、3D対応プレーヤでは、Lグラフィクスプレーン11Lに描画されたグラフィクスが、Rグラフィクスプレーン11Rにコピーされ、Lグラフィクスプレーン11Lに描画されたグラフィクスが、左眼用画像として、論理スクリーン21に供給されるとともに、Rグラフィクスプレーン11Rにコピーされたグラフィクスが、右眼用画像として、論理スクリーン21に供給される。
なお、この場合、3D対応プレーヤは、エラーとして(画像の再生を)強制終了しても良い。
[BD-Jタイトル起動時のコンフィグレーションの変更]
BD-Jタイトル起動時のコンフィグレーションの変更には、以下の3つのルール#1-1,#1-2、及び、#1-3が、原則として適用される。
すなわち、ルール#1-1は、(デバイスプレーンの)コンフィグレーションにおいて、Graphics,Video、及び、Backgroundの3つの画像の解像度(画枠)は、常に、同一の解像度でなければならない、というルールである。
ルール#1-2は、KEEP_RSOLUTION再生以外でPlayList再生を行う場合は、コンフィグレーションにおいて、Graphics,Video、及び、Backgroundの3つの画像の解像度(画枠)は、ビデオの解像度に揃っていなければならない、というルールである。
ルール#1-3は、コンフィグレーションにおいて、グラフィクスが、QHD graphicsである場合、縦方向に2倍、横方向に2倍でスケーリングされた後の解像度をコンフィグレーションの解像度とする、というルールである。
なお、BD-Jオブジェクトのファイルのinitial_configuration_idによりデフォルト値の規定にしたがって、video mode, graphics mode, background modeそれぞれの値が決定される(ビデオモード、グラフィクスモード、及び、バックグラウンドモードが決定される)。
また、BD-Jオブジェクトのファイルのautostart_first_PlayList_flagが1bに設定されていた場合、video plane のコンフィグレーションについては、デフォルト値ではなく、PlayList再生時のオートリセット(動的変更)のルールにしたがう。
[PlayList再生時のオートリセットが行われるときのコンフィグレーションの変更(動的変更)]
PlayList再生時のオートリセットが行われるときのコンフィグレーションの変更には、以下の3つのルール#2-1,#2-2、及び、#2-3が、原則として適用される。
すなわち、ルール#2-1は、(デバイスプレーンの)コンフィグレーションにおいて、Graphics,Video、及び、Backgroundの3つの画像の解像度(画枠)は、常に、同一の解像度でなければならない、というルールである。
ルール#2-2は、KEEP_RSOLUTION再生以外でPlayList再生を行う場合は、コンフィグレーションにおいて、Graphics,Video、及び、Backgroundの3つの画像の解像度(画枠)は、ビデオの解像度に揃っていなければならない、というルールである。
ルール#2-3は、コンフィグレーションにおいて、グラフィクスが、QHD graphicsである場合、縦方向に2倍、横方向に2倍でスケーリングされた後の解像度をコンフィグレーションの解像度とする、というルールである。
PlayList再生開始時にvideo plane configurationは、PlayListのビデオ属性に自動的に揃えられる。
コンフィグレーションが、PlayListのビデオ属性に自動的に揃えられる場合、現行のBD規格では、graphics plane及びbackground planeも、自動的にvideo planeの属性に揃えることがBDプレーヤ側の必須機能として規定されている。しかしながら、3D対応プレーヤでは、stereo PlayList(3D画像を再生するプレイリスト)からmono PlayList(2D画像を再生するプレイリスト)、又は、mono PlayListからstereo PlayListへの切り替え時においては、graphics及びbackgroundのmode(グラフィクスモード、及び、バックグラウンドモード)は、所定のinitial values(所定の初期値)に設定される。
図19に、グラフィクスモード、及び、バックグラウンドモードの所定の初期値を示す。
図20は、1920×2160画素の3D画像(ステレオ画像)を再生する場合に再生されるグラフィクス、及び、バックグラウンドの画像を示している。
グラフィクスとしては、1920×2160画素の3D画像が再生され、バックグラウンドとしては、1920×2160画素の3D画像が再生される。
[BD-JアプリケーションによるAPIの呼び出しが行われるときのコンフィグレーションの変更(動的変更)]
BD-JアプリケーションによるAPIの呼び出しが行われるときのコンフィグレーションの変更には、以下の3つのルール#3-1,#3-2、及び、#3-3が、原則として適用される。
すなわち、ルール#3-1は、(デバイスプレーンの)コンフィグレーションにおいて、Graphics,Video、及び、Backgroundの3つの画像の解像度(画枠)は、常に、同一の解像度でなければならない、というルールである。
ルール#3-2は、KEEP_RSOLUTION再生以外でPlayList再生を行う場合は、コンフィグレーションにおいて、Graphics,Video、及び、Backgroundの3つの画像の解像度(画枠)は、ビデオの解像度に揃っていなければならない、というルールである。
ルール#3-3は、コンフィグレーションにおいて、グラフィクスが、QHD graphicsである場合、縦方向に2倍、横方向に2倍でスケーリングされた後の解像度をコンフィグレーションの解像度とする、というルールである。
図21は、BD-JアプリケーションによるAPIの呼び出しによる、コンフィグレーションとしての解像度(画枠)の変更を説明する図である。
グラフィクスの3D画像(stero G)、ビデオの3D画像(stero V)、及び、バックグラウンドの3D画像(stero B)の再生中に、APIの呼び出しによって、グラフィクスの3D画像の解像度が変更された場合、3D対応BDプレーヤは、ビデオの3D画像、及び、バックグラウンドの3D画像の解像度を、上述のルール#3-1,#3-2、及び、#3-3に従って、自動的に変更する。
また、グラフィクスの3D画像(stero G)、ビデオの3D画像(stero V)、及び、バックグラウンドの3D画像(stero B)の再生中に、APIの呼び出しによって、バックグラウンドの3D画像の解像度が変更された場合、3D対応BDプレーヤは、グラフィクスの3D画像、及び、ビデオの3D画像の解像度を、上述のルール#3-1,#3-2、及び、#3-3に従って、自動的に変更する。
さらに、グラフィクスの3D画像(stero G)、ビデオの3D画像(stero V)、及び、バックグラウンドの3D画像(stero B)の再生中に、APIの呼び出しによって、ビデオの3D画像の解像度が変更された場合、3D対応BDプレーヤは、グラフィクスの3D画像、及び、バックグラウンドの3D画像の解像度を、上述のルール#3-1,#3-2、及び、#3-3に従って、自動的に変更する。
[plane configuration のmode の変更(グラフィクスモード、ビデオモード、及び、バックグラウンドモードの変更)]
3D対応プレーヤは、ステレオグラフィクスモード(stereo graphics)と、オフセットグラフィクスモード(offset graphics)との間のグラフィクスモードの変更(切り替え)を、シームレスに行うことができる。
図22は、グラフィクスモードの変更を説明する図である。
図22Aは、オフセットグラフィクスモードでのグラフィクスの3D画像(plane offset gfx(graphics))、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの3D画像(stereo background)の再生中に、グラフィクスモードが、オフセットグラフィクスモードから、ステレオグラフィクスモードに変更された場合を示している。
この場合、オフセットグラフィクスモードでのグラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの3D画像(stereo background)の再生から、ステレオグラフィクスモードでのグラフィクスの3D画像(stereo gfx(graphics))、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの3D画像(stereo background)の再生に切り替えが行われるが、この切り替えは、シームレスに行うことができる。
逆の切り替え、すなわち、ステレオグラフィクスモードでのグラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの3D画像(stereo background)の再生から、オフセットグラフィクスモードでのグラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの3D画像(stereo background)の再生への切り替えも、シームレスに行うことができる。
図22Bは、ステレオグラフィクスモードでのグラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの2D画像(mono background)の再生中に、グラフィクスモードが、ステレオグラフィクスモードから、オフセットグラフィクスモードに変更された場合を示している。
この場合、ステレオグラフィクスモードでのグラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの2D画像(mono background)の再生から、オフセットグラフィクスモードでのグラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの2D画像(mono background)の再生に切り替えが行われるが、この切り替えは、シームレスに行うことができる。
逆の切り替え、すなわち、オフセットグラフィクスモードでのグラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの2D画像(mono background)の再生から、ステレオグラフィクスモードでのグラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、バックグラウンドの2D画像(mono background)の再生への切り替えも、シームレスに行うことができる。
図23は、ステレオグラフィクスモードから、オフセットグラフィクスモードへのグラフィクスモードの変更を示している。
グラフィクスモードが、ステレオグラフィクスモード(stereo gfx)から、オフセットグラフィクスモード(Plane offset gfx)に変更された場合、ビデオ(L/R(Left/Right) video)、及び、バックグラウンド(L/R(Left/Right) background)の再生は、そのまま続行される。
一方、グラフィクスについては、ステレオグラフィクスモードでのグラフィクスの3D画像(stereo gfx)から、オフセットグラフィクスモードでのグラフィクスの3D画像(plane offset gfx)に、再生の対象が切り替えられる。
この再生対象の切り替え方の実装は、個々の3D対応プレーヤに依存する。但し、再生対象の切り替え時に、いわゆるブラックアウト(black-out)や、AV(ビデオ)の再生の中断が生じることは避けるべきである。
なお、グラフィクスモードの変更時に、解像度も変更される場合には、ブラックアウトが生じるおそれがある。
次に、3D対応プレーヤは、ステレオバックグラウンドモード(stereo background)と、モノバックグラウンドモード(mono background)との間のバックグラウンドモードの変更(切り替え)を、シームレスに行うことができる。
図24は、バックグラウンドモードの変更を説明する図である。
図24Aは、グラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、ステレオバックグラウンドモードでのバックグラウンドの3D画像(stereo background)の再生中に、バックグラウンドモードが、ステレオバックグラウンドモードから、モノバックグラウンドモードに変更された場合を示している。
この場合、グラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、ステレオバックグラウンドモードでのバックグラウンドの3D画像(stereo background)の再生から、グラフィクスの3D画像(stereo gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、モノバックグラウンドモードでのバックグラウンドの2D画像(mono background)の再生に切り替えが行われるが、この切り替えは、シームレスに行うことができる。
逆の切り替えも、シームレスに行うことができる。
図24Bは、グラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、モノバックグラウンドモードでのバックグラウンドの2D画像(mono background)の再生中に、バックグラウンドモードが、モノバックグラウンドモードから、ステレオバックグラウンドモードに変更された場合を示している。
この場合、グラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、モノバックグラウンドモードでのバックグラウンドの2D画像(mono background)の再生から、グラフィクスの3D画像(plane offset gfx)、ビデオ(及びPG)の3D画像(stereo video + PG)、ステレオバックグラウンドモードでのバックグラウンドの3D画像(stereo background)の再生に切り替えが行われるが、この切り替えは、シームレスに行うことができる。
逆の切り替えも、シームレスに行うことができる。
次に、3D対応プレーヤは、ステレオビデオモード(stereo video)、フラットステレオビデオモード(flattened-stereo video)、及び、デュアルモノビデオモード(dual-mono video)の間のビデオモードの変更(切り替え)を、シームレスに行うことができる。
図25は、ビデオモードの変更を説明する図である。
図25Aは、グラフィクスの3D画像(stereo gfx)、及び、バックグラウンドの3D画像(stereo background)とともに、ビデオの画像が再生されている場合の、ビデオモードの変更を説明する図である。
ビデオモードが、ステレオビデオモードであり、ステレオビデオモードでのビデオ(及びPG)の3D画像(stereo video + PG)が再生されている場合において、ビデオモードが、ステレオビデオモードから、フラットステレオビデオモードに変更されたとき、ビデオの画像は、ステレオビデオモードでのビデオ(及びPG)の3D画像(stereo video + PG)から、フラットステレオビデオモードでのビデオ(及びPG)の3D画像(flattened video + PG)に切り替えがされるが、この切り替えは、シームレスに行うことができる。
逆の切り替えも、シームレスに行うことができる。
また、ビデオモードが、フラットステレオビデオモードであり、フラットステレオビデオモードでのビデオ(及びPG)の3D画像(flattened video + PG)が再生されている場合において、ビデオモードが、フラットステレオビデオモードから、デュアルモノビデオモードに変更されたとき、ビデオの画像は、フラットステレオビデオモードでのビデオ(及びPG)の3D画像(flattened video + PG)から、デュアルモノビデオモードでのビデオ(及びPG)の3D画像(dual-mono video + PG)に切り替えがされるが、この切り替えは、シームレスに行うことができる。
逆の切り替えも、シームレスに行うことができる。
図25Bは、グラフィクスの3D画像(plane offset gfx)、及び、バックグラウンドの2D画像(mono background)とともに、ビデオの画像が再生されている場合の、ビデオモードの変更を説明する図である。
ビデオモードが、デュアルモノビデオモードであり、デュアルモノビデオモードでのビデオ(及びPG)の3D画像(dual-mono video + PG)が再生されている場合において、ビデオモードが、デュアルモノビデオモードから、フラットステレオビデオモードに変更されたとき、ビデオの画像は、デュアルビデオモードでのビデオ(及びPG)の3D画像(dual-mono video + PG)から、フラットステレオビデオモードでのビデオ(及びPG)の3D画像(flattened video + PG)に切り替えがされるが、この切り替えは、シームレスに行うことができる。
逆の切り替えも、シームレスに行うことができる。
また、ビデオモードが、フラットステレオビデオモードであり、フラットステレオビデオモードでのビデオ(及びPG)の3D画像(flattened video + PG)が再生されている場合において、ビデオモードが、フラットステレオビデオモードから、ステレオビデオモードに変更されたとき、ビデオの画像は、フラットステレオビデオモードでのビデオ(及びPG)の3D画像(flattened video + PG)から、ステレオビデオモードでのビデオ(及びPG)の3D画像(stereo video + PG)に切り替えがされるが、この切り替えは、シームレスに行うことができる。
逆の切り替えも、シームレスに行うことができる。
[コンフィグレーションを変更する3D対応プレーヤ]
現行のBD規格では、コンフィグレーションが、解像度(画枠)、及び、色深度で規定されている。このため、コンフィグレーションの変更は、解像度を変更することになる。しかしながら、解像度の変更時には、一時的に、再生が停止し、表示画面がブラックアウトの状態になる。
一方、例えば、Graphics planeのmono-logical-plane + offset valueの再生モードなどを、1920×1080/32bppのコンフィグレーションとして規定することができるが、この場合、例えば、mono-logical-plane + offset valueからstereo-logical-planeへのスイッチングなどでブラックアウトを誘発してしまう可能性がある。
そこで、3D対応プレーヤでは、plane configurationを2面定義(1920×2160画素、1280×1440画素、(960×1080画素、)720×960画素、720×1152画素のconfiguration)に統一し、解像度/色深度以外の属性をmode値として定義する。すると、解像度を変更せずにmodeのみを変更する場合は、表示画面をブラックアウトの状態とすることなく、コンフィグレーションを変更することが可能となる。さらに、レガシープレーヤと同様に、Configuration Preference設定APIを呼び出すことにより、コンフィグレーションの変更を行うことができる。
図26は、そのような3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
図26の3D対応プレーヤでは、左眼用画像を記憶する1面分の画像の記憶領域であるL領域と、右眼用画像を記憶する1面分の画像の記憶領域であるR領域との、2面分の画像の記憶領域が並んで配置された記憶領域であるデバイスプレーンのコンフィグレーションが、そのデバイスプレーン全体に対して定義されている。
また、グラフィクスモードとして、モノグラフィクスモード、ステレオグラフィクスモード、オフセットグラフィクスモード、及び、フラットステレオグラフィクスモードの4つのモードが定義されている。さらに、ビデオモードとして、モノビデオモード、デュアルモノビデオモード、ステレオビデオモード、及び、フラットステレオビデオモードの4つのモードが定義されている。そして、バックグラウンドモードとして、モノバックグラウンドモード、デュアルモノバックグラウンドモード、ステレオバックグラウンドモード、及び、フラットステレオバックグラウンドモードの4つのモードが定義されている。
また、デバイスプレーンのコンフィグレーションは、(1)画枠(解像度)、及び、色深度の他、(2)ビデオモード、(3)グラフィクスモード、並びに、(4)バックグラウンドモードを含み、(2)ビデオモード、(3)グラフィクスモード、及び、(4)バックグラウンドモードの設定(変更)は、コンフィグレーションモード設定APIによって行うことができる。
図26の3D対応プレーヤでは、ビデオモード、グラフィクスモード、又は、バックグラウンドモードを変更する場合、BD-Jアプリケーションは、コンフィグレーションモード(configuration mode)設定APIを呼び出し、ビデオモード、グラフィクスモード、又は、バックグラウンドモードの変更(設定)を要求する。
コンフィグレーションモード設定APIは、BD-Jアプリケーションからの要求に応じて、プレゼンテーションエンジン(Presentaiton Engine)、ビデオデコーダ(video decoder)、ディスプレイプロセッサ(Display processor)のうちの必要なものを、直接的に、又は間接的に制御することで、ビデオモード、グラフィクスモード、又は、バックグラウンドモードを変更(設定)する。
一方、画枠(解像度)、及び、色深度を変更する場合、BD-Jアプリケーションは、解像度設定APIを呼び出し、解像度等の変更(設定)を要求する。
解像度設定APIは、BD-Jアプリケーションからの要求に応じて、プレゼンテーションエンジン、ビデオデコーダ、ディスプレイプロセッサのうちの必要なものを、直接的に、又は間接的に制御することで、画枠(解像度)、及び、色深度を変更(設定)する。
なお、図26において、プレゼンテーションエンジン(Presentaiton Engine)は、オーディオ、ビデオ、及び、HDMVグラフィクスのデコード機能とプレゼンテーション機能(Presentation functions)を、BDの再生を制御する、図示せぬプレイバックコントロールエンジン(Playback Control Engine)に提供する。
また、図26において、ビデオデコーダ(Video decoder)は、画像のデコードを行う。さらに、ディスプレイプロセッサ(Display processor)は、Graphics plane, video(video + PG) plane, background planeの各プレーンを重ね合わせた後で、その重ね合わせによって得られる画像を、BDプレーヤに接続されたディスプレイに出力するハードウェアである。
以上のように、デバイスプレーンのコンフィグレーションを、2面分の画像の記憶領域であるデバイスプレーン全体に対して定義し、デバイスプレーンのコンフィグレーションに、解像度(画枠)、及び、色深度とは別に、グラフィクスモード等を含める。そして、3D対応プレーヤでは、コンフィグレーションモード設定APIの呼び出しによって、グラフィクスモード等を設定する。このようにすることで、解像度を変更しないで、グラフィクスモード等を変更することができる。
[PG / Text subtitleコンフィグレーションの切り替え]
BD-Jアプリケーションからは、Video+PG/TextST(Text subtitle)は、ひとまとめで(区別なく)扱われる。また、BD-Jアプリケーションは、PGプレーン12を個別に制御することはできないが、ビデオの位置やスケーリングの制御を行うことができる。なお、現行のBD規格では、BD-Jアプリケーションから、ビデオの位置やスケーリングの制御を行った場合、PG/TextSTは、ビデオにアラインすることになっている。
一方、3D対応プレーヤでは、PG(TextSTを含む)について、PGを再生する再生モードとして、2D画像であるモノ画像のPGの画像を再生するモード(1-plane(legacy playback))、3D画像であるステレオ画像のPGの画像を再生するモード(2-planes)、及び、2D画像とオフセット値とから生成される(視差がある)左眼用画像と右眼用画像とによって、3D画像のPGを再生するモード(1-plane+offset)を設定することできることが望ましい。
そこで、3D対応プレーヤでは、PGストリームの選択にて、PGプレーン制御(1-plane(legacy playback)と1-plane+offset と2-planesとの間のコンフィグレーションの切り替え)を、間接的に行う。
そのため、HDMV PGについては、BD規格のPGの画像のPGストリームとして、2D画像であるモノ画像のPGの画像のPGストリームであるモノPGストリーム、3D画像であるステレオ画像のPGの画像のPGストリームであるステレオPGストリーム、及び、モノ画像に視差を与えるオフセット値とともに、ステレオ画像を生成するのに用いられる、モノ画像のPGの画像のPGストリームであるオフセット用PGストリーム(例えば、モノ画像のPGの画像とオフセット値とを含むストリーム)を定義する。
さらに、HDMV PGについては、mono 1-stream(legacy content)モード、L/R 2 streamモード、及び、1-stream + plane-offsetモードを、PGの画像を再生するPG再生モードとして定義する。
ここで、PG再生モードが、mono 1-streamモードである場合には、モノPGストリームを用いて、2D画像のPGの画像が再生される。
PG再生モードが、L/R 2 streamモードである場合には、ステレオPGストリームを用いて、左眼用画像と右眼用画像を再生することで、3D画像のPGの画像が再生される。
PG再生モードが、1-stream + plane-offsetモードである場合には、オフセット用PGストリームを用いて、オフセット値に基づき、左眼用画像と右眼用画像を生成し、その左眼用画像と右眼用画像を再生することで、3D画像のPGの画像が再生される。
また、HDMV TextSTについては、BD規格のTextSTの画像のTextSTストリームとして、2D画像であるモノ画像のTextSTの画像のTextSTストリームであるモノTextSTストリーム、及び、モノ画像に視差を与えるオフセット値とともに、ステレオ画像を生成するのに用いられる、モノ画像のTextSTの画像のTextSTストリームであるオフセット用TextSTストリーム(例えば、モノ画像のTextSTの画像とオフセット値とを含むストリーム)を定義する。
さらに、HDMV TextSTについては、mono 1-stream(legacy content)モード、及び、1-stream + plane-offsetモードを、TextSTの画像を再生するTextST再生モードとして定義する。
ここで、TextST再生モードが、mono 1-streamモードである場合には、モノTextSTストリームを用いて、2D画像のTextSTの画像が再生される。
TextST再生モードが、1-stream + plane-offsetモードである場合には、オフセット用TextSTストリームを用いて、オフセット値に基づき、左眼用画像と右眼用画像を生成し、その左眼用画像と右眼用画像を再生することで、3D画像のTextSTの画像が再生される。
3D対応プレーヤでは、ストリームを選択するAPIを通して、PG/Text subtitleのコンフィグレーションを切り替える(設定する)ことができる。
図27は、各ビデオモードで選択することができるPG再生モード、及び、TextST再生モードを示している。
HDMV PGについては、ビデオモード(コンフィグレーション)が、モノビデオモード(mono)、フラットステレオビデオモード(flattened stereo)、デュアルモノビデオモード(dual-mono)、及び、ステレオビデオモード(stereo)のいずれの場合であっても、1-stream + plane-offsetモード(mono + offset)を選択することが可能である。
したがって、オフセット用PGストリームは、ビデオモードが、モノビデオモード、フラットステレオビデオモード、デュアルモノビデオモード、及び、ステレオビデオモードのいずれの場合であっても選択することが可能である。
また、HDMV PGについては、ビデオモードが、フラットステレオビデオモード(flattened stereo)、デュアルモノビデオモード(dual-mono)、及び、ステレオビデオモード(stereo)のうちのいずれかの場合に、L/R 2 streamモード(stereo)を選択することが可能である。
したがって、ステレオPGストリームは、ビデオモードが、フラットステレオビデオモード、デュアルモノビデオモード、及び、ステレオビデオモードのうちのいずれかの場合に選択することが可能である。
但し、ビデオモードが、モノビデオモード(mono)、フラットステレオビデオモード(flattened stereo)、又は、デュアルモノビデオモード(dual-mono)の場合に、オフセット用PGストリーム(mono + offset)が選択されたとき、オフセット用PGストリームのモノ画像が、オフセット値を無視して、再生される。
また、ビデオモードが、フラットステレオビデオモード(flattened stereo)、又は、デュアルモノビデオモード(dual-mono)の場合に、ステレオPGストリーム(stereo)が選択されたとき、ステレオPGストリームに対応するステレオ画像を構成する左眼用画像、及び、右眼用画像のうちの一方である、例えば、左眼用画像(L PG stream)だけが再生される。
一方、HDMV TextSTについては、ビデオモード(コンフィグレーション)が、モノビデオモード(mono)、フラットステレオビデオモード(flattened stereo)、及び、デュアルモノビデオモード(dual-mono)のうちのいずれかである場合に、1-stream + plane-offsetモード(mono + offset)を選択することが可能である。
したがって、オフセット用TextSTストリームは、ビデオモードが、モノビデオモード、フラットステレオビデオモード、及び、デュアルモノビデオモードのうちのいずれかの場合に選択することが可能である。
但し、ビデオモードが、モノビデオモード(mono)、フラットステレオビデオモード(flattened stereo)、又は、デュアルモノビデオモード(dual-mono)の場合に、オフセット用TextSTストリーム(mono + offset)が選択されたとき、オフセット用TextSTストリームのモノ画像が、オフセット値を無視して、再生される。
図28は、以上のような、PGやTextSTの画像の再生を行う3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
図28において、3D対応プレーヤは、BD-Jアプリケーション、PG/TextSTストリーム選択API、ビデオ制御API、PG選択エンジン(Playback Control Function)、TextST選択エンジン(Playback Control Function)、ビデオ制御エンジン(Playback Control Function)、プレイバックコントロールエンジン(Playback Control Engine)、及び、プレゼンテーションエンジン(Presentation Engine)等から構成される。
図29を参照し、PGについての処理を例に、図28の3D対応プレーヤの処理を説明する。
BD-Jアプリケーションは、PG/TextSTストリーム選択APIを呼び出し、PGストリームの選択を要求する。PG/TextSTストリーム選択APIは、ビデオモードに応じて、BD-Jアプリケーションから要求されたPGストリームを選択する。
すなわち、PG/TextSTストリーム選択APIは、図27で説明したように、現在のビデオモードに対して、BD-Jアプリケーションから要求されたPGストリームを選択することが可能であれば、そのPGストリームを選択するように、PG選択エンジンを制御する。
PG選択エンジンは、BDであるディスク100(図3)に記録されたPGストリームの中から、PG/TextSTストリーム選択APIの制御に従ったPGストリームを選択し、図28には図示していないステレオPGデコーダ(stereo PG decoder)、又は、モノPGデコーダ(mono PG decoder)に供給する。
ここで、PG選択エンジンが選択したPGストリームが、ステレオPGストリームである場合、そのステレオPGストリームは、ステレオPGデコーダに供給される。
また、PG選択エンジンが選択したPGストリームが、オフセット用PGストリームである場合、そのオフセット用PGストリームは、モノPGデコーダに供給される。
ステレオPGデコーダは、PG選択エンジンから供給されるPGストリームを、ステレオ画像を構成する左眼用画像と右眼用画像とにデコードし、論理プレーン10に描画する。
論理プレーンに描画された左眼用画像と右眼用画像は、そのまま、PGプレーン12のL-PGプレーン12LとR-PGプレーン12Rに、それぞれ描画される。
一方、モノPGデコーダは、PG選択エンジンから供給されるオフセット用PGストリームを、モノ画像にデコードし、論理プレーン10に描画する。
3D対応プレーヤでは、論理プレーン10に描画されたモノ画像から、オフセット値(例えば、オフセット用PGストリームに含まれるオフセット値や、PSR#21に記憶されたオフセット値)を用いて、左眼用画像と右眼用画像が生成される。そして、その左眼用画像と右眼用画像は、PGプレーン12のL-PGプレーン12LとR-PGプレーン12Rに、それぞれ描画される。
なお、3D対応BDプレーヤでは、図27で説明したように、現在のビデオモードと、PG選択エンジンが選択したPGストリーム(PG再生モード)との組み合わせによっては、ステレオPGストリームに対応するステレオ画像を構成する左眼用画像、及び、右眼用画像のうちの一方である、例えば、左眼用画像だけが再生されるか、又は、オフセット値が無視され、オフセット用PGストリームに対応するモノ画像だけが再生されることがある。
以上のように、3D対応プレーヤでは、BD規格のPGの画像のPGストリームとして、2D画像であるモノ画像のPGの画像のPGストリームであるモノPGストリームと、3D画像であるステレオ画像のPGの画像のPGストリームであるステレオPGストリームと、モノ画像に視差を与えるデータであるオフセット値とともに、ステレオ画像を生成するのに用いられる、モノ画像のPGの画像のPGストリームであるオフセット用PGストリームとが定義されている。そして、PG/TextSTストリーム選択APIは、BD-Jアプリケーションからの要求に従い、ビデオモードに応じて、モノPGストリーム、ステレオPGストリーム、又は、オフセット用PGストリームを選択する。
したがって、BD-Jアプリケーションから、間接的に、PGの画像の再生(PGのコンフィグレーション)を制御することができる。
[3D画像の再生と、2D画像の再生との切り替え]
図30は、3D対応プレーヤにおける、3D画像の再生と、2D画像の再生との切り替えを説明する図である。
図30では、最初に、3D対応プレーヤの動作モードが、3D画像を再生する3D再生モード(3D playback mode)になっている。
そして、グラフィクスモードが、ステレオグラフィクスモード(stereo gfx(graphics))に、ビデオモードが、ステレオビデオモード(stereo video)に、バックグラウンドモードが、モノバックグラウンドモード(mono background)に、それぞれなっている。
その後、グラフィクスモードが、オフセットグラフィクスモード(plane offset gfx)に、ビデオモードが、デュアルモノビデオモード(dual-mono video)に、それぞれ変更されている。
さらに、その後、図30では、動作モードが、3D再生モードから、レガシープレーヤと同様にして、2D画像を再生する2D再生モード(Legacy playback mode)に変更されている。
動作モードの変更に伴い、グラフィクスモードは、オフセットグラフィクスモード(plane offset gfx)から、モノグラフィクスモード(mono gfx)に変更されている。さらに、ビデオモードは、デュアルモノビデオモード(dual-mono video)から、モノビデオモード(mono video)に変更されている。なお、バックグラウンドモードは、モノバックグラウンドモード(mono background)のままになっている。
そして、図30では、動作モードが、2D再生モードから、3D再生モードに、再び変更されている。
動作モードの変更に従い、グラフィクスモードは、モノグラフィクスモード(mono gfx)から、ステレオグラフィクスモード(stereo gfx)に変更されている。さらに、ビデオモードは、モノビデオモード(mono video)から、フラットステレオビデオモード(flattened stereo video)に変更されている。なお、バックグラウンドモードは、モノバックグラウンドモード(mono background)のままになっている。
図30では、その後、バックグラウンドモードが、モノバックグラウンドモード(mono background)から、ステレオバックグラウンドモード(stereo background)に変更されている。
図30において、例えば、動作モードが、3D再生モードから2D再生モードに変更される場合に、解像度(画枠)の変更が伴うときには、表示画面がブラックアウトするおそれがある。
[Pixel coordinate system for video]
BD-Jアプリケーションからの、ビデオの位置やサイズの制御には、"javax.tv.media.AWTVideoSizeControl"や、"org.dvb.media.BackgroundVideoPRsentationControl"等のJMF(Java(登録商標) Media Framework) controlを使用することができる。
なお、BD-Jアプリケーションのオーサは、ビデオの位置、及び、サイズは、プレーン(ビデオプレーン13)上の座標ではなく、ディスプレイ座標で設定する。
また、3D対応プレーヤは、左眼用画像(L video source)、及び、右眼用画像(R video source)のそれぞれに対して、位置とサイズの補正を行わなければならない。
例えば、1920×2160画素のビデオプレーン13に対し、ディスプレイ座標系は、垂直方向が1/2の、1920×1080画素のサイズの座標系となる。この場合、オーサは、例えば、以下のように、ビデオの位置とサイズを設定しなければならない。
RctangL src = new RctangL(0,0,1920,1080);
RctangL dest = new RctangL(100,100,960,540);
AWTVideoSizeControl videoSizeControl = (AWTVideoSizeControl)player.getControl("javax.tv.media.AWTVideoSizeControl");
videoSizeControl.setSize(new AWTVideoSize(src, dest));
図31は、オーサによるビデオの位置とサイズの設定と、3D対応プレーヤによるビデオの位置とサイズの補正とを説明する図である。
オーサは、ビデオの左眼用画像の位置とサイズを設定する。図31では、1920×1080画素のサイズのディスプレイ座標系に対して、ビデオの左眼用画像の位置とサイズが設定されている。
3D対応プレーヤは、ディスプレイ座標系に対するビデオの左眼用画像の位置とサイズの設定を、そのまま、ビデオプレーン13のLビデオプレーン13Lに設定する。
さらに、3D対応プレーヤは、Lビデオプレーン13Lのビデオの位置とサイズの設定を、そのまま、Rビデオプレーン13Rに適用する。
したがって、オーサから見れば、Lビデオプレーン13Lに対して、ビデオの位置とサイズを設定することで、そのビデオの位置とサイズと同一の位置とサイズが、Rビデオプレーン13Rにも設定される。
ここで、ビデオに関しては、深さ情報を外部から与えるわけではない。したがって、オフセットを付与する仕組みは無駄であるばかりでなく、ビデオ製作者の意図しない出力を引き起こす原因ともなる。
すなわち、ビデオ製作者は、意図した3D画像が表示されるように、ビデオの画像を製作するはずである。したがって、3D対応プレーヤにおいて、例えば、PSR#21(図7)に保存されたオフセット値等の、外部から与えられる情報によって、ビデオプレーン13に描画されるビデオの画像(左眼用画像、及び、右眼用画像)の位置をずらす等の加工を施すと、ビデオ製作者が意図しない画像が表示されるおそれがある。
そこで、3D対応プレーヤでは、コンフィグレーション上は、L/R video planeが定義されるが、BD-Jアプリケーションのオーサには、L video planeのみしか扱えないように制約をかける。すなわち、3D対応プレーヤは、BD-JアプリケーションによるL video scaling / L video positioningのAPI呼び出しをそのままR video scaling / R video positioningへも適用しなければならない。
図32は、以上のように、ビデオの位置とサイズの設定(補正)を行う3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
図32の3D対応プレーヤは、Lビデオプレーン13L(L領域)に記憶される画像のサイズ、及び、位置を設定するL用APIと、Rビデオプレーン13R(R領域)に記憶される画像のサイズ、及び、位置を設定するR用APIとを備える。そして、L用API、及び、R用APIのうちの一方のAPIは、他方のAPIが設定する画像のサイズ、及び、位置と同一のサイズ、及び、位置を設定する。
すなわち、図32の3D対応プレーヤでは、ビデオデコーダ(Video decoder)が、ビデオをデコードし、その結果得られるビデオの左眼用画像と右眼用画像を、L用APIと、R用APIとに供給する。
L用APIは、Lビデオスケーリング(L(Left) video scaling)APIと、Lビデオポジショニング(L(Left) positioning)APIとからなり、BD-Jアプリケーションからの、ビデオの位置とサイズの設定の要求の呼び出しに応じて、ビデオデコーダからの左眼用画像の位置とサイズを設定する。
すなわち、LビデオスケーリングAPIは、ビデオデコーダからの左眼用画像のサイズを、BD-Jアプリケーションからの要求に応じたサイズに制御し、LビデオポジショニングAPIに供給する。
LビデオポジショニングAPIは、LビデオスケーリングAPIからの左眼用画像の位置を、BD-Jアプリケーションからの要求に応じた位置に制御し、その結果得られる左眼用画像を、Lビデオプレーン13Lに描画する(LビデオスケーリングAPIからの左眼用画像を、BD-Jアプリケーションからの要求に応じた、Lビデオプレーン13L上の位置に描画する)。
また、LビデオスケーリングAPIは、後述するRビデオスケーリングAPIを呼び出し、BD-Jアプリケーションと同様の要求をする。さらに、LビデオポジショニングAPIは、後述するRビデオポジショニングAPIを呼び出し、BD-Jアプリケーションからの要求と同様の要求をする。
R用APIは、Rビデオスケーリング(R(Right) video scaling)APIと、Rビデオポジショニング(R(Right) positioning)APIとからなり、L用APIからの、ビデオの位置とサイズの設定の要求に応じて、ビデオデコーダからの右眼用画像の位置とサイズを設定する。
すなわち、RビデオスケーリングAPIは、ビデオデコーダからの右眼用画像のサイズを、LビデオスケーリングAPIからの要求に応じたサイズに制御し、RビデオポジショニングAPIに供給する。
RビデオポジショニングAPIは、RビデオスケーリングAPIからの右眼用画像の位置を、LビデオポジショニングAPIからの要求に応じた位置に制御し、その結果得られる右眼用画像を、Rビデオプレーン13Rに描画する。
以上のように、Lビデオプレーン13L(L領域)に記憶される画像のサイズ、及び、位置を設定するL用APIと、Rビデオプレーン13R(R領域)に記憶される画像のサイズ、及び、位置を設定するR用APIとのうちの、一方のAPIである、例えば、R用APIは、他方のAPIであるL用APIがBD-Jアプリケーションからの要求に応じて設定する画像のサイズ、及び、位置と同一のサイズ、及び、位置を設定する。
したがって、BD規格のビデオの画像を記憶するビデオプレーン13について、オーサが、Lビデオプレーン13L(L領域)、及び、Rビデオプレーン13R(R領域)のうちの一方であるLビデオプレーン13Lしか扱えないようにすることができ、ビデオ製作者が意図しないビデオの画像が表示されることを防止することができる。
[Pixel coordinate system for graphics]
stereo graphicsコンフィグレーション(グラフィクスの3D画像を表示するコンフィグレーション)で有効なピクセル座標系は、
(0, 0)-(1920, 2160)
(0, 0)-(1280, 1440)
(0, 0)-(720, 960)
(0, 0)-(720, 1152)
(0, 0)-(960, 1080)
のいずれかである。
top-halfがL graphics viewに、bottom-halfがR graphics viewに割り当てられる。
図33は、1920×2160画素のグラフィクスプレーン11を示している。
グラフィクスプレーン11の上側の記憶領域(top-half)であるLグラフィクスプレーン11Lに描画された画像が、左眼で観察される左眼用画像(L(Left) graphics view)となり、グラフィクスプレーン11の下側の記憶領域(bottom-half)であるRグラフィクスプレーン11Rに描画された画像が、右眼で観察される右眼用画像(R(Right) graphics view)となる。
図33では、グラフィクスプレーン11に、1つのコンテナ(Root container)と、そのコンテナの子になっている2つのコンポーネント(Components)とが描画されている。
コンポーネントの座標は、そのコンポーネントの親になっているコンテナを基準とする相対的な座標で表現される。
なお、3D対応プレーヤでは、グラフィクスプレーン11のエッジに、ガード目的の緩衝領域を設けてはならない。
また、3D対応プレーヤは、L-view/R-viewとの不整合を抑止する仕組みを導入しなければならない。
ここで、レガシープレーヤであるBDプレーヤには、BD-Jアプリケーションによる描画の完了を検知して完了後にモニターへ転送するような機構がない。L/Rビデオ出力の場合、L/R graphics間で出力の不整合が発生する可能性がある。
そこで、3D対応プレーヤでは、何らかのAPI呼び出しをBD-Jアプリケーションによる描画の完了を示すシグナルとして定義する。逆に、BD-Jアプリケーションが、該当する描画完了通知APIを呼び出さないと画面には何も出力されない。オーサは本手法を必ず使わなければならなくなる。
すなわち、Lグラフィクスプレーン11Lに画像(左眼用画像)が描画された後、Rグラフィクスプレーン11Rへの画像の描画が完了する前に、グラフィクスプレーン11の描画内容が、左眼用画像と右眼用画像として、表示画面に表示されると、その左眼用画像と右眼用画像とは、3D画像として見えるように、整合がとれた画像になっていないため(いまの場合、右眼用画像の描画が不完全であるため)、表示画面の画像を見たユーザに、不快感を感じさせることになる。
このように、ユーザに不快感を感じさせることを防止するために、3D対応プレーヤは、左眼用画像と右眼用画像との不整合を抑止する機能、つまり、3D画像として見えるように、整合がとれた状態となっていない左眼用画像と右眼用画像が表示画面に表示されることを防止する機能を有する。
具体的には、3D対応プレーヤは、グラフィクスプレーン11に対する、左眼用画像と右眼用画像との両方の描画が完了してから、その左眼用画像と右眼用画像を、表示のために出力する。
したがって、3D対応プレーヤは、グラフィクスプレーン11に対する、左眼用画像と右眼用画像との両方の描画が完了したことを認識する必要がある。
[Direct-drawing model]
Direct-drawingでは、3D対応プレーヤは、BD-Jアプリケーションからの、グラフィクスの画像を描画する描画コマンドの発行が完了したかどうかを知る術がない。
すなわち、BD-Jアプリケーションが、描画コマンド#1,#2,・・・,#Nを発行し、その描画コマンド#1ないし#Nに従って、グラフィクスプレーン11への画像の描画が行われた場合に、その後、BD-Jアプリケーションから、さらに、描画コマンドが発行されるかどうか、つまり、BD-Jアプリケーションによる描画コマンドの発行が完了したのかどうかを、3D対応プレーヤは、認識することができない。
そこで、BD-Jアプリケーションのオーサには、描画コマンドによるグラフィクスプレーン11への画像の描画を行う場合に、グラフィクスプレーン11に対する画像の描画が終了したことを通知する描画完了通知APIの呼び出しを、3D対応プレーヤに対するシグナリングとして義務づける。
この場合、3D対応プレーヤは、BD-Jアプリケーションによる描画完了通知APIの呼び出しによって、グラフィクスプレーン11に対する画像の描画が終了したこと、つまり、描画コマンドの発行が完了したことを認識することができる。そして、その結果、(3D画像として見えるように、)整合がとれた状態となっている左眼用画像と右眼用画像を表示することができる。
ここで、描画完了通知APIとしては、例えば、java.awt.Toolkit#sync()メソッドを採用することができる。この場合、3D対応プレーヤでは、java.awt.Toolkit#sync()メソッドの呼び出しが行われない限りは、グラフィクスプレーン11に描画された画像は出力されず、したがって、表示画面には、グラフィクスプレーン11に描画された画像が表示されない。
なお、1フレームの間(1-video-frame間)に、java.awt.Toolkit#sync()メソッドの呼び出しが、複数回行われると、graphics-frameがコマ落ちする可能性がある。したがって、java.awt.Toolkit#sync()メソッドの呼び出しを、連続で複数回行うことや、少ない描画をはさんで連続で行うことは、してはならない。
[Repaint model]
AWT(Abstract Windowing toolkit)ペイントモデルでは、グラフィクスの画像を構成する部品としてのルートコンテナのrepaint()メソッドが、グラフィクスの画像を構成する部品としての各コンポーネントのupdate()メソッドを呼び出す。
そして、AWTペイントモデルでは、3D対応プレーヤにおいて、グラフィクスの画像の描画プロセスを、完全に制御すること(フルコントロールすること)ができるので、3D対応プレーヤは、グラフィクスプレーン11に対する画像の描画が終了したことを認識することができる。
したがって、上述の描画完了通知APIの呼び出しを行うようにしなくても、整合がとれた状態となっている左眼用画像と右眼用画像が表示されるように、3D対応プレーヤの実装を行うことができる。
図34は、グラフィクスプレーン11に対する画像の描画が終了した場合に、描画完了通知APIを呼び出す3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
3D対応プレーヤは、グラフィクスプレーン11としてのバッファ201L及び201R、並びに、バッファ202L及び202Rを有する。
なお、図34では、バッファ201L及び202Lが、Lグラフィクスプレーン11Lに相当し、バッファ201R及び202Rが、Rグラフィクスプレーン11Rに相当する。
また、バッファ201L及び201Rのセットと、バッファ202L及び202Rのセットとは、交互に、バックバッファ(隠しバッファ)とフロントバッファとして機能する。
ここで、バックバッファは、BD-Jアプリケーションからのグラフィクスの画像の描画がされるバッファであり、フロントバッファは、バックバッファに画像の描画がされている間に、表示画面(論理スクリーン21)に表示される画像を記憶するバッファである。
図34Aは、バッファ201L及び201Rのセットが、バックバッファとなり、バッファ202L及び202Rのセットが、フロントバッファとなっている状態の3D対応プレーヤを示している。
図34Aでは、バックバッファとしてのバッファ201L及び201Rに対して、BD-Jアプリケーションによるグラフィクスの画像(左眼用画像、及び、右眼用画像)の描画が行われ、フロントバッファとしてのバッファ202L及び202Rに記憶されている画像(左眼用画像、及び、右眼用画像)が、表示画面への出力として出力されている。
BD-Jアプリケーションは、バックバッファとしてのバッファ201L及び201Rに対して、グラフィクスの画像の描画が終了すると、描画完了通知APIを呼び出す。
3D対応プレーヤは、描画完了通知APIの呼び出しが行われると、フロントバッファに代えて、バックバッファに記憶されている画像の、表示画面への出力を開始する。
すなわち、図34Bは、描画完了通知APIの呼び出しが行われた直後の3D対応プレーヤを示している。
3D対応プレーヤは、描画完了通知APIの呼び出しが行われると、フロントバッファになっているバッファ202L及び202Rに記憶された画像に代えて、バックバッファになっているバッファ201L及び201Rに記憶されている画像の、表示画面への出力を開始する。
さらに、3D対応プレーヤは、バックバッファになっているバッファ201L及び201Rに記憶されている画像を、フロントバッファになっているバッファ202L及び202Rにコピーする。
その後、3D対応プレーヤは、バックバッファとフロントバッファとを入れ替える。
すなわち、3D対応プレーヤは、バックバッファになっているバッファ201L及び201Rを、フロントバッファとするとともに、フロントバッファになっているバッファ202L及び202Rを、バックバッファとする。
すなわち、図34Cは、バッファ201L及び201Rのセットが、フロントバッファとなり、バッファ202L及び202Rのセットが、バックバッファとなっている状態の3D対応プレーヤを示している。
BD-Jアプリケーションは、バックバッファとなったバッファ202L及び202Rに対するグラフィクスの画像の描画を開始し、以下、同様の処理が繰り返される。
図35は、図34の3D対応プレーヤによるグラフィクスの処理を説明するフローチャートである。
3D対応プレーヤは、BD-Jアプリケーションからの描画コマンドの発行を待って、ステップS11において、その描画コマンドを実行する。
そして、3D対応プレーヤは、ステップS12において、描画コマンドの実行の結果得られるグラフィクスの画像を、バックバッファに描画するとともに、フロントバッファに記憶されているグラフィクスの画像を、表示画面に出力する(表示のために出力する)。
その後、ステップS13において、3D対応プレーヤは、BD-Jアプリケーションから、描画完了通知APIの呼び出しがあったかどうかを判定する。
ステップS13において、描画完了通知APIの呼び出しがなかったと判定された場合、BD-Jアプリケーションからの描画コマンドの発行を待って、ステップS11に戻り、以下、同様の処理が繰り返される。
また、ステップS13において、描画完了通知APIの呼び出しがあったと判定された場合、3D対応プレーヤは、ステップS14に進み、フロントバッファに代えて、バックバッファに記憶されているグラフィクスの画像を、表示画面に出力する(表示のために出力する)。
そして、3D対応プレーヤは、ステップS15において、バックバッファに記憶されたグラフィクスの画像を、フロントバッファにコピーする。
その後、3D対応プレーヤは、ステップS16において、バックバッファとフロントバッファとを入れ替え、BD-Jアプリケーションからの描画コマンドの発行を待って、ステップS11に戻り、以下、同様の処理が繰り返される。
以上のように、3D対応プレーヤでは、グラフィクスプレーン11(であるバックバッファ)に対する、グラフィックスの画像の描画が終了したことを通知する描画完了通知APIの呼び出しが、BD-Jアプリケーションからあった場合に、グラフィクスプレーン11に描画された画像が、表示のために出力される。
したがって、BD-Jアプリケーションによるグラフィクスの画像の描画が完了したことの通知があってから、グラフィクスプレーン11に描画がされた画像を表示することができるので、整合がとれた状態となっていない左眼用画像と右眼用画像が、表示画面に表示されることを防止することができる。
[Pixel coordinate system for background]
stereo backgroundコンフィグレーション(バックグラウンドの3D画像を表示するコンフィグレーション)で有効なピクセル座標系は、
(0, 0)-(1920, 2160)
(0, 0)-(1280, 1440)
(0, 0)-(720, 960)
(0, 0)-(720, 1152)
のいずれかである。
top-halfがL background viewに、bottom-halfがR background viewに割り当てられる。
なお、バックグラウンドの画像のフォーマット(Contents format)は、単一色(Single-color),JPEG(JFIF)、又は、MPEG2 drip-feedのうちのいずれかであり、フォーマットが、MPEG2 drip-feedである場合には、バックグラウンドの画像は、SD画像(SD video only)でなければならない。
また、バックグラウンドの画像としては、1920×2160画素、1280×1440画素、720×960画素、又は、720×1152画素のJPEG(JFIF)イメージ(image)を使用することができる。
[フォーカス管理]
グラフィクスの画像として、例えば、ウィジェット・ベースのGUI(Graphical User Interface)等を採用する場合に、レガシープレーヤでは、GUIを構成する、ある1つのコンテナの子となっている複数のコンポーネントは、一度にフォーカスを持つことはできない。
また、レガシープレーヤでは、GUIを構成する複数のルートコンテナを、一度に、アクティブ(フォーカスを持った状態)にすることができない。
ここで、コンテナは、グラフィクスの画像の構成要素(部品)であり、親(上位層)と子(下位層)を持つことができる。親を持たずに、子のみを持つコンテナは、ルートコンテナと呼ばれる。
コンポーネントは、コンテナの一種であり、親を持つことはできるが、子を持つことはできない。
グラフィクスの画像としてのGUIが、3D画像である場合、その3D画像を構成する左眼用画像と右眼用画像とのそれぞれで、対応するコンテナにフォーカスを持たせ、そのフォーカスの遷移を同様(同等)に行う必要がある。
すなわち、左眼用画像と右眼用画像とのうちの、一方の画像を構成するあるコンテナがフォーカスされているが、そのコンテナに対応する、他方の画像を構成するコンテナがフォーカスされていない場合には、そのような左眼用画像と右眼用画像とによって表示される3D画像を見たユーザに、不快感を感じさせることになる。
このように、ユーザに不快感を感じさせることを防止するために、3D対応プレーヤは、左眼用画像のコンテナと、右眼用画像のコンテナとにおいて、フォーカスの遷移が、同様になるように、フォーカスの管理を行う。
図36は、グラフィクスプレーン11に描画されたGUIの例を示している。
図36のGUIは、1個のルートコンテナと、そのルートコンテナの子になっている、対応する2個ずつのコンポーネント#1,#2、及び、#3とから構成される。
なお、図36において、Lグラフィクスプレーン11Lに描画されているコンポーネント#1,#2、及び、#3は、左眼用画像を構成し、Rグラフィクスプレーン11Rに描画されているコンポーネント#1,#2、及び、#3は、右眼用画像を構成する。
例えば、左眼用画像のコンポーネント#iがフォーカスされている場合、右眼用画像の、対応するコンポーネントであるコンポーネント#iもフォーカスされていなければならない。
3D対応プレーヤは、ウィジェットの状態遷移/管理をL/R 間で対称になれるようにするために、同時に二つのコンテナまたはコンポーネントがフォーカスを持てるようにすることで対応する。そのためには、コンテナまたはコンポーネントのインスタンスには、フォーカスを保持している/していないを表現するフラグを持たせ管理可能なようにする必要がある。また、三つ目のフォーカス・リクエストは失敗させなければならない。すなわち、フォーカスを保持したコンテナまたはコンポーネントは、0個または2個のいずれかに限定される。
左眼用画像と右眼用画像との、対応する2個のコンテナ(コンポーネント)がフォーカスされるようにするフォーカス方式としては、第1のフォーカス方式と、第2のフォーカス方式とがある。
図37は、第1のフォーカス方式と、第2のフォーカス方式とを示している。
図37Aは、第1のフォーカス方式(1-root-container across L/R graphics plane)を示している。
第1のフォーカス方式では、Lグラフィクスプレーン11Lと、Rグラフィクスプレーン11Rとをまたぐコンテナ(Root Container)の子となっている、Lグラフィクスプレーン11L上のコンテナ(コンポーネント)と、Rグラフィクスプレーン11R上のコンテナ(コンポーネント)との、対応する2つのコンテナに、同時に、フォーカスを持たせる。
図37Bは、第2のフォーカス方式(2-root-containers (one for L graphics plane, another for R graphics plane))を示している。
第2のフォーカス方式では、Lグラフィクスプレーン11Lと、Rグラフィクスプレーン11Rとのそれぞれに、ルートコンテナを描画し、それぞれのルートコンテナを、同時に、アクティブ(フォーカスを持った状態)にする。
図38は、左眼用画像と右眼用画像との、対応する2個のコンテナ(コンポーネント)にフォーカスを持たせる3D対応プレーヤとしての図3のBDプレーヤのフォーカスの管理を説明するフローチャートである。
なお、グラフィクスプレーン11に描画されるGUIを構成するコンテナ(コンポーネント)は、フォーカスがされているか否かを表すフォーカスフラグを有することとする。
3D対応プレーヤは、フォーカスの要求(リクエスト)があると、ステップS21において、コンテナの数をカウントする変数iに、初期値としての0をセットする。
そして、3D対応プレーヤは、ステップS22において、グラフィクスプレーン11上のコンテナc(i)の子となっているコンポーネント(コンテナ)の中に、フォーカスされた状態のコンポーネント(以下、フォーカス保持コンポーネントともいう)が、既に、2個存在するかどうかを、コンポーネントが有するフォーカスフラグに基づいて判定する。
ステップS22において、コンテナc(i)の子となっているコンポーネントの中に、2個のフォーカス保持コンポーネントが存在しないと判定された場合、3D対応プレーヤは、ステップS23に進み、要求(リクエスト)があったフォーカスを、対応する2個のコンポーネントに持たせる。さらに、ステップS23では、3D対応プレーヤは、フォーカスを持たせた2個のコンポーネントそれぞれのフォーカスフラグに、フォーカスを持っている旨の値をセットし、ステップS24に進む。
一方、ステップS22において、コンテナc(i)の子となっているコンポーネントの中に、2個のフォーカス保持コンポーネントが存在すると判定された場合、3D対応プレーヤは、ステップS23をスキップして、ステップS24に進み、変数iを1だけインクリメントして、ステップS25に進む。
ステップS25では、3D対応プレーヤは、変数iが、グラフィクスプレーン11上のコンテナの数N未満であるかどうかを判定する。ステップS25において、変数iが、グラフィクスプレーン11上のコンテナの数N未満であると判定された場合、ステップS22に戻り、同様の処理が繰り返される。
また、ステップS25において、変数iが、グラフィクスプレーン11上のコンテナの数N未満でないと判定された場合、処理は終了する。
以上のようにして、3D対応プレーヤでは、フォーカスの要求に対し、2個のコンテナがフォーカスされていない場合に、左眼用画像を記憶するLグラフィクスプレーン11L(L領域)のコンテナと、そのコンテナに対応する、右眼用画像を記憶するRグラフィクスプレーン11R(R領域)のコンテナとを、フォーカスされている状態にする。
したがって、例えば、3D画像のウィジェットを構成するコンテナのうちの、左眼用画像のコンテナと、右眼用画像のコンテナとにおいて、フォーカスの遷移が、同様になるようにすることができる。
[マウスイベントの扱い]
Stereo graphicsの場合、マウス・カーソルの画面上の2次元座標は、L/R graphics plane上で、それぞれ別の座標であってもよい。そのため、BD-Jアプリケーションは、マウス・イベントに依存した処理を記述するにあたり座標変換を必要とするが、座標変換のためのオフセット値がBDプレーヤの実装ごとに異なってよいために、不明である。
すなわち、図39は、例えば、マウス等のポインティングデバイスのカーソルの3D画像が見える表示画面上の位置と、グラフィクスプレーン11上のカーソルの位置とを示している。
カーソルは、BDプレーヤによって表示されるが、3D対応プレーヤでは、カーソルの3D画像を、グラフィクスの3D画像(ディスク100から再生される3D画像)よりも手前の位置に(見えるように)表示させることが望ましい。
一方、カーソルを、3D画像で表示する場合、論理スクリーン21上の左眼用画像のカーソルは、カーソルの3D画像が見える表示画面の位置(x,y)から、所定のオフセット値△xだけずれた位置(x+△x,y)にあり、論理スクリーン21上の右眼用画像のカーソルも、カーソルの3D画像が見える表示画面の位置(x,y)から、所定のオフセット値△xだけずれた位置(x−△x,y)にある。
ここで、所定のオフセット値△xによって、3D画像のカーソルの奥行き方向の位置が変化する。
3D対応プレーヤにおいて、カーソルの3D画像を、グラフィクスの3D画像よりも手前の位置に表示させる場合、グラフィクスの3D画像の奥行き方向(Z方向)の、最も手前側の位置を表す値max-depthが必要である。しかしながら、3D対応プレーヤにおいて、値max-depthを、グラフィクスの3D画像から計算することは難しい。
そこで、例えば、BDであるディスク100(図3)に、値max-depthを記録しておき、3D対応プレーヤでは、その値max-depthを、PSR(図7)(例えば、PSR#21)に設定する(記憶させる)ことができる。
この場合、3D対応プレーヤ(又は、3D対応プレーヤが出力する3D画像を表示するディスプレイ)では、PSRに記憶された値max-depthを参照し、値max-depthが表す位置よりも手前側にカーソルを表示するオフセット値△xを求めることができる。そして、カーソルの3D画像を、グラフィクスの3D画像よりも手前の位置に表示させることができる。
なお、3D対応プレーヤが表示するOSD(On Screen display)も、カーソルと同様にして、グラフィクスの3D画像よりも手前の位置に表示させることができる。
また、BDであるディスク100(図3)には、値max-depthとともに、BDであるディスク100から再生される3D画像の奥行き方向の、最も奥側の位置を表す値min-depthを記録しておき、PSR(図7)には、値max-depth、及び、値min-depthを設定することが可能である。
以上のように、3D対応プレーヤにおいて、PSRに、BDであるディスク100に記録された3D画像の奥行き方向の、最も手前側の位置を表す値max-depth等を設定することで、BDから再生される3D画像よりも手前側に、カーソルや、OSDを表示することができる。
ところで、カーソルの3D画像を表示するためのオフセット値△xは、3D対応プレーヤが任意に設定することができる。また、オフセット値△xは、一定である必要はなく、例えば、フレームごとに変更(設定)することができる。
したがって、3D対応プレーヤが、BD-Jアプリケーションに対して、カーソルの位置を引数とするイベントを発行するときの、カーソルの位置として、表示画面の位置(x,y)を採用すると、BD-Jアプリケーションは、その表示画面の位置(x,y)の座標変換を行って、グラフィクスプレーン11上のカーソルの位置(x+△x,y)(又は、(x−△x,y))を求めなければならない。
しかしながら、BD-Jアプリケーションが、表示画面の位置(x,y)の座標変換を行うには、オフセット値△xを認識する必要があり、3D対応プレーヤが任意に設定することが可能なオフセット値△xを、BD-Jアプリケーションが認識することは難しい。
そこで、マウス・イベントの座標系をL graphics plane上のみに限定する。BDプレーヤに対して、マウス・イベントを発行する際の2次元の位置情報としては、L graphics plane上の座標を採用するように義務付ける。
すなわち、3D対応プレーヤにおいて、例えば、マウス等のポインティングデバイスのカーソルの3D画像は、左眼用画像、及び、右眼用画像で構成されるが、カーソルの位置を引数とするイベントを発行するときの、カーソルの位置としては、カーソルの3D画像の、グラフィクスプレーン11のLグラフィクスプレーン11L(L領域)、及び、Rグラフィクスプレーン11R(R領域)のうちの一方である、例えば、Lグラフィクスプレーン11L(L領域)上の位置が用いられる。
これにより、BD-Jアプリケーションは、3D画像のカーソルの位置として、Lグラフィクスプレーン11L上の位置を知る(認識する)ことができるので、BD-Jアプリケーションのオーサは、カーソルの位置として、Lグラフィクスプレーン11L上の位置を用いて、カーソルの位置を引数とするイベント(マウスイベント等)に対する処理を記述することができる。
[Drawing operations}
3D対応プレーヤは、L-view/R-viewの整合性を保証しなければならない。すなわち、グラフィクスの左眼用画像と右眼用画像とが、グラフィクスプレーン11に対して、(3D画像として見えるように、)整合がとれた状態に描画された後に、表示画面に表示されることを保証しなければならない。
グラフィクスプレーン11の初期化(リセット)も同様である。すなわち、グラフィクスプレーン11のLグラフィクスプレーン11LとRグラフィクスプレーン11Rのうちの一方を初期化する場合には、他方も初期化しなければならない。
但し、L-view/R-view間の意味的な整合性、すなわち、グラフィクスの左眼用画像と右眼用画像とにおける、画像の内容の一致性は、BD-Jアプリケーションのオーサの責任(オーサリング責任)である。
図40は、グラフィクスの左眼用画像と右眼用画像との整合性を説明する図である。
図40Aは、整合がとれた状態に描画されたグラフィクスの左眼用画像と右眼用画像とを示している。
図40Aでは、Lグラフィクスプレーン11Lに対する左眼用画像の描画と、Rグラフィクスプレーン11Rに対する右眼用画像の描画とが終了しており、3D対応プレーヤは、このように描画が終了した後に、左眼用画像と右眼用画像とを、表示画面に表示しなければならない。
図40Bは、整合がとれていない状態のグラフィクスの左眼用画像と右眼用画像とを示している。
図40Bでは、Lグラフィクスプレーン11Lに対する左眼用画像の描画は終了しているが、Rグラフィクスプレーン11Rに対する右眼用画像の描画は終了していない。
3D対応プレーヤは、図40Bの状態の左眼用画像と右眼用画像とを、表示画面に表示してはならない。
グラフィクスの左眼用画像と右眼用画像との整合性は、例えば、3D対応プレーヤにおいて、トリプルバッファリングを採用することで保証することができる。
図41は、トリプルバッファリングを採用する3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
3D対応プレーヤは、グラフィクスプレーン11としてのバックバッファ(隠しバッファ)211、並びに、フロントバッファ212、及び、213を有する。
バックバッファ211は、バッファ211L及び211Rから構成される。フロントバッファ212は、バッファ212L及び212Rから構成され、フロントバッファ213は、バッファ213L及び213Rから構成される。
なお、図41において、バッファ211L,212L、及び、213Lは、Lグラフィクスプレーン11Lに相当し、左眼用画像を記憶する。バッファ211R,212R、及び、213Rは、Rグラフィクスプレーン11Rに相当し、右眼用画像を記憶する。
BD-Jアプリケーションは、描画コマンドを発行し、その描画コマンドの実行の結果としてのグラフィクスの3D画像(左眼用画像と右眼用画像)が、バックバッファ211に描画される。
一方、フロントバッファ212と213とは、交互に選択され、選択された方のバッファ(以下、選択バッファともいう)に記憶された左眼用画像と右眼用画像は、表示画面に表示される(Display processorに供給される)。
フロントバッファ212と213のうちの、選択バッファでない方には、バックバッファ211に対する左眼用画像と右眼用画像の描画が終了した後に、そのバックバッファ211に記憶(描画)された左眼用画像と右眼用画像とがコピーされる。
フロントバッファ212と213を、交互に、選択バッファに選択する選択の切り替えは、tearing artifactsの発生を防止するために、バックバッファからの左眼用画像と右眼用画像の読み出し(コピー)が、最後の水平ラインまで完了した後のVBI(Vertical Blanking Interval)のタイミングで実行される。
[Frame Accurate Animation]
FAA(Frame Accurate Animation)には、Image Frame Accurate Animationと、Sync Frame Accurate Animationの2つがあるが、3D対応プレーヤにおいて、アニメーションのための左眼用画像と右眼用画像とを同期して動作させるためには(L/R同期のためには)、Image Frame Accurate Animationと、Sync Frame Accurate Animationのいずれであっても、アニメーションのための左眼用画像の描画と、アニメーションのための右眼用画像の描画とを、別個に行うこと(二箇所で同時にアニメーションが動作させること)が望ましい。
すなわち、レガシープレーヤでは、1箇所でしかアニメーションが動作しない。L/Rをまたぐような画像やバッファを使用すれば、擬似的に2箇所でアニメーション動作が可能であるが、BDプレーヤ側のパフォーマンス要件により、充分なアニメーション・フレームレートを出せない。
図42は、L/Rをまたぐ画像によるアニメーションを説明する図である。
図42では、1920×2160画素のグラフィクスプレーン11のLグラフィクスプレーン11Lと、Rグラフィクスプレーン11Rとをまたいで、w×(h+1080)画素の1つの画像が描画されている。
図42において、w×(h+1080)画素の画像のうちの、上部のw×h画素の画像と、下部のw×h画素の画像とをのぞいた部分(中央部分)を、透過ピクセル(透明色)で塗りつぶすことで、上部のw×h画素の画像を、アニメーションのための左眼用画像とするとともに、下部のw×h画素の画像を、アニメーションのための右眼用画像とすることができる。
すなわち、図42の1つの画像の中央部分を、透明色で塗りつぶすことで、その1つの画像の見た目を、w×h画素の画像が、Lグラフィクスプレーン11Lと、Rグラフィクスプレーン11Rとで同一の位置に描画された状態とすることができる。したがって、Lグラフィクスプレーン11L上のw×h画素の画像と、Rグラフィクスプレーン11R上のw×h画素の画像とを同期して動作させた3D画像のアニメーションを実現することができる。
しかしながら、図42では、アニメーションのための左眼用画像、及び、右眼用画像が、w×h画素の画像であるのにもかかわらず、w×(h+1080)画素の、巨大な1つの画像の描画を行う必要がある。
その結果、BDプレーヤの性能(パフォーマンス)によっては、画像の描画に時間を要し、十分なフレームレートで、3D画像のアニメーションを表示することが困難となる。
そこで、3D対応プレーヤでは、アニメーションのための左眼用画像の描画と、アニメーションのための右眼用画像の描画とを、別個に行う。
図43は、アニメーションのための左眼用画像の描画と、アニメーションのための右眼用画像の描画とを示す図である。
3D対応プレーヤでは、アニメーションのための左眼用画像が、Lグラフィクスプレーン11L(L領域)に描画される。さらに、3D対応プレーヤでは、Lグラフィクスプレーン11L(L領域)に対するアニメーションのための左眼用画像の描画とは別個に、アニメーションのための右眼用画像が、Rグラフィクスプレーン11R(R領域)に描画される。
これにより、アニメーションのための左眼用画像と右眼用画像の描画を迅速に行うことができ、その結果、十分なフレームレートで、3D画像のアニメーションを表示することが可能となる。
図44は、Lグラフィクスプレーン11Lに対する、アニメーションのための左眼用画像の描画と、Rグラフィクスプレーン11Rに対する、アニメーションのための右眼用画像の描画とを、別個に行う3D対応プレーヤとしての図3のBDプレーヤの機能的構成例を示すブロック図である。
図44Aは、Image Frame Accurate Animationとしてのアニメーションを描画する3D対応プレーヤの構成例を示している。
イメージバッファ(Image buffer)231は、BD-Jアプリケーションが、BDであるディスク100(図3)からリソースをロードして保存しておくための、キャッシュメモリとして機能するバッファであり、アニメーションのための左眼用画像のリスト(L用の画像のリスト)と、アニメーションのための右眼用画像のリスト(R用の画像のリスト)とを記憶する。
ピクセル転送器232Lは、イメージバッファ231からアニメーションのための左眼用画像を、画素(ピクセル)単位で、順次読み出し、Lグラフィクスプレーン11Lに描画する。
ピクセル転送器232Rは、イメージバッファ231からアニメーションのための右眼用画像を、画素(ピクセル)単位で、順次読み出し、Rグラフィクスプレーン11Rに描画する。
図44Bは、Sync Frame Accurate Animationとしてのアニメーションを描画する3D対応プレーヤの構成例を示している。
グラフィクスメモリ241は、3D対応プレーヤのワークメモリであり、アニメーションのための左眼用画像を記憶するバッファ(L用の画像のbuffer)と、アニメーションのための右眼用画像を記憶する(R用の画像のbuffer)とから構成される。
ピクセル転送器242Lは、グラフィクスメモリ241からアニメーションのための左眼用画像を、画素単位で、順次読み出し、Lグラフィクスプレーン11Lに描画する。
ピクセル転送器242Rは、グラフィクスメモリ241からアニメーションのための右眼用画像を、画素単位で、順次読み出し、Rグラフィクスプレーン11Rに描画する。
ここで、図45に、Image Frame Accurate Animation の拡張APIの定義を示す。
また、図46に、Sync Frame Accurate Animation の拡張APIの定義を示す。
さらに、図47及び図48に、Image Frame Accurate Animation のサンプルコードを示す。なお、図48は、図47に続く図である。
また、図49及び図50に、Sync Frame Accurate Animation のサンプルコードを示す。なお、図50は、図49に続く図である。
ここで、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。