以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係る再生装置の構成例が示されている。この再生装置はオーディオ・ビデオ(AV)コンテンツを再生するメディアプレーヤである。この再生装置は、例えば、HD DVD(High Definition Digital Versatile Disc)規格のDVDメディアに格納されたオーディオ・ビデオ(AV)コンテンツを再生するHD DVDプレーヤとして実現されている。
このHD DVDプレーヤは、図1に示されているように、CPU(Central Processing Unit)11、ノースブリッジ12、主メモリ13、サウスブリッジ14、不揮発性メモリ15、USB(Universal Serial Bus)コントローラ17、HD DVDドライブ18、グラフィクスバス20、PCI(Peripheral Component Interconnect)バス21、ビデオコントローラ22、オーディオコントローラ23、ビデオデコーダ25、ブレンド処理部30、メインオーディオデコーダ31、サブオーディオデコーダ32、オーディオミキサ(Audio Mix)33、ビデオエンコーダ40、およびHDMI(High Definition Multimedia Interface)のようなAVインタフェース(HDMI−TX)41等から構成されている。
本HD DVDプレーヤにおいては、プレーヤアプリケーション150と、オペレーティングシステム(OS)151とが予め不揮発性メモリ15にインストールされている。プレーヤアプリケーション150はOS151上で動作するソフトウェアであり、HD DVDドライブ18から読み出されるAVコンテンツを再生するための制御を行う。
HD DVDドライブ18によって駆動されるHD DVDメディアのような蓄積メディアに格納されたAVコンテンツは、圧縮符号化されたメインビデオデータ、圧縮符号化されたメインオーディオデータ、圧縮符号化されたサブビデオデータ、圧縮符号化されたサブピクチャデータ、アルファデータを含むグラフィクスデータ、圧縮符号化されたサブオーディオデータ、AVコンテンツの再生を制御するナビゲーションデータ等から構成されている。
圧縮符号化されたメインビデオデータは、主映像(主画面イメージ)として用いられる動画像データをH.264/AVC規格の圧縮符号化方式で圧縮符号化したデータである。メインビデオデータはHD規格の高精細画像から構成されている。また、SD(Standard Definition)規格のメインビデオデータを使用することもできる。圧縮符号化されたメインオーディオデータは、メインビデオデータに対応するオーディオデータである。メインオーディオデータの再生は、メインビデオデータの再生と同期して実行される。
圧縮符号化されたサブビデオデータはメインビデオ上に重ね合わされた状態で表示される副映像(副画面イメージ)であり、メインビデオデータを補足する動画像(例えば映画監督のインタビューシーンなど)から構成されている。圧縮符号化されたサブオーディオデータは、サブビデオデータに対応するオーディオデータである。サブオーディオデータの再生は、サブビデオデータの再生と同期して実行される。
グラフィクスデータもメインビデオ上に重ね合わされた状態で表示される副映像(副画面イメージ)であり、例えば、メニューオブジェクトのような操作ガイダンスを表示するための各種データ(Advanced Elements)から構成されている。各Advanced Elementは、静止画、動画(アニメーションを含む)、またテキストから構成されている。プレーヤアプリケーション150はユーザによるマウス操作に従って絵を描くドローウィング機能を有している。このドローウィング機能によって描画されたイメージもグラフィクスデータとして用いられ、メインビデオ上に重ね合わされた状態で表示することができる。
圧縮符号化されたサブピクチャデータは、字幕等のテキストから構成されている。
ナビゲーションデータは、コンテントの再生順を制御するプレイリストと、サブビデオおよびグラフィクス(Advanced Elements)等の再生を制御するスクリプトとを含んでいる。スクリプトは、XMLのようなマークアップ言語によって記述されている。
HD規格のメインビデオデータは例えば1920×1080ピクセルまたは1280×720ピクセルの解像度を持つ。また、サブビデオデータ、サブピクチャデータ、およびグラフィクスデータの各々は、例えば720×480ピクセルの解像度を持つ。
本HD DVDプレーヤにおいては、HD DVDドライブ18から読み出されるHD DVDストリームからメインビデオデータ、メインオーディオデータ、サブビデオデータ、サブオーディオデータ、サブピクチャデータを分離する分離処理と、サブビデオデータ、サブピクチャデータ、およびグラフィクスデータをデコードするデコード処理はソフトウェア(プレーヤアプリケーション150)によって実行される。一方、多くの処理量を必要とする処理、つまりメインビデオデータをデコードする処理、およびメインオーディオデータおよびサブオーディオデータをデコードするデコード処理等は、ハードウェアによって実行される。
CPU11は、本HD DVDプレーヤの動作を制御するために設けられたプロセッサであり、不揮発性メモリ15から主メモリ13にロードされる、OS151およびプレーヤアプリケーション150を実行する。主メモリ13内の記憶領域の一部は、ビデオメモリ(VRAM)131として使用される。なお、必ずしも主メモリ13内の記憶領域の一部をVRAM131として使用する必要はなく、主メモリ13とは独立した専用のメモリデバイスをVRAM131として使用してもよい。
ノースブリッジ12は、CPU11のローカルバスとサウスブリッジ14との間を接続するブリッジデバイスである。このノースブリッジ12には、主メモリ13をアクセス制御するメモリコントローラが内蔵されている。さらに、このノースブリッジ12には、GPU(Graphics Processing Unit)120も内蔵されている。
GPU120は、主メモリ13の一部の記憶領域に割り当てられたビデオメモリ(VRAM)131にCPU11によって書き込まれたデータから、グラフィクス画面イメージを形成するグラフィクス信号を生成するグラフィクスコントローラである。GPU120は、ビットブロック転送(bit block transfer)のようなグラフィクス演算機能を用いて、グラフィクス信号を生成する。例えば、CPU11によってVRAM131上の4つのプレーンにそれぞれ画像データ(サブビデオ、サブピクチャ、グラフィクス、カーソル)が書き込まれた場合、GPU120は、それら4つのプレーンに対応する画像データ同士をピクセル毎に重ね合わせるブレンド処理をビットブロック転送を用いて実行し、これによってメインビデオと同じ解像度(例えば1920×1080ピクセル)を有するグラフィクス画面イメージを形成するためのグラフィクス信号を生成する。ブレンド処理は、サブビデオ、サブピクチャ、グラフィクスそれぞれに対応するアルファデータを用いて実行される。アルファデータは、そのアルファデータに対応する画像データの各ピクセルの透明度(または不透過度)を示す係数である。サブビデオ、サブピクチャ、グラフィクスそれぞれに対応するアルファデータは、それらサブビデオ、サブピクチャ、グラフィクスの画像データと一緒にHD DVDメディアに格納されている。すなわち、サブビデオ、サブピクチャ、グラフィクスの各々は、画像データとアルファデータとから構成されている。
GPU120によって生成されたグラフィクス信号はRGB色空間を有している。グラフィクス信号の各ピクセルはデジタルRGBデータ(24bit)によって表現される。
GPU120は、グラフィクス画面イメージを形成するグラフィクス信号を生成するだけでなく、その生成したグラフィクス信号に対応するアルファデータを外部に出力する機能も有している。
具体的には、GPU120は、生成したグラフィクス信号をデジタルRGBビデオ信号として外部に出力すると共に、その生成したグラフィクス信号に対応するアルファデータも外部に出力する。アルファデータは、生成されたグラフィクス信号(RGBデータ)の各ピクセルの透明度(または不透明度)を示す係数(8bit)である。GPU120は、グラフィクス信号(24bitのデジタルRGBビデオ信号)とアルファデータ(8bit)とから構成されるアルファデータ付きのグラフィクス出力データ(32bitのRGBAデータ)を、ピクセル毎に出力する。アルファデータ付きのグラフィクス出力データ(32bitのRGBAデータ)は専用のグラフィクスバス20を介してブレンド処理部30に送られる。グラフィクスバス20は、GPU120とブレンド処理部30との間を接続する伝送線路である。
このように、本HD DVDプレーヤにおいては、アルファデータ付きのグラフィクス出力データがグラフィクスバス20を介してGPU120からブレンド処理部30に直接的に転送される。これにより、PCIバス21等を介してアルファデータをVRAM131からブレンド処理部30を転送する必要が無くなり、アルファデータの転送によるPCIバス21のトラフィックの増大を防止することができる。
もしPCIバス21等を介してアルファデータをVRAM131からブレンド処理部30に転送したならば、GPU120から出力されるグラフィクス信号とPCIバス21経由で転送されるアルファデータとをブレンド処理部30内で同期化しなければならず、そのためにブレンド処理部30の構成が複雑化される。本HD DVDプレーヤにおいては、GPU120はグラフィクス信号とアルファデータとをピクセル毎に同期して出力する。このため、グラフィクス信号とアルファデータとの同期化を容易に実現することができる。
サウスブリッジ14は、PCIバス21上の各デバイスを制御する。また、サウスブリッジ14は、HD DVDドライブ18を制御するためのIDE(Integrated Drive Electronics)コントローラを内蔵している。さらに、サウスブリッジ14は、不揮発性メモリ15、およびUSBコントローラ17を制御する機能も有している。USBコントローラ17は、マウスデバイス171の制御を行う。ユーザは、マウスデバイス171を操作することにより、メニューの選択等を行うことができる。もちろん、マウスデバイス171の代わりに、リモコンユニット等を用いることもできる。
HD DVDドライブ18は、HD DVD規格に対応するオーディオ・ビデオ(AV)コンテンツが格納されたHD DVDメディアのような蓄積メディアを駆動するためのドライブユニットである。
ビデオコントローラ22は、PCIバス21に接続されている。このビデオコントローラ22は、ビデオデコーダ25とのインタフェースを実行するためのLSIである。ソフトウェアによってHD DVDストリームから分離されたメインビデオデータのストリーム(Video Stream)は、PCIバス21およびビデオコントローラ22を介して、ビデオデコーダ25に送られる。また、CPU11から出力されるデコード制御情報(Control)も、PCIバス21およびビデオコントローラ22を介して、ビデオデコーダ25に送られる。
ビデオデコーダ25は、H.264/AVC規格に対応するデコーダであり、HD規格のメインビデオデータをデコードして例えば1920×1080ピクセルの解像度のビデオ画面イメージを形成するデジタルYUVビデオ信号を生成する。このデジタルYUVビデオ信号はブレンド処理部30に送られる。
ブレンド処理部30は、GPU120およびビデオデコーダ25にそれぞれ結合されており、GPU120から出力されるグラフィクス出力データとビデオデコーダ25によってデコードされたメインビデオデータとを重ね合わせるためのブレンド処理を実行する。このブレンド処理においては、GPU120からグラフィクスデータ(RGB)と一緒に出力されるアルファデータに基づいて、グラフィクスデータを構成するデジタルRGBビデオ信号とメインビデオデータを構成するデジタルYUVビデオ信号とをピクセル単位で重ね合わせるためのブレンド処理(アルファブレンディング処理)が実行される。この場合、メインビデオデータは下側の画面イメージとして用いられ、グラフィクスデータはメインビデオデータ上に重ねられる上側の画面イメージとして用いられる。
ブレンド処理によって得られる出力画像データは例えばデジタルYUVビデオ信号としてビデオエンコーダ40およびAVインタフェース(HDMI−TX)41にそれぞれ供給される。ビデオエンコーダ40は、ブレンド処理によって得られる出力画像データ(デジタルYUVビデオ信号)をコンポーネントビデオ信号またはS−ビデオ信号に変換して、TV受像機のような外部の表示装置(モニタ)に出力する。AVインタフェース(HDMI−TX)41は、デジタルYUVビデオ信号とデジタルオーディオ信号とを含むデジタル信号群を外部のHDMI機器に出力する。
オーディオコントローラ23は、PCIバス21に接続されている。オーディオコントローラ23は、メインオーディオデコーダ31およびサブオーディオデコーダ32それぞれとのインタフェースを実行するためのLSIである。ソフトウェアによってHD DVDストリームから分離されたメインオーディオデータのストリームは、PCIバス21およびオーディオコントローラ23を介して、メインオーディオデコーダ31に送られる。また、ソフトウェアによってHD DVDストリームから分離されたサブオーディオデータのストリームは、PCIバス21およびオーディオコントローラ23を介して、サブオーディオデコーダ32に送られる。CPU11から出力されるデコード制御情報(Control)も、ビデオコントローラ22を介して、メインオーディオデコーダ31およびサブオーディオデコーダ32それぞれに供給される。
メインオーディオデコーダ31は、メインオーディオデータをデコードしてI2S(Inter-IC Sound)形式のデジタルオーディオ信号を生成する。このデジタルオーディオ信号は、オーディオミキサ(Audio Mix)33に送られる。メインオーディオデータは、予め決められた複数種の圧縮符号化方式(つまり複数種のオーディオコーデック)の中の任意の一つを用いて圧縮符号化されている。このため、メインオーディオデコーダ31は、複数種の圧縮符号化方式それぞれに対応するデコード機能を有している。すなわち、メインオーディオデコーダ31は、複数種の圧縮符号化方式の内の任意の一つを用いて圧縮符号化されたメインオーディオデータをデコードしてデジタルオーディオ信号を生成する。メインオーディオデータに対応する圧縮符号化方式の種類は、例えば、CPU11からのデコード制御情報によってメインオーディオデコーダ31に通知される。
サブオーディオデコーダ32は、サブオーディオデータをデコードしてI2S(Inter-IC Sound)形式のデジタルオーディオ信号を生成する。このデジタルオーディオ信号は、オーディオミキサ(Audio Mix)33に送られる。サブオーディオデータも、予め決められた上述の複数種の圧縮符号化方式(つまり複数種のオーディオコーデック)の中の任意の一つを用いて圧縮符号化されている。このため、サブオーディオデコーダ32も、複数種の圧縮符号化方式それぞれに対応するデコード機能を有している。すなわち、サブオーディオデコーダ32は、複数種の圧縮符号化方式の内の任意の一つを用いて圧縮符号化されたサブオーディオデータをデコードしてデジタルオーディオ信号を生成する。サブオーディオデータに対応する圧縮符号化方式の種類は、例えば、CPU11からのデコード制御情報によってサブオーディオデコーダ32に通知される。
オーディオミキサ(Audio Mix)33は、メインオーディオデコーダ31によってデコードされたメインオーディオデータとサブオーディオデコーダ32によってデコードされたサブオーディオデータとをミックスするミキシング処理を実行してデジタルオーディオ出力信号を生成する。このデジタルオーディオ出力信号はAVインタフェース(HDMI−TX)41に送出されるとともに、アナログオーディオ出力信号に変換された後に外部に出力される。
次に、図2を参照して、CPU11によって実行されるプレーヤアプリケーション150の機能構成を説明する。
プレーヤアプリケーション150は、デマルチプレクス(Demux)モジュール、デコード制御モジュール、サブピクチャ(Sub-Picture)デコードモジュール、サブビデオ(Sub-Video)デコードモジュール、グラフィクスデコードモジュール等を備えている。
Demuxモジュールは、HD DVDドライブ18から読み出されたストリームから、メインビデオデータ、メインオーディオデータ、サブピクチャデータ、サブビデオデータ、サブオーディオデータを分離するデマルチプレクス処理を実行するソフトウェアである。デコード制御モジュールは、ナビゲーションデータに基づいて、メインビデオデータ、メインオーディオデータ、サブピクチャデータ、サブビデオデータ、サブオーディオデータ、グラフィクスデータそれぞれのデコード処理を制御するソフトウェアである。
サブピクチャ(Sub-Picture)デコードモジュールは、サブピクチャデータをデコードする。サブビデオ(Sub-Video)デコードモジュールは、サブビデオデータをデコードする。グラフィクスデコードモジュールは、グラフィクスデータ(Advanced Elements)をデコードする。
グラフィクスドライバは、GPU120を制御するためのソフトウェアである。デコードされたサブピクチャデータ、デコードされたサブビデオデータ、およびデコードされたグラフィクスデータは、グラフィクスドライバを介してGPU120に送られる。また、グラフィクスドライバは、GPU120に対して各種描画命令を発行する。
PCIストリーム転送ドライバは、PCIバス21を介してストリームを転送するためのソフトウェアである。メインビデオデータ、メインオーディオデータ、およびサブオーディオデータは、PCIストリーム転送ドライバによって、PCIバス21を介してビデオデコーダ25、メインオーディオデコーダ31、およびサブオーディオデコーダ32にそれぞれ転送される。
次に、図3を参照して、CPU11によって実行されるプレーヤアプリケーション150によって実現されるソフトウェアデコーダの機能構成を説明する。
ソフトウェアデコーダは、図示のように、データ読み取り部101、暗号化解除処理部102、デマルチプレクス(Demux)部103、サブピクチャデコーダ104、サブビデオデコーダ105、グラフィクスデコーダ106、およびナビゲーション制御部201等を備えている。
HD DVDドライブ18のHD DVDメディアに格納されたコンテント(メインビデオデータ、サブビデオデータ、サブピクチャデータ、メインオーディオデータ、サブオーディオデータ、グラフィクスデータ、ナビゲーションデータ)は、データ読み取り部101によってHD DVDドライブ18から読み出される。メインビデオデータ、サブビデオデータ、サブピクチャデータ、メインオーディオデータ、サブオーディオデータ、グラフィクスデータ、ナビゲーションデータはそれぞれ暗号化されている。メインビデオデータ、サブビデオデータ、サブピクチャデータ、メインオーディオデータ、サブオーディオデータは、HD DVDストリームに多重化されている。データ読み取り部101によってHD DVDメディアから読み出されたメインビデオデータ、サブビデオデータ、サブピクチャデータ、メインオーディオデータ、サブオーディオデータ、グラフィクスデータ、ナビゲーションデータはそれぞれコンテント暗号化解除処理部102に入力される。暗号化解除処理部102は各データの暗号化を解除するための処理を実行する。暗号化が解除されたナビゲーションデータはナビゲーション制御部201に送られる。また、暗号化が解除されたHD DVDストリームはデマルチプレクス(Demux)部103に送られる。
ナビゲーション制御部201はナビゲーションデータに含まれるスクリプト(XML)を解析して、グラフィクスデータ(Advanced Elements)の再生を制御する。グラフィクスデータ(Advanced Elements)はグラフィクスデコーダ106に送られる。グラフィクスデコーダ106はプレーヤアプリケーション150のグラフィクスデコードモジュールから構成されており、グラフィクスデータ(Advanced Elements)をデコードする。
また、ナビゲーション制御部201は、ユーザによるマウスデバイス171の操作に応じてカーソルを移動する処理、およびメニュー選択に応答して効果音を再生するため処理等も実行する。前述のドローウィング機能によるイメージの描画は、ユーザによるマウスデバイス171の操作をナビゲーション制御部201が取得し、その軌跡、つまりカーソルの軌跡からなる絵のグラフィックスデータをGPU120に生成させた後、グラフィクスデコーダ106でデコードされるナビゲーションデータによるグラフィックスデータと同等のグラフィクスデータとしてGPU120に再投入することで実現される。
このDemux103は、プレーヤアプリケーション150のDemuxモジュールによって実現されている。Demux103は、HD DVDストリームからメインビデオデータ、メインオーディオデータ、サブオーディオデータ、サブピクチャデータ、サブビデオデータ等を分離する。
メインビデオデータは、PCIバス21を介してビデオデコーダ25に送られる。メインビデオデータはビデオデコーダ25によってデコードされる。デコードされたメインビデオデータはHD規格の例えば1920×1080ピクセルの解像度を有し、デジタルYUVビデオ信号としてブレンド処理部30に送られる。
メインオーディオデータは、PCIバス21を介してメインオーディオデコーダ31に送られる。メインオーディオデータはメインオーディオデコーダ31によってデコードされる。デコードされたメインオーディオデータは、I2S形式のデジタルオーディオ信号としてオーディオミキサ33に送られる。
サブオーディオデータは、PCIバス21を介してサブオーディオデコーダ32に送られる。サブオーディオデータはサブオーディオデコーダ32によってデコードされる。デコードされたサブオーディオデータは、I2S形式のデジタルオーディオ信号としてオーディオミキサ33に送られる。
サブピクチャデータおよびサブビデオデータは、それぞれサブピクチャデコーダ104およびサブビデオデコーダ105にそれぞれ送られる。これらサブピクチャデコーダ104およびサブビデオデコーダ105は、サブピクチャデータおよびサブビデオデータをそれぞれデコードする。これらサブピクチャデコーダ104およびサブビデオデコーダ105は、それぞれプレーヤアプリケーション150のサブピクチャデコードモジュールおよびサブビデオデコードモジュールによって実現されている。
サブピクチャデコーダ104、サブビデオデコーダ105、およびグラフィクスデコーダ106によってそれぞれデコードされたサブピクチャデータ、サブビデオデータ、およびグラフィクスデータは、CPU11によってVRAM131に書き込まれる。また、VRAM131にはカーソルイメージに対応するカーソルデータもCPU11によって書き込まれる。サブピクチャデータ、サブビデオデータ、グラフィクスデータ、およびカーソルデータの各々は、ピクセル毎にRGBデータとアルファデータ(A)とを含む。
GPU120は、CPU11によってVRAM131に書き込まれた、サブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータから、例えば1920×1080ピクセルのグラフィクス画面イメージを形成するグラフィクス出力データを生成する。この場合、サブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータは、GPU120のミキサ(MIX)部121によって実行されるアルファブレンディング処理によってピクセル毎に重ね合わされる。
このアルファブレンド処理においては、VRAM131に書き込まれた、サブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータそれぞれに対応するアルファデータが用いられる。すなわち、VRAM131に書き込まれたサブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータの各々は、画像データとアルファデータとから構成されている。ミキサ(MIX)部121は、サブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータそれぞれに対応するアルファデータと、CPU11によって指定される、それらサブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータそれぞれの位置情報とに基づいてブレンド処理を実行することにより、例えば1920×1080ピクセルの背景画像上にサブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータが重ね合わされたグラフィクス画面イメージを生成する。
背景画像の各ピクセルに対応するアルファ値は、当該ピクセルが透明であることを示す値つまり0である。グラフィクス画面イメージの内、画像データ同士が重ね合わされた領域については、その領域に対応する新たなアルファデータがミキサ(MIX)部121によって算出される。
このようにして、GPU120は、サブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータから、1920×1080ピクセルのグラフィクス画面イメージを形成するグラフィクス出力データ(RGB)およびそのグラフィクスデータに対応するアルファデータを生成する。なお、サブビデオデータ、グラフィクスデータ、サブピクチャデータ、およびカーソルデータのいずれか一つの画像のみが表示されるシーンについては、1920×1080ピクセルの背景画像上に当該画像(例えば720×480)のみが配置されたグラフィクス画面イメージに対応するグラフィクスデータおよびそのグラフィクスデータに対応するアルファデータが生成される。
GPU120によって生成されたグラフィクスデータ(RGB)およびアルファデータは、グラフィクスバス20を介してRGBAデータとしてブレンド処理部30に送られる。
次に、図4を参照して、ブレンド処理部30によって実行されるブレンド処理(アルファブレンディング処理)を説明する。
アルファブレンディング処理は、グラフィクスデータ(RGB)に付随するアルファデータ(A)に基づいて、グラフィクスデータとメインビデオデータとをピクセル単位で重ね合せるブレンド処理である。この場合、グラフィクスデータ(RGB)はオーバーサーフェースとして用いられ、ビデオデータ上に重ね合される。GPU120から出力されるグラフィクスデータの解像度は、ビデオデコーダ25から出力されるメインビデオデータの解像度と同一である。
いま、1920×1080ピクセルの解像度を持つメインビデオデータ(Video)が画像データCとしてブレンド処理部30に入力され、1920×1080ピクセルの解像度を持つグラフィクスデータが画像データGとしてブレンド処理部30に入力された場合を想定する。ブレンド処理部30は、1920×1080ピクセルの解像度を持つアルファデータ(A)に基づき、画像データC上に画像データGをピクセル単位で重ね合わせるための演算を実行する。この演算は、以下の式(1)によって実行される。
V=α×G+(1−α)C …(1)
ここで、Vはアルファブレンディング処理によって得られる出力画像データの各ピクセルの色、αはグラフィクスデータGの各ピクセルに対応するアルファ値である。
次に、図5を参照して、GPU120のMIX部121によって実行されるブレンド処理(アルファブレンディング処理)を説明する。
ここでは、VRAM131に書き込まれたSub-PictureデータおよびSub-Videoデータから1920×1080ピクセルの解像度を持つグラフィクスデータを生成する場合を想定する。Sub-PictureデータおよびSub-Videoデータの各々は、例えば720×480ピクセルの解像度を持つ。この場合、Sub-PictureデータおよびSub-Videoデータの各々には、例えば720×480ピクセルの解像度のアルファデータも付随する。
例えば、Sub-Pictureデータに対応するイメージはオーバーサーフェースとして使用され、Sub-Videoデータに対応するイメージはアンダーフェースとして使用される。
Sub-Pictureデータに対応するイメージとSub-Videoデータに対応するイメージとが重なった領域の各ピクセルの色は、以下の式(2)によって求められる。
G=Go×αo+Gu(1−αo)αu …(2)
ここで、Gは重なった領域の各ピクセルの色、Goはオーバーサーフェースとして使用されるSub-Pictureデータの各ピクセルの色、αoはオーバーサーフェースとして使用されるSub-Pictureデータの各ピクセルのアルファ値、Guはアンダーフェースとして使用されるSub-Videoデータの各ピクセルの色である。
また、Sub-Pictureデータに対応するイメージとSub-Videoデータに対応するイメージとが重なった領域の各ピクセルのアルファ値は、以下の式(3)によって求められる。
α=αo+αu×(1−αo) …(3)
ここで、αは重なった領域の各ピクセルのアルファ値、αuはアンダーサーフェースとして使用されるSub-Videoデータの各ピクセルのアルファ値である。
このように、GPU120のMIX部121は、Sub-Pictureデータに対応するアルファデータおよびSub-Videoデータに対応するアルファデータの内、オーバーサーフェースとして使用される方のアルファデータを用いて、Sub-PictureデータとSub-Videoデータとを重ね合わせ、これにより1920×1080ピクセルの画面イメージを形成するグラフィクスデータを生成する。さらに、GPU120のMIX部121は、Sub-Pictureデータに対応するアルファデータとSub-Videoデータに対応するアルファデータとから、1920×1080ピクセルの画面イメージを形成するグラフィクスデータの各ピクセルのアルファ値を算出する。
具体的には、GPU120のMIX部121は、1920×1080ピクセルのサーフェース(全ピクセルの色=黒、全ピクセルのアルファ値=0)と、720×480ピクセルのSub-Videoデータのサーフェースと、720×480ピクセルのSub-Pictureデータのサーフェースとを重ね合わせるブレンド処理を実行することにより、1920×1080ピクセルの画面イメージを形成するグラフィクスデータと1920×1080ピクセルのアルファデータとを算出する。1920×1080ピクセルのサーフェースが最も下側のサーフェースとして使用され、Sub-Videoデータのサーフェースが2番目に下側のサーフェースとして使用され、Sub-Pictureデータのサーフェースが最も上側のサーフェースとして使用される。
1920×1080ピクセルの画面イメージの内、Sub-PictureデータおよびSub-Videoデータのどちらも存在しない領域の各ピクセルの色は黒となる。また、Sub-Pictureデータのみが存在する領域内の各ピクセルの色は、Sub-Pictureデータの対応する各ピクセルの本来の色と同じとなる。同様に、Sub-Videoデータのみが存在する領域内の各ピクセルの色は、Sub-Videoデータの対応する各ピクセルの本来の色と同じとなる。
また1920×1080ピクセルの画面イメージの内、Sub-PictureデータおよびSub-Videoデータのどらも存在しない領域の各ピクセルに対応するアルファ値は零となる。Sub-Pictureデータのみが存在する領域内の各ピクセルのアルファ値は、Sub-Pictureデータの対応する各ピクセルの本来のアルファ値と同じとなる。同様に、Sub-Videoデータのみが存在する領域内の各ピクセルのアルファ値は、Sub-Videoデータの対応する各ピクセルの本来のアルファ値と同じとなる。
図6には、1920×1080ピクセルのメインビデオデータ上に720×480ピクセルのサブビデオデータが重ねて表示される様子が示されている。
図6においては、グラフィクスデータは、1920×1080ピクセルのサーフェース(全ピクセルの色=黒、全ピクセルのアルファ値=0)と、720×480ピクセルのSub-Videoデータのサーフェースとをピクセル毎に重ね合わせるブレンド処理によって生成される。
前述したように、表示装置に出力される出力画像データ(Video+Graphics)は、グラフィクスデータとメインビデオデータとをブレンドすることによって生成される。
1920×1080ピクセルのグラフィクスデータの内、720×480ピクセルのサブビデオデータが存在しない領域の各ピクセルのアルファ値は零である。このため、720×480ピクセルのサブビデオデータが存在しない領域は透明となるので、その領域にはメインビデオデータが100パーセントの不透明度で表示される。
720×480ピクセルのサブビデオデータの各ピクセルは、サブビデオデータに対応するアルファデータで指定される透明度でメインビデオデータ上に表示される。例えば、アルファ値=1のサブビデオデータのピクセルは100パーセントの不透明度で表示され、当該ピクセル位置に対応するメインビデオデータのピクセルは表示されない。
また、図7に示すように、720×480ピクセルの解像度に縮小されたメインビデオデータを、1920×1080ピクセルの解像度に拡大されたサブビデオデータ上の一部の領域に表示することもできる。
図7の表示形態は、GPU120が有するスケーリング機能およびビデオデコーダ25が有するスケーリング機能を用いて実現される。
具体的には、GPU120は、CPU11からの指示に従って、サブビデオデータの解像度(画像サイズ)が1920×1080ピクセルになるまでサブビデオデータの解像度を段階的に拡大するスケーリング処理を実行する。このスケーリング処理は、ピクセル補間を用いて実行される。サブビデオデータの解像度が大きくなるに従い、1920×1080ピクセルのグラフィクスデータの内、720×480ピクセルのサブビデオデータが存在しない領域(アルファ値=0の領域)は徐々に小さくなる。これにより、メインビデオデータ上に重ねて表示されるサブビデオデータのサイズは徐々に大きくなり、逆にアルファ値=0の領域は徐々小さくなる。サブビデオデータの解像度(画像サイズ)が1920×1080ピクセルになった場合、GPU120は、例えば、720×480ピクセルのサーフェース(全ピクセルの色=黒、全ピクセルのアルファ値=0)を1920×1080ピクセルのサブビデオデータ上にピクセル毎に重ね合わせるブレンド処理を実行して、1920×1080ピクセルのサブビデオデータ上にアルファ値=0の720×480ピクセルの領域を配置する。
一方、ビデオデコーダ25は、CPU11からの指示に従って、メインビデオデータの解像度を720×480ピクセルに縮小するスケーリング処理を実行する。
720×480ピクセルに縮小されたメインビデオデータは、1920×1080ピクセルのサブビデオデータ上に配置された、720×480ピクセルのアルファ値=0の領域に表示される。すなわち、GPU120から出力されるアルファデータは、メインビデオデータが表示される領域を制限するためのマスクとしても使用することができる。
このように、GPU120から出力されるアルファデータはソフトウェアによって自由に制御することができるので、グラフィクスデータを効果的にメインビデオデータ上に重ねて表示することができ、これによりインタラクティブ性の高い映像表現を容易に実現することができる。さらに、アルファデータはグラフィクスデータと一緒にGPU120からブレンド処理部30に自動的に転送されるので、ソフトウェアは、ブレンド処理部30へのアルファデータの転送を意識する必要はない。
図8は、本HD DVDプレーヤによって再生されるHD規格のAVコンテンツ中の複数の画像データそれぞれが、前述のように動作するGPU120とブレンド処理部30とによってどのような手順で重ね合わされるのかを示す概念図である。
HD規格では、レイヤ1〜レイヤ5の5つのレイヤが定義されており、各レイヤに前述のカーソル、グラフィクス、サブピクチャ、サブビデオ、メインビデオがそれぞれ割り当てられている。そして、本HDD DVDプレーヤでは、図8に示すように、このレイヤ1〜レイヤ5のうち、レイヤ1〜レイヤ4の4つの画像a1〜画像a4の重ね合わせを前段処理としてGPU120のミキサ部121で実行し、このGPU120の出力画像とレイヤ5の画像a5との重ね合わせを後段処理としてブレンド処理部30で実行することにより、目的の画像a6を作成している。
このように、HD規格で定義されるレイヤ1〜レイヤ5の5つの画像データの重ね合わせを2段階に分離させることで、本HD DVDプレーヤは、第1に、適切な負荷分散を図っている。また、レイヤ5のメインビデオは高精細映像であり、30フレーム/秒の各フレームについて更新を欠かせない。そのために、このメインビデオを扱うブレンド処理部30での重ね合わせは30回/秒必要となる。これに対して、レイヤ1〜レイヤ4のカーソル、グラフィクス、サブピクチャ、サブビデオは、メインビデオ程の高い画質は要求されていないので、GPU120のミキサ部121での重ね合わせは例えば10回/秒で良い。仮に、このレイヤ1〜レイヤ4のカーソル、グラフィクス、サブピクチャ、サブビデオの重ね合わせをレイヤ5のメインビデオとともにブレンド処理部30で実行したならば、レイヤ1〜レイヤ4の各レイヤについても30回/秒、つまり20回/秒も必要以上に重ね合わせを実行することになる。つまり、本HD DVDプレーヤは、第2に、適切な効率化を図っている。
レイヤ1〜レイヤ4のカーソル、グラフィクス、サブピクチャ、サブビデオは、プレーヤアプリケーション150からGPU120に供給されるが、このGPU120への各画像データの供給のために、プレーヤアプリケーション150は、図8に示すように、前述のサブピクチャデコーダ104、サブビデオデコーダ105、グラフィクスデコーダ(エレメントデコーダ)106のほか、カーソルドローウィングマネージャ107およびサーフェースマネジメント/タイミングコントローラ108を有している。
カーソルドローウィングマネージャ107は、ナビゲーション制御部201の一機能として実現され、ユーザによるマウスデバイス171の操作に応じてカーソルを移動させるためのカーソル描画制御を実行する。一方、サーフェースマネジメント/タイミングコントローラ108は、サブピクチャデコーダ104によってデコードされたサブピクチャデータの画像を適時に表示させるためのタイミング制御を実行する。
なお、図中のCursor Controlは、マウスデバイス171の操作に応じてUSBコントローラ17が発行するカーソル移動用の制御データである。ECMA Scriptは、点、線、図形等の描画を指示するdrawingAPIが記述されたスクリプトである。iHD Markupは、様々なAdvanced Elementを適時に表示させるためにマークアップ言語で記述されたテキストデータである。
また、GPU120は、前述のミキサ部121のほか、スケーリング処理部122、ルーマキー処理部123および3Dグラフィクスエンジン124を有している。
スケーリング処理部122は、図7の説明で触れたスケーリング処理を実行する。ルーマキー処理部123は、輝度値がしきい値以下のピクセルのアルファ値を0にすることによって画像中の背景(黒)を取り除くルーマキー処理を実行する。3Dグラフィクスエンジン124は、前述のドローウィング機能のための(カーソルの軌跡からなる絵の)イメージ生成を含むグラフィクスデータの生成処理を実行する。
本HD DVDプレーヤでは、図8に示すように、レイヤ2〜レイヤ4の画像a2〜画像a4についてスケーリング処理を行い、レイヤ4の画像a4についてはさらにルーマキー処理を行っている。そして、本HD DVDプレーヤでは、このスケーリング処理やルーマキー処理をそれぞれ単独でGPU120に実行させるのではなく、(ミキサ部121による)ブレンド処理を実行させる際、このブレンド処理と並行して実行させる。プレーヤアプリケーション150の立場から言えば、このスケーリング処理やルーマキー処理をブレンド処理と同時に依頼する。仮に、このスケーリング処理やルーマキー処理をそれぞれ単独でGPU120に実行させたならば、スケーリング処理後の画像やルーマキー処理後の画像を一時的に格納する中間バッファが必要となり、また、この中間バッファとGPU120との間のデータ転送が必要となる。これに対して、GPU120内において、スケーリング処理部122の出力が随時にルーマキー処理部123に入力され、さらにルーマキー処理部123の出力が随時にミキサ部121に入力されていくといった、スケーリング処理部122、ルーマキー処理部123およびミキサ部121を協働させたいわゆるパイプライン処理を行う本HD DVDプレーヤでは、中間バッファが不要であり、中間バッファとGPU120との間のデータ転送も生じさせない。つまり、本HD DVDプレーヤは、この点でも、適切な効率化を図っている。
なお、図8に示すPixelバッファマネージャ153は、3Dグラフィクスエンジン124を使ったマウス操作による絵の描画やエレメントデコーダ106による操作ガイダンス等のオブジェクトの描画のための作業領域として使用されるPixelバッファの割り当て管理を実行するミドルウェアである。ハードウェアであるPixelバッファをソフトウェアで使用するために用意されるドライバによる割り当て管理をより最適化するために、Pixelバッファマネージャ153は、このドライバとPixelバッファを用いる上位システムとの間に介在して設けられる。
以上のように、本HD DVDプレーヤにおいては、HD規格で定義されるレイヤ1〜レイヤ5の5つの画像データの重ね合わせを2段階に分離させることで、適切な負荷分散および効率化を図っており、また、スケーリング処理やルーマキー処理をブレンド処理と並行して実行することで、さらなる効率化を図っている。
ところで、ここでは、レイヤ1〜レイヤ5のうち、レイヤ1〜レイヤ4の画像a1〜画像a4の重ね合わせを前段、レイヤ5の画像a5の重ね合わせを後段として分離する例を説明したが、例えばレイヤ4の画像a4、つまりサブビデオの分離先を前段と後段との間で動的に切り換え可能とすることも有効である。図9は、このサブビデオの重ね合わせをGPU120のミキサ部121またはブレンド処理部30のいずれかで選択的に実行させるための一構成例を示す図である。
例えば、サブビデオにもメインビデオと同等の高い画質を要求し、30フレーム/秒の各フレームについて更新させたい場合に、図9(A)の状態から図9(B)の状態への切り換えを実施する等が考えられる。そのトリガは、ナビゲーションデータに含まれるスクリプトとして与えることが可能である。
また、図9(B)の状態を基本として、本HD DVDプレーヤが予め定められた基準値を越える高負荷状態となった場合に、図9(A)の状態への切り換えを実施する等も考えられる。プレーヤアプリケーション150は、OS151から負荷状態を取得することができるので、そのトリガを得ることは容易である。
さらに、ここでは、前段の重ね合わせをソフトウェアであるGPU120、後段の重ね合わせをハードウェアであるブレンド処理部30で行う例を説明したが、本発明の本質はソフトウェア処理とハードウェア処理との分離にはないので、例えば前段および後段の両方をソフトウェア処理で行う場合にも当然に適用できる。
このように、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。