本発明は、立体視再生の技術分野に属する発明である。
背景分野
立体視再生技術とは、左目と右目とで異なる絵を見せる仕組みを導入し、その両目間の視差を利用することにより、立体的な映像を擬似的に作る技術をいう。
現状、立体視再生技術の応用は、劇場等での応用が主流であるが、家庭設置用のディスプレイや再生装置で立体視再生を楽しむ利用形態も、今後の急速な普及が期待される。
立体視画像をユーザに視聴させるためのディスプレイ(立体視ディスプレイ)には、さまざまな方式がある。たとえば、よく使われる方式の一つにシャッターメガネを利用した方式がある。この方式では、視聴者の左目と右目の視野を、メガネによって交互に高速にふさぎ、このメガネの動作と同期してディスプレイの表示画像も左目用・右目用と高速で更新する。こうすることで、結果的にディスプレイで表示される左目用の画像はシャッターメガネにより左目だけが見え、逆に右目用の画像は右目だけが見える。
通常のフラットな映像と同等のフレームレートで立体化された映像を視聴者に見せようとすると、再生装置側では、右目、左目のそれぞれで見ることができる2つの動画像を再生せねばならず、ディスプレイ側では、通常の2倍の応答性能が必要である。たとえば一秒60コマのビデオを表示するためには最低、1秒120コマの切り替えをしなければならない。家庭設置用再生装置の先行技術には、以下の特許文献1に記載されたものがあり、立体視再生の先行技術には、以下の特許文献2に記載されたものがある。
国際公開第2005/119675号公報
国際公開第2008/0192067号公報
立体視可能な映画作品を光ディスクなどの記録媒体に記録して頒布することを考えた場合、動画像に字幕・GUI等のグラフィクスが合成されているような合成映像の立体視をどのようにして実現するかという議論がある。
1つ目の方法は、左目用、右目用のビデオストリームを用意しておいて、対応する左目用字幕と右目用字幕を別々に用意させておき、各自重ね合わせて表示させる方法である。
2つ目の方法は、特許文献2のように、一つのビデオストリームと、それに対応するDepth情報からビデオに立体効果をもたらし、その上に字幕オブジェクトを重ね合わせる方法である。この特許文献2では、字幕がビデオと重なる部分の奥行きをZeroパララックス、つまり奥行きを無くして表示することで、字幕とビデオとの奥行き感の違いをユーザに感じさせないようにしている。
3つ目の方法は、予め用意した左目用と右目用ビデオストリームに対し、一つの字幕オブジェクトを用意させておき、Depth情報からプレーンシフトにより立体効果をつけたものを重畳させる方法である。
1つ目の方法では、ビデオストリームのみならず、字幕・GUI用のグラフィクスストリームも左右双方のものを作成せねばならないので、オーサリングの負担が多大になる。これに対して2つ目の方法では、字幕表示のための左右のグラフィクスストリームを作る必要はなくなり、オーサリングの負担を軽減させることができるが、字幕がストリームと重なる部分については、奥行き感を失うので、見た目が余りよいとはいえない。
3つ目のプレーンシフトによる方法では、字幕・GUI用のグラフィクスストリームについて、左右双方のものを作成する必要はなく、また、字幕・GUIが動画像と重なる部分について奥行き感を失うこともないので、最も理想的なものとなる。ところが、プレーンシフトは、表示中の画面を拡大したり縮小したりするスケーリング機能を実行した際、その弊害が生じる。
レフトビューから見えるべき動画像、及び、ライトビューから見えるべき動画像を再生することで、ビデオストリームの立体視を実現していた場合、スケーリングが施されたとしてもレフトビューから見えるべき動画像、及び、ライトビューから見えるべき動画像が拡大したり、縮小するに過ぎないので、立体視再生に支障が出ることはない。
ところがグラフィクスは左目用と右目用で共有されているので、スケーリングにより文字は縮小されるものの、文字の位置がスケーリング前と同様なままとなり、字幕文字の奥行きは保たれることになる。そうなると、ビデオの奥行きは軽減したが、字幕はそのままという状態が生じ、スケーリング時にビデオと字幕・GUIの立体感の差が激しくなる。
スケーリングの前後で、レフトビューの字幕と、ライトビューの字幕との間隔が維持されたまま、ビデオの奥行きだけが変わってしまうと、動画像の飛び出し具合が、字幕の飛び出し具合と同一になり、スケーリング前に比べて、スケーリング後はビデオプレーンに対して字幕が大幅にシフトされる。そうすると動画像と、字幕との立体感の差が激しくなり目がついていけなくなる恐れがある。視聴者にとっては目の疲れが極端に増すため、消費者保護の観点からして望ましくないとの問題がある。
もっとも、プレーンシフトを採用した再生装置において、字幕が合成された状態でのスケーリングを禁じれば、上述したような問題が生じることはない。しかし現行の再生装置は、例えばフル画面による動画像の再生中に、メニューコールの操作がなされた際、フル画面のメニューを表示して、その上に縮小スケーリングしたビデオを表示させるという処理を実行する。かかる処理により、ビデオの視聴を妨げることなくメニューの視野を広げることが可能となるからである。ビデオのスケーリングを伴ったGUI処理は、メニューの視野を広げ、ユーザの利便性を保つものなので、たとえ立体視の実現のためとはいえ、スケーリングのスケーリングを伴ったGUI処理を省略することは、現行の光ディスク再生装置の利便性から退歩することを意味し、決して、産業界にとって有益な考え方とはいえない。
本発明の目的は、ビデオのスケーリングを伴ったGUI処理を実現しつつも、臨場感の低減を図り、消費者保護を遵守することができる再生装置を提供することである。
上記課題を解決するため本発明の一実施態様である再生装置は、立体視再生を実現する再生装置であって、
ビデオストリームをデコードしてビデオフレームを得るビデオデコーダと、所定の縦画素数×横画素数からなる複数の画素データから構成されるグラフィクスデータを格納するプレーンメモリと、
立体視を実現するにあたって、右方向及び左方向のそれぞれに、画素の座標をどれだけ移動させるべきかの基準を示すオフセットを保持するオフセット保持部と、
プレーンメモリにおけるグラフィクスデータを構成する画素データのそれぞれの座標を、水平方向に、オフセットに応じた画素数だけ移動させるシフトエンジンと、
ビデオフレームに、画素データの座標が移動されたグラフィクスデータを合成する合成部とを備え、前記ビデオフレームのスケールが変更された場合、前記シフトエンジンによる画素データにおける座標の移動量は、前記オフセットにスケーリング倍率を乗じた値に基づくことを特徴としている。
上述の構成により本発明に係る立体視ビデオ再生装置では、字幕付きビデオのスケーリング時に字幕のシフト量が調整されていることにより、スケーリングを伴ったGUI処理を行うにあたって、ビデオと字幕の画面構成が保たれ、立体感の差が激しくなることを防ぐことができる。これにより目の疲れを軽減するとともに、より自然な表示が行えるようになるので、消費者保護の万全化を図ることができる。
任意的ではあるが、上記課題解決手段に、以下のような変更を施すことにより、更なる効果を奏することができる。
プレーンオフセットから座標値への変換を、テーブルを用いて行うという演算のテーブル化を実現してもよい。こうすることで、機器リソースが少ない端末においてもスケーリング時の字幕の奥行きを変更することが可能となる。
さらには、字幕付きビデオのスケーリング時に、ビデオプレーンのシフト量を調整してもよい。ビデオプレーンのシフトによって、立体感の差が激しくなることを防ぎ、目の疲れを軽減するとともに、より自然な表示が行うことが可能である。
さらには、字幕付きビデオのスケーリング時に字幕のシフト量をフレーム単位で少しずつ調整してもよい。これにより、立体感の差が激しくなることを防ぎ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
さらには、字幕付きビデオのスケーリング時に字幕の表示を一定時間無効にし、一定時間が過ぎた時点で表示させてもよい。これにより、ユーザの目が立体感の差になれた状態で字幕が表示されることになり、立体感の差が激しくなることを防ぎ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
記録媒体、再生装置の、使用行為についての形態の一例を示す図である。
BD-ROM100の内部構成の一例を示す図である。
BD-Jオブジェクトの内部構成の一例を示す図である。
再生装置の内部構成の一例を示す図である。
2D表示モード、3D表示モードの切り替えの一例を示す図である。
3D表示モードにおいて、各プレーンのステレオモードが全てオンである場合と、ステレオモードが全てオフである場合の合成処理の一例を示す図である。
全プレーンがステレオモードONである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10を重ねあわせる一例を示す図である。
全プレーンがステレオモードOFFである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10を重ねあわせる一例を示す図である。
プレーン毎の合成結果の一例を示す図である。
全プレーンがステレオモードON時における映像出力を3D用ディスプレイで見た場合の一例を示す図である。
ビデオプレーンはステレオモードONだが、それ以外のプレーンは全てステレオモードOFFにした場合の映像出力を、液晶眼鏡500で見た場合に現れる立体視映像の一例を示す図である。
右方向にシフトされたShifted Leftグラフィクスプレーン、左方向にシフトされたShifted Leftグラフィクスプレーンの一例を示す図である。
プレーンオフセットの符号が正(レフトビュー用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合、像が表示画面よりも手前にあるように見える原理を説明するための図である。
プレーンオフセットの符号が負(レフトビュー用のグラフィクスイメージを左方向へずらし、ライトビュー用のグラフィクスイメージを右方向へずらす)である場合、像が表示画面よりも奥にあるように見える原理を説明するための図である。
正と負のプレーンオフセットの見え方の違いの一例を正示す図である。
(a)は、ステップS704bの具体的処理の一例を説明するための図、(b)はステップS706bの具体的処理の一例を説明するための図である。
動画像に対してスケーリングがなされた場合に、ユーザによって視聴される立体視画像の一例を示す図である。
動画像に対してスケーリングがなされた場合、プレーンシフトにおけるプレーンオフセットをどのように定めればよいかを示す。
スケーリング前の動画像との合成に用いられたプレーンオフセットを、イメージプレーンのプレーンシフトに適用した場合に表示される立体視画像の一例を示す図である。
スケーリング前の動画像との合成に用いられたプレーンオフセットを、イメージプレーンのプレーンシフトに適用した場合に表示される立体視画像の一例を示す図である。
本実施形態1に係る再生装置200のプレーンシフトエンジン20の内部構成の一例を示す図である。
1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、字幕・GUIを含むグラフィクスの合成画像との一例を示す図である。
(a)は、ステップS806bの具体的処理の一例を説明するための図、(b)はステップS808bの具体的処理の一例を説明するための図である。
1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、字幕グラフィクスの合成画像との一例を示す図である。
(a)は、ステップS706aの具体的処理の一例を説明するための図、(b)はステップS808aの具体的処理の一例を説明するための図である。。
イメージプレーン8の内部構成の一例を示す図である。
右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データの一例を示す図である。
インタラクティブグラフィクスプレーン10の内部構成の一例を示す図である。
右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データの一例を示す図である。
イメージプレーン8におけるプレーンシフトの処理手順の一例を示す図である。
インタラクティブグラフィクスプレーン10におけるプレーンシフトの処理手順の一例を示す図である。
グラフィクスプレーンに格納されている画素データの一例を示す図である。
シフトがなされた後のグラフィクスプレーンの格納内容の一例を示す図である。
BD-Jプラットフォーム部の内部構成の一例を示す図である。
表示モード記憶部29における記憶内容の一例を示す図である。
タイトル切り替え時の表示モード設定の処理手順の一例を示すフローチャートである。
タイトル内表示モード設定の処理手順の一例を示すフローチャートである。
BD-Jモードにおけるプレイリスト再生の主たる手順の一例を示すフローチャートである。
プレイアイテム情報に基づく再生手順の一例を示すフローチャートである。
3DAVストリームの3D表示の処理手順の一例を示すフローチャートである。
3D表示モード時の左目用処理の手順の一例を示すフローチャートである。
右目用処理の処理手順の一例を示すフローチャートである。
(a)は、ステップS702、ステップS804aの具体的処理の一例を説明するための図、(b)は、ステップS804bの具体的処理の一例を説明するための図である。
(a)は、ステップS704aの具体的処理の一例を説明するための図、(b)はステップS806aの具体的処理の一例を説明するための図である。
実施の形態2におけるステップS804bの具体的処理の一例を説明するための図である。
第2実施形態における再生装置のプレーンシフトエンジン20の内部構成の一例を示すブロック図である。
(a)は、実施の形態2におけるステップS702の具体的処理の一例を説明するための図、(b)は、ステップS804aの具体的処理の一例を説明するための図である。
スケーリングがなされた動画像及びグラフィクスの座標を所定の画素数だけ移動させることを意図した状況の一例を示す図である。
第3実施形態における再生装置のプレーンシフトエンジン20の内部構成の一例を示すブロック図である。
3DAVストリームの3D表示の処理手順の一例を示すフローチャートである。
イメージプレーンのプレーンシフトの処理手順の一例を示すフローチャートである。
更新済みフレームiが“1”、“2”、“3”と更新されてゆく場合に、プレーンオフセットがどのように変化するかの一例を示す図である。
プレーンオフセットの設定に関わる部分の構成の一例を示す図である。
再生装置のハードウェア構成の一例を示す図である。
本発明を実施するための形態
図面を参照しながら、上記課題解決手段を具備した記録媒体、及び、再生装置の実施形態について説明する。
図1は、記録媒体、再生装置の、使用行為についての形態の一例を示す図である。本図に示すように、記録媒体の一例であるBD-ROM100、再生装置200は、リモコン300、テレビ400、液晶眼鏡500と共にホームシアターシステムを構成し、ユーザによる使用に供される。
BD-ROM100は、上記ホームシアターシステムに、例えば映画作品を供給する。
再生装置200は、テレビ400と接続され、BD-ROM100を再生する。こうして再生される再生映像には、2D映像、3D映像が存在する。2D映像とは、例えば表示装置の表示画面を含む平面をX-Y平面として捉えて、このX-Y平面上に位置する表示画面の表示位置における画素にて表現される画像であり、平面視画像とも呼ばれる。
対照的に3D映像とは、上述のX-Y平面として捉えた平面と直交する直線を軸とし(本実施の形態ではX-Y平面に垂直な直線を軸(Z軸)として定義する)、表示装置の表示画面におけるX-Y平面上の画素に、本実施の形態で説明する構成を採用することにより、人の目には立体的に見えるようにした、または表示画面よりも手前または奥に見えるようにした映像である。
3D映像は、例えば左目で視聴すべきレフトビュー映像と、右目で視聴すべきライトビュー映像とに対応するデータ(ストリームデータ)を後述する図4に記載の仮想ファイルシステムを介して読み出せる記録媒体(例えば、BD-ROM100または後述する図4に示すローカルストレージ1c、ここでは説明を簡単にするためBD-ROM100を例にして説明をする)に記録しておき、左目で視聴すべきレフトビュー映像と、右目で視聴すべきライトビュー映像とが両目の視差の程度において見え方が異なる映像である場合、レフトビュー映像を左目のみに見せるようにし、ライトビュー映像を右目のみに見せるようにするという動作を繰り返すと、人の目には奥行きのある立体的な映像としてユーザに見せることができる。しかしながら、レフトビュー映像と、ライトビュー映像のうちの一方しか再生に利用しない場合には、人の目には平面的な映像としてしか見えない。例えばレフトビューの映像を左目にも右目にも見せるようにすると、レフトビューの映像は、人の目には平面的な映像としてしか見えない。
リモコン300は、階層化されたGUIに対する操作をユーザから受け付ける機器であり、かかる操作受け付けのため、リモコン100は、GUIを構成するメニューを呼び出すメニューキー、メニューを構成するGUI部品のフォーカスを移動させる矢印キー、メニューを構成するGUI部品に対して確定操作を行う決定キー、階層化されたメニューをより上位のものにもどってゆくための戻りキー、数値キーを備える。
テレビ400は、映画作品の再生映像を表示したり、メニュー等を表示することで、対話的な操作環境をユーザに提供する。本図におけるテレビ400の表示画面は、ビデオをスケーリングしてGUIをフル画面化した表示例を示している。このテレビ400の画面のうち、右半分は、映画作品の監督によって記述されたディレクターズコメントcm1を表示している
テレビ400の画面のうち、下半分は、ネクストスキップ、プレビアススキップを受け付けるボタン部材bn1、メニューコールを受け付けるボタン部材bn2、戻る操作を受け付けるボタン部材bn3、ネットワーク接続を受け付けるボタン部材bn4を含み、カレントタイトルの番号及びカレントチャプターの番号を表示するためのインディケータir1を含む。これらのボタン部材については、リモコン300による操作が可能となる。
液晶眼鏡500は、液晶シャッタと、制御部とから構成され、ユーザの両目における視差を用いて立体視を実現する。液晶眼鏡500の液晶シャッタは、印加電圧を変えることにより、光の透過率が変化する性質を有する液晶レンズを用いたシャッタである。液晶眼鏡500の制御部は、再生装置から送られるライトビュー用の画像とレフトビュー用の画像の出力の切り替えの同期信号を受け、この同期信号に従って、第1の状態、第2の状態の切り替えを行う。
第1の状態とは、ライトビューに対応する液晶レンズが光を透過しないように印加電圧を調節し、レフトビューに対応する液晶レンズが光を透過するように印加電圧を調節した状態であり、この状態において、左目にレフトビュー用の画像が視聴に供され、右目にはレフトビュー用の画像が視聴に供されない状態となる。
第2の状態とは、ライトビューに対応する液晶レンズが光を透過するように印加電圧を調節し、レフトビューに対応する液晶レンズが光を透過しないように印加電圧を調節した状態であり、この状態において、右目にライトビュー用の画像を視聴に供され、左目にはライトビュー用の画像が視聴に供されない状態となる。
一般にライトビュー用の画像と、レフトビュー用の画像は、その撮影位置の差に起因して、ライトビューから見える像とレフトビューから見える像には見え方に若干の差があるような画像である。
この像の見え方の差の程度を人間の左目/右目のそれぞれから見える像の差の程度(つまり、視差の程度)とすることにより、利用して人間の目から見える像を立体として認識できるのである。そこで、液晶眼鏡500が、以上のような第1の状態、第2の状態の切り替えを、ライトビュー用の画像とレフトビュー用の画像の出力の切り替えタイミングに同期させれば、ユーザは、平面的な表示が立体的に見えると錯覚する。次に、ライトビュー映像、レフトビュー映像を表示するにあたっての時間間隔について説明する。
具体的には、平面表示の画像において、ライトビュー用の画像とレフトビュー用の画像には人間の視差に相当する見え方の差に相当する程度の差があり、これらの画像を短い時間間隔で切り替えて表示することにより、あたかも立体的な表示がなされているように見えるのである。
この短い時間間隔というのは、上述の切り替え表示により人間が立体的に見えると錯覚する程度の時間であれば足りる。
以上がホームシアターシステムについての説明である。
続いて再生装置200が再生の対象としている、記録媒体について説明する。再生装置200により、再生されるのは、BD-ROM100である。図2は、BD-ROM100の内部構成の一例を示す図である。
本図の第4段目に記録媒体の一例であるBD-ROM100を示し、第3段目にBD-ROM100上のトラックを示す。本図のトラックは、BD-ROM100の内周から外周にかけて螺旋状に形成されているトラックを、横方向に引き伸ばして描画している。このトラックは、リードイン領域と、ボリューム領域と、リードアウト領域とからなる。また、リードインの内側にはBCA(Burst Cutting Area)と呼ばれるドライブでしか読み出せない特別な領域がある。この領域はアプリケーションから読み出せないため、例えば著作権保護技術などに利用されることがよくある。
本図のボリューム領域は、ファイルシステム層、応用層というレイヤモデルをもち、ファイルシステム層には、ファイルシステム情報を先頭に映像データなどのアプリケーションデータが記録されている。ファイルシステムとは、UDFやISO9660などのことであり、通常のPCと同じように記録されている論理データをディレクトリ、ファイル構造を使って読み出しする事が可能になっており、255文字のファイル名、ディレクトリ名を読み出すことが可能である。ディレクトリ構造を用いてBD-ROMの応用層フォーマット(アプリケーションフォーマット)を表現すると、図中の第1段目のようになる。この第1段目においてBD-ROMには、Rootディレクトリの下に、CERTIFICATEディレクトリ、及びBDMVディレクトリがある。
CERTIFICATEディレクトリの配下には、ディスクのルート証明書のファイル(app.discroot.cert)が存在する。app.discroot.certはJava(登録商標)仮想マシンを用いて動的なシナリオ制御を行うJava(登録商標)アプリケーションのプログラムを実行する際に、アプリケーションが改竄されていないか、及びアプリケーションの身元確認を行なうプロセス(以下、署名検証という)に用いられるデジタル証明書である。
BDMVディレクトリはBD-ROM100で扱うAVコンテンツや管理情報などのデータが記録されているディレクトリであり、BDMVディレクトリの配下には、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJOディレクトリ、JARディレクトリ、METAディレクトリと呼ばれる6つのサブディレクトリが存在し、INDEX.BDMVとMovieObject.bdmvの2種類のファイルが配置されている。
STREAMディレクトリは、いわばトランスポートストリーム本体となるファイルを格納しているディレクトリであり、拡張子m2tsが付与されたファイル(00001.
m2ts)が存在する。
PLAYLISTディレクトリには、拡張子mplsが付与されたファイル(00001.mpls)が存在する。
CLIPINFディレクトリには、拡張子clpiが付与されたファイル(00001.clpi)が存在する。
BDJOディレクトリには、拡張子bdjoが付与されたファイル(XXXXX.bdjo)が存在する。
JARディレクトリには、拡張子jarが付与されたファイル(YYYYY.jar)が存在する。
METAディレクトリには、XMLファイル(ZZZZZ.xml)が存在する。
以下、これらのファイルについて説明する。
<m2tsファイル>
先ず初めに、拡張子m2ts;が付与されたファイルについて説明する。拡張子m2ts;が付与されたファイルは、MPEG-TS(TransportStream)形式のデジタルAVストリームであり、ビデオストリーム、1つ以上のオーディオストリーム、グラフィクスストリームを多重化することで得られる。ビデオストリームは映画の動画部分を、オーディオストリームは映画の音声部分をそれぞれ示している。2D用のストリームのみを含むトランスポートストリームを“2Dストリーム”、3D用のストリームを含むトランスポートストリームを“3Dストリーム”という。
3Dストリームの場合はm2tsの中に左目用と右目用の両方のデータを入れることができるし、左目用と右目用に別々にm2tsを用意することができる。ストリームに使われる容量を少なくするため、レフトビュービデオストリームとライトビュービデオストリームが相互参照をするようなコーデック(たとえば、MPEG-4
AVC MVC)を使うことが望ましい。そのようなコーデックで圧縮符号化されたビデオストリームを、MVCビデオストリームと呼ぶ。
<プレイリスト情報>
拡張子“mpls”が付与されたファイルは、PlayList(PL)情報を格納したファイルである。プレイリスト情報は、AVクリップを参照してプレイリストを定義する情報である。
BD-ROM100上には再生対象のストリームが2D用か3D用かを識別する次元識別フラグが存在しており、本実施の形態ではプレイリスト(PL)情報に次元識別フラグを埋め込んでいる。
本実施の形態では、BD-ROM100上のプレイリスト(PL)の構成フォーマットから再生対象のストリームに3D用のストリームが存在するかを特定できる。
プレイリスト情報は、MainPath情報、Subpath情報、PlayListMark情報を含む。
1)MainPath情報は、AVストリームの再生時間軸のうち、In_Timeとなる時点と、Out_Timeとなる時点の組みを1つ以上定義することにより、論理的な再生区間を定義する情報であり、AVストリームに多重化されているエレメンタリストリームのうち、どれの再生を許可し、どれの再生を許可しないかを規定するストリーム番号テーブル(STN_table)をもつ。
2)PlayListMark情報は、In_Time情報及びOut_Time情報の組みにて指定されたAVストリームの一部分のうち、チャプターとなる時点の指定を含む。
3)Subpath情報は、1つ以上のSubPlayItem情報から構成され、SubPlayItem情報は、前記AVストリームと同期して再生すべきエレメンタリストリームの指定と、そのエレメンタリストリームの再生時間軸におけるIn_Time情報及びOut_Time情報の組みとを含む。再生制御のためのJava(TM)アプリケーションが、このプレイリスト情報を再生するJMFプレーヤインスタンスの生成をJava(TM)仮想マシンに命じることで、AV再生を開始させることができる。JMF(Java Media Frame work)プレーヤインスタンスとは、JMFプレーヤクラスを基にして仮想マシンのヒープメモリ上に生成される実際のデータのことである。
さらに、用語定義として2Dプレイリストは2D再生用のストリームのみが含まれるものであり、3Dプレイリストには2Dストリームに加えて、3D立体視用のストリームも含まれるものである。
拡張子“clpi”が付与されたファイルは、AVクリップのそれぞれに1対1に対応するClip情報である。管理情報故に、Clip情報は、AVクリップにおけるストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置を示すEP_mapをもっている。以上のClip情報及びプレイリスト情報は、“静的シナリオ”に分類される。
<BD-Jオブジェクト>
続いて、拡張子BDJOを付したファイルについて説明する。拡張子BDJOを付したファイルは、BD-Jオブジェクトを格納したファイルである。BD-Jオブジェクトは、プレイリスト情報により定義されるAVクリップ列と、アプリケーションとの関連付けにより、タイトルを定義する情報である。BD-Jオブジェクトは、“アプリケーション管理テーブル”と、“プレイリスト情報に対する参照値”とを示す。“プレイリスト情報に対する参照値”は、このタイトルの開始時に、同時に再生すべきプレイリスト情報を示す。アプリケーション管理テーブルは、このタイトルを生存区間とするアプリケーションを指定する情報を羅列したものである。
アプリケーション管理テーブルには、アプリケーション詳細情報として、アプリケーションの名称を示す文字列と、アプリケーションに対応づけるアイコンの所在を指し示すアイコンロケータとを、アプリケーション毎にさせて格納している。アイコンロケータは、Java(登録商標)アーカイブファイル内に含まれるアイコンをアドレスにより指し示す。
このJava(登録商標)アプリケーションの実体にあたるのが、図2におけるBDMVディレクトリ配下のJARディレクトリに格納されたJava(登録商標)アーカイブファイル(YYYYY.jar)である。
アプリケーションは例えばJava(登録商標)アプリケーションであり、仮想マシンのヒープ領域(ワークメモリとも呼ばれる)にロードされる1つ以上のxletプログラムからなる。BD-Jオブジェクト内のアプリケーション管理テーブルに従ってアプリケーションシグナリングがなされ、生存区間が管理されるのでBD-Jアプリケーションと呼ばれる。BD-Jアプリケーションは、インタラクティブ性の向上を目的としたものであり、BD-Jアプリケーションを動作させるべく、再生装置のプラットフォームにはスケーリングのサイズ(以降、スケーリングFactor)を入力情報としたスケーリング命令を発行できるAPIが定義されている。それ以外にも、ユーザが直接機器内に組み込まれたレジデントアプリケーションによってスケーリング命令を発行することも可能である。スケーリング命令の発行のタイミングは自由であり、ビデオストリームの再生中に発行されることもあれば、それ以外のタイミングで発行する。
METAディレクトリに格納されたメタファイル(ZZZZZ.xml)には、ディスクに入っている映像作品に関する様々な情報が格納されている。メタファイルに格納されている情報としては、ディスクのディスク名及び画像、ディスクが誰によって作成されたかの情報、各タイトルに関わるタイトル名等がある。以上がBD-ROM100についての説明である。メタファイルは、必須のファイルではなく、このファイルが格納されていないBD-ROMもある。
以上がBD-ROMについての説明である。続いて、BD-Jオブジェクトについて説明する。図3は、BD-Jオブジェクトの内部構成の一例を示す図である。本図に示すように、BD-Jオブジェクトは、「アプリケーション管理テーブル」、「GUI管理テーブル」、「プレイリスト管理テーブル」から構成される。
以下、これらの構成要素について説明する。
「アプリケーション管理テーブル(AMT)」は、タイトルを生存区間としたアプリケーションシグナリングを、再生装置に行わせるためのテーブルである。引き出し線bj1は、アプリケーション管理テーブルの内部構成をクローズアップして示している。この引き出し線に示すように、アプリケーション管理テーブルは、BD-Jオブジェクトに対応するタイトルがカレントタイトルになった際、動作させるべきアプリケーションを特定する『アプリケーション識別子』と、『制御コード』とを含む。制御コードは、AutoRunに設定された場合、このアプリケーションをヒープメモリにロードした上、自動的に起動する旨を示し、Presentに設定された場合、このアプリケーションをヒープメモリにロードした上、他のアプリケーションからのコールを待って、起動すべき旨を示す。
「GUI管理テーブル(GMT)」は、動作中のアプリケーションがGUIを行う際の管理テーブルであり、GUI表示を実行するにあたっての解像度や、GUIに用いるフォントデータ、GUIに対するメニューコール、タイトルコールがユーザによってなされた場合、これらのコールをマスクするかどうかを規定するマスクフラグを含む。引き出し線bj2は、GUI管理テーブルの内部構成をクローズアップして示している。この引き出し線bj2に示すように、GUI管理テーブルは、HD3D_1920×1080、HD3D_1280×720、HD_1920×1080、HD_1280×720、QHD960×540,SD,SD_50HZ_720×576,SD_60HZ_720×480の何れかに設定することができる。
「プレイリスト管理テーブル(PLMT)」は、BD-Jオブジェクトに対応するタイトルがカレントタイトルになった際、自動的に再生されるべきプレイリストの指定を含む。引き出し線bj4は、自動再生プレイリストの内部構成をクローズアップして示している。引出線bj4に示すように、自動再生プレイリストを指定する情報として、3Dプレイリスト1920×1080、3Dプレイリスト1280×720、2Dプレイリスト1920×1080、2Dプレイリスト1280×720、2Dプレイリスト720×576、2Dプレイリスト720×480の指定が可能になる。
再生装置の構成要素を詳細に説明する。図4は、再生装置の内部構成の構成の一例を示す図である。本図に示すように、再生装置には、BDドライブ1a,ローカルストレージ1b、ネットワークインターフェース1b,ローカルストレージ1c、リードバッファ2a,2b、仮想ファイルシステム3、デマルチプレクサ4、ビデオデコーダ5a,5b、ビデオプレーン6、イメージデコーダ7a,7b、イメージメモリ7c,7d、イメージプレーン8、オーディオデコーダ9、インタラクティブグラフィクスプレーン10、バックグラウンドプレーン11、レジスタセット12、静的シナリオメモリ13、再生制御エンジン14、スケーリングエンジン15、合成部16、HDMI送受信部17、表示機能フラグ保持部18、左右処理記憶部19、プレーンシフトエンジン20、オフセット設定部21、BD-Jプラットフォーム22、レンダリングエンジン22a、動的シナリオメモリ23、モード管理モジュール24、HDMVモジュール25、UO検知モジュール26、静止画メモリ27a、静止画デコーダ27b、表示モード設定イニシャル表示設定部28、表示モード記憶部29から構成される。
本実施形態において、BD-ROM100には、図2に示すようなファイル構造のデータを格納しており、後述する仮想的なBD-ROM(仮想パッケージ)から左目用のビデオストリーム、右目用のビデオストリーム、字幕ストリーム、グラフィックスストリームが後述する図4に記載の仮想ファイルシステム3を介して読み出せる。ここでは説明を簡単にするため左目用のビデオストリーム、右目用のビデオストリームがBD-ROM100に記録されているものを例にして説明をする)
また字幕ストリーム、グラフィックスストリームについては左目用/右目用のものがそれぞれBD-ROM100に記録されていても良いし、1の字幕ストリーム、グラフィックスストリームを左右で共有する構成であっても良い。この場合、後述するようにオフセットを与えることにより、液晶眼鏡500を介して見える字幕、グラフィックスは平面的な像ではあるものの、表示画面から飛び出た位置に見えるようにしたり、表示画面よりも奥に位置するように見えるようにすることができる。
このBD-ROM100に記録された、左目用のビデオストリーム、右目用のビデオストリームのそれぞれが再生装置200に入力されて再生される映像というのは人間の視差の程度において見え方(例えば見える角度)の違う映像であり、このような映像を再生するためのデータがビデオストリームとして予めBD-ROM100に記録されている。
本実施の形態においては、予め一つのストリームファイルに右目用のビデオストリームと左目用のビデオストリーム、字幕ストリーム、グラフィックスストリームが埋め込まれている形態が望ましい。これは、メモリやグラフィクスにおける機器リソースが乏しい機器(例えばCE機器)が必要とする演算量をなるべく抑えるためである。
(BDドライブ1a)
BDドライブ1aは、例えば、半導体レーザ(不図示)、コリメートレンズ(不図示)、ビームスプリッタ(不図示)、対物レンズ(不図示)、集光レンズ(不図示)、光検出器(不図示)を有する光学ヘッド(不図示)を備える。半導体レーザから出射された光ビームは、コリメートレンズ、ビームスプリッタ、対物レンズを通って、光ディスクの情報面に集光される。集光された光ビームは、光ディスク上で反射/回折され、対物レンズ、ビームスプリッタ、集光レンズを通って、光検出器に集光される。光検出器にて集光された光の光量に応じて、生成された信号がBD-ROMから読み出されたデータに対応する。
(ネットワークインターフェース1b)
ネットワークインターフェース1bは、再生装置の外部と通信を行うためのものであり、インターネットでアクセス可能なサーバにアクセスしたり、ローカルネットワークで接続されたサーバにアクセスしたりすることが可能である。例えば、インターネット上に公開されたBD-ROM追加コンテンツのダウンロードに用いられたり、コンテンツが指定するインターネット上のサーバとの間でデータ通信を行うこうことでネットワーク機能を利用したコンテンツの再生を可能としたりする。BD-ROM追加コンテンツとは、BDドライブ1aに装填したオリジナルのBD-ROM100にないコンテンツで、例えば追加の副音声、字幕、特典映像、アプリケーションなどである。BD-Jプラットフォームからネットワークインターフェース1bを制御することができ、インターネット上に公開された追加コンテンツをローカルストレージ1cにダウンロードすることができる。
(ローカルストレージ1c)
ローカルストレージ1cは、ビルドインメディア、リムーバブルメディアを備え、ダウンロードしてきた追加コンテンツやアプリケーションが使うデータなどの保存に用いられる。追加コンテンツの保存領域はBD-ROM毎に分かれており、またアプリケーションがデータの保持に使用できる領域はアプリケーション毎に分かれている。また、ダウンロードした追加コンテンツをどのようにBDドライブ1aに装填したBD-ROM上のデータとマージされるか、マージ規則が記載されたマージ管理情報もこのビルドインメディア、リムーバブルメディアに保存される。
ビルドインメディアとは例えば再生装置に内蔵されたハードディスクドライブ、メモリなどの書き込み可能な記録媒体である。
リムーバブルメディアとは、例えば可搬性を有する記録媒体であり、好適にはSDカードなどの可搬性を有する半導体メモリーカードである。
リムーバブルメディアを半導体メモリーカードとしたときを例に説明をすると、再生装置にはリムーバブルメディアを装着するためのスロット(不図示)およびスロットに装着されたリムーバブルメディアを読み取るためのインターフェース(例えばメモリーカードI/F)が備えられており、スロットに半導体メモリを装着すると、リムーバブルメディアと再生装置とが電気的に接続され、インターフェース(例えばメモリーカードI/F)を利用して、半導体メモリに記録されたデータを電気信号に変換して読み出すことが可能となる。
(リードバッファ2a)
リードバッファ2aは、BDドライブ1aから読み出されたレフトビューストリームを構成するエクステントを構成するソースパケットを一旦格納しておき、転送速度を調整した上、デマルチプレクサ4に転送するためのバッファである。
(リードバッファ2b)
リードバッファ2bは、BDドライブ1aから読み出されたライトビューストリームを構成するエクステントを構成するソースパケットを一旦格納しておき、転送速度を調整した上、デマルチプレクサ4に転送するためのバッファである。
(仮想ファイルシステム3)
仮想ファイルシステム3は、例えば追加コンテンツと共にローカルストレージ1cにダウンロードされたマージ管理情報を元に、ローカルストレージに格納された追加コンテンツと装填したBD-ROM上のコンテンツをマージさせた、仮想的なBD-ROM(仮想パッケージ)を構築する。仮想パッケージの構築のため仮想ファイルシステム3は、アプリケーション関連付け情報を生成、及び更新するためのアプリデータ関連付けモジュールを有している。アプリデータ関連付け情報とは、BD-ROMディスク上の情報と、アプリケーションが設定する属性情報とを元にして、ローカルストレージの情報をアプリケーションに関連付ける情報である。
HDMVモードの動作主体であるコマンドインタプリタやBD-Jモードの動作主体であるBD-Jプラットフォームからは、仮想パッケージとオリジナルBD-ROMを区別なく参照することができる。仮想パッケージ再生中、再生装置はBD-ROM上のデータとローカルストレージ上のデータの両方を用いて再生制御を行うことになる。
(デマルチプレクサ4)
デマルチプレクサ4は、例えばソースパケットデパケッタイザー、PIDフィルタから構成され、再生すべきストリーム(ストリームは構築した仮想パッケージ(装填したBD-ROMおよび装填したBD-ROMに対応するローカルストレージ上のデータ)に含まれる)に対応するパケット識別子の指示を受け付けて、当該パケット識別子に基づくパケットフィルタリングを実行する。パケットフィルタリングにあたって、左右処理記憶部19のフラグを基に、レフトビュービデオストリーム、ライトビュービデオストリームのうち、表示方式フラグに対応したビデオストリームを抜き出し、ビデオデコーダ5a、ビデオデコーダ5bに転送する。デマルチプレクサ3はストリームのヘッダ情報から左目用ビデオフレームと右目用ビデオフレームの振り分けを行う。
再生対象のストリームから分離されたストリームが字幕ストリームである場合、デマルチプレクサ4は、分離された字幕ストリームをイメージメモリに書き込む。例えば3D字幕ストリーム(レフトビュー用の字幕ストリーム、ライトビュー用の字幕ストリーム)がストリームに含まれている場合には、レフトビュー用の字幕ストリームをイメージメモリ7cに書き込み、ライトビュー用の字幕ストリームをイメージメモリ7dに書き込む。
また、例えば字幕ストリームが2Dの字幕ストリーム(平面表示のために用いる字幕ストリーム)がストリームに含まれている場合には、2Dの字幕ストリームをイメージメモリ7cに書き込む。
(ビデオデコーダ5a)
ビデオデコーダ5aは、デマルチプレクサ4から出力されたTSパケットを復号して非圧縮形式のピクチャをレフトビュービデオプレーン6(図4のビデオプレーン6における符号(L)で示したもの)に書き込む。
(ビデオデコーダ5b)
ビデオデコーダ5bは、デマルチプレクサ4から出力されたライトビュービデオストリームを復号してTSパケットを復号して非圧縮形式のピクチャをライトビュービデオプレーン6(図4のビデオプレーン6における符号(R)で示したもの)に書き込む。
(ビデオプレーン6)
ビデオプレーン6は例えば、1920×2160(1280×1440)といった解像度に応じたピクチャデータを格納することができるプレーンメモリであり、1920×1080(1280×720)の解像度をもつ左目用プレーン(図4のビデオプレーン6における符号(L)で示したもの)、1920×1080(1280×720)の解像度をもつ右目用プレーン(図4のビデオプレーン6における符号(R)で示したもの)を有する。
(イメージデコーダ7a,b)
イメージデコーダ7a,bは、デマルチプレクサ4から出力され、イメージメモリ7c、7dに書き込まれた字幕ストリームを構成するTSパケットを復号して非圧縮形式のグラフィクス字幕をグラフィクスプレーン8aに書き込む。イメージデコーダ7a,bによりデコードされる“字幕ストリーム”は、ランレングス符号化によって圧縮された字幕を表すデータであり、Y値,Cr値,Cb値,α値を示すピクセルコードと、そのピクセルコードのランレングスとによって定義される。
(イメージプレーン8)
イメージプレーン8は、例えば1920×1080(1280×720)といった解像度によって、字幕ストリームをデコードすることにより得られたグラフィクスデータ(例えば字幕データ)を格納することができるグラフィクスプレーンであり、例えば1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する左目用プレーン(図4に示したイメージプレーン8における符号(L)で示したもの)、1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する右目用プレーン(図4に示したイメージプレーン8における符号(R)で示したもの)を有する。
(オーディオデコーダ9)
オーディオデコーダ9は、デマルチプレクサ4から出力されたオーディオフレームを復号して、非圧縮形式のオーディオデータを出力する。
(インタラクティブグラフィクスプレーン10)
インタラクティブグラフィクスプレーン10は、例えば1920×1080(1280×720)といった解像度によって、BD-Jアプリケーションがレンダリングエンジン22aを利用して描画したグラフィクスデータを格納することができる記憶領域を有するグラフィクスプレーンであり、例えば1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)、1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付したもの)を有する。
インタラクティブグラフィクスプレーン10に格納される“グラフィクスデータ”は、個々の画素がR値,G値,B値,α値によって定義されるグラフィクスである。インタラクティブグラフィクスプレーン10に書き込まれるグラフィクスは、主にGUIを構成するために使われる目的を持つイメージやウィジェットである。画素を表すデータに違いがあるものの、イメージデータ及びグラフィクスデータは、グラフィクスデータという表現で包括される。本願が対象としているグラフィクスプレーンには、イメージプレーン8、インタラクティブグラフィクスプレーン10の2種類があり、単に“グラフィクスプレーン”と呼ぶ場合、イメージプレーン8、インタラクティブグラフィクスプレーン10の双方又はどちらかを指し示すものとする。
(バックグラウンドプレーン11)
バックグラウンドプレーン11は、例えば1920×1080(1280×720)といった解像度によって、背景画となるべき静止画データを格納することができるプレーンメモリであり、具体的には、1920×1080(1280×720)の解像度をもつ左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)、1920×1080(1280×720)の解像度をもつ右目用プレーン(図4に示すバックグラウンドプレーン11における符号(R)を付したもの)を有する。
(レジスタセット12)
レジスタセット12は、プレイリストの再生状態を格納する再生状態レジスタ、再生装置におけるコンフィグレーションを示すコンフィグレーション情報を格納する再生設定レジスタ、コンテンツが利用する任意の情報を格納できる汎用レジスタを含む、レジスタの集まりである。プレイリストの再生状態とは、プレイリストに記載されている各種AVデータ情報の中のどのAVデータを利用しているか、プレイリストのどの位置(時刻)を再生しているかなどの状態を現す。
プレイリストの再生状態が変化した際は、再生制御エンジン14がPSRセット12に対し、その内容を格納する。また、HDMVモードの動作主体であるコマンドインタプリタもしくはBD-Jモードの動作主体であるJavaプラットフォームが実行しているアプリケーションからの指示により、アプリケーションが指定した値を格納したり、格納された値をアプリケーションに渡したりすることが可能である。
(静的シナリオメモリ13)
静的シナリオメモリ13は、カレントプレイリスト情報やカレントクリップ情報を格納しておくためのメモリである。カレントプレイリスト情報とは、BD-ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数プレイリスト情報のうち、現在処理対象になっているものをいう。カレントクリップ情報とは、BD-ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数クリップ情報のうち、現在処理対象になっているものをいう。
(再生制御エンジン14)
再生制御エンジン14は、HDMVモードの動作主体であるコマンドインタプリタ、BD-Jモードの動作主体であるJavaプラットフォームからの関数呼び出しに応じて、AV再生機能、プレイリストの再生機能を実行する。AV再生機能とは、DVDプレーヤ、CDプレーヤから踏襲した機能群であり、再生開始、再生停止、一時停止、一時停止の解除、静止画機能の解除、再生速度を即値で指定した早送り、再生速度を即値で指定した巻戻し、音声切り替え、副映像切り替え、アングル切り替えといった処理である。プレイリスト再生機能とは、このAV再生機能のうち、再生開始や再生停止をカレントプレイリストを構成するカレントプレイリスト情報、カレントクリップ情報に従って行うことをいう。
ディスク(例えばBD-ROM100)の挿入というイベントが発生した場合、再生制御エンジン12による再生処理の対象となるプレイリスト及びAVストリームは、BD-ROM上のカレントシナリオに記載されている自動再生プレイリスト(AutoStartPlaylist)である。AVストリーム再生は、ユーザオペレーション(例えば再生ボタン)をトリガーとして開始する場合もあれば、端末内の何かのイベントをトリガーとして自動的に開始する場合もある。
(スケーリングエンジン15)
スケーリングエンジン15は、イメージプレーン8やビデオプレーン5にある映像の縮小、拡大、及び等倍の制御を行うことが可能である。スケーリングエンジン15は、イメージデータ、ピクチャデータのデコードがされた時点でプレーンシフトエンジン20内に値が設定されていれば、スケーリングが発生しているとみなし、デコードされたビデオデータをビデオプレーンに格納する前、デコードされたグラフィクスをイメージプレーンに格納する前にスケーリングエンジン15を通してスケーリングを行わせる。
スケーリングFactorは例えば水平画素数の倍率及び/又は垂直画素数の倍率であり、例をあげると、基本となる解像度が、1920×1080ピクセルのであるグラフィクスデータに対して、“1/2”のスケーリングFactorが指定された場合、グラフィクスデータの解像度は、(1920×0.5)×(1080×0.5)画素、つまり、960×540ピクセルに縮小される。スケーリングFactorは1/2のように、1以下の値だけでなく、1以上の値を設定することも可能であり、その場合は拡大処理が施される。
(合成部16)
合成部16は、インタラクティブグラフィクスプレーン10、イメージプレーン8、ビデオプレーン6、バックグラウンドプレーン11の格納内容を合成する。
インタラクティブグラフィクスプレーン10、イメージプレーン8、ビデオプレーン6とバックグラウンドプレーン11は別々のレイヤー構成になっており、必ず、下から、バックグラウンドプレーン11、ビデオプレーン6、イメージプレーン8、インタラクティブグラフィクスプレーンの順に格納されたデータの合成(重ね合わせ)を行う。イメージプレーンのデータとして字幕、インタラクティブグラフィクスプレーン10のデータとしてのPOP-UPメニュー(グラフィクス)、GUIグラフィックスのデータを表示するコンテンツの再生を想定した場合、合成部は、必ずビデオプレーン6のデータ(ビデオ)上にイメージプレーン8のデータ(字幕)を重ね合わせ、イメージプレーン8の上にインタラクティブグラフィクスプレーン10のデータを重ね合わせる。つまり、たとえビデオプレーンが立体視のコンテンツであっても、奥行きのない字幕やPOP-UPメニュー、GUIが立体視ビデオに重なった場合はイメージ(字幕、POP-UPメニュー、GUIといった画像)を優先して表示させなければならない。これはスケーリングを行った時も同様である。
(HDMI送受信部17)
HDMI送受信部17は、例えばHDMI規格(HDMI:High Definition Multimedia Interface)に準拠したインターフェイスを含み、再生装置とHDMI接続する装置(この例ではテレビ400)とHDMI規格に準拠するように送受信を行うものであり、ビデオに格納されたピクチャデータと、オーディオデコーダ9によってデコードされた非圧縮のオーディオデータとを、HDMI送受信部16を介してテレビ400に伝送する。テレビ400は、例えば立体視表示に対応しているかに関する情報、平面表示可能な解像度に関する情報、立体表示可能な解像度に関する情報を保持しており、再生装置からHDMI送受信部16を介して要求があると、テレビ400は要求された必要な情報(例えば立体視表示に対応しているかに関する情報、平面表示可能な解像度に関する情報、立体表示可能な解像度に関する情報)を再生装置へ返す。このように、HDMI送受信部16を介することで、テレビ400が立体視表示に対応しているかどうかの情報を、テレビ400から取得することができる。
(表示機能フラグ保存部18)
表示機能フラグ保存部18は、再生装置は再生装置が3Dの表示が可能か否かの区別を示す、3D表示機能フラグを保存している。
(左右処理記憶部19)
左右処理記憶部19は、現在の出力処理がレフトビュー用の出力か、または、ライトビュー用の出力かを記憶する。左右処理記憶部19のフラグは、図1に示した再生装置と接続する表示デバイス(図1の例ではテレビ)に対する出力が、レフトビュー出力であるか、ライトビュー出力であるかを示す。レフトビュー出力をしている間、左右処理記憶部19のフラグはレフトビュー出力を示すフラグに設定される。また、ライトビュー出力をしている間、左右処理記憶部19のフラグはライトビュー出力を示すフラグに設定される。
(プレーンシフトエンジン20)
プレーンシフトエンジン20はプレーンオフセットを保存する領域を兼ね備え、左右処理記憶部19に現在の処理対象が左目映像か右目映像かを判定した後、保存しているプレーンオフセットを用いてイメージプレーンの横軸のシフト量(表示画面上に表示される像を表示画面の水平方向へ基準となる位置からどの程度ずらすかを示す量)を計算し、シフトする。表示される字幕(グラフィクス)のシフト量を調節することにより、液晶眼鏡500を介して見える平面的な字幕(グラフィクス)は表示画面の位置よりも手前/奥に表示されているように見せることができる。シフト量というのは表示画面の位置からどの程度、手前に位置しているように見えるかまたは奥に位置しているように見えるかを調節するための量である。
つまり、字幕/グラフィクスの横軸のずらし幅を変更することによって、奥行きが変更する。例えば、左目用字幕と右目用字幕を一定方向に遠くへ離せば離すほど手前に位置するように表示され、逆方向に遠くへ離せば離すほど奥に位置するように表示される視覚効果を得られる。
シフト量によっては、ディスプレイの解像度とサイズによってはイメージプレーンの変位が大きくなりすぎ、目がついていかなくイメージが二重に見える現象になる場合がある。その場合はプレーンオフセットに記載された値を基にディスプレイの解像度とサイズの情報を組み合わせ、字幕・グラフィクスが手前に表示しすぎないように調整する。例えば、再生装置200がプレーンオフセットの値を設定できるセットアップ機能を兼ね備えている場合、プレーンシフトエンジン20は、セットアップ機能を用いて設定した値を保存する。
(オフセット設定部21)
オフセット設定部21は、オフセットの更新要求があった場合に更新すべきオフセットを後述するプレーンシフトエンジン20のオフセット値保存部41に設定するものである。
具体的には(a)後述する表示モード記憶部29に記憶されているイメージプレーン設定のオフセット値、インタラクティブグラフィックスプレーン設定のオフセット値を読み込んで設定する、(b)デマルチプレクサ4に入力されるストリームのヘッダ領域に保持されているイメージプレーンのオフセット値、インタラクティブグラフィックスプレーンのオフセット値をデマルチプレクサ4が取得して、デマルチプレクサ4から得た上述のオフセットの値を設定する、(c)UO検知モジュール26から送られてくるイメージプレーンのオフセット値、インタラクティブグラフィックスプレーンのオフセット値を読み込んで設定する、(d)カレントプレイリスト情報に含まれるイメージプレーンのオフセット値、インタラクティブグラフィックスプレーンのオフセット値を読み込んで設定するなどの動作により設定がなされる。
ユーザ、あるいはアプリケーションからのプレーンのオフセットの更新要求があった際に一時的にその値を保存するモジュールである。プレーンオフセットは例えば奥行きが-63〜63で表現されている整数とし(63が一番手前で-63が一番奥)、それを最終的なシフトの幅を示す画素座標に変換する。
(BD-Jプラットフォーム22)
BD-Jプラットフォーム22は、BD-Jモードの動作主体であるJavaプラットフォームであり、Java2Micro_Edition(J2ME)
Personal Basis Profile(PBP 1.0)と、Globally Executable MHP
specification(GEM1.0.2)for package media targetsとをフル実装しており、JARアーカイブファイルに存在するクラスファイルからバイトコードを読み出して、ヒープメモリに格納することにより、BD-Jアプリケーションを起動する。そしてBD-Jアプリケーションを構成するバイトコード、システムアプリケーションを構成するバイトコードをネィティブコードに変換して、MPUに実行させる。BD-Jプラットフォーム22は、BD-Jアプリケーションからスケーリングが要求された際、引数として与えられたスケーリングFactorを後述する図21に示すスケーリングエンジン20のスケーリングFactor保存部42に格納する
(レンダリングエンジン22a)
レンダリングエンジン22aは、Java2D,OPEN-GLといった基盤ソフトウェアを備え、BD-JモードにおいてはBD-Jプラットフォーム22からの指示に従って、グラフィクスや文字列をインタラクティブグラフィクスプレーン10に書き込む。またHDMVモードにおいて、レンダリングエンジン22aは、字幕に対応するストリーム(字幕ストリーム)以外のグラフィクスストリームから抽出したグラフィクスデータ(例えば、入力ボタンに対応するグラフィクスデータ)をレンダリングし、インタラクティブグラフィクスプレーン10に書き込む。
(動的シナリオメモリ23)
動的シナリオメモリ23は、カレント動的シナリオを格納しておき、HDMVモードの動作主体であるHDMVモジュール、BD-Jモードの動作主体であるJavaプラットフォームによる処理に供されるメモリである。カレント動的シナリオとは、BD-ROMまたはビルドインメディア、リムーバブルメディアに記録されているIndex.bdmv、BD-Jオブジェクト、ムービーブジェクトのうち、現在実行対象になっているものをいう。
(モード管理モジュール24)
モード管理モジュール24は、BD-ROM100またはローカルストレージ1c(図4の例ではビルドインメディアドライブ、リムーバブルメディアドライブ)から読み出されたIndex.bdmvを保持して、モード管理及び分岐制御を行う。モード管理モジュール24によるモード管理とは、動的シナリオを、BD-Jプラットフォーム22、HDMVモジュール25のどちらに実行させるかという、モジュールの割り当てである。
(HDMVモジュール25)
HDMVモジュール25は、HDMVモードの動作主体となるDVD仮想プレーヤであり、HDMVモードの実行主体となる。本モジュールは、コマンドインタプリタを具備し、ムービーオブジェクトを構成するナビゲーションコマンドを解読して実行することでHDMVモードの制御を実行する。ナビゲーションコマンドは、DVD-Videoと似たようなシンタックスで記述されているため、かかるナビゲーションコマンドを実行することにより、DVD-Videoライクな再生制御を実現することができる。
(UO検知モジュール26)
UO検知モジュール26は、GUIに対するユーザオペレーションを受け付ける。かかるGUIによって受け付けられるユーザオペレーションには、BD-ROMに記録されているタイトルのうち、どれを選択するかというタイトル選択、字幕選択、音声選択がある。特に、立体視再生特有のユーザオペレーションとして、立体視映像の奥行き感のレベルを受け付けることがある。例えば、奥行き感が、遠い、普通、近い等の3つのレベルを受け付けることがあるし、奥行き感は何cm、何mmというように、数値入力によって奥行き感のレベルを受け付けることもある。
またUO検知モジュール26は、リモコンや機器に付属のボタンなどの操作によりイメージプレーンのスケーリングを変更する命令を受け付けた場合、それを機器内のモジュールが直接スケーリング命令を発行する。
(静止画メモリ27a)
静止画メモリ27aは、BD-ROM、または、構築した仮想パッケージから取り出された背景画となる静止画データを格納する。
(静止画デコーダ27b)
静止画デコーダ27bは、静止画メモリ27aに読み出された静止画データをデコードして、非圧縮の背景画データをバックグラウンドプレーン11に書き込む。
(表示モード設定イニシャル表示設定部28)
表示モード設定イニシャル表示設定部28は、BD-Jプラットフォーム部に供せられるカレントタイトルにおけるBD-Jオブジェクトに基づき、表示モード、解像度の設定を行う。
(表示モード記憶部29)
表示モード記憶部29は、表示モードが2Dまたは3Dのいずれであるのか、およびステレオモードがONまたはOFFのいずれであるのかを記憶する。再生装置が3D表示機能フラグとして3D表示が可能と設定されている場合、表示モード記憶部29に保存された端末設定である表示モードは、2D、3Dの何れかに切り替えることが可能となる。以後、表示モードが“3D”と示されている状態を“3D表示モード”と呼び、表示モードが“2D”と示されている状態を“2D表示モード”と呼ぶ。
この表示モードが、どのようなものであるかについて説明する。再生装置が3D表示モードの場合、各プレーンは、ステレオモードONの状態、ステレオモードOFFの状態の何れかの状態をとる。ステレオモードのONとOFFの違いはプレーンの合成方法の違いでもある。
ビデオストリームを例に説明をすると、“ステレオモードON”とは、再生装置は見え方(例えば見える角度)の異なる2つの映像(例えば視差の程度において、見える角度の異なるレフトビュー用の映像とライトビュー用の映像)をそれぞれ用いて表示するような合成を行う3D表示モードである。
“ステレオモードOFF”とは、再生装置は1つの映像(例えばレフトビュー用の映像とライトビュー用の映像のいずれか一方の映像であり、ここではレフトビュー用の映像を用いる例を説明する)を用いて左目/右目に供するような合成を行う3D表示モードである。つまり、両目で視聴した場合は立体感がない映像(平面映像)になる。
ただし、例えばグラフィクスプレーン8においてはプレーンオフセットによる水平方向へのシフトにより、グラフィクスプレーンに格納され表示される平面的なグラフィクスデータ(字幕データ)を表示画面よりも手前または奥に位置するように見せることが可能である。このことは、ビデオプレーンに記憶されたビデオデータ、インタラクティブグラフィクスプレーンに記憶されたインターラクティブグラフィクスデータ、バックグラウンドプレーン11に記憶された背景画データにおいて、“ステレオモードOFF”である場合にオフセットを調節すれば、同様のことが言える。
以上説明したように“3D表示モード”において、“ステレオモードON”と、“ステレオモードOFF”の2つがあり、“3D表示モード”における“ステレオモードON”においてはレフトビュー用のデータとライトビュー用のデータ(例えば左目から見える像と右目から見える像とは見える角度の異なる像)であり、これらをそれぞれレフトビュー用のプレーンとライトビュー用のプレーンに格納し、格納された像を同期信号に従って表示することにより、立体感のある像を表示することが可能である。
また、“3D表示モード”における“ステレオモードOFF”においてはレフトビュー用のデータとライトビュー用のデータのうちのいずれか一方のデータ(本実施の形態では例えばレフトビュー用のデータ)のみを用いて、これをレフトビュー用のプレーンとライトビュー用のプレーンのそれぞれに格納し、プレーンオフセットを調節することにより、平面的な像を表示画面よりも手前または奥に位置するように表示することが可能である。
本実施の形態においては、“ステレオモードON”、“ステレオモードOFF”、はプレーン毎(つまり、ビデオプレーン6、グラフィクスプレーン8、インタラクティブグラフィクスプレーン10、バックグラウンドプレーン11毎)に設定できるように構成している。
また、“2D表示モード”というのは通常の表示、つまり、表示画面の位置に対応する像が表示するものである。この場合、デフォルトで利用されるデコーダ、プレーンを予め決められておりこのデコーダ、プレーンを利用して合成画像を表示するように構成がなされている。
例えば、“2D表示モード”の場合、ビデオデコーダ5aが左目用ビデオプレーン(図4に示したビデオプレーン6における符号(L)で示したもの)に書き込んだ2Dビデオデータ、イメージデコーダ7aが左目用プレーン(図4に示したイメージプレーン8における符号(L)で示したもの)に書き込んだ2Dグラフィクスデータ(字幕データ)、BD-Jアプリケーションがレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)に書き込んだ2Dインタラクティブグラフィクス、静止画デコーダ27bが左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)に書き込んだ2Dの静止画データを合成するように構成されている。
このとき、合成の順序は下から2D静止画データ、2Dビデオデータ、2Dグラフィクスデータ(字幕データ)、2Dインタラクティブグラフィクスの順で合成する。
表示モード設定イニシャル表示設定部28は、BD-Jプラットフォーム部に供せられるカレントタイトルにおけるBD-Jオブジェクトに基づき、表示モード、解像度の設定を行う。
この表示モードの設定によって、各プレーンメモリへの書き込みがどのように変化するかを説明する。
(ビデオプレーン6への書き込み)
先ず始めに、ビデオプレーン6について説明する。ビデオデータの表示モードが3D表示モードであって、かつステレオモードがオンである場合には、ビデオデコーダ5aがレフトビュー用のビデオストリームをデコードし、左目用プレーン(図5に示したビデオプレーン6における符号(L)で示したもの)に書き込むとともに、ビデオデコーダ5bがライトビュー用のビデオストリームをデコードし、右目用プレーン(図5に示したビデオプレーン6における符号(R)で示したもの)に書き込む。
また、ビデオデータの表示モードが3D表示モードであって、かつステレオモードがオフである場合には、ビデオデコーダ5aは、例えばレフトビュー用のビデオストリームをデコードし、左目用プレーン(図5に示したビデオプレーン6における符号(L)で示したもの)および右目用プレーン(図5に示したビデオプレーン6における符号(R)で示したもの)に書き込む。
また、ビデオデータの表示モードが2D表示モードである場合は、例えばデマルチプレクサ4は、2Dビデオストリームをビデオデコーダ5aへ送り、ビデオデコーダ5aは、デコードした2Dビデオデータを左目用ビデオプレーン(図5に示したビデオプレーン6における符号(L)で示したもの)に書き込むように構成されている。
以上がビデオプレーン6についての説明である。
続いて、イメージプレーン8の詳細について説明する。
(イメージプレーン8への書き込み)
例えば字幕データの表示モードが3D表示モードであって、かつステレオモードがオンである場合には、イメージデコーダ7aがイメージメモリ7cに記憶されたレフトビュー用の字幕ストリームをデコードし、左目用プレーン(図5に示したイメージプレーン8における符号(L)で示したもの)に書き込むとともに、イメージデコーダ7bがイメージメモリ7dに記憶されたライトビュー用の字幕ストリームをデコードし、右目用プレーン(図5に示したイメージプレーン8における符号(R)で示したもの)に書き込む。
また、字幕データの表示モードが3D表示モードであって、かつステレオモードがオフである場合には、イメージデコーダ7aは、イメージメモリ7cに記憶されたレフトビュー用の字幕ストリームをデコードし、左目用プレーン(図5に示したイメージプレーン8における符号(L)で示したもの)および右目用プレーン(図5に示したイメージプレーン8における符号(R)で示したもの)に書き込む。
上述の例では、字幕データの表示モードが3D表示モードであって、かつステレオモードがオフである場合には、レフトビュー用の字幕ストリームデコードし、左目用プレーンおよび右目用プレーンに書き込むとしたが、記録媒体に記録されている字幕ストリームが左右で同じ字幕ストリームを共有する構成である場合には、この共有する字幕ストリームを読み込んで、左目用イメージプレーンおよび右目用イメージプレーンに書き込むようにすれば良い。
また、字幕データの表示モードが2D表示モードである場合には、デマルチプレクサ4は、2D字幕ストリームをイメージメモリ7cに格納するように構成されており、イメージデコーダ7aは、イメージメモリ7cに記憶された2D字幕ストリームをデコードし、左目用プレーン(図5に示したイメージプレーン8における符号(L)で示したもの)に書き込むように構成されている。
以上がイメージプレーン8についての説明である。続いて、インタラクティブグラフィクスプレーン10の格納内容について説明する。
(インタラクティブグラフィクスプレーン10への書き込み)
インタラクティブグラフィクスの表示モードが例えば3D表示モードであって、かつステレオモードがオンである場合、左目から見えるインタラクティブグラフィクス(左目用インタラクティブグラフィクス)、右目から見えるインタラクティブグラフィクスであって、左目用インタラクティブグラフィクスとは異なるインタラクティブグラフィクス(右目用インタラクティブグラフィクス)を描画するプログラムがBD-Jアプリケーションに組み込まれていることを意味する。
この描画プログラムによって描画される左目用インタラクティブグラフィクス及び右目用インタラクティブグラフィクスは、立体的なグラフィクスに見えるように互いに見える角度が異なるようなグラフィクスである。
左目用インタラクティブグラフィクス及び右目用インタラクティブグラフィクスを表示に供する場合、BD-Jアプリケーションはレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)にレフトビュー用インタラクティブグラフィクスを書き込み、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付したもの)にライトビュー用インタラクティブグラフィクスを書き込む。
また、インタラクティブグラフィクスの表示モードが例えば3D表示モードであって、かつステレオモードがオフである場合、BD-Jアプリケーションはレンダリングエンジン22aを利用してレフトビュー用のインタラクティブグラフィクスをインタラクティブグラフィクスプレーン10の符号(L)、符号(R)を付したものにそれぞれ書き込む。
インタラクティブグラフィクスの表示モードが2D表示モードである場合、BD-Jアプリケーションはレンダリングエンジン22aを利用して、2Dインタラクティブグラフィクスをインタラクティブグラフィクスプレーン10(より具体的には、インタラクティブグラフィクスプレーン10の符号(L)を付したもの)に書き込むように構成されている。
以上がインタラクティブグラフィクスプレーン10についての説明である。続いて表示モードに応じたバックグラウンドプレーン11の格納内容について説明する。
(バックグラウンドプレーン11への書き込み)
背景画の表示モードが例えば3D表示モードであって、かつステレオモードがオンである場合、静止画デコーダ27bは、静止画メモリ27aに格納された、レフトビュー用の静止画データ、ライトビュー用の静止画データをデコードして、レフトビュー用の静止画データを左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)、ライトビュー用の静止画データを右目用プレーン(図4に示すバックグラウンドプレーン11における符号(R)を付したもの)にそれぞれ書き込む。
背景画の表示モードが例えば3D表示モードであって、かつステレオモードがオフである場合、静止画メモリ27aに格納された3D背景画(レフトビュー用の静止画データ、ライトビュー用の静止画データ)のうち、レフトビュー用の静止画データを静止画デコーダ27bがデコードし、左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)および右目用プレーン(図4に示すバックグラウンドプレーン11における符号(R)を付したもの)に書き込む。背景画の表示モードが例えば2D表示モードである場合、静止画メモリ27aに格納された2Dの静止画データを静止画デコーダ27bがデコードし、左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)に書き込むように構成されている。
以上が表示モードに応じたバックグラウンドプレーン11の格納内容についての説明である。
次に、本実施の形態における2D表示モード、3D表示モードの切り替えの詳細について説明する。
図5は、2D表示モード、3D表示モードの切り替えを示す図である。本図の左側には2D表示モード時の出力モデルが示されている。左側のプレーン構成では、ビデオプレーン6、イメージプレーン8(図中の“Subtitle”)、インタラクティブグラフィクスプレーン10、バックグラウンドプレーン11、及び出力のそれぞれ一つで構成される。
よって、2D表示モード時はレフトビューとライトビューは共通のものを利用することになり、結果として全く同じ出力を見ることになる。
本図の右側には3D表示モード時の出力モデルが表示されている。再生装置が3D表示モードの場合、ビデオプレーン6、イメージプレーン8(図中の“Subtitle”)、インタラクティブグラフィクスプレーン10はそれぞれレフトビュー用と、ライトビュー用とに分けられており、これらに再生すべきピクチャデータ、グラフィクスデータが格納される。
よって3D表示モード時はレフトビューとライトビュー出力が別々に存在し、左目と右目に異なるイメージを提供することが可能になり、その視差であたかも画面内の立体物が手前に飛び出しているかのような3Dのエフェクトを引き出すことが可能である。
図6は、3D表示モードにおいて、各プレーンのステレオモードが全てオンである場合と、ステレオモードが全てオフである場合の合成処理の一例を示す図である。
図6では各プレーンがステレオモードを統一させている場合の例を示しているが、プレーン毎にステレオモードのON/OFFが変更可能である。
左側は、3D表示モードにおいて、各プレーンのステレオモードが全てオンである場合のプレーン構成を示し、右側は、3D表示モードにおいて、各プレーンのステレオモードが全てオフである場合のプレーン構成を示す。
第1段目は、バックグラウンドプレーン11と、その合成前の出力とを示す。
第2段目は、ビデオストリームと、ビデオプレーン6、その合成前の出力とを示す。
第3段目は、イメージプレーン8と、その合成前の出力とを示す。
第4段目は、インタラクティブグラフィクスプレーン10と、その合成前の出力とを示す。
ステレオモードがONの場合、バックグラウンドプレーンは、(L)が付された領域で示す左目用バックグラウンドプレーンがレフトビュー用の背景データの書き込みに使われ、(R)が付された領域で示す右目用バックグラウンドプレーンがライトビュー用の背景データが書き込まれ、左目用/右目用の合成時にそれぞれ使われる。バックグラウンドプレーン11のステレオモードがOFFの場合はアプリケーションによりレフトビュー用の背景データがバックグラウンドプレーンの、(L)、(R)を付した領域にそれぞれ書き込まれるので、ライトビュー用の背景データは表示に影響しない。
ステレオモードがONの場合、ビデオストリームのうち、左目用のビデオのピクチャデータがレフトビュー用のビデオプレーンに格納される。また、ビデオストリームのうち、右目用のビデオのピクチャデータがライトビュー用のビデオプレーンに格納される。ビデオプレーンのステレオモードがOFFの場合は、左目用のビデオのピクチャデータがレフトビュー用のビデオプレーンとライトビュー用のビデオプレーンの両方に格納される。
ステレオモードがONの場合、イメージプレーンは(L)が付された領域で示す左目用イメージプレーンにレフトビュー用のイメージデータが書き込まれ、(R)が付された領域で示す右目用イメージプレーンがライトビュー用のイメージデータが書き込まれ、左目用/右目用の合成時にそれぞれ使われる。
イメージプレーン8のステレオモードがOFFの場合、ライトビュー用のイメージデータに対応する字幕グラフィクスは表示に影響しない。また、ステレオモードがOFFの場合、イメージプレーン8の内容は、右方向又は左方向にシフトされた内容になる(図中のShifed
Left)。
ステレオモードがONの場合、インタラクティブグラフィクスプレーン10は(L)が付された領域で示す左目用インタラクティブグラフィクスプレーンにレフトビュー用のインタラクティブグラフィクスが書き込まれ、(R)が付された領域で示す右目用インタラクティブグラフィクスプレーンにライトビュー用のインタラクティブグラフィクスが書き込まれ、左目用/右目用の合成時にそれぞれ使われる。
インタラクティブグラフィクスプレーン10のステレオモードがOFFの場合はアプリケーションによるライト用のインタラクティブグラフィクスは表示に影響しない。また、ステレオモードがOFFの場合、インタラクティブグラフィクスプレーン10の内容は、右方向又は左方向にシフトされた内容になる(図中のShifed Left)。
図7は、表示モードが3Dにおいて、全プレーンがステレオモードONである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10がどのように重ねあわせられるかを示す。ステレオモードにおいては、レフトビューとしてレフトビューバックグラウンドプレーンu4、ビデオストリームから読み出されたレフトビュービデオu3、、イメージプレーン8のレフトビューグラフィクスu2、インタラクティブグラフィクスプレーン10のレフトビューグラフィクスu1が順に合成されることがわかる。
また、ライトビューとしてライトビューバックグラウンドプレーンu8、ビデオストリームから読み出されたライトビュービデオu7が、イメージプレーン8のライトビューグラフィクスu6、インタラクティブグラフィクスプレーン10ののライトビューグラフィクスu5が順に合成されることがわかる。
図8は、表示モードが3Dにおいて、全プレーンがステレオモードOFFである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10がどのように重ねあわせられるかを示す。ステレオモードOFF時においては、レフトビューとしてレフトビューバックグラウンドプレーンr4、ビデオストリームから読み出されたレフトビュービデオr2、イメージプレーン8のレフトビューグラフィクスを一定の水平方向(図では右)にシフトしたShiftedLeftグラフィクスr3、インタラクティブグラフィクスプレーン10のレフトビューグラフィクスを一定の水平方向(図では右)にシフトしたShifted Leftグラフィクスr1が順に合成されることがわかる。
また、ライトビューとしてライトビューバックグラウンドプレーンr8、ビデオストリームから読み出されたレフトビュービデオr6、イメージプレーン8のレフトビューグラフィクスをレフトビューとは逆の方向(図では左)にシフトしたShiftedLeftグラフィクスr7、インタラクティブグラフィクスプレーン10のレフトビューグラフィクスをレフトビューとは逆の方向(図では左)にシフトしたShiftedLeftグラフィクスr5が順に合成されることがわかる。
次に、本実施の形態におけるステレオモードの切り替えの詳細について説明する。
図9は、プレーン毎の合成結果を示す。
6L、6Rは、ビデオプレーンの一例を示すものである。女性の顔の向きの違いから、レフトビュー用のストリームとライトビューのストリームは違った角度から撮られたものであることがうかがえる。尚、図9における人物の顔の向きや位置のズレは模式的なものであり、立体視再生を実現するための正確な顔の向きや位置を表している訳ではない。液晶眼鏡500をかけず、裸眼でテレビ400の表示画面を見た場合、この違った角度から撮影された映像があたかも重ね合わされて表示されているかのように見えることになる。
イメージプレーン8における“I love you”の字は字幕データがイメージデコーダによってデコードされた後のイメージである。
インタラクティブグラフィクスプレーン10における前後スキップの操作を受け付けるGUI部品は、BD-Jアプリケーションがインタラクティブグラフィクスプレーン10に描画したグラフィックス画像である。
6LLは、合成後の出力レフトビューであり、6RRは、合成後に出力される出力ライトビューである。6LLのレフトビュー用映像では“I love you”の字幕が右にずれて合成されていることがわかる。また、6RRのライトビュー映像では“I love you”の字幕が左にずれて合成されている。
図10は、全プレーンがステレオモードON時における映像出力を3D用ディスプレイで見た場合の一例である。
ライトビューとレフトビュー用の映像は、例えば液晶眼鏡500を通してフィルタされ、左右の目にそれぞれ違う映像を映し出す。ここで注目すべき点は、ビデオストリーム映像が左右の画像が重ねられて立体化されているのみでなく、“I love you”の字幕や前後スキップの操作を受け付けるGUI部品も左目と右目で異なっていることである。このように、予め左目用と右目用の両方のコンテンツが用意されている場合はステレオモードをONにすることにより、自然とビデオ、字幕やGUI部品全て奥行きが保たれた構成になることがわかる。
図11は、ビデオプレーンはステレオモードONだが、それ以外のプレーンは全てステレオモードOFFにした場合の映像出力を、液晶眼鏡500で見た場合に現れる立体視映像の一例を示す。左目用と右目用の両方の字幕やGUIが用意されていないディスク(2D前提で作られた過去のコンテンツ、ディスクの容量が足りなくてそうせざるを得ないディスク等)に関してはグラフィクスプレーンのステレオモードはOFFにせざるを得ない。図11はビデオプレーンがステレオモードONのため、レフトビュー用のストリームとライトビューのストリームのそれぞれから再生される像は撮影対象が同じで、違った角度から撮られたものを再生した映像であることがうかがえる。一方、イメージプレーン8及びインタラクティブグラフィクスプレーン10は、ステレオモードOFFであり、同じ字幕ストリーム、同じGUI画像を右方向及び左方向にシフトしたものがビデオプレーンに合成され、片目用の字幕・GUIのみしか存在しなくても立体ビデオの手前に表示することが可能となり、視聴者への目の疲労の度合いを低減することが可能なことが伺える。
(立体視効果を実現するための制御)
立体視効果の実現のため、グラフィクスプレーンをずらす方向について説明する。
プレーンシフトエンジン20がシフトする方向はグラフィクスプレーンを表示画面よりも奥に位置するような立体感をもたせるか、表示画面よりも手前に位置するような立体感を持たせるかによって異なる。
本実施形態ではレフトビュー用映像を右方向にずらす、つまり画面から飛び出させるに立体感を持たせることを前提とする。
元の画素データの座標と、右方向又は左方向にシフトした場合の各画素データの座標との差分を“シフト量“又は“シフト数”という。このシフト量は、立体視においては、イメージプレーン8に書き込まれた字幕、又は、インタラクティブグラフィクスプレーン10書き込まれたグラフィックス画像を表示画面よりもどの程度、手前または奥に位置するように表示をさせるのかという奥行き値によって算出されるべきである。また、立体視再生において、両目の視差として採用することができる何等のパラメータから、導出することができる。
また、上述したようなシフト量だけ、左右に、グラフィクスプレーン内の画素データを移動させるためのパラメータを“プレーンオフセット”と呼ぶ。シフト量はスカラ量であるのに対して、プレーンオフセットは、正負の極性と大きさを持つベクトルであり、通常の状態(つまり表示画面上に表示しているように見える状態)から、表示画面の水平方向(例えば右方向及び左方向)のどちらの向きに、どれだけ画素データの座標を移動させるかを指し示す。以降の説明においてプレーンシフトは、このプレーンオフセットに従って実行されるものとする。プレーンオフセットには、シフト量に正負の符号を付けたものもあるし、何等かの関数式による計算を施した上、シフト量として採用できるものもある。
続いて、プレーンオフセットの正負の意味合いについて説明する。
グラフィクスプレーンのプレーンオフセットは、ライトビューのグラフィクスプレーンに格納されている画素データの座標、及び、レフトビュー用のグラフィクスプレーンに格納されている画素データの座標を何画素だけずらすかという画素数を示す。
グラフィクスプレーンの映像が画面から飛び出る効果をもたらしたい場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ右側にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ左側にシフトする。本実施の形態ではプレーンオフセットの符号が“正の符号”の場合は飛び出る効果をもたらすこととする。
グラフィクスプレーンの映像が画面の奥に表示される効果をもたらしたい場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ左にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ右にシフトする。本実施の形態ではプレーンオフセットの符号が“負の符号”の場合は奥に表示される効果をもたらすこととする。
プレーンオフセットが“0”の場合、グラフィクスプレーンのシフトは行わない、つまり、通常の状態で表示(表示画面上に表示されるように見える状態)されることを意味するものとなる。
図12は、表示モードが3D、各プレーンのステレオモードがOFFの場合において、バックグラウンドプレーンに格納された背景画像のプレーンオフセットが“0”、ビデオプレーンに格納されたビデオのプレーンオフセットが“0”、イメージプレーンのプレーンオフセットが“0“
とは異なる値、インタラクティブグラフィックスプレーンのプレーンオフセットが“0“ とは異なる値のときの右方向にシフトされたShiftedLeftレフトビューグラフィクスプレーン、左方向にシフトされたShifted Leftライトビューグラフィクスプレーンを示す図である。
本図(a)に示すように、イメージプレーン8において、右方向シフト後のグラフィクスプレーンは、左側に透明領域が追加され、右側の端部が切り取られる。同じくインタラクティブグラフィクスプレーン10において、右方向シフト後のグラフィクスプレーンは、左側に透明領域が追加され、右側の端部が切り取られる。
同じく(b)に示すように、イメージプレーン8において、左方向シフト後のグラフィクスプレーンは、右側に透明領域が追加され、左側の端部が切り取られる。同じくインタラクティブグラフィクスプレーン10において、左方向シフト後のグラフィクスプレーンは、右側に透明領域が追加され、左側の端部が切り取れる。
ステレオモードがOFFである場合に実行されるプレーンシフトは、イメージプレーンやインタラクティブグラフィクスプレーン内のグラフィクスを表示画面よりも手前に位置するように見せたり、表示画面よりも奥に位置するように見せたりするという視覚効果を産み出す。このプレーンシフトが前提としている原理について説明する。
(プレーンシフトによる立体視の原理)
図13は、プレーンオフセットの符号が正(レフトビュー用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合、像が表示画面よりも手前にあるように見える原理を説明するための図である。
本図において、丸で示したものは、表示画面上に表示される像である。
まず、プレーンオフセットがない場合、右目に見える像も左目に見える像も同じ位置であるため、両目を用いて、この像を見たときの焦点位置は、表示画面上に位置する(図13(a))。結果として表示される像は表示画面上に位置する。
一方、3D表示モードのステレオモードがOFFの場合において、左目に見える像はプレーンオフセットが0の場合に比べて右側の位置に見えるようシフトして表示する。このとき右目には液晶眼鏡500により何も見えないようにする。一方、右目に見える像は、プレーンオフセットが0の場合に比べて左側の位置に見えるようにシフトして表示する。このとき左目には液晶眼鏡500により何も見えないようにする(図13(b))。
人間は両目を用いて焦点をあわせてその焦点位置に像があるように認識する。従って、液晶眼鏡500により左目に像が見える状態と、右目に像が見える状態とを交互に短い時間間隔で切り替えると、人間の両目は表示画面よりも手前の位置に焦点位置を、合わせようとし、結果として表示画面よりも手前に位置する焦点位置に像があるように錯覚を起こす(図13(c))。
図14は、プレーンオフセットの符号が負(レフトビュー用のグラフィクスイメージを左方向へずらし、ライトビュー用のグラフィクスイメージを右方向へずらす)である場合、像が表示画面よりも奥にあるように見える原理を説明するための図である。
図14において、丸で示したものは、表示画面上に表示される像である。まず、プレーンオフセットがない場合、右目に見える像も左目に見える像も同じ位置であるため、両目を用いて、この像を見たときの焦点位置は、表示画面上に位置する(図14(a))。結果として表示される像は表示画面上に位置する。
一方、3D表示モードのステレオモードがオフの場合において、左目に見える像はプレーンオフセットが0の場合に比べて左側の位置に見えるようにする。このとき右目には液晶眼鏡500により何も見えないようにする。一方、右目に見える像は、オフセットが0の場合に比べて右側の位置に見えるようにする、このとき左目には液晶眼鏡500により何も見えないようにする(図14(b))。
液晶眼鏡500により左目に像が見える状態と、右目に像が見える状態と互に短い時間間隔で切り替えると、人間の両目は表示画面よりも奥の位置に焦点位置を、合わせようとし、結果として表示画面よりも奥の位置に像があるように錯覚を起こす(図14(c))。
以上の説明は、グラフィクスプレーンに書き込まれたグラフィクスイメージについて説明をしたが、インタラクティブグラフィクスプレーン、ビデオプレーン、バックグラウンドプレーンについて上述のオフセットの概念を適用すれば同様のことが言えるのは言うまでもない。
(飛出し度合/奥行きのもたらし方)
図15は、正と負のプレーンオフセットの見え方の違いの一例を示す図である。
同図(a)(b)において、手前の方は、ライトビュー出力時にシフトしたシフト後のグラフィクスプレーンを用いて出力されるライトビュー用のグラフィクスイメージを示す。奥の方は、レフトビュー出力時にシフトしたシフト後のグラフィクスプレーンを用いて出力されるレフトビュー用のグラフィクスイメージを示す。
本図(a)は、プレーンオフセットの符号が正(レフトビュー用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合を示す。プレーンオフセットが正の値であると、図13に示したようにレフトビュー出力時の字幕がライトビュー出力時の字幕より右の位置に見えるようになる。つまり、輻輳点(焦点位置)がスクリーンより手前にくるので、字幕も手前に見えるようになる。
本図(b)は、プレーンオフセットの符号が負である場合を示す。負の値であると、図14に示したように、レフトビュー出力時の字幕がライトビューの出力時の字幕より左の位置に見えるようになる。つまり、輻輳点(焦点位置)がスクリーンより奥にゆくので、字幕も奥に見えるようになる。
以上で、プレーンオフセットの正と負の切り替えによって、字幕が表示画面の位置よりも飛び出るか奥にゆくかを変化する方法についての説明を終える。
以上の説明から、プレーンシフトにおけるプレーンオフセットによって、平面的な画像が表示画面よりも手前に表示されたり奥に表示されたりするように見えることが判った。しかしながら、プレーンシフトの対象となる字幕グラフィクスの大きさは固定化されている訳ではなく、対話性の向上のため、動画像の拡大縮小などの処理に伴って変動することが一般的である。
通常の再生においては、動画像をフルスケールで、字幕グラフィックスをフルスケールの動画像に対応したサイズで表示しているのに対し、メニュー画面に切り換えた場合、動画像を縮小して表示するとともに、字幕グラフィックスを縮小した動画像の大きさに応じたサイズに変更して表示するとともに、メニュー画面に必要なGUIを表示する必要がある。このように、動画像に対して対話性実現のためのスケーリングがなされた場合、プレーンシフトにおけるプレーンオフセットをどのように定めるかについて説明する。図17は、動画像に対してスケーリングがなされた場合に、ユーザによって視聴される立体視画像を示す。
表示モードが3DでビデオプレーンのステレオモードがONである場合において、動画像について、スケーリングFactor“1/2”のスケーリングがなされれば、横幅、縦幅が1/2になり、最終的には1/4の面積をもつ動画像が立体表示されることがわかる。
このとき、表示モードが3DでビデオプレーンのステレオモードがONである場合において、レフトビュー用のビデオストリームとライトビュー用のビデオストリームにより再生される像というのはそれぞれ、見える角度が異なる像であるため、スケーリングFactorによって、スケーリングがなされれば、立体表示による飛び出し具合もスケーリングFactorに応じて動的に変化する。
しかしながら、表示モードが3DでイメージプレーンのステレオモードがOFFである場合では、スケーリングFactorによって、イメージプレーンの字幕のスケーリングを行った場合において、イメージプレーンにプレーンオフセットが“0“でない値に設定がされていると、このプレーンオフセットはスケーリングによって動的に変化しないため、合成画像において、字幕が飛び出た感の強いものとなり、視聴者は違和感を覚える。
この点は、表示モードが3DでインタラクティブグラフィックスプレーンのステレオモードがOFFである場合においても同様のことが言える。
簡単な例を用いて説明をする。
図18は、表示モードが3DでビデオプレーンのステレオモードがON、表示モードが3DでイメージプレーンのステレオモードがOFFである場合において、イメージプレーンのプレーンオフセットをビデオのスケーリングに応じて変えなければどのようなことが起こるのかを説明するための図である。
図において、円形で示したものはレフトビュー用のビデオストリームとライトビュー用のビデオストリームにより再生されて、人の目に見える仮想的な立体像をX-Z平面から見たときの一例を示すもの、この例では立体的な像は表示画面よりも手前に表示されている。
また字幕が仮想的に見える位置というのは、仮想的な立体的像よりも手前に見えるようイメージプレーンのオフセットが調節されている位置であると仮定する。
図18(a)はフルスクリーン表示としたときの場合を示し、図18(b)はビデオを縮小表示したときの場合を示す。ビデオを縮小表示する場合におけるビデオの飛び出しの度合いは、縮小の度合いに応じて動的に変化をする。しかし、字幕が仮想的に見える位置というのはイメージプレーンのオフセットによって与えられる固定的な値であり、縮小処理によってオフセットが変化することはないので、スケーリングに応じてイメージプレーンのオフセットを変えないと、字幕の位置が妙に飛び出たように見えてしまう。
図18に示した飛び出し度合を模式的に示した一例が図19である。
本実施形態に係る再生装置は、この技術的課題に着目し、解決する構成を提供するものである。
具体的には、本実施形態に係る再生装置は、ビデオのスケーリングに応じてイメージプレーンのオフセットを動的に調整するようにしたことを特徴とする。具体的には図18(c)に示すようにビデオを縮小表示した場合、イメージプレーンのオフセットを調整(この例では小さくする)ことにより、字幕が仮想的に見える位置をより表示画面側に近づける。
図19は、本実施の形態の処理を行わなかった場合、つまり、動画像の縮小時にコンテンツ、あるいはユーザから指定されたスケーリング前のプレーンオフセットをそのままプレーンシフトに適用した場合に表示される立体視画像を示す。
対照的に、スケーリング前の動画像との合成に用いられたプレーンオフセットDにスケーリングFactorを乗じたプレーンオフセットEを、イメージプレーンのプレーンシフトに適用すると、イメージプレーンにおける画素の飛び出し度合としての意味をもつプレーンオフセットDにスケーリングFactorが乗じられるので、飛出し度合が小さくなる。そうするとスケーリングがなされた人物像の近辺にまで、字幕を引き寄せることができる。こうすることで、スケーリングがなされた人物像の近くに字幕が存在することになり、人物像と字幕との飛び出し具合のアンバランス感は解消される。
図20は、本実施の形態の処理を行った場合、つまりスケーリング倍率が乗じられたプレーンオフセットを、イメージプレーンのプレーンシフトに適用した場合に表示される立体視画像を示す。
図20は、図19とは異なりスケーリングがなされた人物像の近くに字幕が存在することになり、人物像と字幕との飛び出し具合のアンバランス感は解消される。
以上のようにして、アンバランス感を解消するには、スケーリングFactorを考慮して、最適なプレーンオフセットを算出する仕組みをプレーンシフトエンジン20内に設ける必要がある。このように、スケーリングFactorを考慮して、最適なプレーンオフセットを算出する仕組みを組込んだのが、図21におけるプレーンシフトエンジン20である。以下、図21を参照しながら、プレーンシフトエンジン20について説明する。
図21は、本実施形態に係る再生装置200のプレーンシフトエンジン20の内部構成の一例を示した図である。本図に示すように、プレーンシフトエンジン20は、オフセット値保存部41、スケーリングFactor保存部42、プレーンオフセット演算部43、シフト部44から構成される。
(オフセット値保存部41)
オフセット値保存部41は、オフセット設定部21からコンテンツ、あるいはユーザから指定されたオフセット値を格納する。
(スケーリングFactor保存部42)
スケーリングFactor保存部42は、スケーリング前からの倍率情報を保存する。例えば、スケーリングしていない場合は“1”、半分の場合は1/2、2倍に拡大する場合は“2”などという値を保持する。
(プレーンオフセット演算部43)
プレーンオフセット演算部43は、オフセット値保存部41に保存されたオフセット値を基にスケーリングや画面サイズを考慮して、シフト部44によるシフトを行うシフト量をピクセル単位に変換する計算を実行する。具体的な実装例で言えば、スケーリングFactorが“1/2”と指定された場合は、オフセット値保存部41に保存されたオフセット値に、スケーリングFactor保存部42に保存されたスケーリング倍率を乗じた値を新しい“プレーンオフセットE”として得る。
(演算結果の扱い)
次に、演算結果における小数点以下の扱いについて説明する。プレーンオフセット演算部43による演算は、スケーリングFactorとの乗算を伴うものであり、この場合、小数点以下の数値の扱いが問題となる。何故なら、シフト量は画素の数に応じた数分シフトするため、シフト量は整数でなければならないからである。プレーンオフセット演算部43が演算を行うに当たって、演算結果に小数点以下の数値が出現した場合、その小数点以下の数値を、次の整数に繰り上げることにする。例えばプレーンオフセット演算部43による演算結果が“3.2“である場合、演算結果を“4”にすることを意味する。
このように、演算結果における小数点以下の部分を、次の整数に繰り上げる演算を、“Ceil演算”という。本実施形態において、スケーリングFactorとの乗算を伴う演算を実行する場合、その演算結果に対してCeil演算を実行し、演算結果における小数点以下の部分を、次の整数に繰り上げるものとする。
(解像度維持の要求による影響)
次に、アプリケーションからの解像度維持の要求による影響について述べる。プレーンオフセット演算部43は、スケーリング時のKEEP_RESOLUTION設定時であっても、スケーリングFactorに応じたシフト量の計算を実行する。KEEP_RESOLUTION設定とは、スケーリング命令時にインタラクティブグラフィクスプレーンの拡大/縮小を行なわずに、ビデオプレーンのみ拡大/縮小を行う機能である。そうすることにより、KEEP_REOLUTION時もビデオの奥行きと同期した字幕の奥行きの変更が可能となる。
(シフト部44)
シフト部44は、プレーンオフセット演算部43が計算した値を基にイメージプレーンの横軸へのシフティングを行う。
図22は、1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、字幕・GUIを含むグラフィクスの合成画像とを示す図である。
手前はスケーリングFactor=1/1のL画像、R画像の組みを示し、真ん中はスケーリングFactor=1/2のL画像、R画像の組み、一番後ろは、スケーリングFactor=1/4のL画像、R画像の組みを示す。
例えばスケーリングFactor=1/2、1/4とした場合には、表示画面の左上の位置にスケーリングを行なった合成画像を表示したときの例を示すものである。
スケーリングFactor=1/2では、縦画素数及び横画素数が、1/2になっており、画面の左端に小さく表示されていることがわかる。スケーリングFactor=1/4では、縦画素数及び横画素数が、1/4になっており、画面の左端に小さく表示されていることがわかる。
図22では、字幕・GUIが合成された動画像がスケーリングの対象になったが、スケーリングを伴ったGUI処理では、GUIはフル画面表示による表示に供され、GUIのフル画面表示のうち、左上領域に合成画像が配置される。GUIは、左上領域に表示する字幕・動画像の合成画像を表示している部分以外の部分に主として描画するようにした場合、GUIはスケーリングの対象から除外するような構成となり、字幕がビデオと合成された合成画像のみがスケーリングの対象になる。
また、GUIをBD-Jアプリケーションが描画するインタラクティブグラフィックスデータの一例として説明をしているが、BD-Jアプリケーションが描画するインタラクティブグラフィックスデータはGUI以外にも、動画像と連動するアニメーションといったグラフィックス画像も含まれる。
このような場合において、BD-Jアプリケーションが描画するインタラクティブグラフィックスデータは、字幕、動画像と同様にスケーリングの対象とすれば、字幕・動画像の縮小に応じて連動して縮小するように構成をしても良い。この場合には図22の黒い部分にはバックグラウンドプレーンに格納された背景データが表示されることになる。
図22の右目画像、左目画像ではスケーリング前の合成構成に比べて、スケーリング後はビデオプレーンのサイズに応じて字幕のシフト量が調整されていることが理解できる。これにより立体感の差が激しくなることを防げ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
図24は、1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、ビデオと字幕グラフィクスの合成画像とを示す図である。
スケーリングFactorが1/1である場合、GUIはが存在しないが、スケーリングFactor=1/2であれば、GUIが表示されていることがわかる。テレビ400の画面のうち右半分は、映画作品の監督によって記述されたディレクターズコメントcm1を表し、テレビ400の画面のうち下半分は、ネクストスキップ、プレビアススキップを受け付けるボタン部材bn1、メニューコールを受け付けるボタン部材bn2、戻る操作を受け付けるボタン部材bn3、ネットワーク接続を受け付けるボタン部材bn4を含む。これらは、図1に示したものと同一である。
スケーリングの対象が、字幕グラフィクスを合成した動画像であれば、プレーンシフトの対象はイメージプレーンのみとなり、プレーンオフセットEの算出対象も、イメージプレーンにおけるプレーンオフセットEのみとなる。
以上がプレーンシフトエンジン20についての説明である。続いて、プレーンシフトの対象となるイメージプレーンの詳細について説明する。最初に、図26を用いて、イメージプレーンの一般構成を説明し、次に、このイメージプレーンにおいて、画素の移動がどのように行われるかについて説明する。
図26は、イメージプレーン8の内部構成の一例を示す。解像度が1920×1080に設定されている場合、同図(a)に示すように、イメージプレーン8は横1920×縦1080の、8ビット長の記憶素子からなる。これは1920×1080の解像度で、1画素当たり8ビットのピクセルコードを格納できるメモリアロケーションを意味する。記憶素子に記憶されている8ビットのピクセルコードは、カラールックアップテーブルを用いた色変換によって、Y値、Cr値、Cb値に変換される。このカラールックアップテーブルにおける、ピクセルコードと、Y値、Cr値、Cb値との対応関係は、字幕データ内のパレット定義セグメントによって規定される。
同図(b)は、イメージプレーン8に格納されている画素データを示す。本図に示すように、イメージプレーン8に格納されているグラフィクスデータは、前景部分(字幕“I love“を構成している部分)にあたる画素データ、背景部分にあたる画素データから構成される。ここで背景部分にあたる記憶素子には、透明色を示すピクセルコードが格納されており、この部分には、ビデオプレーンとの合成時において、ビデオプレーンにおける動画像が透けて見えるようになる。一方、前景部分にあたる記憶素子には、透明色以外を示すピクセルコードが格納されており、この透明色以外のY,Cr,Cb値によって、字幕が描かれることになる。合成部15によるプレーン合成時において、透明画素にあたる部分には、字幕よりも下の位置にあるバックグラウンドプレーンに格納された背景画像またはビデオプレーンに格納されたビデオの内容が透けて見えるようになり、かかる透明部分の存在によって、プレーン合成が可能になる。
図27は、右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データを示す。(a)は、シフト前の画素データであり、(b)は右方向のシフト後の画素データである。ここで、シフト量が15画素であるとすると、字幕文字“I love you”の“y“が移動して、画面から見えなくなっていることがわかる。(c)は、左方向のシフトがなされた後の画素データである。ここでシフト量が15画素であると、字幕文字“I love”に後続する字幕文字“you”のうち、“o”の文字が、現れていることがわかる。
以上がイメージプレーン8の内部構成と、そのシフト前後の画素データの配置の説明である。次に、インタラクティブグラフィクスプレーン10の内部構成と、そのシフト前後の画素データの配置について説明する。
図28は、インタラクティブグラフィクスプレーン10の内部構成を示す。解像度が1920×1080に設定されている場合、(a)に示すように、インタラクティブグラフィクスプレーン10は横1920×縦1080の32ビット長の記憶素子からなる。インタラクティブグラフィクスプレーン10は、1920×1080の解像度で、1画素当たり32ビットのR,G,B,α値を格納できるメモリアロケーションをもつ。記憶素子に記憶される32ビットのR,G,B,α値は、8ビットのR値、8ビットのG値、8ビットのB値、8ビットの透明度αから構成される。
(b)は、インタラクティブグラフィクスプレーン10に格納されている画素データを示す。本図に示すように、インタラクティブグラフィクスプレーン10に格納されているグラフィクスデータは、前景部分(前後チャプターへのスキップ操作を受け付けるGUI)にあたる画素データ、背景部分にあたる画素データから構成される。ここで背景部分にあたる記憶素子には、透明色を示すα値が格納されており、この部分には、ビデオプレーンとの合成時において、イメージプレーンの字幕やビデオプレーンにおける動画像が透けて見えるようになる。一方、前景部分にあたる記憶素子には、透明色以外を示すR,G,B値が格納されており、この透明色以外のR,G,B値によって、グラフィクスが描かれることになる。
合成部15によるプレーン合成時において、透明画素にあたる部分には、バックグラウンドグラフィクスプレーン、ビデオプレーン、イメージプレーン8の内容が透けて見えるようになり、かかる透明部分の存在によって、プレーン合成が可能になる。
以上で、右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データについての説明を終える。
図29は、右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データを示す。本図(a)は、シフト前の画素データであり、本図(b)は右方向のシフト後の画素データである。この場合、前後チャプターへのスキップ操作を受け付けるGUIが右方向に移動していることがわかる。本図(c)は、左方向のシフトがなされた後の画素データである。前後チャプターへのスキップ操作を受け付けるGUIが左方向に移動していることがわかる。
図30は、イメージプレーン8におけるプレーンシフトの処理手順を示す図である。
(a)は、イメージプレーン8から生成された、左方向シフト後のグラフィクスプレーンと、右方向シフト後のグラフィクスプレーンとを示す。
(b)は、右方向のシフトを示す。本図に示すように水平方向の右方向へのシフト方法は次の、(1-1)(1ー2)(1ー3)のようにして行う。(1-1).イメージプレーン8の右端領域を切り取る。(1-2).イメージプレーン8に存在する画素データの位置を、上述したように右へ水平方向にプレーンオフセットEに示されるシフト量だけずらす。(1-3).イメージプレーン8の最も左端に、透明領域を追加する。
(c)は、左方向のシフトを示す。本図に示すように水平方向の左方向へのシフト方法は次の、(2-1)(2ー2)(2ー3)のようにして行う。(2-1).イメージプレーン8の左端領域を切り取る。(2-2).イメージプレーン8における各画素データの位置を左へ水平方向にプレーンオフセットEに示されるシフト量だけずらす。(2-3).イメージプレーン8の右端に透明領域を追加する。
続いて、プレーンオフセットの正負の意味合いについて説明する。
3D表示モード中、かつイメージプレーン8のステレオモードがOFFの場合、再生装置はプレーンオフセットEに示されるシフト量に基づいてプレーンを次のように処理した上で合成を行う。
プレーンオフセットEが正の符号が設定されている場合はプレーンの合成の前にレフトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ右にシフトする。そして、ライトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ左にシフトする。
プレーンオフセットEが負の符号が設定されている場合はプレーンの合成の前にレフトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ左にシフトする。そして、ライトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ右にシフトする。
図31は、インタラクティブグラフィクスプレーン10におけるプレーンシフトの処理手順を示す図である
(a)は、インタラクティブグラフィクスプレーン10から生成された、左方向シフト後のグラフィクスプレーンと、右方向シフト後のグラフィクスプレーンとを示す。
(b)は、右方向のシフトを示す。本図に示すように水平方向の右方向へのシフト方法は次の、(1-1)(1ー2)(1ー3)のようにして行う。(1-1).インタラクティブグラフィクスプレーンの右端領域を切り取る。(1-2).インタラクティブグラフィクスプレーンに存在する画素データの位置を、上述したように右へ水平方向にプレーンオフセットEに示されるシフト量だけずらす。(1-3).インタラクティブグラフィクスプレーンの最も左端に、透明領域を追加する。
(c)は、左方向のシフトを示す。本図に示すように水平方向の左方向へのシフト方法は次の、(2-1)(2ー2)(2ー3)のようにして行う。(2-1).インタラクティブグラフィクスプレーンの左端領域を切り取る。
(2-2).インタラクティブグラフィクスプレーンにおける各画素データの位置を左へ水平方向にプレーンオフセットEのシフト量分だけずらす。(2-3).インタラクティブグラフィクスプレーンの右端に透明領域を追加する。
プレーンシフトにあたって、右端又は左端から切り取られる領域、右端又は左端に追加される領域の大きさについて説明する。上述したようなシフトにおけるプレーンオフセットは、右目と、左目との視差に応じた値である。ということは、グラフィクスプレーンの端部から切り取られる領域、グラフィクスプレーンの端部に追加される透明領域の横画素数は、プレーンオフセットEに、相当する画素数でなければならない。
よってグラフィクスプレーンの端部から切り取られる領域の横画素数は、プレーンオフセットEのシフト量に相当する画素数になる。また、透明領域の縦画素数は、グラフィクスプレーンの高さを示す画素数になる。
同様に、グラフィクスプレーンの端部に追加される透明領域の横画素数は、プレーンオフセットEのシフト量に相当する画素数になる。この透明領域の縦画素数は、グラフィクスプレーンの高さを示す画素数になる。
以上で、イメージプレーン8、インタラクティブグラフィクスプレーン10におけるプレーンシフトの処理手順についての説明を終える。次に、プレーンオフセットがもつ符号の正負の意味合いについて説明する。
表示モードが3Dである場合であって、かつグラフィクスプレーンのステレオモードがOFFの場合、再生装置はプレーンオフセットに基づいてプレーンを次のように処理した上で合成を行う。
プレーンオフセットEが正の符号が設定されている場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ右にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ左にシフトする。
プレーンオフセットEが負の符号が設定されている場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ左にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ右にシフトする。
(グラフィクスプレーンの記憶素子における画素データの移動)
上述したようなシフトによって、グラフィクスプレーンの記憶素子における画素データが、どのように移動するかを示す。グラフィクスデータは、1920×1080、1280×720といった解像度の画素データから構成されている。
図32は、グラフィクスプレーンに格納されている画素データを示す図である。本図において、四角枠は、32ビット、又は、8ビットの情報を記憶する記憶素子であり、0001,0002,0003,0004,07A5,07A6,07A7,07A8,07A9,07AA,07ABといった16進数の数値は、MPUのメモリ空間において、これらの記憶素子に連続的に割り当てられるアドレスである。また、記憶素子中の(0,0)(1,0)(2,0)(3,0)(1916,0)(1917,0)(1918,0)(1919,0)といった数値は、記憶素子内に、どの座標の画素データが格納されているかを示す。
ここでは、座標(0,0)に存在する画素データがアドレス0001の記憶素子に格納されており、座標(1,0)に存在する画素データがアドレス0002の記憶素子に格納されており、座標(1919,0)に存在する画素データがアドレス07A8の記憶素子に格納されており、座標(0,1)に存在する画素データがアドレス07A9の記憶素子に格納されている。つまり、グラフィクスを構成する複数のラインが、連続アドレスになるように、グラフィクスデータが格納されていることがわかる。こうすることで、これらの連続アドレスが付された記憶素子に対して順次、DMA転送を行うことで、これらの画素データをバースト的に読み出すことが可能になる。
図33は、シフトがなされた後のグラフィクスプレーンの格納内容を示す。
同図(a)は、プレーンオフセットEが“3”に設定されていて、右方向にシフトされたグラフィクスプレーンを示す。プレーンオフセットEが“3“であるから、アドレス0004の記憶素子には、グラフィクスプレーン座標系における座標(0,0)の画素データが、アドレス0005の記憶素子には、グラフィクスプレーン座標系における座標(1,0)の画素データが、アドレス0006の記憶素子には、グラフィクスプレーン座標系における座標(2,0)の画素データが格納されていることがわかる。
またアドレス07ACの記憶素子には、グラフィクスプレーン座標系における座標(0,1)の画素データが、アドレス07ADの記憶素子には、グラフィクスプレーン座標系における座標(1,1)の画素データが、アドレス07AEの記憶素子には、グラフィクスプレーン座標系における座標(2,1)の画素データが格納されていることがわかる。
同図(b)は、プレーンオフセットEが“3”に設定されていて、左方向にシフトされたグラフィクスプレーンを示す。プレーンオフセットEが“3“であるから、アドレス0001の記憶素子には、グラフィクスプレーン座標系における座標(3,0)の画素データが、アドレス0002の記憶素子には、グラフィクスプレーン座標系における座標(4,0)の画素データが、アドレス0003の記憶素子には、グラフィクスプレーン座標系における座標(5,0)の画素データが格納されていることがわかる。
またアドレス07A9の記憶素子には、グラフィクスプレーン座標系における座標(3,1)の画素データが、アドレス07AAの記憶素子には、グラフィクスプレーン座標系における座標(4,1)の画素データが、アドレス07ABの記憶素子には、グラフィクスプレーン座標系における座標(5,1)の画素データが格納されていることがわかる。
以上のように、シフトされたグラフィクスプレーンは、グラフィクスプレーンにおける各画素データの座標が、本来の座標から右方向、左方向に、プレーンオフセットEに示される画素数だけずれていることがわかる。
グラフィクスデータを構成する各画素データが配置される記憶素子のアドレスを、所定のアドレスだけ変化させることで、グラフィクスプレーンのシフトは実現することができる。当然であるが、実際に、画素データが配置される記憶素子のアドレスを変化させなくても、これと等価な処理であるなら、グラフィクスプレーンのシフトを実現することは可能になる。
以上で、シフトがなされた後のグラフィクスプレーンの格納内容についての説明を終える。
上述したように、プレーンシフトはメモリにおいて、画素の座標をどのように移動させるかという制御で実現されるものであり、いわば、再生装置における組込みソフトウェアによって実現されるものである。対照的に、BD-ROMから供給される、再生制御のためのプログラムは、上述したようなJava言語で記述されたバイトコードアプリケーションなので、このバイトコードアプリケーションの実行主体が、再生装置200に存在することになる。以降、バイトコードアプリケーションを実行する主体である、BD-Jプラットフォーム部22の内部構成について説明する。
図34は、BD-Jプラットフォーム部の内部構成を示す図である。本図に示すようにBD-Jプラットフォーム22は、ヒープメモリ31、バイトコードインタプリタ32、ミドルウェア33、クラスローダ34、アプリケーションマネージャ35から構成される。
(ヒープメモリ31)
ヒープメモリ31は、システムアプリケーションのバイトコード、BD-Jアプリケーションのバイトコード、システムアプリケーションが利用するシステムパラメータ、BD-Jアプリケーションが利用するアプリケーションパラメータが配置されるスタック領域である。
(バイトコードインタプリタ32)
バイトコードインタプリタ32は、ヒープメモリ31に格納されているBD-Jアプリケーションを構成するバイトコード、システムアプリケーションを構成するバイトコードをネィティブコードに変換して、MPUに実行させる。
(ミドルウェア33)
ミドルウェア33は、組込みソフトウェアのためのオペレーティングシステムであり、カーネル、デバイスドライバから構成される。カーネルは、BD-Jアプリケーションからのアプリケーションプログラミングインターフェイス(API)のコールに応じて、再生装置特有の機能をBD-Jアプリケーションに提供する。また、割込信号により割込ハンドラ部を起動する等のハードウェア制御を実現する。
(クラスローダ34)
クラスローダ34は、システムアプリケーションの1つであり、JARアーカイブファイルに存在するクラスファイルからバイトコードを読み出して、ヒープメモリ31に格納することにより、BD-Jアプリケーションのロードを行う。
(アプリケーションマネージャ35)
アプリケーションマネージャ35は、システムアプリケーションの1つであり、BD-Jオブジェクト内のアプリケーション管理テーブルに基づき、BD-Jアプリケーションを起動したりBD-Jアプリケーションを終了したりする等、BD-Jアプリケーションのアプリケーションシグナリングを行う。
以上で、BD-Jプラットフォーム部の内部構成についての説明を終える。
上記レイヤモデルにおいて表示モード設定イニシャル表示設定部28は、プラットフォーム部の下位のレイヤーに存在しており、BD-Jプラットフォーム部に供せられるカレントタイトルにおけるBD-Jオブジェクトに基づき、表示モード、解像度の設定を行う。
(表示モード記憶部29の内部構成)
表示モード記憶部29は、以上のレイヤモデルから参照できる構造になっているので、表示モード記憶部29は、APIを通じて参照でき、且つ、バックグラウンドグラフィクスプレーン11、ビデオプレーン6、イメージプレーン8、インタラクティブグラフィクスプレーン10の各状態や設定を、明らかにできるような構成になっている。以降、表示モード記憶部29の構成について、図35を参照しながら説明する。
図35は、表示モード記憶部29における記憶内容を示す。
本図において表示モード記憶部29は、再生装置が2Dモードであるか、3Dモードであるかの表示モードの状態を示す情報に加え、バックグラウンドプレーン11設定、ビデオプレーン設定、イメージプレーン設定、インタラクティブグラフィクスプレーン設定を保存する。各プレーンの設定項目としては「解像度(図中の:YY×ZZ)」、ステレオモード(図中の:ON
or OFF)、THREE_Dの設定(図中の:ON or OFF)が保存されている。イメージプレーン8設定及びインタラクティブグラフィクスプレーン10設定については、以上の設定項目の他に、プレーンオフセットを“−63“から“+63”の範囲で設定することができる。
本図に示すように、イメージプレーン設定におけるプレーンオフセットと、インタラクティブグラフィクスプレーン設定におけるプレーンオフセットを異なる値に設定をすると、字幕グラフィックスと、GUIが表示されるように見えるZ軸上の位置が異なる位置となる。この場合、図21におけるオフセット値保存部はイメージプレーン設定におけるプレーンオフセットとインタラクティブグラフィクスプレーン設定におけるプレーンオフセットの2つを保存する構成となる。
表示モード記憶部29によってサポートされる解像度について説明する。
再生装置が2D表示モードである場合、イニシャル表示設定としてバックグラウンドプレーン11、ビデオプレーン6、イメージプレーン8、インタラクティブグラフィクスプレーン10は1920×1080、1280×720、720×576、720×480ピクセルの解像度をサポートする。
以上で、表示モード記憶部29における記憶内容についての説明を終える。
(表示モード設定イニシャル表示設定部28の実装)
表示モード設定イニシャル表示設定部28の実装について説明する。一個のタイトルが選択され、そのタイトルに対応するBD-Jオブジェクトが再生装置で有効になっている期間においても、動作中のアプリケーションが、ユーザオペレーションに応じてJMFプレーヤインスタンスをコールすることにより、新たなプレイリストの再生が開始されることがある。このように新たなプレイリストの再生が開始されれば、タイトル内で、表示モードを設定やり直す必要がある。
表示モード設定イニシャル表示設定部28の機能としては、タイトルが変化した際のタイトル間表示モード設定と、タイトル内でプレイリストが変化した際の表示モード設定とアプリケーションが明示的にAPIを呼び出して設定した場合の表示モード設定とをサポートせなばならず、具体的には、以下のフローチャートに示す処理手順をMPUに実行させるようなプログラムを作成して、再生装置に組み込むことで実装することができる。
図36は、タイトル切り替え時の表示モード設定の処理手順の一例を示すフローチャートである。本フローチャートは、ステップS21、ステップS22、ステップS23、ステップS26の判定結果に応じて、ステップS24、ステップS25、ステップS27の処理を選択的に実行する。
ステップS21は、自動再生プレイリストが存在するかどうかの判定であり、ステップS22は、直前の表示モードは3Dであるか否かの判定である。ステップS23は、選択されたタイトルの自動再生プレイリストが、1920×1080の3Dプレイリスト又は1280×720の3Dプレイリストであるかどうかの判定である。
自動再生プレイリストが存在しない場合、ステップS26においてBD-Jオブジェクトのデフォルト解像度がHD3D_1920×1080、HD3D_1280×720であるかどうかが判定され、もしYesであれば、ステップS25において、表示モードを3Dに設定し、BD-Jオブジェクトにおけるデフォルト解像度に応じて1920×1080、あるいは1280×720に設定する。もしNoであれば、ステップS27において表示モードを2Dに設定し、解像度をBD-Jオブジェクトにおけるデフォルト解像度に設定する。
自動再生プレイリストが存在しない場合、ステップS22において直前の表示モードが2Dであるかどうか、又は、ステップS23においてプレイリストが3Dプレイリストで、その解像度が1920×1080、1280×720であるがどうかを判定する。ステップS22、ステップS23のどちらかがNoであれば、ステップS24において表示モードを2Dに設定し、解像度を、自動再生プレイリストの解像度に設定する。
ステップS22がYes、ステップS23もYesと判定された場合、ステップS25において、表示モードを3Dに設定し、解像度を、自動再生プレイリストの解像度に応じて1920×1080、又は、1280×720に設定する。
以上で、タイトル間表示モード設定の処理手順についての説明を終える。
図37は、タイトル内表示モード設定の処理手順を示すフローチャートである。本フローチャートは、ステップS31、ステップS32という、2つのステップを直列的に接続したものである。まず、タイトル内表示モード設定はプレイリストの再生要求から始まる。プレイリスト再生要求を受け付けた時点で、ステップS31は、現在のステータス3Dかどうかの判定を行い、2Dであれば、ステップS34において表示モードを2Dに設定する。ステップS32は、再生要求のあったプレイリストが3Dプレイリストか否かを判定し、もし、3Dプレイリストであれば、ステップS33に移行し、表示モードを3Dにし、2Dプレイリストであれば、ステッステップS34に移行し、表示モードを2Dにする。
以上で、タイトル内表示モード設定の処理手順についての説明を終える。
(再生制御エンジン14の実装)
再生制御エンジン14は、何等かの要因によってカレントプレイリストが選択された際、そのカレントプレイリストの再生を行うものであり、具体的には、カレントプレイリストに対応するプレイリスト情報を静的シナリオメモリ13に読み出して、このプレイリスト情報のプレイアイテム情報によって参照されている3Dストリーム、2Dストリームを再生に供するという処理を実現せねばならず、具体的には、以下のフローチャートに示す処理手順を実行するようなプログラムを作成して再生装置に組み込み、MPUに実行させる必要がある。
図38は、BD-Jモードにおけるプレイリスト再生の主たる手順を示すフローチャートである。
ステップS40は、選択されたタイトルに関連するBD-Jオブジェクトに示される自動再生プレイリストの設定又はJMFプレーヤインスタンスの生成により、カレントプレイリスト番号が設定されたかどうかの判定であり、もし設定されれば、ステップS41において、カレントプレイリスト番号にて指示されているプレイリスト情報ファイルをシナリオメモリにロードし、ステップS42において、プレイリスト情報に、プレーンオフセットが存在すれば、プレーンオフセットが存在すれば、オフセット設定部はプレーンシフトエンジン19のプレーンオフセット値として設定する。そして、ステップS43においてタイトル内表示モード設定を行う。
ステップS44では、ロードされたプレイリスト情報における最初のプレイアイテム番号を、カレントプレイアイテム番号に設定する。ステップS45において、カレントプレイリスト情報において再生が許可されているPESストリームの中からカレントストリームを選択する。
ステップS46では、プレイアイテム情報に基づいて、どのストリーム番号を使うかを決定する。
ステップS47においてステップS43で判定した表示モードは、2Dであるか、又は3Dであるかの判定を行う。3Dであれば、ステップS49において3D表示モード時の3Dビデオストリームの再生を実行する。2Dであれば、ステップS48に移行する。
ステップS48は、カレントストリーム番号で指示されているビデオストリーム及び字幕ストリームは、2Dであるか、3Dであるかの判定である。ステップS48で2Dと判定された場合、ステップS51において2D表示モードにおける2DAVストリームの再生を実行する。3Dと判定された場合、ステップS50において2D表示モードの3Dビデオストリームの再生を実行する。最後に、本図の“終了”に到達した時点でプレイリストの再生開始を行う。
図39は、プレイアイテム情報に基づく再生手順を示すフローチャートである。
ステップS60において、ビデオストリームに組み込まれているプレーンオフセットDをプレーンシフトエンジン20に設定し、ステップS61において、レフトビューストリームのパケットIDに対応するエントリマップを用いて、カレントPlayItem.In_Time及びカレントPlayItem.Out_TimeをStart_SPN[i]及びEnd_SPN[i]に変換する。
ライトビューストリームのパケットID[j]に対応するエントリマップ[j]を用いて特定されたSubPlayItemIn_Time、SubPlayItemOut_TimeをStart_SPN[j]、End_SPN[j]に変換する(ステップS62)。
パケットID[i]のTSパケット[i]をStart_SPN[i]からEnd_SPN[i]まで読み出すための読出範囲[i]に属するエクステントを特定し(ステップS63)、パケットID[j]のTSパケット[j]をStart_SPN[j]からEnd_SPN[j]まで読み出すための読出範囲に属するエクステントを特定する(ステップS64)。そしてステップS65において読出範囲[i],[j]に属するエクステントをアドレスの昇順にソートして、ステップS66においてソートされたアドレスを用いて、読出範囲[i],[j]に属するエクステントを連続的に読み出すよう、ドライブに指示する。
以上で、再生制御エンジン14についての説明を終える。
図40は、3DAVストリームの3D表示の処理手順を示すフローチャートである。本フローチャートは、ステップS602〜ステップS606からなるループを実行するというものである。このループは、左目用処理(ステップS602)、右目用処理(ステップS603)を順次実行するという処理を、フレーム出力が途絶えるまで(ステップS606でNo)継続するものである。
なお、カレントプレイリスト情報からプレーンオフセットDを抽出し、プレーンシフトエンジンに保存するという処理は図38におけるステップS42において既に行なわれている。
本ループにおいて、ステップS604は、プレーンオフセットDがオフセット値保存部41に設定されているかどうかの判定であり、もし設定されていなければステップS605をスキップするが、設定されていれば、ステップS605を実行する。ステップS605は、オフセット値保存部41に保存されたプレーンオフセットDを用いて、プレーンシフトエンジン20において、図21に示すオフセット演算部43によりオフセット演算を行い、プレーンオフセットEを更新するという処理である。
(表示モードが3Dである場合の3Dビデオストリームの処理手順)
現在の表示モードが3D表示モードであり、再生対象が3Dプレイリスト及び3Dストリームである場合、図41〜図42の処理手順を実行することになる。
図41は、例えば図40に示すステップS602(左目用処理)の具体的一例であり、詳しくは、表示モードが3Dの時の左目用処理の手順を示すフローチャートである。
図41におけるステップS701〜ステップS707は左目用処理である。
まず、ステップS701では、合成部16はレフトビューに使うレフトビューバックグラウンドプレーン11(図4に示す“(L)”の符号を付した領域)に書き込まれた背景データを取得する。レフトビューバックグラウンドプレーンにはBD-Jアプリケーションの描画命令により静止画デコーダ27bを通して描画された背景データが格納されている。
次に、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードして、ビデオプレーン6(図4の(L)を付したもの)に書き込んだ後に、合成部15は前記ビデオプレーン6(図4に示す(L)の符号を付した領域)に書き込まれたレフトビュー用のビデオデータを取得する(ステップS702)。
そして、ステップS703で合成部15は表示モード記憶部29にある、イメージプレーン設定のステレオモードがONであるかまたはOFFであるかを確認する(以後ステレオモードがONであるのかまたはOFFであるのかを確認することをステレオモードのフラグを確認すると称する)。ステレオモードがOFFの場合は、イメージデコーダ7aによりデコードしたレフトビューイメージをイメージプレーン8(図4に示す符号(L)を付した領域)に書き込んだ後にプレーンシフトエンジン20により左目用のシフト処理を施す(ステップS704a)。
ステレオモードがONの場合は、イメージデコーダ7aがデコードしたレフトビューイメージをイメージプレーン8(図4に示す符号(L)を付した領域)に書き込むが、イメージプレーン8(図4に示す符号(L)を付した領域)に書き込んだレフトビューイメージについて、左目用のシフト処理を施さない。何故ならばステレオモードがONの場合、レフトビューイメージとは見える角度の異なるライトビューイメージがイメージデコーダ7bを介してイメージプレーン(図4に示す符号(R)を付した領域)に書き込まれるからである(ステップS704b)。
ステップS704aまたはステップS704bによりイメージプレーン8の符号(L)を付したものには、イメージメモリ7に格納された左目用のイメージデータであって、イメージデコーダ7aによってデコードされたものが格納される。
次に、ステップS705で合成部15は表示モード記憶部29にある、インタラクティブグラフィクスプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合は、BD-Jアプリケーションはレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)にレフトビュー用インタラクティブグラフィクスを書き込み、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)からレフトビュー用インタラクティブグラフィクスを取得して、取得したレフトビュー用インタラクティブグラフィクスに対して、プレーンシフトエンジン20が左目用のシフト処理を施す(ステップS706a)。
ステレオモードがONの場合においては、BD-Jアプリケーションはレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)にレフトビュー用インタラクティブグラフィクスを書き込む。その後、表示のために左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)からレフトビュー用インタラクティブグラフィクスを取得するが、レフトビュー用インタラクティブグラフィクスに対しては、左目用のシフト処理を施さない(ステップS706b)。
ステップS706a,ステップS706bでレフトビューインタラクティブグラフィクスが取得されたレフトビューインタラクティブグラフィクスプレーンには、BD-Jモード時においてBD-Jアプリケーションの描画命令によりレンダリングエンジン22aを通して描画されたデータが格納されている。
また、HDMVモード時において、レフトビューインタラクティブグラフィクスプレーンには、字幕ストリーム以外のグラフィクストリームから抽出されたグラフィクスデータのデコード結果が格納されることになる。
ステップS707ではステップS701のバックグラウンドプレーン11の(L)の符号を付したものに書き込まれた背景データ、ステップS702のビデオプレーンの(L)の符号を付したものに書き込まれたビデオデータ、ステップS704のイメージプレーンの(L)の符号を付したものに書き込まれた字幕データ、ステップS706のインタラクティブグラフィクスプレーンの(L)の符号を付したものに書き込まれたGUIデータを順に合成し、レフトビューとしてディスプレイへ出力する。
ステップS703、S705において、ステレオモードがOFFであると判定された場合、対応するプレーンにおいてシフト処理が施されたデータが合成の対象となる。そして、ディスプレイの出力のタイミングで左右処理記憶部のフラグを転換する。なお、S701〜S707の各処理は左目用の処理を施しているが、現在の処理が左目用の処理であるかどうかは、左右処理記憶部を参照することにより判定される。
次にS701〜S707の左目用の処理を完了した後に、右目用の処理を行なう。
図42は、例えば図40に示すステップS603(右目用処理)の具体的一例であり、詳しくは、表示モードが3Dのときの右目用処理の処理手順の一例を示すフローチャートである。図42におけるステップS801〜ステッステップS809は右目用処理である。ステップS801で合成部15は、表示モード記憶部29にある、バックグラウンドプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合はレフトビュー用の背景データをバックグラウンドプレーン11の(R)を付したものに書き込み、バックグラウンドプレーン11の(R)を付したものから背景データを取得する(ステップS802a)。ステレオモードがONの場合はライトビュー用の背景データをバックグラウンドプレーン11の(R)を付したものに書き込み、バックグラウンドプレーン11の(R)を付したものからライトビュー用の背景データを取得する(ステップS802b)。
次に、ステップS803で合成部15は表示モード記憶部29にある、ビデオプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合はレフトビュー用のビデオストリームをビデオデコーダ5aを用いてデコードして、ビデオプレーン6(図4の(R)を付したもの)に書き込んだ後に、合成部15は前記ビデオプレーン6(図4の(R)を付したもの)からレフトビュー用のビデオデータを取得する(ステップS804a)。ステレオモードがONの場合は、ビデオデコーダ5bを用いてライトビュー用のビデオストリームをデコードして、ビデオプレーン6(図4の(R)を付したもの)に書き込んだ後に、合成部15は前記ビデオプレーン6(図4の(R)を付したもの)からライトビュー用のビデオデータを取得する(ステップS804b)。
そして、ステップS805で合成部15は表示モード記憶部29にある、イメージプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合はイメージデコーダ7aがデコードしたレフトビューイメージをイメージプレーン8(符号(R)を付したもの)に書き込む。その後、イメージプレーン8の符号(R)を付したものに書き込まれたレフトビューイメージに対し、プレーンシフトエンジン20が右目用のシフト処理を施す(ステップS806a)。ステレオモードがONの場合は、イメージデコーダ7bがデコードしたライトビューイメージをイメージプレーン8(図4に示す符号(R)を付した領域)に書き込むものの、シフト処理を施さない。何故ならばステレオモードがONの場合、レフトビューイメージとは見える角度の異なるライトビューイメージがイメージデコーダ7bを介してイメージプレーン8(図4に示す符号(R)を付した領域)に書き込まれるからである(ステップS806b)。
ステップS806a,ステップS806bで取得したイメージプレーンにはイメージメモリ7に格納された字幕データであって、イメージデコーダ7(図4のイメージデコーダ7aまたは7b)によってデコードされたものが格納される。
次に、ステップS807で合成部15は表示モード記憶部29にある、インタラクティブグラフィクスプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合は、BD-Jアプリケーションはレンダリングエンジン22aを利用して、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)にレフトビュー用インタラクティブグラフィクスを書き込む。そして右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)に書き込まれたレフトビュー用インタラクティブグラフィクスに対し、プレーンシフトエンジン20が右目用のシフト処理を施す(ステップS808a)。
ステレオモードがONの場合は、BD-Jアプリケーションはレンダリングエンジン22aを利用して、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)にライトビュー用インタラクティブグラフィクスを書き込むものの、プレーンシフトエンジン20は、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)に書き込まれたライトビュー用インタラクティブグラフィクスに対し、シフト処理を施さない(ステップS808b)。
ステップS809ではステップS802のバックグラウンドプレーン11(符号(R)を付したもの)に書き込まれた背景データ、ステップS804のビデオプレーン6(符号(R)を付したもの)に書き込まれたビデオデータ、ステップS806のイメージプレーン8(符号(R)を付したもの)に書き込まれたイメージデータ、ステップS808のインタラクティブグラフィクスプレーンに書き込まれたGUIデータを順に合成する。
ステップS805、S807において、ステレオモードがOFFである場合には、対応するプレーンにおいてシフト処理がされたデータが合成の対象となる。そしてステップS806b、ステップS808bにおいて、合成結果を、ライトビューとしてディスプレイへ出力する。最後に、ステップS809において、ディスプレイの出力のタイミングで左右処理記憶部のフラグを転換する。なお、ステップS801〜S809の各処理は右目用の処理を施しているが、現在の処理が右目用の処理かどうかの判定は、左右処理記憶部19を参照することでなされる。
フレーム入力が継続している限り、図40に示すS602、S603、S604、S605(S604においてYesの場合)の処理が繰り返されることになる(ステップS606)。
以上で、表示モードが3Dのときのストリーム処理についての説明を終える。
なお、再生装置がAVストリームのヘッダ領域からプレーンオフセットDを取得する方法、かつ毎フレーム更新する実装をしている場合は、ステップS810の時点でオフセット設定部21によりプレーンシフトエンジン20のオフセットを次のフレームと対応した値に更新する必要がある。
図43(a)は、図41に示すステップS702、図42に示すステップS804aの具体的一例を説明するためのフローチャート図である。
まず、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードしてビデオデータを出力する(ステップS201)。
次にスケーリングFactorは“1“でないかどうかを判断する(ステップS202)。
この判断は、例えばBD-Jプラットフォーム22から指定された、スケーリングFactorーを参照し、参照した値に基づいて判断することにより、実現される。
本実施の形態では、プレーンシフトエンジン20内のスケーリングFactor保存部42に格納されたスケーリングFactor値を参照すればよいが、これに限定される必要はなく、スケーリングエンジン15内にBD-Jプラットフォーム22から指定された、スケーリングFactorを保存するスケーリングFactor保存部(図示せず)を備えるように構成しても良いし、プレーンシフトエンジン20内にスケーリングFactor保存部42を再生装置内であって、かつプレーンシフトエンジン20の外側に設け、スケーリングエンジン15、プレーンシフトエンジン20が再生装置内であって、かつプレーンシフトエンジン20の外側に設けたスケーリングFactor保存部42に保存されたスケーリングFactorを参照できるようにしても良い。
次にステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)デコードしたビデオデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーン6に書き込む(ステップS203)。
ここで、ステップS702の具体的処理においては、ステップS203は、ビデオプレーン6の符号(L)を付した領域に書き込むのに対し、ステップS804aの具体的処理においては、ステップS203は、ビデオプレーン6の符号(R)を付した領域に書き込む点が異なる。
例えばスケーリングFactorが1/2の場合には、例えば図22に示されるように表示画面の左上にビデオデータが表示されるようにビデオプレーンに書き込み、スケーリングFactorが1/4である場合には、例えば図22に示されるように表示画面の左上にビデオデータが表示されるようにビデオプレーンに書き込むことを意味する。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って表示位置を決めるようにしても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
ステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードしたビデオデータをビデオプレーン6に書き込む(S204)。
ここで、ステップS702の具体的処理においては、ステップS204は、ビデオプレーン6の符号(L)を付した領域に書き込むのに対し、ステップS804aの具体的処理においては、ステップS204は、ビデオプレーン6の符号(R)を付した領域に書き込む点が異なる。
ステップS204は、例えばスケーリングFactorが1/1の場合であり、例えば図22に示されるように表示画面にビデオデータが全画面表示されるようにビデオプレーンに書き込むことを意味する。
図43(b)は、図42におけるステップS804bの具体的一例を示すフローチャートである。
まず、ビデオデコーダ5bを用いてライトビュー用のビデオストリームをデコードしてビデオデータを出力する(ステップS201b)。
次にビスケーリングFactorは“1“でないかどうかを判断する(ステップS202)。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)デコードしたビデオデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーン6(符号(R)を付した領域)に書き込む(ステップS203b)。
ステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ビデオデコーダ5bを用いてライトビュー用のビデオストリームをデコードしたビデオデータをビデオプレーン6(符号(R)を付した領域)に書き込む(S204b)。
図16(a)は、図41に示すステップS704bの具体的一例を説明するためのフローチャート図である。図において、 まず、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードする(ステップS201c)。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。
次にステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)デコードしたイメージデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のイメージデータを表示画面の所定の位置に表示されるようにイメージプレーン8(図4の(L)を付した領域)に書き込む(ステップS203c)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)の左側図のようにビデオデータを表示画面の左上に寄せる際、字幕が対応する大きさで表示されるように字幕データをイメージプレーンに書き込むことになる。スケーリングFactorが1/4である場合には、例えば図22(a)の左側図のようにビデオデータを表示画面の左上に寄せる際、字幕が対応する大きさで表示されるように字幕データをイメージプレーンに書き込むことになる。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
その他にも、上述の処理において、拡大/縮小の処理は公知の技術を適用してもよい。
ステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(L)を付した領域)に書き込む(S204c)。
例えばスケーリングFactorが1/1の場合であり、例えば図22(c)の左側図のように表示画面にビデオデータが全画面表示されたときに対応する大きさの字幕データをイメージプレーン8に書き込むことになる。
図23(a)は、図42に示すステップS806bの具体的一例を説明するためのフローチャート図である。図において、まず、イメージデコーダ7bを用いてライトビュー用の字幕ストリームをデコードする(ステップS201e)。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、デコードしたイメージデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換がなされた水平ピクセル数、垂直ピクセル数のイメージデータが表示画面の所定の位置に表示されるようにイメージプレーン8(図4の(R)を付した領域)に書き込む(ステップS203e)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)右側図のようにビデオデータを表示画面の左上に寄せる際、字幕を対応する大きさで表示すべく、字幕データをイメージプレーンに書き込むことになる。スケーリングFactorが1/4である場合には、例えば図22(a)の右側図のように表示画面の左上にビデオデータを寄せて表示するにあたって、字幕データが同じ大きさで表示されるように、字幕データをイメージプレーンに書き込むことになる。
また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、イメージデコーダ7bを用いてライトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(R)を付した領域)に書き込む(S204e)。
例えばスケーリングFactorが1/1の場合であり、例えば図22(c)の右側に示されるように表示画面にビデオデータが全画面表示されたときに対応する大きさの字幕データをイメージプレーン8に書き込むことを意味する。
図16(b)は、図41に示すステップS706bの具体的一例を説明するためのフローチャート図である。図において、まず、レフトビュー用のインタラクティブグラフィクスデータを生成する(ステップS201d)。
レフトビュー用のインタラクティブグラフィクスデータの生成は、例えばBD-Jアプリケーションに含まれる描画プログラムに従って、生成すればよい。より詳細にはプログラムコードに従って計算により各画素の値を算出するのでも良いし、対応するレフトビュー用のJPEGグラフィックス画像データを仮想ファイルシステムを介して読み取られる仮想的なBD-ROM(BD-ROM100またはローカルストレージ1c)に予め記録しておき、BD-Jアプリケーションがこのレフトビュー用のJPEGグラフィックス画像データを読み取る構成であっても良い。このとき、レフトビュー用のJPEGグラフィックス画像データがエンコードされて記録されている場合、図示しないデコーダまたはイメージデコーダ7aによってデコードした後、読み取ればよい。
次にインタラクティブグラフィクスプレーンのスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。
次にステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換後の水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータが表示画面の所定の位置に表示されるように、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS203d)。
例えばスケーリングFactorが1/2の場合、GUI部品に対応するグラフィックスデータを1/2に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込み、スケーリングFactorが1/4である場合、GUI部品に対応するグラフィックスデータを1/4に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込むことになる。
また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータをBD-Jアプリケーションからの指定に従ってインタラクティブグラフィクスデータの表示位置を決めるようにしても良いし、所定の縮小率に応じて、インタラクティブグラフィクスデータの表示位置を予め決めておいても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
また、次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、生成したレフトビュー用のインタラクティブグラフィクスデータを、インタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS204d)。
例えばスケーリングFactorが1/1の場合であり、例えば全画面表示によりインターラクティブグラフィックスデータを表示する場合に対応する。
但し、インターラクティブグラフィックスプレーンのスケーリングFactorを考慮しない(つまり、インターラクティブグラフィックスプレーンのスケーリングFactorを常に1とする)のであれば、ステップS201dの後にステップS204dを行うようにし、ステップS202、ステップS203dは削除するようにすればよい、
例えば、インタラクティブグラフィクス画像がGUI部品に対応するグラフィクス画像である場合には、ステップS203dの処理において、表示画面において縮小したビデオ・字幕の合成画像が表示される部分以外にGUI部品に相当するインタラクティブグラフィクス画像の全画面表示がなされるように、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(符号(L)を付した領域)に書き込むよう構成することも可能である。
具体的には図24(b)において、スケーリングFactorが1/1で字幕とビデオ合成画像が左目から見える画像として表示されている状態(図24(b)の左側)において、例えばメニュー画面に切り換える入力を受け付けると、図24(b)に示すように、ビデオと字幕の合成画像のスケーリングFactorが1/2となり、表示画面左上に表示されるとともに、グラフィックス画像に対応するGUI画像、ディレクターコメントといったものがインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれ、このインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれた画像が更に合成され、左目用の合成画像となる(図24(a)の左側の図参照)
図23(b)は、図42に示すステップS808bの具体的一例を説明するためのフローチャート図である。図において、まず、ライトビュー用のインタラクティブグラフィクスデータを生成する(ステップS201f)。
ライトビュー用のインタラクティブグラフィクスデータの生成は、例えばBD-Jアプリケーションに含まれる描画プログラムに従って、生成すればよい。より詳細にはプログラムコードに従って計算により各画素の値を算出するのでも良いし、対応するライトビュー用のJPEGグラフィックス画像データを仮想ファイルシステムを介して読み取られる仮想的なBD-ROM(BD-ROM100またはローカルストレージ1c)に予め記録しておき、BD-Jアプリケーションがこのライトビュー用のJPEGグラフィックス画像データを読み取る構成であっても良い。このとき、ライトビュー用のJPEGグラフィックス画像データがエンコードされて記録されている場合、図示しないデコーダまたはイメージデコーダ7bによってデコードした後、読み取ればよい。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。 ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータを表示画面の所定の位置に表示されるようにインタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS203f)。
例えばスケーリングFactorが1/2の場合には、GUI部品に対応するグラフィックスデータを1/2に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込み、スケーリングFactorが1/4である場合には、GUI部品に対応するグラフィックスデータを1/4に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込むことになる。
また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータをBD-Jアプリケーションからの指定に従ってインタラクティブグラフィクスデータの表示位置を決めるようにしても良いし、所定の縮小率に応じて、インタラクティブグラフィクスデータの表示位置を予め決めておいても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、生成したライトビュー用のインタラクティブグラフィクスデータを、インタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS204f)。
例えばスケーリングFactorが1/1の場合であり、例えば全画面表示によりインターラクティブグラフィックスデータを表示する場合に対応する。
但し、インターラクティブグラフィックスプレーンのスケーリングFactorを考慮しない(つまり、インターラクティブグラフィックスプレーンのスケーリングFactorを常に1とする)のであれば、ステップS201fの後にステップS204fを行うようにし、ステップS202、ステップS203fは削除するようにすればよい。
例えば、インタラクティブグラフィクス画像がGUI部品に対応するグラフィクス画像である場合には、ステップS203fの処理において、表示画面において縮小したビデオ・字幕の合成画像を表示する部分以外に、GUI部品に相当するインタラクティブグラフィクス画像が全画面表示されるように、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(符号(R)を付した領域)に書き込む構成を採用することが可能となる。
具体的には図24(b)において、スケーリングFactorが1/1で字幕とビデオ合成画像が右目から見える画像として表示されている状態(図24(b)の右側に示す図)において、例えばメニュー画面に切り換える入力を受け付けると、図24(b)に示すように、ビデオと字幕の合成画像のスケーリングFactorが1/2となり、表示画面左上に表示されるとともに、グラフィックス画像に対応するGUI画像、ディレクターコメントといったものがインタラクティブグラフィックスプレーン(符号(R)を付した領域)に書き込まれ、このインタラクティブグラフィックスプレーン(符号(R)を付した領域)に書き込まれた画像が更に合成され、右目用の合成画像となる(図24(a)の右側の図参照)
図44(a)は、図41に示すステップS704aの具体的一例を説明するためのフローチャート図である。
まず、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードして字幕データを出力する(ステップS406)。
ステップS406においては、レフトビュー用の字幕ストリームをデコードする構成を説明するが、字幕ストリームとして左右の表示で同じ字幕ストリームを共有するような構成である場合には、左右の表示で共有する字幕ストリームを読み込めばよい。
スケーリングファクターは“1“でないかどうかを判断する(ステップS407)。 この判断は、例えばBD-Jプラットフォーム22から指定された、スケーリングFactorーを参照し、参照した値に基づいて判断することにより、実現される。
本実施の形態では、プレーンシフトエンジン20内にスケーリングFactor保存部42に格納されたスケーリングFactor値を参照すればよいが、これに限定される必要はなく、スケーリングエンジン15内にBD-Jプラットフォーム22から指定された、スケーリングFactorを保存するスケーリングFactor保存部(図示せず)を備えるように構成しても良いし、プレーンシフトエンジン20内にスケーリングFactor保存部42を再生装置内であって、かつプレーンシフトエンジン20の外側に設け、スケーリングエンジン15、プレーンシフトエンジン20が再生装置内であって、かつプレーンシフトエンジン20の外側に設けたスケーリングFactor保存部42に保存されたスケーリングFactorを参照できるようにしても良い。
ステップS407において、スケーリングFactorが“1“でないと判断した場合(ステップS407において、“Yes”と判定された場合)デコードした字幕データにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のイメージデータを表示画面の所定の位置に表示されるようにイメージレーン8(図4の(L)を付した領域)に書き込む(ステップS408)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)の左側図のようにビデオデータを表示画面の左上に寄せる際、字幕が対応する大きさで表示されるように字幕データをイメージプレーンに書き込み、スケーリングFactorが1/4である場合には、例えば図22(a)の左側図のようにビデオデータを表示画面の左上に寄せる際、対応する字幕が同じ大きさで表示されるように字幕データがイメージプレーンに書き込まれることになる。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数の字幕データを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS408において参照したスケーリングFactorを参照し、イメージプレーン8(具体的には図4において、(L)を付した領域)に格納した字幕データについて、左目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS409)。
次にステップS407において、スケーリングFactorが“1“であると判断した場合(ステップS407において、“No”と判定された場合)、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(L)を付した領域)に書き込む(ステップS410)。
例えばスケーリングFactorが1/1の場合であり、図22(c)の左側に示されるように表示画面にビデオデータが全画面表示されたとき、対応する大きさの字幕データがイメージプレーン8(図4の(L)を付した領域)に書き込まれることになる。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、イメージプレーン8(具体的には図4において、(L)を付した領域)に格納した字幕データについて、左目用のシフト処理を行う。これは、スケーリングFactorが1であるため、ステップS409における演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する、つまりオフセット値に相当する分シフトすることを意味する(ステップS411)。
図44(b)は 図42に示すステップS806aの具体的一例を説明するためのフローチャート図である。
まず、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードして字幕データを出力する(ステップS406)。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS407b)。
この判断は、例えばBD-Jプラットフォーム22から指定された、スケーリングFactorーを参照し、参照した値に基づいて判断することにより、実現される。
本実施の形態では、プレーンシフトエンジン20内にスケーリングFactor保存部42に格納されたスケーリングFactor値を参照すればよいが、これに限定される必要はなく、スケーリングエンジン15内にBD-Jプラットフォーム22から指定された、スケーリングFactorを保存するスケーリングFactor保存部(図示せず)を備えるように構成しても良いし、プレーンシフトエンジン20内にスケーリングFactor保存部42を再生装置内であって、かつプレーンシフトエンジン20の外側に設け、スケーリングエンジン15、プレーンシフトエンジン20が再生装置内であって、かつプレーンシフトエンジン20の外側に設けたスケーリングFactor保存部42に保存されたスケーリングFactorを参照できるようにしても良い。
ステップS407bにおいて、スケーリングFactorが“1“でないと判断した場合(ステップS407bにおいて、“Yes”と判定された場合)デコードした字幕データにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のイメージデータを表示画面の所定の位置に表示されるようにイメージプレーン8(図4の(R)を付した領域)に書き込む(ステップS408b)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)の右側図のように表示画面の左上にビデオデータを寄せて表示するにあたって、同じ大きさで字幕を表示するように字幕データをイメージプレーンに書き込み、スケーリングFactorが1/4である場合には、例えば図22(a)の右側図のように表示画面の左上にビデオデータを寄せて表示するにあたって、字幕データが同じ大きさで表示されるように字幕データをイメージプレーンに書き込むことになる。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS408bにおいて参照したスケーリングFactorを参照し、イメージプレーン8(具体的には図4において、(R)を付した領域)に格納した字幕データについて、右目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS409b)。
また、ステップS407bにおいて、スケーリングFactorが“1“であると判断した場合(ステップS407bにおいて、“No”と判定された場合)、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(R)を付した領域)に書き込む(ステップS410)。
例えばスケーリングFactorが1/1の場合であり、図22(c)の右側のように表示画面にビデオデータを全画面表示する際、対応する大きさの字幕データがイメージプレーン8に書き込まれることになる。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、イメージプレーン8(具体的には図4において、(R)を付した領域)に格納した字幕データについて、シフト処理を行う。これは、スケーリングFactorが1であるため、ステップS409における演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する(ステップS411b)。
図25(a)は、図41に示すステップS706aの具体的一例を説明するためのフローチャート図である。図において、まず、レフトビュー用のインタラクティブグラフィクスデータを生成する(ステップS421c)。レフトビュー用のインタラクティブグラフィクスデータの生成は、ステップS201dに関する説明において、既に説明をしたので、ここでは詳細な説明を省略する。
但し、ステレオモードがOFFの状態であるため、予めGUI部品に対応するレフトビュー用のJPEGグラフィックス画像データ以外に、GUI部品に対応する同じJPEGグラフィックス画像データをレフトビュー用/ライトビュー用のJPEGグラフィックス画像データとして共有する構成であれば、ステップS421はこの共有するJPEGグラフィックス画像データを読み込むことになる。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS422)。判断の具体例としては、ステップS202の説明において既に説明をしているので、ここでは詳細な説明を省略する。
次に、ステップS422において、スケーリングFactorが“1“でないと判断した場合(ステップS422において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータを表示画面の所定の位置に表示されるようにインタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS423c)。
この具体例としては、ステップS203dの説明において既に説明をしているので、ここでは、詳細な説明を省略する。
プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS423cにおいて参照したスケーリングFactorを参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(L)を付した領域)に格納したインタラクティブグラフィクスデータについて、左目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS424c)。
次にステップS422において、スケーリングFactorが“1“であると判断した場合(ステップS422において、“No”と判定された場合)、生成したレフトビュー用のインタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS425c)。
プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(L)を付した領域)に格納したインタラクティブグラフィクスデータについて、左目用のシフト処理を行う。これは、スケーリングFactorが1であるため、ステップS424cにおける演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する、つまりオフセット値の値に応じたシフト処理を行う(ステップS426c)。
但し、インターラクティブグラフィックスプレーンのスケーリングFactorを考慮しない(つまり、インターラクティブグラフィックスプレーンのスケーリングFactorを常に1とする)のであれば、ステップS421dc後にステップS425cを行い、その後にステップS426cを行なうようにし、ステップS422c、ステップS423c、ステップS424cは削除するようにすればよい、
例えば、インタラクティブグラフィクス画像がGUI部品に対応するグラフィクス画像である場合には、ステップS203dの処理において、表示画面において縮小したビデオ、字幕の合成画像を表示する部分以外にGUI部品に相当するインタラクティブグラフィクス画像の全画面表示を行うよう、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(符号(L)を付した領域)に書き込む構成を採用することが可能となる。
具体的には図24(b)において、スケーリングFactorが1/1で字幕とビデオ合成画像が左目から見える画像として表示されている状態(図24(b)の左側)において、例えばメニュー画面に切り換える入力を受け付けると、図24(b)の左側に示すように、ビデオと字幕の合成画像のスケーリングFactorが1/2となり、表示画面左上に表示されるとともに、グラフィックス画像に対応するGUI画像、ディレクターコメントといったものがインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれ、このインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれた画像が更に合成され、左目用の合成画像となる(図24(a)の左側の図参照)。
図25(b)は、図42における、ステップS808aの具体的処理の一例を説明するためのフローチャートである。図において、ステップS706aの具体的動作の一例の説明に用いた図に付した符号と同一のものは、同一またはこれに相当するものであるため、ここでは、詳細な説明を省略する。つまり、S421c、ステップ422の説明はここでは省略する。
次に、ステップS422において、スケーリングFactorが“1“でないと判断した場合(ステップS422において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータを表示画面の所定の位置に表示されるようにインタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS423d)。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS408において参照したスケーリングFactorを参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(R)を付した領域)に格納したインタラクティブグラフィクスデータについて、右目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS424d)。
また、次にステップS422において、スケーリングFactorが“1“であると判断した場合(ステップS422において、“No”と判定された場合)、生成したレフトビュー用のインタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS425d)。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(R)を付した領域)に格納したインタラクティブグラフィクスデータについて、右目用のシフト処理を行う。これは、スケーリングFactorが1であるため、ステップS424cにおける演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する、つまりオフセット値に相当する分シフト処理を行うことに相当する(ステップS426d)。
以上のフローチャートは表示の度に、移動量の計算を行うものであったが、スケーリングがアプリケーションによってなされる場合は、そのコール時に、プレーンオフセットEを更新して、オフセット値保存部におけるプレーンオフセットを、新しいものに置き換える方が、シフト量算出のための計算回数を減らすことができて合理的である。
このような処理を可能とするために、再生装置のBDーJプラットフォーム22にスケーリングAPIを備えることが必要である。スケーリングAPIは、例えばアプリケーションから引数を指定して呼出出せるものであり、引数として、例えばスケーリングFactorを指定するものである。
アプリケーションからスケーリングFactorを引数としてスケーリングAPIが呼出されると、BDーJプラットフォーム22は、例えばスケーリングFactor保存部に保存されたスケーリングFactorを更新するものである。
また、上記のような実装を行うことにより、出力処理の最中にスケーリング命令が来たとしても、すぐにはスケーリングFactorの更新に基づいた処理は行われず、右目と左目のずらし幅が必ず同期していることを保障できる。
(第2実施形態)
本実施の形態では、第1実施形態のように、字幕データ、インタラクティブグラフィクスデータのストリームをビデオストリームの奥行きに追従するのではなく、ビデオストリームを字幕・GUIの奥行きに追従させることにより、字幕付きビデオのスケーリング時の視聴者への目の疲労度を低減する変形例について述べる。
スケーリングにおいて、字幕、あるいはグラフィクスと、動画像との位置関係がおかしくならないようにするには、ビデオプレーンのプレーンシフトを実行するにあたって、グラフィクスプレーンにおけるプレーンオフセットがどのような値であるかを考慮して、ビデオプレーンのためのプレーンオフセットを計算せねばならない。
このような構成を実現するためには、本実施の形態においては、例えば表示モード記憶部29に記憶されているイメージプレーン設定のオフセット値を読み込んで、このオフセット値をビデオのオフセットに利用できる構成とすること、およびプレーンシフトエンジン20はビデオプレーン6に格納されたビデオデータを利用して右目用のシフト処理、左目用のシフト処理を行うものとする。
さらに図4において、プレーンシフトエンジン20には、このビデオプレーン用のプレーンオフセットを計算する構成要素を追加する必要がある。かかる構成要素が追加されたプレーンシフトエンジン20の内部構成を図46に示す。
第1実施形態では、オフセット保存部に保存されているプレーンオフセットを“プレーンオフセットD”と呼び、スケーリングのために算出されるプレーンオフセットをプレーンオフセットEと呼んだが、本実施形態においてビデオプレーンのプレーンシフトのために使用される実パラメータを、“プレーンオフセットV”と呼ぶ。
図46は、第2実施形態における再生装置のプレーンシフトエンジン20の内部構成を示すブロック図である。第1実施形態に示す図24のプレーンシフトエンジン20の内部構成に、ビデオプレーンオフセット演算部45が追加されていることがわかる。
ビデオプレーンオフセット演算部45は、字幕付きビデオのスケーリング時のビデオプレーンのプレーンオフセットVを計算するモジュールである。
第1実施形態におけるプレーンシフトは、グラフィクスプレーンに対するもののみであったが、本実施形態では、ビデオプレーンについてもプレーンシフトの対象になるので、ビデオプレーンのためのプレーンシフトの処理手順が必要になる。そして、イメージプレーンにおけるプレーンオフセットを考慮した、ビデオプレーンのプレーンオフセットの処理手順を示したのが、図47のフローチャートである。
図47(a)は、図41に示すステップS702の具体的一例を説明するためのフローチャート図である。
図において、図43(a)に付した符号と同一の符号を付したものは、同一またはこれに相当するものであるので、ここでは重複する説明は省略する。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、ステップS203を行なう。
次に、イメージプレーン用のプレーンオフセットDを用いて以下の数式の計算を実行し、ビデオプレーン用の画素のプレーンオフセットVを算出する。
(数式)
ビデオプレーン用の画素のプレーンオフセットV=Ceil(D-(スケーリングFactor×D))
そして、上述の数式により得られたビデオプレーンのプレーンオフセットVに基づき、左目用のビデオのシフト処理を行う(ステップS205e)。
シフト処理については図30または図31を用いての説明において、インターラクティブグラフィックスプレーンまたはイメージプレーンとあるのをビデオプレーンと読み替え、オフセットEをオフセットVと読み替えればよい。
また、次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ステップS204を行なう。
スケーリングFactorが“1“であるため、上述の数式において、スケーリングFactorに“1“を代入するとオフセットVは0ではるため、スケーリングFactorが“1“である場合には、ビデオのオフセット処理は行われないことになる。
図47(b)は、図42に示すステップS804aの具体的一例を説明するためのフローチャート図である。
図において、図43(a)、図47(a)に付した符号と同一の符号を付したものは、同一またはこれに相当するものであるので、ここでは重複する説明は省略する。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、デコードしたビデオデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーン6(符号(R)を付した領域)に書き込む(ステップS203f)。
次に、イメージプレーン用のプレーンオフセットDを用いて以下の数式の計算を実行し、ビデオプレーン用のプレーンオフセットVを算出する。
(数式)
ビデオプレーン用のプレーンオフセットV=Ceil(D-(スケーリングFactor×D))
そして、上述の数式により得られたビデオプレーンのプレーンオフセットVに基づき、右目用のビデオのシフト処理を行う(ステップS205f)。
また、次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードしたビデオデータをビデオプレーン6(符号(R)を付した領域)に書き込む(S204f)。
図45はステップ図42に示すステップS804bの一例を説明するフローチャートである。図において、図43(b)に付した符号と同一のものは、同一、またはこれに相当するものであるので、ここでは重複する説明は省略する。
図において、ステップS202bにおいて、スケーリングFactorが“1“でないと判断した場合(ステップS202bにおいて、“Yes”と判定された場合)、ステップ203bを実行する。
次に、イメージプレーン用のプレーンオフセットDを用いて以下の数式の計算を実行し、ビデオプレーン用のプレーンオフセットVを算出する。
(数式)
ビデオプレーン用のプレーンオフセットV=Ceil(D-(スケーリングFactor×D))
そして、上述の数式により得られたビデオプレーンのプレーンオフセットVに基づき、右目用のビデオのシフト処理を行う(ステップS205g)。
また、次にステップS202bにおいて、スケーリングFactorが“1“であると判断した場合(ステップS202bにおいて、“No”と判定された場合)、ステップS204bを実行する。
このように右目用処理、左目用処理において、ビデオプレーンにオフセットを与えることにより、イメージプレーン、インタラクティブグラフィックスプレーンのシフト処理を必ずしも行わなくても良くなるので、ビデオのスケーリングに応じてイメージプレーン、インタラクティブグラフィックスプレーンのオフセットを変えなくても、ビデオのオフセットを変えるので、ビデオストリームを字幕・GUIの奥行きに追従させることが可能となり、字幕付きビデオのスケーリング時の視聴者への目の疲労度を低減することが可能となる。
上述の処理は、右目用処理、左目用処理において、ビデオプレーンにオフセットを与えたときに、イメージプレーン、インタラクティブグラフィックスプレーンのシフト処理を行わないというものではない。
上述したようなフローチャートでは、ビデオプレーン用にプレーンオフセットが算出されるので、本実施形態では、ビデオプレーン及びイメージプレーンの双方において、プレーンシフトが実行されることになる。ここで、グラフィクスプレーンに対してプレーンシフトが実行された場合と、ビデオプレーン及びグラフィクスプレーンに対してプレーンシフトが実行された場合とで、字幕と、動画像との双方の位置関係がどのように変化するかを、図48を参照しながら具体的に説明する。
ビデオプレーン及びグラフィクスプレーンの双方シフトが適用される状況について説明する。
図48(a)は、スケーリングがなされた動画像及びグラフィクスのうち、グラフィクスの座標を所定の画素数だけ移動させることを意図した状況を示す。これは、本実施の形態を行わずスケーリングを行った場合の出力画面を示すものである。本図において、プレーンオフセットが-40に設定されているので、レフトビュー時には、9RRに示すように右方向に40画素だけ、ライトビュー時には、9LLに示すように左方向に40画素だけ、各画素の座標が移動していることがわかる。
スケーリングを施したビデオの上にスケーリング前と同様のシフト幅(40ピクセル)をもつ字幕が動画像に合成されると、スケーリング前の映像と比較した場合、字幕のポジションが大幅にずれているため、ビデオと字幕の構成が保てない。これでは立体感の差が激しくなったことにより目がついていけなくなる恐れがある。
そこでプレーンオフセット演算部43は、上述した計算を行い、ビデオプレーンのシフト量を算出する。
具体的なプレーンオフセットが−40画素であるものとし、スケーリングFactorが1/2であるものとする。これらを上記数式に適用してビデオプレーンのシフト量を算出すると、以下の計算によりビデオプレーンのプレーンオフセットは“-20”と算出される。
V=D−(ScallingFactor×D)=-40-(1/2×-40)=-20
ビデオプレーンについては、ビデオプレーンのための実パラメータであるプレーンオフセットVが-20と算出されているので、レフトビュー時には右方向に20画素だけ、ライトビュー時には左方向に20画素だけ、ビデオプレーンの各画素の座標が移動することになる。動画像及びグラフィクスにスケーリングを施した場合、スケーリングを施したビデオが20画素だけシフトされ、その上に、40画素だけシフトされた字幕が合成されることになる。
ビデオプレーンと、グラフィクスプレーンとの相対的な変化量は、レフトビューの場合は右方向に20画素、ライトビューの場合は左方向に20画素になるので、同図(a)と比較して、ビデオプレーンと、グラフィクスプレーンとの座標の変化量は小さく抑制されている。
こうすることで同図(b)では、スケーリング後の出力映像の14LLと14RRはスケーリング前のビデオと字幕との構成比率を保っていることがわかる。これにより立体感の差が激しくなることを防げ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
以上のように本実施形態によれば、ビデオが縮小されるにつれて、左目と右目の視差が自然に縮まることによる奥行き感の軽減を、プレーンシフトによって防ぐことができる。
(第3実施形態)
本実施形態は、第1実施形態の拡張例である。スケーリングを行った場合は、拡大・縮小率が高いと奥行きの変更もスケーリング前と後で激しく異なる。第1実施形態ではスケーリングを行った際はスケーリング要求後の次のフレームでスケーリングFactorに応じた奥行き変更が反映される。急に映像の奥行きが激しく異なってしまうと、ユーザの目の疲労に繋がってしまう。本実施形態ではスケーリング要求があった際は次のフレームで一度に奥行きも変更してしまうのではなく、少しずつ奥行きを変更させていくことにより、ユーザの目の疲労を軽減させることを目的とする変形例について述べる。
少しずつ奥行きを変更させるには、初期的なプレーンオフセットと、最終的なプレーンオフセットとの両方をプレーンオフセットとしてプレーンシフトエンジン20内で保存しておく必要があり、奥行き変更処理の途中において、途中段階のプレーンオフセットを、再計算してやる必要がある。これらの変更を加えれば、プレーンシフトエンジン20の内部構成は、図49に示すものとなる。
図49は、第3実施形態における再生装置のプレーンシフトエンジン20の内部構成を示すブロック図である。第1実施形態に示す図4のプレーンシフトエンジン20の内部構成から、さらにプレーンオフセット値保存部41に、前情報保存部41aと、後情報保存部41bとを含む構成を開示している。また、フレームカウンタ部46も追加されており、フレームカウンタ部46には、フレーム更新スパン保存部46aと更新済みフレーム数保存部46bとが追加されている。以下、本実施形態において新たに追加された構成要素について説明する。
(前情報保存部41a)
前情報保存部41aは、オフセット設定部21から指示されたプレーンオフセットDを、スケーリング前のプレーンオフセットとして保存する。
(後情報保存部41b)
後情報保存部41bは、スケーリングが完了後のプレーンオフセットE、つまり、プレーンオフセットDにスケーリングFactorを乗じた値を保持する。また、オフセット値保存部にプレーンオフセットDにスケーリングFactorを乗じた値が更新された場合、更新されたオフセットが後情報保存部41bに格納される。
上述の更新するタイミングはスケーリング命令(例えばBD-Jアプリからスケーリング命令によりビデオ、字幕を縮小表示する場合など)が発行されたときにスケーリングFactor保存部42の値を更新した後に行なわれる。
(プレーンオフセット演算部43)
プレーンオフセット演算部43は、前情報保存部41aに保存されているプレーンオフセットに示されるプレーンオフセットDと、後情報保存部41bに保存されているプレーンオフセットEとを、それぞれ画素座標に変換する。そして、その2つの画素座標の差分を計算し、スケーリング時に必要なプレーンオフセットを得て、更新済みフレーム数保存部46bの値をフレーム更新スパン保存部46aの値で割る。
そして、更新済みフレーム数保存部46bの更新済みフレーム数を、フレーム更新スパン保存部46aのフレーム更新スパンで割り、割った値に、最終的に上記演算したプレーンオフセットに乗ずる。
第1実施形態では、オフセット設定部21から供給されるプレーンオフセットを“プレーンオフセットD”と呼び、スケーリングに応じて算出されるプレーンオフセットを“プレーンオフセットE”と呼んだが、本実施形態で、フレームiが経過した時点において、イメージプレーンのシフトのために用いられるプレーンオフセットを、プレーンオフセットP(i)と呼ぶ。
フレーム(i)におけるプレーンオフセットP(i)の計算には、次のような数式を用いる
(数式)
“プレーンオフセットP(i)=(スケーリング完了前のプレーンオフセットD - スケーリング完了後のプレーンオフセット)x (更新済みフレーム数i÷フレーム更新スパン)“。
また、プレーンオフセットP(i)が小数点以下の数字となる場合には、小数点第1位の値を切り上げた整数値とする。
(シフト部44)
シフト部44は、右目用の処理を行う場合、画面より手前に飛び出さす場合は左へシフトさせ、奥に引っ込める場合は右へシフトさせる。左目用の処理を行う場合、画面より手前に飛び出さす場合は右へシフトさせ、奥に引っ込めさせる場合は左へシフトさせる。
(フレームカウンタ部46)
フレームカウンタ部46は、スケーリング要求後にフレーム単位で前情報保存部41aに保存された値から、後情報保存部41bに近づける機能を兼ね備えている。
具体的には、フレームカウンタ部46は、どれだけのフレームを使って前情報保存部41aに保存された値から、後情報保存部41bに近づけるかを示すフレーム更新スパンを保持しているフレーム更新スパン保存部46aと、スケーリング要求後に何回のフレーム処理が行われたかを保存する更新済みフレーム数保存部46bとを有する。
フレーム更新スパン保存部46aの値は、再生装置のマニュファクチャによって再生装置に設定された値であり、更新されることはない。
更新済みフレーム数保存部46bがフレーム更新スパン保存部46aの値より低い場合は、更新済みフレーム数保存部46bの値は、1だけインクリメントされる。
以上がプレーンシフトエンジンの内部構成についての説明である。続いて、第3実施形態に係るプレーンシフトエンジンの内部構成について説明する。
更新済みフレーム数は、再生対象となるビデオフレームの変化に伴い、更新されてゆくものなので、本実施形態の処理を再生装置に実装するには、第1実施形態に示した3DAVストリームの再生処理の処理手順に、更新済みフレーム数に関する処理を追加せねばならない。そのような更新済みフレーム数に関する処理には、更新済みフレーム数をリセットする処理、更新済みフレーム数をインクリメントする処理がある。これら更新済みフレーム数に関する処理を追加すれば、3DAVストリームの3D表示の処理手順は、図50のようなものになる。
図50は、3DAVストリームの3D表示の処理手順を示すフローチャートである。
図50では、図40からの変更点として、ステップS611からステップS614までが追加されていることになっていることに注目していただきたい。
本図の図40に付した符号と同一の符号を付したものは、図40と同一またはこれに相当するものである。
本フローチャートは、ステップS602、S603、S613、S614、S615、S616、S617およびS606を含むステップを実行するというものである。
上述のステップにおいて、左目用処理(ステップS602)、右目用処理(ステップS603)を順次実行するという処理を、フレーム出力が途絶えるまで(ステップS606でNo)継続するものである。本ループにおける左目用処理では、フレームiに対応する画素のシフト量P(i)だけ、イメージプレーンにおける各画素の座標を移動させる。また右目用処理でも、フレームiに対応する画素のシフト量P(i)だけ、イメージプレーンにおける各画素の座標を移動させる。このとき、左目用処理に対応するシフト量P(i)と、右目用処理に対応するシフト量P(i)は大きさは、同じであるもののシフトする方向が互いに異なる。
まず、更新済みフレーム数iを0にセットする(ステップS617)。
次に左目用処理を行う(ステップS602)
このとき、左目用処理において、イメージプレーンオフセット(シフト量)の算出において、後述するスケーリング前のプレーンオフセットD、スケーリング完了後のプレーンオフセットE、更新済みフレーム数の数i、更新スパンを用いて算出されるP(i)を用いる。
次に右目用処理を行う(ステップS603)
このとき、右目用処理においてイメージプレーンオフセット(シフト量)の算出において、上述のP(i)を用いる。
ステップS613は、更新済みフレーム数iがフレーム更新スパンより小さいかどうかの判定でありもし小さければ、ステップS614において更新済みフレームiをインクリメントする。等しいか大きければ(つまりステップS613においてNoと判断した場合)、。
ステップS606へ進む。
ステップS606では、次フレームがあるのかどうかを判断する。
次フレームがない場合、つまりステップS606において、Noと判断した場合には3DAVストリームの3D表示の処理を終了する。
次フレームがない場合、つまりステップS606において、Yesと判断した場合には、ステップS602、S603における処理において、更新済みフレーム数を用いてP(i)を再度計算する。
更新済みフレーム数iは更新スパンに到達するまでは、ステップS613の判断する毎に1つずつ増えていき、更新スパンに到達した以降はステップS614が実行されないため、更新済みフレーム数iは更新スパンに到達した以降は、その値が一定になる。
更新済みフレームiは、ビデオストリームの再生進行に伴い更新されてゆき、それに伴い、プレーンオフセットEも更新されるので、本実施形態におけるプレーンシフトは、更新済みフレーム数が更新される度毎に、実行にする必要がある。この更新済みフレーム数の更新に伴い、プレーンオフセットの計算をやり直し、そして、再計算されたプレーンオフセットに基づきプラットフォームを実行する手順を示したのが、図51のフローチャートである。
図51は、イメージプレーンのプレーンシフトの処理手順を示すフローチャートである。
図51において、イメージプレーンのプレーンシフトの処理手順は左目用のシフト処理、右目用のシフト処理とは互いに共通する部分が多いため共通のフローチャートを用いて、説明をする。但し、左目用のシフト処理を行う場合はイメージプレーンの符号(L)を付した領域に格納した字幕データがシフト処理の対象となり、右目用のシフト処理を行う場合はイメージプレーンの符号(R)を付した領域に格納した字幕データがシフト処理の対象となる。
イメージプレーンを取得し、デコードしたイメージをイメージプレーンに書き込む(ステップS901)。
そして、以下の計算により、フレームiにおけるプレーンオフセットP(i)を算出する。
プレーンオフセットP(i)は
プレーンオフセットP(i) =(スケーリング完了前のプレーンオフセットD - スケーリング完了後のプレーンオフセットE)x (更新済みフレームi÷フレーム更新スパン)
こうして算出されたプレーンオフセットP(i)に基づき、イメージプレーンのピクセル座標をシフトする(ステップS904)。但し、ステップS904は左目用のシフト処理をするときにシフトする方向と、右目用のシフト処理をするときにシフトする方向とは互いに逆向きである。
図51のループを一巡する度に更新済みフレームiが、ステップS809でインクリメントされてゆき、この更新済みフレームiに基づきプレーンオフセットP(i)が算出されるので、更新済みフレームiが大きくなればなる程、プレーンオフセットP(i)が大きく変化してゆくことがわかる。そして更新済みフレームiがフレーム更新スパンに到達すれば、更新済みフレームiが“0”にリセットすることがわかる。
上述したように、更新済みフレームiは、ビデオストリームの再生進行に伴い更新されてゆき、それに伴い、プレーンオフセットP(i)も更新させてゆくことがわかる。この更新済みフレーム数及びプレーンオフセットP(i)の時間的変動を表したのが図52である。以下、図52の具体例を交えながら、プレーンオフセットP(i)の時間的変位について説明する。
図52は、更新済みフレームiが“1”、“2”、“3”と更新されてゆく場合に、プレーンオフセットP(i)がどのように変化するかを示す。本図では、右斜め方向に時間軸を描いており、この時間軸上にフレーム0、1、2、3を記述している。そして、このフレーム0、1、2、3におけるイメージプレーンの内容が、この時間軸上に描いている。
各フレーム上の数式は、フレーム0、1、2、3を識別するための更新済みフレームiが、“1”、“2”、“3”の値をとった際、プレーンオフセットP(i)がどのような値になるかを示す。
この具体例では、-40と-20という値が前情報保存部と後情報保存部に保存されていると仮定する。-40は、プレーンオフセットDであり、ー20は、プレーンオフセットのピクセル変更演算を加えた後のプレーンオフセットP(i)である。本例では、3フレームに跨いで奥行きを序々に変更する設定になっており、フレーム更新スパン保存部46aには“3”の値が保存されている。更新済みフレーム数保存部46bには、“1“が格納されている。スケーリング命令後、1フレーム目の処理を行っていることを示す。この格納値は、フレームの経過に伴い、“2”、“3”とインクリメントされてゆく。そしてスケーリング命令からスケーリングFactorが、“1/2“であるの要求があったため、スケーリングFactor保存部41には1/2の値が設定されている。
この具体例では、プレーンシフトエンジンの情報、前情報保存部と後情報保存部の差分から3フレームかけて-20ピクセルを移動させる必要があることが判明している。
(フレーム1)
フレーム1において、更新済みフレームi=“1“を上記数式に適用すれば、更新済みフレームi÷フレーム更新スパンは“1/3”になり、フレームP(i)における画素プレーンオフセットP(1)は、(-40-(1/2×-40)×1/3)の計算により、“-7”と算出される。従って、フレーム1においては、レフトビュー時においてイメージプレーンは右方向に7画素だけシフトし、ライトビュー時においてイメージプレーンは左方向に7画素だけシフトする。
(フレーム2)
フレーム2において、更新済みフレームi=“2“を上記数式に適用すれば、更新済みフレームi÷フレーム更新スパンは“2/3”になり、フレームP(i)におけるプレーンオフセットP(2)は、(-40-(1/2×-40)×2/3)の計算により、“-14”と算出される。従って、フレーム2においては、レフトビュー時においてイメージプレーンは右方向に14画素だけシフトし、ライトビュー時においてイメージプレーンは左方向に14画素だけシフトする。
(フレーム3)
フレーム3において、更新済みフレームi=“3“を上記数式に適用すれば、更新済みフレームi÷フレーム更新スパンは“3/3”になり、フレームP(i)におけるプレーンオフセットP(3)は、(-40-(1/2×-40)×3/3)の計算により、“-20”と算出される。従って、フレーム3においては、レフトビュー時においてイメージプレーンは右方向に20画素だけシフトし、ライトビュー時においてイメージプレーンは左方向に20画素だけシフトする。
この具体例では、-20画素の1/3にあたるシフト数(7ピクセル)を各フレームで移動させ、3フレーム目には-20ピクセルシフトがなされ、4フレーム目以降は3フレーム目のシフト数が維持され状態が継続する。この継続はステップS606において、次フレームがないと判断されるまで維持される。
以上のように本実施形態によれば、スケーリング時の字幕の奥行き変換を急激に変えるのではなく、少しずつ奥行きを変更させていくことにより、ユーザの目の疲労を軽減させることが可能となる。(第4実施形態)
プレーンシフトエンジン20が、プレーンシフトを行うにあたってのシフト量は、立体視のための何等かのパラメータに基づき、算出する必要がある。かかるシフト量算出のためにパラメータにはMVC(Multi
View Codec)ビデオストリームに組み込まれている立体視用のプレーンオフセットを採用することが望ましい。ただし、これには限らず、コンテンツプロバイダがBD-ROMを通じて再生装置に供給する様々な情報要素を通じて、プレーンシフトエンジン20に供給できるようにしておく方が望ましい。
図53を参照しながら、プレーンオフセットの設定処理について説明する。
図53は、プレーンオフセットの設定に関わる部分の構成を示す。
プレーンオフセットの供給の仕方には、以下の(AA)〜(FF)のバリエーションがある。
(AA)BD-JアプリケーションはsetOffsetValueのメソッドコールによって、表示モード記憶部29内のプレーン設定のプレーンオフセットを更新することができる。
上記プレーンオフセットはBD-JアプリケーションによりgetOffsetValueメソッドにより取得可能である。
BD-JアプリケーションがAPIをコールしてプレーンオフセットを組込む場合、自由度は高いが、リアルタイム性が劣る。プレーンシフトエンジンがBD-Jアプリケーションにより指定されたオフセットを利用する場合、BD-Jアプリケーションから指定されたプレーンずオフセットが表示モード記億部29(例えば、イメージプレーン設定におけるプレーンオフセット、インタラクティブグラフィックスプレーン設定におけるプレーンオフセット)に格納され、オフセット設定部21により読み出されてプレーンシフトエンジン20内のオフセット値保存部41に設定される。プレーンシフトエンジンによる水平方向へのシフトはプレーンオフセットに応じて合成時に自動的に行われる。
設定の時期について説明する。
イメージプレーン8及びインタラクティブグラフィクスプレーン10の奥行きを変更するAPIは、アプリケーションが起動した後ならば、起動したアプリケーションからいつでも呼び出し可能であり、それ以外でも例えばビデオの停止中に呼び出される可能性もある。しかし、表示モード記憶部29内のプレーンオフセットをプレーンシフトエンジン20に格納するタイミングを制御することでグラフィクスプレーンのずらし幅が必ず同期していることを保障できる。
具体的にはBD-JアプリケーションがsetOffset()を呼び出したタイミングでプレーンシフトエンジン20のプレーンオフセットを更新するのではなく、1フレーム分のレフトビューとライトビューの両方の出力が完了した時点で表示モード記憶部29内のプレーンオフセットが更新されているかを確認し、それに伴ってプレーンシフトエンジン20のオフセットを更新するようにする。こうすることで、グラフィクスプレーンのずらし幅が必ず同期していることを保障できる。レフトビュー、及び、ライトビューのずらし幅が同期していない場合はコンテンツ作成者の意図しない表示になってしまい、視聴者に不愉快な出力映像を与えてしまうことは言うまでもない。
(BB)BD-ROMがロードされた際、またはBD-ROMがロードされ、又は、仮想パッケージが構築された際、BD-ROMまたは仮想パッケージから特定されるMETAディレクトリに格納されたメタファイル(ZZZZZ.xml)からプレーンオフセットを読み出してプレーンシフトエンジン20のプレーンオフセットを更新する。
(CC)MVCビデオストリームの読み出し及びデコードが開始された際、MVCビデオストリームを構成する各PESパケットのヘッダ領域に組込まれているプレーンオフセットを、プレーンシフトエンジン20のプレーンオフセットとしてリードバッファ28内に設定する。望ましくは1フレーム分のレフトビューとライトビューの両方の出力が完了した時点で、現在処理中のフレームと対応するオフセットを、プレーンシフトエンジン20のプレーンオフセットとして、リードバッファ28内に設定する。
MVCビデオストリームにプレーンオフセットを組み込む場合、ストリームから勝手にずらすことができるので、リアルタイム性が高いが、オーサリング時の手間が大きい。
(DD)トランスポートストリームの読み出し及びデコードが開始された際、トランスポートストリームパケットのヘッダ領域に組込まれているオフセットを、プレーンシフトエンジン20のプレーンオフセットとしてに更新する。望ましくは1フレーム分のレフトビューとライトビューの両方の出力が完了した時点で、現在処理中のフレームと対応するプレーンオフセットを、プレーンシフトエンジン20のプレーンオフセットとして、リードバッファ28内に設定する。
ストリーム内に組み込む場合、ストリームから勝手にずらすことができるので、リアルタイム性が高いが、オーサリング時の手間が大きい。
(EE)カレントプレイリストが決定されて、プレイリスト情報がロードされた際、このプレイリスト情報のオフセットを、プレーンシフトエンジン20内にプレーンオフセットとして設定する。プレイリスト情報を用いる場合、オーサリングでの自由は高いが、ストリームにオフセットを埋め込んだ場合に比べると、一度オフセットを設定してから、オフセットを再度更新するまでのオフセット更新の時間間隔を余り短くすることができず、リアルタイム性がやや劣る。
(FF)UO検知モジュール26は、リモコンや機器に付属のボタンなどの操作によりイメージプレーン8及びインタラクティブグラフィクスプレーンの奥行きのレベルを変更するユーザオペレーションを受けた場合、つまり、奥行き感が、“遠い”、“普通”、“近い“等の3つのレベルを受け付けた場合や、奥行き感は“何cm”、“何mm”というように、数値入力によって奥行き感のレベルを受け付けた場合、これを用いて、プレーンシフトエンジン20のプレーンオフセットを更新することができる。かかる更新によって、リモコンにおける右矢印キーの押下に応じてプレーンオフセットを大きくしたり、左矢印キーに応じてプレーンオフセットを小さくすることができる。こうすることで、右矢印キー、左矢印キーの押下回数によって、グラフィクスを手前に見せたり、奥に見せたりすることができ、操作性が向上する。
イメージプレーン8及びインタラクティブグラフィクスプレーン10のシフト量は、以上の過程を経て、プレーンシフトエンジン20のプレーンオフセットに基づいて計算処理を行うことで得られる。
MVCビデオストリーム内にプレーンオフセットが組込まれている場合、プレーンオフセット演算部43は、1フレームに対するレフトビュー用の出力とライトビュー用の出力とが完了した時点で、プレーンシフトエンジン20内に格納されたプレーンオフセットに基づいてグラフィクスプレーンのシフト量を計算する。これは、プレーンオフセットがMVCビデオストリームに格納されている場合、フレーム毎にプレーンオフセットが変化することもありうるからである。
以上が、プレーンオフセットを設定する様々なケースについての説明である。続いて、ユーザ操作やアプリケーションによって提供される値について説明する。
ユーザ操作やアプリケーションから提供される値はシフト量そのものではなく、例えば、現状プレーンシフトエンジン20に設定されている値からの調整値が与えられることがある。この場合、プレーンオフセット計算を実行する。例えば、右矢印キーが3回押されたり、数値キーの“3”という値が入力されれば、装置内に設定されているプレーンオフセットにかかる値を加算して、プレーンシフトエンジン20は加算された値を基にプレーンオフセットを計算する。“+”の値であると、例えばよりずらし幅が縮小され、奥に見えるようにし、“―”の値であると、例えばずらし幅を増やし、より手前に見えるようにすることが考えられる。
次に、奥行きの変更について説明する。
上述したように、字幕、GUI等のグラフィクスを横軸にシフトする際、字幕、GUI等のグラフィクスの横軸のずらし幅を変更することによって、奥行きが変更する。例えば、レフトビュー字幕とライトビュー字幕を一定方向に近くへ寄せれば寄せるほど画面に近づくに表示がなされ、逆方向に離せば離すほど画面から離れる視覚効果を得られる。しかし、プレーンオフセットと、飛び出し度合との相関性は、テレビにおけるインチ数、3D眼鏡における液晶の特性に影響するところが大きいので、この視覚効果の実現にあたって、予め端末内に係数を設定しておき、プレーンオフセットにこの係数を乗じたものをシフトに用いる。このように係数を乗じることで、テレビや再生装置、3D眼鏡における特性に基づき、立体視映像の飛び出し度合を調整することが可能になる。
(第5実施形態)
本実施形態では、これまでの実施形態で述べた再生装置を、どのようなハードウェアを用いて構成するかを説明する。
図54は、再生装置の内部構成を示す図である。本図において再生装置を構成する主だった部品は、フロントエンド部101、システムLSI102、メモリデバイス103、バックエンド部104、不揮発性メモリ105、ホストマイコン106、ネットワークI/F107である。
フロントエンド部101は、データ入力源である。フロントエンド部101は、例えば、前図に示したBDドライブ1a、ローカルストレージ1cを含む。
システムLSI102は、論理素子から構成され、再生装置中核をなす。少なくとも、デマルチプレクサ4、ビデオデコーダ5a,b、イメージデコーダ7a,b、オーディオデコーダ9、再生状態/設定レジスタ(PSR)セット12、再生制御エンジン14、合成部15、プレーンシフトエンジン20といった構成要素は、このシステムLSIの内部に組み込まれることになる。
メモリデバイス103は、SDRAM等のメモリ素子のアレイによって構成される。メモリデバイス107は、例えばリードバッファ2a、リードバッファ2b、動的シナリオメモリ23、静的シナリオメモリ13、グラフィクスプレーン6,8、ビデオプレーン10、バックグラウンドプレーン11を含む。
バックエンド部104は、再生装置内部と、他の装置との接続インターフェイスであり、HDMI送受信部17を含む。
不揮発性メモリ105は、読み書き可能な記録媒体であり、電源が供給されなくても、記録内容を保持できる媒体であり、後述する表示モード記憶部29に記憶されている表示モードのバックアップに利用される。かかる不揮発性メモリ105には、例えばフラッシュメモリ、FeRAMなどを利用することができる。
ホストマイコン106は、ROM、RAM、CPUからなるマイコンシステムであり、ROMには再生装置を制御するプログラムが記録されており、ROM内のプログラムがCPUに読み込まれ、プログラムとハードウェア資源とが協動することにより、HDMVモジュール24、BD-Jプラットフォーム22、モード管理モジュール24、UO検知モジュール26、再生制御エンジン14の機能を実現する。
以下、システムLSIについて説明する。システムLSIとは、高密度基板上にベアチップを実装し、パッケージングした集積回路をいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものも、システムLSIに含まれる(このようなシステムLSIは、マルチチップモジュールと呼ばれる。)。
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置200の中核としての役割を果たす。
かかるシステムLSIは、再生装置200は勿論のこと、TVやゲーム、パソコン、ワンセグ携帯等、映像再生を扱う様々な機器に組込みが可能であり、本発明の用途を多いに広げることができる。
システムLSIのアーキテクチャは、Uniphierアーキテクチャに準拠させるのが望ましい。
Uniphierアーキテクチャに準拠したシステムLSIは、以下の回路ブロックから構成される。
・データ並列プロセッサDPP
これは、複数の要素プロセッサが同一動作するSIMD型プロセッサであり、各要素プロセッサに内蔵されている演算器を、1つの命令で同時動作させることで、ピクチャを構成する複数画素に対するデコード処理の並列化を図る。
・命令並列プロセッサIPP
これは、命令RAM、命令キャッシュ、データRAM、データキャッシュからなる「Local Memory Controller」、命令フェッチ部、デコーダ、実行ユニット、レジスタファイルからなる「Processing Unit部」、複数アプリケーションの並列実行をProcessing Unit部に行わせる「Virtual Multi Processor Unit部」で構成される。
・MPUブロック
これは、ARMコア、外部バスインターフェイス(Bus Control Unit:BCU)、DMAコントローラ、タイマー、ベクタ割込コントローラといった周辺回路、UART、GPIO(General Purpose Input Output)、同期シリアルインターフェイスなどの周辺インターフェイスで構成される。
・ストリームI/Oブロック
これは、USBインターフェイスやATA Packetインターフェイスを介して、外部バス上に接続されたドライブ装置、ハードリディスクドライブ装置、SDメモリカードドライブ装置とのデータ入出力を行う。
・AVI/Oブロック
これは、オーディオ入出力、ビデオ入出力、OSDコントローラで構成され、テレビ、AVアンプとのデータ入出力を行う。
・メモリ制御ブロック
これは、外部バスを介して接続されたSD-RAMの読み書きを実現するブロックであり、各ブロック間の内部接続を制御する内部バス接続部、システムLSI外部に接続されたSD-RAMとのデータ転送を行うアクセス制御部、各ブロックからのSD-RAMのアクセス要求を調整するアクセススケジュール部からなる。
具体的な生産手順の詳細は以下のものになる。まず各実施形態に示した構成図を基に、システムLSIとすべき部分の回路図を作成し、回路素子やIC,LSIを用いて、構成図における構成要素を具現化する。
そうして、各構成要素を具現化してゆけば、回路素子やIC,LSI間を接続するバスやその周辺回路、外部とのインターフェイス等を規定する。更には、接続線、電源ライン、グランドライン、クロック信号線等も規定してゆく。この規定にあたって、LSIのスペックを考慮して各構成要素の動作タイミングを調整したり、各構成要素に必要なバンド幅を保証する等の調整を加えながら、回路図を完成させてゆく。
回路図が完成すれば、実装設計を行う。実装設計とは、回路設計によって作成された回路図上の部品(回路素子やIC,LSI)を基板上のどこへ配置するか、あるいは、回路図上の接続線を、基板上にどのように配線するかを決定する基板レイアウトの作成作業である。
こうして実装設計が行われ、基板上のレイアウトが確定すれば、実装設計結果をCAMデータに変換して、NC工作機械等の設備に出力する。NC工作機械は、このCAMデータを基に、SoC実装やSiP実装を行う。SoC(System
on chip)実装とは、1チップ上に複数の回路を焼き付ける技術である。SiP(System in Package)実装とは、複数チップを樹脂等で1パッケージにする技術である。以上の過程を経て、本発明に係るシステムLSIは、各実施形態に示した再生装置200の内部構成図を基に作ることができる。
尚、上述のようにして生成される集積回路は、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。
FPGAを用いてシステムLSIを実現した場合は、多数のロジックエレメントが格子状に配置されており、LUT(Look Up Table)に記載されている入出力の組合せに基づき、縦・横の配線をつなぐことにより、各実施形態に示したハードウェア構成を実現することができる。LUTは、SRAMに記憶されており、かかるSRAMの内容は、電源断により消滅するので、かかるFPGAの利用時には、コンフィグ情報の定義により、各実施形態に示したハードウェア構成を実現するLUTを、SRAMに書き込ませる必要がある。
本実施の形態は、ミドルウェアとシステムLSIに対応するハードウェア、システムLSI以外のハードウェア、ミドルウェアに対するインターフェイスの部分、ミドルウェアとシステムLSIのインターフェイスの部分、ミドルウェアとシステムLSI以外の必要なハードウェアへのインターフェイスの部分、ユーザインターフェースの部分で実現し、これらを組み込んで再生装置を構成したとき、それぞれが連携して動作することにより特有の機能が提供されることになる。
ミドルウェアに対するインターフェイス、および、ミドルウェアとシステムLSIのインターフェイスを適切に定義することにより、再生装置のユーザインターフェース部分、ミドルウェア部分、システムLSI部分をそれぞれ独立して並行開発することができ、より効率よく開発することが可能となる。なお、それぞれのインターフェイスのきり方には、様々な切り方がある。
(備考)
以上、本願の出願時点において、出願人が知り得る最良の実施形態について説明したが、以下に示す技術的トピックについては、更なる改良や変更実施を加えることができる。各実施形態に示した通り実施するか、これらの改良・変更を施すか否かは、何れも任意的であり、実施する者の主観によることは留意されたい。
(次元識別フラグの埋め込み方)
BD-ROM上には再生対象のストリームが2D用か3D用かを識別する次元識別フラグが存在しており、第1実施形態ではプレイリスト(PL)情報に次元識別フラグを埋め込んが、これに限らず、ストリーム本体とそのストリーム2D用か3D用かを特定できる情報として記録される情報であれば、BD-ROM上に他の形で記録されていてもよい。
(ビデオプレーン6の物理的形態)
図4に示したビデオプレーン6に含まれる、左目用プレーン、右目用プレーンは物理的に分離したメモリを例示しているが、これに限定される必要はなく、例えば、1つのメモリ内に左目用プレーンの領域、右目用プレーンの領域を設け、この領域に対応するビデオデータを書き込むような構成であってもよい。
(イメージプレーン8の物理的形態)
図4に示したイメージプレーン8に含まれる、左目用プレーン、右目用プレーンは物理的に分離したメモリを例示しているが、これに限定される必要はなく、例えば、1つのメモリ内に左目用プレーンの領域、右目用プレーンの領域を設け、この領域に対応するグラフィクスデータを書き込むような構成であってもよい。
(インタラクティブグラフィクスプレーン10の物理的形態)
図4では、インタラクティブグラフィクスプレーン10は左目用の領域(符号(L)を付したもの)と、右目用の領域(符号(R)を付したもの)とが、1つのプレーンメモリ内に予め設けられている例を示しているが、これに限定される必要はなく、例えばインタラクティブグラフィクスプレーン10の左目用の領域(符号(L)を付したもの)、右目用の領域(符号(R)を付したもの)を物理的に分離したものを用いてもよい。
(オフセット調整の仕方)
図7〜8を用いた説明は、ステレオモードがオフの状態において、バックグラウンドとビデオのオフセットを調整しない(つまりオフセットが0、より具体的には表示画面の位置に表示されている)例を題材にしている。これは上述の説明を簡単にするためである。従って上述の説明に限定される必要はなく、例えばグラフィクスイメージ(字幕)よりも奥にビデオが位置するように、かつ背景データがビデオよりも奥に位置するようにオフセットを調整して表示してもよい。
(バックグラウンドプレーン11、イメージプレーン8、インタラクティブグラフィクスプレーンがサポートすべき解像度)
再生装置が3D表示モードである場合は、バックグラウンドプレーン11、イメージプレーン8、インタラクティブグラフィクスプレーンは2D表示モードの解像度に加えて、1920x2160や1280x1440ピクセルの解像度をサポートしてもよい。その場合は1920x2160や1280x1440ピクセルのアスペクト比は、16/18のアスペクト比になり、上半分を左目用の領域、下半分を右目用領域に利用することになる。
(プレーンオフセットを設定する対象)
プレーンオフセットは、例えば、イメージプレーン用とインタラクティブグラフィクスプレーン用の2つのシフト量をもち、プレーンシフトを行う対象に応じてその2つのシフト量を使い分けてもよい。再生装置がセットアップ機能を兼ね備えていない場合、“0“がデフォルトで指定されるようにする。この場合は表示画面の位置に字幕、GUIなどのグラフィクスが表示され、表示画面から飛び出るような効果はない。
(合成部による合成からの除外)
2D静止画データ、2Dビデオデータ、2Dグラフィクスデータ(字幕データ)、2Dインタラクティブグラフィクスの順で合成する際、ビデオデータが全画面表示であれば、2D静止画データは、合成処理から除外してもよい。
(表示モード記憶部29におけるフラグ保持のバリエーション)
表示モード記憶部29の2D表示モードか3D表示モードを示すフラグは再生状態レジスタ12で保存してもよいし、表示モード記憶部29と再生状態レジスタ12の両方で保存してもよい。
(演算のテーブル化)
プレーンオフセットから画素座標への変換アルゴリズムは様々考えられるが、表示対象のディスプレイのサイズや解像度、あるいは表示対象のビデオのサイズに依存したアルゴリズムを使うのが望ましい。
また、機器リソースに乏しい再生装置は変換アルゴリズムによる演算ではなく、スケーリング対応テーブルを持たせて、そのテーブルに応じてプレーンオフセットから画素座標へ変換してもよい。具体的には、スケーリングFactorの倍率を数パターンに限定し、各スケーリングFactorに対応する画素座標がかかれたテーブルを予め持っておく。スケーリングFactorが指定された際に対応する画素座標をシフト部28-Dに返すようにすればよい。
プレーンオフセットの具体的な値としては、50画素、30画素、25画素という3段階の値にしてもよい。そしてスケーリングFactorについては、2倍、1/2倍、1/4倍という3段階の値にしてもよい。プレーンオフセットやスケーリングFactorをこれらの値に制限することで、演算アルゴリズムは単純なものとなり、上記演算のテーブル化によって、プレーンオフセット演算部43の実装を簡略化することができる。
(二重化)
図の構成図にはビデオデコーダ、ビデオプレーン、イメージプレーン加算器を各一つずつ有しているが、各部分を2つずつもたせ、左目用の映像と右目用の映像を平行に処理をするようにしてもよい。
(再利用)
デコードとスケーリングを施したイメージプレーンを保存している場合は、それを再利用してもよい。ただし、再利用した場合は、シフトしたイメージプレーンを元に戻す必要がある。
(2Dのピクセル)
さらに、2Dビデオストリームとその2Dビデオストリームのフレーム毎の各画面ピクセルの奥行きを入力とする方式の場合は、フレーム毎の各画面ピクセルの奥行きから、一番手前にあるピクセルの奥行きを抽出し、プレーンオフセットとして利用してもよい。
(同期)
左目と右目を同期するために、フラグを別途もうけ、左目用のスケーリング処理を施した場合のみ、右目用のスケーリング処理を行うようにしてもよい。
(ファクターのバリエーション)
スケーリングFactorとしてスケーリング完了後の画素座標を具体的に指定してもよい。例えば、横の長さは1000、縦の長さは250のように直接指定してもよい。
スケーリングFactorが具体的なPixel数であった場合はスケーリング前と後の横軸の比率を計算し、それをイメージオフセットに掛けることにより新しいイメージオフセットを得ることが望ましい。
(表示の時期)
本実施の形態の構成ではスケーリング命令受信後に少しずつ奥行きを変更させることも可能だが、字幕の表示を無効にしておき、一定のフレームが経過した後に一度に後情報保存部の値から算出したシフト画素座標で表示するようにしてもよい。その方法は、フレームに応じたずらし幅を計算するのではなく、更新済みフレーム数保存部の値がフレーム更新スパン保存部の値に到達した時点で、後情報保存部で計算できるピクセルシフト幅をシフトさせ表示させる。そうすることによって、ユーザがスケーリング後のビデオストリームの奥行き変更に目が慣れた状態で字幕が表示されるため、立体感の差がさらに吸収され、ユーザの目の疲れを軽減させる効果をもたらす。
(ストリームの記録態様)
BD-ROM上に配置されたストリームは右目用ストリーム、左目用ストリームが別々に記録されてもよいし、一つのストリームファイルに埋め込んでおいてもよい。
(立体視方式)
第1実施形態で説明の前提とした視差画像方式は、左右の映像を時間軸方向で交互に表示させるために、例えば、通常の2次元の映画であれば1秒に24枚の映像を表示させるのに対して、左右の映像合わせて1秒に48枚の映像を表示させる必要がある。従って、この方式では、一画面の書き換えが比較的早い表示装置において好適である。この視差画像を用いた立体視は、既に遊園地の遊具などで一般的に使用されており、技術的にも確立されているため、家庭における実用化に最も近いものと言える。視差画像を用いた立体視のための方法はこれらの他にも、2色分離方式などさまざまな技術が提案されている。本実施形態においては、継時分離方式あるいは偏光メガネ方式を例として用いて説明したが、視差画像を用いる限りこれら2方式に限定するものではない。
表示装置300についても、レンチキュラーレンズだけでなく、同様の機能を持たせたデバイス、例えば液晶素子を用いてもよい。また左目用の画素には縦偏光のフィルター、右目用の画素には横偏光のフィルターを設置し、視聴者は、左目用には縦偏光、右目用には横偏光のフィルターを設置した偏光メガネを用いて表示装置の画面を見ることによって立体視を実現させてもよい。
(イメージデータ)
各実施形態で示したイメージデータは、Presentation Graphicsストリームであることが望ましい。
Presentation Graphicsストリーム(PGストリーム)は、映画の字幕等、ピクチャと緻密に同期すべきグラフィクスを示すグラフィクスストリームであり、英語、日本語、フランス語というように複数言語についてのストリームが存在する。
PGストリームは、PCS(Presentation Control Segment)、PDS(Pallet Define Segment)、WDS(Window Define Segment)、ODS(Object Define Segment)という一連の機能セグメントからなる。ODS(Object DefineSegment)は、画素コードと、そのランレングスとを用いてランレングス圧縮されたグラフィクスオブジェクトを定義する機能セグメントである。PDS(Palette Difinition Segment)は、画素コードのそれぞれと、輝度(Y)、赤色差(Cr)、青色差(Cb)、透明度(α値)との対応関係を規定する機能セグメントである。PCS(Presentation Control Segment)は、グラフィクストリームにおける表示単位(ディスプレイセット)の詳細を規定すると共に、グラフィクスオブジェクトを用いた画面構成を規定する機能セグメントである。かかる画面構成には、Cut-In/Out、Fade-In/Out、Color Change、Scroll、Wipe-In/Outといったものがあり、PCSによる画面構成を伴うことにより、ある字幕を徐々に消去しつつ、次の字幕を表示させるという表示効果が実現可能になる。
グラフィクストリームの再生において、グラフィクスデコーダは、ある表示単位(ディスプレイセット)に属するODSをデコードしてグラフィクスオブジェクトをオブジェクトバッファに書き込む処理と、先行する表示単位(ディスプレイセット)に属するODSをデコードすることにより得られたグラフィクスオブジェクトをオブジェクトバッファからプレーンメモリに書き込む処理とを同時に実行するというパイプラインによって、上述したような緻密な同期を実現する。パイプラインによるデコード動作の実現により、動画像との緻密な同期を実現するので、PresentationGraphicsストリームの用途は字幕のような文字再生に限定されない。映画作品のマスコットキャラクタを表示して、これを動画像と同期させつつ動作させるなど、緻密な同期が必要なグラフィクス再生であれば、どのようなものも、PresentationGraphicsストリームによる再生対象として、採用することができる。
トランスポートストリームファイルに多重化されないが、字幕を現すストリームには、PGストリームの他に、テキスト字幕(textST)ストリームというものがある。textSTストリームは、字幕の内容をキャラクタコードで現したストリームである。このPGストリームと、textSTストリームとの組みは、BD-ROM規格において、“PGTextSTストリーム”と呼ばれる。テキスト字幕(textST)ストリームはAVストリームに多重化されないので、その再生にあたっては、テキスト字幕ストリーム本体と、テキストの展開に用いられるフォントとを再生に先立ち、メモリにプリロードしておく必要がある。またテキスト字幕ストリームのうち、どの言語を正常に表示できるかどうかは、BD-ROM再生装置において、言語コード毎に設定されたケーパビリティフラグに設定される。一方、PresentationGraphicsストリームによる字幕再生には、ケーパビリティフラグの参照は不要となる。PresentationGraphicsストリームにおける字幕は、ランレングス圧縮された字幕を展開すれば足りるからである。
Presentation Graphicsストリームによる再生対象は、装置側の言語設定に応じて選ばれた字幕グラフィクスであってもよい。これにより、現状のDVDにおいて動画像本体で表現していたような文字を用いた表示効果を、装置側の言語設定に応じて表示された字幕グラフィクスで実現することができるので、実用上の価値は大きい。
Preentation Graphicsストリームによる再生対象は、装置側のディスプレイ設定に応じて選ばれた字幕グラフィクスであってもよい。つまり、ワイドビジョン、パンスキャン、レターボックス用といった様々な表示モード用のグラフィクスがBD-ROMに記録されており、装置側は自身に接続されたテレビの設定に応じてこれらの何れかを選んで表示する。この場合、そうして表示された字幕グラフィクスに対し、PresentationGraphicsストリームに基づく表示効果をほどこすので、見栄えがよくなる。これにより、動画像本体で表現していたような文字を用いた表示効果を、装置側のディスプレィ設定に応じて表示された字幕で実現することができるので、実用上の価値は大きい。またPresentationGraphicsストリームはカラオケを実現するものであってもよい、そしてこの場合、Presentation Graphicsストリームは歌の進行に応じて、字幕の色を変えるという表示効果を実現してもよい。
(プログラムの実施形態)
各実施形態に示したアプリケーションプログラムは、以下のようにして作ることができる。先ず初めに、ソフトウェア開発者は、プログラミング言語を用いて、各フローチャートや、機能的な構成要素を実現するようなソースプログラムを記述する。この記述にあたって、ソフトウェア開発者は、プログラミング言語の構文に従い、クラス構造体や変数、配列変数、外部関数のコールを用いて、各フローチャートや、機能的な構成要素を具現するソースプログラムを記述する。
記述されたソースプログラムは、ファイルとしてコンパイラに与えられる。コンパイラは、これらのソースプログラムを翻訳してオブジェクトプログラムを生成する。
コンパイラによる翻訳は、構文解析、最適化、資源割付、コード生成といった過程からなる。構文解析では、ソースプログラムの字句解析、構文解析および意味解析を行い、ソースプログラムを中間プログラムに変換する。最適化では、中間プログラムに対して、基本ブロック化、制御フロー解析、データフロー解析という作業を行う。資源割付では、ターゲットとなるプロセッサの命令セットへの適合を図るため、中間プログラム中の変数をターゲットとなるプロセッサのプロセッサが有しているレジスタまたはメモリに割り付ける。コード生成では、中間プログラム内の各中間命令を、プログラムコードに変換し、オブジェクトプログラムを得る。
ここで生成されたオブジェクトプログラムは、各実施形態に示したフローチャートの各ステップや、機能的構成要素の個々の手順を、コンピュータに実行させるような1つ以上のプログラムコードから構成される。ここでプログラムコードは、プロセッサのネィティブコード、JAVAバイトコードというように、様々な種類がある。プログラムコードによる各ステップの実現には、様々な態様がある。外部関数を利用して、各ステップを実現することができる場合、この外部関数をコールするコール文が、プログラムコードになる。また、1つのステップを実現するようなプログラムコードが、別々のオブジェクトプログラムに帰属することもある。命令種が制限されているRISCプロセッサでは、算術演算命令や論理演算命令、分岐命令等を組合せることで、フローチャートの各ステップを実現してもよい。
オブジェクトプログラムが生成されるとプログラマはこれらに対してリンカを起動する。リンカはこれらのオブジェクトプログラムや、関連するライブラリプログラムをメモリ空間に割り当て、これらを1つに結合して、ロードモジュールを生成する。こうして生成されるロードモジュールは、コンピュータによる読み取りを前提にしたものであり、各フローチャートに示した処理手順や機能的な構成要素の処理手順を、コンピュータに実行させるものである。かかるプログラムをコンピュータ読取可能な記録媒体に記録してユーザに提供してよい。
(記録媒体のバリエーション)
各実施の形態における記録媒体は、光ディスク、半導体メモリーカード等、パッケージメディア全般を含んでいる。本実施の形態の記録媒体は予め必要なデータが記録された光ディスク(例えばBD-ROM、DVD-ROMなどの既存の読み取り可能な光ディスク)を例に説明をするが、これに限定される必要はなく、例えば、放送またはネットワークを経由して配信された本発明の実施に必要なデータを含んだ3Dコンテンツを光ディスクへ書き込む機能を有する端末装置(例えば左記の機能は再生装置に組み込まれていてもよいし、再生装置とは別の装置であってもよい)を利用して書き込み可能な光ディスク(例えばBD-RE、DVD-RAMなどの既存の書き込み可能な光ディスク)に記録し、この記録した光ディスクを本発明の再生装置に適用しても本発明の実施は可能である。
(ビデオデコーダの構成)
各実施形態において、ビデオデコーダは、左目用のビデオデコーダ5a、右目用のビデオデコーダ5bのそれぞれのものが存在すると説明したが、これらを一体にしてもよい。
(半導体メモリカード記録装置及び再生装置の実施形態)
各実施の形態で説明をしたデータ構造を半導体メモリーに記録する記録装置、及び、再生する再生装置の実施形態について説明する。
まず、前提となる技術として、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を介して読み出すように構成すればよい。
本発明は、立体視ビデオストリームを再生する再生機器において、立体視ビデオストリーム上に字幕やグラフィクスを重ね合わせて表示するデバイスにおいて、立体視ビデオストリームに字幕を重ね合わせた状態でスケーリングを行う立体視ビデオ再生装置に適用可能である。
100 BD-ROM
200 再生装置
300 リモコン
400 テレビ
500 液晶眼鏡
1a BDドライブ
1b ローカルストレージ
1c ネットワークインターフェース
2a,2b リードバッファ
3 仮想ファイルシステム
4 デマルチプレクサ
5a,b ビデオデコーダ
6 ビデオプレーン
7a,b イメージデコーダ
7c,d、イメージメモリ
8 イメージプレーン
9 オーディオデコーダ
10 インタラクティブグラフィクスプレーン
11 バックグラウンドプレーン
12 レジスタセット
13 静的シナリオメモリ
14 再生制御エンジン
15 スケーラエンジン
16 合成部
17 HDMI送受信部
18 表示機能フラグ保持部
19 左右処理記憶部
20 プレーンシフトエンジン
21 オフセット設定部
22 BD-Jプラットフォーム
22a レンダリングエンジン
23 動的シナリオメモリ
24 モード管理モジュール
25 HDMVモジュール
26 UO検知モジュール
27a 静止画メモリ
27b 静止画デコーダ
28 表示モード設定イニシャル表示設定部
29 表示モード記憶部
本発明は、立体視再生の技術分野に属する発明である。
立体視再生技術とは、左目と右目とで異なる絵を見せる仕組みを導入し、その両目間の視差を利用することにより、立体的な映像を擬似的に作る技術をいう。
現状、立体視再生技術の応用は、劇場等での応用が主流であるが、家庭設置用のディスプレイや再生装置で立体視再生を楽しむ利用形態も、今後の急速な普及が期待される。
立体視画像をユーザに視聴させるためのディスプレイ(立体視ディスプレイ)には、さまざまな方式がある。たとえば、よく使われる方式の一つにシャッターメガネを利用した方式がある。この方式では、視聴者の左目と右目の視野を、メガネによって交互に高速にふさぎ、このメガネの動作と同期してディスプレイの表示画像も左目用・右目用と高速で更新する。こうすることで、結果的にディスプレイで表示される左目用の画像はシャッターメガネにより左目だけが見え、逆に右目用の画像は右目だけが見える。
通常のフラットな映像と同等のフレームレートで立体化された映像を視聴者に見せようとすると、再生装置側では、右目、左目のそれぞれで見ることができる2つの動画像を再生せねばならず、ディスプレイ側では、通常の2倍の応答性能が必要である。たとえば一秒60コマのビデオを表示するためには最低、1秒120コマの切り替えをしなければならない。家庭設置用再生装置の先行技術には、以下の特許文献1に記載されたものがあり、立体視再生の先行技術には、以下の特許文献2に記載されたものがある。
国際公開公報第2005/119675号公報
米国公開公報第2008/0192067号公報
立体視可能な映画作品を光ディスクなどの記録媒体に記録して頒布することを考えた場合、動画像に字幕・GUI等のグラフィクスが合成されているような合成映像の立体視をどのようにして実現するかという議論がある。
1つ目の方法は、左目用、右目用のビデオストリームを用意しておいて、対応する左目用字幕と右目用字幕を別々に用意させておき、各自重ね合わせて表示させる方法である。
2つ目の方法は、特許文献2のように、一つのビデオストリームと、それに対応するDepth情報からビデオに立体効果をもたらし、その上に字幕オブジェクトを重ね合わせる方法である。この特許文献2では、字幕がビデオと重なる部分の奥行きをZeroパララックス、つまり奥行きを無くして表示することで、字幕とビデオとの奥行き感の違いをユーザに感じさせないようにしている。
3つ目の方法は、予め用意した左目用と右目用ビデオストリームに対し、一つの字幕オブジェクトを用意させておき、Depth情報からプレーンシフトにより立体効果をつけたものを重畳させる方法である。
1つ目の方法では、ビデオストリームのみならず、字幕・GUI用のグラフィクスストリームも左右双方のものを作成せねばならないので、オーサリングの負担が多大になる。これに対して2つ目の方法では、字幕表示のための左右のグラフィクスストリームを作る必要はなくなり、オーサリングの負担を軽減させることができるが、字幕がストリームと重なる部分については、奥行き感を失うので、見た目が余りよいとはいえない。
3つ目のプレーンシフトによる方法では、字幕・GUI用のグラフィクスストリームについて、左右双方のものを作成する必要はなく、また、字幕・GUIが動画像と重なる部分について奥行き感を失うこともないので、最も理想的なものとなる。ところが、プレーンシフトは、表示中の画面を拡大したり縮小したりするスケーリング機能を実行した際、その弊害が生じる。
レフトビューから見えるべき動画像、及び、ライトビューから見えるべき動画像を再生することで、ビデオストリームの立体視を実現していた場合、スケーリングが施されたとしてもレフトビューから見えるべき動画像、及び、ライトビューから見えるべき動画像が拡大したり、縮小するに過ぎないので、立体視再生に支障が出ることはない。
ところがグラフィクスは左目用と右目用で共有されているので、スケーリングにより文字は縮小されるものの、文字の位置がスケーリング前と同様なままとなり、字幕文字の奥行きは保たれることになる。そうなると、ビデオの奥行きは軽減したが、字幕はそのままという状態が生じ、スケーリング時にビデオと字幕・GUIの立体感の差が激しくなる。
スケーリングの前後で、レフトビューの字幕と、ライトビューの字幕との間隔が維持されたまま、ビデオの奥行きだけが変わってしまうと、動画像の飛び出し具合が、字幕の飛び出し具合と同一になり、スケーリング前に比べて、スケーリング後はビデオプレーンに対して字幕が大幅にシフトされる。そうすると動画像と、字幕との立体感の差が激しくなり目がついていけなくなる恐れがある。視聴者にとっては目の疲れが極端に増すため、消費者保護の観点からして望ましくないとの問題がある。
もっとも、プレーンシフトを採用した再生装置において、字幕が合成された状態でのスケーリングを禁じれば、上述したような問題が生じることはない。しかし現行の再生装置は、例えばフル画面による動画像の再生中に、メニューコールの操作がなされた際、フル画面のメニューを表示して、その上に縮小スケーリングしたビデオを表示させるという処理を実行する。かかる処理により、ビデオの視聴を妨げることなくメニューの視野を広げることが可能となるからである。ビデオのスケーリングを伴ったGUI処理は、メニューの視野を広げ、ユーザの利便性を保つものなので、たとえ立体視の実現のためとはいえ、スケーリングのスケーリングを伴ったGUI処理を省略することは、現行の光ディスク再生装置の利便性から退歩することを意味し、決して、産業界にとって有益な考え方とはいえない。
本発明の目的は、ビデオのスケーリングを伴ったGUI処理を実現しつつも、臨場感の低減を図り、消費者保護を遵守することができる再生装置を提供することである。
上記課題を解決するため本発明の一実施態様である再生装置は、立体視再生を実現する再生装置であって、
ビデオストリームをデコードしてビデオフレームを得るビデオデコーダと、所定の縦画素数×横画素数からなる複数の画素データから構成されるグラフィクスデータを格納するプレーンメモリと、
立体視を実現するにあたって、右方向及び左方向のそれぞれに、画素の座標をどれだけ移動させるべきかの基準を示すオフセットを保持するオフセット保持部と、
プレーンメモリにおけるグラフィクスデータを構成する画素データのそれぞれの座標を、水平方向に、オフセットに応じた画素数だけ移動させるシフトエンジンと、
ビデオフレームに、画素データの座標が移動されたグラフィクスデータを合成する合成部とを備え、前記ビデオフレームのスケールが変更された場合、前記シフトエンジンによる画素データにおける座標の移動量は、前記オフセットにスケーリング倍率を乗じた値に基づくことを特徴としている。
上述の構成により本発明に係る立体視ビデオ再生装置では、字幕付きビデオのスケーリング時に字幕のシフト量が調整されていることにより、スケーリングを伴ったGUI処理を行うにあたって、ビデオと字幕の画面構成が保たれ、立体感の差が激しくなることを防ぐことができる。これにより目の疲れを軽減するとともに、より自然な表示が行えるようになるので、消費者保護の万全化を図ることができる。
任意的ではあるが、上記課題解決手段に、以下のような変更を施すことにより、更なる効果を奏することができる。
プレーンオフセットから座標値への変換を、テーブルを用いて行うという演算のテーブル化を実現してもよい。こうすることで、機器リソースが少ない端末においてもスケーリング時の字幕の奥行きを変更することが可能となる。
さらには、字幕付きビデオのスケーリング時に、ビデオプレーンのシフト量を調整してもよい。ビデオプレーンのシフトによって、立体感の差が激しくなることを防ぎ、目の疲れを軽減するとともに、より自然な表示が行うことが可能である。
さらには、字幕付きビデオのスケーリング時に字幕のシフト量をフレーム単位で少しずつ調整してもよい。これにより、立体感の差が激しくなることを防ぎ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
さらには、字幕付きビデオのスケーリング時に字幕の表示を一定時間無効にし、一定時間が過ぎた時点で表示させてもよい。これにより、ユーザの目が立体感の差になれた状態で字幕が表示されることになり、立体感の差が激しくなることを防ぎ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
記録媒体、再生装置の、使用行為についての形態の一例を示す図である。
BD-ROM100の内部構成の一例を示す図である。
BD-Jオブジェクトの内部構成の一例を示す図である。
再生装置の内部構成の一例を示す図である。
2D表示モード、3D表示モードの切り替えの一例を示す図である。
3D表示モードにおいて、各プレーンのステレオモードが全てオンである場合と、ステレオモードが全てオフである場合の合成処理の一例を示す図である。
全プレーンがステレオモードONである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10を重ねあわせる一例を示す図である。
全プレーンがステレオモードOFFである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10を重ねあわせる一例を示す図である。
プレーン毎の合成結果の一例を示す図である。
全プレーンがステレオモードON時における映像出力を3D用ディスプレイで見た場合の一例を示す図である。
ビデオプレーンはステレオモードONだが、それ以外のプレーンは全てステレオモードOFFにした場合の映像出力を、液晶眼鏡500で見た場合に現れる立体視映像の一例を示す図である。
右方向にシフトされたShifted Leftグラフィクスプレーン、左方向にシフトされたShifted Leftグラフィクスプレーンの一例を示す図である。
プレーンオフセットの符号が正(レフトビュー用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合、像が表示画面よりも手前にあるように見える原理を説明するための図である。
プレーンオフセットの符号が負(レフトビュー用のグラフィクスイメージを左方向へずらし、ライトビュー用のグラフィクスイメージを右方向へずらす)である場合、像が表示画面よりも奥にあるように見える原理を説明するための図である。
正と負のプレーンオフセットの見え方の違いの一例を正示す図である。
(a)は、ステップS704bの具体的処理の一例を説明するための図、(b)はステップS706bの具体的処理の一例を説明するための図である。
動画像に対してスケーリングがなされた場合に、ユーザによって視聴される立体視画像の一例を示す図である。
動画像に対してスケーリングがなされた場合、プレーンシフトにおけるプレーンオフセットをどのように定めればよいかを示す。
スケーリング前の動画像との合成に用いられたプレーンオフセットを、イメージプレーンのプレーンシフトに適用した場合に表示される立体視画像の一例を示す図である。
スケーリング前の動画像との合成に用いられたプレーンオフセットを、イメージプレーンのプレーンシフトに適用した場合に表示される立体視画像の一例を示す図である。
本実施形態1に係る再生装置200のプレーンシフトエンジン20の内部構成の一例を示す図である。
1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、字幕・GUIを含むグラフィクスの合成画像との一例を示す図である。
(a)は、ステップS806bの具体的処理の一例を説明するための図、(b)はステップS808bの具体的処理の一例を説明するための図である。
1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、字幕グラフィクスの合成画像との一例を示す図である。
(a)は、ステップS706aの具体的処理の一例を説明するための図、(b)はステップS808aの具体的処理の一例を説明するための図である。
イメージプレーン8の内部構成の一例を示す図である。
右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データの一例を示す図である。
インタラクティブグラフィクスプレーン10の内部構成の一例を示す図である。
右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データの一例を示す図である。
イメージプレーン8におけるプレーンシフトの処理手順の一例を示す図である。
インタラクティブグラフィクスプレーン10におけるプレーンシフトの処理手順の一例を示す図である。
グラフィクスプレーンに格納されている画素データの一例を示す図である。
シフトがなされた後のグラフィクスプレーンの格納内容の一例を示す図である。
BD-Jプラットフォーム部の内部構成の一例を示す図である。
表示モード記憶部29における記憶内容の一例を示す図である。
タイトル切り替え時の表示モード設定の処理手順の一例を示すフローチャートである。
タイトル内表示モード設定の処理手順の一例を示すフローチャートである。
BD-Jモードにおけるプレイリスト再生の主たる手順の一例を示すフローチャートである。
プレイアイテム情報に基づく再生手順の一例を示すフローチャートである。
3DAVストリームの3D表示の処理手順の一例を示すフローチャートである。
3D表示モード時の左目用処理の手順の一例を示すフローチャートである。
右目用処理の処理手順の一例を示すフローチャートである。
(a)は、ステップS702、ステップS804aの具体的処理の一例を説明するための図、(b)は、ステップS804bの具体的処理の一例を説明するための図である。
(a)は、ステップS704aの具体的処理の一例を説明するための図、(b)はステップS806aの具体的処理の一例を説明するための図である。
実施の形態2におけるステップS804bの具体的処理の一例を説明するための図である。
第2実施形態における再生装置のプレーンシフトエンジン20の内部構成の一例を示すブロック図である。
(a)は、実施の形態2におけるステップS702の具体的処理の一例を説明するための図、(b)は、ステップS804aの具体的処理の一例を説明するための図である。
スケーリングがなされた動画像及びグラフィクスの座標を所定の画素数だけ移動させることを意図した状況の一例を示す図である。
第3実施形態における再生装置のプレーンシフトエンジン20の内部構成の一例を示すブロック図である。
3DAVストリームの3D表示の処理手順の一例を示すフローチャートである。
イメージプレーンのプレーンシフトの処理手順の一例を示すフローチャートである。
更新済みフレームiが“1”、“2”、“3”と更新されてゆく場合に、プレーンオフセットがどのように変化するかの一例を示す図である。
プレーンオフセットの設定に関わる部分の構成の一例を示す図である。
再生装置のハードウェア構成の一例を示す図である。
図面を参照しながら、上記課題解決手段を具備した記録媒体、及び、再生装置の実施形態について説明する。
図1は、記録媒体、再生装置の、使用行為についての形態の一例を示す図である。本図に示すように、記録媒体の一例であるBD-ROM100、再生装置200は、リモコン300、テレビ400、液晶眼鏡500と共にホームシアターシステムを構成し、ユーザによる使用に供される。
BD-ROM100は、上記ホームシアターシステムに、例えば映画作品を供給する。
再生装置200は、テレビ400と接続され、BD-ROM100を再生する。こうして再生される再生映像には、2D映像、3D映像が存在する。2D映像とは、例えば表示装置の表示画面を含む平面をX-Y平面として捉えて、このX-Y平面上に位置する表示画面の表示位置における画素にて表現される画像であり、平面視画像とも呼ばれる。
対照的に3D映像とは、上述のX-Y平面として捉えた平面と直交する直線を軸とし(本実施の形態ではX-Y平面に垂直な直線を軸(Z軸)として定義する)、表示装置の表示画面におけるX-Y平面上の画素に、本実施の形態で説明する構成を採用することにより、人の目には立体的に見えるようにした、または表示画面よりも手前または奥に見えるようにした映像である。
3D映像は、例えば左目で視聴すべきレフトビュー映像と、右目で視聴すべきライトビュー映像とに対応するデータ(ストリームデータ)を後述する図4に記載の仮想ファイルシステムを介して読み出せる記録媒体(例えば、BD-ROM100または後述する図4に示すローカルストレージ1c、ここでは説明を簡単にするためBD-ROM100を例にして説明をする)に記録しておき、左目で視聴すべきレフトビュー映像と、右目で視聴すべきライトビュー映像とが両目の視差の程度において見え方が異なる映像である場合、レフトビュー映像を左目のみに見せるようにし、ライトビュー映像を右目のみに見せるようにするという動作を繰り返すと、人の目には奥行きのある立体的な映像としてユーザに見せることができる。しかしながら、レフトビュー映像と、ライトビュー映像のうちの一方しか再生に利用しない場合には、人の目には平面的な映像としてしか見えない。例えばレフトビューの映像を左目にも右目にも見せるようにすると、レフトビューの映像は、人の目には平面的な映像としてしか見えない。
リモコン300は、階層化されたGUIに対する操作をユーザから受け付ける機器であり、かかる操作受け付けのため、リモコン100は、GUIを構成するメニューを呼び出すメニューキー、メニューを構成するGUI部品のフォーカスを移動させる矢印キー、メニューを構成するGUI部品に対して確定操作を行う決定キー、階層化されたメニューをより上位のものにもどってゆくための戻りキー、数値キーを備える。
テレビ400は、映画作品の再生映像を表示したり、メニュー等を表示することで、対話的な操作環境をユーザに提供する。本図におけるテレビ400の表示画面は、ビデオをスケーリングしてGUIをフル画面化した表示例を示している。このテレビ400の画面のうち、右半分は、映画作品の監督によって記述されたディレクターズコメントcm1を表示している
テレビ400の画面のうち、下半分は、ネクストスキップ、プレビアススキップを受け付けるボタン部材bn1、メニューコールを受け付けるボタン部材bn2、戻る操作を受け付けるボタン部材bn3、ネットワーク接続を受け付けるボタン部材bn4を含み、カレントタイトルの番号及びカレントチャプターの番号を表示するためのインディケータir1を含む。これらのボタン部材については、リモコン300による操作が可能となる。
液晶眼鏡500は、液晶シャッタと、制御部とから構成され、ユーザの両目における視差を用いて立体視を実現する。液晶眼鏡500の液晶シャッタは、印加電圧を変えることにより、光の透過率が変化する性質を有する液晶レンズを用いたシャッタである。液晶眼鏡500の制御部は、再生装置から送られるライトビュー用の画像とレフトビュー用の画像の出力の切り替えの同期信号を受け、この同期信号に従って、第1の状態、第2の状態の切り替えを行う。
第1の状態とは、ライトビューに対応する液晶レンズが光を透過しないように印加電圧を調節し、レフトビューに対応する液晶レンズが光を透過するように印加電圧を調節した状態であり、この状態において、左目にレフトビュー用の画像が視聴に供され、右目にはレフトビュー用の画像が視聴に供されない状態となる。
第2の状態とは、ライトビューに対応する液晶レンズが光を透過するように印加電圧を調節し、レフトビューに対応する液晶レンズが光を透過しないように印加電圧を調節した状態であり、この状態において、右目にライトビュー用の画像を視聴に供され、左目にはライトビュー用の画像が視聴に供されない状態となる。
一般にライトビュー用の画像と、レフトビュー用の画像は、その撮影位置の差に起因して、ライトビューから見える像とレフトビューから見える像には見え方に若干の差があるような画像である。
この像の見え方の差の程度を人間の左目/右目のそれぞれから見える像の差の程度(つまり、視差の程度)とすることにより、利用して人間の目から見える像を立体として認識できるのである。そこで、液晶眼鏡500が、以上のような第1の状態、第2の状態の切り替えを、ライトビュー用の画像とレフトビュー用の画像の出力の切り替えタイミングに同期させれば、ユーザは、平面的な表示が立体的に見えると錯覚する。次に、ライトビュー映像、レフトビュー映像を表示するにあたっての時間間隔について説明する。
具体的には、平面表示の画像において、ライトビュー用の画像とレフトビュー用の画像には人間の視差に相当する見え方の差に相当する程度の差があり、これらの画像を短い時間間隔で切り替えて表示することにより、あたかも立体的な表示がなされているように見えるのである。
この短い時間間隔というのは、上述の切り替え表示により人間が立体的に見えると錯覚する程度の時間であれば足りる。
以上がホームシアターシステムについての説明である。
続いて再生装置200が再生の対象としている、記録媒体について説明する。再生装置200により、再生されるのは、BD-ROM100である。図2は、BD-ROM100の内部構成の一例を示す図である。
本図の第4段目に記録媒体の一例であるBD-ROM100を示し、第3段目にBD-ROM100上のトラックを示す。本図のトラックは、BD-ROM100の内周から外周にかけて螺旋状に形成されているトラックを、横方向に引き伸ばして描画している。このトラックは、リードイン領域と、ボリューム領域と、リードアウト領域とからなる。また、リードインの内側にはBCA(Burst Cutting Area)と呼ばれるドライブでしか読み出せない特別な領域がある。この領域はアプリケーションから読み出せないため、例えば著作権保護技術などに利用されることがよくある。
本図のボリューム領域は、ファイルシステム層、応用層というレイヤモデルをもち、ファイルシステム層には、ファイルシステム情報を先頭に映像データなどのアプリケーションデータが記録されている。ファイルシステムとは、UDFやISO9660などのことであり、通常のPCと同じように記録されている論理データをディレクトリ、ファイル構造を使って読み出しする事が可能になっており、255文字のファイル名、ディレクトリ名を読み出すことが可能である。ディレクトリ構造を用いてBD-ROMの応用層フォーマット(アプリケーションフォーマット)を表現すると、図中の第1段目のようになる。この第1段目においてBD-ROMには、Rootディレクトリの下に、CERTIFICATEディレクトリ、及びBDMVディレクトリがある。
CERTIFICATEディレクトリの配下には、ディスクのルート証明書のファイル(app.discroot.cert)が存在する。app.discroot.certはJava(登録商標)仮想マシンを用いて動的なシナリオ制御を行うJava(登録商標)アプリケーションのプログラムを実行する際に、アプリケーションが改竄されていないか、及びアプリケーションの身元確認を行なうプロセス(以下、署名検証という)に用いられるデジタル証明書である。
BDMVディレクトリはBD-ROM100で扱うAVコンテンツや管理情報などのデータが記録されているディレクトリであり、BDMVディレクトリの配下には、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJOディレクトリ、JARディレクトリ、METAディレクトリと呼ばれる6つのサブディレクトリが存在し、INDEX.BDMVとMovieObject.bdmvの2種類のファイルが配置されている。
STREAMディレクトリは、いわばトランスポートストリーム本体となるファイルを格納しているディレクトリであり、拡張子m2tsが付与されたファイル(00001.
m2ts)が存在する。
PLAYLISTディレクトリには、拡張子mplsが付与されたファイル(00001.mpls)が存在する。
CLIPINFディレクトリには、拡張子clpiが付与されたファイル(00001.clpi)が存在する。
BDJOディレクトリには、拡張子bdjoが付与されたファイル(XXXXX.bdjo)が存在する。
JARディレクトリには、拡張子jarが付与されたファイル(YYYYY.jar)が存在する。
METAディレクトリには、XMLファイル(ZZZZZ.xml)が存在する。
以下、これらのファイルについて説明する。
<m2tsファイル>
先ず初めに、拡張子m2ts;が付与されたファイルについて説明する。拡張子m2ts;が付与されたファイルは、MPEG-TS(TransportStream)形式のデジタルAVストリームであり、ビデオストリーム、1つ以上のオーディオストリーム、グラフィクスストリームを多重化することで得られる。ビデオストリームは映画の動画部分を、オーディオストリームは映画の音声部分をそれぞれ示している。2D用のストリームのみを含むトランスポートストリームを“2Dストリーム”、3D用のストリームを含むトランスポートストリームを“3Dストリーム”という。
3Dストリームの場合はm2tsの中に左目用と右目用の両方のデータを入れることができるし、左目用と右目用に別々にm2tsを用意することができる。ストリームに使われる容量を少なくするため、レフトビュービデオストリームとライトビュービデオストリームが相互参照をするようなコーデック(たとえば、MPEG-4
AVC MVC)を使うことが望ましい。そのようなコーデックで圧縮符号化されたビデオストリームを、MVCビデオストリームと呼ぶ。
<プレイリスト情報>
拡張子“mpls”が付与されたファイルは、PlayList(PL)情報を格納したファイルである。プレイリスト情報は、AVクリップを参照してプレイリストを定義する情報である。
BD-ROM100上には再生対象のストリームが2D用か3D用かを識別する次元識別フラグが存在しており、本実施の形態ではプレイリスト(PL)情報に次元識別フラグを埋め込んでいる。
本実施の形態では、BD-ROM100上のプレイリスト(PL)の構成フォーマットから再生対象のストリームに3D用のストリームが存在するかを特定できる。
プレイリスト情報は、MainPath情報、Subpath情報、PlayListMark情報を含む。
1)MainPath情報は、AVストリームの再生時間軸のうち、In_Timeとなる時点と、Out_Timeとなる時点の組みを1つ以上定義することにより、論理的な再生区間を定義する情報であり、AVストリームに多重化されているエレメンタリストリームのうち、どれの再生を許可し、どれの再生を許可しないかを規定するストリーム番号テーブル(STN_table)をもつ。
2)PlayListMark情報は、In_Time情報及びOut_Time情報の組みにて指定されたAVストリームの一部分のうち、チャプターとなる時点の指定を含む。
3)Subpath情報は、1つ以上のSubPlayItem情報から構成され、SubPlayItem情報は、前記AVストリームと同期して再生すべきエレメンタリストリームの指定と、そのエレメンタリストリームの再生時間軸におけるIn_Time情報及びOut_Time情報の組みとを含む。再生制御のためのJava(TM)アプリケーションが、このプレイリスト情報を再生するJMFプレーヤインスタンスの生成をJava(TM)仮想マシンに命じることで、AV再生を開始させることができる。JMF(Java Media Frame work)プレーヤインスタンスとは、JMFプレーヤクラスを基にして仮想マシンのヒープメモリ上に生成される実際のデータのことである。
さらに、用語定義として2Dプレイリストは2D再生用のストリームのみが含まれるものであり、3Dプレイリストには2Dストリームに加えて、3D立体視用のストリームも含まれるものである。
拡張子“clpi”が付与されたファイルは、AVクリップのそれぞれに1対1に対応するClip情報である。管理情報故に、Clip情報は、AVクリップにおけるストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置を示すEP_mapをもっている。以上のClip情報及びプレイリスト情報は、“静的シナリオ”に分類される。
<BD-Jオブジェクト>
続いて、拡張子BDJOを付したファイルについて説明する。拡張子BDJOを付したファイルは、BD-Jオブジェクトを格納したファイルである。BD-Jオブジェクトは、プレイリスト情報により定義されるAVクリップ列と、アプリケーションとの関連付けにより、タイトルを定義する情報である。BD-Jオブジェクトは、“アプリケーション管理テーブル”と、“プレイリスト情報に対する参照値”とを示す。“プレイリスト情報に対する参照値”は、このタイトルの開始時に、同時に再生すべきプレイリスト情報を示す。アプリケーション管理テーブルは、このタイトルを生存区間とするアプリケーションを指定する情報を羅列したものである。
アプリケーション管理テーブルには、アプリケーション詳細情報として、アプリケーションの名称を示す文字列と、アプリケーションに対応づけるアイコンの所在を指し示すアイコンロケータとを、アプリケーション毎にさせて格納している。アイコンロケータは、Java(登録商標)アーカイブファイル内に含まれるアイコンをアドレスにより指し示す。
このJava(登録商標)アプリケーションの実体にあたるのが、図2におけるBDMVディレクトリ配下のJARディレクトリに格納されたJava(登録商標)アーカイブファイル(YYYYY.jar)である。
アプリケーションは例えばJava(登録商標)アプリケーションであり、仮想マシンのヒープ領域(ワークメモリとも呼ばれる)にロードされる1つ以上のxletプログラムからなる。BD-Jオブジェクト内のアプリケーション管理テーブルに従ってアプリケーションシグナリングがなされ、生存区間が管理されるのでBD-Jアプリケーションと呼ばれる。BD-Jアプリケーションは、インタラクティブ性の向上を目的としたものであり、BD-Jアプリケーションを動作させるべく、再生装置のプラットフォームにはスケーリングのサイズ(以降、スケーリングFactor)を入力情報としたスケーリング命令を発行できるAPIが定義されている。それ以外にも、ユーザが直接機器内に組み込まれたレジデントアプリケーションによってスケーリング命令を発行することも可能である。スケーリング命令の発行のタイミングは自由であり、ビデオストリームの再生中に発行されることもあれば、それ以外のタイミングで発行する。
METAディレクトリに格納されたメタファイル(ZZZZZ.xml)には、ディスクに入っている映像作品に関する様々な情報が格納されている。メタファイルに格納されている情報としては、ディスクのディスク名及び画像、ディスクが誰によって作成されたかの情報、各タイトルに関わるタイトル名等がある。以上がBD-ROM100についての説明である。メタファイルは、必須のファイルではなく、このファイルが格納されていないBD-ROMもある。
以上がBD-ROMについての説明である。続いて、BD-Jオブジェクトについて説明する。図3は、BD-Jオブジェクトの内部構成の一例を示す図である。本図に示すように、BD-Jオブジェクトは、「アプリケーション管理テーブル」、「GUI管理テーブル」、「プレイリスト管理テーブル」から構成される。
以下、これらの構成要素について説明する。
「アプリケーション管理テーブル(AMT)」は、タイトルを生存区間としたアプリケーションシグナリングを、再生装置に行わせるためのテーブルである。引き出し線bj1は、アプリケーション管理テーブルの内部構成をクローズアップして示している。この引き出し線に示すように、アプリケーション管理テーブルは、BD-Jオブジェクトに対応するタイトルがカレントタイトルになった際、動作させるべきアプリケーションを特定する『アプリケーション識別子』と、『制御コード』とを含む。制御コードは、AutoRunに設定された場合、このアプリケーションをヒープメモリにロードした上、自動的に起動する旨を示し、Presentに設定された場合、このアプリケーションをヒープメモリにロードした上、他のアプリケーションからのコールを待って、起動すべき旨を示す。
「GUI管理テーブル(GMT)」は、動作中のアプリケーションがGUIを行う際の管理テーブルであり、GUI表示を実行するにあたっての解像度や、GUIに用いるフォントデータ、GUIに対するメニューコール、タイトルコールがユーザによってなされた場合、これらのコールをマスクするかどうかを規定するマスクフラグを含む。引き出し線bj2は、GUI管理テーブルの内部構成をクローズアップして示している。この引き出し線bj2に示すように、GUI管理テーブルは、HD3D_1920×1080、HD3D_1280×720、HD_1920×1080、HD_1280×720、QHD960×540,SD,SD_50HZ_720×576,SD_60HZ_720×480の何れかに設定することができる。
「プレイリスト管理テーブル(PLMT)」は、BD-Jオブジェクトに対応するタイトルがカレントタイトルになった際、自動的に再生されるべきプレイリストの指定を含む。引き出し線bj4は、自動再生プレイリストの内部構成をクローズアップして示している。引出線bj4に示すように、自動再生プレイリストを指定する情報として、3Dプレイリスト1920×1080、3Dプレイリスト1280×720、2Dプレイリスト1920×1080、2Dプレイリスト1280×720、2Dプレイリスト720×576、2Dプレイリスト720×480の指定が可能になる。
再生装置の構成要素を詳細に説明する。図4は、再生装置の内部構成の構成の一例を示す図である。本図に示すように、再生装置には、BDドライブ1a,ローカルストレージ1b、ネットワークインターフェース1b,ローカルストレージ1c、リードバッファ2a,2b、仮想ファイルシステム3、デマルチプレクサ4、ビデオデコーダ5a,5b、ビデオプレーン6、イメージデコーダ7a,7b、イメージメモリ7c,7d、イメージプレーン8、オーディオデコーダ9、インタラクティブグラフィクスプレーン10、バックグラウンドプレーン11、レジスタセット12、静的シナリオメモリ13、再生制御エンジン14、スケーリングエンジン15、合成部16、HDMI送受信部17、表示機能フラグ保持部18、左右処理記憶部19、プレーンシフトエンジン20、オフセット設定部21、BD-Jプラットフォーム22、レンダリングエンジン22a、動的シナリオメモリ23、モード管理モジュール24、HDMVモジュール25、UO検知モジュール26、静止画メモリ27a、静止画デコーダ27b、表示モード設定イニシャル表示設定部28、表示モード記憶部29から構成される。
本実施形態において、BD-ROM100には、図2に示すようなファイル構造のデータを格納しており、後述する仮想的なBD-ROM(仮想パッケージ)から左目用のビデオストリーム、右目用のビデオストリーム、字幕ストリーム、グラフィックスストリームが後述する図4に記載の仮想ファイルシステム3を介して読み出せる。ここでは説明を簡単にするため左目用のビデオストリーム、右目用のビデオストリームがBD-ROM100に記録されているものを例にして説明をする)
また字幕ストリーム、グラフィックスストリームについては左目用/右目用のものがそれぞれBD-ROM100に記録されていても良いし、1の字幕ストリーム、グラフィックスストリームを左右で共有する構成であっても良い。この場合、後述するようにオフセットを与えることにより、液晶眼鏡500を介して見える字幕、グラフィックスは平面的な像ではあるものの、表示画面から飛び出た位置に見えるようにしたり、表示画面よりも奥に位置するように見えるようにすることができる。
このBD-ROM100に記録された、左目用のビデオストリーム、右目用のビデオストリームのそれぞれが再生装置200に入力されて再生される映像というのは人間の視差の程度において見え方(例えば見える角度)の違う映像であり、このような映像を再生するためのデータがビデオストリームとして予めBD-ROM100に記録されている。
本実施の形態においては、予め一つのストリームファイルに右目用のビデオストリームと左目用のビデオストリーム、字幕ストリーム、グラフィックスストリームが埋め込まれている形態が望ましい。これは、メモリやグラフィクスにおける機器リソースが乏しい機器(例えばCE機器)が必要とする演算量をなるべく抑えるためである。
(BDドライブ1a)
BDドライブ1aは、例えば、半導体レーザ(不図示)、コリメートレンズ(不図示)、ビームスプリッタ(不図示)、対物レンズ(不図示)、集光レンズ(不図示)、光検出器(不図示)を有する光学ヘッド(不図示)を備える。半導体レーザから出射された光ビームは、コリメートレンズ、ビームスプリッタ、対物レンズを通って、光ディスクの情報面に集光される。集光された光ビームは、光ディスク上で反射/回折され、対物レンズ、ビームスプリッタ、集光レンズを通って、光検出器に集光される。光検出器にて集光された光の光量に応じて、生成された信号がBD-ROMから読み出されたデータに対応する。
(ネットワークインターフェース1b)
ネットワークインターフェース1bは、再生装置の外部と通信を行うためのものであり、インターネットでアクセス可能なサーバにアクセスしたり、ローカルネットワークで接続されたサーバにアクセスしたりすることが可能である。例えば、インターネット上に公開されたBD-ROM追加コンテンツのダウンロードに用いられたり、コンテンツが指定するインターネット上のサーバとの間でデータ通信を行うこうことでネットワーク機能を利用したコンテンツの再生を可能としたりする。BD-ROM追加コンテンツとは、BDドライブ1aに装填したオリジナルのBD-ROM100にないコンテンツで、例えば追加の副音声、字幕、特典映像、アプリケーションなどである。BD-Jプラットフォームからネットワークインターフェース1bを制御することができ、インターネット上に公開された追加コンテンツをローカルストレージ1cにダウンロードすることができる。
(ローカルストレージ1c)
ローカルストレージ1cは、ビルドインメディア、リムーバブルメディアを備え、ダウンロードしてきた追加コンテンツやアプリケーションが使うデータなどの保存に用いられる。追加コンテンツの保存領域はBD-ROM毎に分かれており、またアプリケーションがデータの保持に使用できる領域はアプリケーション毎に分かれている。また、ダウンロードした追加コンテンツをどのようにBDドライブ1aに装填したBD-ROM上のデータとマージされるか、マージ規則が記載されたマージ管理情報もこのビルドインメディア、リムーバブルメディアに保存される。
ビルドインメディアとは例えば再生装置に内蔵されたハードディスクドライブ、メモリなどの書き込み可能な記録媒体である。
リムーバブルメディアとは、例えば可搬性を有する記録媒体であり、好適にはSDカードなどの可搬性を有する半導体メモリーカードである。
リムーバブルメディアを半導体メモリーカードとしたときを例に説明をすると、再生装置にはリムーバブルメディアを装着するためのスロット(不図示)およびスロットに装着されたリムーバブルメディアを読み取るためのインターフェース(例えばメモリーカードI/F)が備えられており、スロットに半導体メモリを装着すると、リムーバブルメディアと再生装置とが電気的に接続され、インターフェース(例えばメモリーカードI/F)を利用して、半導体メモリに記録されたデータを電気信号に変換して読み出すことが可能となる。
(リードバッファ2a)
リードバッファ2aは、BDドライブ1aから読み出されたレフトビューストリームを構成するエクステントを構成するソースパケットを一旦格納しておき、転送速度を調整した上、デマルチプレクサ4に転送するためのバッファである。
(リードバッファ2b)
リードバッファ2bは、BDドライブ1aから読み出されたライトビューストリームを構成するエクステントを構成するソースパケットを一旦格納しておき、転送速度を調整した上、デマルチプレクサ4に転送するためのバッファである。
(仮想ファイルシステム3)
仮想ファイルシステム3は、例えば追加コンテンツと共にローカルストレージ1cにダウンロードされたマージ管理情報を元に、ローカルストレージに格納された追加コンテンツと装填したBD-ROM上のコンテンツをマージさせた、仮想的なBD-ROM(仮想パッケージ)を構築する。仮想パッケージの構築のため仮想ファイルシステム3は、アプリケーション関連付け情報を生成、及び更新するためのアプリデータ関連付けモジュールを有している。アプリデータ関連付け情報とは、BD-ROMディスク上の情報と、アプリケーションが設定する属性情報とを元にして、ローカルストレージの情報をアプリケーションに関連付ける情報である。
HDMVモードの動作主体であるコマンドインタプリタやBD-Jモードの動作主体であるBD-Jプラットフォームからは、仮想パッケージとオリジナルBD-ROMを区別なく参照することができる。仮想パッケージ再生中、再生装置はBD-ROM上のデータとローカルストレージ上のデータの両方を用いて再生制御を行うことになる。
(デマルチプレクサ4)
デマルチプレクサ4は、例えばソースパケットデパケッタイザー、PIDフィルタから構成され、再生すべきストリーム(ストリームは構築した仮想パッケージ(装填したBD-ROMおよび装填したBD-ROMに対応するローカルストレージ上のデータ)に含まれる)に対応するパケット識別子の指示を受け付けて、当該パケット識別子に基づくパケットフィルタリングを実行する。パケットフィルタリングにあたって、左右処理記憶部19のフラグを基に、レフトビュービデオストリーム、ライトビュービデオストリームのうち、表示方式フラグに対応したビデオストリームを抜き出し、ビデオデコーダ5a、ビデオデコーダ5bに転送する。デマルチプレクサ3はストリームのヘッダ情報から左目用ビデオフレームと右目用ビデオフレームの振り分けを行う。
再生対象のストリームから分離されたストリームが字幕ストリームである場合、デマルチプレクサ4は、分離された字幕ストリームをイメージメモリに書き込む。例えば3D字幕ストリーム(レフトビュー用の字幕ストリーム、ライトビュー用の字幕ストリーム)がストリームに含まれている場合には、レフトビュー用の字幕ストリームをイメージメモリ7cに書き込み、ライトビュー用の字幕ストリームをイメージメモリ7dに書き込む。
また、例えば字幕ストリームが2Dの字幕ストリーム(平面表示のために用いる字幕ストリーム)がストリームに含まれている場合には、2Dの字幕ストリームをイメージメモリ7cに書き込む。
(ビデオデコーダ5a)
ビデオデコーダ5aは、デマルチプレクサ4から出力されたTSパケットを復号して非圧縮形式のピクチャをレフトビュービデオプレーン6(図4のビデオプレーン6における符号(L)で示したもの)に書き込む。
(ビデオデコーダ5b)
ビデオデコーダ5bは、デマルチプレクサ4から出力されたライトビュービデオストリームを復号してTSパケットを復号して非圧縮形式のピクチャをライトビュービデオプレーン6(図4のビデオプレーン6における符号(R)で示したもの)に書き込む。
(ビデオプレーン6)
ビデオプレーン6は例えば、1920×2160(1280×1440)といった解像度に応じたピクチャデータを格納することができるプレーンメモリであり、1920×1080(1280×720)の解像度をもつ左目用プレーン(図4のビデオプレーン6における符号(L)で示したもの)、1920×1080(1280×720)の解像度をもつ右目用プレーン(図4のビデオプレーン6における符号(R)で示したもの)を有する。
(イメージデコーダ7a,b)
イメージデコーダ7a,bは、デマルチプレクサ4から出力され、イメージメモリ7c、7dに書き込まれた字幕ストリームを構成するTSパケットを復号して非圧縮形式のグラフィクス字幕をグラフィクスプレーン8aに書き込む。イメージデコーダ7a,bによりデコードされる“字幕ストリーム”は、ランレングス符号化によって圧縮された字幕を表すデータであり、Y値,Cr値,Cb値,α値を示すピクセルコードと、そのピクセルコードのランレングスとによって定義される。
(イメージプレーン8)
イメージプレーン8は、例えば1920×1080(1280×720)といった解像度によって、字幕ストリームをデコードすることにより得られたグラフィクスデータ(例えば字幕データ)を格納することができるグラフィクスプレーンであり、例えば1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する左目用プレーン(図4に示したイメージプレーン8における符号(L)で示したもの)、1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する右目用プレーン(図4に示したイメージプレーン8における符号(R)で示したもの)を有する。
(オーディオデコーダ9)
オーディオデコーダ9は、デマルチプレクサ4から出力されたオーディオフレームを復号して、非圧縮形式のオーディオデータを出力する。
(インタラクティブグラフィクスプレーン10)
インタラクティブグラフィクスプレーン10は、例えば1920×1080(1280×720)といった解像度によって、BD-Jアプリケーションがレンダリングエンジン22aを利用して描画したグラフィクスデータを格納することができる記憶領域を有するグラフィクスプレーンであり、例えば1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)、1920×1080(1280×720)の解像度をもつデータを格納できるような記憶領域を有する右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付したもの)を有する。
インタラクティブグラフィクスプレーン10に格納される“グラフィクスデータ”は、個々の画素がR値,G値,B値,α値によって定義されるグラフィクスである。インタラクティブグラフィクスプレーン10に書き込まれるグラフィクスは、主にGUIを構成するために使われる目的を持つイメージやウィジェットである。画素を表すデータに違いがあるものの、イメージデータ及びグラフィクスデータは、グラフィクスデータという表現で包括される。本願が対象としているグラフィクスプレーンには、イメージプレーン8、インタラクティブグラフィクスプレーン10の2種類があり、単に“グラフィクスプレーン”と呼ぶ場合、イメージプレーン8、インタラクティブグラフィクスプレーン10の双方又はどちらかを指し示すものとする。
(バックグラウンドプレーン11)
バックグラウンドプレーン11は、例えば1920×1080(1280×720)といった解像度によって、背景画となるべき静止画データを格納することができるプレーンメモリであり、具体的には、1920×1080(1280×720)の解像度をもつ左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)、1920×1080(1280×720)の解像度をもつ右目用プレーン(図4に示すバックグラウンドプレーン11における符号(R)を付したもの)を有する。
(レジスタセット12)
レジスタセット12は、プレイリストの再生状態を格納する再生状態レジスタ、再生装置におけるコンフィグレーションを示すコンフィグレーション情報を格納する再生設定レジスタ、コンテンツが利用する任意の情報を格納できる汎用レジスタを含む、レジスタの集まりである。プレイリストの再生状態とは、プレイリストに記載されている各種AVデータ情報の中のどのAVデータを利用しているか、プレイリストのどの位置(時刻)を再生しているかなどの状態を現す。
プレイリストの再生状態が変化した際は、再生制御エンジン14がPSRセット12に対し、その内容を格納する。また、HDMVモードの動作主体であるコマンドインタプリタもしくはBD-Jモードの動作主体であるJavaプラットフォームが実行しているアプリケーションからの指示により、アプリケーションが指定した値を格納したり、格納された値をアプリケーションに渡したりすることが可能である。
(静的シナリオメモリ13)
静的シナリオメモリ13は、カレントプレイリスト情報やカレントクリップ情報を格納しておくためのメモリである。カレントプレイリスト情報とは、BD-ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数プレイリスト情報のうち、現在処理対象になっているものをいう。カレントクリップ情報とは、BD-ROMまたはビルドインメディアドライブ、リムーバブルメディアドライブからアクセスできる複数クリップ情報のうち、現在処理対象になっているものをいう。
(再生制御エンジン14)
再生制御エンジン14は、HDMVモードの動作主体であるコマンドインタプリタ、BD-Jモードの動作主体であるJavaプラットフォームからの関数呼び出しに応じて、AV再生機能、プレイリストの再生機能を実行する。AV再生機能とは、DVDプレーヤ、CDプレーヤから踏襲した機能群であり、再生開始、再生停止、一時停止、一時停止の解除、静止画機能の解除、再生速度を即値で指定した早送り、再生速度を即値で指定した巻戻し、音声切り替え、副映像切り替え、アングル切り替えといった処理である。プレイリスト再生機能とは、このAV再生機能のうち、再生開始や再生停止をカレントプレイリストを構成するカレントプレイリスト情報、カレントクリップ情報に従って行うことをいう。
ディスク(例えばBD-ROM100)の挿入というイベントが発生した場合、再生制御エンジン12による再生処理の対象となるプレイリスト及びAVストリームは、BD-ROM上のカレントシナリオに記載されている自動再生プレイリスト(AutoStartPlaylist)である。AVストリーム再生は、ユーザオペレーション(例えば再生ボタン)をトリガーとして開始する場合もあれば、端末内の何かのイベントをトリガーとして自動的に開始する場合もある。
(スケーリングエンジン15)
スケーリングエンジン15は、イメージプレーン8やビデオプレーン5にある映像の縮小、拡大、及び等倍の制御を行うことが可能である。スケーリングエンジン15は、イメージデータ、ピクチャデータのデコードがされた時点でプレーンシフトエンジン20内に値が設定されていれば、スケーリングが発生しているとみなし、デコードされたビデオデータをビデオプレーンに格納する前、デコードされたグラフィクスをイメージプレーンに格納する前にスケーリングエンジン15を通してスケーリングを行わせる。
スケーリングFactorは例えば水平画素数の倍率及び/又は垂直画素数の倍率であり、例をあげると、基本となる解像度が、1920×1080ピクセルのであるグラフィクスデータに対して、“1/2”のスケーリングFactorが指定された場合、グラフィクスデータの解像度は、(1920×0.5)×(1080×0.5)画素、つまり、960×540ピクセルに縮小される。スケーリングFactorは1/2のように、1以下の値だけでなく、1以上の値を設定することも可能であり、その場合は拡大処理が施される。
(合成部16)
合成部16は、インタラクティブグラフィクスプレーン10、イメージプレーン8、ビデオプレーン6、バックグラウンドプレーン11の格納内容を合成する。
インタラクティブグラフィクスプレーン10、イメージプレーン8、ビデオプレーン6とバックグラウンドプレーン11は別々のレイヤー構成になっており、必ず、下から、バックグラウンドプレーン11、ビデオプレーン6、イメージプレーン8、インタラクティブグラフィクスプレーンの順に格納されたデータの合成(重ね合わせ)を行う。イメージプレーンのデータとして字幕、インタラクティブグラフィクスプレーン10のデータとしてのPOP-UPメニュー(グラフィクス)、GUIグラフィックスのデータを表示するコンテンツの再生を想定した場合、合成部は、必ずビデオプレーン6のデータ(ビデオ)上にイメージプレーン8のデータ(字幕)を重ね合わせ、イメージプレーン8の上にインタラクティブグラフィクスプレーン10のデータを重ね合わせる。つまり、たとえビデオプレーンが立体視のコンテンツであっても、奥行きのない字幕やPOP-UPメニュー、GUIが立体視ビデオに重なった場合はイメージ(字幕、POP-UPメニュー、GUIといった画像)を優先して表示させなければならない。これはスケーリングを行った時も同様である。
(HDMI送受信部17)
HDMI送受信部17は、例えばHDMI規格(HDMI:High Definition Multimedia Interface)に準拠したインターフェイスを含み、再生装置とHDMI接続する装置(この例ではテレビ400)とHDMI規格に準拠するように送受信を行うものであり、ビデオに格納されたピクチャデータと、オーディオデコーダ9によってデコードされた非圧縮のオーディオデータとを、HDMI送受信部16を介してテレビ400に伝送する。テレビ400は、例えば立体視表示に対応しているかに関する情報、平面表示可能な解像度に関する情報、立体表示可能な解像度に関する情報を保持しており、再生装置からHDMI送受信部16を介して要求があると、テレビ400は要求された必要な情報(例えば立体視表示に対応しているかに関する情報、平面表示可能な解像度に関する情報、立体表示可能な解像度に関する情報)を再生装置へ返す。このように、HDMI送受信部16を介することで、テレビ400が立体視表示に対応しているかどうかの情報を、テレビ400から取得することができる。
(表示機能フラグ保存部18)
表示機能フラグ保存部18は、再生装置は再生装置が3Dの表示が可能か否かの区別を示す、3D表示機能フラグを保存している。
(左右処理記憶部19)
左右処理記憶部19は、現在の出力処理がレフトビュー用の出力か、または、ライトビュー用の出力かを記憶する。左右処理記憶部19のフラグは、図1に示した再生装置と接続する表示デバイス(図1の例ではテレビ)に対する出力が、レフトビュー出力であるか、ライトビュー出力であるかを示す。レフトビュー出力をしている間、左右処理記憶部19のフラグはレフトビュー出力を示すフラグに設定される。また、ライトビュー出力をしている間、左右処理記憶部19のフラグはライトビュー出力を示すフラグに設定される。
(プレーンシフトエンジン20)
プレーンシフトエンジン20はプレーンオフセットを保存する領域を兼ね備え、左右処理記憶部19に現在の処理対象が左目映像か右目映像かを判定した後、保存しているプレーンオフセットを用いてイメージプレーンの横軸のシフト量(表示画面上に表示される像を表示画面の水平方向へ基準となる位置からどの程度ずらすかを示す量)を計算し、シフトする。表示される字幕(グラフィクス)のシフト量を調節することにより、液晶眼鏡500を介して見える平面的な字幕(グラフィクス)は表示画面の位置よりも手前/奥に表示されているように見せることができる。シフト量というのは表示画面の位置からどの程度、手前に位置しているように見えるかまたは奥に位置しているように見えるかを調節するための量である。
つまり、字幕/グラフィクスの横軸のずらし幅を変更することによって、奥行きが変更する。例えば、左目用字幕と右目用字幕を一定方向に遠くへ離せば離すほど手前に位置するように表示され、逆方向に遠くへ離せば離すほど奥に位置するように表示される視覚効果を得られる。
シフト量によっては、ディスプレイの解像度とサイズによってはイメージプレーンの変位が大きくなりすぎ、目がついていかなくイメージが二重に見える現象になる場合がある。その場合はプレーンオフセットに記載された値を基にディスプレイの解像度とサイズの情報を組み合わせ、字幕・グラフィクスが手前に表示しすぎないように調整する。例えば、再生装置200がプレーンオフセットの値を設定できるセットアップ機能を兼ね備えている場合、プレーンシフトエンジン20は、セットアップ機能を用いて設定した値を保存する。
(オフセット設定部21)
オフセット設定部21は、オフセットの更新要求があった場合に更新すべきオフセットを後述するプレーンシフトエンジン20のオフセット値保存部41に設定するものである。
具体的には(a)後述する表示モード記憶部29に記憶されているイメージプレーン設定のオフセット値、インタラクティブグラフィックスプレーン設定のオフセット値を読み込んで設定する、(b)デマルチプレクサ4に入力されるストリームのヘッダ領域に保持されているイメージプレーンのオフセット値、インタラクティブグラフィックスプレーンのオフセット値をデマルチプレクサ4が取得して、デマルチプレクサ4から得た上述のオフセットの値を設定する、(c)UO検知モジュール26から送られてくるイメージプレーンのオフセット値、インタラクティブグラフィックスプレーンのオフセット値を読み込んで設定する、(d)カレントプレイリスト情報に含まれるイメージプレーンのオフセット値、インタラクティブグラフィックスプレーンのオフセット値を読み込んで設定するなどの動作により設定がなされる。
ユーザ、あるいはアプリケーションからのプレーンのオフセットの更新要求があった際に一時的にその値を保存するモジュールである。プレーンオフセットは例えば奥行きが-63〜63で表現されている整数とし(63が一番手前で-63が一番奥)、それを最終的なシフトの幅を示す画素座標に変換する。
(BD-Jプラットフォーム22)
BD-Jプラットフォーム22は、BD-Jモードの動作主体であるJavaプラットフォームであり、Java2Micro_Edition(J2ME)
Personal Basis Profile(PBP 1.0)と、Globally Executable MHP
specification(GEM1.0.2)for package media targetsとをフル実装しており、JARアーカイブファイルに存在するクラスファイルからバイトコードを読み出して、ヒープメモリに格納することにより、BD-Jアプリケーションを起動する。そしてBD-Jアプリケーションを構成するバイトコード、システムアプリケーションを構成するバイトコードをネィティブコードに変換して、MPUに実行させる。BD-Jプラットフォーム22は、BD-Jアプリケーションからスケーリングが要求された際、引数として与えられたスケーリングFactorを後述する図21に示すスケーリングエンジン20のスケーリングFactor保存部42に格納する
(レンダリングエンジン22a)
レンダリングエンジン22aは、Java2D,OPEN-GLといった基盤ソフトウェアを備え、BD-JモードにおいてはBD-Jプラットフォーム22からの指示に従って、グラフィクスや文字列をインタラクティブグラフィクスプレーン10に書き込む。またHDMVモードにおいて、レンダリングエンジン22aは、字幕に対応するストリーム(字幕ストリーム)以外のグラフィクスストリームから抽出したグラフィクスデータ(例えば、入力ボタンに対応するグラフィクスデータ)をレンダリングし、インタラクティブグラフィクスプレーン10に書き込む。
(動的シナリオメモリ23)
動的シナリオメモリ23は、カレント動的シナリオを格納しておき、HDMVモードの動作主体であるHDMVモジュール、BD-Jモードの動作主体であるJavaプラットフォームによる処理に供されるメモリである。カレント動的シナリオとは、BD-ROMまたはビルドインメディア、リムーバブルメディアに記録されているIndex.bdmv、BD-Jオブジェクト、ムービーブジェクトのうち、現在実行対象になっているものをいう。
(モード管理モジュール24)
モード管理モジュール24は、BD-ROM100またはローカルストレージ1c(図4の例ではビルドインメディアドライブ、リムーバブルメディアドライブ)から読み出されたIndex.bdmvを保持して、モード管理及び分岐制御を行う。モード管理モジュール24によるモード管理とは、動的シナリオを、BD-Jプラットフォーム22、HDMVモジュール25のどちらに実行させるかという、モジュールの割り当てである。
(HDMVモジュール25)
HDMVモジュール25は、HDMVモードの動作主体となるDVD仮想プレーヤであり、HDMVモードの実行主体となる。本モジュールは、コマンドインタプリタを具備し、ムービーオブジェクトを構成するナビゲーションコマンドを解読して実行することでHDMVモードの制御を実行する。ナビゲーションコマンドは、DVD-Videoと似たようなシンタックスで記述されているため、かかるナビゲーションコマンドを実行することにより、DVD-Videoライクな再生制御を実現することができる。
(UO検知モジュール26)
UO検知モジュール26は、GUIに対するユーザオペレーションを受け付ける。かかるGUIによって受け付けられるユーザオペレーションには、BD-ROMに記録されているタイトルのうち、どれを選択するかというタイトル選択、字幕選択、音声選択がある。特に、立体視再生特有のユーザオペレーションとして、立体視映像の奥行き感のレベルを受け付けることがある。例えば、奥行き感が、遠い、普通、近い等の3つのレベルを受け付けることがあるし、奥行き感は何cm、何mmというように、数値入力によって奥行き感のレベルを受け付けることもある。
またUO検知モジュール26は、リモコンや機器に付属のボタンなどの操作によりイメージプレーンのスケーリングを変更する命令を受け付けた場合、それを機器内のモジュールが直接スケーリング命令を発行する。
(静止画メモリ27a)
静止画メモリ27aは、BD-ROM、または、構築した仮想パッケージから取り出された背景画となる静止画データを格納する。
(静止画デコーダ27b)
静止画デコーダ27bは、静止画メモリ27aに読み出された静止画データをデコードして、非圧縮の背景画データをバックグラウンドプレーン11に書き込む。
(表示モード設定イニシャル表示設定部28)
表示モード設定イニシャル表示設定部28は、BD-Jプラットフォーム部に供せられるカレントタイトルにおけるBD-Jオブジェクトに基づき、表示モード、解像度の設定を行う。
(表示モード記憶部29)
表示モード記憶部29は、表示モードが2Dまたは3Dのいずれであるのか、およびステレオモードがONまたはOFFのいずれであるのかを記憶する。再生装置が3D表示機能フラグとして3D表示が可能と設定されている場合、表示モード記憶部29に保存された端末設定である表示モードは、2D、3Dの何れかに切り替えることが可能となる。以後、表示モードが“3D”と示されている状態を“3D表示モード”と呼び、表示モードが“2D”と示されている状態を“2D表示モード”と呼ぶ。
この表示モードが、どのようなものであるかについて説明する。再生装置が3D表示モードの場合、各プレーンは、ステレオモードONの状態、ステレオモードOFFの状態の何れかの状態をとる。ステレオモードのONとOFFの違いはプレーンの合成方法の違いでもある。
ビデオストリームを例に説明をすると、“ステレオモードON”とは、再生装置は見え方(例えば見える角度)の異なる2つの映像(例えば視差の程度において、見える角度の異なるレフトビュー用の映像とライトビュー用の映像)をそれぞれ用いて表示するような合成を行う3D表示モードである。
“ステレオモードOFF”とは、再生装置は1つの映像(例えばレフトビュー用の映像とライトビュー用の映像のいずれか一方の映像であり、ここではレフトビュー用の映像を用いる例を説明する)を用いて左目/右目に供するような合成を行う3D表示モードである。つまり、両目で視聴した場合は立体感がない映像(平面映像)になる。
ただし、例えばグラフィクスプレーン8においてはプレーンオフセットによる水平方向へのシフトにより、グラフィクスプレーンに格納され表示される平面的なグラフィクスデータ(字幕データ)を表示画面よりも手前または奥に位置するように見せることが可能である。このことは、ビデオプレーンに記憶されたビデオデータ、インタラクティブグラフィクスプレーンに記憶されたインターラクティブグラフィクスデータ、バックグラウンドプレーン11に記憶された背景画データにおいて、“ステレオモードOFF”である場合にオフセットを調節すれば、同様のことが言える。
以上説明したように“3D表示モード”において、“ステレオモードON”と、“ステレオモードOFF”の2つがあり、“3D表示モード”における“ステレオモードON”においてはレフトビュー用のデータとライトビュー用のデータ(例えば左目から見える像と右目から見える像とは見える角度の異なる像)であり、これらをそれぞれレフトビュー用のプレーンとライトビュー用のプレーンに格納し、格納された像を同期信号に従って表示することにより、立体感のある像を表示することが可能である。
また、“3D表示モード”における“ステレオモードOFF”においてはレフトビュー用のデータとライトビュー用のデータのうちのいずれか一方のデータ(本実施の形態では例えばレフトビュー用のデータ)のみを用いて、これをレフトビュー用のプレーンとライトビュー用のプレーンのそれぞれに格納し、プレーンオフセットを調節することにより、平面的な像を表示画面よりも手前または奥に位置するように表示することが可能である。
本実施の形態においては、“ステレオモードON”、“ステレオモードOFF”、はプレーン毎(つまり、ビデオプレーン6、グラフィクスプレーン8、インタラクティブグラフィクスプレーン10、バックグラウンドプレーン11毎)に設定できるように構成している。
また、“2D表示モード”というのは通常の表示、つまり、表示画面の位置に対応する像が表示するものである。この場合、デフォルトで利用されるデコーダ、プレーンを予め決められておりこのデコーダ、プレーンを利用して合成画像を表示するように構成がなされている。
例えば、“2D表示モード”の場合、ビデオデコーダ5aが左目用ビデオプレーン(図4に示したビデオプレーン6における符号(L)で示したもの)に書き込んだ2Dビデオデータ、イメージデコーダ7aが左目用プレーン(図4に示したイメージプレーン8における符号(L)で示したもの)に書き込んだ2Dグラフィクスデータ(字幕データ)、BD-Jアプリケーションがレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)に書き込んだ2Dインタラクティブグラフィクス、静止画デコーダ27bが左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)に書き込んだ2Dの静止画データを合成するように構成されている。
このとき、合成の順序は下から2D静止画データ、2Dビデオデータ、2Dグラフィクスデータ(字幕データ)、2Dインタラクティブグラフィクスの順で合成する。
表示モード設定イニシャル表示設定部28は、BD-Jプラットフォーム部に供せられるカレントタイトルにおけるBD-Jオブジェクトに基づき、表示モード、解像度の設定を行う。
この表示モードの設定によって、各プレーンメモリへの書き込みがどのように変化するかを説明する。
(ビデオプレーン6への書き込み)
先ず始めに、ビデオプレーン6について説明する。ビデオデータの表示モードが3D表示モードであって、かつステレオモードがオンである場合には、ビデオデコーダ5aがレフトビュー用のビデオストリームをデコードし、左目用プレーン(図5に示したビデオプレーン6における符号(L)で示したもの)に書き込むとともに、ビデオデコーダ5bがライトビュー用のビデオストリームをデコードし、右目用プレーン(図5に示したビデオプレーン6における符号(R)で示したもの)に書き込む。
また、ビデオデータの表示モードが3D表示モードであって、かつステレオモードがオフである場合には、ビデオデコーダ5aは、例えばレフトビュー用のビデオストリームをデコードし、左目用プレーン(図5に示したビデオプレーン6における符号(L)で示したもの)および右目用プレーン(図5に示したビデオプレーン6における符号(R)で示したもの)に書き込む。
また、ビデオデータの表示モードが2D表示モードである場合は、例えばデマルチプレクサ4は、2Dビデオストリームをビデオデコーダ5aへ送り、ビデオデコーダ5aは、デコードした2Dビデオデータを左目用ビデオプレーン(図5に示したビデオプレーン6における符号(L)で示したもの)に書き込むように構成されている。
以上がビデオプレーン6についての説明である。
続いて、イメージプレーン8の詳細について説明する。
(イメージプレーン8への書き込み)
例えば字幕データの表示モードが3D表示モードであって、かつステレオモードがオンである場合には、イメージデコーダ7aがイメージメモリ7cに記憶されたレフトビュー用の字幕ストリームをデコードし、左目用プレーン(図5に示したイメージプレーン8における符号(L)で示したもの)に書き込むとともに、イメージデコーダ7bがイメージメモリ7dに記憶されたライトビュー用の字幕ストリームをデコードし、右目用プレーン(図5に示したイメージプレーン8における符号(R)で示したもの)に書き込む。
また、字幕データの表示モードが3D表示モードであって、かつステレオモードがオフである場合には、イメージデコーダ7aは、イメージメモリ7cに記憶されたレフトビュー用の字幕ストリームをデコードし、左目用プレーン(図5に示したイメージプレーン8における符号(L)で示したもの)および右目用プレーン(図5に示したイメージプレーン8における符号(R)で示したもの)に書き込む。
上述の例では、字幕データの表示モードが3D表示モードであって、かつステレオモードがオフである場合には、レフトビュー用の字幕ストリームデコードし、左目用プレーンおよび右目用プレーンに書き込むとしたが、記録媒体に記録されている字幕ストリームが左右で同じ字幕ストリームを共有する構成である場合には、この共有する字幕ストリームを読み込んで、左目用イメージプレーンおよび右目用イメージプレーンに書き込むようにすれば良い。
また、字幕データの表示モードが2D表示モードである場合には、デマルチプレクサ4は、2D字幕ストリームをイメージメモリ7cに格納するように構成されており、イメージデコーダ7aは、イメージメモリ7cに記憶された2D字幕ストリームをデコードし、左目用プレーン(図5に示したイメージプレーン8における符号(L)で示したもの)に書き込むように構成されている。
以上がイメージプレーン8についての説明である。続いて、インタラクティブグラフィクスプレーン10の格納内容について説明する。
(インタラクティブグラフィクスプレーン10への書き込み)
インタラクティブグラフィクスの表示モードが例えば3D表示モードであって、かつステレオモードがオンである場合、左目から見えるインタラクティブグラフィクス(左目用インタラクティブグラフィクス)、右目から見えるインタラクティブグラフィクスであって、左目用インタラクティブグラフィクスとは異なるインタラクティブグラフィクス(右目用インタラクティブグラフィクス)を描画するプログラムがBD-Jアプリケーションに組み込まれていることを意味する。
この描画プログラムによって描画される左目用インタラクティブグラフィクス及び右目用インタラクティブグラフィクスは、立体的なグラフィクスに見えるように互いに見える角度が異なるようなグラフィクスである。
左目用インタラクティブグラフィクス及び右目用インタラクティブグラフィクスを表示に供する場合、BD-Jアプリケーションはレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)にレフトビュー用インタラクティブグラフィクスを書き込み、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付したもの)にライトビュー用インタラクティブグラフィクスを書き込む。
また、インタラクティブグラフィクスの表示モードが例えば3D表示モードであって、かつステレオモードがオフである場合、BD-Jアプリケーションはレンダリングエンジン22aを利用してレフトビュー用のインタラクティブグラフィクスをインタラクティブグラフィクスプレーン10の符号(L)、符号(R)を付したものにそれぞれ書き込む。
インタラクティブグラフィクスの表示モードが2D表示モードである場合、BD-Jアプリケーションはレンダリングエンジン22aを利用して、2Dインタラクティブグラフィクスをインタラクティブグラフィクスプレーン10(より具体的には、インタラクティブグラフィクスプレーン10の符号(L)を付したもの)に書き込むように構成されている。
以上がインタラクティブグラフィクスプレーン10についての説明である。続いて表示モードに応じたバックグラウンドプレーン11の格納内容について説明する。
(バックグラウンドプレーン11への書き込み)
背景画の表示モードが例えば3D表示モードであって、かつステレオモードがオンである場合、静止画デコーダ27bは、静止画メモリ27aに格納された、レフトビュー用の静止画データ、ライトビュー用の静止画データをデコードして、レフトビュー用の静止画データを左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)、ライトビュー用の静止画データを右目用プレーン(図4に示すバックグラウンドプレーン11における符号(R)を付したもの)にそれぞれ書き込む。
背景画の表示モードが例えば3D表示モードであって、かつステレオモードがオフである場合、静止画メモリ27aに格納された3D背景画(レフトビュー用の静止画データ、ライトビュー用の静止画データ)のうち、レフトビュー用の静止画データを静止画デコーダ27bがデコードし、左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)および右目用プレーン(図4に示すバックグラウンドプレーン11における符号(R)を付したもの)に書き込む。背景画の表示モードが例えば2D表示モードである場合、静止画メモリ27aに格納された2Dの静止画データを静止画デコーダ27bがデコードし、左目用プレーン(図4に示すバックグラウンドプレーン11における符号(L)を付したもの)に書き込むように構成されている。
以上が表示モードに応じたバックグラウンドプレーン11の格納内容についての説明である。
次に、本実施の形態における2D表示モード、3D表示モードの切り替えの詳細について説明する。
図5は、2D表示モード、3D表示モードの切り替えを示す図である。本図の左側には2D表示モード時の出力モデルが示されている。左側のプレーン構成では、ビデオプレーン6、イメージプレーン8(図中の“Subtitle”)、インタラクティブグラフィクスプレーン10、バックグラウンドプレーン11、及び出力のそれぞれ一つで構成される。
よって、2D表示モード時はレフトビューとライトビューは共通のものを利用することになり、結果として全く同じ出力を見ることになる。
本図の右側には3D表示モード時の出力モデルが表示されている。再生装置が3D表示モードの場合、ビデオプレーン6、イメージプレーン8(図中の“Subtitle”)、インタラクティブグラフィクスプレーン10はそれぞれレフトビュー用と、ライトビュー用とに分けられており、これらに再生すべきピクチャデータ、グラフィクスデータが格納される。
よって3D表示モード時はレフトビューとライトビュー出力が別々に存在し、左目と右目に異なるイメージを提供することが可能になり、その視差であたかも画面内の立体物が手前に飛び出しているかのような3Dのエフェクトを引き出すことが可能である。
図6は、3D表示モードにおいて、各プレーンのステレオモードが全てオンである場合と、ステレオモードが全てオフである場合の合成処理の一例を示す図である。
図6では各プレーンがステレオモードを統一させている場合の例を示しているが、プレーン毎にステレオモードのON/OFFが変更可能である。
左側は、3D表示モードにおいて、各プレーンのステレオモードが全てオンである場合のプレーン構成を示し、右側は、3D表示モードにおいて、各プレーンのステレオモードが全てオフである場合のプレーン構成を示す。
第1段目は、バックグラウンドプレーン11と、その合成前の出力とを示す。
第2段目は、ビデオストリームと、ビデオプレーン6、その合成前の出力とを示す。
第3段目は、イメージプレーン8と、その合成前の出力とを示す。
第4段目は、インタラクティブグラフィクスプレーン10と、その合成前の出力とを示す。
ステレオモードがONの場合、バックグラウンドプレーンは、(L)が付された領域で示す左目用バックグラウンドプレーンがレフトビュー用の背景データの書き込みに使われ、(R)が付された領域で示す右目用バックグラウンドプレーンがライトビュー用の背景データが書き込まれ、左目用/右目用の合成時にそれぞれ使われる。バックグラウンドプレーン11のステレオモードがOFFの場合はアプリケーションによりレフトビュー用の背景データがバックグラウンドプレーンの、(L)、(R)を付した領域にそれぞれ書き込まれるので、ライトビュー用の背景データは表示に影響しない。
ステレオモードがONの場合、ビデオストリームのうち、左目用のビデオのピクチャデータがレフトビュー用のビデオプレーンに格納される。また、ビデオストリームのうち、右目用のビデオのピクチャデータがライトビュー用のビデオプレーンに格納される。ビデオプレーンのステレオモードがOFFの場合は、左目用のビデオのピクチャデータがレフトビュー用のビデオプレーンとライトビュー用のビデオプレーンの両方に格納される。
ステレオモードがONの場合、イメージプレーンは(L)が付された領域で示す左目用イメージプレーンにレフトビュー用のイメージデータが書き込まれ、(R)が付された領域で示す右目用イメージプレーンがライトビュー用のイメージデータが書き込まれ、左目用/右目用の合成時にそれぞれ使われる。
イメージプレーン8のステレオモードがOFFの場合、ライトビュー用のイメージデータに対応する字幕グラフィクスは表示に影響しない。また、ステレオモードがOFFの場合、イメージプレーン8の内容は、右方向又は左方向にシフトされた内容になる(図中のShifed
Left)。
ステレオモードがONの場合、インタラクティブグラフィクスプレーン10は(L)が付された領域で示す左目用インタラクティブグラフィクスプレーンにレフトビュー用のインタラクティブグラフィクスが書き込まれ、(R)が付された領域で示す右目用インタラクティブグラフィクスプレーンにライトビュー用のインタラクティブグラフィクスが書き込まれ、左目用/右目用の合成時にそれぞれ使われる。
インタラクティブグラフィクスプレーン10のステレオモードがOFFの場合はアプリケーションによるライト用のインタラクティブグラフィクスは表示に影響しない。また、ステレオモードがOFFの場合、インタラクティブグラフィクスプレーン10の内容は、右方向又は左方向にシフトされた内容になる(図中のShifed Left)。
図7は、表示モードが3Dにおいて、全プレーンがステレオモードONである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10がどのように重ねあわせられるかを示す。ステレオモードにおいては、レフトビューとしてレフトビューバックグラウンドプレーンu4、ビデオストリームから読み出されたレフトビュービデオu3、、イメージプレーン8のレフトビューグラフィクスu2、インタラクティブグラフィクスプレーン10のレフトビューグラフィクスu1が順に合成されることがわかる。
また、ライトビューとしてライトビューバックグラウンドプレーンu8、ビデオストリームから読み出されたライトビュービデオu7が、イメージプレーン8のライトビューグラフィクスu6、インタラクティブグラフィクスプレーン10ののライトビューグラフィクスu5が順に合成されることがわかる。
図8は、表示モードが3Dにおいて、全プレーンがステレオモードOFFである場合に、バックグラウンドプレーン11、ビデオプレーン、イメージプレーン8、インタラクティブグラフィクスプレーン10がどのように重ねあわせられるかを示す。ステレオモードOFF時においては、レフトビューとしてレフトビューバックグラウンドプレーンr4、ビデオストリームから読み出されたレフトビュービデオr2、イメージプレーン8のレフトビューグラフィクスを一定の水平方向(図では右)にシフトしたShiftedLeftグラフィクスr3、インタラクティブグラフィクスプレーン10のレフトビューグラフィクスを一定の水平方向(図では右)にシフトしたShifted Leftグラフィクスr1が順に合成されることがわかる。
また、ライトビューとしてライトビューバックグラウンドプレーンr8、ビデオストリームから読み出されたレフトビュービデオr6、イメージプレーン8のレフトビューグラフィクスをレフトビューとは逆の方向(図では左)にシフトしたShiftedLeftグラフィクスr7、インタラクティブグラフィクスプレーン10のレフトビューグラフィクスをレフトビューとは逆の方向(図では左)にシフトしたShiftedLeftグラフィクスr5が順に合成されることがわかる。
次に、本実施の形態におけるステレオモードの切り替えの詳細について説明する。
図9は、プレーン毎の合成結果を示す。
6L、6Rは、ビデオプレーンの一例を示すものである。女性の顔の向きの違いから、レフトビュー用のストリームとライトビューのストリームは違った角度から撮られたものであることがうかがえる。尚、図9における人物の顔の向きや位置のズレは模式的なものであり、立体視再生を実現するための正確な顔の向きや位置を表している訳ではない。液晶眼鏡500をかけず、裸眼でテレビ400の表示画面を見た場合、この違った角度から撮影された映像があたかも重ね合わされて表示されているかのように見えることになる。
イメージプレーン8における“I love you”の字は字幕データがイメージデコーダによってデコードされた後のイメージである。
インタラクティブグラフィクスプレーン10における前後スキップの操作を受け付けるGUI部品は、BD-Jアプリケーションがインタラクティブグラフィクスプレーン10に描画したグラフィックス画像である。
6LLは、合成後の出力レフトビューであり、6RRは、合成後に出力される出力ライトビューである。6LLのレフトビュー用映像では“I love you”の字幕が右にずれて合成されていることがわかる。また、6RRのライトビュー映像では“I love you”の字幕が左にずれて合成されている。
図10は、全プレーンがステレオモードON時における映像出力を3D用ディスプレイで見た場合の一例である。
ライトビューとレフトビュー用の映像は、例えば液晶眼鏡500を通してフィルタされ、左右の目にそれぞれ違う映像を映し出す。ここで注目すべき点は、ビデオストリーム映像が左右の画像が重ねられて立体化されているのみでなく、“I love you”の字幕や前後スキップの操作を受け付けるGUI部品も左目と右目で異なっていることである。このように、予め左目用と右目用の両方のコンテンツが用意されている場合はステレオモードをONにすることにより、自然とビデオ、字幕やGUI部品全て奥行きが保たれた構成になることがわかる。
図11は、ビデオプレーンはステレオモードONだが、それ以外のプレーンは全てステレオモードOFFにした場合の映像出力を、液晶眼鏡500で見た場合に現れる立体視映像の一例を示す。左目用と右目用の両方の字幕やGUIが用意されていないディスク(2D前提で作られた過去のコンテンツ、ディスクの容量が足りなくてそうせざるを得ないディスク等)に関してはグラフィクスプレーンのステレオモードはOFFにせざるを得ない。図11はビデオプレーンがステレオモードONのため、レフトビュー用のストリームとライトビューのストリームのそれぞれから再生される像は撮影対象が同じで、違った角度から撮られたものを再生した映像であることがうかがえる。一方、イメージプレーン8及びインタラクティブグラフィクスプレーン10は、ステレオモードOFFであり、同じ字幕ストリーム、同じGUI画像を右方向及び左方向にシフトしたものがビデオプレーンに合成され、片目用の字幕・GUIのみしか存在しなくても立体ビデオの手前に表示することが可能となり、視聴者への目の疲労の度合いを低減することが可能なことが伺える。
(立体視効果を実現するための制御)
立体視効果の実現のため、グラフィクスプレーンをずらす方向について説明する。
プレーンシフトエンジン20がシフトする方向はグラフィクスプレーンを表示画面よりも奥に位置するような立体感をもたせるか、表示画面よりも手前に位置するような立体感を持たせるかによって異なる。
本実施形態ではレフトビュー用映像を右方向にずらす、つまり画面から飛び出させるに立体感を持たせることを前提とする。
元の画素データの座標と、右方向又は左方向にシフトした場合の各画素データの座標との差分を“シフト量“又は“シフト数”という。このシフト量は、立体視においては、イメージプレーン8に書き込まれた字幕、又は、インタラクティブグラフィクスプレーン10書き込まれたグラフィックス画像を表示画面よりもどの程度、手前または奥に位置するように表示をさせるのかという奥行き値によって算出されるべきである。また、立体視再生において、両目の視差として採用することができる何等のパラメータから、導出することができる。
また、上述したようなシフト量だけ、左右に、グラフィクスプレーン内の画素データを移動させるためのパラメータを“プレーンオフセット”と呼ぶ。シフト量はスカラ量であるのに対して、プレーンオフセットは、正負の極性と大きさを持つベクトルであり、通常の状態(つまり表示画面上に表示しているように見える状態)から、表示画面の水平方向(例えば右方向及び左方向)のどちらの向きに、どれだけ画素データの座標を移動させるかを指し示す。以降の説明においてプレーンシフトは、このプレーンオフセットに従って実行されるものとする。プレーンオフセットには、シフト量に正負の符号を付けたものもあるし、何等かの関数式による計算を施した上、シフト量として採用できるものもある。
続いて、プレーンオフセットの正負の意味合いについて説明する。
グラフィクスプレーンのプレーンオフセットは、ライトビューのグラフィクスプレーンに格納されている画素データの座標、及び、レフトビュー用のグラフィクスプレーンに格納されている画素データの座標を何画素だけずらすかという画素数を示す。
グラフィクスプレーンの映像が画面から飛び出る効果をもたらしたい場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ右側にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ左側にシフトする。本実施の形態ではプレーンオフセットの符号が“正の符号”の場合は飛び出る効果をもたらすこととする。
グラフィクスプレーンの映像が画面の奥に表示される効果をもたらしたい場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ左にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットに示されるシフト量の分だけ右にシフトする。本実施の形態ではプレーンオフセットの符号が“負の符号”の場合は奥に表示される効果をもたらすこととする。
プレーンオフセットが“0”の場合、グラフィクスプレーンのシフトは行わない、つまり、通常の状態で表示(表示画面上に表示されるように見える状態)されることを意味するものとなる。
図12は、表示モードが3D、各プレーンのステレオモードがOFFの場合において、バックグラウンドプレーンに格納された背景画像のプレーンオフセットが“0”、ビデオプレーンに格納されたビデオのプレーンオフセットが“0”、イメージプレーンのプレーンオフセットが“0“
とは異なる値、インタラクティブグラフィックスプレーンのプレーンオフセットが“0“ とは異なる値のときの右方向にシフトされたShiftedLeftレフトビューグラフィクスプレーン、左方向にシフトされたShifted Leftライトビューグラフィクスプレーンを示す図である。
本図(a)に示すように、イメージプレーン8において、右方向シフト後のグラフィクスプレーンは、左側に透明領域が追加され、右側の端部が切り取られる。同じくインタラクティブグラフィクスプレーン10において、右方向シフト後のグラフィクスプレーンは、左側に透明領域が追加され、右側の端部が切り取られる。
同じく(b)に示すように、イメージプレーン8において、左方向シフト後のグラフィクスプレーンは、右側に透明領域が追加され、左側の端部が切り取られる。同じくインタラクティブグラフィクスプレーン10において、左方向シフト後のグラフィクスプレーンは、右側に透明領域が追加され、左側の端部が切り取れる。
ステレオモードがOFFである場合に実行されるプレーンシフトは、イメージプレーンやインタラクティブグラフィクスプレーン内のグラフィクスを表示画面よりも手前に位置するように見せたり、表示画面よりも奥に位置するように見せたりするという視覚効果を産み出す。このプレーンシフトが前提としている原理について説明する。
(プレーンシフトによる立体視の原理)
図13は、プレーンオフセットの符号が正(レフトビュー用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合、像が表示画面よりも手前にあるように見える原理を説明するための図である。
本図において、丸で示したものは、表示画面上に表示される像である。
まず、プレーンオフセットがない場合、右目に見える像も左目に見える像も同じ位置であるため、両目を用いて、この像を見たときの焦点位置は、表示画面上に位置する(図13(a))。結果として表示される像は表示画面上に位置する。
一方、3D表示モードのステレオモードがOFFの場合において、左目に見える像はプレーンオフセットが0の場合に比べて右側の位置に見えるようシフトして表示する。このとき右目には液晶眼鏡500により何も見えないようにする。一方、右目に見える像は、プレーンオフセットが0の場合に比べて左側の位置に見えるようにシフトして表示する。このとき左目には液晶眼鏡500により何も見えないようにする(図13(b))。
人間は両目を用いて焦点をあわせてその焦点位置に像があるように認識する。従って、液晶眼鏡500により左目に像が見える状態と、右目に像が見える状態とを交互に短い時間間隔で切り替えると、人間の両目は表示画面よりも手前の位置に焦点位置を、合わせようとし、結果として表示画面よりも手前に位置する焦点位置に像があるように錯覚を起こす(図13(c))。
図14は、プレーンオフセットの符号が負(レフトビュー用のグラフィクスイメージを左方向へずらし、ライトビュー用のグラフィクスイメージを右方向へずらす)である場合、像が表示画面よりも奥にあるように見える原理を説明するための図である。
図14において、丸で示したものは、表示画面上に表示される像である。まず、プレーンオフセットがない場合、右目に見える像も左目に見える像も同じ位置であるため、両目を用いて、この像を見たときの焦点位置は、表示画面上に位置する(図14(a))。結果として表示される像は表示画面上に位置する。
一方、3D表示モードのステレオモードがオフの場合において、左目に見える像はプレーンオフセットが0の場合に比べて左側の位置に見えるようにする。このとき右目には液晶眼鏡500により何も見えないようにする。一方、右目に見える像は、オフセットが0の場合に比べて右側の位置に見えるようにする、このとき左目には液晶眼鏡500により何も見えないようにする(図14(b))。
液晶眼鏡500により左目に像が見える状態と、右目に像が見える状態と互に短い時間間隔で切り替えると、人間の両目は表示画面よりも奥の位置に焦点位置を、合わせようとし、結果として表示画面よりも奥の位置に像があるように錯覚を起こす(図14(c))。
以上の説明は、グラフィクスプレーンに書き込まれたグラフィクスイメージについて説明をしたが、インタラクティブグラフィクスプレーン、ビデオプレーン、バックグラウンドプレーンについて上述のオフセットの概念を適用すれば同様のことが言えるのは言うまでもない。
(飛出し度合/奥行きのもたらし方)
図15は、正と負のプレーンオフセットの見え方の違いの一例を示す図である。
同図(a)(b)において、手前の方は、ライトビュー出力時にシフトしたシフト後のグラフィクスプレーンを用いて出力されるライトビュー用のグラフィクスイメージを示す。奥の方は、レフトビュー出力時にシフトしたシフト後のグラフィクスプレーンを用いて出力されるレフトビュー用のグラフィクスイメージを示す。
本図(a)は、プレーンオフセットの符号が正(レフトビュー用のグラフィクスイメージを右方向へずらし、ライトビュー用のグラフィクスイメージを左方向へずらす)である場合を示す。プレーンオフセットが正の値であると、図13に示したようにレフトビュー出力時の字幕がライトビュー出力時の字幕より右の位置に見えるようになる。つまり、輻輳点(焦点位置)がスクリーンより手前にくるので、字幕も手前に見えるようになる。
本図(b)は、プレーンオフセットの符号が負である場合を示す。負の値であると、図14に示したように、レフトビュー出力時の字幕がライトビューの出力時の字幕より左の位置に見えるようになる。つまり、輻輳点(焦点位置)がスクリーンより奥にゆくので、字幕も奥に見えるようになる。
以上で、プレーンオフセットの正と負の切り替えによって、字幕が表示画面の位置よりも飛び出るか奥にゆくかを変化する方法についての説明を終える。
以上の説明から、プレーンシフトにおけるプレーンオフセットによって、平面的な画像が表示画面よりも手前に表示されたり奥に表示されたりするように見えることが判った。しかしながら、プレーンシフトの対象となる字幕グラフィクスの大きさは固定化されている訳ではなく、対話性の向上のため、動画像の拡大縮小などの処理に伴って変動することが一般的である。
通常の再生においては、動画像をフルスケールで、字幕グラフィックスをフルスケールの動画像に対応したサイズで表示しているのに対し、メニュー画面に切り換えた場合、動画像を縮小して表示するとともに、字幕グラフィックスを縮小した動画像の大きさに応じたサイズに変更して表示するとともに、メニュー画面に必要なGUIを表示する必要がある。このように、動画像に対して対話性実現のためのスケーリングがなされた場合、プレーンシフトにおけるプレーンオフセットをどのように定めるかについて説明する。図17は、動画像に対してスケーリングがなされた場合に、ユーザによって視聴される立体視画像を示す。
表示モードが3DでビデオプレーンのステレオモードがONである場合において、動画像について、スケーリングFactor“1/2”のスケーリングがなされれば、横幅、縦幅が1/2になり、最終的には1/4の面積をもつ動画像が立体表示されることがわかる。
このとき、表示モードが3DでビデオプレーンのステレオモードがONである場合において、レフトビュー用のビデオストリームとライトビュー用のビデオストリームにより再生される像というのはそれぞれ、見える角度が異なる像であるため、スケーリングFactorによって、スケーリングがなされれば、立体表示による飛び出し具合もスケーリングFactorに応じて動的に変化する。
しかしながら、表示モードが3DでイメージプレーンのステレオモードがOFFである場合では、スケーリングFactorによって、イメージプレーンの字幕のスケーリングを行った場合において、イメージプレーンにプレーンオフセットが“0“でない値に設定がされていると、このプレーンオフセットはスケーリングによって動的に変化しないため、合成画像において、字幕が飛び出た感の強いものとなり、視聴者は違和感を覚える。
この点は、表示モードが3DでインタラクティブグラフィックスプレーンのステレオモードがOFFである場合においても同様のことが言える。
簡単な例を用いて説明をする。
図18は、表示モードが3DでビデオプレーンのステレオモードがON、表示モードが3DでイメージプレーンのステレオモードがOFFである場合において、イメージプレーンのプレーンオフセットをビデオのスケーリングに応じて変えなければどのようなことが起こるのかを説明するための図である。
図において、円形で示したものはレフトビュー用のビデオストリームとライトビュー用のビデオストリームにより再生されて、人の目に見える仮想的な立体像をX-Z平面から見たときの一例を示すもの、この例では立体的な像は表示画面よりも手前に表示されている。
また字幕が仮想的に見える位置というのは、仮想的な立体的像よりも手前に見えるようイメージプレーンのオフセットが調節されている位置であると仮定する。
図18(a)はフルスクリーン表示としたときの場合を示し、図18(b)はビデオを縮小表示したときの場合を示す。ビデオを縮小表示する場合におけるビデオの飛び出しの度合いは、縮小の度合いに応じて動的に変化をする。しかし、字幕が仮想的に見える位置というのはイメージプレーンのオフセットによって与えられる固定的な値であり、縮小処理によってオフセットが変化することはないので、スケーリングに応じてイメージプレーンのオフセットを変えないと、字幕の位置が妙に飛び出たように見えてしまう。
図18に示した飛び出し度合を模式的に示した一例が図19である。
本実施形態に係る再生装置は、この技術的課題に着目し、解決する構成を提供するものである。
具体的には、本実施形態に係る再生装置は、ビデオのスケーリングに応じてイメージプレーンのオフセットを動的に調整するようにしたことを特徴とする。具体的には図18(c)に示すようにビデオを縮小表示した場合、イメージプレーンのオフセットを調整(この例では小さくする)ことにより、字幕が仮想的に見える位置をより表示画面側に近づける。
図19は、本実施の形態の処理を行わなかった場合、つまり、動画像の縮小時にコンテンツ、あるいはユーザから指定されたスケーリング前のプレーンオフセットをそのままプレーンシフトに適用した場合に表示される立体視画像を示す。
対照的に、スケーリング前の動画像との合成に用いられたプレーンオフセットDにスケーリングFactorを乗じたプレーンオフセットEを、イメージプレーンのプレーンシフトに適用すると、イメージプレーンにおける画素の飛び出し度合としての意味をもつプレーンオフセットDにスケーリングFactorが乗じられるので、飛出し度合が小さくなる。そうするとスケーリングがなされた人物像の近辺にまで、字幕を引き寄せることができる。こうすることで、スケーリングがなされた人物像の近くに字幕が存在することになり、人物像と字幕との飛び出し具合のアンバランス感は解消される。
図20は、本実施の形態の処理を行った場合、つまりスケーリング倍率が乗じられたプレーンオフセットを、イメージプレーンのプレーンシフトに適用した場合に表示される立体視画像を示す。
図20は、図19とは異なりスケーリングがなされた人物像の近くに字幕が存在することになり、人物像と字幕との飛び出し具合のアンバランス感は解消される。
以上のようにして、アンバランス感を解消するには、スケーリングFactorを考慮して、最適なプレーンオフセットを算出する仕組みをプレーンシフトエンジン20内に設ける必要がある。このように、スケーリングFactorを考慮して、最適なプレーンオフセットを算出する仕組みを組込んだのが、図21におけるプレーンシフトエンジン20である。以下、図21を参照しながら、プレーンシフトエンジン20について説明する。
図21は、本実施形態に係る再生装置200のプレーンシフトエンジン20の内部構成の一例を示した図である。本図に示すように、プレーンシフトエンジン20は、オフセット値保存部41、スケーリングFactor保存部42、プレーンオフセット演算部43、シフト部44から構成される。
(オフセット値保存部41)
オフセット値保存部41は、オフセット設定部21からコンテンツ、あるいはユーザから指定されたオフセット値を格納する。
(スケーリングFactor保存部42)
スケーリングFactor保存部42は、スケーリング前からの倍率情報を保存する。例えば、スケーリングしていない場合は“1”、半分の場合は1/2、2倍に拡大する場合は“2”などという値を保持する。
(プレーンオフセット演算部43)
プレーンオフセット演算部43は、オフセット値保存部41に保存されたオフセット値を基にスケーリングや画面サイズを考慮して、シフト部44によるシフトを行うシフト量をピクセル単位に変換する計算を実行する。具体的な実装例で言えば、スケーリングFactorが“1/2”と指定された場合は、オフセット値保存部41に保存されたオフセット値に、スケーリングFactor保存部42に保存されたスケーリング倍率を乗じた値を新しい“プレーンオフセットE”として得る。
(演算結果の扱い)
次に、演算結果における小数点以下の扱いについて説明する。プレーンオフセット演算部43による演算は、スケーリングFactorとの乗算を伴うものであり、この場合、小数点以下の数値の扱いが問題となる。何故なら、シフト量は画素の数に応じた数分シフトするため、シフト量は整数でなければならないからである。プレーンオフセット演算部43が演算を行うに当たって、演算結果に小数点以下の数値が出現した場合、その小数点以下の数値を、次の整数に繰り上げることにする。例えばプレーンオフセット演算部43による演算結果が“3.2“である場合、演算結果を“4”にすることを意味する。
このように、演算結果における小数点以下の部分を、次の整数に繰り上げる演算を、“Ceil演算”という。本実施形態において、スケーリングFactorとの乗算を伴う演算を実行する場合、その演算結果に対してCeil演算を実行し、演算結果における小数点以下の部分を、次の整数に繰り上げるものとする。
(解像度維持の要求による影響)
次に、アプリケーションからの解像度維持の要求による影響について述べる。プレーンオフセット演算部43は、スケーリング時のKEEP_RESOLUTION設定時であっても、スケーリングFactorに応じたシフト量の計算を実行する。KEEP_RESOLUTION設定とは、スケーリング命令時にインタラクティブグラフィクスプレーンの拡大/縮小を行なわずに、ビデオプレーンのみ拡大/縮小を行う機能である。そうすることにより、KEEP_REOLUTION時もビデオの奥行きと同期した字幕の奥行きの変更が可能となる。
(シフト部44)
シフト部44は、プレーンオフセット演算部43が計算した値を基にイメージプレーンの横軸へのシフティングを行う。
図22は、1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、字幕・GUIを含むグラフィクスの合成画像とを示す図である。
手前はスケーリングFactor=1/1のL画像、R画像の組みを示し、真ん中はスケーリングFactor=1/2のL画像、R画像の組み、一番後ろは、スケーリングFactor=1/4のL画像、R画像の組みを示す。
例えばスケーリングFactor=1/2、1/4とした場合には、表示画面の左上の位置にスケーリングを行なった合成画像を表示したときの例を示すものである。
スケーリングFactor=1/2では、縦画素数及び横画素数が、1/2になっており、画面の左端に小さく表示されていることがわかる。スケーリングFactor=1/4では、縦画素数及び横画素数が、1/4になっており、画面の左端に小さく表示されていることがわかる。
図22では、字幕・GUIが合成された動画像がスケーリングの対象になったが、スケーリングを伴ったGUI処理では、GUIはフル画面表示による表示に供され、GUIのフル画面表示のうち、左上領域に合成画像が配置される。GUIは、左上領域に表示する字幕・動画像の合成画像を表示している部分以外の部分に主として描画するようにした場合、GUIはスケーリングの対象から除外するような構成となり、字幕がビデオと合成された合成画像のみがスケーリングの対象になる。
また、GUIをBD-Jアプリケーションが描画するインタラクティブグラフィックスデータの一例として説明をしているが、BD-Jアプリケーションが描画するインタラクティブグラフィックスデータはGUI以外にも、動画像と連動するアニメーションといったグラフィックス画像も含まれる。
このような場合において、BD-Jアプリケーションが描画するインタラクティブグラフィックスデータは、字幕、動画像と同様にスケーリングの対象とすれば、字幕・動画像の縮小に応じて連動して縮小するように構成をしても良い。この場合には図22の黒い部分にはバックグラウンドプレーンに格納された背景データが表示されることになる。
図22の右目画像、左目画像ではスケーリング前の合成構成に比べて、スケーリング後はビデオプレーンのサイズに応じて字幕のシフト量が調整されていることが理解できる。これにより立体感の差が激しくなることを防げ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
図24は、1/1、1/2、1/4という3つのスケーリングFactorと、各スケーリングFactorが適用された場合の、ビデオと字幕グラフィクスの合成画像とを示す図である。
スケーリングFactorが1/1である場合、GUIはが存在しないが、スケーリングFactor=1/2であれば、GUIが表示されていることがわかる。テレビ400の画面のうち右半分は、映画作品の監督によって記述されたディレクターズコメントcm1を表し、テレビ400の画面のうち下半分は、ネクストスキップ、プレビアススキップを受け付けるボタン部材bn1、メニューコールを受け付けるボタン部材bn2、戻る操作を受け付けるボタン部材bn3、ネットワーク接続を受け付けるボタン部材bn4を含む。これらは、図1に示したものと同一である。
スケーリングの対象が、字幕グラフィクスを合成した動画像であれば、プレーンシフトの対象はイメージプレーンのみとなり、プレーンオフセットEの算出対象も、イメージプレーンにおけるプレーンオフセットEのみとなる。
以上がプレーンシフトエンジン20についての説明である。続いて、プレーンシフトの対象となるイメージプレーンの詳細について説明する。最初に、図26を用いて、イメージプレーンの一般構成を説明し、次に、このイメージプレーンにおいて、画素の移動がどのように行われるかについて説明する。
図26は、イメージプレーン8の内部構成の一例を示す。解像度が1920×1080に設定されている場合、同図(a)に示すように、イメージプレーン8は横1920×縦1080の、8ビット長の記憶素子からなる。これは1920×1080の解像度で、1画素当たり8ビットのピクセルコードを格納できるメモリアロケーションを意味する。記憶素子に記憶されている8ビットのピクセルコードは、カラールックアップテーブルを用いた色変換によって、Y値、Cr値、Cb値に変換される。このカラールックアップテーブルにおける、ピクセルコードと、Y値、Cr値、Cb値との対応関係は、字幕データ内のパレット定義セグメントによって規定される。
同図(b)は、イメージプレーン8に格納されている画素データを示す。本図に示すように、イメージプレーン8に格納されているグラフィクスデータは、前景部分(字幕“I love“を構成している部分)にあたる画素データ、背景部分にあたる画素データから構成される。ここで背景部分にあたる記憶素子には、透明色を示すピクセルコードが格納されており、この部分には、ビデオプレーンとの合成時において、ビデオプレーンにおける動画像が透けて見えるようになる。一方、前景部分にあたる記憶素子には、透明色以外を示すピクセルコードが格納されており、この透明色以外のY,Cr,Cb値によって、字幕が描かれることになる。合成部15によるプレーン合成時において、透明画素にあたる部分には、字幕よりも下の位置にあるバックグラウンドプレーンに格納された背景画像またはビデオプレーンに格納されたビデオの内容が透けて見えるようになり、かかる透明部分の存在によって、プレーン合成が可能になる。
図27は、右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データを示す。(a)は、シフト前の画素データであり、(b)は右方向のシフト後の画素データである。ここで、シフト量が15画素であるとすると、字幕文字“I love you”の“y“が移動して、画面から見えなくなっていることがわかる。(c)は、左方向のシフトがなされた後の画素データである。ここでシフト量が15画素であると、字幕文字“I love”に後続する字幕文字“you”のうち、“o”の文字が、現れていることがわかる。
以上がイメージプレーン8の内部構成と、そのシフト前後の画素データの配置の説明である。次に、インタラクティブグラフィクスプレーン10の内部構成と、そのシフト前後の画素データの配置について説明する。
図28は、インタラクティブグラフィクスプレーン10の内部構成を示す。解像度が1920×1080に設定されている場合、(a)に示すように、インタラクティブグラフィクスプレーン10は横1920×縦1080の32ビット長の記憶素子からなる。インタラクティブグラフィクスプレーン10は、1920×1080の解像度で、1画素当たり32ビットのR,G,B,α値を格納できるメモリアロケーションをもつ。記憶素子に記憶される32ビットのR,G,B,α値は、8ビットのR値、8ビットのG値、8ビットのB値、8ビットの透明度αから構成される。
(b)は、インタラクティブグラフィクスプレーン10に格納されている画素データを示す。本図に示すように、インタラクティブグラフィクスプレーン10に格納されているグラフィクスデータは、前景部分(前後チャプターへのスキップ操作を受け付けるGUI)にあたる画素データ、背景部分にあたる画素データから構成される。ここで背景部分にあたる記憶素子には、透明色を示すα値が格納されており、この部分には、ビデオプレーンとの合成時において、イメージプレーンの字幕やビデオプレーンにおける動画像が透けて見えるようになる。一方、前景部分にあたる記憶素子には、透明色以外を示すR,G,B値が格納されており、この透明色以外のR,G,B値によって、グラフィクスが描かれることになる。
合成部15によるプレーン合成時において、透明画素にあたる部分には、バックグラウンドグラフィクスプレーン、ビデオプレーン、イメージプレーン8の内容が透けて見えるようになり、かかる透明部分の存在によって、プレーン合成が可能になる。
以上で、右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データについての説明を終える。
図29は、右方向のシフト、左方向のシフトがなされた後の、前景領域の画素データ及び背景領域の画素データを示す。本図(a)は、シフト前の画素データであり、本図(b)は右方向のシフト後の画素データである。この場合、前後チャプターへのスキップ操作を受け付けるGUIが右方向に移動していることがわかる。本図(c)は、左方向のシフトがなされた後の画素データである。前後チャプターへのスキップ操作を受け付けるGUIが左方向に移動していることがわかる。
図30は、イメージプレーン8におけるプレーンシフトの処理手順を示す図である。
(a)は、イメージプレーン8から生成された、左方向シフト後のグラフィクスプレーンと、右方向シフト後のグラフィクスプレーンとを示す。
(b)は、右方向のシフトを示す。本図に示すように水平方向の右方向へのシフト方法は次の、(1-1)(1ー2)(1ー3)のようにして行う。(1-1).イメージプレーン8の右端領域を切り取る。(1-2).イメージプレーン8に存在する画素データの位置を、上述したように右へ水平方向にプレーンオフセットEに示されるシフト量だけずらす。(1-3).イメージプレーン8の最も左端に、透明領域を追加する。
(c)は、左方向のシフトを示す。本図に示すように水平方向の左方向へのシフト方法は次の、(2-1)(2ー2)(2ー3)のようにして行う。(2-1).イメージプレーン8の左端領域を切り取る。(2-2).イメージプレーン8における各画素データの位置を左へ水平方向にプレーンオフセットEに示されるシフト量だけずらす。(2-3).イメージプレーン8の右端に透明領域を追加する。
続いて、プレーンオフセットの正負の意味合いについて説明する。
3D表示モード中、かつイメージプレーン8のステレオモードがOFFの場合、再生装置はプレーンオフセットEに示されるシフト量に基づいてプレーンを次のように処理した上で合成を行う。
プレーンオフセットEが正の符号が設定されている場合はプレーンの合成の前にレフトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ右にシフトする。そして、ライトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ左にシフトする。
プレーンオフセットEが負の符号が設定されている場合はプレーンの合成の前にレフトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ左にシフトする。そして、ライトビュー用のイメージプレーン8をプレーンオフセットEに示されるシフト量の分だけ右にシフトする。
図31は、インタラクティブグラフィクスプレーン10におけるプレーンシフトの処理手順を示す図である
(a)は、インタラクティブグラフィクスプレーン10から生成された、左方向シフト後のグラフィクスプレーンと、右方向シフト後のグラフィクスプレーンとを示す。
(b)は、右方向のシフトを示す。本図に示すように水平方向の右方向へのシフト方法は次の、(1-1)(1ー2)(1ー3)のようにして行う。(1-1).インタラクティブグラフィクスプレーンの右端領域を切り取る。(1-2).インタラクティブグラフィクスプレーンに存在する画素データの位置を、上述したように右へ水平方向にプレーンオフセットEに示されるシフト量だけずらす。(1-3).インタラクティブグラフィクスプレーンの最も左端に、透明領域を追加する。
(c)は、左方向のシフトを示す。本図に示すように水平方向の左方向へのシフト方法は次の、(2-1)(2ー2)(2ー3)のようにして行う。(2-1).インタラクティブグラフィクスプレーンの左端領域を切り取る。
(2-2).インタラクティブグラフィクスプレーンにおける各画素データの位置を左へ水平方向にプレーンオフセットEのシフト量分だけずらす。(2-3).インタラクティブグラフィクスプレーンの右端に透明領域を追加する。
プレーンシフトにあたって、右端又は左端から切り取られる領域、右端又は左端に追加される領域の大きさについて説明する。上述したようなシフトにおけるプレーンオフセットは、右目と、左目との視差に応じた値である。ということは、グラフィクスプレーンの端部から切り取られる領域、グラフィクスプレーンの端部に追加される透明領域の横画素数は、プレーンオフセットEに、相当する画素数でなければならない。
よってグラフィクスプレーンの端部から切り取られる領域の横画素数は、プレーンオフセットEのシフト量に相当する画素数になる。また、透明領域の縦画素数は、グラフィクスプレーンの高さを示す画素数になる。
同様に、グラフィクスプレーンの端部に追加される透明領域の横画素数は、プレーンオフセットEのシフト量に相当する画素数になる。この透明領域の縦画素数は、グラフィクスプレーンの高さを示す画素数になる。
以上で、イメージプレーン8、インタラクティブグラフィクスプレーン10におけるプレーンシフトの処理手順についての説明を終える。次に、プレーンオフセットがもつ符号の正負の意味合いについて説明する。
表示モードが3Dである場合であって、かつグラフィクスプレーンのステレオモードがOFFの場合、再生装置はプレーンオフセットに基づいてプレーンを次のように処理した上で合成を行う。
プレーンオフセットEが正の符号が設定されている場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ右にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ左にシフトする。
プレーンオフセットEが負の符号が設定されている場合はプレーンの合成の前にレフトビュー用のグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ左にシフトする。そして、ライトビューのグラフィクスプレーンをプレーンオフセットEのシフト量の分だけ右にシフトする。
(グラフィクスプレーンの記憶素子における画素データの移動)
上述したようなシフトによって、グラフィクスプレーンの記憶素子における画素データが、どのように移動するかを示す。グラフィクスデータは、1920×1080、1280×720といった解像度の画素データから構成されている。
図32は、グラフィクスプレーンに格納されている画素データを示す図である。本図において、四角枠は、32ビット、又は、8ビットの情報を記憶する記憶素子であり、0001,0002,0003,0004,07A5,07A6,07A7,07A8,07A9,07AA,07ABといった16進数の数値は、MPUのメモリ空間において、これらの記憶素子に連続的に割り当てられるアドレスである。また、記憶素子中の(0,0)(1,0)(2,0)(3,0)(1916,0)(1917,0)(1918,0)(1919,0)といった数値は、記憶素子内に、どの座標の画素データが格納されているかを示す。
ここでは、座標(0,0)に存在する画素データがアドレス0001の記憶素子に格納されており、座標(1,0)に存在する画素データがアドレス0002の記憶素子に格納されており、座標(1919,0)に存在する画素データがアドレス07A8の記憶素子に格納されており、座標(0,1)に存在する画素データがアドレス07A9の記憶素子に格納されている。つまり、グラフィクスを構成する複数のラインが、連続アドレスになるように、グラフィクスデータが格納されていることがわかる。こうすることで、これらの連続アドレスが付された記憶素子に対して順次、DMA転送を行うことで、これらの画素データをバースト的に読み出すことが可能になる。
図33は、シフトがなされた後のグラフィクスプレーンの格納内容を示す。
同図(a)は、プレーンオフセットEが“3”に設定されていて、右方向にシフトされたグラフィクスプレーンを示す。プレーンオフセットEが“3“であるから、アドレス0004の記憶素子には、グラフィクスプレーン座標系における座標(0,0)の画素データが、アドレス0005の記憶素子には、グラフィクスプレーン座標系における座標(1,0)の画素データが、アドレス0006の記憶素子には、グラフィクスプレーン座標系における座標(2,0)の画素データが格納されていることがわかる。
またアドレス07ACの記憶素子には、グラフィクスプレーン座標系における座標(0,1)の画素データが、アドレス07ADの記憶素子には、グラフィクスプレーン座標系における座標(1,1)の画素データが、アドレス07AEの記憶素子には、グラフィクスプレーン座標系における座標(2,1)の画素データが格納されていることがわかる。
同図(b)は、プレーンオフセットEが“3”に設定されていて、左方向にシフトされたグラフィクスプレーンを示す。プレーンオフセットEが“3“であるから、アドレス0001の記憶素子には、グラフィクスプレーン座標系における座標(3,0)の画素データが、アドレス0002の記憶素子には、グラフィクスプレーン座標系における座標(4,0)の画素データが、アドレス0003の記憶素子には、グラフィクスプレーン座標系における座標(5,0)の画素データが格納されていることがわかる。
またアドレス07A9の記憶素子には、グラフィクスプレーン座標系における座標(3,1)の画素データが、アドレス07AAの記憶素子には、グラフィクスプレーン座標系における座標(4,1)の画素データが、アドレス07ABの記憶素子には、グラフィクスプレーン座標系における座標(5,1)の画素データが格納されていることがわかる。
以上のように、シフトされたグラフィクスプレーンは、グラフィクスプレーンにおける各画素データの座標が、本来の座標から右方向、左方向に、プレーンオフセットEに示される画素数だけずれていることがわかる。
グラフィクスデータを構成する各画素データが配置される記憶素子のアドレスを、所定のアドレスだけ変化させることで、グラフィクスプレーンのシフトは実現することができる。当然であるが、実際に、画素データが配置される記憶素子のアドレスを変化させなくても、これと等価な処理であるなら、グラフィクスプレーンのシフトを実現することは可能になる。
以上で、シフトがなされた後のグラフィクスプレーンの格納内容についての説明を終える。
上述したように、プレーンシフトはメモリにおいて、画素の座標をどのように移動させるかという制御で実現されるものであり、いわば、再生装置における組込みソフトウェアによって実現されるものである。対照的に、BD-ROMから供給される、再生制御のためのプログラムは、上述したようなJava言語で記述されたバイトコードアプリケーションなので、このバイトコードアプリケーションの実行主体が、再生装置200に存在することになる。以降、バイトコードアプリケーションを実行する主体である、BD-Jプラットフォーム部22の内部構成について説明する。
図34は、BD-Jプラットフォーム部の内部構成を示す図である。本図に示すようにBD-Jプラットフォーム22は、ヒープメモリ31、バイトコードインタプリタ32、ミドルウェア33、クラスローダ34、アプリケーションマネージャ35から構成される。
(ヒープメモリ31)
ヒープメモリ31は、システムアプリケーションのバイトコード、BD-Jアプリケーションのバイトコード、システムアプリケーションが利用するシステムパラメータ、BD-Jアプリケーションが利用するアプリケーションパラメータが配置されるスタック領域である。
(バイトコードインタプリタ32)
バイトコードインタプリタ32は、ヒープメモリ31に格納されているBD-Jアプリケーションを構成するバイトコード、システムアプリケーションを構成するバイトコードをネィティブコードに変換して、MPUに実行させる。
(ミドルウェア33)
ミドルウェア33は、組込みソフトウェアのためのオペレーティングシステムであり、カーネル、デバイスドライバから構成される。カーネルは、BD-Jアプリケーションからのアプリケーションプログラミングインターフェイス(API)のコールに応じて、再生装置特有の機能をBD-Jアプリケーションに提供する。また、割込信号により割込ハンドラ部を起動する等のハードウェア制御を実現する。
(クラスローダ34)
クラスローダ34は、システムアプリケーションの1つであり、JARアーカイブファイルに存在するクラスファイルからバイトコードを読み出して、ヒープメモリ31に格納することにより、BD-Jアプリケーションのロードを行う。
(アプリケーションマネージャ35)
アプリケーションマネージャ35は、システムアプリケーションの1つであり、BD-Jオブジェクト内のアプリケーション管理テーブルに基づき、BD-Jアプリケーションを起動したりBD-Jアプリケーションを終了したりする等、BD-Jアプリケーションのアプリケーションシグナリングを行う。
以上で、BD-Jプラットフォーム部の内部構成についての説明を終える。
上記レイヤモデルにおいて表示モード設定イニシャル表示設定部28は、プラットフォーム部の下位のレイヤーに存在しており、BD-Jプラットフォーム部に供せられるカレントタイトルにおけるBD-Jオブジェクトに基づき、表示モード、解像度の設定を行う。
(表示モード記憶部29の内部構成)
表示モード記憶部29は、以上のレイヤモデルから参照できる構造になっているので、表示モード記憶部29は、APIを通じて参照でき、且つ、バックグラウンドグラフィクスプレーン11、ビデオプレーン6、イメージプレーン8、インタラクティブグラフィクスプレーン10の各状態や設定を、明らかにできるような構成になっている。以降、表示モード記憶部29の構成について、図35を参照しながら説明する。
図35は、表示モード記憶部29における記憶内容を示す。
本図において表示モード記憶部29は、再生装置が2Dモードであるか、3Dモードであるかの表示モードの状態を示す情報に加え、バックグラウンドプレーン11設定、ビデオプレーン設定、イメージプレーン設定、インタラクティブグラフィクスプレーン設定を保存する。各プレーンの設定項目としては「解像度(図中の:YY×ZZ)」、ステレオモード(図中の:ON
or OFF)、THREE_Dの設定(図中の:ON or OFF)が保存されている。イメージプレーン8設定及びインタラクティブグラフィクスプレーン10設定については、以上の設定項目の他に、プレーンオフセットを“−63“から“+63”の範囲で設定することができる。
本図に示すように、イメージプレーン設定におけるプレーンオフセットと、インタラクティブグラフィクスプレーン設定におけるプレーンオフセットを異なる値に設定をすると、字幕グラフィックスと、GUIが表示されるように見えるZ軸上の位置が異なる位置となる。この場合、図21におけるオフセット値保存部はイメージプレーン設定におけるプレーンオフセットとインタラクティブグラフィクスプレーン設定におけるプレーンオフセットの2つを保存する構成となる。
表示モード記憶部29によってサポートされる解像度について説明する。
再生装置が2D表示モードである場合、イニシャル表示設定としてバックグラウンドプレーン11、ビデオプレーン6、イメージプレーン8、インタラクティブグラフィクスプレーン10は1920×1080、1280×720、720×576、720×480ピクセルの解像度をサポートする。
以上で、表示モード記憶部29における記憶内容についての説明を終える。
(表示モード設定イニシャル表示設定部28の実装)
表示モード設定イニシャル表示設定部28の実装について説明する。一個のタイトルが選択され、そのタイトルに対応するBD-Jオブジェクトが再生装置で有効になっている期間においても、動作中のアプリケーションが、ユーザオペレーションに応じてJMFプレーヤインスタンスをコールすることにより、新たなプレイリストの再生が開始されることがある。このように新たなプレイリストの再生が開始されれば、タイトル内で、表示モードを設定やり直す必要がある。
表示モード設定イニシャル表示設定部28の機能としては、タイトルが変化した際のタイトル間表示モード設定と、タイトル内でプレイリストが変化した際の表示モード設定とアプリケーションが明示的にAPIを呼び出して設定した場合の表示モード設定とをサポートせなばならず、具体的には、以下のフローチャートに示す処理手順をMPUに実行させるようなプログラムを作成して、再生装置に組み込むことで実装することができる。
図36は、タイトル切り替え時の表示モード設定の処理手順の一例を示すフローチャートである。本フローチャートは、ステップS21、ステップS22、ステップS23、ステップS26の判定結果に応じて、ステップS24、ステップS25、ステップS27の処理を選択的に実行する。
ステップS21は、自動再生プレイリストが存在するかどうかの判定であり、ステップS22は、直前の表示モードは3Dであるか否かの判定である。ステップS23は、選択されたタイトルの自動再生プレイリストが、1920×1080の3Dプレイリスト又は1280×720の3Dプレイリストであるかどうかの判定である。
自動再生プレイリストが存在しない場合、ステップS26においてBD-Jオブジェクトのデフォルト解像度がHD3D_1920×1080、HD3D_1280×720であるかどうかが判定され、もしYesであれば、ステップS25において、表示モードを3Dに設定し、BD-Jオブジェクトにおけるデフォルト解像度に応じて1920×1080、あるいは1280×720に設定する。もしNoであれば、ステップS27において表示モードを2Dに設定し、解像度をBD-Jオブジェクトにおけるデフォルト解像度に設定する。
自動再生プレイリストが存在しない場合、ステップS22において直前の表示モードが2Dであるかどうか、又は、ステップS23においてプレイリストが3Dプレイリストで、その解像度が1920×1080、1280×720であるがどうかを判定する。ステップS22、ステップS23のどちらかがNoであれば、ステップS24において表示モードを2Dに設定し、解像度を、自動再生プレイリストの解像度に設定する。
ステップS22がYes、ステップS23もYesと判定された場合、ステップS25において、表示モードを3Dに設定し、解像度を、自動再生プレイリストの解像度に応じて1920×1080、又は、1280×720に設定する。
以上で、タイトル間表示モード設定の処理手順についての説明を終える。
図37は、タイトル内表示モード設定の処理手順を示すフローチャートである。本フローチャートは、ステップS31、ステップS32という、2つのステップを直列的に接続したものである。まず、タイトル内表示モード設定はプレイリストの再生要求から始まる。プレイリスト再生要求を受け付けた時点で、ステップS31は、現在のステータス3Dかどうかの判定を行い、2Dであれば、ステップS34において表示モードを2Dに設定する。ステップS32は、再生要求のあったプレイリストが3Dプレイリストか否かを判定し、もし、3Dプレイリストであれば、ステップS33に移行し、表示モードを3Dにし、2Dプレイリストであれば、ステッステップS34に移行し、表示モードを2Dにする。
以上で、タイトル内表示モード設定の処理手順についての説明を終える。
(再生制御エンジン14の実装)
再生制御エンジン14は、何等かの要因によってカレントプレイリストが選択された際、そのカレントプレイリストの再生を行うものであり、具体的には、カレントプレイリストに対応するプレイリスト情報を静的シナリオメモリ13に読み出して、このプレイリスト情報のプレイアイテム情報によって参照されている3Dストリーム、2Dストリームを再生に供するという処理を実現せねばならず、具体的には、以下のフローチャートに示す処理手順を実行するようなプログラムを作成して再生装置に組み込み、MPUに実行させる必要がある。
図38は、BD-Jモードにおけるプレイリスト再生の主たる手順を示すフローチャートである。
ステップS40は、選択されたタイトルに関連するBD-Jオブジェクトに示される自動再生プレイリストの設定又はJMFプレーヤインスタンスの生成により、カレントプレイリスト番号が設定されたかどうかの判定であり、もし設定されれば、ステップS41において、カレントプレイリスト番号にて指示されているプレイリスト情報ファイルをシナリオメモリにロードし、ステップS42において、プレイリスト情報に、プレーンオフセットが存在すれば、プレーンオフセットが存在すれば、オフセット設定部はプレーンシフトエンジン19のプレーンオフセット値として設定する。そして、ステップS43においてタイトル内表示モード設定を行う。
ステップS44では、ロードされたプレイリスト情報における最初のプレイアイテム番号を、カレントプレイアイテム番号に設定する。ステップS45において、カレントプレイリスト情報において再生が許可されているPESストリームの中からカレントストリームを選択する。
ステップS46では、プレイアイテム情報に基づいて、どのストリーム番号を使うかを決定する。
ステップS47においてステップS43で判定した表示モードは、2Dであるか、又は3Dであるかの判定を行う。3Dであれば、ステップS49において3D表示モード時の3Dビデオストリームの再生を実行する。2Dであれば、ステップS48に移行する。
ステップS48は、カレントストリーム番号で指示されているビデオストリーム及び字幕ストリームは、2Dであるか、3Dであるかの判定である。ステップS48で2Dと判定された場合、ステップS51において2D表示モードにおける2DAVストリームの再生を実行する。3Dと判定された場合、ステップS50において2D表示モードの3Dビデオストリームの再生を実行する。最後に、本図の“終了”に到達した時点でプレイリストの再生開始を行う。
図39は、プレイアイテム情報に基づく再生手順を示すフローチャートである。
ステップS60において、ビデオストリームに組み込まれているプレーンオフセットDをプレーンシフトエンジン20に設定し、ステップS61において、レフトビューストリームのパケットIDに対応するエントリマップを用いて、カレントPlayItem.In_Time及びカレントPlayItem.Out_TimeをStart_SPN[i]及びEnd_SPN[i]に変換する。
ライトビューストリームのパケットID[j]に対応するエントリマップ[j]を用いて特定されたSubPlayItemIn_Time、SubPlayItemOut_TimeをStart_SPN[j]、End_SPN[j]に変換する(ステップS62)。
パケットID[i]のTSパケット[i]をStart_SPN[i]からEnd_SPN[i]まで読み出すための読出範囲[i]に属するエクステントを特定し(ステップS63)、パケットID[j]のTSパケット[j]をStart_SPN[j]からEnd_SPN[j]まで読み出すための読出範囲に属するエクステントを特定する(ステップS64)。そしてステップS65において読出範囲[i],[j]に属するエクステントをアドレスの昇順にソートして、ステップS66においてソートされたアドレスを用いて、読出範囲[i],[j]に属するエクステントを連続的に読み出すよう、ドライブに指示する。
以上で、再生制御エンジン14についての説明を終える。
図40は、3DAVストリームの3D表示の処理手順を示すフローチャートである。本フローチャートは、ステップS602〜ステップS606からなるループを実行するというものである。このループは、左目用処理(ステップS602)、右目用処理(ステップS603)を順次実行するという処理を、フレーム出力が途絶えるまで(ステップS606でNo)継続するものである。
なお、カレントプレイリスト情報からプレーンオフセットDを抽出し、プレーンシフトエンジンに保存するという処理は図38におけるステップS42において既に行なわれている。
本ループにおいて、ステップS604は、プレーンオフセットDがオフセット値保存部41に設定されているかどうかの判定であり、もし設定されていなければステップS605をスキップするが、設定されていれば、ステップS605を実行する。ステップS605は、オフセット値保存部41に保存されたプレーンオフセットDを用いて、プレーンシフトエンジン20において、図21に示すオフセット演算部43によりオフセット演算を行い、プレーンオフセットEを更新するという処理である。
(表示モードが3Dである場合の3Dビデオストリームの処理手順)
現在の表示モードが3D表示モードであり、再生対象が3Dプレイリスト及び3Dストリームである場合、図41〜図42の処理手順を実行することになる。
図41は、例えば図40に示すステップS602(左目用処理)の具体的一例であり、詳しくは、表示モードが3Dの時の左目用処理の手順を示すフローチャートである。
図41におけるステップS701〜ステップS707は左目用処理である。
まず、ステップS701では、合成部16はレフトビューに使うレフトビューバックグラウンドプレーン11(図4に示す“(L)”の符号を付した領域)に書き込まれた背景データを取得する。レフトビューバックグラウンドプレーンにはBD-Jアプリケーションの描画命令により静止画デコーダ27bを通して描画された背景データが格納されている。
次に、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードして、ビデオプレーン6(図4の(L)を付したもの)に書き込んだ後に、合成部15は前記ビデオプレーン6(図4に示す(L)の符号を付した領域)に書き込まれたレフトビュー用のビデオデータを取得する(ステップS702)。
そして、ステップS703で合成部15は表示モード記憶部29にある、イメージプレーン設定のステレオモードがONであるかまたはOFFであるかを確認する(以後ステレオモードがONであるのかまたはOFFであるのかを確認することをステレオモードのフラグを確認すると称する)。ステレオモードがOFFの場合は、イメージデコーダ7aによりデコードしたレフトビューイメージをイメージプレーン8(図4に示す符号(L)を付した領域)に書き込んだ後にプレーンシフトエンジン20により左目用のシフト処理を施す(ステップS704a)。
ステレオモードがONの場合は、イメージデコーダ7aがデコードしたレフトビューイメージをイメージプレーン8(図4に示す符号(L)を付した領域)に書き込むが、イメージプレーン8(図4に示す符号(L)を付した領域)に書き込んだレフトビューイメージについて、左目用のシフト処理を施さない。何故ならばステレオモードがONの場合、レフトビューイメージとは見える角度の異なるライトビューイメージがイメージデコーダ7bを介してイメージプレーン(図4に示す符号(R)を付した領域)に書き込まれるからである(ステップS704b)。
ステップS704aまたはステップS704bによりイメージプレーン8の符号(L)を付したものには、イメージメモリ7に格納された左目用のイメージデータであって、イメージデコーダ7aによってデコードされたものが格納される。
次に、ステップS705で合成部15は表示モード記憶部29にある、インタラクティブグラフィクスプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合は、BD-Jアプリケーションはレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)にレフトビュー用インタラクティブグラフィクスを書き込み、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)からレフトビュー用インタラクティブグラフィクスを取得して、取得したレフトビュー用インタラクティブグラフィクスに対して、プレーンシフトエンジン20が左目用のシフト処理を施す(ステップS706a)。
ステレオモードがONの場合においては、BD-Jアプリケーションはレンダリングエンジン22aを利用して、左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)にレフトビュー用インタラクティブグラフィクスを書き込む。その後、表示のために左目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(L)を付したもの)からレフトビュー用インタラクティブグラフィクスを取得するが、レフトビュー用インタラクティブグラフィクスに対しては、左目用のシフト処理を施さない(ステップS706b)。
ステップS706a,ステップS706bでレフトビューインタラクティブグラフィクスが取得されたレフトビューインタラクティブグラフィクスプレーンには、BD-Jモード時においてBD-Jアプリケーションの描画命令によりレンダリングエンジン22aを通して描画されたデータが格納されている。
また、HDMVモード時において、レフトビューインタラクティブグラフィクスプレーンには、字幕ストリーム以外のグラフィクストリームから抽出されたグラフィクスデータのデコード結果が格納されることになる。
ステップS707ではステップS701のバックグラウンドプレーン11の(L)の符号を付したものに書き込まれた背景データ、ステップS702のビデオプレーンの(L)の符号を付したものに書き込まれたビデオデータ、ステップS704のイメージプレーンの(L)の符号を付したものに書き込まれた字幕データ、ステップS706のインタラクティブグラフィクスプレーンの(L)の符号を付したものに書き込まれたGUIデータを順に合成し、レフトビューとしてディスプレイへ出力する。
ステップS703、S705において、ステレオモードがOFFであると判定された場合、対応するプレーンにおいてシフト処理が施されたデータが合成の対象となる。そして、ディスプレイの出力のタイミングで左右処理記憶部のフラグを転換する。なお、S701〜S707の各処理は左目用の処理を施しているが、現在の処理が左目用の処理であるかどうかは、左右処理記憶部を参照することにより判定される。
次にS701〜S707の左目用の処理を完了した後に、右目用の処理を行なう。
図42は、例えば図40に示すステップS603(右目用処理)の具体的一例であり、詳しくは、表示モードが3Dのときの右目用処理の処理手順の一例を示すフローチャートである。図42におけるステップS801〜ステッステップS809は右目用処理である。ステップS801で合成部15は、表示モード記憶部29にある、バックグラウンドプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合はレフトビュー用の背景データをバックグラウンドプレーン11の(R)を付したものに書き込み、バックグラウンドプレーン11の(R)を付したものから背景データを取得する(ステップS802a)。ステレオモードがONの場合はライトビュー用の背景データをバックグラウンドプレーン11の(R)を付したものに書き込み、バックグラウンドプレーン11の(R)を付したものからライトビュー用の背景データを取得する(ステップS802b)。
次に、ステップS803で合成部15は表示モード記憶部29にある、ビデオプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合はレフトビュー用のビデオストリームをビデオデコーダ5aを用いてデコードして、ビデオプレーン6(図4の(R)を付したもの)に書き込んだ後に、合成部15は前記ビデオプレーン6(図4の(R)を付したもの)からレフトビュー用のビデオデータを取得する(ステップS804a)。ステレオモードがONの場合は、ビデオデコーダ5bを用いてライトビュー用のビデオストリームをデコードして、ビデオプレーン6(図4の(R)を付したもの)に書き込んだ後に、合成部15は前記ビデオプレーン6(図4の(R)を付したもの)からライトビュー用のビデオデータを取得する(ステップS804b)。
そして、ステップS805で合成部15は表示モード記憶部29にある、イメージプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合はイメージデコーダ7aがデコードしたレフトビューイメージをイメージプレーン8(符号(R)を付したもの)に書き込む。その後、イメージプレーン8の符号(R)を付したものに書き込まれたレフトビューイメージに対し、プレーンシフトエンジン20が右目用のシフト処理を施す(ステップS806a)。ステレオモードがONの場合は、イメージデコーダ7bがデコードしたライトビューイメージをイメージプレーン8(図4に示す符号(R)を付した領域)に書き込むものの、シフト処理を施さない。何故ならばステレオモードがONの場合、レフトビューイメージとは見える角度の異なるライトビューイメージがイメージデコーダ7bを介してイメージプレーン8(図4に示す符号(R)を付した領域)に書き込まれるからである(ステップS806b)。
ステップS806a,ステップS806bで取得したイメージプレーンにはイメージメモリ7に格納された字幕データであって、イメージデコーダ7(図4のイメージデコーダ7aまたは7b)によってデコードされたものが格納される。
次に、ステップS807で合成部15は表示モード記憶部29にある、インタラクティブグラフィクスプレーン設定のステレオモードのフラグを確認する。ステレオモードがOFFの場合は、BD-Jアプリケーションはレンダリングエンジン22aを利用して、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)にレフトビュー用インタラクティブグラフィクスを書き込む。そして右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)に書き込まれたレフトビュー用インタラクティブグラフィクスに対し、プレーンシフトエンジン20が右目用のシフト処理を施す(ステップS808a)。
ステレオモードがONの場合は、BD-Jアプリケーションはレンダリングエンジン22aを利用して、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)にライトビュー用インタラクティブグラフィクスを書き込むものの、プレーンシフトエンジン20は、右目用プレーン(図4のインタラクティブグラフィクスプレーン10において、符号(R)を付した領域)に書き込まれたライトビュー用インタラクティブグラフィクスに対し、シフト処理を施さない(ステップS808b)。
ステップS809ではステップS802のバックグラウンドプレーン11(符号(R)を付したもの)に書き込まれた背景データ、ステップS804のビデオプレーン6(符号(R)を付したもの)に書き込まれたビデオデータ、ステップS806のイメージプレーン8(符号(R)を付したもの)に書き込まれたイメージデータ、ステップS808のインタラクティブグラフィクスプレーンに書き込まれたGUIデータを順に合成する。
ステップS805、S807において、ステレオモードがOFFである場合には、対応するプレーンにおいてシフト処理がされたデータが合成の対象となる。そしてステップS806b、ステップS808bにおいて、合成結果を、ライトビューとしてディスプレイへ出力する。最後に、ステップS809において、ディスプレイの出力のタイミングで左右処理記憶部のフラグを転換する。なお、ステップS801〜S809の各処理は右目用の処理を施しているが、現在の処理が右目用の処理かどうかの判定は、左右処理記憶部19を参照することでなされる。
フレーム入力が継続している限り、図40に示すS602、S603、S604、S605(S604においてYesの場合)の処理が繰り返されることになる(ステップS606)。
以上で、表示モードが3Dのときのストリーム処理についての説明を終える。
なお、再生装置がAVストリームのヘッダ領域からプレーンオフセットDを取得する方法、かつ毎フレーム更新する実装をしている場合は、ステップS810の時点でオフセット設定部21によりプレーンシフトエンジン20のオフセットを次のフレームと対応した値に更新する必要がある。
図43(a)は、図41に示すステップS702、図42に示すステップS804aの具体的一例を説明するためのフローチャート図である。
まず、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードしてビデオデータを出力する(ステップS201)。
次にスケーリングFactorは“1“でないかどうかを判断する(ステップS202)。
この判断は、例えばBD-Jプラットフォーム22から指定された、スケーリングFactorーを参照し、参照した値に基づいて判断することにより、実現される。
本実施の形態では、プレーンシフトエンジン20内のスケーリングFactor保存部42に格納されたスケーリングFactor値を参照すればよいが、これに限定される必要はなく、スケーリングエンジン15内にBD-Jプラットフォーム22から指定された、スケーリングFactorを保存するスケーリングFactor保存部(図示せず)を備えるように構成しても良いし、プレーンシフトエンジン20内にスケーリングFactor保存部42を再生装置内であって、かつプレーンシフトエンジン20の外側に設け、スケーリングエンジン15、プレーンシフトエンジン20が再生装置内であって、かつプレーンシフトエンジン20の外側に設けたスケーリングFactor保存部42に保存されたスケーリングFactorを参照できるようにしても良い。
次にステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)デコードしたビデオデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーン6に書き込む(ステップS203)。
ここで、ステップS702の具体的処理においては、ステップS203は、ビデオプレーン6の符号(L)を付した領域に書き込むのに対し、ステップS804aの具体的処理においては、ステップS203は、ビデオプレーン6の符号(R)を付した領域に書き込む点が異なる。
例えばスケーリングFactorが1/2の場合には、例えば図22に示されるように表示画面の左上にビデオデータが表示されるようにビデオプレーンに書き込み、スケーリングFactorが1/4である場合には、例えば図22に示されるように表示画面の左上にビデオデータが表示されるようにビデオプレーンに書き込むことを意味する。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って表示位置を決めるようにしても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
ステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードしたビデオデータをビデオプレーン6に書き込む(S204)。
ここで、ステップS702の具体的処理においては、ステップS204は、ビデオプレーン6の符号(L)を付した領域に書き込むのに対し、ステップS804aの具体的処理においては、ステップS204は、ビデオプレーン6の符号(R)を付した領域に書き込む点が異なる。
ステップS204は、例えばスケーリングFactorが1/1の場合であり、例えば図22に示されるように表示画面にビデオデータが全画面表示されるようにビデオプレーンに書き込むことを意味する。
図43(b)は、図42におけるステップS804bの具体的一例を示すフローチャートである。
まず、ビデオデコーダ5bを用いてライトビュー用のビデオストリームをデコードしてビデオデータを出力する(ステップS201b)。
次にビスケーリングFactorは“1“でないかどうかを判断する(ステップS202)。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)デコードしたビデオデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーン6(符号(R)を付した領域)に書き込む(ステップS203b)。
ステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ビデオデコーダ5bを用いてライトビュー用のビデオストリームをデコードしたビデオデータをビデオプレーン6(符号(R)を付した領域)に書き込む(S204b)。
図16(a)は、図41に示すステップS704bの具体的一例を説明するためのフローチャート図である。図において、 まず、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードする(ステップS201c)。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。
次にステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)デコードしたイメージデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のイメージデータを表示画面の所定の位置に表示されるようにイメージプレーン8(図4の(L)を付した領域)に書き込む(ステップS203c)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)の左側図のようにビデオデータを表示画面の左上に寄せる際、字幕が対応する大きさで表示されるように字幕データをイメージプレーンに書き込むことになる。スケーリングFactorが1/4である場合には、例えば図22(a)の左側図のようにビデオデータを表示画面の左上に寄せる際、字幕が対応する大きさで表示されるように字幕データをイメージプレーンに書き込むことになる。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
その他にも、上述の処理において、拡大/縮小の処理は公知の技術を適用してもよい。
ステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(L)を付した領域)に書き込む(S204c)。
例えばスケーリングFactorが1/1の場合であり、例えば図22(c)の左側図のように表示画面にビデオデータが全画面表示されたときに対応する大きさの字幕データをイメージプレーン8に書き込むことになる。
図23(a)は、図42に示すステップS806bの具体的一例を説明するためのフローチャート図である。図において、まず、イメージデコーダ7bを用いてライトビュー用の字幕ストリームをデコードする(ステップS201e)。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、デコードしたイメージデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換がなされた水平ピクセル数、垂直ピクセル数のイメージデータが表示画面の所定の位置に表示されるようにイメージプレーン8(図4の(R)を付した領域)に書き込む(ステップS203e)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)右側図のようにビデオデータを表示画面の左上に寄せる際、字幕を対応する大きさで表示すべく、字幕データをイメージプレーンに書き込むことになる。スケーリングFactorが1/4である場合には、例えば図22(a)の右側図のように表示画面の左上にビデオデータを寄せて表示するにあたって、字幕データが同じ大きさで表示されるように、字幕データをイメージプレーンに書き込むことになる。
また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、イメージデコーダ7bを用いてライトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(R)を付した領域)に書き込む(S204e)。
例えばスケーリングFactorが1/1の場合であり、例えば図22(c)の右側に示されるように表示画面にビデオデータが全画面表示されたときに対応する大きさの字幕データをイメージプレーン8に書き込むことを意味する。
図16(b)は、図41に示すステップS706bの具体的一例を説明するためのフローチャート図である。図において、まず、レフトビュー用のインタラクティブグラフィクスデータを生成する(ステップS201d)。
レフトビュー用のインタラクティブグラフィクスデータの生成は、例えばBD-Jアプリケーションに含まれる描画プログラムに従って、生成すればよい。より詳細にはプログラムコードに従って計算により各画素の値を算出するのでも良いし、対応するレフトビュー用のJPEGグラフィックス画像データを仮想ファイルシステムを介して読み取られる仮想的なBD-ROM(BD-ROM100またはローカルストレージ1c)に予め記録しておき、BD-Jアプリケーションがこのレフトビュー用のJPEGグラフィックス画像データを読み取る構成であっても良い。このとき、レフトビュー用のJPEGグラフィックス画像データがエンコードされて記録されている場合、図示しないデコーダまたはイメージデコーダ7aによってデコードした後、読み取ればよい。
次にインタラクティブグラフィクスプレーンのスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。
次にステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換後の水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータが表示画面の所定の位置に表示されるように、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS203d)。
例えばスケーリングFactorが1/2の場合、GUI部品に対応するグラフィックスデータを1/2に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込み、スケーリングFactorが1/4である場合、GUI部品に対応するグラフィックスデータを1/4に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込むことになる。
また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータをBD-Jアプリケーションからの指定に従ってインタラクティブグラフィクスデータの表示位置を決めるようにしても良いし、所定の縮小率に応じて、インタラクティブグラフィクスデータの表示位置を予め決めておいても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
また、次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、生成したレフトビュー用のインタラクティブグラフィクスデータを、インタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS204d)。
例えばスケーリングFactorが1/1の場合であり、例えば全画面表示によりインターラクティブグラフィックスデータを表示する場合に対応する。
但し、インターラクティブグラフィックスプレーンのスケーリングFactorを考慮しない(つまり、インターラクティブグラフィックスプレーンのスケーリングFactorを常に1とする)のであれば、ステップS201dの後にステップS204dを行うようにし、ステップS202、ステップS203dは削除するようにすればよい、
例えば、インタラクティブグラフィクス画像がGUI部品に対応するグラフィクス画像である場合には、ステップS203dの処理において、表示画面において縮小したビデオ・字幕の合成画像が表示される部分以外にGUI部品に相当するインタラクティブグラフィクス画像の全画面表示がなされるように、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(符号(L)を付した領域)に書き込むよう構成することも可能である。
具体的には図24(b)において、スケーリングFactorが1/1で字幕とビデオ合成画像が左目から見える画像として表示されている状態(図24(b)の左側)において、例えばメニュー画面に切り換える入力を受け付けると、図24(b)に示すように、ビデオと字幕の合成画像のスケーリングFactorが1/2となり、表示画面左上に表示されるとともに、グラフィックス画像に対応するGUI画像、ディレクターコメントといったものがインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれ、このインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれた画像が更に合成され、左目用の合成画像となる(図24(a)の左側の図参照)
図23(b)は、図42に示すステップS808bの具体的一例を説明するためのフローチャート図である。図において、まず、ライトビュー用のインタラクティブグラフィクスデータを生成する(ステップS201f)。
ライトビュー用のインタラクティブグラフィクスデータの生成は、例えばBD-Jアプリケーションに含まれる描画プログラムに従って、生成すればよい。より詳細にはプログラムコードに従って計算により各画素の値を算出するのでも良いし、対応するライトビュー用のJPEGグラフィックス画像データを仮想ファイルシステムを介して読み取られる仮想的なBD-ROM(BD-ROM100またはローカルストレージ1c)に予め記録しておき、BD-Jアプリケーションがこのライトビュー用のJPEGグラフィックス画像データを読み取る構成であっても良い。このとき、ライトビュー用のJPEGグラフィックス画像データがエンコードされて記録されている場合、図示しないデコーダまたはイメージデコーダ7bによってデコードした後、読み取ればよい。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS202)。 ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータを表示画面の所定の位置に表示されるようにインタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS203f)。
例えばスケーリングFactorが1/2の場合には、GUI部品に対応するグラフィックスデータを1/2に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込み、スケーリングFactorが1/4である場合には、GUI部品に対応するグラフィックスデータを1/4に縮小して表示するようにインタラクティブグラフィックスプレーンに書き込むことになる。
また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータをBD-Jアプリケーションからの指定に従ってインタラクティブグラフィクスデータの表示位置を決めるようにしても良いし、所定の縮小率に応じて、インタラクティブグラフィクスデータの表示位置を予め決めておいても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、生成したライトビュー用のインタラクティブグラフィクスデータを、インタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS204f)。
例えばスケーリングFactorが1/1の場合であり、例えば全画面表示によりインターラクティブグラフィックスデータを表示する場合に対応する。
但し、インターラクティブグラフィックスプレーンのスケーリングFactorを考慮しない(つまり、インターラクティブグラフィックスプレーンのスケーリングFactorを常に1とする)のであれば、ステップS201fの後にステップS204fを行うようにし、ステップS202、ステップS203fは削除するようにすればよい。
例えば、インタラクティブグラフィクス画像がGUI部品に対応するグラフィクス画像である場合には、ステップS203fの処理において、表示画面において縮小したビデオ・字幕の合成画像を表示する部分以外に、GUI部品に相当するインタラクティブグラフィクス画像が全画面表示されるように、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(符号(R)を付した領域)に書き込む構成を採用することが可能となる。
具体的には図24(b)において、スケーリングFactorが1/1で字幕とビデオ合成画像が右目から見える画像として表示されている状態(図24(b)の右側に示す図)において、例えばメニュー画面に切り換える入力を受け付けると、図24(b)に示すように、ビデオと字幕の合成画像のスケーリングFactorが1/2となり、表示画面左上に表示されるとともに、グラフィックス画像に対応するGUI画像、ディレクターコメントといったものがインタラクティブグラフィックスプレーン(符号(R)を付した領域)に書き込まれ、このインタラクティブグラフィックスプレーン(符号(R)を付した領域)に書き込まれた画像が更に合成され、右目用の合成画像となる(図24(a)の右側の図参照)
図44(a)は、図41に示すステップS704aの具体的一例を説明するためのフローチャート図である。
まず、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードして字幕データを出力する(ステップS406)。
ステップS406においては、レフトビュー用の字幕ストリームをデコードする構成を説明するが、字幕ストリームとして左右の表示で同じ字幕ストリームを共有するような構成である場合には、左右の表示で共有する字幕ストリームを読み込めばよい。
スケーリングファクターは“1“でないかどうかを判断する(ステップS407)。 この判断は、例えばBD-Jプラットフォーム22から指定された、スケーリングFactorーを参照し、参照した値に基づいて判断することにより、実現される。
本実施の形態では、プレーンシフトエンジン20内にスケーリングFactor保存部42に格納されたスケーリングFactor値を参照すればよいが、これに限定される必要はなく、スケーリングエンジン15内にBD-Jプラットフォーム22から指定された、スケーリングFactorを保存するスケーリングFactor保存部(図示せず)を備えるように構成しても良いし、プレーンシフトエンジン20内にスケーリングFactor保存部42を再生装置内であって、かつプレーンシフトエンジン20の外側に設け、スケーリングエンジン15、プレーンシフトエンジン20が再生装置内であって、かつプレーンシフトエンジン20の外側に設けたスケーリングFactor保存部42に保存されたスケーリングFactorを参照できるようにしても良い。
ステップS407において、スケーリングFactorが“1“でないと判断した場合(ステップS407において、“Yes”と判定された場合)デコードした字幕データにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のイメージデータを表示画面の所定の位置に表示されるようにイメージレーン8(図4の(L)を付した領域)に書き込む(ステップS408)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)の左側図のようにビデオデータを表示画面の左上に寄せる際、字幕が対応する大きさで表示されるように字幕データをイメージプレーンに書き込み、スケーリングFactorが1/4である場合には、例えば図22(a)の左側図のようにビデオデータを表示画面の左上に寄せる際、対応する字幕が同じ大きさで表示されるように字幕データがイメージプレーンに書き込まれることになる。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数の字幕データを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS408において参照したスケーリングFactorを参照し、イメージプレーン8(具体的には図4において、(L)を付した領域)に格納した字幕データについて、左目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS409)。
次にステップS407において、スケーリングFactorが“1“であると判断した場合(ステップS407において、“No”と判定された場合)、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(L)を付した領域)に書き込む(ステップS410)。
例えばスケーリングFactorが1/1の場合であり、図22(c)の左側に示されるように表示画面にビデオデータが全画面表示されたとき、対応する大きさの字幕データがイメージプレーン8(図4の(L)を付した領域)に書き込まれることになる。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、イメージプレーン8(具体的には図4において、(L)を付した領域)に格納した字幕データについて、左目用のシフト処理を行う。これは、スケーリングFactorが1であるため、ステップS409における演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する、つまりオフセット値に相当する分シフトすることを意味する(ステップS411)。
図44(b)は 図42に示すステップS806aの具体的一例を説明するためのフローチャート図である。
まず、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードして字幕データを出力する(ステップS406)。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS407b)。
この判断は、例えばBD-Jプラットフォーム22から指定された、スケーリングFactorーを参照し、参照した値に基づいて判断することにより、実現される。
本実施の形態では、プレーンシフトエンジン20内にスケーリングFactor保存部42に格納されたスケーリングFactor値を参照すればよいが、これに限定される必要はなく、スケーリングエンジン15内にBD-Jプラットフォーム22から指定された、スケーリングFactorを保存するスケーリングFactor保存部(図示せず)を備えるように構成しても良いし、プレーンシフトエンジン20内にスケーリングFactor保存部42を再生装置内であって、かつプレーンシフトエンジン20の外側に設け、スケーリングエンジン15、プレーンシフトエンジン20が再生装置内であって、かつプレーンシフトエンジン20の外側に設けたスケーリングFactor保存部42に保存されたスケーリングFactorを参照できるようにしても良い。
ステップS407bにおいて、スケーリングFactorが“1“でないと判断した場合(ステップS407bにおいて、“Yes”と判定された場合)デコードした字幕データにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のイメージデータを表示画面の所定の位置に表示されるようにイメージプレーン8(図4の(R)を付した領域)に書き込む(ステップS408b)。
例えばスケーリングFactorが1/2の場合には、例えば図22(b)の右側図のように表示画面の左上にビデオデータを寄せて表示するにあたって、同じ大きさで字幕を表示するように字幕データをイメージプレーンに書き込み、スケーリングFactorが1/4である場合には、例えば図22(a)の右側図のように表示画面の左上にビデオデータを寄せて表示するにあたって、字幕データが同じ大きさで表示されるように字幕データをイメージプレーンに書き込むことになる。また、上述の説明においては、垂直ピクセル数に変換し、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにイメージプレーンに書き込むようにしたが、BD-Jアプリケーションからの指定に従って字幕データの表示位置を決めるようにしても良い。
また上述の処理において、拡大/縮小の処理は公知の技術を適用すればよい。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS408bにおいて参照したスケーリングFactorを参照し、イメージプレーン8(具体的には図4において、(R)を付した領域)に格納した字幕データについて、右目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS409b)。
また、ステップS407bにおいて、スケーリングFactorが“1“であると判断した場合(ステップS407bにおいて、“No”と判定された場合)、イメージデコーダ7aを用いてレフトビュー用の字幕ストリームをデコードした字幕データをイメージプレーン8(図4の(R)を付した領域)に書き込む(ステップS410)。
例えばスケーリングFactorが1/1の場合であり、図22(c)の右側のように表示画面にビデオデータを全画面表示する際、対応する大きさの字幕データがイメージプレーン8に書き込まれることになる。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、イメージプレーン8(具体的には図4において、(R)を付した領域)に格納した字幕データについて、シフト処理を行う。これは、スケーリングFactorが1であるため、ステップS409における演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する(ステップS411b)。
図25(a)は、図41に示すステップS706aの具体的一例を説明するためのフローチャート図である。図において、まず、レフトビュー用のインタラクティブグラフィクスデータを生成する(ステップS421c)。レフトビュー用のインタラクティブグラフィクスデータの生成は、ステップS201dに関する説明において、既に説明をしたので、ここでは詳細な説明を省略する。
但し、ステレオモードがOFFの状態であるため、予めGUI部品に対応するレフトビュー用のJPEGグラフィックス画像データ以外に、GUI部品に対応する同じJPEGグラフィックス画像データをレフトビュー用/ライトビュー用のJPEGグラフィックス画像データとして共有する構成であれば、ステップS421はこの共有するJPEGグラフィックス画像データを読み込むことになる。
次にスケーリングファクターは“1“でないかどうかを判断する(ステップS422)。判断の具体例としては、ステップS202の説明において既に説明をしているので、ここでは詳細な説明を省略する。
次に、ステップS422において、スケーリングFactorが“1“でないと判断した場合(ステップS422において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータを表示画面の所定の位置に表示されるようにインタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS423c)。
この具体例としては、ステップS203dの説明において既に説明をしているので、ここでは、詳細な説明を省略する。
プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS423cにおいて参照したスケーリングFactorを参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(L)を付した領域)に格納したインタラクティブグラフィクスデータについて、左目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS424c)。
次にステップS422において、スケーリングFactorが“1“であると判断した場合(ステップS422において、“No”と判定された場合)、生成したレフトビュー用のインタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(図4の(L)を付した領域)に書き込む(ステップS425c)。
プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(L)を付した領域)に格納したインタラクティブグラフィクスデータについて、左目用のシフト処理を行う。これは、スケーリングFactorが1であるため、ステップS424cにおける演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する、つまりオフセット値の値に応じたシフト処理を行う(ステップS426c)。
但し、インターラクティブグラフィックスプレーンのスケーリングFactorを考慮しない(つまり、インターラクティブグラフィックスプレーンのスケーリングFactorを常に1とする)のであれば、ステップS421dc後にステップS425cを行い、その後にステップS426cを行なうようにし、ステップS422c、ステップS423c、ステップS424cは削除するようにすればよい、
例えば、インタラクティブグラフィクス画像がGUI部品に対応するグラフィクス画像である場合には、ステップS203dの処理において、表示画面において縮小したビデオ、字幕の合成画像を表示する部分以外にGUI部品に相当するインタラクティブグラフィクス画像の全画面表示を行うよう、インタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(符号(L)を付した領域)に書き込む構成を採用することが可能となる。
具体的には図24(b)において、スケーリングFactorが1/1で字幕とビデオ合成画像が左目から見える画像として表示されている状態(図24(b)の左側)において、例えばメニュー画面に切り換える入力を受け付けると、図24(b)の左側に示すように、ビデオと字幕の合成画像のスケーリングFactorが1/2となり、表示画面左上に表示されるとともに、グラフィックス画像に対応するGUI画像、ディレクターコメントといったものがインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれ、このインタラクティブグラフィックスプレーン(符号(L)を付した領域)に書き込まれた画像が更に合成され、左目用の合成画像となる(図24(a)の左側の図参照)。
図25(b)は、図42における、ステップS808aの具体的処理の一例を説明するためのフローチャートである。図において、ステップS706aの具体的動作の一例の説明に用いた図に付した符号と同一のものは、同一またはこれに相当するものであるため、ここでは、詳細な説明を省略する。つまり、S421c、ステップ422の説明はここでは省略する。
次に、ステップS422において、スケーリングFactorが“1“でないと判断した場合(ステップS422において、“Yes”と判定された場合)、生成したインタラクティブグラフィクスデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のインタラクティブグラフィクスデータを表示画面の所定の位置に表示されるようにインタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS423d)。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値、ステップS408において参照したスケーリングFactorを参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(R)を付した領域)に格納したインタラクティブグラフィクスデータについて、右目用のシフト処理を行う。これは、演算(オフセット保存部の値(オフセット値)×スケーリングFactor)を行なった結果(小数点以下は切り上げる)に相当する分のオフセット値を用いてシフト処理を行うことに相当する(ステップS424d)。
また、次にステップS422において、スケーリングFactorが“1“であると判断した場合(ステップS422において、“No”と判定された場合)、生成したレフトビュー用のインタラクティブグラフィクスデータをインタラクティブグラフィクスプレーン10(図4の(R)を付した領域)に書き込む(ステップS425d)。
次に、プレーンシフトエンジン20のオフセット値保存部41に保存されたオフセット値を参照し、インタラクティブグラフィクスプレーン10(具体的には図4において、(R)を付した領域)に格納したインタラクティブグラフィクスデータについて、右目用のシフト処理を行う。これは、スケーリングFactorが1であるため、ステップS424cにおける演算(オフセット保存部の値(オフセット値)×スケーリングFactor)において、スケーリングFactorの値が1である場合の演算に相当する、つまりオフセット値に相当する分シフト処理を行うことに相当する(ステップS426d)。
以上のフローチャートは表示の度に、移動量の計算を行うものであったが、スケーリングがアプリケーションによってなされる場合は、そのコール時に、プレーンオフセットEを更新して、オフセット値保存部におけるプレーンオフセットを、新しいものに置き換える方が、シフト量算出のための計算回数を減らすことができて合理的である。
このような処理を可能とするために、再生装置のBDーJプラットフォーム22にスケーリングAPIを備えることが必要である。スケーリングAPIは、例えばアプリケーションから引数を指定して呼出出せるものであり、引数として、例えばスケーリングFactorを指定するものである。
アプリケーションからスケーリングFactorを引数としてスケーリングAPIが呼出されると、BDーJプラットフォーム22は、例えばスケーリングFactor保存部に保存されたスケーリングFactorを更新するものである。
また、上記のような実装を行うことにより、出力処理の最中にスケーリング命令が来たとしても、すぐにはスケーリングFactorの更新に基づいた処理は行われず、右目と左目のずらし幅が必ず同期していることを保障できる。
(第2実施形態)
本実施の形態では、第1実施形態のように、字幕データ、インタラクティブグラフィクスデータのストリームをビデオストリームの奥行きに追従するのではなく、ビデオストリームを字幕・GUIの奥行きに追従させることにより、字幕付きビデオのスケーリング時の視聴者への目の疲労度を低減する変形例について述べる。
スケーリングにおいて、字幕、あるいはグラフィクスと、動画像との位置関係がおかしくならないようにするには、ビデオプレーンのプレーンシフトを実行するにあたって、グラフィクスプレーンにおけるプレーンオフセットがどのような値であるかを考慮して、ビデオプレーンのためのプレーンオフセットを計算せねばならない。
このような構成を実現するためには、本実施の形態においては、例えば表示モード記憶部29に記憶されているイメージプレーン設定のオフセット値を読み込んで、このオフセット値をビデオのオフセットに利用できる構成とすること、およびプレーンシフトエンジン20はビデオプレーン6に格納されたビデオデータを利用して右目用のシフト処理、左目用のシフト処理を行うものとする。
さらに図4において、プレーンシフトエンジン20には、このビデオプレーン用のプレーンオフセットを計算する構成要素を追加する必要がある。かかる構成要素が追加されたプレーンシフトエンジン20の内部構成を図46に示す。
第1実施形態では、オフセット保存部に保存されているプレーンオフセットを“プレーンオフセットD”と呼び、スケーリングのために算出されるプレーンオフセットをプレーンオフセットEと呼んだが、本実施形態においてビデオプレーンのプレーンシフトのために使用される実パラメータを、“プレーンオフセットV”と呼ぶ。
図46は、第2実施形態における再生装置のプレーンシフトエンジン20の内部構成を示すブロック図である。第1実施形態に示す図24のプレーンシフトエンジン20の内部構成に、ビデオプレーンオフセット演算部45が追加されていることがわかる。
ビデオプレーンオフセット演算部45は、字幕付きビデオのスケーリング時のビデオプレーンのプレーンオフセットVを計算するモジュールである。
第1実施形態におけるプレーンシフトは、グラフィクスプレーンに対するもののみであったが、本実施形態では、ビデオプレーンについてもプレーンシフトの対象になるので、ビデオプレーンのためのプレーンシフトの処理手順が必要になる。そして、イメージプレーンにおけるプレーンオフセットを考慮した、ビデオプレーンのプレーンオフセットの処理手順を示したのが、図47のフローチャートである。
図47(a)は、図41に示すステップS702の具体的一例を説明するためのフローチャート図である。
図において、図43(a)に付した符号と同一の符号を付したものは、同一またはこれに相当するものであるので、ここでは重複する説明は省略する。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、ステップS203を行なう。
次に、イメージプレーン用のプレーンオフセットDを用いて以下の数式の計算を実行し、ビデオプレーン用の画素のプレーンオフセットVを算出する。
(数式)
ビデオプレーン用の画素のプレーンオフセットV=Ceil(D-(スケーリングFactor×D))
そして、上述の数式により得られたビデオプレーンのプレーンオフセットVに基づき、左目用のビデオのシフト処理を行う(ステップS205e)。
シフト処理については図30または図31を用いての説明において、インターラクティブグラフィックスプレーンまたはイメージプレーンとあるのをビデオプレーンと読み替え、オフセットEをオフセットVと読み替えればよい。
また、次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ステップS204を行なう。
スケーリングFactorが“1“であるため、上述の数式において、スケーリングFactorに“1“を代入するとオフセットVは0ではるため、スケーリングFactorが“1“である場合には、ビデオのオフセット処理は行われないことになる。
図47(b)は、図42に示すステップS804aの具体的一例を説明するためのフローチャート図である。
図において、図43(a)、図47(a)に付した符号と同一の符号を付したものは、同一またはこれに相当するものであるので、ここでは重複する説明は省略する。
ステップS202において、スケーリングFactorが“1“でないと判断した場合(ステップS202において、“Yes”と判定された場合)、デコードしたビデオデータにおける水平ピクセル数(表示画面の水平方向の画素数)、および垂直ピクセル数(表示画面の垂直方向のピクセル数)をスケーリングFactorに応じた水平ピクセル数、垂直ピクセル数に変換し(つまり拡大/縮小処理し)、変換した水平ピクセル数、垂直ピクセル数のビデオデータを表示画面の所定の位置に表示されるようにビデオプレーン6(符号(R)を付した領域)に書き込む(ステップS203f)。
次に、イメージプレーン用のプレーンオフセットDを用いて以下の数式の計算を実行し、ビデオプレーン用のプレーンオフセットVを算出する。
(数式)
ビデオプレーン用のプレーンオフセットV=Ceil(D-(スケーリングFactor×D))
そして、上述の数式により得られたビデオプレーンのプレーンオフセットVに基づき、右目用のビデオのシフト処理を行う(ステップS205f)。
また、次にステップS202において、スケーリングFactorが“1“であると判断した場合(ステップS202において、“No”と判定された場合)、ビデオデコーダ5aを用いてレフトビュー用のビデオストリームをデコードしたビデオデータをビデオプレーン6(符号(R)を付した領域)に書き込む(S204f)。
図45はステップ図42に示すステップS804bの一例を説明するフローチャートである。図において、図43(b)に付した符号と同一のものは、同一、またはこれに相当するものであるので、ここでは重複する説明は省略する。
図において、ステップS202bにおいて、スケーリングFactorが“1“でないと判断した場合(ステップS202bにおいて、“Yes”と判定された場合)、ステップ203bを実行する。
次に、イメージプレーン用のプレーンオフセットDを用いて以下の数式の計算を実行し、ビデオプレーン用のプレーンオフセットVを算出する。
(数式)
ビデオプレーン用のプレーンオフセットV=Ceil(D-(スケーリングFactor×D))
そして、上述の数式により得られたビデオプレーンのプレーンオフセットVに基づき、右目用のビデオのシフト処理を行う(ステップS205g)。
また、次にステップS202bにおいて、スケーリングFactorが“1“であると判断した場合(ステップS202bにおいて、“No”と判定された場合)、ステップS204bを実行する。
このように右目用処理、左目用処理において、ビデオプレーンにオフセットを与えることにより、イメージプレーン、インタラクティブグラフィックスプレーンのシフト処理を必ずしも行わなくても良くなるので、ビデオのスケーリングに応じてイメージプレーン、インタラクティブグラフィックスプレーンのオフセットを変えなくても、ビデオのオフセットを変えるので、ビデオストリームを字幕・GUIの奥行きに追従させることが可能となり、字幕付きビデオのスケーリング時の視聴者への目の疲労度を低減することが可能となる。
上述の処理は、右目用処理、左目用処理において、ビデオプレーンにオフセットを与えたときに、イメージプレーン、インタラクティブグラフィックスプレーンのシフト処理を行わないというものではない。
上述したようなフローチャートでは、ビデオプレーン用にプレーンオフセットが算出されるので、本実施形態では、ビデオプレーン及びイメージプレーンの双方において、プレーンシフトが実行されることになる。ここで、グラフィクスプレーンに対してプレーンシフトが実行された場合と、ビデオプレーン及びグラフィクスプレーンに対してプレーンシフトが実行された場合とで、字幕と、動画像との双方の位置関係がどのように変化するかを、図48を参照しながら具体的に説明する。
ビデオプレーン及びグラフィクスプレーンの双方シフトが適用される状況について説明する。
図48(a)は、スケーリングがなされた動画像及びグラフィクスのうち、グラフィクスの座標を所定の画素数だけ移動させることを意図した状況を示す。これは、本実施の形態を行わずスケーリングを行った場合の出力画面を示すものである。本図において、プレーンオフセットが-40に設定されているので、レフトビュー時には、9RRに示すように右方向に40画素だけ、ライトビュー時には、9LLに示すように左方向に40画素だけ、各画素の座標が移動していることがわかる。
スケーリングを施したビデオの上にスケーリング前と同様のシフト幅(40ピクセル)をもつ字幕が動画像に合成されると、スケーリング前の映像と比較した場合、字幕のポジションが大幅にずれているため、ビデオと字幕の構成が保てない。これでは立体感の差が激しくなったことにより目がついていけなくなる恐れがある。
そこでプレーンオフセット演算部43は、上述した計算を行い、ビデオプレーンのシフト量を算出する。
具体的なプレーンオフセットが−40画素であるものとし、スケーリングFactorが1/2であるものとする。これらを上記数式に適用してビデオプレーンのシフト量を算出すると、以下の計算によりビデオプレーンのプレーンオフセットは“-20”と算出される。
V=D−(ScallingFactor×D)=-40-(1/2×-40)=-20
ビデオプレーンについては、ビデオプレーンのための実パラメータであるプレーンオフセットVが-20と算出されているので、レフトビュー時には右方向に20画素だけ、ライトビュー時には左方向に20画素だけ、ビデオプレーンの各画素の座標が移動することになる。動画像及びグラフィクスにスケーリングを施した場合、スケーリングを施したビデオが20画素だけシフトされ、その上に、40画素だけシフトされた字幕が合成されることになる。
ビデオプレーンと、グラフィクスプレーンとの相対的な変化量は、レフトビューの場合は右方向に20画素、ライトビューの場合は左方向に20画素になるので、同図(a)と比較して、ビデオプレーンと、グラフィクスプレーンとの座標の変化量は小さく抑制されている。
こうすることで同図(b)では、スケーリング後の出力映像の14LLと14RRはスケーリング前のビデオと字幕との構成比率を保っていることがわかる。これにより立体感の差が激しくなることを防げ、目の疲れを軽減するとともに、より自然な表示が行えるようになる。
以上のように本実施形態によれば、ビデオが縮小されるにつれて、左目と右目の視差が自然に縮まることによる奥行き感の軽減を、プレーンシフトによって防ぐことができる。
(第3実施形態)
本実施形態は、第1実施形態の拡張例である。スケーリングを行った場合は、拡大・縮小率が高いと奥行きの変更もスケーリング前と後で激しく異なる。第1実施形態ではスケーリングを行った際はスケーリング要求後の次のフレームでスケーリングFactorに応じた奥行き変更が反映される。急に映像の奥行きが激しく異なってしまうと、ユーザの目の疲労に繋がってしまう。本実施形態ではスケーリング要求があった際は次のフレームで一度に奥行きも変更してしまうのではなく、少しずつ奥行きを変更させていくことにより、ユーザの目の疲労を軽減させることを目的とする変形例について述べる。
少しずつ奥行きを変更させるには、初期的なプレーンオフセットと、最終的なプレーンオフセットとの両方をプレーンオフセットとしてプレーンシフトエンジン20内で保存しておく必要があり、奥行き変更処理の途中において、途中段階のプレーンオフセットを、再計算してやる必要がある。これらの変更を加えれば、プレーンシフトエンジン20の内部構成は、図49に示すものとなる。
図49は、第3実施形態における再生装置のプレーンシフトエンジン20の内部構成を示すブロック図である。第1実施形態に示す図4のプレーンシフトエンジン20の内部構成から、さらにプレーンオフセット値保存部41に、前情報保存部41aと、後情報保存部41bとを含む構成を開示している。また、フレームカウンタ部46も追加されており、フレームカウンタ部46には、フレーム更新スパン保存部46aと更新済みフレーム数保存部46bとが追加されている。以下、本実施形態において新たに追加された構成要素について説明する。
(前情報保存部41a)
前情報保存部41aは、オフセット設定部21から指示されたプレーンオフセットDを、スケーリング前のプレーンオフセットとして保存する。
(後情報保存部41b)
後情報保存部41bは、スケーリングが完了後のプレーンオフセットE、つまり、プレーンオフセットDにスケーリングFactorを乗じた値を保持する。また、オフセット値保存部にプレーンオフセットDにスケーリングFactorを乗じた値が更新された場合、更新されたオフセットが後情報保存部41bに格納される。
上述の更新するタイミングはスケーリング命令(例えばBD-Jアプリからスケーリング命令によりビデオ、字幕を縮小表示する場合など)が発行されたときにスケーリングFactor保存部42の値を更新した後に行なわれる。
(プレーンオフセット演算部43)
プレーンオフセット演算部43は、前情報保存部41aに保存されているプレーンオフセットに示されるプレーンオフセットDと、後情報保存部41bに保存されているプレーンオフセットEとを、それぞれ画素座標に変換する。そして、その2つの画素座標の差分を計算し、スケーリング時に必要なプレーンオフセットを得て、更新済みフレーム数保存部46bの値をフレーム更新スパン保存部46aの値で割る。
そして、更新済みフレーム数保存部46bの更新済みフレーム数を、フレーム更新スパン保存部46aのフレーム更新スパンで割り、割った値に、最終的に上記演算したプレーンオフセットに乗ずる。
第1実施形態では、オフセット設定部21から供給されるプレーンオフセットを“プレーンオフセットD”と呼び、スケーリングに応じて算出されるプレーンオフセットを“プレーンオフセットE”と呼んだが、本実施形態で、フレームiが経過した時点において、イメージプレーンのシフトのために用いられるプレーンオフセットを、プレーンオフセットP(i)と呼ぶ。
フレーム(i)におけるプレーンオフセットP(i)の計算には、次のような数式を用いる
(数式)
“プレーンオフセットP(i)=(スケーリング完了前のプレーンオフセットD - スケーリング完了後のプレーンオフセット)x (更新済みフレーム数i÷フレーム更新スパン)“。
また、プレーンオフセットP(i)が小数点以下の数字となる場合には、小数点第1位の値を切り上げた整数値とする。
(シフト部44)
シフト部44は、右目用の処理を行う場合、画面より手前に飛び出さす場合は左へシフトさせ、奥に引っ込める場合は右へシフトさせる。左目用の処理を行う場合、画面より手前に飛び出さす場合は右へシフトさせ、奥に引っ込めさせる場合は左へシフトさせる。
(フレームカウンタ部46)
フレームカウンタ部46は、スケーリング要求後にフレーム単位で前情報保存部41aに保存された値から、後情報保存部41bに近づける機能を兼ね備えている。
具体的には、フレームカウンタ部46は、どれだけのフレームを使って前情報保存部41aに保存された値から、後情報保存部41bに近づけるかを示すフレーム更新スパンを保持しているフレーム更新スパン保存部46aと、スケーリング要求後に何回のフレーム処理が行われたかを保存する更新済みフレーム数保存部46bとを有する。
フレーム更新スパン保存部46aの値は、再生装置のマニュファクチャによって再生装置に設定された値であり、更新されることはない。
更新済みフレーム数保存部46bがフレーム更新スパン保存部46aの値より低い場合は、更新済みフレーム数保存部46bの値は、1だけインクリメントされる。
以上がプレーンシフトエンジンの内部構成についての説明である。続いて、第3実施形態に係るプレーンシフトエンジンの内部構成について説明する。
更新済みフレーム数は、再生対象となるビデオフレームの変化に伴い、更新されてゆくものなので、本実施形態の処理を再生装置に実装するには、第1実施形態に示した3DAVストリームの再生処理の処理手順に、更新済みフレーム数に関する処理を追加せねばならない。そのような更新済みフレーム数に関する処理には、更新済みフレーム数をリセットする処理、更新済みフレーム数をインクリメントする処理がある。これら更新済みフレーム数に関する処理を追加すれば、3DAVストリームの3D表示の処理手順は、図50のようなものになる。
図50は、3DAVストリームの3D表示の処理手順を示すフローチャートである。
図50では、図40からの変更点として、ステップS611からステップS614までが追加されていることになっていることに注目していただきたい。
本図の図40に付した符号と同一の符号を付したものは、図40と同一またはこれに相当するものである。
本フローチャートは、ステップS602、S603、S613、S614、S615、S616、S617およびS606を含むステップを実行するというものである。
上述のステップにおいて、左目用処理(ステップS602)、右目用処理(ステップS603)を順次実行するという処理を、フレーム出力が途絶えるまで(ステップS606でNo)継続するものである。本ループにおける左目用処理では、フレームiに対応する画素のシフト量P(i)だけ、イメージプレーンにおける各画素の座標を移動させる。また右目用処理でも、フレームiに対応する画素のシフト量P(i)だけ、イメージプレーンにおける各画素の座標を移動させる。このとき、左目用処理に対応するシフト量P(i)と、右目用処理に対応するシフト量P(i)は大きさは、同じであるもののシフトする方向が互いに異なる。
まず、更新済みフレーム数iを0にセットする(ステップS617)。
次に左目用処理を行う(ステップS602)
このとき、左目用処理において、イメージプレーンオフセット(シフト量)の算出において、後述するスケーリング前のプレーンオフセットD、スケーリング完了後のプレーンオフセットE、更新済みフレーム数の数i、更新スパンを用いて算出されるP(i)を用いる。
次に右目用処理を行う(ステップS603)
このとき、右目用処理においてイメージプレーンオフセット(シフト量)の算出において、上述のP(i)を用いる。
ステップS613は、更新済みフレーム数iがフレーム更新スパンより小さいかどうかの判定でありもし小さければ、ステップS614において更新済みフレームiをインクリメントする。等しいか大きければ(つまりステップS613においてNoと判断した場合)、。
ステップS606へ進む。
ステップS606では、次フレームがあるのかどうかを判断する。
次フレームがない場合、つまりステップS606において、Noと判断した場合には3DAVストリームの3D表示の処理を終了する。
次フレームがない場合、つまりステップS606において、Yesと判断した場合には、ステップS602、S603における処理において、更新済みフレーム数を用いてP(i)を再度計算する。
更新済みフレーム数iは更新スパンに到達するまでは、ステップS613の判断する毎に1つずつ増えていき、更新スパンに到達した以降はステップS614が実行されないため、更新済みフレーム数iは更新スパンに到達した以降は、その値が一定になる。
更新済みフレームiは、ビデオストリームの再生進行に伴い更新されてゆき、それに伴い、プレーンオフセットEも更新されるので、本実施形態におけるプレーンシフトは、更新済みフレーム数が更新される度毎に、実行にする必要がある。この更新済みフレーム数の更新に伴い、プレーンオフセットの計算をやり直し、そして、再計算されたプレーンオフセットに基づきプラットフォームを実行する手順を示したのが、図51のフローチャートである。
図51は、イメージプレーンのプレーンシフトの処理手順を示すフローチャートである。
図51において、イメージプレーンのプレーンシフトの処理手順は左目用のシフト処理、右目用のシフト処理とは互いに共通する部分が多いため共通のフローチャートを用いて、説明をする。但し、左目用のシフト処理を行う場合はイメージプレーンの符号(L)を付した領域に格納した字幕データがシフト処理の対象となり、右目用のシフト処理を行う場合はイメージプレーンの符号(R)を付した領域に格納した字幕データがシフト処理の対象となる。
イメージプレーンを取得し、デコードしたイメージをイメージプレーンに書き込む(ステップS901)。
そして、以下の計算により、フレームiにおけるプレーンオフセットP(i)を算出する。
プレーンオフセットP(i)は
プレーンオフセットP(i) =(スケーリング完了前のプレーンオフセットD - スケーリング完了後のプレーンオフセットE)x (更新済みフレームi÷フレーム更新スパン)
こうして算出されたプレーンオフセットP(i)に基づき、イメージプレーンのピクセル座標をシフトする(ステップS904)。但し、ステップS904は左目用のシフト処理をするときにシフトする方向と、右目用のシフト処理をするときにシフトする方向とは互いに逆向きである。
図51のループを一巡する度に更新済みフレームiが、ステップS809でインクリメントされてゆき、この更新済みフレームiに基づきプレーンオフセットP(i)が算出されるので、更新済みフレームiが大きくなればなる程、プレーンオフセットP(i)が大きく変化してゆくことがわかる。そして更新済みフレームiがフレーム更新スパンに到達すれば、更新済みフレームiが“0”にリセットすることがわかる。
上述したように、更新済みフレームiは、ビデオストリームの再生進行に伴い更新されてゆき、それに伴い、プレーンオフセットP(i)も更新させてゆくことがわかる。この更新済みフレーム数及びプレーンオフセットP(i)の時間的変動を表したのが図52である。以下、図52の具体例を交えながら、プレーンオフセットP(i)の時間的変位について説明する。
図52は、更新済みフレームiが“1”、“2”、“3”と更新されてゆく場合に、プレーンオフセットP(i)がどのように変化するかを示す。本図では、右斜め方向に時間軸を描いており、この時間軸上にフレーム0、1、2、3を記述している。そして、このフレーム0、1、2、3におけるイメージプレーンの内容が、この時間軸上に描いている。
各フレーム上の数式は、フレーム0、1、2、3を識別するための更新済みフレームiが、“1”、“2”、“3”の値をとった際、プレーンオフセットP(i)がどのような値になるかを示す。
この具体例では、-40と-20という値が前情報保存部と後情報保存部に保存されていると仮定する。-40は、プレーンオフセットDであり、ー20は、プレーンオフセットのピクセル変更演算を加えた後のプレーンオフセットP(i)である。本例では、3フレームに跨いで奥行きを序々に変更する設定になっており、フレーム更新スパン保存部46aには“3”の値が保存されている。更新済みフレーム数保存部46bには、“1“が格納されている。スケーリング命令後、1フレーム目の処理を行っていることを示す。この格納値は、フレームの経過に伴い、“2”、“3”とインクリメントされてゆく。そしてスケーリング命令からスケーリングFactorが、“1/2“であるの要求があったため、スケーリングFactor保存部41には1/2の値が設定されている。
この具体例では、プレーンシフトエンジンの情報、前情報保存部と後情報保存部の差分から3フレームかけて-20ピクセルを移動させる必要があることが判明している。
(フレーム1)
フレーム1において、更新済みフレームi=“1“を上記数式に適用すれば、更新済みフレームi÷フレーム更新スパンは“1/3”になり、フレームP(i)における画素プレーンオフセットP(1)は、(-40-(1/2×-40)×1/3)の計算により、“-7”と算出される。従って、フレーム1においては、レフトビュー時においてイメージプレーンは右方向に7画素だけシフトし、ライトビュー時においてイメージプレーンは左方向に7画素だけシフトする。
(フレーム2)
フレーム2において、更新済みフレームi=“2“を上記数式に適用すれば、更新済みフレームi÷フレーム更新スパンは“2/3”になり、フレームP(i)におけるプレーンオフセットP(2)は、(-40-(1/2×-40)×2/3)の計算により、“-14”と算出される。従って、フレーム2においては、レフトビュー時においてイメージプレーンは右方向に14画素だけシフトし、ライトビュー時においてイメージプレーンは左方向に14画素だけシフトする。
(フレーム3)
フレーム3において、更新済みフレームi=“3“を上記数式に適用すれば、更新済みフレームi÷フレーム更新スパンは“3/3”になり、フレームP(i)におけるプレーンオフセットP(3)は、(-40-(1/2×-40)×3/3)の計算により、“-20”と算出される。従って、フレーム3においては、レフトビュー時においてイメージプレーンは右方向に20画素だけシフトし、ライトビュー時においてイメージプレーンは左方向に20画素だけシフトする。
この具体例では、-20画素の1/3にあたるシフト数(7ピクセル)を各フレームで移動させ、3フレーム目には-20ピクセルシフトがなされ、4フレーム目以降は3フレーム目のシフト数が維持され状態が継続する。この継続はステップS606において、次フレームがないと判断されるまで維持される。
以上のように本実施形態によれば、スケーリング時の字幕の奥行き変換を急激に変えるのではなく、少しずつ奥行きを変更させていくことにより、ユーザの目の疲労を軽減させることが可能となる。(第4実施形態)
プレーンシフトエンジン20が、プレーンシフトを行うにあたってのシフト量は、立体視のための何等かのパラメータに基づき、算出する必要がある。かかるシフト量算出のためにパラメータにはMVC(Multi
View Codec)ビデオストリームに組み込まれている立体視用のプレーンオフセットを採用することが望ましい。ただし、これには限らず、コンテンツプロバイダがBD-ROMを通じて再生装置に供給する様々な情報要素を通じて、プレーンシフトエンジン20に供給できるようにしておく方が望ましい。
図53を参照しながら、プレーンオフセットの設定処理について説明する。
図53は、プレーンオフセットの設定に関わる部分の構成を示す。
プレーンオフセットの供給の仕方には、以下の(AA)〜(FF)のバリエーションがある。
(AA)BD-JアプリケーションはsetOffsetValueのメソッドコールによって、表示モード記憶部29内のプレーン設定のプレーンオフセットを更新することができる。
上記プレーンオフセットはBD-JアプリケーションによりgetOffsetValueメソッドにより取得可能である。
BD-JアプリケーションがAPIをコールしてプレーンオフセットを組込む場合、自由度は高いが、リアルタイム性が劣る。プレーンシフトエンジンがBD-Jアプリケーションにより指定されたオフセットを利用する場合、BD-Jアプリケーションから指定されたプレーンずオフセットが表示モード記億部29(例えば、イメージプレーン設定におけるプレーンオフセット、インタラクティブグラフィックスプレーン設定におけるプレーンオフセット)に格納され、オフセット設定部21により読み出されてプレーンシフトエンジン20内のオフセット値保存部41に設定される。プレーンシフトエンジンによる水平方向へのシフトはプレーンオフセットに応じて合成時に自動的に行われる。
設定の時期について説明する。
イメージプレーン8及びインタラクティブグラフィクスプレーン10の奥行きを変更するAPIは、アプリケーションが起動した後ならば、起動したアプリケーションからいつでも呼び出し可能であり、それ以外でも例えばビデオの停止中に呼び出される可能性もある。しかし、表示モード記憶部29内のプレーンオフセットをプレーンシフトエンジン20に格納するタイミングを制御することでグラフィクスプレーンのずらし幅が必ず同期していることを保障できる。
具体的にはBD-JアプリケーションがsetOffset()を呼び出したタイミングでプレーンシフトエンジン20のプレーンオフセットを更新するのではなく、1フレーム分のレフトビューとライトビューの両方の出力が完了した時点で表示モード記憶部29内のプレーンオフセットが更新されているかを確認し、それに伴ってプレーンシフトエンジン20のオフセットを更新するようにする。こうすることで、グラフィクスプレーンのずらし幅が必ず同期していることを保障できる。レフトビュー、及び、ライトビューのずらし幅が同期していない場合はコンテンツ作成者の意図しない表示になってしまい、視聴者に不愉快な出力映像を与えてしまうことは言うまでもない。
(BB)BD-ROMがロードされた際、またはBD-ROMがロードされ、又は、仮想パッケージが構築された際、BD-ROMまたは仮想パッケージから特定されるMETAディレクトリに格納されたメタファイル(ZZZZZ.xml)からプレーンオフセットを読み出してプレーンシフトエンジン20のプレーンオフセットを更新する。
(CC)MVCビデオストリームの読み出し及びデコードが開始された際、MVCビデオストリームを構成する各PESパケットのヘッダ領域に組込まれているプレーンオフセットを、プレーンシフトエンジン20のプレーンオフセットとしてリードバッファ28内に設定する。望ましくは1フレーム分のレフトビューとライトビューの両方の出力が完了した時点で、現在処理中のフレームと対応するオフセットを、プレーンシフトエンジン20のプレーンオフセットとして、リードバッファ28内に設定する。
MVCビデオストリームにプレーンオフセットを組み込む場合、ストリームから勝手にずらすことができるので、リアルタイム性が高いが、オーサリング時の手間が大きい。
(DD)トランスポートストリームの読み出し及びデコードが開始された際、トランスポートストリームパケットのヘッダ領域に組込まれているオフセットを、プレーンシフトエンジン20のプレーンオフセットとしてに更新する。望ましくは1フレーム分のレフトビューとライトビューの両方の出力が完了した時点で、現在処理中のフレームと対応するプレーンオフセットを、プレーンシフトエンジン20のプレーンオフセットとして、リードバッファ28内に設定する。
ストリーム内に組み込む場合、ストリームから勝手にずらすことができるので、リアルタイム性が高いが、オーサリング時の手間が大きい。
(EE)カレントプレイリストが決定されて、プレイリスト情報がロードされた際、このプレイリスト情報のオフセットを、プレーンシフトエンジン20内にプレーンオフセットとして設定する。プレイリスト情報を用いる場合、オーサリングでの自由は高いが、ストリームにオフセットを埋め込んだ場合に比べると、一度オフセットを設定してから、オフセットを再度更新するまでのオフセット更新の時間間隔を余り短くすることができず、リアルタイム性がやや劣る。
(FF)UO検知モジュール26は、リモコンや機器に付属のボタンなどの操作によりイメージプレーン8及びインタラクティブグラフィクスプレーンの奥行きのレベルを変更するユーザオペレーションを受けた場合、つまり、奥行き感が、“遠い”、“普通”、“近い“等の3つのレベルを受け付けた場合や、奥行き感は“何cm”、“何mm”というように、数値入力によって奥行き感のレベルを受け付けた場合、これを用いて、プレーンシフトエンジン20のプレーンオフセットを更新することができる。かかる更新によって、リモコンにおける右矢印キーの押下に応じてプレーンオフセットを大きくしたり、左矢印キーに応じてプレーンオフセットを小さくすることができる。こうすることで、右矢印キー、左矢印キーの押下回数によって、グラフィクスを手前に見せたり、奥に見せたりすることができ、操作性が向上する。
イメージプレーン8及びインタラクティブグラフィクスプレーン10のシフト量は、以上の過程を経て、プレーンシフトエンジン20のプレーンオフセットに基づいて計算処理を行うことで得られる。
MVCビデオストリーム内にプレーンオフセットが組込まれている場合、プレーンオフセット演算部43は、1フレームに対するレフトビュー用の出力とライトビュー用の出力とが完了した時点で、プレーンシフトエンジン20内に格納されたプレーンオフセットに基づいてグラフィクスプレーンのシフト量を計算する。これは、プレーンオフセットがMVCビデオストリームに格納されている場合、フレーム毎にプレーンオフセットが変化することもありうるからである。
以上が、プレーンオフセットを設定する様々なケースについての説明である。続いて、ユーザ操作やアプリケーションによって提供される値について説明する。
ユーザ操作やアプリケーションから提供される値はシフト量そのものではなく、例えば、現状プレーンシフトエンジン20に設定されている値からの調整値が与えられることがある。この場合、プレーンオフセット計算を実行する。例えば、右矢印キーが3回押されたり、数値キーの“3”という値が入力されれば、装置内に設定されているプレーンオフセットにかかる値を加算して、プレーンシフトエンジン20は加算された値を基にプレーンオフセットを計算する。“+”の値であると、例えばよりずらし幅が縮小され、奥に見えるようにし、“―”の値であると、例えばずらし幅を増やし、より手前に見えるようにすることが考えられる。
次に、奥行きの変更について説明する。
上述したように、字幕、GUI等のグラフィクスを横軸にシフトする際、字幕、GUI等のグラフィクスの横軸のずらし幅を変更することによって、奥行きが変更する。例えば、レフトビュー字幕とライトビュー字幕を一定方向に近くへ寄せれば寄せるほど画面に近づくに表示がなされ、逆方向に離せば離すほど画面から離れる視覚効果を得られる。しかし、プレーンオフセットと、飛び出し度合との相関性は、テレビにおけるインチ数、3D眼鏡における液晶の特性に影響するところが大きいので、この視覚効果の実現にあたって、予め端末内に係数を設定しておき、プレーンオフセットにこの係数を乗じたものをシフトに用いる。このように係数を乗じることで、テレビや再生装置、3D眼鏡における特性に基づき、立体視映像の飛び出し度合を調整することが可能になる。
(第5実施形態)
本実施形態では、これまでの実施形態で述べた再生装置を、どのようなハードウェアを用いて構成するかを説明する。
図54は、再生装置の内部構成を示す図である。本図において再生装置を構成する主だった部品は、フロントエンド部101、システムLSI102、メモリデバイス103、バックエンド部104、不揮発性メモリ105、ホストマイコン106、ネットワークI/F107である。
フロントエンド部101は、データ入力源である。フロントエンド部101は、例えば、前図に示したBDドライブ1a、ローカルストレージ1cを含む。
システムLSI102は、論理素子から構成され、再生装置中核をなす。少なくとも、デマルチプレクサ4、ビデオデコーダ5a,b、イメージデコーダ7a,b、オーディオデコーダ9、再生状態/設定レジスタ(PSR)セット12、再生制御エンジン14、合成部15、プレーンシフトエンジン20といった構成要素は、このシステムLSIの内部に組み込まれることになる。
メモリデバイス103は、SDRAM等のメモリ素子のアレイによって構成される。メモリデバイス107は、例えばリードバッファ2a、リードバッファ2b、動的シナリオメモリ23、静的シナリオメモリ13、グラフィクスプレーン6,8、ビデオプレーン10、バックグラウンドプレーン11を含む。
バックエンド部104は、再生装置内部と、他の装置との接続インターフェイスであり、HDMI送受信部17を含む。
不揮発性メモリ105は、読み書き可能な記録媒体であり、電源が供給されなくても、記録内容を保持できる媒体であり、後述する表示モード記憶部29に記憶されている表示モードのバックアップに利用される。かかる不揮発性メモリ105には、例えばフラッシュメモリ、FeRAMなどを利用することができる。
ホストマイコン106は、ROM、RAM、CPUからなるマイコンシステムであり、ROMには再生装置を制御するプログラムが記録されており、ROM内のプログラムがCPUに読み込まれ、プログラムとハードウェア資源とが協動することにより、HDMVモジュール24、BD-Jプラットフォーム22、モード管理モジュール24、UO検知モジュール26、再生制御エンジン14の機能を実現する。
以下、システムLSIについて説明する。システムLSIとは、高密度基板上にベアチップを実装し、パッケージングした集積回路をいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものも、システムLSIに含まれる(このようなシステムLSIは、マルチチップモジュールと呼ばれる。)。
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置200の中核としての役割を果たす。
かかるシステムLSIは、再生装置200は勿論のこと、TVやゲーム、パソコン、ワンセグ携帯等、映像再生を扱う様々な機器に組込みが可能であり、本発明の用途を多いに広げることができる。
システムLSIのアーキテクチャは、Uniphierアーキテクチャに準拠させるのが望ましい。
Uniphierアーキテクチャに準拠したシステムLSIは、以下の回路ブロックから構成される。
・データ並列プロセッサDPP
これは、複数の要素プロセッサが同一動作するSIMD型プロセッサであり、各要素プロセッサに内蔵されている演算器を、1つの命令で同時動作させることで、ピクチャを構成する複数画素に対するデコード処理の並列化を図る。
・命令並列プロセッサIPP
これは、命令RAM、命令キャッシュ、データRAM、データキャッシュからなる「Local Memory Controller」、命令フェッチ部、デコーダ、実行ユニット、レジスタファイルからなる「Processing Unit部」、複数アプリケーションの並列実行をProcessing Unit部に行わせる「Virtual Multi Processor Unit部」で構成される。
・MPUブロック
これは、ARMコア、外部バスインターフェイス(Bus Control Unit:BCU)、DMAコントローラ、タイマー、ベクタ割込コントローラといった周辺回路、UART、GPIO(General Purpose Input Output)、同期シリアルインターフェイスなどの周辺インターフェイスで構成される。
・ストリームI/Oブロック
これは、USBインターフェイスやATA Packetインターフェイスを介して、外部バス上に接続されたドライブ装置、ハードリディスクドライブ装置、SDメモリカードドライブ装置とのデータ入出力を行う。
・AVI/Oブロック
これは、オーディオ入出力、ビデオ入出力、OSDコントローラで構成され、テレビ、AVアンプとのデータ入出力を行う。
・メモリ制御ブロック
これは、外部バスを介して接続されたSD-RAMの読み書きを実現するブロックであり、各ブロック間の内部接続を制御する内部バス接続部、システムLSI外部に接続されたSD-RAMとのデータ転送を行うアクセス制御部、各ブロックからのSD-RAMのアクセス要求を調整するアクセススケジュール部からなる。
具体的な生産手順の詳細は以下のものになる。まず各実施形態に示した構成図を基に、システムLSIとすべき部分の回路図を作成し、回路素子やIC,LSIを用いて、構成図における構成要素を具現化する。
そうして、各構成要素を具現化してゆけば、回路素子やIC,LSI間を接続するバスやその周辺回路、外部とのインターフェイス等を規定する。更には、接続線、電源ライン、グランドライン、クロック信号線等も規定してゆく。この規定にあたって、LSIのスペックを考慮して各構成要素の動作タイミングを調整したり、各構成要素に必要なバンド幅を保証する等の調整を加えながら、回路図を完成させてゆく。
回路図が完成すれば、実装設計を行う。実装設計とは、回路設計によって作成された回路図上の部品(回路素子やIC,LSI)を基板上のどこへ配置するか、あるいは、回路図上の接続線を、基板上にどのように配線するかを決定する基板レイアウトの作成作業である。
こうして実装設計が行われ、基板上のレイアウトが確定すれば、実装設計結果をCAMデータに変換して、NC工作機械等の設備に出力する。NC工作機械は、このCAMデータを基に、SoC実装やSiP実装を行う。SoC(System
on chip)実装とは、1チップ上に複数の回路を焼き付ける技術である。SiP(System in Package)実装とは、複数チップを樹脂等で1パッケージにする技術である。以上の過程を経て、本発明に係るシステムLSIは、各実施形態に示した再生装置200の内部構成図を基に作ることができる。
尚、上述のようにして生成される集積回路は、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。
FPGAを用いてシステムLSIを実現した場合は、多数のロジックエレメントが格子状に配置されており、LUT(Look Up Table)に記載されている入出力の組合せに基づき、縦・横の配線をつなぐことにより、各実施形態に示したハードウェア構成を実現することができる。LUTは、SRAMに記憶されており、かかるSRAMの内容は、電源断により消滅するので、かかるFPGAの利用時には、コンフィグ情報の定義により、各実施形態に示したハードウェア構成を実現するLUTを、SRAMに書き込ませる必要がある。
本実施の形態は、ミドルウェアとシステムLSIに対応するハードウェア、システムLSI以外のハードウェア、ミドルウェアに対するインターフェイスの部分、ミドルウェアとシステムLSIのインターフェイスの部分、ミドルウェアとシステムLSI以外の必要なハードウェアへのインターフェイスの部分、ユーザインターフェースの部分で実現し、これらを組み込んで再生装置を構成したとき、それぞれが連携して動作することにより特有の機能が提供されることになる。
ミドルウェアに対するインターフェイス、および、ミドルウェアとシステムLSIのインターフェイスを適切に定義することにより、再生装置のユーザインターフェース部分、ミドルウェア部分、システムLSI部分をそれぞれ独立して並行開発することができ、より効率よく開発することが可能となる。なお、それぞれのインターフェイスのきり方には、様々な切り方がある。
(備考)
以上、本願の出願時点において、出願人が知り得る最良の実施形態について説明したが、以下に示す技術的トピックについては、更なる改良や変更実施を加えることができる。各実施形態に示した通り実施するか、これらの改良・変更を施すか否かは、何れも任意的であり、実施する者の主観によることは留意されたい。
(次元識別フラグの埋め込み方)
BD-ROM上には再生対象のストリームが2D用か3D用かを識別する次元識別フラグが存在しており、第1実施形態ではプレイリスト(PL)情報に次元識別フラグを埋め込んが、これに限らず、ストリーム本体とそのストリーム2D用か3D用かを特定できる情報として記録される情報であれば、BD-ROM上に他の形で記録されていてもよい。
(ビデオプレーン6の物理的形態)
図4に示したビデオプレーン6に含まれる、左目用プレーン、右目用プレーンは物理的に分離したメモリを例示しているが、これに限定される必要はなく、例えば、1つのメモリ内に左目用プレーンの領域、右目用プレーンの領域を設け、この領域に対応するビデオデータを書き込むような構成であってもよい。
(イメージプレーン8の物理的形態)
図4に示したイメージプレーン8に含まれる、左目用プレーン、右目用プレーンは物理的に分離したメモリを例示しているが、これに限定される必要はなく、例えば、1つのメモリ内に左目用プレーンの領域、右目用プレーンの領域を設け、この領域に対応するグラフィクスデータを書き込むような構成であってもよい。
(インタラクティブグラフィクスプレーン10の物理的形態)
図4では、インタラクティブグラフィクスプレーン10は左目用の領域(符号(L)を付したもの)と、右目用の領域(符号(R)を付したもの)とが、1つのプレーンメモリ内に予め設けられている例を示しているが、これに限定される必要はなく、例えばインタラクティブグラフィクスプレーン10の左目用の領域(符号(L)を付したもの)、右目用の領域(符号(R)を付したもの)を物理的に分離したものを用いてもよい。
(オフセット調整の仕方)
図7〜8を用いた説明は、ステレオモードがオフの状態において、バックグラウンドとビデオのオフセットを調整しない(つまりオフセットが0、より具体的には表示画面の位置に表示されている)例を題材にしている。これは上述の説明を簡単にするためである。従って上述の説明に限定される必要はなく、例えばグラフィクスイメージ(字幕)よりも奥にビデオが位置するように、かつ背景データがビデオよりも奥に位置するようにオフセットを調整して表示してもよい。
(バックグラウンドプレーン11、イメージプレーン8、インタラクティブグラフィクスプレーンがサポートすべき解像度)
再生装置が3D表示モードである場合は、バックグラウンドプレーン11、イメージプレーン8、インタラクティブグラフィクスプレーンは2D表示モードの解像度に加えて、1920x2160や1280x1440ピクセルの解像度をサポートしてもよい。その場合は1920x2160や1280x1440ピクセルのアスペクト比は、16/18のアスペクト比になり、上半分を左目用の領域、下半分を右目用領域に利用することになる。
(プレーンオフセットを設定する対象)
プレーンオフセットは、例えば、イメージプレーン用とインタラクティブグラフィクスプレーン用の2つのシフト量をもち、プレーンシフトを行う対象に応じてその2つのシフト量を使い分けてもよい。再生装置がセットアップ機能を兼ね備えていない場合、“0“がデフォルトで指定されるようにする。この場合は表示画面の位置に字幕、GUIなどのグラフィクスが表示され、表示画面から飛び出るような効果はない。
(合成部による合成からの除外)
2D静止画データ、2Dビデオデータ、2Dグラフィクスデータ(字幕データ)、2Dインタラクティブグラフィクスの順で合成する際、ビデオデータが全画面表示であれば、2D静止画データは、合成処理から除外してもよい。
(表示モード記憶部29におけるフラグ保持のバリエーション)
表示モード記憶部29の2D表示モードか3D表示モードを示すフラグは再生状態レジスタ12で保存してもよいし、表示モード記憶部29と再生状態レジスタ12の両方で保存してもよい。
(演算のテーブル化)
プレーンオフセットから画素座標への変換アルゴリズムは様々考えられるが、表示対象のディスプレイのサイズや解像度、あるいは表示対象のビデオのサイズに依存したアルゴリズムを使うのが望ましい。
また、機器リソースに乏しい再生装置は変換アルゴリズムによる演算ではなく、スケーリング対応テーブルを持たせて、そのテーブルに応じてプレーンオフセットから画素座標へ変換してもよい。具体的には、スケーリングFactorの倍率を数パターンに限定し、各スケーリングFactorに対応する画素座標がかかれたテーブルを予め持っておく。スケーリングFactorが指定された際に対応する画素座標をシフト部28-Dに返すようにすればよい。
プレーンオフセットの具体的な値としては、50画素、30画素、25画素という3段階の値にしてもよい。そしてスケーリングFactorについては、2倍、1/2倍、1/4倍という3段階の値にしてもよい。プレーンオフセットやスケーリングFactorをこれらの値に制限することで、演算アルゴリズムは単純なものとなり、上記演算のテーブル化によって、プレーンオフセット演算部43の実装を簡略化することができる。
(二重化)
図の構成図にはビデオデコーダ、ビデオプレーン、イメージプレーン加算器を各一つずつ有しているが、各部分を2つずつもたせ、左目用の映像と右目用の映像を平行に処理をするようにしてもよい。
(再利用)
デコードとスケーリングを施したイメージプレーンを保存している場合は、それを再利用してもよい。ただし、再利用した場合は、シフトしたイメージプレーンを元に戻す必要がある。
(2Dのピクセル)
さらに、2Dビデオストリームとその2Dビデオストリームのフレーム毎の各画面ピクセルの奥行きを入力とする方式の場合は、フレーム毎の各画面ピクセルの奥行きから、一番手前にあるピクセルの奥行きを抽出し、プレーンオフセットとして利用してもよい。
(同期)
左目と右目を同期するために、フラグを別途もうけ、左目用のスケーリング処理を施した場合のみ、右目用のスケーリング処理を行うようにしてもよい。
(ファクターのバリエーション)
スケーリングFactorとしてスケーリング完了後の画素座標を具体的に指定してもよい。例えば、横の長さは1000、縦の長さは250のように直接指定してもよい。
スケーリングFactorが具体的なPixel数であった場合はスケーリング前と後の横軸の比率を計算し、それをイメージオフセットに掛けることにより新しいイメージオフセットを得ることが望ましい。
(表示の時期)
本実施の形態の構成ではスケーリング命令受信後に少しずつ奥行きを変更させることも可能だが、字幕の表示を無効にしておき、一定のフレームが経過した後に一度に後情報保存部の値から算出したシフト画素座標で表示するようにしてもよい。その方法は、フレームに応じたずらし幅を計算するのではなく、更新済みフレーム数保存部の値がフレーム更新スパン保存部の値に到達した時点で、後情報保存部で計算できるピクセルシフト幅をシフトさせ表示させる。そうすることによって、ユーザがスケーリング後のビデオストリームの奥行き変更に目が慣れた状態で字幕が表示されるため、立体感の差がさらに吸収され、ユーザの目の疲れを軽減させる効果をもたらす。
(ストリームの記録態様)
BD-ROM上に配置されたストリームは右目用ストリーム、左目用ストリームが別々に記録されてもよいし、一つのストリームファイルに埋め込んでおいてもよい。
(立体視方式)
第1実施形態で説明の前提とした視差画像方式は、左右の映像を時間軸方向で交互に表示させるために、例えば、通常の2次元の映画であれば1秒に24枚の映像を表示させるのに対して、左右の映像合わせて1秒に48枚の映像を表示させる必要がある。従って、この方式では、一画面の書き換えが比較的早い表示装置において好適である。この視差画像を用いた立体視は、既に遊園地の遊具などで一般的に使用されており、技術的にも確立されているため、家庭における実用化に最も近いものと言える。視差画像を用いた立体視のための方法はこれらの他にも、2色分離方式などさまざまな技術が提案されている。本実施形態においては、継時分離方式あるいは偏光メガネ方式を例として用いて説明したが、視差画像を用いる限りこれら2方式に限定するものではない。
表示装置300についても、レンチキュラーレンズだけでなく、同様の機能を持たせたデバイス、例えば液晶素子を用いてもよい。また左目用の画素には縦偏光のフィルター、右目用の画素には横偏光のフィルターを設置し、視聴者は、左目用には縦偏光、右目用には横偏光のフィルターを設置した偏光メガネを用いて表示装置の画面を見ることによって立体視を実現させてもよい。
(イメージデータ)
各実施形態で示したイメージデータは、Presentation Graphicsストリームであることが望ましい。
Presentation Graphicsストリーム(PGストリーム)は、映画の字幕等、ピクチャと緻密に同期すべきグラフィクスを示すグラフィクスストリームであり、英語、日本語、フランス語というように複数言語についてのストリームが存在する。
PGストリームは、PCS(Presentation Control Segment)、PDS(Pallet Define Segment)、WDS(Window Define Segment)、ODS(Object Define Segment)という一連の機能セグメントからなる。ODS(Object DefineSegment)は、画素コードと、そのランレングスとを用いてランレングス圧縮されたグラフィクスオブジェクトを定義する機能セグメントである。PDS(Palette Difinition Segment)は、画素コードのそれぞれと、輝度(Y)、赤色差(Cr)、青色差(Cb)、透明度(α値)との対応関係を規定する機能セグメントである。PCS(Presentation Control Segment)は、グラフィクストリームにおける表示単位(ディスプレイセット)の詳細を規定すると共に、グラフィクスオブジェクトを用いた画面構成を規定する機能セグメントである。かかる画面構成には、Cut-In/Out、Fade-In/Out、Color Change、Scroll、Wipe-In/Outといったものがあり、PCSによる画面構成を伴うことにより、ある字幕を徐々に消去しつつ、次の字幕を表示させるという表示効果が実現可能になる。
グラフィクストリームの再生において、グラフィクスデコーダは、ある表示単位(ディスプレイセット)に属するODSをデコードしてグラフィクスオブジェクトをオブジェクトバッファに書き込む処理と、先行する表示単位(ディスプレイセット)に属するODSをデコードすることにより得られたグラフィクスオブジェクトをオブジェクトバッファからプレーンメモリに書き込む処理とを同時に実行するというパイプラインによって、上述したような緻密な同期を実現する。パイプラインによるデコード動作の実現により、動画像との緻密な同期を実現するので、PresentationGraphicsストリームの用途は字幕のような文字再生に限定されない。映画作品のマスコットキャラクタを表示して、これを動画像と同期させつつ動作させるなど、緻密な同期が必要なグラフィクス再生であれば、どのようなものも、PresentationGraphicsストリームによる再生対象として、採用することができる。
トランスポートストリームファイルに多重化されないが、字幕を現すストリームには、PGストリームの他に、テキスト字幕(textST)ストリームというものがある。textSTストリームは、字幕の内容をキャラクタコードで現したストリームである。このPGストリームと、textSTストリームとの組みは、BD-ROM規格において、“PGTextSTストリーム”と呼ばれる。テキスト字幕(textST)ストリームはAVストリームに多重化されないので、その再生にあたっては、テキスト字幕ストリーム本体と、テキストの展開に用いられるフォントとを再生に先立ち、メモリにプリロードしておく必要がある。またテキスト字幕ストリームのうち、どの言語を正常に表示できるかどうかは、BD-ROM再生装置において、言語コード毎に設定されたケーパビリティフラグに設定される。一方、PresentationGraphicsストリームによる字幕再生には、ケーパビリティフラグの参照は不要となる。PresentationGraphicsストリームにおける字幕は、ランレングス圧縮された字幕を展開すれば足りるからである。
Presentation Graphicsストリームによる再生対象は、装置側の言語設定に応じて選ばれた字幕グラフィクスであってもよい。これにより、現状のDVDにおいて動画像本体で表現していたような文字を用いた表示効果を、装置側の言語設定に応じて表示された字幕グラフィクスで実現することができるので、実用上の価値は大きい。
Preentation Graphicsストリームによる再生対象は、装置側のディスプレイ設定に応じて選ばれた字幕グラフィクスであってもよい。つまり、ワイドビジョン、パンスキャン、レターボックス用といった様々な表示モード用のグラフィクスがBD-ROMに記録されており、装置側は自身に接続されたテレビの設定に応じてこれらの何れかを選んで表示する。この場合、そうして表示された字幕グラフィクスに対し、PresentationGraphicsストリームに基づく表示効果をほどこすので、見栄えがよくなる。これにより、動画像本体で表現していたような文字を用いた表示効果を、装置側のディスプレィ設定に応じて表示された字幕で実現することができるので、実用上の価値は大きい。またPresentationGraphicsストリームはカラオケを実現するものであってもよい、そしてこの場合、Presentation Graphicsストリームは歌の進行に応じて、字幕の色を変えるという表示効果を実現してもよい。
(プログラムの実施形態)
各実施形態に示したアプリケーションプログラムは、以下のようにして作ることができる。先ず初めに、ソフトウェア開発者は、プログラミング言語を用いて、各フローチャートや、機能的な構成要素を実現するようなソースプログラムを記述する。この記述にあたって、ソフトウェア開発者は、プログラミング言語の構文に従い、クラス構造体や変数、配列変数、外部関数のコールを用いて、各フローチャートや、機能的な構成要素を具現するソースプログラムを記述する。
記述されたソースプログラムは、ファイルとしてコンパイラに与えられる。コンパイラは、これらのソースプログラムを翻訳してオブジェクトプログラムを生成する。
コンパイラによる翻訳は、構文解析、最適化、資源割付、コード生成といった過程からなる。構文解析では、ソースプログラムの字句解析、構文解析および意味解析を行い、ソースプログラムを中間プログラムに変換する。最適化では、中間プログラムに対して、基本ブロック化、制御フロー解析、データフロー解析という作業を行う。資源割付では、ターゲットとなるプロセッサの命令セットへの適合を図るため、中間プログラム中の変数をターゲットとなるプロセッサのプロセッサが有しているレジスタまたはメモリに割り付ける。コード生成では、中間プログラム内の各中間命令を、プログラムコードに変換し、オブジェクトプログラムを得る。
ここで生成されたオブジェクトプログラムは、各実施形態に示したフローチャートの各ステップや、機能的構成要素の個々の手順を、コンピュータに実行させるような1つ以上のプログラムコードから構成される。ここでプログラムコードは、プロセッサのネィティブコード、JAVAバイトコードというように、様々な種類がある。プログラムコードによる各ステップの実現には、様々な態様がある。外部関数を利用して、各ステップを実現することができる場合、この外部関数をコールするコール文が、プログラムコードになる。また、1つのステップを実現するようなプログラムコードが、別々のオブジェクトプログラムに帰属することもある。命令種が制限されているRISCプロセッサでは、算術演算命令や論理演算命令、分岐命令等を組合せることで、フローチャートの各ステップを実現してもよい。
オブジェクトプログラムが生成されるとプログラマはこれらに対してリンカを起動する。リンカはこれらのオブジェクトプログラムや、関連するライブラリプログラムをメモリ空間に割り当て、これらを1つに結合して、ロードモジュールを生成する。こうして生成されるロードモジュールは、コンピュータによる読み取りを前提にしたものであり、各フローチャートに示した処理手順や機能的な構成要素の処理手順を、コンピュータに実行させるものである。かかるプログラムをコンピュータ読取可能な記録媒体に記録してユーザに提供してよい。
(記録媒体のバリエーション)
各実施の形態における記録媒体は、光ディスク、半導体メモリーカード等、パッケージメディア全般を含んでいる。本実施の形態の記録媒体は予め必要なデータが記録された光ディスク(例えばBD-ROM、DVD-ROMなどの既存の読み取り可能な光ディスク)を例に説明をするが、これに限定される必要はなく、例えば、放送またはネットワークを経由して配信された本発明の実施に必要なデータを含んだ3Dコンテンツを光ディスクへ書き込む機能を有する端末装置(例えば左記の機能は再生装置に組み込まれていてもよいし、再生装置とは別の装置であってもよい)を利用して書き込み可能な光ディスク(例えばBD-RE、DVD-RAMなどの既存の書き込み可能な光ディスク)に記録し、この記録した光ディスクを本発明の再生装置に適用しても本発明の実施は可能である。
(ビデオデコーダの構成)
各実施形態において、ビデオデコーダは、左目用のビデオデコーダ5a、右目用のビデオデコーダ5bのそれぞれのものが存在すると説明したが、これらを一体にしてもよい。
(半導体メモリカード記録装置及び再生装置の実施形態)
各実施の形態で説明をしたデータ構造を半導体メモリーに記録する記録装置、及び、再生する再生装置の実施形態について説明する。
まず、前提となる技術として、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を介して読み出すように構成すればよい。
本発明は、立体視ビデオストリームを再生する再生機器において、立体視ビデオストリーム上に字幕やグラフィクスを重ね合わせて表示するデバイスにおいて、立体視ビデオストリームに字幕を重ね合わせた状態でスケーリングを行う立体視ビデオ再生装置に適用可能である。
100 BD-ROM
200 再生装置
300 リモコン
400 テレビ
500 液晶眼鏡
1a BDドライブ
1b ローカルストレージ
1c ネットワークインターフェース
2a,2b リードバッファ
3 仮想ファイルシステム
4 デマルチプレクサ
5a,b ビデオデコーダ
6 ビデオプレーン
7a,b イメージデコーダ
7c,d、イメージメモリ
8 イメージプレーン
9 オーディオデコーダ
10 インタラクティブグラフィクスプレーン
11 バックグラウンドプレーン
12 レジスタセット
13 静的シナリオメモリ
14 再生制御エンジン
15 スケーラエンジン
16 合成部
17 HDMI送受信部
18 表示機能フラグ保持部
19 左右処理記憶部
20 プレーンシフトエンジン
21 オフセット設定部
22 BD-Jプラットフォーム
22a レンダリングエンジン
23 動的シナリオメモリ
24 モード管理モジュール
25 HDMVモジュール
26 UO検知モジュール
27a 静止画メモリ
27b 静止画デコーダ
28 表示モード設定イニシャル表示設定部
29 表示モード記憶部