以下、図面を参照しながら、本願に包含される再生装置の発明、集積回路の発明、再生方法の発明の実施形態について説明する。
上記課題解決手段を具備した再生装置の発明は、パッケージ媒体を再生するためのプレーヤ機器として実施することができ、集積回路の発明は、当該プレーヤ機器に組込まれるシステムLSIとして実施することができる。再生方法の発明は、このプレーヤ機器で実現される時系列手順として実施することができる。
図1は、パッケージ媒体である記録媒体、プレーヤ機器である再生装置、表示装置、眼鏡によって構成されるホームシアターシステムを示す。同図に示すように、上記パッケージ媒体である記録媒体、プレーヤ機器である再生装置は、表示装置、眼鏡、リモコンと共にホームシアターシステムを構成し、ユーザによる使用に供される。
リードオンリーメディア100は、上記ホームシアターシステムに、例えば、映画作品を供給する光ディスクである。
再生装置200は、表示装置400と接続され、記録媒体100を再生する。かかる再生は、左眼用映像(左目映像)の映像出力と、右眼用映像(右目映像)の映像出力を交互に繰り返すことでなされる。こうして再生される再生映像には、2D映像、3次元映像が存在する。2D映像とは、例えば表示装置の表示画面を含む平面をX-Y平面として捉えて、このX-Y平面上に位置する表示画面の表示位置における画素にて表現される画像であり、平面視画像とも呼ばれる。この2D映像を再生するための再生装置の再生モードを“2Dモード”又は“平面視再生モード”と呼ぶ。
対照的に3次元映像とは、上述のX-Y平面として捉えた平面と直交する直線をZ軸として、Z軸方向の奥行きを加えた画像である。この3次元映像を再生するための再生装置の再生モードを“3Dモード”又は“立体視再生モード”と呼ぶ。
リモコン300は、階層化されたGUIに対する操作をユーザから受け付ける機器であり、かかる操作受け付けのため、リモコン300は、GUIを構成するメニューを呼び出すメニューキー、メニューを構成するGUI部品のフォーカスを移動させる矢印キー、メニューを構成するGUI部品に対して確定操作を行う決定キー、階層化されたメニューをより上位のものにもどってゆくための戻りキー、数値キーを備える。
表示装置400は、再生装置200からの映像出力を受け取って、左目映像と右目映像とを同じタイミングでそのまま交互に出力する。タイミングの同一化は、映像出力と表示切り替えのフレームレートを同一とすることで実現される。視聴者の眼の負担を軽減するため、表示切り替え側のフレームレートのみを逓倍する構成をとることもできる。この場合は、左目映像および続いて出力された右目映像のセットを表示ディスプレイ400が蓄積し、表示ディスプレイ側でこれらの画像を高速に切り替えることで、高フレームレートの表示を行うこととなる。表示装置400において画面において、男女の姿が二重に重なっているのは、シャッター眼鏡500を装着せずに表示装置400の画面を見ると、3Dモードで右目映像、左目映像が重なり合って見えるからである。
シャッター眼鏡500は、印加電圧を制御することにより光の透過率を変えることが可能な液晶シャッターを備える。この光の透過率を変えることで(1)左目に入る光を透過するとともに、右目へ入る光を遮断する機能、または(2)左目に入る光を遮断するとともに、右目へ入る光を透過することが機能を実現する。これにより、左目映像を右目に見せることなく左目に見せ、右目映像を左目に見せることなく右目に見せるといったことが可能となる。立体視映像表示する場合、シャッター眼鏡500は、視聴者の左目に見せる画像(左目映像)と、利用者の右目に見せる右目用の画像(右目映像)を交互に切り替えて表示するように構成される。この切り替えのタイミングと同期させて、視聴者がかけるシャッター眼鏡において、左目映像を表示している間は、左目に入る光を透過させて右目に入る光を遮断させ、右目映像を表示している間は、右目に入る光を透過させて左目に入る光を遮断させることにより、ディスプレイで表示される左目映像はシャッター眼鏡により左目にだけ見え、逆に右目映像は右目にだけ見える仕組みを実現できる。
このような構成において、左目用の映像と右目用の映像について、視差の程度見え方の異なる映像とすることにより、視聴者は見え方の違いが奥行きを持ったように錯覚し、ディスプレイに表示されている映像が、あたかもディスプレイから飛び出て立体的な映像が表示されているかのように感じる。
ケーブル600は、非圧縮のビデオストリーム、非圧縮のオーディオストリームを高転送レートで転送するためのケーブルであり、HDMIケーブル等が該当する。
以上が、ホームシアターシステムについての説明である。続いて、立体視画像の詳細について説明する。
図2(a)〜(c)は、シャッター眼鏡500を通じて見ることができる立体視画像の飛出し度合を示す。図2(a)は、視差が大きい場合に映ずる立体視画像を示し、図2(b)は、視差が小さい場合に映じる立体視画像を示す。
図2(a)は、図の下側をユーザ側にしていて、上側を表示装置400側にしている状態を示す。立体視画像は、表示装置400と、シャッター眼鏡500との途中に存在する。図2(a)(b)では、立体視画像が表示装置400にどれだけ近づいているかが異なる。視差量が小さい図2(a)では、立体視画像は、表示装置400の近くに配置され、シャッター眼鏡500から遠のくことになる。左目画像、右目画像の視差量が大きい図2(b)では、立体視画像は表示装置400から遠退き、シャッター眼鏡500に近づいている。これら図2(a)(b)からも理解できるように、視差量の大小を制御することで、立体視画像をシャッター眼鏡500から遠ざけたり、近づけたりするという立体視画像の奥行き制御が可能になる。
図3は、立体視画像の飛出し度合の時間的遷移を示す。横軸は、ビデオストリームの時間軸を示し、縦軸は、表示装置400と、シャッター眼鏡500との間の空間を示す。横軸において、ビデオストリームの時間軸は、複数のフレームで構成される。飛出し度合は、フレーム毎に異なる値になっている。フレームFk-4,Fk-3では飛出し度合が小さく、フレームFkでは、飛出し度合が大きくなっている。
図4は、立体視画像の飛出し度合と、右目映像ー左目映像間の視差量との時間的遷移を示す。
Y軸をビデオストリームの時間軸としており、X軸を立体視画像の飛出し度合、Z軸を視差量としている。そうすると、視差量が大きいフレームでは、飛出し度合が大きいことがわかる。例えばフレームFk-4,Fk-3では視差量が大きいため飛出し度合が大きく、フレームFk+2,Fk+4では視差量が小さいため飛出し度合が小さい。この図4からも理解できるように、フレーム毎の視差量の違いは、立体視画像における飛出し度合に大きく影響を与える。飛出し度合の制御のための視差量の大きさのことを「奥行き量」という。
以上が立体視画像についての説明である。続いて、再生装置200の内部構成について説明する。
図5は、再生装置の内部構成を示す図である。本図に示すように、再生装置は、読出部1、デマルチプレクサ2、ビデオデコーダ3、ビデオプレーン4、プレーンシフトエンジン5、加算器6、再生状態管理部7、カレント処理フレーム記憶部8、左右処理記憶部9、次元モード記憶部10、次元判定部11、奥行き記憶部12、シナリオメモリ13、UO検知モジュール14、調整部15、制御部16、開始位置決定部17、プレーンオフセット決定部18から構成される。
読出部1は、立体視映像を構成するコンテンツが記録された記録媒体を装填して、当該記録媒体に対する読み出し/書き込みを実行する。当該記録媒体には、リードオンリーメディア100を始め、リライタブルなリムーバブルメディア、リライタブルなビルドインメディアといった種別がある。また再生装置はランダムアクセス部を具備している。ランダムアクセス部は、ビデオストリームの時間軸における任意の時点からのランダムアクセスを実行する。ここでビデオストリームには、通常のビデオストリームと、マルチビュービデオストリームとがある。マルチビュービデオストリームとは、ベースビュービデオストリーム、ディペンデントビュービデオストリームから構成される、立体視用途のビデオストリームである。そしてランダムアクセス部は、具体的には、ビデオストリームの時間軸における任意の時点からの再生が命じられた場合、シナリオデータの1つであるエントリーマップを用いて、その任意の時点に対応するアクセスユニットのソースパケット番号をサーチする。かかるアクセスユニットは、独立復号可能なピクチャデータ、又は、ビューコンポーネントの組みを含むものである。ビューコンポーネントとは、立体視映像を構成する構成要素のことであり、一枚の右目映像、一枚の左目映像のそれぞれがビューコンポーネントに該当する。上記サーチによって、当該アクセスユニットについてのアクセスユニットデリミターを格納したソースパケットのソースパケット番号が特定される。かかるソースパケット番号からの読み出し、及び、デコードを実行する。シーンジャンプにあたって、分岐先を示す時間情報を用いて上記サーチを実行することにより、ランダムアクセスを実行する
デマルチプレクサ2は、入力ストリームに対して多重分離を行い、複数種別のパケッタイズドエレメンタリストリームを出力する。このように出力されるエレメンタリストリームには、ビデオストリーム、字幕用のグラフィクスストリーム、対話用のグラフィクスストリーム、オーディオストリームがあり、これらのうちビデオストリームをデマルチプレクサ2に出力する。字幕用のグラフィクスストリーム、対話用のグラフィクスストリームについては、これらに対応する専用のグラフィクスデコーダ(図示せず)に送り込み、オーディオストリームについては、オーディオデコーダ(図示せず)に送り込む。
ビデオデコーダ3は、デマルチプレクサ2の多重分離により抽出されたビデオストリームを構成するアクセスユニットをデコードして、非圧縮のピクチャデータをビデオプレーン4に書き込む。マルチビュービデオストリームのデコードにあたって、ディペンデントビュービデオストリームにおけるシーケンス先頭のアクセスユニットから補助拡張データを取り出して、この補助拡張データ内に存在する、個々のビデオフレーム毎の奥行き量を制御部16に書き込む。
ビデオプレーン4は、ビデオデコーダ3のデコードにより得られた非圧縮のピクチャデータを構成する、一画面分の画素データを格納することができるメモリである。ビデオプレーン4の構成には、2プレーン構成、1プレーン構成があり、2プレーン構成においてビデオプレーン4は左目ビデオプレーン及び左目ビデオプレーンの組みから構成される。2プレーン構成を構成する左目ビデオプレーン、左目ビデオプレーンのそれぞれには、マルチビュービデオストリームをデコードすることによりえられる左目映像、右目映像が格納される。1プレーン構成である場合、ビデオプレーン4には、通常のビデオストリームをデコードすることにより得られた非圧縮のピクチャデータを構成する画素データが、格納されることになる。
プレーンシフトエンジン5は、ビデオプレーン4が1プレーン構成である場合、プレーンシフトを実現する。左右処理対象記憶部11に現在の処理対象であるカレント処理フレームFcが左目映像か右目映像かを判定した後、プレーンオフセット決定部14で決定されたプレーンオフセットを用いてビデオプレーンに格納されるピクチャに基づき表示される出力映像を表示画面の水平方向(横軸)に対して基準位置からどの程度シフトするかというオフセットが、後述するプレーンオフセット決定部18によって決定される。こうして決めたオフセットだけシフトを行うよう、プレーンシフトエンジン5はビデオプレーンに格納された各画素データのシフト処理を行う。図示はしていないが、ビデオプレーン4の他に、非圧縮の字幕グラフィクスを格納するためのグラフィクスプレーン、対話的なグラフィクスを格納するためのグラフィクスプレーンが存在しており、ビデオプレーン4はこれらのグラフィクスプレーンに格納されている各画素データに対してもプレーンシフトを実行する。
加算器6は、ビデオプレーン4、字幕用のグラフィクスプレーン、対話用のグラフィクスプレーンに格納されている個々の画素データに所定の透過率を乗じて加算する。これは、ビデオプレーン4、字幕用のグラフィクスプレーン、対話用のグラフィクスプレーンに格納されている画素の重畳を行うためである。ビデオプレーン4を構成する全ての画素データに対して加算がなされれば、ビデオプレーン4、字幕用のグラフィクスプレーン、対話用のグラフィクスプレーンのレイヤ合成が完了する。以上のレイヤ合成がなされれば、合成後のピクチャデータを構成する画素データを加算器6に出力することにより、出画を行う。以上のビデオデコーダ3、ビデオプレーン4、プレーンシフトエンジン、加算器6は、一体となって、再生部を構成する。
再生状態管理部7は、カレント処理フレーム記憶部8、左右処理記憶部9、次元モード記憶部10を備え、上記再生部の再生状態を管理する。
カレント処理フレーム記憶部8は、カレント処理フレームFcを特定するための複数のパラメータを格納する複数の再生状態レジスタから構成される。カレント処理フレームFcを特定するための複数のパラメータには、カレントタイトル番号、カレントプレイリスト番号、カレントプレイアイテム番号、カレントチャプター番号、カレントブックマーク番号、カレントアングル番号、カレントPresentation Time(PTM)があり、これらのパラメータを用いることでカレント処理フレームFcは特定される。
ここでカレントタイトル番号とは、リードオンリーメディアのインデックステーブルに記述された複数のタイトルのうち、現在の再生対象になっているものを意味する。
カレントプレイリスト番号とは、リムーバブルメディアに記録されている複数のプレイリスト情報(メインパス及びサブパスからなる再生経路を定義する情報のことである)のうち、現在の処理対象になっているものをいう。
カレントプレイアイテム番号とは、カレントプレイリスト番号に対応するプレイリスト情報を構成する複数のプレイアイテム情報(ビデオストリームの時間軸上でIn_Time、Out_Timeの組みを定義することにより、一個の再生区間を定義する情報のことである)のうち、現在の再生対象になっているものをいう。
カレントチャプター番号とは、プレイリスト情報を構成する複数のプレイアイテム情報に設定されている複数のチャプターのうち、カレントのチャプターとして選択されているものの番号をいう。上記プレイリスト情報は、プレイリストマーク情報を有しており、このプレイリストマーク情報は、プレイアイテム情報と、タイムスタンプとの組みでプレイアイテム情報に対するマーク点を指定することができる。プレイリスト情報に対して設定された個々のチャプターは、このプレイリストマーク情報によって特定される。プレイリスト情報には、必ずプレイリストマーク情報によってチャプターが特定されているから、プレイリストによるビデオストリームの再生時において、プレイリストマーク情報によって特定される複数のチャプターのうち、何れか1つのものがカレントチャプター番号によって特定される。そしてビデオストリームの再生進行に伴い、カレントチャプター番号が更新される。
カレントブックマーク番号とは、プレイリスト情報を構成する複数のプレイアイテム情報に設定されている複数のブックマークのうち、カレントのブックマークとして選択されているものの番号をいう。上記ブックマークは、オーサリング者によって定められたチャプターとは異なり、ユーザ操作によって特定されるものである。
ブックマークはユーザ操作によって特定されるものだから、再生装置は、ユーザからの画面のマーキング操作を受け付けて、上記プレイリストマーク情報を装置内部で生成することによりブックマークを特定する。かかる操作によって複数のブックマークが特定されれば、プレイリストによるビデオストリームの再生時において、複数のブックマークのうち、何れか1つのものがカレントブックマーク番号によって特定される。そしてビデオストリームの再生進行に伴い、カレントブックマーク番号が更新される。以上のカレント処理フレーム記憶部8に格納されているパラメータのうち、カレントプレイアイテム番号、カレントチャプター番号、カレントブックマーク番号を新たなものに上書きすることにより、いわゆる“シーンジャンプ”の実行がなされる。
カレントアングル番号とは、プレイアイテム情報が2つ以上のストリーム参照情報を有していて、それぞれのアングル参照情報により、カメラアングルが異なる複数のビデオストリームが参照されていた場合、カメラアングルが異なる複数のビデオストリームのうち、どれをカレントのビデオストリームとするかを定めるものである。かかるカレントアングル番号は、ストリーム参照情報が1つしかないプレイアイテム情報において更新されることはない。ストリーム参照情報を2つ以上有しているプレイアイテム情報においてのみ、更新される。
カレントPTMとは、カレントプレイアイテム番号に対応するカレントプレイアイテム情報で参照されているビデオストリームの時間軸のうち、現在の再生時刻を示すものであり、タイムスタンプの時間精度のクロック数により表現される。カレントPTMは、ビデオデコーダによるビデオストリームのデコード処理の進捗に伴い、随時更新される。
これらカレントタイトル番号、カレントプレイリスト番号、カレントプレイアイテム番号、カレントチャプター番号、カレントブックマーク番号、カレントアングルの何れかが変化するような事象を“再生状態の変化”という。しかし、カレントPTMのみが更新されたとしても“再生状態の変化”が生じたとは捉えない。カレントPTMは、上述したように、ビデオストリームの再生進行に従い時々刻々と変化するものだからである。
左右処理記憶部9は、ビデオストリームを構成する複数のフレームのうち、現在の処理対象となるフレームが左目映像か右目映像かを記憶する。
次元モード記憶部10は、映像の出力形態が2Dモードであるか、3Dモードであるかを示すカレントモード番号を格納する。次元モード記憶部10に記憶されているカレントモード番号を、新たなものに上書きすることにより、2Dモードを3Dモードに切り替えたり、3Dモードを2Dモードに切り替えることができる。以上が、再生状態管理部7を構成するカレント処理フレーム記憶部8、左右処理記憶部9、次元モード記憶部10についての説明である。続いて、次元判定部11の詳細について説明する。
次元判定部11は、シナリオデータに含まれるモード設定のためのパラメータと、カレント処理フレーム記憶部8におけるパラメータとを用いて、再生装置における再生モードを決定するためのモード決定プロシージャを実行し、再生装置における出力モードを2Dモードにするか、3Dモードにするかを判定する。再生モードを決定すれば、決定後の再生モードを示すカレントモード番号を次元モード記憶部10に書き込む。
奥行き記憶部12は、ビデオデコーダがシーケンスの補助拡張データから取り出した複数のフレームについての奥行き量(フレームFmからフレームm+nまでのそれぞれのフレームにおける奥行き量)を格納する。
シナリオメモリ13は、デマルチプレクサ2を経ることなく記録媒体から読み出されたストリーム管理情報やプレイリスト情報、バイトコードアプリケーション、ナビゲーションコマンド列を格納する。
UO検知モジュール14は、GUIのボタン部材を確定する操作、スキップ操作をリモコンに対して行った場合、その操作を示すユーザ操作(UO)イベントを出力する。
調整部15は、再生状態管理部7のカレント処理フレーム記憶部8、左右処理記憶部9によって管理されている再生状態が変化した場合、ビデオストリームの時間軸のうち変化時点の前に位置する複数のフレーム、及び、変化時点の後に位置する複数のフレームの中から奥行き変化の基準とすべきものを選び、その選んだフレームを用いて、立体視再生の奥行きを調整する。この調整は、適切な再生位置を決定すること、適切なプレーンオフセットを決定することという2通りの処理を含む。図中の制御部16、開始位置決定部17、プレーンオフセット決定部18はこれらの処理を実現するためのものである。
制御部16は、外部からの再生状態の切替要求を受け付けて、切替要求に係る処理を実行することで再生装置における再生状態を変化させる。再生状態管理部7は、この変化後の再生状態を管理することになる。より具体的にいうと、制御部16はROM、RAM、CPUを備えたマイコンシステムであり、ROMには再生装置を制御するプログラムが記録されており、ROM内のプログラムがCPUに読み込まれ、プログラムとハードウエア資源とが協動することにより切替要求に係る処理を実行する。切替要求に係る処理は、AV再生機能の1つである。AV再生機能とは、再生開始、再生停止、一時停止、一時停止の解除、静止画機能の解除、再生速度を即値で指定した早送り、再生速度を即値で指定した巻戻し、音声切替、副映像切替、アングル切替といった、AV再生のための一般的機能をいう。
本実施形態で対象としている切替要求には、ユーザの操作によるものと、シナリオデータに組込まれた切替命令によるものとがある。AV再生機能として規定された処理のうち、これらの切替要求で要求されたものを開始することにより、再生装置における再生状態の変化が発生する。前者の切替要求について説明する。前者の切替要求には、例えば、ユーザが次元切替キーを押下した場合の次元切り替え(1)、ユーザスキップが発生した際のシーンジャンプ(2)、数値ダイレクト入力によるチャプタージャンプ(3)、アングル切替(4)等がある。
次元切替キー押下による次元切替え(1)では、その次元切替キーの押下時点が“切替要求の発生時点”となり、その押下時点の次の時点が、切替要求に係る処理を開始するよう、要求された“要求時点”となる。次元要求の切り替えでは、次元切替キーの押下がなされた時点の次の時点で、出力モードが切り替わるのが望ましいからである。次元切替キーの押下に対応する処理として、次元モード記憶部10に記憶されているカレントモードを示す番号を変更する。カレントモードが2次元であるなら3次元へ、カレントモードが3次元であるなら2次元に変更する。切替要求に対して、以上の処理を実行することで出力モードの変更がなされる。
ユーザスキップによる切替要求(2)では、ユーザがスキップ操作を行った時点が“切替要求の発生時点”となる。そして、スキップ操作によるスキップ先が切替要求で処理を開始するよう要求された“要求時点”となる。スキップ操作は、スキップ先での再生を開始することを要求する操作だからである。
ユーザがチャプタースキップを行った場合、切替要求に対応する処理としてカレントチャプター番号をインクリメント又はデクリメントする処理を実行にする必要がある。具体的には、カレントチャプター番号をインクリメント又はデクリメントして、インクリメント又はデクリメント後のカレントチャプター番号に対応するプレイリストマークが参照しているプレイアイテムのプレイアイテム番号、当該プレイリストマーク情報に対応するカレントチャプター番号をカレント処理フレーム記憶部8に設定する。そして要求時点を示す時刻情報をカレント処理フレーム記憶部8のPTMレジスタに書き込んで、カレント処理フレームFcの更新を行う。最後に、更新後のカレント処理フレームFcからのランダムアクセスを読出部1に命じて、更新後のカレント処理フレームFcからの再生を行わせる。
切替要求に対して、以上の処理を実行することでシーンジャンプはなされる。
数値のダイレクト入力によるチャプタジャンプ(3)では、ユーザが数値入力操作を行った時点が切替要求の発生時点となる。そして、数値入力された番号に対応するチャプターが切替要求で処理を開始するよう要求された要求時点となる。具体的には、入力数値された数値をカレントチャプター番号として設定して、新たなカレントチャプター番号に対応するプレイリストマークが参照しているプレイアイテムのプレイアイテム番号、当該プレイリストマーク情報に対応するカレントチャプター番号をカレント処理フレーム記憶部8に設定する。切替要求に対して、以上の処理を実行することで、数値入力によるシーンジャンプはなされる。
アングル切替による切替要求(4)では、ユーザがアングル切替操作を行った時点が切替要求の発生時点となる。そして、アングル切替要求で切り替えることが要求されたデジタルストリームの先頭位置が、切替要求で処理を開始するよう要求された要求時点となる。そしてアングル切替要求に対応する処理とは、アングル切替操作に応じてカレントアングル番号をインクリメント又はデクリメントして、プレイアイテム情報に存在する複数のストリーム参照情報のうち、インクリメント又はデクリメント後のカレントアングル番号に対応するものに従い、デジタルストリームを読み出すというものである。このインクリメント又はデクリメント後のカレントアングル番号に対応するストリーム参照情報は、切替後のアングル番号に対応するデジタルストリームを参照しているからである。切替要求に対して、以上の処理を行うことで、アングル切替はなされる。
後者の切替要求について説明する。後者の切替命令とは、前者のユーザ操作による切替要求を、シナリオデータに組込まれたナビゲーションコマンド、又は、APIコールに対応するバイトコードによって実現するものである。後者の切替命令において、切替要求に係る処理の開始を要求する要求時点は、当該切替命令であるナビゲーションコマンドのオペランドや、APIコールに対応するバイトコードの引数により“切替先”として指定されている再生開始点である。後者の切替命令において、切替要求に係る処理が発生する発生時点は、その切替命令であるナビゲーションコマンドやバイトコードを読み込む読み込み時点となる。説明の簡略化のため、以降、本実施形態で対象とする切替要求は、基本として後者の切替命令であるものとする。
先読み制御部16aは、制御部16の構成要素であり、“奥行き解析のための先読み”を行う。“奥行き解析のための先読み”とは、切替要求に係る処理を開始するよう要求された要求時点である切替先のフレームFmにおいて、要求時点より後のnフレーム、又は、要求時点より前のpフレーム並びに要求時点より後のqフレームをまとめて読み出し(ここで、n=p+qの関係がある)、これらのフレームの奥行き量をビデオデコーダから分離させて奥行き記憶部12に格納するというものである。この分離のために読み出された複数フレームは、全てが再生される訳ではない。再生されるフレームは、奥行き変化の基準となるフレーム、及び、それ以降のフレームに限られる。処理開始が要求された要求時点である切替先フレームより後のnフレーム、又は、要求時点である切替先フレームより前のpフレーム並びに要求時点である切替先フレームより後のqフレームは、奥行き解析のために読み出されるに過ぎないからである。
対話制御部16bは、先読み制御部16aと同様、制御部16の構成要素であり、シナリオデータ及びイベントに基づき、ランダムアクセスを読出部1に命じることで対話的な処理を実行する。具体的にいうと、表示装置400によるGUIの表示において、ハイライト状態になっているボタン部材に対して確定操作がなされて、確定操作を示すイベントが発生すると、対話制御部16bはボタン部材に対応するボタンオブジェクトのメソッドであるバイトコード又はナビゲーションコマンドを実行する。
当該ボタン部材がシーンジャンプを受け付けるものである場合、切替命令となるバイトコード又はナビゲーションコマンドがメソッドとしてボタン部材に組み込まれているので、この切替命令を実行することでカレント処理フレームFcを特定するための複数パラメータの更新を行う。
開始位置決定部17は、再生状態の切替要求が次元切替要求、又は、シーン切替要求である場合に、これらの要求に係る処理を開始すべき開始時点を決めるものである。
次に、要求時点の種別について説明する。切替要求には要求時点が固定であるものと、要求時点が可変であるものとがある。
固定された要求時点とは、例えば、シーンジャンプでジャンプ先となるチャプターや、アングル切替で切替先となるアングル映像などが該当する。映画などを記録したBD-ROMの場合、チャプターはコンテンツ作者の意図で区切られており、再生開始位置は、各々のチャプターでの最初のフレームに固定されている。また、アングル切替など再生がシームレスに続く場合もこの命令に属する。
可変である要求時点とは、チャンネル切替の切替先となるストリームや、ブックマークジャンプにおいてジャンプ先となるブックマークなどがある。ブックマークジャンプは、ユーザーが指定したフレームから再生することが理想的ではあるが、ユーザーはフレーム単位でブックマーク位置を選択しているのではないため、数フレームの誤差は許容され得るからである。
特に開始位置決定部17は、次元切替要求の発生時において、切替要求に係る処理を開始するよう要求された要求時点(切替先フレームFm)以降に位置する複数のフレーム(フレームFm〜Fm+n)のうち、切替要求の発生時点(フレームFk)との奥行き量の差分が最も少ないフレームを奥行き調整の基準となるフレームFdとして選ぶ。こうして選んだ奥行き調整の基準となるフレームFdを、切替要求に係る処理を開始すべき開始時点として決定することで、奥行き調整を実行する。つまり開始位置決定部17は、切替要求の要求時点である切替先フレーム前後のフレームと、切替要求の発生時点のフレームとで、両者の奥行き量を比較することにより、奥行き調整の基準となるフレームを定めるのである。要求時点である切替先フレームmを始点としたnフレームの範囲内から、切替要求に対応する処理の開始時点フレームFdを選ぶのは、2次元から3次元への切替は、ユーザの発意によるもので、実際の要求時点からの誤差が多少あっても許容されるからである。
奥行き調整の基準となるべきフレームの選択範囲を規定するフレーム数“n”は、リードオンリーメディアに対するアクセス単位に従い定めるのが望ましい。具体的にいうと、一回のアクセスで2〜3GOPに対応するアクセスユニットを読み出すのなら、これらのアクセスユニットに包含されるフレーム数である48〜72フレームに基づきnを定めるのが望ましい。また、リードオンリーメディアからの一回のアクセスでは、リードオンリーメディアからの読み出し用のバッファ(リードバッファ)に基づき、アクセスサイズが定められる。このリードバッファに基づき、奥行き調整の基準となるべきフレームの選択範囲を規定するのが望ましい。説明の簡略化のため、以降の説明において奥行き調整の基準となるべきフレームの選択範囲を規定するフレーム数“n”は、単純で扱いが簡単な数値、つまり、“5”又は“6”とする。
また、シーン切替要求の発生時において、シーン切替要求に係る処理を開始するよう要求された要求時点であるフレームFm以前に位置する複数フレーム(フレームFm-p〜Fm)、及び、フレームFm以降に位置する複数のフレーム(フレームFm〜Fm+q)のうち、シーン切替要求の発生時点となるフレームFkとの奥行き量の差分が最も少ないフレームを奥行き調整の基準となるフレームFdとして選ぶ。こうして選んだ奥行き調整の基準となるフレームFdを、切替要求に係る処理を開始すべき開始時点として決定することで、奥行き調整を実行する。処理開始時点の決定による奥行き調整は、要求時点である切替先フレームが可変である場合になされる。切替要求に対応する要求時点である切替先フレームが可変である場合、要求時点が未来方向に遅延することが許容されるばかりか、過去方向に早まることも許容される。よって、切替要求に対応する要求時点が可変である場合、要求時点以前に位置するpフレームと、要求時点以降に位置するqフレームとを、奥行き調整の基準とすべきフレームを選ぶ選択範囲とする。このpと、qとは、n=p+qとの関係を満たすべきである。リードオンリーメディアに対する一回のアクセスで、奥行き調整の基準とすべきフレームの選択範囲がまとめて読み出されることが望ましいからである。
プレーンオフセット決定部18は、プレーンシフトにあたってのオフセットの基準となる奥行き量を有しているオフセット基準フレームFdを決める。オフセット基準フレームFdの選択は、シーン切替要求に係る処理を開始するよう要求された要求時点である切替先フレームFm以降に位置する複数のフレーム(フレームFm〜Fm+n)のうち、シーン切替要求の発生時点(フレームFk)との奥行き量の差分が最も少ないフレームを決めることでなされる。そして、こうして決めた奥行き調整の基準となるオフセット基準フレームを用いて奥行き調整を行う。調整部15による奥行き調整は、シーン切替要求の発生時点であるフレームFkから、オフセット基準フレームFdまでの期間に属する各フレームの映像出力にあたって、プレーンシフトエンジン5がオフセット基準フレームFdの奥行き量に対応するオフセットを、水平方向のオフセットとして用いることでなされる。オフセット基準フレームの決定による奥行き調整は、切替要求に係る処理を開始するよう要求された要求時点が固定である場合になされる。固定となる要求時点とは、オーサリング者が作成したプレイリストマーク情報で特定されている要求時点のことである。切替要求に対応する要求時点が固定である場合、オフセット基準フレームの奥行きで立体視再生がなされることになり、立体視映像の飛出し度合は弱められているものの、切替要求で要求された要求時点から再生を開始していることは明らかである。以上のように、切替要求に対応する要求時点が固定である場合は、切替要求に対応する処理の開始時点についての要求を遵守しつつも、立体視映像の飛出し度合を制限することにより、ユーザの視覚に対するケアを充実させていることがわかる。
以上が再生装置の内部構成における構成要素についての説明である。続いて、再生装置のソフトウェア的な処理手順を示す詳細について説明する。
図6は、調整部の処理手順を示すフローチャートである。ステップS1〜ステップS2は、2D再生のためのフローチャートである。ステップS1の判定ステップは、2Dモードから3Dモードへの切替命令が発生したかどうかの判定であり、この判定がNoであれば、2D再生の実行を継続する(ステップS2)。
切替命令が発生すれば、ステップS1がYesになってステップS3において2Dモードから3Dモードへの切り替えを実行し 、ステップS4−ステップS8の判定ステップ列に移行する。ステップS4は、3Dモードにおけるシーンジャンプが発生したか否かの判定であり、ステップS4がNoであれば、プレーンシフトを実行し(ステップS5)、各レイヤのプレーン内容を合成して出画し(ステップS6)、カレント処理フレームFcをインクリメントする(ステップS7)という処理を繰り返す。
シーンジャンプが発生した場合(ステップS4でYes)、ステップS9の判定がなされる。ステップS9は、切替要求で処理を開始するよう要求された要求時点である切替先フレームが可変であるか否かの判定であり、可変であれば、ステップS10において、要求時点のフレームが可変である場合のシーンジャンプを実行する。可変でなければ、ステップS11において、要求時点のフレームが固定されている場合のシーンジャンプを実行する。
以上のフローチャートの処理手順を、再生装置の構成要素と関連付けて説明する。以降の説明において、対象となる切替要求とは2次元の出力映像から3次元の出力映像への切替を要求する次元切替命令、3次元の出力映像から別の3次元の出力映像への切替を要求するシーン切替命令のことをいう。
切替要求が発生すると、まず、切替要求が発生する発生時点直前の出力映像が2次元の出力映像を表示しているのかまたは、3次元の出力映像を表示しているのかを判断して、当該切替要求が2Dモードから3Dモードへの切替を要求するか否かを判定する(ステップS1)。かかる判断は例えば次元モード記憶部10に格納されているカレントモード番号を参照することによりなされる。
切替要求が発生する発生時点直前の出力映像の次元モードが2Dモード(つまり、2次元の出力映像を表示している)である場合、切り替え先の出力映像を2次元で表示するのか、または3次元で表示するのかを判断する。この判断は例えば、切替命令に含まれている切替先映像の次元モードに関する情報を参照することや、切替命令に含まれている次元モード更新のためのパラメータ(次元モード記憶部10のカレントモード番号を更新するための更新パラメータ)を参照することでなされる。
ステップS1において切替先の次元モードが3Dモードであると判定された場合、切替要求は、2次元の出力映像から3次元の出力映像への切替を要求する次元切替要求であると判断し、2Dモードから3Dモードへの切替を行う(ステップS3)。
カレントの次元モードが2Dモードである場合において、次元切替要求が発生すれば、ステップS8において、切替先の次元モードが3Dモードであるか否かを判定する。切替前の次元モードが2Dモードであれば、奥行き量、切替後の奥行き量はともに“0”(つまり表示画面上に表示がされている)であるので、奥行き調整は不要であるため、奥行き量の調整を行うことなく、ステップS1〜ステップS2のループを継続する。
カレントの次元モードが3Dモードである場合において、次元切替要求が発生すれば、ステップS3において、切替先の次元モードが2Dモードであるか否かを判定する。切替前の次元モードが3Dモードであれば、ステップS8において切替要求に従って、切り替え後の出力映像を2次元で表示するのか、または3次元で表示するのかを判断する。この判断は例えば、切替命令に含まれている、切替先の出力映像の次元モードに関する情報を参照したり、切替命令に含まれる次元更新のためのパラメータ(次元モード記憶部10に格納されているカレントモード番号を更新するためのパラメータ)を参照することによりなされる。切り替え先の出力映像の次元モードが2Dである場合、奥行き量の調整を行うことなく、2Dの切替要求に対応する切替処理を行った後、ステップS1〜ステップS2のループに移行する。
切替先の出力映像の次元モードが3Dモードである場合、S9において、切り替え先の出力映像を表示するためのフレームを変更してよいかどうか(つまり可変かどうか)を判断する。
S9において、可変であると判断した場合、数フレームのずれであれば、3D表示を開始するフレームをずらすことが許容されるシーン切替命令であると判断し、切替先フレームが可変時のジャンプを行う(ステップS10)。
S9において、可変であると判断しなかった場合、切替後に再生を開始すべき映像のフレームが固定されているシーン切替命令であると判断し、切替先フレーム固定時のシーンジャンプを行う(ステップS11)。
S8の判断、つまり、切り替え先の出力映像を表示するためのフレームをずらして再生を開始してよいかどうかの判断は、具体的には例えば切替命令の内容が、シーン切替命令に例示した上記命令のいずれであるのかを、APIコールに対応するバイトコードの種別、又は、ナビゲーションコマンドのオペコードによって特定すればよい。
図7は、2Dモードから3Dモードの切替を要求する次元切替の処理手順を示すフローチャートである。ステップS101で、切替要求で処理を開始するよう要求された要求時点であるフレームFkを始めとするフレームFk〜フレームFk+nの奥行き量を格納し、ステップS102において、最も0に近い奥行きをもつフレームFdを検索する(ステップS102)。その後、ステップS103〜ステップS106のループを実行する。ステップS103は、ループの繰り返し条件を定めるものである。繰り返し条件とは、カレント処理フレームFc<フレームFdを満たすかどうかであり、満たす場合、2Dモードを維持し(ステップS104)、カレント処理フレームFcを2Dモードで再生して(ステップS105)、カレント処理フレームFcをインクリメントする(ステップS106)という処理を繰り返すことになる。
この繰り返しにより、フレームFdに到達するまで、カレント処理フレームFcが2Dモードで再生されることになる。カレント処理フレームFcがフレームFdに到達した場合、ステップS103がNoになりステップS107〜ステップS108を実行する。これらは、カレント再生モードを3Dモードにして(ステップS107)、各レイヤのプレーン内容を合成し、出画する(ステップS108)というものである。
次元切替要求が発生した場合の処理手順を、再生装置における構成要素と関連付けて説明する。例えば、2次元の出力映像から3次元の出力映像への切替を要求する次元切替要求が発生すると、奥行き量記憶部12は、次の切り替え先の出力映像のフレームFkをはじめとする連続するn枚のフレームの奥行き量を奥行き記憶部12に格納する(S101)。再生位置決定部13は、格納したn枚のフレームの中から、最も0に近い(表示画面の位置に最も近い)奥行きをもつフレームFdを探索し(S102)、このフレームFdを次元切替を行なうフレームとして決定する。
ステップS103〜ステップS106のループにおいてデマルチプレクサ2は、次元判定部10の判定に従い、フレームFdに達するまでは2次元用の処理をし続け(S105)、フレームFdに達した時点で出力映像を3次元で表示をするための処理を開始する(S107、S108)。
当該ループにおいて次元判定部10は、フレームFdに到達するまで間は、2次元で出力映像を表示すべきと判定し、フレームFdに到達した後は3次元で出力映像を表示すべきと判定するように設定する。
ステップS103〜ステップS106において、2次元用の処理をし続けるというのは、例えば切替後の出力映像(3次元の出力映像)を用いて2次元で表示をすることであり、より具体的には3次元の出力映像として視差の程度に見える角度の異なる右目用の出力映像と左目用の出力映像を用いて3次元表示をするような方式においては、右目用の出力映像または左目用の出力映像のいずれか一方を用いて表示をすれば足りる。また1つの出力映像について、右目と左目とで異なるオフセットを与えて、3次元表示をするような方式においては、オフセットを同じ値(例えば、0にする)するなどの方法がある。
図8(a)は、奥行き量変化の時間的遷移を示す図である。図8(a)の第1段目は、ビデオストリームの時間軸を構成する複数のフレームを示す。第2段目は横軸を時間軸とし、縦軸を奥行き量としたグラフを示す。
図8(b)は、図8(a)におけるグラフを示す。本図は、図5(a)をベースとして作図されており、このベースとなる図5と異なるのは、図8(b)では、3Dモードへの切替時点の発生時点が時間軸上にプロットされており、この3Dモードへの切替時点となる点である。
図8(b)において、フレームFk-1で、3次元への切替要求が発生したとして、次のフレームFkから3次元で表示をするための処理が開始されたと仮定する。この場合、2次元の表示においては、奥行きが“0”であったのに対し、3次元の表示に切り替えた時点のフレームがFkとし、フレームFkに対して与えられている奥行き量をZ(Fk)とすると、切り替える前後では奥行き量が0からZ(Fk)に変化する。
このとき、切り替えの前後で生じる奥行き量の差に相当するZ(Fk)の程度が大きければ、視聴者は視差角の程度、眼球(瞳)の向きを大きく変える必要があり、これが原因で眼に疲れが生じる場合がある。
図8(c)は、3Dモードへの切替時点の発生時点である、フレームFkを基準にした読込期間を示す。読込期間は6フレームであるので、フレームFkを基準にした5フレーム(n=5)の範囲、つまり、フレームFkからフレームk+5までが読込期間になっている。図8(c)では、奥行き量記憶部12において、次のフレームをはじめとする連続する6枚のフレームの奥行き情報を格納できるようにしており、フレームFk-1で切替処理が発生すると、奥行き量記憶部12にフレームFkからFk+5までの各フレームの奥行き量が格納される。
第2段目は、読込期間のうち奥行き量が最小となるFk+3と、最小となる奥行き量であるZ(Fk+3)とを示す。Fk+3の奥行き量が最小となるから、3Dモードへの切替処理を開始する時期をFk+3に変更する。具体的には、Fk-6からFk+2までは、2Dモード、Fk+3以降を3Dモードとする。
奥行き量が最小となるFk+3以降が、3Dモードの開始時点になるから、2Dモードから3Dモードへの切り替え時点における眼球の移動量は最小になる。よって、Fk〜Fk+2までは2次元処理を続け、Fc=Fk+3に達すると、3次元処理に切り替える。上記の処理により、切替時発生する奥行き量をZ(Fk)からZ(Fk+3)に抑えることが可能になる。これにより、3次元の表示への切り替え時に生じる視聴者の眼の焦点位置の変化を抑え、眼の疲れを低減することが可能となる。
図9は、切り替え先フレーム可変時のシーンジャンプ手順を示すフローチャートである。このフローチャートでは、切替要求の発生時点であるフレームFkの奥行き量を格納し(ステップS201)、切替要求で処理を開始するよう要求された要求時点であるフレームFm前後に存在する、フレームFm-p〜Fm+qの奥行き量を格納して(ステップS202)、フレームFm-pからFm+qまでの範囲に位置するフレームのそれぞれについて、フレームFkの奥行き量Z(F)との差分を計算する(ステップS203)。そして、そうして計算した差分が最も小さい奥行きをもつフレームFdをカレント処理フレームFcに設定することでシーンジャンプを行う(ステップS204)。
次に、図9の処理手順に、再生装置の構成要素を関連付けて3次元から3次元のシーン切替要求が発生した場合の動作を説明する。シーン切替要求が発生すると、奥行き量記憶部12に、シーン切替要求が発生した発生時点のフレームFkの奥行き量を格納し(S201)、次にシーンの切替先フレームとのその前後n枚の連続したフレームの奥行き量を奥行き記憶部12に格納する(S202)。再生位置決定部13は、格納したn枚のフレームの奥行き量と、フレームFkの奥行き量Z(Fk)との差分の大きさ(例えば差の絶対値)を計算し(S203)、切替前フレームの奥行きZ(Fk)との差分の大きさが最も小さい奥行きをもつフレームFdを表示切替(つまり、シーン切替)のタイミングと判定し、制御部7に通知する。制御部7は、処理対象のフレームをFdに移動させ、移動したフレームFdから再生を開始する(S204)。
図10は、ジャンプ時における奥行き量変化を示す図である。図10の第1段目は、ジャンプ元のビデオストリームの時間軸を構成する複数のフレーム(Fk-6,Fk-5,Fk-4,Fk-3・・・・・・Fk+4,Fk+5,Fk+6,Fk+7)を示し、第2段目のグラフは、第1段目における各フレームでの奥行き量の時間的遷移を示す。第3段目は、ジャンプ先となるビデオストリームを構成する複数のフレーム(Fm-6,Fm-5,Fm-4,Fm-3・・・・・・・・Fm,Fm+4,Fm+5,Fm+6,Fm+7)を示し、第4段目のグラフは、第3段目のビデオストリームの時間軸を構成する各フレームの奥行き量の時間的遷移を示す。第1段目の時間軸において、ジャンプ元は、フレームFkであり、このフレームFkでの奥行き量は、Z(Fk)となる。
第4段目のグラフには、ジャンプ先となるFmにおける奥行き量Z(Fm)がY軸上にプロットされている。図11(a)は、シーンジャンプの前後の奥行き量変化を示す。図11(a)の第1段目は、ビデオストリームiの時間軸と、ビデオストリームjの時間軸とを重ね合わせて示す。この図11(a)では、ビデオストリームiのフレームFkから、ビデオストリームjのフレームFmへのジャンプがなされていることがわかる。第2段目は、図10のビデオストリームiの奥行き量の変化を示すグラフと、図10におけるビデオストリームjの奥行き量の変化を示すグラフとを重ね合わせて示す。ここで、Z(Fk)と、Z(Fm)との違いが大きいから、フレームFk→Fmのシーンジャンプが発生した場合、飛出し度合の変化が多大になり、眼球の疲れを引き起こす。
図11(b)は、奥行き量調整のために定められた読込期間を示す。(b)では、切替要求に係る処理の要求時点であるフレームFmを中心とする前後3フレームの範囲、つまり、Fm-3からFm+3までのフレームが読込期間として決定されていることがわかる。Fmー2は、読込期間において奥行き量が最小になっているフレームである。奥行き量が最小となるFm-2(反転表示されている)が調整後のフレームとして決定される。図11(b)では、ブックマーク位置Fm前後のフレームの奥行きを表し、p=3、q=3のケースを想定しているから、奥行き量記憶部12にフレームFm-3からFm+3までの各フレームの奥行き量が格納される。
図11(c)は、分岐先の調整がなされたシーンジャンプを示す。第1段目は、ビデオストリームiと、ビデオストリームjとでビデオストリームiのフレームFkと、ビデオストリームjのフレームFm-2とが連続的に再生されることになる。
Fm-2は、読込期間において視差量が最小になっているから、Fm-2を調整後の分岐先とすることで、奥行き量の増大量を最小にすることができる。
フレームFmの奥行き量Z(Fm)と最も差分の小さい奥行きを持つフレームはFm-2であるため、再生位置決定部13は、ジャンプ対象のフレームをFm-2と決定し、制御部7に通知する。上記の処理により、図12(c)で表すようにブックマークジャンプ時に発生する奥行き量の変化を|Z(Fk)-Z(Fm)|から|Z(Fk)-Z(Fm-2)|に抑えることができる。これにより、ジャンプの際の切り替え時に生じる視聴者の眼球(瞳)の向きの急激な変化を抑え、眼の疲れを低減することが可能となる。
図11(a)と、図11(c)とを用いて、ブックマークジャンプを行なう際の時刻と奥行きの関係について対比説明を行う。ユーザーはあらかじめブックマーク位置として、フレームFmを登録していたとする。ブックマークジャンプ前のカレント次元モードは3Dモードとし、ブックマークジャンプ後もカレントモードは3Dモードを保つとする。
図11(a)が、図9に示すフローチャートの処理を行うことなく、ブックマークジャンプを行なった場合の奥行き量の変化を示していると仮定する。ジャンプ前のフレームFkの奥行き量がZ(Fk)であるのに対し、ブックマーク位置Fmの奥行き量がZ(Fm)に変化するため、ブックマークジャンプによる切り替えの前後で、奥行き量の差分の大きさは、|Z(Fk)-Z(Fm)|となる。ブックマークジャンプによる切替の前後で生じる奥行き量の変化の大きさ(つまり、|Z(Fk)-Z(Fm)|)の程度が大きければ、視聴者は、視差角の程度、眼球(瞳)の向きを大きく変える必要があり、これが原因で眼に疲れが生じる場合がある。
これに対し、図11(c)に示すように、奥行き量記憶部12において、シーン切替要求で処理開始が処理された要求時点であるフレームFmから見て、前後3枚の連続したフレームの奥行き量を格納する場合(つまり、S202におけるp,qが3である場合)、ステップS202ではフレームFm-3からFm+3のそれぞれに対応する奥行き量が奥行き量記憶部12に格納されるから、図11(c)に示すように、切替先フレームがフレームFm-2に変更されることになる。
次に、切替先フレーム固定時のシーンジャンプの処理手順について説明する。
図12は、切替先フレーム固定時のシーンジャンプの処理手順を示すフローチャートである。本フローチャートにおいて、切替要求に係る処理の発生時点であるフレームFkの奥行き量を格納し(ステップS301)、切替要求に係る処理が要求された要求時点及びそれ以降の時点に存在するフレームFm〜フレームm+nの奥行き量を格納して(ステップS302)、フレームFm〜フレームm+nのそれぞれについて、フレームFkの奥行き量Z(Fk)との差分を算出し(ステップS303)、最も小さい奥行きをもつフレームFdの奥行き量Z(Fd)を目的奥行き量とする(ステップS304)。そして、フレームFmをカレント処理フレームFcに設定することでシーンジャンプを行う(ステップS305)。以降、ステップS306〜ステップS311のループを実行する。ステップS306は、このループの終了条件であり、カレント処理フレームFc<フレームFdの関係が成立するか否かの判定である。ステップS306がYesであるなら、ステップS307〜ステップS311の処理を繰り返す。この処理は、カレント処理フレームFcの奥行き量Z(Fc)と、フレームFkの奥行き量Z(Fk)との差分|Z(Fc)−Z(Fk)|を計算し(ステップS307)、差分|Z(Fc)−Z(Fk)|に基づくプレーンオフセットを計算して、プレーンシフトエンジンに設定し(ステップS308)、プレーンメモリのシフトを実行する(ステップS309)。その後、各レイヤのプレーン内容を合成して出画し(ステップS310)、カレント処理フレームFcをインクリメントする(ステップS311)というものである。カレント処理フレームFc<フレームFdの関係を満たすのは、カレント処理フレームFcがフレームFdに到達するまでである。カレント処理フレームFcがフレームFdに到達するまでの間、差分|Z(Fc)−Z(Fk)|に基づくプレーンシフトがなされることになる。
ステップS306がNoであれば、ステップS312〜ステップS315を実行する。奥行き量Z(Fc)に基づくオフセットを計算して、エンジンに設定し(ステップS312)、シフトを実行して(ステップS312)。その後、各レイヤのプレーン内容を合成して出画し(ステップS314)、カレント処理フレームFcをインクリメントしてリターンする(ステップS315)。
図12のフローチャートに示した処理手順を再生装置の構成要素と関連付けて説明する。シーン切替要求が発生すると、切替要求が発生した発生時点であるフレームFkの奥行き量を奥行き量記憶部12に格納し(S301)、次に切替先のフレームFmをはじめとする連続するn枚のフレームの奥行き量を格納する(S302)。
プレーンオフセット決定部14は、奥行き量記憶部12が格納するn枚のフレームの奥行き量の中から、切替前のフレームFkの奥行き量Z(Fk)との差分(例えば、差分の絶対値)を計算し(S303)、そのうち最も小さい奥行きをもつフレームFdのZ(Fd)を目的奥行き量と決定する(S304)。制御部7は、切り替え先フレームFmに再生位置を移動し(S305)、デマルチプレクサ1は、フレームフレームFmの3次元処理を開始する。
プレーンオフセット決定部14は、処理フレームがフレームFmからフレームFdに達するまでの間、処理フレームの奥行き量が目的奥行き量Z(Fd)に維持されるプレーンオフセットを計算し(S307)、プレーンシフトエンジン4のプレーンオフセットを更新する(S308)。プレーンシフトエンジン4は、現在処理中のビデオプレーンが右目用か左目用か左右処理記憶部11に保存されている情報を使って確認し、定められた方向にプレーンをシフトさせる(S309)。処理中のプレーンがFdに達すると、プレーンオフセット決定部14はプレーンシフトエンジンのプレーンオフセットを対象となるフレームの奥行き量に基づくプレーンオフセットを計算し、更新する。
図13は、指定量制御による奥行き調整を示す。図13(a)の第1段目は、ビデオストリームiからビデオストリームjへのシーンジャンプを示す。この場合分岐元はフレームFk、分岐先はFmなので、フレームFk→Fmの順に再生されることになる。第2段目は、奥行き量変化と、ビデオストリームjの奥行き量変化とを示す。Z(Fk)が小さいのに対してZ(Fm)が大きいので、飛出し度合の変化が急激であることがわかる。
図13(a)からは、チャプタージャンプを行なう場合の時間と奥行きの関係を理解することができる。フレームFkでユーザーはフレームFmから始まるチャプターを選択したとする。2次元再生と同じ処理でチャプタージャンプを行なった場合は図9と同様であり、大きな奥行き量の差|Z(Fk)-Z(Fm)|が発生する。
図13(b)は、分岐先がFmである場合の読込期間を示す。図13(b)の第1段目では、Fm〜Fm+6のフレームが読み取られることになる。反転で記述されているFm+5は、奥行き量が最小になるフレームを示す。図13(b)の第2段目は、読込期間における各フレームの奥行き量を示す。この第2段目においてFm+5の奥行き量が最小なので、Fm+5がオフセット制御の目標値に設定される。
図13(b)では、チャプタージャンプ先のフレームがフレームFmから始まる連続したフレームの奥行きを表しているからシーン切替要求に該当する切替命令を受けたとき、奥行き量記憶部12に現在のフレームFk(つまり切替前フレーム)の奥行き量が格納される。またジャンプ先のフレームFmをはじめとする連続する6枚のフレームの奥行き量を格納した場合(つまり、n=6の場合)を想定すると、奥行き量記憶部12にフレームFmからFm+6までの各フレームの奥行き量が格納される。
切替前のフレームFkの奥行き量Z(Fk)と各フレームの奥行き量の差分を計算した場合、その中で最も差分(例えば差分の絶対値)が小さい奥行きを持つフレームはFm+5であるため、プレーンオフセット決定部14により、フレームFm+5の奥行き量であるZ(Fm+5)が目的奥行き量と決定される。
図13(c)は、プレーンシフト制御による奥行き調整を示す。第2段目のグラフは、プレーンシフト制御の内容を示すグラフである。破線は、プレーンシフト制御がない場合のZR変化を示す。このグラフにおける奥行き量変化は、図13(a)と同一である。図13(c)の実線は、プレーンシフト制御がなされた場合の奥行きの選択的変化を示す、ビデオストリームjのFmからFm+5は、奥行き量がZ(Fd)を維持するようプレーンシフト制御がなされるため飛出し度合の変化が急激になることは無い。
制御部7は、フレームFmに再生位置を移動し、再生を開始する。プレーンオフセット決定部14は、処理対象のフレームがFm+5に達するまで、つまりFmからFm+4の間は、目的奥行き量Z(Fm+5)と処理対象フレームの奥行き量Z(Fm+i)(i=0,1,2,3,4)の差分をプレーンシフトエンジン4のプレーンオフセットとしてセットする。
対象フレームのプレーンシフトエンジンは、奥行き量が、目的奥行き量Z(Fm+5)と等しくなるよう、セットされたオフセットの分だけ、ビデオプレーンをシフトさせる。
上記の処理により図13(c)に示すように、出画されるフレームの奥行きは、フレームFm+5に達するまではZ(Fm+5)を維持することになり、チャプタージャンプ時に発生する奥行き量の変化を|Z(Fk)-Z(Fm)|から|Z(Fk)-Z(Fm+5)|に抑えることができ、フレームFm+5に達した後は、プレーンオフセット決定部18は、フレームに対応する奥行き量をプレーンシフトエンジン5のプレーンオフセットにセットするように構成すれば、フレームの奥行き量に相当する分のシフト処理がされる。このように構成をすることにより、切替時に生じる視聴者の眼球(瞳)の向きの急激な変化を抑え、眼の疲れを低減することが可能となる。
ビデオプレーンのシフト処理の一例を図14と図15を用いて説明する。図14はオフセットを利用した処理の一例を示した図である。
プレーンシフトエンジン4にセットさたオフセットが1と設定されている場合は右目用のビデオプレーンと左目用のビデオプレーンをそれぞれ図14に示す矢印の方向に1ピクセルずらす。オフセットがマイナスの値の場合は図14に示す矢印とは逆の方向にずらす。オフセットが正の値の場合は、画像はシフト前よりも奥に表示される現象が発生し、負の値の場合は、シフト前よりも飛び出る効果が発生する。
左目用ビデオプレーンの正の値xのシフト方法は図15のようにして行う。1.ビデオプレーンの最も左の部分からビデオプレーンオフセットx片目分のプレーンの高さの領域を切り取る。2.ビデオプレーンを左へ水平方向にビデオプレーンオフセット値分ずらす。3.ビデオプレーンの最も右の領域にビデオプレーンオフセットx片目分のプレーンの高さの透明の領域を追加する。
(第2実施形態)
第1実施形態では、ビデオプレーン4に対してプレーンシフトを実行したが、本実施形態は、グラフィクスプレーンについてプレーンシフトを実現する改良に関する。図16は、第2実施形態に係る再生装置の内部構成を示す図である。本図は、図5をベースとして作図されており、このベースとなる図と比較して、ビデオプレーン4が、左目用ビデオプレーン4a、4bに置き換えられ、字幕デコーダ21、字幕プレーン22、レンダリングエンジン23、対話プレーン24が追加されている点が異なる。
左目ビデオプレーン4aは、ビデオデコーダのデコードにより得られた右目映像を構成する画素データを格納する。
左目ビデオプレーン4bは、ビデオデコーダのデコードにより得られた左目映像を構成する画素データを格納する。
字幕デコーダ21は、デマルチプレクサ2から分離された字幕グラフィクスストリームや、デマルチプレクサ2を介さず直接読出部1から読み出されたテキスト字幕ストリームをデコードして非圧縮のグラフィクスを字幕プレーン22に書き込む。
字幕プレーン22は、字幕デコーダ21のデコードにより得られた字幕グラフィクスを構成する一画面分の画素データを格納する。
レンダリングエンジン23は、記録媒体に記録されたJPEG/PNG/ZIFF形式のイメージデータをデコードして、制御部16からの指示に従い、描画イメージを対話プレーン24に書き込む。
対話プレーン24は、描画イメージを構成する一画面分の画素データを格納しておくためのメモリである。かかる描画イメージは、ARGB形式のビットマップである。
以上が、第2実施形態で追加された構成要素についての説明である。続いて、第2実施形態において改良がなされた構成要素の詳細について説明する。
第2実施形態特有の改良がなされたプレーンシフトエンジン5は、字幕プレーン22、対話プレーン24に対してプレーンシフトを行う。かかるプレーンシフトにより、字幕プレーン22、対話プレーン24がそれぞれ、1プレーン構成であっても立体視を実現することができる。このプレーンシフトには、奥行き記憶部12に格納された奥行き量を使用する。
第2実施形態特有の改良がなされた加算器6は、対話プレーン24を一番手前にし、続いて字幕プレーン22、左目ビデオプレーン4a−左目ビデオプレーン4bが配置されるように、対話プレーン24、字幕プレーン22、ビデオプレーン4a−左目ビデオプレーン4bに格納されている画素データの加算を行う。これにより、プレーンメモリのレイヤ合成がなされる。
第2実施形態特有の改良がなされた制御部16は、対話プレーン24、字幕プレーン22の奥行き量が最小になるようなフレームを選択して、このフレームを基準にして、奥行き調整を行う。
以上のように本実施形態によれば、字幕プレーン22、対話プレーン24のプレーンシフトに用いられる奥行き量は、奥行き記憶部12に読み出された奥行き量であるから、この奥行き量が小さくなるようなフレーム位置、プレーンオフセットを決定することで、ユーザに対する影響を最小限に留めることができる。
<備考>
以上、本願の出願時点において、出願人が知り得る最良の実施形態について説明したが、以下に示す技術的トピックについては、更なる改良や変更実施を加えることができる。各実施形態に示した通り実施するか、これらの改良・変更を施すか否かは、何れも任意的であり、実施する者の主観によることは留意されたい。
(奥行き制御の対象となるコンテンツの範囲)
第1実施形態において、奥行き制御の対象となるコンテンツは、デジタルストリームやプレイリスト情報から構成される映画作品であるとしたが、対象となるコンテンツは、ポリゴンモデルや多面体モデルで構成されるゲームアプリケーションであってもよい。ゲームであれば、ポリゴンモデルや多面体モデルで定義されるキャラクターの状態変化や、ゲームのステージ変化を再生装置の状態変化と捉えて奥行き量の調整を行えばよい。
(記録媒体のバリエーション)
本実施の形態では、奥行き調整の対象となるコンテンツは、リードオンリーメディアに記録されているものを再生して視聴することを前提にして説明したが、奥行き調整の対象となるコンテンツは、例えば放送波などの無線、ケーブルなどの有線、あるいは他の記録媒体(例えばハードディスクなどの磁気記録媒体、またはフラッシュメモリ、SDカードなどの半導体メモリ)を介して提供されていても構わない。特に、ネットワーク上の記録媒体から奥行き調整の対象となるコンテンツを取得しようとする場合、ネットワーク上の記録媒体は、“ネットワークドライブ”として捉えることが可能である。“ネットワークドライブ”は、クライアントプログラム及びサーバプログラムがプロトコルスタックを通じたファイル転送プロトコルを実行することにより、アクセスが可能になるから、再生装置が上記、クライアントプログラムとしての処理を行うことにより、ネットワーク上の記録媒体から第1実施形態で述べたデジタルストリームやシナリオデータを読み出してデコーダに供給することができる。
また無線、有線の放送媒体から奥行き調整の対象となるコンテンツを取得しようとする場合、無線、有線の放送媒体における放送局では、記録媒体のファイルシステム上に存在するディレクトリ・ファイル構造をアーカイブプログラムでアーカイブして、アーカイブプログラムにより得られたアーカイブファイルをオブジェクトカルーセル方式により繰り返し送信する。そして再生装置側では、かかるアーカイブファイルを受信して、当該アーカイブファイルに格納されているディレクトリ・ファイル構造を、装置内のキャッシュに展開することにより、自装置の記録媒体におけるディレクトリ・ファイル構造として捉えてアクセする。よって、再生装置は、アーカイブファイルに格納されているディレクトリ・ファイル構造を、装置内のキャッシュに展開することで、第1実施形態で述べたデジタルストリームやシナリオデータを読み出してデコーダに供給することができる。
(立体視視聴のバリエーション)
シャッター眼鏡500を用いた形で立体視視聴を行う方法を前提にして説明したが、他の、左目映像・右目映像をそれぞれ左目・右目に視聴させる方式を利用していても良い。例えばサイドバイサイド方式や、レンチキュラレンズなどを表示ディスプレイに使い、眼鏡などの特別な視聴器具を利用しない方式を用いていても構わない。
(スキップ時の奥行き調整)
本実施の形態では、リードオンリーメディアに記録されているものを再生して視聴することを前提としたが、ホームビデオでユーザー自身が編集したものを再生する場合は、奥行き量の大きな変化が発生するケースが頻繁に発生する。特に、BD-ROMなどの再生専用のコンテンツの場合は、作成者が視聴者の目に配慮した撮影方法や、チャプター区切りなどに配慮しているが、ホームビデオの場合は、撮影者や編集者がユーザー自身であり、奥行き量の変化に配慮していることは少ない。このような場合は、チャプタージャンプであってもシーン切替命令と解釈してもよい。
(ビデオデコーダの拡張性)
図5の構成図にはビデオデコーダ、ビデオプレーンを各一つずつ有しているが、例えば高速化を用途に左目用の映像を処理するビデオデーダ、ビデオプレーンと右目用の映像を処理するビデオデーダ、ビデオプレーンをそれぞれ設け、並行に処理をするようにしてもよい。
(切替開始フレームの選択)
切替先可変時のシーンジャンプでは、要求時点の出力映像のフレームとして、シーンの要求時点フレームとのその前後n枚の連続したフレームの奥行き量の中から、切替開始のフレームを選択する構成を例に説明をしたが、シーンの切替先フレームとこれに後続するm枚の連続したフレームの奥行き量の中から、切替開始のフレームを選択するような構成であっても良い。
(オフセット調整のバリエーション)
切替先固定時のシーンジャンプでは、目的奥行き量Z(Fd)をもつフレームFdになるまで目的奥行き量Z(Fd)を維持するようプレーンオフセットを決定したが、もちろんFdに達するまでに段階的に目的奥行き量Z(Fd)に近づくようオフセットを調整してもよい。
また第1実施形態では、次元切替要求を受けた際、選択されたフレームFdになるまで、2次元処理を続けると記載したが、プレーンオフセット決定部を使用して、フレームFdの奥行きになるまで段階的に奥行き量が変化するようにビデオプレーンをシフトさせてもよい。具体的にいうと、プレーンシフトエンジン5は、3D再生モードの切替前のカレント処理フレームFcの奥行き量Z(Fc)を初期値とし、前記オフセット基準フレームFdの奥行き量Z(Fd)を目標値として、プレーンシフトエンジン5のプレーンシフトに適用すべきオフセットを段階的に変化させる。この段階的な変化にあたって、オフセット基準フレームFdと、カレント処理フレームFcとの間のフレーム数を求め、このフレーム数で、奥行き量の差分|Z(Fd)-F(Fc)|を割る。こうすることで、一フレーム当りのオフセット変化量を求める。一フレーム当りのオフセット変化量に基づいたオフセットの増分を、オフセット基準フレームFdと、カレント処理フレームFcとの間に位置する各フレームに与えることで、オフセットを変化させるのである。こうすることで、奥行き量の単調変化を実現することができる。
(切替先フレーム選択のバリエーション)
また、本実施の形態では、全ての切替命令についての処理において、切替先フレームを含む複数のフレームの中から切替時に発生する奥行き量変化が最小になるフレームを選択し、選択したフレームに達したときに3D表示をするための処理を開始したり、切替先フレームから選択したフレームに達するまでの間は選択したフレームに対応する奥行き量を維持するように表示を行う例に関して説明をしたが、切替時に発生する奥行き量変化の最高値Zmaxを指定しておき、Zmaxより小さい値になる切替後フレームに最も近接したフレームを選択するという方法や、重みを付けて、切替先フレームから隣接したフレームを優先的に選択するという方法をとってもよい。
(奥行き量取得のバリエーション)
各プレーンの奥行き量は、シナリオメモリに読み出されたシナリオデータから取得してもよい。ここで、シナリオデータにはプレイリスト情報が含まれる。プレイリスト情報を構成する複数のプレイアイテム情報のそれぞれは、基本ストリーム選択テーブルを含み、プレイリスト情報自身は拡張ストリーム選択テーブルを含む。基本ストリーム選択テーブルは、ストリーム番号に対応付けられた、平面視再生モードにおいて再生されるエレメンタリストリームのリストを示す。
拡張ストリーム選択テーブルは、ストリーム番号と同一のストリーム番号に対応付けられた、3Dモードにおいて再生されるエレメンタリストリームのリストを示す。この拡張ストリーム選択テーブルには、制御情報がストリーム番号に対応付けられている。ここで、3Dモードには、左目画像と右目画像とを用いて、立体視映像の再生を行うメイン−サブモードと、左目画像のみを用いて、平面視映像の再生を行うメイン−メインモードとがある。上記拡張ストリーム選択テーブルにおける制御情報は、グラフィクスがポップアップメニューであり、3Dモードがメイン−メイン再生モードである場合において、グラフィクスプレーンのプレーンシフトに利用すべきオフセットを有している。かかる拡張ストリーム選択テーブル内のオフセットは、左目画像、右目画像の視差を表すものであり、プレイアイテム情報毎に変化するものだから、かかるオフセットを奥行き量として奥行き量記憶部12に格納し、この奥行き量が多大にならないように奥行き調整を実行してもよい。
また、トランスポートストリームの中に各プレーンの奥行き量が入っていてもよいし、入力された立体画像から奥行き量を計算し、取得するという方法をとってもよい。
(ビデオストリーム供給のバリエーション)
本実施の形態では、リードオンリーメディアに記録されているものを再生して視聴することを前提としたが、再生装置がネットワーク経由でダウンロードするための通信手段、ダウンロードしたデータを記憶するハードディスクなどの記憶手段を有するような構成であれば、本実施の形態を適用することができる。
また、再生装置が放送波を受信するためのチューナなどの受信手段を備えるような構成であれば、例えばリードオンリーメディアに記録したものに相当するデータを受信するような場合において、チャンネル切り替え時などにおいて本実施の形態を適用することができる。
(集積回路の実施形態)
第1実施形態に示した再生装置のハードウェア構成のうち、記録媒体のドライブ部や、外部とのコネクタ等、機構的な部分を排除して、論理回路や記憶素子に該当する部分、つまり、論理回路の中核部分をシステムLSI化してもよい。システムLSIとは、高密度基板上にベアチップを実装し、パッケージングしたものをいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものはマルチチップモジュールと呼ばれるが、このようなものも、システムLSIに含まれる。
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
これらのピンは、電源供給やグランド、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、再生装置の中核としての役割を果たす。
図17は、集積回路のアーキテクチャを示す図である。本図に示すように、システムLSIである集積回路70のアーキテクチャは、フロントエンド部71と、信号処理部72と、バックエンド部73と、メディアI/O74と、メモリコントローラ75と、ホストマイコン76とから構成され、メディアI/O74、メモリコントローラ75を通じて、再生装置におけるドライブやメモリ、送受信部と接続されている。再生装置におけるドライブには、リードオンリーメディアのドライブ、ローカルストレージのドライブ、リムーバブルメディアのドライブ等がある。
フロントエンド処理部71は、プリプログラムされたDMAマスタ回路やI/Oプロセッサ等から構成され、パケット処理全般を実行する。このパケット処理には、デマルチプレクサによる処理が該当する。再生装置のメモリに確保された、リードバッファ、各種プレーンメモリ、各種バッファ間でDMA転送を実現することにより、上述したようなパケット処理を実現する。
信号処理部72は、信号処理プロセッサやSIMDプロセッサ等から構成され、信号処理全般を実行する。信号処理には、ビデオデコーダによるデコードやオーディオデコーダによるデコードがある。
バックエンド部73は、加算器、フィルタから構成され、AV出力処理全般を行う。AV出力処理には画素処理があり、かかる画素処理によってレイヤ合成のための画像重畳、リサイズ、画像フォーマット変換がなされる。また、デジタル/アナログ変換等を併せて実行する。
メディアI/O74は、ドライブ、ネットワークとのインターフェイスである。
メモリコントローラ75は、メモリアクセスのためのスレーブ回路であり、フロントエンド部、信号処理部、バックエンド部の要求に応じて、パケットやピクチャデータのメモリの読み書きを実現する。 このメモリコントローラ75を通じたメモリの読み書きによって、メモリは、リードバッファやビデオプレーン、グラフィクスプレーン、ビデオデコーダにおける各種バッファとして機能することになる。
ホストマイコン76は、図5の調整部15に該当する構成要素であり、MPU,ROM,RAMから構成され、メディアインターフェイス、フロントエンド部、信号処理部、バックエンド部に対して、全体制御を実行する。この全体制御には、調整部を構成する、制御部16、開始位置決定部17、プレーンシフト量決定部18としての制御がある。このホストマイコンにおけるCPUは、命令フェッチ部、デコーダ、実行ユニット、レジスタファイル、プログラムカウンタを有している。そして、これまでの実施形態で述べた各種処理を実行するプログラムは、組込プログラムとして、基本入出力システム(BIOS)、様々なミドルウェア(オペレーションシステム)と共に、このホストマイコンにおけるマイコン内のROMに記憶されている。よって再生装置の主たる機能は、このシステムLSI内に組込んでおくことができる。
(プログラムの実施形態)
各実施形態に示したプログラムは、以下のようにして作ることができる。先ず初めに、ソフトウェア開発者は、プログラミング言語を用いて、各フローチャートや、機能的な構成要素を実現するようなソースプログラムを記述する。この記述にあたって、ソフトウェア開発者は、プログラミング言語の構文に従い、クラス構造体や変数、配列変数、外部関数のコールを用いて、各フローチャートや、機能的な構成要素を具現するソースプログラムを記述する。
記述されたソースプログラムは、ファイルとしてコンパイラに与えられる。コンパイラは、これらのソースプログラムを翻訳してオブジェクトプログラムを生成する。
コンパイラによる翻訳は、構文解析、最適化、資源割付、コード生成といった過程からなる。構文解析では、ソースプログラムの字句解析、構文解析および意味解析を行い、ソースプログラムを中間プログラムに変換する。最適化では、中間プログラムに対して、基本ブロック化、制御フロー解析、データフロー解析という作業を行う。資源割付では、ターゲットとなるプロセッサの命令セットへの適合を図るため、中間プログラム中の変数をターゲットとなるプロセッサのプロセッサが有しているレジスタまたはメモリに割り付ける。コード生成では、中間プログラム内の各中間命令を、プログラムコードに変換し、オブジェクトプログラムを得る。
ここで生成されたオブジェクトプログラムは、各実施形態に示したフローチャートの各ステップや、機能的構成要素の個々の手順を、コンピュータに実行させるような1つ以上のプログラムコードから構成される。ここでプログラムコードは、プロセッサのネィティブコード、JAVA(TM)バイトコードというように、様々な種類がある。プログラムコードによる各ステップの実現には、様々な態様がある。外部関数を利用して、各ステップを実現することができる場合、この外部関数をコールするコール文が、プログラムコードになる。また、1つのステップを実現するようなプログラムコードが、別々のオブジェクトプログラムに帰属することもある。命令種が制限されているRISCプロセッサでは、算術演算命令や論理演算命令、分岐命令等を組合せることで、フローチャートの各ステップを実現してもよい。
オブジェクトプログラムが生成されるとプログラマはこれらに対してリンカを起動する。リンカはこれらのオブジェクトプログラムや、関連するライブラリプログラムをメモリ空間に割り当て、これらを1つに結合して、ロードモジュールを生成する。こうして生成されるロードモジュールは、コンピュータによる読み取りを前提にしたものであり、各フローチャートに示した処理手順や機能的な構成要素の処理手順を、コンピュータに実行させるものである。かかるコンピュータプログラムを非一時的なコンピュータ読取可能な記録媒体に記録してユーザに提供してよい。