(57)【要約】【課題】画像を表示するために用いるメモリの使用量を削減できる。【解決手段】  ステップＳ１で画像データがバックバッファに格納される。ステップＳ２で、バックバッファ３４上の画像データに重畳表示させる画像データが上書きされる。ステップＳ３でAPIが呼び出されることにより、バックバッファ上の画像データがフロントバッファにアップデートされる。このとき、APIの引数の対応して画像データの拡大、縮小、回転などが行われる。本発明は、例えば半導体メモリに記録されている画像を画面に表示する機能を有するテレビジョン受像機等、ディスプレイに画像を表示するあらゆる電子機器に適用することができる。【選択図】図４
2007086432.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対応する画像をディスプレイに表示させる表示制御装置において、
前記表示制御装置の動作を制御するためアプリケーションプログラムおよびミドルウェアを実行する実行手段と、
入力された画像データを保持する第１の保持手段と、
前記第１の保持手段から読み出された前記画像データに対して画像処理を行う画像処理手段と、
前記画像処理手段による画像処理結果の画像データを保持する第２の保持手段と、
前記第２の保持手段によって保持されている画像データをディスプレイの表示に反映させる反映手段とを含み、
前記画像処理手段および前記保持手段は、ミドルウェアによって提供され、前記アプリケーションプログラムによって呼び出されるAPI(Application Program Interface)により制御される
表示制御装置。
【請求項２】
前記画像処理手段は、前記第１の保持手段から読み出された前記画像データに対して拡大処理、縮小処理、または回転処理を行う
請求項１に記載の表示制御装置。
【請求項３】
前記画像処理手段は、前記第１の保持手段と前記第２の保持手段のサイズに基づいて前記拡大処理における拡大比率、または前記縮小処理における縮小比率を算出する
請求項１に記載の表示制御装置。
【請求項４】
前記画像処理手段は、前記第１の保持手段から部分的に読み出された前記画像データに対して画像処理を行う
請求項１に記載の表示制御装置。
【請求項５】
前記第１の保持手段から部分的に読み出された前記画像データの境界は、前記画像処理手段による画像処理後の座標が整数となるように決定される
請求項４に記載の表示制御装置。
【請求項６】
前記第１の保持手段から部分的に読み出された前記画像データの境界は、前記画像処理手段による画像処理に含まれる画素のフィルタリング処理を考慮して決定される
請求項４に記載の表示制御装置。
【請求項７】
前記第１の保持手段は、保持すべき前記画像データ全体のデータ量よりも容量が小さく、分割して入力された前記画像データを保持する
請求項１に記載の表示制御装置。
【請求項８】
画像データに対応する画像をディスプレイに表示させる表示制御装置の表示制御方法において、
入力された画像データを保持する第１の保持ステップと、
前記第１の保持ステップの処理で保持された前記画像データを読み出して画像処理を行う画像処理ステップと、
前記画像処理ステップの処理による画像処理結果の画像データを保持する第２の保持ステップと、
前記第２の保持ステップの処理で保持されている画像データをディスプレイの表示に反映させる反映ステップとを含み、
前記画像処理ステップおよび前記保持ステップは、ミドルウェアによって提供され、アプリケーションプログラムによって呼び出されるAPIにより制御される
表示制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御装置、および表示制御方法に関し、特に、バックバッファ上の画像データをVRAM(Video Random Access Memory)上のフロントバッファにアップデートすることによりディスプレイの表示を更新させる場合に用いて好適な表示制御装置、および表示制御方法に関する。
【背景技術】
【０００２】
ディスプレイにおける画像の描画は、VRAM上に設けられたバッファに画像データが描画され、VRAMの内容が反映されることにより行われる。したがって、VRAMの内容を反映させるタイミングの制御が悪いと、VRAMへの描画途中の画像データに対応する不完全な画像がディスプレイに表示されてしまうことがある。
【０００３】
このような事態を防ぐため、従来では例えば、図１に示すようにVRAM１上に同じサイズの第１のバッファ２と第２のバッファ３を設け、第１のバッファ２または第２のバッファ３の一方の用途を画像データの描画用、他方の用途をディスプレイへの反映用として、その用途を交互に切り替えることが行われている（例えば、特許文献１参照）。
【０００４】
また例えば、VRAM上にフロントバッファを、メインメモリ上にバックバッファを設け、バックバッファの用途を画像データの描画用、フロントバッファの用途をディスプレイへの反映用として、バックバッファの内容を速やかにフロントバッファに転送するようにすることが行われている。
【０００５】
【特許文献１】特開平８−５０６５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したいずれの方法においても、VRAM上のディスプレイへの反映用バッファと同じサイズの描画用バッファをVRAM上またはメインメモリ上に設ける必要があり、当該描画用バッファの確保はシステムの制約上困難となる場合がある。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、画像を表示するために用いるメモリの使用量を削減できるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の第１の側面の表示制御装置は、画像データに対応する画像をディスプレイに表示させる表示制御装置において、前記表示制御装置の動作を制御するためアプリケーションプログラムおよびミドルウェアを実行する実行手段と、入力された画像データを保持する第１の保持手段と、前記第１の保持手段から読み出された前記画像データに対して画像処理を行う画像処理手段と、前記画像処理手段による画像処理結果の画像データを保持する第２の保持手段と、前記第２の保持手段によって保持されている画像データをディスプレイの表示に反映させる反映手段とを含み、前記画像処理手段および前記保持手段は、ミドルウェアによって提供され、前記アプリケーションプログラムによって呼び出されるAPIにより制御される。
【０００９】
前記画像処理手段は、前記第１の保持手段から読み出された前記画像データに対して拡大処理、縮小処理、または回転処理のうちの少なくとも１つを行うようにすることができる。
【００１０】
前記画像処理手段は、前記第１の保持手段と前記第２の保持手段のサイズに基づいて前記拡大処理における拡大比率、または前記縮小処理における縮小比率を算出するようにすることができる。
【００１１】
前記画像処理手段は、前記第１の保持手段から部分的に読み出された前記画像データに対して画像処理を行うようにすることができる。
【００１２】
前記第１の保持手段から部分的に読み出された前記画像データの境界は、前記画像処理手段による画像処理後の座標が整数となるように決定されるようにすることで、拡大率、および縮小率のずれをなくし、画質の劣化を防ぐことができる。
【００１３】
前記第１の保持手段から部分的に読み出された前記画像データの境界は、前記画像処理手段による画像処理に含まれる画素のフィルタリング処理を考慮して決定されるようにすることができる。
【００１４】
前記第１の保持手段は、保持すべき前記画像データ全体のデータ量よりも容量が小さく、分割して入力された前記画像データを保持するようにすることができる。
【００１５】
本発明の一側面である表示制御方法は、画像データに対応する画像をディスプレイに表示させる表示制御装置の表示制御方法において、入力された画像データを保持する第１の保持ステップと、前記第１の保持ステップの処理で保持された前記画像データを読み出して画像処理を行う画像処理ステップと、前記画像処理ステップの処理による画像処理結果の画像データを保持する第２の保持ステップと、前記第２の保持ステップの処理で保持されている画像データをディスプレイの表示に反映させる反映ステップとを含み、前記画像処理ステップおよび前記保持ステップは、ミドルウェアによって提供され、アプリケーションプログラムによって呼び出されるAPIにより制御される。
【００１６】
本発明の一側面においては、保持された前記画像データを読み出して画像処理を行う処理と、画像処理結果の画像データを保持する処理が、ミドルウェアによって提供され、アプリケーションプログラムによって呼び出されるAPIにより制御される。
【発明の効果】
【００１７】
以上のように、本発明の一側面によれば、画質を劣化させることなく、画像を表示するために用いるメモリの使用量を削減することができる。
【発明を実施するための最良の形態】
【００１８】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１９】
本発明の第１の側面の表示制御装置（例えば、図２の画像表示装置１０）は、画像データに対応する画像をディスプレイに表示させる表示制御装置において、前記表示制御装置の動作を制御するためアプリケーションプログラム（例えば、図２の画像表示アプリケーション３１）およびミドルウェア（例えば、図２のバッファ制御ミドルウェア３２）を実行する実行手段（例えば、図２のCPU１１）と、入力された画像データを保持する第１の保持手段（例えば、図２のバックバッファ３４）と、前記第１の保持手段から読み出された前記画像データに対して画像処理を行う画像処理手段（例えば、図２の画像処理部４１）と、前記画像処理手段による画像処理結果の画像データを保持する第２の保持手段（例えば、図２のフロントバッファ４３）と、前記第２の保持手段によって保持されている画像データをディスプレイの表示に反映させる反映手段（例えば、図２の表示制御部１７）とを含み、前記画像処理手段および前記保持手段は、ミドルウェアによって提供され、前記アプリケーションプログラムによって呼び出されるAPIにより制御される。
【００２０】
本発明の一側面である表示制御方法は、画像データに対応する画像をディスプレイに表示させる表示制御装置の表示制御方法において、入力された画像データを保持する第１の保持ステップ（例えば、図４のステップＳ１）と、前記第１の保持ステップの処理で保持された前記画像データを読み出して画像処理を行う画像処理ステップ（例えば、図４のステップＳ４）と、前記画像処理ステップの処理による画像処理結果の画像データを保持する第２の保持ステップ（例えば、図４のステップＳ５）と、前記第２の保持ステップの処理で保持されている画像データをディスプレイの表示に反映させる反映ステップ（例えば、図４のステップＳ６）とを含み、前記画像処理ステップおよび前記保持ステップは、ミドルウェアによって提供され、アプリケーションプログラムによって呼び出されるAPIにより制御される。
【００２１】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２２】
図２は、本発明の一実施の形態である画像表示装置の構成例を示している。この画像表示装置１０は、例えば、記録媒体２１などを介して外部から供給される画像データや、画像作成アプリケーションによって生成された画像データを拡大したり、縮小したり、回転したり、あるいはその一部を抽出してディスプレイ２２に表示するものである。
【００２３】
画像表示装置１０は、CPU(Central Processing Unit)１１を内蔵している。CPU１１にはバス１４を介して、入出力インタフェース１５が接続されている。バス１４には、ROM(Read Only Memory)１２およびRAM(Random Access Memory)１３が接続されている。
【００２４】
入出力インタフェース１５には、ユーザが操作コマンドを入力する入力部１６、後段のディスプレイ２２に画像データを表示させる表示制御部１７、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部１８、およびモデム、LAN（Local Area Network）アダプタなどよりなり、インタネットに代表されるネットワークを介した通信処理を実行する通信部１９が接続されている。また、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む）、光磁気ディスク（ＭＤ(Mini Disc)を含む）、もしくは半導体メモリなどの記録媒体２１に対してデータを読み書きするドライブ２０が接続されている。
【００２５】
RAM１３には、CPU１１によって実行される画像表示アプリケーション３１、画像表示アプリケーション３１から呼び出される複数のAPI(Application Program Interface)を提供するバッファ制御ミドルウェア３２が格納されている。画像表示アプリケーション３１およびバッファ制御ミドルウェア３２は、記憶部１８にインストールされており、入力部１６に入力されるユーザからのコマンドに対応するCPU１１の指令によって、記憶部１８からRAM１３にロードされる。
【００２６】
またRAM１３には、画像表示アプリケーション３１によって使用される画像表示アプリケーション用作業領域３３、および記録媒体２１から読み出された画像データが格納されるバックバッファ３４が設けられる。
【００２７】
表示制御部１７は、バックバッファ３４に保持された画像データの拡大、縮小、回転などを行う画像処理部４１、およびVRAM４２を有する。VRAM４２には、書き込まれた画像データがディスプレイ２２に反映されるフロントバッファ４３、および画像処理部４１によって使用される画像処理部用作業領域４４が設けられる。
【００２８】
次に、バッファ制御ミドルウェア３２により提供され、画像表示アプリケーション３１によって呼び出される４種類のAPIについて、図３を参照して説明する。
【００２９】
API Ａは、後述する引数に基づいてRAM１３上にバックバッファ３４のメモリ領域を確保するとともに、バックバッファ３４の管理情報を初期化するためのものである。画像表示アプリケーション３１は、引数としてフロントバッファ４３の識別情報（引数Ａａ）、バックバッファ３４の論理的な幅（引数Ａｂ）、バックバッファ３４の論理的な高さ（引数Ａｃ）、回転角（０°，９０°，１８０°、または２７０°）（引数Ａｄ）、後述する部分的バックバッファの使用の可否（引数Ａｅ）、および、部分的バックバッファのサイズ（引数Ａｆ）を指定する。
【００３０】
API Ｂは、RAM１３上に確保されているバックバッファ３４のメモリ領域を開放し、確保されていたバックバッファ３４の管理情報をクリアするためのものである。
【００３１】
API Ｃは、API Ａによって初期化されたバックバッファ３４の管理情報を変更するためのものである。
【００３２】
API Ｄは、部分的バックバッファを使用して、フロントバッファ４３をアップデートする（バックバッファ３４の画像データをフロントバッファ４３上に転送する）ために必要な情報を取得するためのものである。API Ａで初期化する際に引数Ａｅで部分的バックバッファを使用しないように設定した場合は、API Ｄを呼び出す必要はない。画像表示アプリケーション３１は、引数としてフロントバッファ４３の識別情報（引数Ｄａ）、アップデートする矩形領域（バックバッファ３４上の座標、幅、高さ）（引数Ｄｂ）、および、アップデート情報を格納するための領域へのポインタ（引数Ｄｃ）を指定する。
【００３３】
画像表示アプリケーション３１がAPI Ｄから取得できる情報Ｉａ乃至Ｉｅは以下のとおりである。
部分的バックバッファ領域の先頭アドレス（情報Ｉａ）
分割された領域の高さの最大値（後述するregion_height)（情報Ｉｂ）
指定領域１ライン分のデータサイズ（row_bytes)（情報Ｉｃ）
後述する第３拡張領域を特定するための情報（情報Ｉｄ）
分割アップデート対応のための拡張部分の高さ（後述するvertical_margin)（情報Ｉｅ）
【００３４】
画像表示アプリケーション３１は、API Ｄから取得した情報Ｉａ乃至Ｉｅを元に、次に説明するAPI Ｅによってアップデート対象領域となる領域を把握することができ、部分的バックバッファの画像データを更新することができる。
【００３５】
API Ｅは、後述する引数に基づいてフロントバッファ４３をアップデートするためのものである。画像表示アプリケーション３１は、引数としてフロントバッファ４３の識別情報（引数Ｅａ）、および、アップデートする矩形領域（バックバッファ３４上の座標、幅、高さ）（引数Ｅｂ）を指定する。
【００３６】
なお、上述したAPI Ａは、フロントバッファ４３の識別情報を元に、別のミドルウェアを介して、フロントバッファ４３に関する必要な情報(幅、高さ、画像データを格納する領域のアドレスなど)を取得できることを前提とした場合の例である。当該別のミドルウェアが存在しない場合、API Ａの引数を追加し、フロントバッファ４３に関する必要な情報(幅、高さ、画像データを格納する領域のアドレスなど)についても、画像表示アプリケーション３１が指定するようにする。
【００３７】
また、フロントバッファ４３とバックバッファ３４の管理は独立しており、当該バッファ制御ミドルウェア３２はフロントバッファ４３の管理を行っていないものとする。ただし、当該バッファ制御ミドルウェア３２がフロントバッファ４３の管理を行うようにしてもかまわない。
【００３８】
次に、画像表示装置１０の動作概要について、図４のフローチャートを参照して説明する。ステップＳ１において、画像表示アプリケーション３１は、API Ａを呼び出してバックバッファ３４を初期化した後、ドライブ２０に装着されている記録媒体２１から画像データを読み出してバックバッファ３４に格納する。読み出した画像データに他の画像データを重畳表示させる場合、ステップＳ２において、画像表示アプリケーション３１は、画像表示アプリケーション用作業領域３３を利用して重畳させる画像データを生成し、バックバッファ３４上の画像データに上書きする。
【００３９】
ステップＳ３において、画像表示アプリケーション３１は、API Ｅを呼び出すことで、バックバッファ３４上の画像データをフロントバッファ４３にアップデートするように、バッファ制御ミドルウェア３２に要求する。これに対応し、バッファ制御ミドルウェア３２は、バックバッファ３４上の画像データを画像処理部用作業領域４４に格納する。ステップＳ４において、画像処理部４１は、画像処理部用作業領域４４に格納された画像データに対し、API Ａで設定した情報に基づき、画像データに拡大処理、縮小処理、および回転処理を施す。ステップＳ５において、画像処理部４１は、拡大処理などを施した画像データをフロントバッファ４３に格納する。そしてステップＳ６において、表示制御部１７は、フロントバッファ４３上の画像データをディスプレイ２２に反映させる。
【００４０】
以上で、画像表示装置１０による動作概要の説明を終了する。上述したように、画像表示装置１０によれば、画像表示アプリケーション３１は、直接的に指示することなくAPI Ｅを呼び出することによって、フロントバッファ４３のアップデートとディスプレイ２２への反映を実行させることができる。これにより、ディスプレイ２２に不完全な画像が表示されることを防ぐことができる。
【００４１】
次に、API Ｅが呼び出され、バックバッファ３４からフロントバッファ４３に画像データがアップデートされる過程において実行される拡大、縮小、回転、または領域指定アップデートについて説明する。
【００４２】
拡大、または縮小
API Ａの引数Ａｂ，Ａｃで指定されたバックバッファ３４の論理的な幅と高さが、フロントバッファ４３の論理的な幅と高さと異なる場合、バックバッファ３４上の画像データが拡大、または縮小されてフロントバッファ４３にアップデートされる。
【００４３】
例えば、バックバッファ３４の論理的な幅と高さが、フロントバッファ４３の論理的な幅と高さよりも小さい場合、図５Ａに示すように、バックバッファ３４の画像データが拡大されてフロントバッファ４３にアップデートされる。
【００４４】
また例えば、バックバッファ３４の論理的な幅と高さが、フロントバッファ４３の論理的な幅と高さよりも大きい場合、図５Ｂに示すように、バックバッファ３４の画像データが縮小されてフロントバッファ４３にアップデートされる。
【００４５】
したがって、画像表示アプリケーション３１がフロントバッファ４３の幅と高さを変更することにより、ディスプレイ２２に表示される画像のサイズを変更することが可能である。拡大比率（縮小比率）は、バックバッファ３４の幅と高さ、および、フロントバッファ４３の幅と高さによって定まるため、フロントバッファ４３の幅と高さの変更に伴って拡大比率（縮小比率）は変動する。
【００４６】
そこで、フロントバッファ４３のアップデート時に、フロントバッファ４３の幅と高さを毎回取得し、拡大比率（縮小比率）を算出する。これにより、フロントバッファ４３の幅と高さが変更されても、フロントバッファ４３のアップデート時には、その時点でのフロントバッファ４３の幅と、高さ、および、バックバッファ３４の幅と高さから拡大比率（縮小比率）を得ることができる。したがって、フロントバッファ４３の幅と高さを変更しても、バックバッファ３４の設定を変更する必要がなく、変更前と同様にフロントバッファ４３のアップデートを行うことができる。
【００４７】
回転
API Ａの引数Ａｄで指定された回転角が０°以外の場合、バックバッファ３４上の画像データが回転されてフロントバッファ４３にアップデートされる。
【００４８】
例えば、回転角が９０°である場合、図５Ｃに示すように、バックバッファ３４の画像データが９０°回転されてフロントバッファ４３にアップデートされる。
【００４９】
なお、バックバッファ３４の画像データの拡大または縮小と回転とを組み合わせることも可能である。
【００５０】
領域指定アップデート
API Ｄの引数Ｄｂで指定されたアップデートする矩形領域、またはAPI Ｅの引数Ｅｂで指定されたアップデートする矩形領域に対応するフロントバッファ４３の領域がアップデートされる。
【００５１】
例えば、アップデートする矩形領域として、図５Ｄに破線で示す領域が指定された場合、破線内の画像データだけがフロントバッファ４３にアップデートされる。なお、拡大、または縮小を伴うときには、画像劣化を防ぐために、破線をはみ出す所定の範囲の画像データがフロントバッファ４３にアップデートされる。
【００５２】
このように、指定した領域だけをフロントバッファ４３にアップデートすることができるので、アップデートの処理効率を向上させることができる。
【００５３】
なお、領域指定アップデートと拡大または縮小と回転とを組み合わせることも可能である。
【００５４】
部分的バックバッファ
次に、バックバッファ３４が、論理的サイズよりも小さい（すなわち、表示しようとする画像データのサイズよりも小さい）領域しか確保できない状態（この状態を部分的バックバッファと称する）について説明する。
【００５５】
API Ａの引数Ａｅとして部分的バックバッファを使用するとされている場合、部分的バックバッファが使用され、そのサイズは引数Ａｆに従って確保される。なお、API Ａの引数Ａｅとして部分的バックバッファを使用しないとされている場合、引数Ａｆは無視される。
【００５６】
部分的バックバッファを使用することにより、メインメモリ、すなわち、RAM１３の使用量を軽減させることができる。
【００５７】
分割アップデート
部分的バックバッファが使用される場合、API Ｄが呼び出され、フロントバッファをアップデートするための情報が取得される。取得した情報により、分割してアップデートする必要があるか否かを判断できる。アップデートする領域の大きさに対して、部分的バックバッファのサイズが十分に大きい場合、分割する必要はなく、１回のアップデートでフロントバッファをアップデートできる。分割アップデートを行う場合は、例えば図６に示すように、表示する画像データのうち、部分的バックバッファのサイズに格納できる分だけが部分的バックバッファに書き込まれた後、API Ｅが呼び出され、フロントバッファ４３にアップデートされる動作が繰り返される。
【００５８】
整数座標対応のための領域拡張
領域指定アップデートと拡大または縮小とを組み合わせた場合、その拡大比率（または縮小比率）と指定された領域の座標によっては、拡大（または縮小）処理後の座標が整数にならないことがある。この非整数の座標の小数部分を丸めると、拡大比率（縮小比率）がずれてしまい画質が劣化してしまう。
【００５９】
例えば図７Ａに示すように、バックバッファ３４のサイズが幅４００、高さ２００であり、フロントバッファ４３のサイズが幅５００、高さ３００であって、アップデートする矩形領域が、座標（２９８，９９）、幅１０２、高さ１０１である場合、
２９８×５００／４００＝３７２．５→３７２
９９×３００／２００＝１４８．５  →１４８
矩形領域の頂点はフロントバッファ４３の（３７２，１４８）に移されてしまうので拡大比率（縮小比率）がずれてしまい画質が劣化してしまう。
【００６０】
そこで、本発明においては、拡大比率（縮小比率）がずれないようにするために、転送後の座標が整数になるように指定された矩形領域（指定領域）を図８に示す第１拡張領域に拡張する。例えば図７では、アップデートする矩形領域を、座標（２９８−２，９９−１）、幅１０２＋２、高さ１０１＋１に拡張する。
【００６１】
これにより、転送後の座標が整数になり、拡大比率（縮小比率）がずれることがなくなるため、画質の劣化を抑止できる。
（２９８−２）×５００／４００＝３７０
（９９−１）×３００／２００＝１４７
【００６２】
整数座標対応のための領域拡張の一般式は以下のとおりである。ただし、ここで拡張のための基準となる幅をalign_x、高さをalign_yとする。
【００６３】
第１拡張領域の各頂点の座標は以下の条件１，２を満たすように領域を拡張する。
条件１：ｘ座標がalign_xの正の整数倍、または０である。
条件２：ｙ座標がalign_yの正の整数倍、または０である。
【００６４】
次にalign_x，align_yを算出する。
align_x＝back_w／gcd_w
align_y＝back_h／gcd_h
【００６５】
ただし、符号の定義は以下のとおりである。
back_w：バックバッファの論理的な幅
back_h：バックバッファの論理的な高さ
front_w：フロントバッファの幅
front_h：フロントバッファの高さ
回転角度＝０°または１８０°の場合
gcd_w：back_wとfront_wの最大公約数
gcd_h：back_hとfront_hの最大公約数
回転角度  ９０°または２７０°の場合
gcd_w：back_wとfront_hの最大公約数
gcd_h：back_hとfront_wの最大公約数
【００６６】
なお、画像データのピクセルフォーマットによっては、バックバッファ３４、およびフロントバッファ４３の両方において、対象領域となる矩形の全ての頂点のｘ座標が偶数でなければならないという制約がある。この場合、ｘ座標が必ず偶数になるように、align_x，align_yを以下のように算出する。
回転角度＝０°または１８０°の場合
align_y＝back_h／gcd_h
align_xまたは(align_x・front_w／back_w)が奇数であるとき
align_x＝２(back_w／gcd_w)
その他のとき
align_x＝back_w／gcd_w
回転角度＝９０°または２７０°の場合
align_x＝back_w／gcd_w
align_yまたは(align_y・front_w／back_h)が奇数であるとき
align_y＝２(back_h／gcd_h)
その他のとき
align_y＝back_h／gcd_h
【００６７】
フィルタリング処理対応のための領域拡張
ところで、拡大または縮小を伴う場合、転送後の各画素は、転送前の近傍の上下左右に存在する画素を用いた補間（フィルタリング処理）が行われて生成される。領域指定アップデートする矩形領域の境界の画素をフィルタリング処理により補間する場合、矩形領域外の画素の情報がないと適切にフィルタリング処理を行うことができず、境界付近の画質が劣化する。
【００６８】
そこで、本発明においては、フィルタリング処理による境界付近の画質劣化を防ぐため、図８に示すように、上述した第１拡張領域をさらに所定の拡張幅と拡張高だけ広げて第２拡張領域を設定する。
【００６９】
例えば、図７では、拡張幅を４、拡張高を２とした場合、上述した第１拡張領域は、座標（２９８−２−４，９９−１−２）、幅１０２＋２＋４、高さ１０１＋１＋２の第２拡張領域に拡張される。
【００７０】
そしてさらに、第２拡張領域に対して整数座標対応のための領域拡張が行われ、第３拡張領域が設定される。
【００７１】
このようにして設定された第３拡張領域に属する画像データがバックバッファ３４から画像処理部用作業領域４４に転送される。第３拡張領域に属する画像データのうち、第１拡張領域の外側に位置するものについては、フィルタリング処理のみに用いてフロントバッファ４３にはアップデートしない。すなわち、第１拡張領域の内側のみ、フロントバッファ４３にアップデートするようにする。
【００７２】
分割アップデート対応のための領域拡張
上述した部分的バックバッファが使用され、フロントバッファ４３に対して分割アップデートと拡大または縮小とを組み合わせる場合にも、整数座標対応のための領域拡張、フィルタリング処理対応のための領域拡張、さらに整数座標対応のための領域拡張が行われる。すなわち、図９に示すように、指定された矩形領域（指定領域）に対して第３拡張領域が設定される。
【００７３】
このようにして設定された第３拡張領域に属する画像データがバックバッファ３４から画像処理部用作業領域４４に分割して転送されるが、拡張された分の高さvertical_margin（図９において斜線で示す部分）として、以下の条件３,４を満たす最小の値が算出される。
条件３：vertical_margin≧filter_h
条件４：vertical_margin＝align_y・ｎ（ｎは自然数）
ただし、符号の定義は以下のとおりである。
filter_h：フィルタリング処理に必要な高さ
align_y：整数座標対応のために使用した変数
【００７４】
なお、分割アップデートにおいて分割された領域の高さ（図９のregion_height）の最大値は以下のとおりに算出する。
ただし、符号の定義は以下のとおりである。
buf_size：部分バックバッファサイズ（バイト）
row_bytes：指定領域１ライン分のデータサイズ（バイト）
【００７５】
拡大、縮小処理が行われない場合
region_height＝buf_size／row_bytes（小数切捨て）
拡大、縮小処理が行われる場合
region_heightは以下の条件５，６を満たす最大の値
条件５：region_height≦（buf_size／row_bytes（小数切捨て））−２vertical_margin
条件６：region_height＝align_y・ｎ（ｎは自然数）
【００７６】
以上説明したように、本発明を適用した画像表示装置１０によれば、画像表示アプリケーション３１は、画像データをバックバッファ３４上に格納し、バッファ制御ミドルウェア３２のAPIを呼び出すことによって、画像データを拡大、縮小、回転してディスプレイ２２に表示させることができる。
【００７７】
また、記録媒体２１などの外部から取得した画像データを拡大、縮小、回転してディスプレイ２２に表示させる場合においても、画像表示アプリケーション３１は、取得した画像データを一時領域に格納することなく、直接、バックバッファ３４に格納することができる。
【００７８】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００７９】
【図１】ディスプレイに不完全な画像が表示されることを防ぐ従来の方法を説明する図である。
【図２】本発明を適用した画像表示装置の構成例を示すブロック図である。
【図３】図２のバッファ制御ミドルウェアによって提供されるAPIを説明する図である。
【図４】画像表示装置の動作概要を説明するフローチャートである。
【図５】画像データの拡大、縮小、回転、領域指定アップデートを説明する図である。
【図６】部分的バックバッファと分割アップデートを説明する図である。
【図７】拡大と領域指定アップデートを組み合せた状態を説明する図である。
【図８】指定領域および第１乃至３拡張領域を示す図である。
【図９】分割アップデートに拡張領域を追加した状態を説明する図である。
【符号の説明】
【００８０】
１０  画像表示装置，  １１  CPU，  １２  ROM，  １３  RAM，  １７  表示制御部  ，２１  記録媒体，  ２２  ディスプレイ，  ３１  画像表示アプリケーション，  ３２  バッファ制御ミドルウェア，  ３３  画像表示アプリケーション用作業領域，  ３４  バックバッファ，  ４１  画像処理部，  ４２  VRAM，  ４３  フロントバッファ，  ４４  画像処理部用作業領域
【図１】
2007086432.tif 000003
【図２】
2007086432.tif 000004
【図３】
2007086432.tif 000005
【図４】
2007086432.tif 000006
【図５】
2007086432.tif 000007
【図６】
2007086432.tif 000008
【図７】
2007086432.tif 000009
【図８】
2007086432.tif 000010
【図９】
2007086432.tif 000011