(57)【要約】【課題】バックバッファに対する画像データの書き込みと、バックバッファからの画像データの読み出しを独立して制御する。【解決手段】図８は、Ｘ≧Ｙの場合における、バックバッファをリングバッファとして用いたときの画像データの書き込みと読み出しの制御の概要を示している。バックバッファに対する画像データの書き込みは、領域Ａを除いて、領域Ｂ，Ｃ，Ｂ，Ｃ・・・の順に行なわれる。他方、バックバッファからの画像データの読み出しは、書き込まれた順に従って領域Ｂ，Ｃから行なわれる。ただし、最後の領域（領域Ｃ）にＹライン分に満たない画像データが残っている場合、これが領域Ａの最後尾に転送される。そして、領域Ａ，ＢからＹライン分の画像データが連続して読み出される。本発明は、例えば、VRAMの内部に適用することができる。【選択図】図８
2010128150.tif 000002
【特許請求の範囲】
【請求項１】
フロントバッファに書き込まれた画像データに対応する画像をディスプレイに表示させる表示制御装置において、
画像符号化データをデコードし、デコード結果として得られる前記画像データを第１のデータサイズ単位でバックバッファに書き込むデコード手段と、
前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送する転送手段と
を含み、
前記バックバッファは、前記第２のデータサイズに基づいて決定される容量を有する予備領域、および少なくとも前記第１のデータサイズと同じ容量をそれぞれ有する複数の本領域が連結されたリングバッファである
表示制御装置。
【請求項２】
前記転送手段は、前記バックバッファの前記本領域に前記第２のデータサイズ分以上連続的に書き込まれている前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送する
請求項１に記載の表示制御装置。
【請求項３】
前記転送手段は、前記バックバッファの前記本領域に書き込まれている前記画像データが前記第２のデータサイズ分に満たない場合、前記第２のデータサイズ分に満たない前記画像データを前記予備領域の最後尾に転送し、前記予備領域と前記本領域に前記第２のデータサイズ分以上連続的に書き込まれている前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送する
請求項２に記載の表示制御装置。
【請求項４】
前記転送手段は、前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して、第３のデータサイズに変換して前記フロントバッファに転送する
請求項２に記載の表示制御装置。
【請求項５】
前記デコード手段は、アプリケーションプログラムにより制御され、
前記転送手段は、前記アプリケーションプログラムによって呼び出されるミドルウェアにより前記アプリケーションプログラムから独立して制御される
請求項２に記載の表示制御装置。
【請求項６】
フロントバッファに書き込まれた画像データに対応する画像をディスプレイに表示させる表示制御装置の表示制御方法において、
画像符号化データをデコードし、
デコード結果として得られる前記画像データを第１のデータサイズ単位でバックバッファに書き込み、
前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送する
ステップを含み、
前記バックバッファは、前記第２のデータサイズに基づいて決定される容量を有する予備領域、および少なくとも前記第１のデータサイズと同じ容量をそれぞれ有する複数の本領域が連結されたリングバッファである
表示制御方法。
【請求項７】
フロントバッファに書き込まれた画像データに対応する画像をディスプレイに表示させる表示制御装置の制御用のプログラムであって、
画像符号化データをデコードし、
デコード結果として得られる前記画像データを第１のデータサイズ単位でバックバッファに書き込み、
前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送する
ステップを含む処理を表示制御装置のコンピュータに実行させ、
前記バックバッファは、前記第２のデータサイズに基づいて決定される容量を有する予備領域、および少なくとも前記第１のデータサイズと同じ容量をそれぞれ有する複数の本領域が連結されたリングバッファである
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御装置、表示制御方法、およびプログラムに関し、特に、バックバッファ上の画像データをフロントバッファに転送（アップデート）することによりディスプレイの表示を更新させる場合に用いて好適な表示制御装置、表示制御方法、およびプログラムに関する。
【背景技術】
【０００２】
ディスプレイにおける画像の描画は、VRAM(video random access memory)上に設けられたバッファに画像データが書き込まれ、当該バッファに書き込まれた画像データがディスプレイに反映されることにより行われる。したがって、VRAM上のバッファに書き込まれた画像データを反映させるタイミングの制御が悪いと、当該バッファ上の未更新や更新途中の画像データに対応する不完全な画像がディスプレイに表示されてしまうことがある。
【０００３】
このような事態を抑止するため、従来、VRAM上に２つのバッファ（バックバッファとフロントバッファ）を設け、バックバッファを画像データの描画用途に用い、フロントバッファをディスプレイへの反映用途に用いる技術がある。ここで、描画用途とは、例えば、圧縮符号化されている画像データをデコード（伸長）し、そのデコード結果として得られる画像データの書き込むことなどを指す。
【０００４】
そして、バックバッファ上の画像データをフロントバッファに速やかに転送することによって、フロントバッファへの書き込み途中の画像データに対応する不完全な画像がディスプレイに表示されてしまうことを抑止している。
【０００５】
ただし、上述した従来の技術では、バックバッファとして、フロントバッファと同等の領域をVRAM上またはメインメモリ上に確保する必要があるとともに、バックバッファ上の画像データのフロントバッファへの転送に時間がかかってしまう。
【０００６】
そこで、本出願人は、例えば図１に示すように、フロントバッファよりも狭い高さＹのバックバッファを確保し、当該バックバッファに画像データをＸライン分ずつ書き込み、書き込んだ画像データをＹ（＝Ｘ）ラインずつフロントバッファに転送させる処理を複数回繰り返すことにより画像データの全体をフロントバッファに転送させる方法を提案済みである（特許文献１参照）。
【０００７】
なお、以下において、バックバッファ上の画像データをフロントバッファに転送することを、フロントバッファのアップデートと称する。
【０００８】
また、本出願人は、特許文献１において、分割された画像データをバックバッファからフロントバッファにアップデートするに際し、画像データを拡大したり、縮小したりする発明を提案している。例えば、図２に示すように、バックバッファから読み出す画像データのライン数Ｙ、Ｙライン分の画像データを書き込むフロントバッファのライン数をＺと定義し、画像データを拡大する場合には、拡大率に応じてライン数Ｙがライン数Ｚよりも小さくなるよう設定する。
【０００９】
反対に、画像データを縮小する場合には、縮小率に応じてライン数Ｙがライン数Ｚよりも大きくなるよう設定する。当然、ライン数Ｙとライン数Ｚとを等しくすれば、画像データを拡大、縮小することなく、元のサイズでフロントバッファにアップデートすることができる。
【００１０】
ただし、画像データの拡大比率（または縮小比率）によっては、拡大（または縮小）処理後の座標が整数にならないことがある。この非整数の座標の小数部分を丸めて整数化すると、拡大比率（縮小比率）がずれてしまい画質が劣化してしまう。
【００１１】
そこで、特許文献１に記載の発明では、拡大比率（縮小比率）がずれないようにするために、転送後の座標が整数になるように、ライン数Ｙを調整している。これにより、転送後の座標が整数になり、拡大比率（縮小比率）がずれることがなくなるため、画質の劣化を抑止できる。
【００１２】
【特許文献１】特開２００７−８６４３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ところで、上述した特許文献１では、バックバッファに画像データを書き込むライン数Ｘと、バックバッファから画像データを読み出すときのライン数Ｙが一致することを前提としている。この場合、バックバッファの前段の回路（例えば、圧縮符号化されている画像データを伸長するデコーダなど）が、ライン数Ｙと一致する任意のライン数Ｘ（＝Ｙ）で画像データを出力できればよい。
【００１４】
しかしながら、当該前段の回路としてハードウェアにより構成されたデコーダを想定すると、出力できる画像データのライン数Ｘに制約がある場合があり、ライン数Ｙと一致する任意のライン数Ｘ（＝Ｙ）で画像データを出力できないことが起こり得る。この場合、バックバッファに画像データを書き込むライン数Ｘと、バックバッファから画像データを読み出すときのライン数Ｙとを独立して個々に設定できる仕組みが必要となる。
【００１５】
本発明はこのような状況に鑑みてなされたものであり、バックバッファに対する画像データの書き込みと、バックバッファからの画像データの読み出しを独立して制御できるようにするものである。
【課題を解決するための手段】
【００１６】
本発明の一側面である表示制御装置は、フロントバッファに書き込まれた画像データに対応する画像をディスプレイに表示させる表示制御装置において、画像符号化データをデコードし、デコード結果として得られる前記画像データを第１のデータサイズ単位でバックバッファに書き込むデコード手段と、前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送する転送手段とを含み、前記バックバッファは、前記第２のデータサイズに基づいて決定される容量を有する予備領域、および少なくとも前記第１のデータサイズと同じ容量をそれぞれ有する複数の本領域が連結されたリングバッファである。
【００１７】
前記転送手段は、前記バックバッファの前記本領域に前記第２のデータサイズ分以上連続的に書き込まれている前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送することができる。
【００１８】
前記転送手段は、前記バックバッファの前記本領域に書き込まれている前記画像データが前記第２のデータサイズ分に満たない場合、前記第２のデータサイズ分に満たない前記画像データを前記予備領域の最後尾に転送し、前記予備領域と前記本領域に前記第２のデータサイズ分以上連続的に書き込まれている前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送することができる。
【００１９】
前記転送手段は、前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して、第３のデータサイズに変換して前記フロントバッファに転送することができる。
【００２０】
前記デコード手段は、アプリケーションプログラムにより制御され、前記転送手段は、前記アプリケーションプログラムによって呼び出されるミドルウェアにより前記アプリケーションプログラムから独立して制御されるようにすることができる。
【００２１】
本発明の一側面である表示制御方法は、フロントバッファに書き込まれた画像データに対応する画像をディスプレイに表示させる表示制御装置の表示制御方法において、画像符号化データをデコードし、デコード結果として得られる前記画像データを第１のデータサイズ単位でバックバッファに書き込み、前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送するステップを含み、前記バックバッファは、前記第２のデータサイズに基づいて決定される容量を有する予備領域、および少なくとも前記第１のデータサイズと同じ容量をそれぞれ有する複数の本領域が連結されたリングバッファである。
【００２２】
本発明の一側面であるプログラムは、フロントバッファに書き込まれた画像データに対応する画像をディスプレイに表示させる表示制御装置の制御用のプログラムであって、画像符号化データをデコードし、デコード結果として得られる前記画像データを第１のデータサイズ単位でバックバッファに書き込み、前記第１のデータサイズ単位で前記バックバッファに書き込まれた前記画像データを、前記バックバッファから第２のデータサイズ単位で読み出して前記フロントバッファに転送するステップを含む処理を表示制御装置のコンピュータに実行させ、前記バックバッファは、前記第２のデータサイズに基づいて決定される容量を有する予備領域、および少なくとも前記第１のデータサイズと同じ容量をそれぞれ有する複数の本領域が連結されたリングバッファである。
【００２３】
本発明の一側面においては、画像符号化データがデコードされ、デコード結果として得られる画像データが第１のデータサイズ単位でバックバッファに書き込まれる。また、バックバッファに書き込まれた画像データが第２のデータサイズ単位で読み出されてフロントバッファに転送される。
【発明の効果】
【００２４】
本発明の一側面によれば、バックバッファに対する画像データの書き込みと、バックバッファからの画像データの読み出しを独立して制御することができる。
【発明を実施するための最良の形態】
【００２５】
以下、発明を実施するための最良の形態（以下、実施の形態と称する）について、図面を参照しながら詳細に説明する。なお、説明は、以下の順序で行なう。
１．第１の実施の形態
構成例
動作
【００２６】
＜１．第１の実施の形態＞
［画像表示装置の構成例］
図３は、本発明の一実施の形態である画像表示装置の構成例を示している。この画像表示装置１０は、例えば、テレビジョン受像機に内蔵されるものであり、メモリースティック（ソニー株式会社の商標）などからなる記録媒体１３に記録されている画像データの画像をディスプレイ２１に表示させる場合などに動作する。
【００２７】
画像表示装置１０は、CPU１１、RAM１２、記録媒体１３、および画像処理部１４から構成される。
【００２８】
CPU１１は、RAM１２に記録されているアプリケーションプログラムである画像ビューア３１を実行することにより、記録媒体１３に記録されている画像データの画像をディスプレイ２１に表示される一連の処理を制御する。ただし、フロントバッファ１８のアップデートについては、ミドルウェアであるバッファコントローラ３２のAPI(Application Program Interface)を呼び出すことにより実行する。
【００２９】
RAM１２には、CPU１１によって実行される画像ビューア（アプリケーションプログラム）３１、および画像ビューア３１から呼び出される複数のAPIを提供するバッファコントローラ（ミドルウェア）３２が格納されている。
【００３０】
記録媒体１３は、例えばメモリースティックなどの半導体メモリ等から成り、画像表示装置１０に対して着脱可能とされている。記録媒体１３には、例えばJPEG方式で圧縮符号化されている画像データが記録されている。
【００３１】
画像処理部１４は、VRAM１５、デコーダ１９、および転送部２０から構成される。
【００３２】
VRAM１５には、一時領域１６、バックバッファ１７、およびフロントバッファ１８が設けられている。一時領域１６には、記録媒体１３から読み出した圧縮符号化されている画像データが保持される。バックバッファ１７には、デコード（伸長）結果の画像データが書き込まれる。なお、バックバッファ１７のサイズについては後述する。フロントバッファ１８には、バックバッファ１７から転送された画像データが書き込まれ、ここに書き込まれた画像データの画像がディスプレイ２１に表示される。
【００３３】
デコーダ１９は、画像ビューア３１からの制御に従い、一時領域１６に保持された圧縮符号化されている画像データをデコードし、このデコード結果として得られる画像データを垂直方向にＸライン分ずつバックバッファ１７に出力する。このライン数Ｘは、後述するバックバッファ１７から画像データを読み出すときの垂直方向のライン数Ｙとは独立して設定できる。したがって、デコーダ１９を、画像データを出力するときにそのライン数Ｘに制限（例えば、ライン数Ｘは３６の倍数であるなど）があるハードウェアによって実現することができる。
【００３４】
勿論、デコーダ１９をソフトウェアにより実現することもできる。ただし、デコーダ１９をハードウェアによって実現した方がソフトウェアによって実現するよりもデコード処理の高速化が期待できる。
【００３５】
転送部２０は、バッファコントローラ３２からの制御に従い、バックバッファ１７に書き込まれた画像データを垂直方向にＹライン分ずつ読み出し、フロントバッファ１８のＺライン分の領域に書き込む（詳細後述する）。
【００３６】
［動作説明］
次に、図４は、画像ビューア３１およびバッファコントローラ３２それぞれの制御対象を示している。
【００３７】
画像ビューア３１は、画像処理部１４に対して、記録媒体１３に記録されている画像データを一時領域１６に保持させた後にデコードさせ、Ｘラインずつバックバッファ１７に書き込ませるまでの処理を制御する。
【００３８】
一方、バッファコントローラ３２は、画像処理部１４に対して、バックバッファ１７から画像データをＹライン分ずつ読み出し、フロントバッファ１８のＺライン分の領域に書き込ませる（アップデートさせる）までの処理を制御する。
【００３９】
このように、バックバッファ１７に対する画像データのＸライン分の書き込みと、バックバッファ１７からの画像データのＹライン分の読み出しは、それぞれ独立して制御することができる。
【００４０】
次に、図５は、画像ビューア３１により呼び出される、バッファコントローラ（ミドルウェア）３２の４種類のAPIを示している。
【００４１】
API Ａは、後述する引数Ａｂに基づいてバックバッファ１７のメモリ領域を確保するとともに、バックバッファ１７の管理情報を初期化するためのものである。画像ビューア３１は、引数としてフロントバッファ１８の識別情報（引数Ａａ）、バックバッファ情報（引数Ａｂ）を指定する。バックバッファ情報には、バックバッファ１７の論理的な幅（画像データの幅）（引数Ａｂ１）、バックバッファ１７の論理的な高さ（画像データの高さ）（引数Ａｂ２）、分割幅（引数Ａｂ３）、およびバックバッファ１７に格納可能な画像データのライン数（引数Ａｂ４）を含むことができる。
【００４２】
API Ｂは、バックバッファ１７のメモリ領域を開放し、確保されていたバックバッファ１７の管理情報をクリアするためのものである。
【００４３】
API Ｃは、後述する引数Ｃａで指定されたバックバッファ１７に関連づけられたフロントバッファ１８へのアップデートのために必要な情報を取得し、引数Ｃｂで指定された領域に格納するためのものである。具体的には、画像データのどの領域のデータをバックバッファ１７のどの領域に格納すればよいかについての情報を格納する。画像ビューア３１は、この情報に基づいて、バックバッファ１７を更新し、次に説明するAPI Ｄを呼び出せばよい。
【００４４】
API Ｄは、後述する引数Ｄａに基づいてバックバッファ１７をアップデートするためのものである。具体的には、引数Ｄａで指定されたフロントバッファ１８の分割アップデートを行った後、フロントバッファ１８の次の分割アップデートに必要な情報を引数Ｄｂで指定された領域に格納する。画像ビューア３１は、フロントバッファのアップデートが完了するまで、取得した情報に基づいてのバックバッファ更新と、API Ｄの呼び出しを繰り返せばよい。
【００４５】
なお、上述したAPI Ａは、フロントバッファ１８の識別情報を元に、他のミドルウェアを介して、フロントバッファ１８に関する必要な情報(幅、高さ、画像データを格納する領域のアドレスなど)を取得できることを前提とした場合の例である。当該他のミドルウェアが存在しない場合、API Ａの引数を追加し、フロントバッファ１８に関する必要な情報(幅、高さ、画像データを格納する領域のアドレスなど)についても、画像ビューア３１が指定するようにする。
【００４６】
次に、図６は、フロントバッファ１８に画像データがアップデートされる過程において実行される拡大、および縮小の概要を示している。
【００４７】
拡大、または縮小
API Ａの引数Ａｂ，Ａｃで指定されたバックバッファ１７の論理的な幅と高さが、フロントバッファ１８の論理的な幅と高さと異なる場合、バックバッファ１７上の画像データが拡大、または縮小されてフロントバッファ１８にアップデートされる。
【００４８】
例えば、バックバッファ１７の論理的な幅と高さが、フロントバッファ１８の論理的な幅と高さよりも小さい場合、図６Ａに示すように、バックバッファ１７の画像データが拡大されてフロントバッファ１８にアップデートされる。
【００４９】
また例えば、バックバッファ１７の論理的な幅と高さが、フロントバッファ１８の論理的な幅と高さよりも大きい場合、図６Ｂに示すように、バックバッファ１７の画像データが縮小されてフロントバッファ１８にアップデートされる。
【００５０】
したがって、画像ビューア３１がフロントバッファ１８の幅と高さを変更することにより、ディスプレイ２１に表示される画像のサイズを拡大または縮小することが可能である。拡大比率（縮小比率）は、バックバッファ１７の幅と高さ、および、フロントバッファ１８の幅と高さによって定まるため、フロントバッファ１８の幅と高さの変更に伴って拡大比率（縮小比率）は変動する。
【００５１】
そこで、フロントバッファ１８のアップデート時に、フロントバッファ１８の幅と高さを毎回取得し、拡大比率（縮小比率）を算出する。これにより、フロントバッファ１８の幅と高さが変更されても、フロントバッファ１８のアップデート時には、その時点でのフロントバッファ１８の幅と、高さ、および、バックバッファ１７の幅と高さから拡大比率（縮小比率）を得ることができる。したがって、フロントバッファ１８の幅と高さを変更しても、バックバッファ１７の設定を変更する必要がなく、変更前と同様にフロントバッファ１８のアップデートを行うことができる。
【００５２】
次に、バックバッファ１７をリングバッファとして利用する動作の概要について説明する。
【００５３】
図７に示すとおり、上述したように、バックバッファ１７から画像データを読み出すときのライン数Ｙは、フロントバッファ１８にアップデートした際の画像劣化を抑止するため、ミドルウェアのバッファコントローラ３２により、フロントバッファ１８に確保するライン数Ｚに基づいて決定される。
【００５４】
一方、バックバッファ１７に画像データを書き込むときのライン数Ｘは、その出力元であるデコーダ１９がハードウェアで構成されている場合、画像データとして出力できるライン数Ｘは、例えば３２の倍数に限るなどの制約がある。
【００５５】
ただし、このように、バックバッファ１７に画像データを書き込むときのライン数Ｘと、読み出すときのライン数Ｙにそれぞれ制約があったとしても、バックバッファ１７として十分に大きな容量を確保できるのであれば、バックバッファ１７から画像データを読み出すレートを書き込むレート以下とするだけでよい。
【００５６】
しかしながら、バックバッファ１７として確保できる容量には限りがあるので、バックバッファ１７に対する書き込みと読み出しには適切な制御が必要となる。
【００５７】
図８は、Ｘ≧Ｙの場合における、バックバッファ１７をリングバッファとして用いたときの画像データの書き込みと読み出しの制御の概要を示している。
【００５８】
具体的には、バックバッファ１７上に、少なくとも３つの領域Ａ，Ｂ，Ｃを設けるようにし、１番目の領域Ａの容量として画像データのＹ−１ライン分を確保する。また、２番目以降の領域Ｂ，Ｃの容量として、それぞれ画像データのＸライン分を確保する。
【００５９】
上述したように、バックバッファ１７に対する画像データの書き込みは、画像ビューア３１の制御に従い、デコーダ１９によって行なわれる。また、バックバッファ１７からの画像データの読み出しは、バッファコントローラ３２の制御に従い、転送部２０によって行なわれる。
【００６０】
一方のバックバッファ１７に対する画像データの書き込みは、領域Ａを除いた領域Ｂ，Ｃに対し、領域Ｂ，Ｃ，Ｂ，Ｃ・・・の順に行なわれる。すなわち、ステップＳ１として、デコードされた画像データの１番目のＸライン分が領域Ｂに書き込まれ、ステップＳ２において、デコードされた画像データの２番目のＸライン分が領域Ｃに書き込まれる。そして、領域Ｂに書き込まれた画像データが読み出された後、ステップＳ３として、デコードされた画像データの３番目のＸライン分が領域Ｂに書き込まれる。
【００６１】
他方、バックバッファ１７からの画像データの読み出しは、書き込まれた順に従って領域Ｂ，Ｃから行なわれる。ただし、バックバッファ１７からの読み出しは、Ｙライン分の画像データが連続的に行なわれるので、最後の領域（領域Ｃ）にＹライン分に満たない画像データが残っている場合、当該Ｙライン分に満たない画像データが領域Ａの最後尾に転送される。そして、領域Ａ，ＢからＹライン分の画像データが連続して読み出される。
【００６２】
すなわち、ステップＳ１１として、バックバッファ１７の領域Ｂに書き込まれた１番目のＸライン分の画像データのうち、Ｙライン分が読み出されてフロントバッファ１８にアップデートされる。次に、ステップＳ１２として、領域Ｂに書き込まれた１番目のＸライン分の画像データのうちの残りと、領域Ｃに書き込まれた２番目のＸライン分の画像データのうちの、合計Ｙライン分が読み出されてフロントバッファ１８にアップデートされる。
【００６３】
この後、バックバッファ１７の領域Ｃには、２番目のＸライン分の画像データの残り（未読み出しの画像データ）が書き込まれて入るものの、そのデータ量はＹライン分に満たないので、ステップＳ１３として、領域Ｃに書き込まれているＹライン分に満たない画像データが領域Ａの最後尾に転送される。この後、ステップＳ１４として、バックバッファ１７の領域Ａの最後尾に転送されたＹラインに満たない画像データと、領域Ｂに書き込まれた３番目のＸライン分の画像データのうちの、合計Ｙライン分が読み出されてフロントバッファ１８にアップデートされる。
【００６４】
そして、ステップＳ１５として、領域Ｂに書き込まれた３番目のＸライン分の画像データのうちの残りであるＹライン分が読み出されてフロントバッファ１８にアップデートされる。
【００６５】
以上説明したように、Ｘ≧Ｙの場合において、バックバッファ１７をリングバッファとして用いることにより、バックバッファ１７に対する画像データの書き込みと読み出しを独立して制御できるとともに、これらを並行して実行することができる。
【００６６】
なお、並行して実行するには、バックバッファ１７上に、Ｙ−１ライン分の領域を１つと、Ｘライン分の領域を２つ以上設ける必要がある。
【００６７】
また、バックバッファ１７に４つ以上の領域、すなわち、領域Ｃに続いて、画像データのＸライン分の容量を確保した領域Ｄ，Ｅ，・・・を設けるようにしてもよい。その場合、画像データの書き込みは、領域Ｂ，Ｃ，Ｄ，Ｅ，・・・，Ｂ，Ｃ，Ｄ，Ｅ，・・・の順に行なわれる。
【００６８】
反対にバックバッファ１７に２つの領域Ａ，Ｂだけを設けるようにしてもよい。この場合でも、バックバッファ１７に対する画像データの書き込みと読み出しを独立して制御することができる。ただし、これらを並行して実行することはできない。
【００６９】
次に、図９は、Ｘ＜Ｙの場合における、バックバッファ１７をリングバッファとして用いたときの画像データの書き込みと読み出しの制御の概要を示している。
【００７０】
バックバッファ１７上に設ける領域については、図８に示されたＸ≧Ｙの場合と同様なので、その説明は省略する。
【００７１】
一方のバックバッファ１７に対する画像データの書き込みは、領域Ａを除いた領域Ｂ，Ｃに対し、領域Ｂ，Ｃ，Ｂ，Ｃ・・・の順に行なわれる。すなわち、ステップＳ２１として、デコードされた画像データの１番目のＸライン分が領域Ｂに書き込まれ、ステップＳ２２において、デコードされた画像データの２番目のＸライン分が領域Ｃに書き込まれる。そして、領域Ｂに書き込まれた画像データが読み出された後、ステップＳ２３として、デコードされた画像データの３番目のＸライン分が領域Ｂに書き込まれる。また、領域Ｃに書き込まれた画像データが読み出された後、ステップＳ２４として、デコードされた画像データの４番目のＸライン分が領域Ｃに書き込まれる。
【００７２】
他方、バックバッファ１７からの画像データの読み出しは、書き込まれた順に従って領域Ｂ，Ｃから行なわれる。ただし、バックバッファ１７からの読み出しは、Ｙライン分の画像データが連続的に行なわれるので、最後の領域（領域Ｃ）にＹライン分に満たない画像データが残っている場合、当該Ｙライン分に満たない画像データが領域Ａの最後尾に転送される。そして、領域Ａ，ＢからＹライン分の画像データが連続して読み出される。
【００７３】
すなわち、ステップＳ３１として、バックバッファ１７の領域Ｂに書き込まれた１番目のＸライン分の画像データと、領域Ｃに書き込まれた２番目のＸライン分の画像データのうちの、合計Ｙライン分が読み出されてフロントバッファ１８にアップデートされる。
【００７４】
この後、バックバッファ１７の領域Ｃには、２番目のＸライン分の画像データの残り（未読み出しの画像データ）が書き込まれて入るものの、そのデータ量はＹライン分に満たないので、ステップＳ３２として、領域Ｃに書き込まれているＹライン分に満たない画像データが領域Ａの最後尾に転送される。この後、ステップＳ３３として、バックバッファ１７の領域Ａの最後尾に転送されたＹラインに満たない画像データと、領域Ｂに書き込まれた３番目のＸライン分の画像データのうちの、合計Ｙライン分が読み出されてフロントバッファ１８にアップデートされる。
【００７５】
そして、ステップＳ３４として、領域Ｂに書き込まれた３番目のＸライン分の画像データのうちの残りと、領域Ｃに書き込まれた３番目のＸライン分の画像データのうちの、合計Ｙライン分が読み出されてフロントバッファ１８にアップデートされる。
【００７６】
以上説明したように、Ｘ＜Ｙの場合においても、バックバッファ１７をリングバッファとして用いることにより、バックバッファ１７に対する画像データの書き込みと読み出しを独立して制御するとともに、これらを並行して実行することができる。
【００７７】
次に、図８および図９を参照して概説した、バックバッファ１７をリングバッファとして用いたときの画像データの書き込みと読み出しの制御について、図１０および図１１を参照して説明する。
【００７８】
図１０は、バックバッファ１７に対する画像データの書き込み制御に関する画像ビューア３１の処理を説明するフローチャートである。
【００７９】
ステップＳ５１において、画像ビューア３１は、記録媒体３１に記録されている、デコード前の画像データをVRAM１５の一時領域１６に保持させる。ステップＳ５２において、画像ビューア３１は、デコーダ１９を制御して、一時領域１６に保持されている画像データのデコードを開始させる。
【００８０】
ステップＳ５３において、画像ビューア３１は、バックバッファ１７にＸライン分の空き領域（例えば、図８または図９の領域Ｂ，Ｃ）があるか否かを判定し、空き領域が発生するまで待機する。そして、バックバッファ１７にＸライン分の空き領域があると判定した場合、処理をステップＳ５４に進める。ステップＳ５４において、画像ビューア３１は、デコーダ１９に対し、デコード結果として得られた画像データをＸライン分だけバックバッファ１７のＸライン分の空き領域に書き込ませる。
【００８１】
ステップＳ５５において、画像ビューア３１は、デコーダ１９によりデコードされた画像データの全体がバックバッファ１７に書き込まれたか否かを判定する。そして、デコードされた画像データの全体がバックバッファ１７に書き込まれたと判定するまで、ステップＳ５３に戻ってそれ以降の処理を繰り返する。その後、デコードされた画像データの全体がバックバッファ１７に書き込まれたと判定した場合、画像ビューア３１は、バッファコントローラ３２に対して終了を通知し、当該処理を終了する。
【００８２】
次に、図１１は、バックバッファ１７に書き込まれた画像データの読み出し制御に関するバッファコントローラ３２の処理を説明するフローチャートである。
【００８３】
ステップＳ６１において、バッファコントローラ３２は、画像データの拡大または縮小率と、画像データをフロントバッファ１８に書き込むライン数Ｚとに基づいて、バックバッファ１７から画像データを読み出すときのライン数Ｙを決定する。
【００８４】
ステップＳ６２において、バッファコントローラ３２は、バックバッファ１７に書き込まれている画像データのうち、読み出されていない画像データが残っているか否かを判定する。読み出されていない画像データが残っていると判定された場合、処理はステップＳ６３に進められる。なお、読み出されていない画像データが残っていないと判定された場合には、処理はステップＳ６７に進められる。
【００８５】
ステップＳ６３において、バッファコントローラ３２は、バックバッファ１７にＹライン分の画像データが連続して書き込まれているか否かを判定する。ステップＳ６３において、Ｙライン分の画像データが連続して書き込まれていないと判定された場合、処理はステップＳ６４に進められる。ステップＳ６４において、バッファコントローラ３２は、転送部２０を制御して、Ｙライン分に満たない画像データを領域Ａの最後尾に転送させる。
【００８６】
なお、ステップＳ６３において、Ｙライン分の画像データが連続して書き込まれていると判定された場合、ステップＳ６４はスキップされて処理はステップＳ６５に進められる。
【００８７】
ステップＳ６５において、バッファコントローラ３２は、転送部２０を制御して、バックバッファ１７からＹライン分の画像データを連続して読み出させ、Ｚライン分の画像データに変換（拡大または縮小）させて、フロントバッファ１８に書き込ませる。
【００８８】
ステップＳ６７において、バッファコントローラ３２は、画像ビューア３１からの終了の通知の有無に基づき、当該処理を終了するか否か判定する。具体的には、画像ビューア３１から終了の通知がない場合、ステップＳ６２に戻ってそれ以降の処理を繰り返する。その後、画像ビューア３１から終了の通知があった場合、当該処理を終了する。
【００８９】
以上説明したように、画像ビューア３１とバッファコントローラ３２によれば、VRAM１５におけるバックバッファ１７としてのメモリ使用量を抑えつつ、それぞれ独立してバックバッファ１７の書き込みまたは読み出しを制御することができる。また、バックバッファ１７に対するＸライン分の画像データの書き込みと、バックバッファ１７からのＹライン分の画像データの読み出しは同時に並列して実行させることができる。
【００９０】
また、画像データの全体がデコードされることを待つことなく、分割してバックバッファ１７およびフロントバッファ１８にアップデートすることにより、ユーザは、目的の画像の一部が順次表示されていく様子を確認でき、デコードの進捗状況を容易に把握できる。これにより、画像データの高解像度化に伴ってデコード処理に要する時間が長くなったとしても、ユーザの待ち時間に対するストレスを軽減させることができる。
【００９１】
また、仮にデコード処理が終了するまでの間に、目的の画像の表示を中止させるという選択肢をユーザに提供することも可能である(ただし、画像ビューア３１のユーザインタフェースに依存する)。
【００９２】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００９３】
【図１】画像データを分割してフロントバッファにアップデートする従来の方法を説明するための図である。
【図２】画像データを分割してフロントバッファにアップデートする従来の方法を説明するための図である。
【図３】本発明を適用した画像表示装置の構成例を示すブロック図である。
【図４】アプリケーションプログラムである画像ビューアと、ミドルウェアであるバッファコントローラの制御範囲を示す図である。
【図５】ミドルウェアであるバッファコントローラに対する引数を説明する図である。
【図６】フロントバッファに対するアップデートに際する画像データの拡大、縮小を説明するための図である。
【図７】バックバッファに対する書き込みライン数Ｘと読み出しライン数Ｙを示す図である。
【図８】Ｘ≧Ｙである場合の動作概要を説明するための図である。
【図９】Ｘ＜Ｙである場合の動作概要を説明するための図である。
【図１０】画像ビューアの処理を説明するフローチャートである。
【図１１】バッファコントローラの処理を説明するフローチャートである。
【符号の説明】
【００９４】
１０  画像表示装置，  １１  CPU，  １２  メモリ，  １３  記録媒体，  １４  画像処理部，  １５  VRAM，  １６  一時領域，  １７  バックバッファ，  １８  フロントバッファ，  １９  デコーダ，  ２０  転送部，  ３１  画像ビューア，  ３２  バッファコントローラ
【図１】
2010128150.tif 000003
【図２】
2010128150.tif 000004
【図３】
2010128150.tif 000005
【図４】
2010128150.tif 000006
【図５】
2010128150.tif 000007
【図６】
2010128150.tif 000008
【図７】
2010128150.tif 000009
【図８】
2010128150.tif 000010
【図９】
2010128150.tif 000011
【図１０】
2010128150.tif 000012
【図１１】
2010128150.tif 000013