(57)【要約】【課題】  動画の圧縮符号化データの復号化処理と、復号結果である画像データを表示対象に反映させる描画処理とを独立して進行させることができ、かつ、描画処理のタイミングの制御が可能な画像処理装置を提供する。【解決手段】  復号化部３は、ワークメモリ４内の記憶エリアを各々１フレームの画像データを記憶可能な複数のフレームバッファからなるリングバッファとして利用し、動画の圧縮符号化データの復号化処理を進める。ホストＣＰＵ１は、復号化部３に対して、動画の圧縮符号化データについての復号化処理を行わせ、その後、リングバッファにおいて描画対象の画像データを格納しているフレームバッファのアドレス指定を伴う描画指令を表示制御部７に送る。【選択図】図１
2008306444.tif 000002
【特許請求の範囲】
【請求項１】
動画の圧縮符号化データを記憶する圧縮動画メモリと、
書き換え可能なワークメモリと、
前記ワークメモリ内の記憶エリアを各々１フレームの画像データを記憶可能な複数のフレームバッファからなるリングバッファとして使用し、前記リングバッファにおける各フレームバッファを巡回的に選択して復号結果である画像データを格納しつつ前記圧縮動画メモリに記憶された動画の圧縮符号化データの復号化処理を実行する復号化手段と、
表示装置に表示する画像データを記憶するフレームメモリと、
前記復号化手段に復号化指令を出力して前記圧縮動画メモリに記憶された動画の圧縮符号化データの復号化処理を開始させ、前記リングバッファの各フレームバッファのうち描画対象の画像データの記憶先であるフレームバッファの指定を伴う描画指令を出力するホストＣＰＵと、
前記フレームメモリ内の画像データを前記表示装置に表示させる制御を行う手段であって、前記ホストＣＰＵから前記描画指令を受け取り、前記リングバッファにおける各フレームバッファのうち前記描画指令により指定されたフレームバッファから画像データを読み出し、この読み出した画像データを前記フレームメモリ内の画像データに反映させる描画処理を実行する表示制御手段と
を具備することを特徴とする画像処理装置。
【請求項２】
前記復号化手段は、前記リングバッファにおいて前記描画処理を終えた画像データの記憶先であるフレームバッファを指示する描画済みフレームバッファポインタを具備し、前記描画済みフレームバッファポインタが指示するフレームバッファまでの間に復号結果の記憶先として使用可能な範囲内のフレームバッファが存在することを条件に前記復号化処理を継続するものであり、
前記ホストＣＰＵは、前記描画処理の進行に応じて、前記描画済みフレームバッファポインタの更新制御の指令を前記復号化手段に出力することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ホストＣＰＵは、前記復号化指令を前記復号化手段に出力した後、最初の前記描画指令を出力したときに、フレームバッファポインタ自動更新開始指令を前記復号化手段に供給する手段を具備し、前記復号化手段は、前記フレームバッファポインタ自動更新開始指令を受け取った後、前記表示装置の垂直走査に同期して、前記描画済みフレームバッファポインタの更新制御を繰り返すことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記ホストＣＰＵは、新たに出力する描画指令において描画処理に用いる画像データの記憶先であるフレームバッファのアドレスを前回のものから変更したとき、フレームバッファポインタマニュアル更新指令を前記復号化手段に供給する手段を具備し、前記復号化手段は、前記フレームバッファポインタマニュアル更新指令を受け取る毎に、その後の前記表示装置の垂直走査に同期して、前記描画済みフレームバッファポインタの更新制御を１回実行することを特徴とする請求項２または３に記載の画像処理装置。
【請求項５】
前記ホストＣＰＵは、前記フレームバッファポインタマニュアル更新指令に応じて描画済みフレームバッファポインタの更新を行う際の更新フレームバッファ数を前記復号化手段に指示する手段を具備し、前記復号化手段は、前記フレームバッファポインタマニュアル更新指令を受け取る毎に、その後の前記表示装置の垂直走査に同期して、前記ホストＣＰＵから指示された更新フレームバッファ数だけ前記描画済みフレームバッファポインタの更新を行うことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記ホストＣＰＵから複数の動画についての復号化指令および描画指令が出力される場合、前記復号化手段は、各動画に対応した複数のリングバッファを前記ワークメモリ内に構成し、各動画についての復号化指令に応じて、前記動画圧縮メモリに記憶された各動画の圧縮符号化データの復号化を各々実行し、復号化処理により得られる画像データを各動画に対応した各リングバッファに各々格納し、前記表示制御手段は、各動画についての描画指令に応じて、各動画に対応した各リングバッファから画像データを各々読み出し、読み出した各画像データを用いて前記描画処理を実行する請求項１〜５のいずれか１の請求項に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、動画の復号化機能および復号結果である画像データを表示画面に反映させる描画機能を備えた画像処理装置に関する。
【背景技術】
【０００２】
ＭＰＥＧ（Moving Picture Expert Group）などの圧縮アルゴリズムにより得られた動画の圧縮符号化データを記憶し、この圧縮符号化データを復号化して、復号結果である画像データを表示装置に表示させる画像処理装置が各種提供されている。この種の画像処理装置において、表示装置では、一定時間長の垂直走査周期に同期して、１垂直走査当たり１フレームのレートで画像データの表示を行う。これに対し、圧縮符号化データから１フレーム分の画像データを得るための復号化処理の所要時間はフレーム間でばらつく。そして、復号化処理を行うデコーダの処理能力が不足していると、画像の表示周期である垂直走査周期に対して復号化処理が間に合わず、その復号化処理が間に合わなかったフレームについて、表示装置への表示を仕損じるという問題が発生する。
【０００３】
このような問題を解決するための技術的手段として、例えば特許文献１に開示のものがある。この特許文献１に開示されたＭＰＥＧビデオ復号器は、画像復号化部と、復号開始命令発生部と、復号フレームバッファと、ピクチャデータ出力部とを有している。ここで、画像復号化部は、復号開始命令により所定のピクチャ（上記“フレーム”と同義）分のＭＰＥＧビットストリームの復号化を開始し、所定のピクチャ分のビットストリームの復号化が終了すると復号完了通知を出力する。復号フレームバッファは、画像復号化部で復号化されたピクチャデータを順次格納し、一定量のピクチャデータ（上記“画像データ”と同義）を格納するとバッファフル通知を出力する。復号開始命令発生部は、画像復号化部から復号完了通知が出力され、かつ、復号フレームバッファからバッファフル通知が出力されていないときに復号開始命令を出力する。そして、ピクチャデータ出力部は、復号フレームバッファに格納されたピクチャデータを表示装置に伝達する。
【０００４】
このＭＰＥＧビデオ復号器によれば、画像復号化部は、復号フレームバッファからバッファフル通知が出力されるまでの間、ＭＰＥＧビットストリームの復号化処理を表示装置の動作とは非同期に進め、復号結果であるピクチャデータを復号フレームバッファに順次格納することができ、ピクチャデータ出力部はこの復号フレームバッファに格納されたピクチャデータを表示装置に伝達することができる。従って、一部のピクチャについての復号化処理が間に合わず、表示装置による表示を仕損じるという問題を解決することができる。
【特許文献１】特開２０００−２３２６４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、パチンコなどのゲーム機に用いられる画像処理装置では、効果音等と一緒に動画を再生する際の演出効果を高めるために、表示装置における動画の表示開始タイミングを任意に制御する機能が求められる。しかし、特許文献１に開示されているような従来の技術では、動画の圧縮符号化データの復号化処理を表示装置の垂直走査に対して非同期に進めることができるが、復号結果である画像データは、復号フレームバッファ内で順番待ちをして表示装置に表示されるものであり、復号結果である画像データを表示装置に表示させるタイミングを任意に制御することが困難であるという問題があった。
【０００６】
この発明は、以上説明した事情に鑑みてなされたものであり、動画の圧縮符号化データの復号化処理と、復号結果である画像データを表示対象に反映させる描画処理とを独立して進行させることができ、かつ、描画処理のタイミングの制御が可能な画像処理装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
この発明は、動画の圧縮符号化データを記憶する圧縮動画メモリと、書き換え可能なワークメモリと、前記ワークメモリ内の記憶エリアを各々１フレームの画像データを記憶可能な複数のフレームバッファからなるリングバッファとして使用し、前記リングバッファにおける各フレームバッファを巡回的に選択して復号結果である画像データを格納しつつ前記圧縮動画メモリに記憶された動画の圧縮符号化データの復号化処理を実行する復号化手段と、表示装置に表示する画像データを記憶するフレームメモリと、前記復号化手段に復号化指令を出力して前記圧縮動画メモリに記憶された動画の圧縮符号化データの復号化処理を開始させ、前記リングバッファの各フレームバッファのうち描画対象の画像データの記憶先であるフレームバッファの指定を伴う描画指令を出力するホストＣＰＵと、前記フレームメモリ内の画像データを前記表示装置に表示させる制御を行う手段であって、前記ホストＣＰＵから前記描画指令を受け取り、前記リングバッファにおける各フレームバッファのうち前記描画指令により指定されたフレームバッファから画像データを読み出し、この読み出した画像データを前記フレームメモリ内の画像データに反映させる描画処理を実行する表示制御手段とを具備することを特徴とする画像処理装置を提供する。
【０００８】
かかる発明によれば、ホストＣＰＵは、復号化指令および描画指令を各々出力することにより、動画の圧縮符号化データの復号化処理と、復号結果である画像データを表示対象に反映させる描画処理とを独立して進行させることができる。その際、表示制御手段は、描画指令に応じて、リングバッファに格納された画像データを用いた描画処理を実行するので、ホストＣＰＵは、動画を表示部に表示させるタイミングを任意に制御することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照し、この発明の実施の形態を説明する。
図１はこの発明の一実施形態である動画処理装置の構成を示すブロック図である。この画像処理装置は、例えばパチンコなどのゲーム機における画像処理を行う装置である。図示のように、画像処理装置は、ホストＣＰＵ１と、圧縮動画ＲＯＭ２と、復号化部３と、ワークメモリ４と、復号制御情報記憶部５と、フレームメモリ６と、表示制御部７と、表示制御情報記憶部８と、これらを相互に接続するバス９とを有している。また、画像処理装置は、液晶表示パネルなどにより構成された表示部１０を有しており、この表示部１０は、表示制御部７に接続されている。
【００１０】
ホストＣＰＵ１は、この画像処理装置全体の制御中枢であり、ゲームの進行過程において発生する各種のイベントに応じて、各種の動画や静止画の画像データを発生させ、表示部１０に表示させるための各部の制御を行う。
【００１１】
圧縮動画ＲＯＭ２には、各種のイベンドに応じて再生する各種の動画シーンの圧縮符号化データが記憶されている。これらの圧縮符号化データは、動画シーンを構成する一連のフレームの画像データに対し、動き補償を伴った圧縮符号化処理を施すことにより得られたデータである。この圧縮符号化データは、少数のキーフレームデータと、多数のインタフレームデータとからなる。ここで、キーフレームデータは、他のフレームの画像データを参照することなく、符号化対象のフレームの画像データのみを用いたフレーム内符号化処理を実行することにより得られた圧縮符号化データである。動画シーンの最初のフレームの圧縮符号化データは、このキーフレームデータである。インタフレームデータは、符号化対象のフレームの直前のフレームの画像データを参照し、動き補償を伴うフレーム間符号化処理を実行することにより、符号化対象のフレームの画像データから得られた圧縮符号化データである。
【００１２】
復号化部３は、ホストＣＰＵ１からの指令に従い、圧縮動画ＲＯＭ２から１または複数の動画の圧縮符号化データを読み出し、その復号化を行う装置である。ワークメモリ４は、各種の演算結果の一時記憶に用いられる書き換え可能なメモリであり、例えばＤＲＡＭ（Dynamic Random Access Memory）等により構成されている。本実施形態における復号化部３は、ホストＣＰＵ１による制御の下、このワークメモリ４の記憶エリアを用いて、少なくとも３個のフレームバッファからなるＦＩＦＯ（First In First Out；先入れ先出し）方式のリングバッファを構成する。ここで、各フレームバッファは、１フレーム分の画像データを記憶可能な容量を有している。そして、復号化部３は、動画の圧縮符号化データの復号化処理において、このリングバッファを構成する各フレームバッファを巡回的に選択し、復号結果である各フレームの画像データを格納する。また、上述したインタフレームデータの復号化処理においては、このリングバッファに蓄積された画像データのうち復号化対象のフレームの直前のフレームの画像データを参照して復号化処理を実行する。ホストＣＰＵ１は、同時に複数の動画についての復号化処理を復号化部３に指令する場合がある。その場合、復号化部３は、指示された動画毎に、ワークメモリ４内にリングバッファを構成し、これらのリングバッファを用いて、各動画についての復号化処理を並列実行する。
【００１３】
復号制御情報記憶部５は、ホストＣＰＵ１および復号化部３間の情報交換のために設けられた書き換え可能なメモリである。ホストＣＰＵ１は、復号化処理に関する各種の指令を復号制御情報記憶部５を介して復号化部３に供給するとともに、復号化処理に関する各種のステータス情報を復号化部３から復号制御情報記憶部５を介して取得する。
【００１４】
フレームメモリ６は、表示部１０に表示する画像データを記憶するメモリである。表示制御部７は、一定時間長の垂直走査周期毎に、このフレームメモリ６に記憶された画像データを表示部１０に表示させる制御を繰り返す。
【００１５】
表示制御部７は、ホストＣＰＵ１から与えられる指令に従い、動画の圧縮符号化データの復号結果である画像データをワークメモリ４内のリングバッファから読み出し、この画像データをフレームメモリ６内の表示対象の画像データに反映させる描画処理を実行する。この描画処理は、リングバッファから読み出した画像データ（動画）の拡大、縮小、回転等の処理や、この処理を経た画像データ（動画）と背景画像とのブレンディングなどの処理を含む。ホストＣＰＵ１は、上述したように同時に複数の動画についての復号化処理を復号化部３に指令する場合に、それらの各動画についての描画処理を表示制御部７に指令する。表示制御情報記憶部８は、ホストＣＰＵ１および表示制御部７間の情報交換のために設けられた書き換え可能なメモリである。ホストＣＰＵ１は、この表示制御情報記憶部８を介して表示制御部７に描画処理に関する各種の制御情報を供給する。
【００１６】
以上が本実施形態による画像処理装置の構成の概略であるが、この画像処理装置の特徴は次の点にある。
＜特徴１＞動画の圧縮符号化データを復号化し、復号結果である画像データをリングバッファに蓄積する復号化処理と、リングバッファに蓄積された画像データを表示部１０の表示画面に反映させる描画処理とを非同期に進行させるようにした点。
＜特徴２＞ホストＣＰＵ１からの指令により、任意のタイミングにおいて描画処理を実行させるようにした点。
＜特徴３＞複数の動画について並列に復号化処理および描画処理を実行し、復号化処理および描画処理の制御を動画毎に独立して行うようにした点。
【００１７】
ここで、図２を参照し、本実施形態において、このような特徴的な処理を可能にするための仕組みについて説明する。本実施形態において、ホストＣＰＵ１は、１または複数の動画の圧縮符号化データについての復号化処理を復号化部３に実行させる場合、各動画について動画番号ｘを決定し、各動画番号ｘに対応付けて、復号化処理に関する制御情報を復号制御情報記憶部５に書き込む。これらの制御情報のうち主要なものを挙げると、次の通りである。
【００１８】
開始アドレスＭＤＳＡＤ（ｘ）：これは、圧縮動画ＲＯＭ２において動画番号ｘの動画の圧縮符号化データが記憶されている一連の記憶エリアのうち先頭の記憶エリアのアドレスである。復号化部３は、動画番号ｘについての復号化開始指令（後述）が与えられた場合、圧縮動画ＲＯＭ２における開始アドレスＭＤＳＡＤ（ｘ）により指定された記憶エリアから順に圧縮符号化データを読み出し、復号化処理を実行する。
【００１９】
リングバッファ開始アドレスＭＤＷＢＡＲ（ｘ）：これは、ワークメモリ４内において動画番号ｘの動画の復号結果を記憶するのに用いるリングバッファの先頭の記憶エリアのアドレスである。
【００２０】
フレームバッファ数ＷＤＢＵＦＦ（ｘ）：これは、ワークメモリ４内において動画番号ｘの動画の復号結果を記憶するのに用いるリングバッファのフレームバッファ数である。復号化部３は、ワークメモリ４内において、リングバッファ開始アドレスＭＤＷＢＡＲ（ｘ）から始まる一連の記憶エリアを利用し、フレームバッファ数ＷＤＢＵＦＦ（ｘ）が示す個数のフレームバッファからなるリングバッファを構成する。
【００２１】
復号化開始指令ＣＵＥ（ｘ）：これは、動画番号ｘの動画の復号化処理の開始を指示する１ビットの情報である。ホストＣＰＵ１は、動画番号ｘの動画の復号化処理を開始させるとき、ＣＵＥ（ｘ）＝“１”とする。
【００２２】
ループ再生指令ＬＯＯＰ（ｘ）：これは、動画のループ再生をするか否かを指令する１ビットの制御情報である。ＬＯＯＰ（ｘ）＝“０”である場合、復号化部３は、動画番号ｘの動画における最後のフレームの圧縮符号化データの復号化を終えた時点で、復号化処理を終了する。一方、ＬＯＯＰ（ｘ）＝“１”である場合には、復号化部３は、動画番号ｘの動画における最後のフレームの圧縮符号化データの復号化を終えた後、先頭のフレームの圧縮符号化データに戻って復号化処理を繰り返す。
【００２３】
フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）：これは、表示部１０の垂直走査に同期して描画済みフレームバッファポインタの自動更新を行うか否かを指令する１ビットの制御情報である。ここで、描画済みフレームバッファポインタは、復号化部３がその内部に復号化対象である動画毎に記憶しているポインタであり、リングバッファを構成する各フレームバッファのうち、当該フレームバッファ内の画像データを用いた描画処理が終了し、復号結果の記憶に使用することが可能になったフレームバッファを指示するものである。ホストＣＰＵ１は、描画済みフレームバッファポインタの自動更新を行わせる場合にＡＵＴＯＴＡＫＥ（ｘ）＝“１”とする。復号化部３は、最新の復号結果を格納しているフレームバッファの次のフレームバッファからこの描画済みフレームバッファポインタが示すフレームバッファまでの範囲を新たな復号結果の書き込みが可能なエリアとみなし、この書き込み可能エリアが存在する限り、復号化処理およびその復号結果のフレームバッファへの格納を継続する。
【００２４】
フレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）：これは、上述した描画済みフレームバッファポインタの自動更新の開始を指令する１ビットの制御情報である。フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）が“１”である状態において、ホストＣＰＵ１がこのフレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）を“１”にすると、それ以後、復号化部３は、表示部１０の垂直走査に同期した垂直ブランキング信号ＶＢが２回発生する毎に（すなわち、２フィールド周期＝１フレーム周期毎に）、描画済みフレームバッファポインタを１フレームバッファ分ずつ進める。
【００２５】
フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）：この指令は、描画済みフレームバッファポインタの更新に関する１ビットの制御情報であり、ＡＵＴＯＴＡＫＥ（ｘ）が“０”である状態においてのみ有効となる。前述したフレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）が描画済みフレームバッファポインタの継続的な自動更新の開始を指示するものであったのに対し、このフレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）は、描画済みフレームバッファポインタの１回限りの更新を指示するものである。すなわち、ホストＣＰＵ１がこのフレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を“１”にすると、復号化部３は、その直後に発生する垂直ブランキング信号ＶＢに応じて、描画済みフレームバッファポインタを１回だけ更新し、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を“０”に戻す。
【００２６】
更新フレームバッファ数ＴＡＫＥＮＵＭ（ｘ）：これは、復号化部３がフレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）に応じて描画済みフレームバッファポインタを更新する際に、更新するフレームバッファ数を指定する制御情報である。復号化部３は、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）が“１”になったとき、この更新フレームバッファ数ＴＡＫＥＮＵＭ（ｘ）が示す値だけ描画済みフレームバッファポインタを進める。
【００２７】
復号化部３は、以上の制御情報に従って、動画番号ｘに対応した動画の圧縮符号化データの復号化処理を実行する。この復号化処理の実行過程において、復号化部３は、リングバッファにおいて、描画済みフレームバッファポインタが示すフレームバッファの位置と現在の復号結果の格納先であるフレームバッファの位置を監視し、この監視結果に基づき、復号化されたフレームのうち描画処理を終えていないフレームの数を示すステータス情報である描画未了フレーム数ＲＥＭＡＩＮ（ｘ）を発生し、復号制御情報記憶部５に書き込む。ホストＣＰＵ１は、この描画未了フレーム数ＲＥＭＡＩＮ（ｘ）を監視することにより、復号化部３における動画番号ｘの動画についての復号化処理の進行状況を把握する。
【００２８】
ホストＣＰＵ１は、復号化開始指令ＣＵＥ（ｘ）を“１”とし、動画番号ｘの動画についての復号化処理を開始させた後、任意のタイミングにおいて、描画指令ＤＲＡＷ（ｘ）を表示制御情報記憶部８に書き込むことができる。この描画指令ＤＲＡＷ（ｘ）は、動画番号ｘに対応したリングバッファの各フレームバッファのうち描画対象である画像データの格納先であるフレームバッファを指定するアドレスを含んでいる。表示制御部７は、この描画指令ＤＲＡＷ（ｘ）が表示制御情報記憶部８に書き込まれる都度、動画番号ｘに対応したリングバッファのうち描画指令ＤＲＡＷ（ｘ）内のアドレスにより指定されたフレームバッファから画像データを読み出し、この画像データをフレームメモリ６内の画像データに反映させる描画処理を実行する。本実施形態においてホストＣＰＵ１は、表示制御部７に描画処理を実行させる都度、それに先立って、画像データの読み出し先のアドレスを含む描画指令ＤＲＡＷ（ｘ）を表示制御情報記憶部８に書き込む。
【００２９】
以上が本実施形態における復号化処理および描画処理に関する制御情報およびこの制御情報に従って行われる制御の詳細である。本実施形態において、ホストＣＰＵ１は、例えば次のような態様で、１または複数の動画についての復号化処理および描画処理を実行させることができる。
【００３０】
＜復号化処理および描画処理の態様１＞
この態様は、復号化処理を開始させ、リングバッファに復号結果が蓄積された後の任意のタイミングにおいて、描画処理を開始させるとともに、描画済みフレームバッファポインタを垂直走査に合わせて自動更新させるものである。復号化開始の後に、動画本来の通常のフレーム速度で描画処理を進める際に有効な態様である。この態様での処理を進めるための手順は概略次の通りである。
ａ．フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）は“１”とする。
ｂ．復号化開始指令ＣＵＥ（ｘ）を“１”として動画番号ｘの動画についての復号化処理を開始させ、動画番号ｘに対応したリングバッファに復号結果である画像データを蓄積させる。
ｃ．リングバッファに十分なフレーム数の画像データが蓄積された任意のタイミングにおいて、垂直走査に同期した描画処理を開始させる。垂直走査１回分の描画処理は、描画処理に用いる画像データの格納先のフレームバッファのアドレス指定を含む描画指令ＤＲＡＷ（ｘ）を表示制御情報記憶部８に書き込むことにより行う。
ｄ．描画処理の開始に合わせて、描画フレーム自動更新開始指令ＴＡＫＥ（ｘ）を“１”にする。これにより、以後、復号化部３は、描画済みフレームバッファポインタを垂直走査に合わせて自動更新する。
【００３１】
＜復号化処理および描画処理の態様２＞
この態様でも、復号化処理を開始させ、リングバッファに復号結果が蓄積された後の任意のタイミングにおいて、描画処理を開始させるが、描画済みフレームバッファポインタの自動更新は行わせない。この態様において、ホストＣＰＵ１は、描画処理に用いるフレームバッファを更新する都度、描画済みフレームバッファポインタの更新を復号化部３に指令する。この態様は、動画本来の速度とは異なる速度で描画処理を行う場合等に有効である。この態様での処理を進めるための手順は概略次の通りである。
ａ．描画フレーム自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）は“０”とする。更新フレームバッファ数ＴＡＫＥＮＵＭ（ｘ）を所望の値に設定する。
ｂ．復号化開始指令ＣＵＥ（ｘ）を“１”として動画番号ｘの動画についての復号化処理を開始させ、動画番号ｘに対応したリングバッファに復号結果である画像データを蓄積させる。
ｃ．リングバッファに十分なフレーム数の画像データが蓄積された任意のタイミングにおいて、垂直走査に同期した描画処理を開始させる。垂直走査１回分の描画処理は、描画処理に用いる画像データの格納先のフレームバッファのアドレス指定を含む描画指令ＤＲＡＷ（ｘ）を表示制御情報記憶部８に書き込むことにより行う。
ｄ．描画処理に用いるフレームバッファのアドレスを更新するとき、それに合わせて、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を“１”にする。これにより、復号化部３は、その直後の垂直ブランキング信号ＶＢに同期して、１回だけ描画済みフレームバッファポインタを更新フレームバッファ数ＴＡＫＥＮＵＭ（ｘ）が示す値だけ更新し、この更新後、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を“０”に戻す。
【００３２】
この態様では、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）が“１”になったとき、描画済みフレームバッファポインタをフレームバッファ何個分更新するかを任意に定めることができる。従って、描画処理に用いるフレームバッファのアドレスを更新する場合に、フレームバッファ何個分更新するかを任意に定めることが可能である。従って、例えば描画処理に用いるフレームバッファのアドレスの更新間隔（＝フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）の発生間隔）が同じである条件の下では、更新１回当たりのフレームバッファ数を小さくして動画の低速再生を行い、あるいは更新１回当たりのフレームバッファ数を大きくして動画の高速再生を行うことができる。
【００３３】
＜その他の態様＞
本実施形態では、複数の動画について、復号化処理および描画処理を並列に進めることが可能である。その際に、動画毎に上記２つの態様を任意に選択可能である。
【００３４】
次に図３〜図５を参照し、本実施形態の具体的動作例について説明する。
＜具体的動作例１＞
図３に示す例では、ホストＣＰＵ１は、１種類の動画についての復号化処理と描画処理を復号化部３および表示制御部７に行わせている。動画の復号化を開始させるに際し、ホストＣＰＵ１は、動画番号ｘを０とし、開始アドレスＭＤＳＡＤ（０）等の復号化処理に必要な各種の制御情報を復号制御情報記憶部５に書き込んでいる。そして、この例においてホストＣＰＵ１は、バッファ数ＷＤＢＵＦＦ（０）を「３」とし、フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（０）を“１”として、復号化開始指令ＣＵＥ（０）を“１”にしている。
【００３５】
復号制御情報記憶部５内の復号化開始指令ＣＵＥ（０）が“１”になると、復号化部３は、バッファ数ＷＤＢＵＦＦ（ｘ）が「３」であるため、３個のフレームバッファＢＵＦ０−０、ＢＵＦ０−１およびＢＵＦ０−２からなるリングバッファをワークメモリ４内に構成し、圧縮動画ＲＯＭ２内の開始アドレスＭＤＳＡＤ（０）から始まる一連の記憶エリア内の圧縮符号化データの復号化処理を開始する。
【００３６】
まず、復号化部３は、最初のフレームＦ０の復号化処理の過程において、その復号結果である画像データをリングバッファにおけるフレームバッファＢＵＦ０−０に格納する。そして、このフレームＦ０の復号化処理を終えると、復号制御情報記憶部５内の描画未了フレーム数ＲＥＭＡＩＮ（０）を初期値「０」から「１」に更新する。
【００３７】
次に復号化部３は、２番目のフレームＦ１の復号化処理を開始し、その過程において、その復号結果である画像データをリングバッファにおけるフレームバッファＢＵＦ０−１に格納する。このとき、フレームバッファＢＵＦ０−０には、現在、復号化を行っているフレームの直前のフレームの画像データが記憶されている。そこで、復号化対象であるフレームＦ１の圧縮符号化データがインタフレームデータである場合には、フレームバッファＢＵＦ０−０内の直前フレーム（この場合、フレームＦ０）の画像データを参照して復号化処理を行う。そして、このフレームＦ１の復号化処理を終えると、復号制御情報記憶部５内の描画未了フレーム数ＲＥＭＡＩＮ（０）を「１」から「２」に更新する。
【００３８】
次に復号化部３は、３番目のフレームＦ２の復号化処理を開始し、その過程において、その復号結果である画像データをリングバッファにおけるフレームバッファＢＵＦ０−２に格納する。その際、復号化対象であるフレームＦ２の圧縮符号化データがインタフレームデータである場合には、フレームバッファＢＵＦ０−１内の直前フレーム（この場合、フレームＦ１）の画像データを参照して復号化処理を行う。そして、このフレームＦ２の復号化処理を終えると、復号制御情報記憶部５内の描画未了フレーム数ＲＥＭＡＩＮ（０）を「２」から「３」に更新する。
【００３９】
この例において、バッファ数ＷＤＢＵＦＦ（０）は「３」であるので、描画未了フレーム数ＲＥＭＡＩＮ（０）が「３」であるということは、リングバッファが描画未了フレームの画像データで満杯になっていることを意味する。そこで、復号化部３は、この時点において復号化処理を一旦停止する。
【００４０】
その後、２つの連続した垂直走査期間の各々において、ホストＣＰＵ１は、フレームＦ０についての描画指令ＤＲＡＷ（０）、すなわち、フレームＦ０の画像データを記憶したフレームバッファＢＵＦ０−０のアドレス指定を含む描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込む。これは、本実施形態では、動画の１フレームの時間長が表示部１０の垂直走査期間の２倍になっており、１つのフレームの画像データは、２つの連続した垂直走査期間において表示に用いる必要があるからである。
【００４１】
表示制御部７は、描画指令ＤＲＡＷ（０）が表示制御情報記憶部８に書き込まれると、その直後の垂直ブランキング信号ＶＢに同期して、この描画指令ＤＲＡＷ（０）の内容を検知し、この垂直ブランキング信号ＶＢから始まる垂直走査期間内に、描画指令ＤＲＡＷ（０）により指示された描画処理、すなわち、フレームバッファＢＵＦ０−０内のフレームＦ０の画像データをフレームメモリ６内の画像データに反映させる描画処理を実行する。その後に描画指令ＤＲＡＷ（０）が表示制御情報記憶部８に書き込まれた場合も同様である。
【００４２】
そして、ホストＣＰＵ１は、その後の２つの連続した垂直走査期間の各々において、フレームバッファＢＵＦ０−１内のフレームＦ１の画像データについての描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込み、さらにその後の２つの連続した垂直走査期間の各々において、フレームバッファＢＵＦ０−２内のフレームＦ２の画像データについての描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込み、…という具合に、連続した２つの垂直走査期間毎に、画像データの読み出し先のフレームバッファを順次かつ巡回的に切り換え、各フレームバッファ内の画像データを用いた描画処理を表示制御部７に行わせる。
【００４３】
一方、ホストＣＰＵ１は、最初のフレームＦ０についての２回目の描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込んだ後の垂直走査期間では、フレームＦ１についての描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込むとともに、復号制御情報記憶部５内のフレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）を“１”にする。このようにしてフレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）が“１”になると、復号化部３は、その後の垂直ブランキング信号ＶＢの発生時にフレームバッファＢＵＦ０−０を指す値を描画済みフレームバッファポインタに設定する。
【００４４】
描画済みフレームバッファポインタがフレームバッファＢＵＦ０−０を指す値になると、復号化部３は、描画未了フレーム数ＲＥＭＡＩＮ（０）を「３」から「２」に減らし、使用可能状態になったフレームバッファＢＵＦ０−０を復号結果の格納先として使用して、フレームＦ３の復号化処理を開始する。そして、フレームＦ３の復号化処理が終わり、フレームＦ３の画像データをフレームバッファＢＵＦ０−０に格納すると、復号化部３は、復号制御情報記憶部５内の描画未了フレーム数ＲＥＭＡＩＮ（０）を初期値「２」から「３」に増加させる。そして、復号化部３は、描画未了フレーム数ＲＥＭＡＩＮ（０）が「３」になったことから、再び復号化処理を一旦停止する。
【００４５】
そして、フレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）が“１”になった直後の垂直ブランキング信号ＶＢの後、さらに２回の垂直ブランキング信号ＶＢが発生すると、復号化部３は、表示制御部７がフレームバッファＢＵＦ０−１の画像データの描画処理を終え、ホストＣＰＵ１が描画対象をフレームバッファＢＵＦ０−１からフレームバッファＢＵＦ０−２へ切り換えたと判断する。そして、復号化部３は、フレームバッファＢＵＦ０−１を指す値に描画済みフレームバッファポインタを更新するとともに、描画未了フレーム数ＲＥＭＡＩＮ（０）を「３」から「２」に減らす。そして、復号化部３は、使用可能状態になったフレームバッファＢＵＦ０−１を復号結果の格納先として使用して、フレームＦ４の復号化処理を開始する。
【００４６】
以下、同様であり、復号化部３は、垂直ブランキング信号ＶＢが２回発生する都度、描画済みフレームバッファポインタを巡回的に更新し、描画済みフレームバッファポインタが指すフレームバッファまでの使用可能状態のフレームバッファを利用して、復号化処理を進める。
【００４７】
以上のように、本実施形態によれば、ホストＣＰＵ１は、復号化開始指令ＣＵＥ（０）を“１”にして復号化部３に復号化処理を開始させた後、任意のタイミングにおいて、描画対象のフレームバッファのアドレス指定を含む描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込むことにより、その描画対象を表示画面に反映させることができる。また、本実施形態によれば、ホストＣＰＵ１は、フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（０）が“１”である場合には、この描画処理を開始させるときに、フレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）を“１”にすればよい。このようにすることで、復号化部３は、垂直ブランキングＶＢの発生状況に基づいて、描画済みフレームバッファポインタを自動更新し、描画済みフレームバッファポインタが示すフレームバッファまでの使用可能状態のフレームバッファを利用して、描画処理とは非同期に復号化処理を進める。このように、本実施形態において、フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（０）が“１”である場合には、復号化部３は、垂直ブランキングＶＢの発生状況に基づいて、描画済みフレームバッファポインタを更新し、描画済みフレームバッファポインタに基づいて復号化処理を進行させるか一時停止させるかを自律的に制御するので、復号化処理の進行に関してホストＣＰＵ１の制御負担が不要であるという利点がある。
【００４８】
＜具体的動作例２＞
図４に示す例でも、ホストＣＰＵ１は、１種類の動画についての復号化処理と描画処理を復号化部３および表示制御部７に行わせている。動画の復号化を開始させるに際し、ホストＣＰＵ１は、フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（０）を“０”、更新フレーム数ＴＡＫＥＮＵＭ（０）を「１」として、復号化開始指令ＣＵＥ（０）を“１”にしている。他の条件は、上記具体的動作例１と同様である。
【００４９】
この例でも、復号化部３は、復号化開始指令ＣＵＥ（０）が“１”になることにより、フレームバッファＢＵＦ０−１、ＢＵＦ０−１、ＢＵＦ０−２を順次使用して、フレームＦ０、Ｆ１、Ｆ２の復号化処理を進める。そして、この例では、復号化部３がフレームＦ２の復号化処理を行い、その復号結果である画像データをフレームバッファＢＵＦ０−２に格納しているときに、ホストＣＰＵ１がフレームバッファＢＵＦ０−０内のフレームＦ０の画像データについての描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込んでいる。
【００５０】
この具体的動作例２が上記具体的動作例１と異なるのは、ホストＣＰＵ１が描画処理に用いるフレームバッファのアドレスを更新する度に、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を復号化部３に与える点である。
【００５１】
まず、ホストＣＰＵ１は、このフレームＦ０の画像データについての描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込んだ垂直走査期間の次の垂直走査期間において、フレームバッファＢＵＦ０−１内のフレームＦ１の画像データについての描画指令ＤＲＡＷ（０）を表示制御情報記憶部８に書き込んでいる。ホストＣＰＵ１は、このように描画処理に用いるフレームバッファのアドレスを更新したことに伴い、復号制御情報記憶部５内のフレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を“１”にしている。復号化部３は、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）が“１”になったことにより、最初のフレームバッファＢＵＦ０−０を指す値に描画済みフレームバッファポインタを設定する。
【００５２】
それ以降、ホストＣＰＵ１は、２つの連続した垂直走査期間を単位として、描画処理に用いるフレームバッファをＢＵＦ０−１からＢＵＦ０−２へ、ＢＵＦ０−２からＢＵＦ０−０へ、という具合に巡回的に更新する。そして、この描画処理に用いるフレームバッファのアドレスの更新の都度、ホストＣＰＵ１は、フレームバッファポインタマニュアル更新指令ＭＴＡＫＥ（ｘ）を“１”とし、復号化部３に描画済みフレームバッファポインタを更新フレーム数ＴＡＫＥＮＵＭ（０）が示す値（この場合、「１」）だけ更新させている。
【００５３】
この例においても、ホストＣＰＵ１は、復号化開始後の任意のタイミングにおいて、復号結果の描画処理を開始させることができる。また、図示の例では、ホストＣＰＵ１は、２つの連続した垂直走査期間を単位として、描画処理に用いるフレームバッファのアドレスを更新しているが、如何なる時間を単位として、描画処理に用いるフレームバッファのアドレスを更新するか、また、１回の更新で、フレームバッファ何個分のアドレス更新を行うかは任意である。
【００５４】
＜具体的動作例３＞
図５に示す例では、ホストＣＰＵ１は、３種類の動画についての復号化処理と描画処理を復号化部３および表示制御部７に行わせている。動画の復号化を開始させるに際し、ホストＣＰＵ１は、３種類の動画の動画番号ｘを決定し、動画番号ｘ毎に必要な制御情報を復号制御情報記憶部５に書き込む。この例では、ホストＣＰＵ１は、動画番号ｘを「０」、「１」、「２」と決定しており、バッファ数ＷＤＢＵＦＦ（０）〜ＷＤＢＵＦＦ（２）を「３」、フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（０）〜ＡＵＴＯＴＡＫＥ（２）を“１”、３種類の動画についての復号化開始指令ＣＵＥ（０）〜ＣＵＥ（２）を同時に“１”にしている。
【００５５】
この例のように復号化開始指令ＣＵＥ（０）〜ＣＵＥ（２）が同時に“１”になると、復号化部３は、動画番号０のリングバッファのフレームバッファＢＵＦ０−０を復号結果の格納先とし、動画番号０の動画の最初のフレームＭＶ０−０の復号化処理を実行する。この復号化処理が終了すると、復号化部３は、動画番号０に対応した描画未了フレーム数ＲＥＭＡＩＮ（０）を「０」から「１」に変化させる。次に復号化部３は、動画番号１のリングバッファのフレームバッファＢＵＦ１−０を復号結果の格納先とし、動画番号１の動画の最初のフレームＭＶ１−０の復号化処理を実行する。この復号化処理が終了すると、復号化部３は、動画番号１に対応した描画未了フレーム数ＲＥＭＡＩＮ（１）を「０」から「１」に変化させる。次に復号化部３は、動画番号２のリングバッファのフレームバッファＢＵＦ２−０を復号結果の格納先とし、動画番号２の動画の最初のフレームＭＶ２−０の復号化処理を実行する。この復号化処理が終了すると、復号化部３は、動画番号２に対応した描画未了フレーム数ＲＥＭＡＩＮ（２）を「０」から「１」に変化させる。
【００５６】
このようにして、３種類の動画の最初のフレームＭＶ０−０、ＭＶ１−０、ＭＶ２−０の復号化処理が終了すると、復号化部３は、動画番号０のリングバッファのフレームバッファＢＵＦ０−１、動画番号１のリングバッファのフレームバッファＢＵＦ１−１、動画番号２のリングバッファのフレームバッファＢＵＦ２−１を復号結果の格納先として順次選択し、動画番号０の動画の２番目のフレームＭＶ０−１、動画番号１の動画の２番目のフレームＭＶ１−１、動画番号２の動画の２番目のフレームＭＶ２−１の各復号化処理を順次実行する。これらの復号化処理では、その処理対象がインタフレームデータである場合には、フレームバッファＢＵＦ０−０、ＢＵＦ１−０、ＢＵＦ２−０に記憶された直前フレームの画像データが参照される。
【００５７】
この例では、３種類の動画についての描画未了フレーム数ＲＥＭＡＩＮ（０）〜ＲＥＭＡＩＮ（２）が全て「２」になったとき、その後の２つの連続した垂直走査期間の各々において、ホストＣＰＵ１は、３種類の動画の最初のフレームについての３つの描画指令を表示制御情報記憶部８に書き込んでいる。すなわち、フレームＭＶ０−０の画像データの格納先であるフレームバッファＢＵＦ０−０のアドレス指定を伴う描画指令ＤＲＡＷ（０）と、フレームＭＶ１−０の画像データの格納先であるフレームバッファＢＵＦ１−０のアドレス指定を伴う描画指令ＤＲＡＷ（１）と、フレームＭＶ２−０の画像データの格納先であるフレームバッファＢＵＦ２−０のアドレス指定を伴う描画指令ＤＲＡＷ（２）である。表示制御部７は、これらの描画指令を表示制御情報記憶部８から読み出し、描画指令から垂直走査期間だけ遅れて、描画指令により指示されたフレームＭＶ０−０、ＭＶ１−０、ＭＶ２−０の描画処理を実行する。
【００５８】
ホストＣＰＵ１は、このように２つの連続した垂直走査期間において最初のフレームＭＶ０−０、ＭＶ１−０、ＭＶ２−０についての描画処理を行わせた後、次の新たな垂直走査期間では、２番目のフレームＭＶ０−１、ＭＶ１−１、ＭＶ２−１についての描画指令ＤＲＡＷ（０）、ＤＲＡＷ（１）、ＤＲＡＷ（２）を表示制御部７に与える。そこで、ホストＣＰＵ１は、３種類の動画について復号制御情報記憶部５内のフレームバッファポインタ自動更新開始指令ＴＡＫＥ（０）〜ＴＡＫＥ（２）を“１”にする。これにより、以後、垂直ブランキング信号ＶＢが２回発生する毎に、３種類の動画の各々について、描画済みフレームバッファポインタの更新が行われる。
【００５９】
以上説明した具体的動作例３では、３種類の動画について、描画処理を同時に開始したが、描画処理の開始タイミングは、動画間で区々でもよい。その際には、動画番号ｘ毎に、描画処理の開始タイミングに合わせて、描画フレーム自動更新開始指令ＴＡＫＥ（ｘ）を“１”にするタイミングを決定すればよい。また、以上説明した具体的動作例３では、３種類の動画について、フレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）を“１”としたが、３種類の動画についてフレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）は“０”としてもよい。あるいはフレームバッファポインタ自動更新指令ＡＵＴＯＴＡＫＥ（ｘ）を“０”とする動画と“１”とする動画を混在させてもよい。
【００６０】
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態があり得る。例えば、上記実施形態では、復号化部３がホストＣＰＵ１から与えられるフレームバッファポインタ自動更新開始指令ＴＡＫＥ（ｘ）やフレームバッファポインタマニュアル更新指令（ｘ）に応じて動画番号ｘについての描画済みフレームバッファポインタを更新するようにした。しかし、このようにする代わりに、新たな描画指令（ｘ）が表示制御部７に書き込まれる都度、その描画指令ＤＲＡＷ（ｘ）を復号化部３が取り込み、新たに取り込んだ描画指令ＤＲＡＷ（ｘ）内のフレームバッファのアドレスが前回取り込んだ描画指令ＤＲＡＷ（ｘ）内のフレームバッファのアドレスから変化しているとき、新たな描画指令ＤＲＡＷ（ｘ）内のフレームバッファのアドレスの１つ前のアドレスに描画済みフレームバッファポインタを合わせるようにしてもよい。
【図面の簡単な説明】
【００６１】
【図１】この発明の一実施形態である画像処理装置の構成を示すブロック図である。
【図２】同実施形態における復号化処理および描画処理に関連する詳細な構成を示すブロック図である。
【図３】同実施形態の具体的動作例１を示すタイムチャートである。
【図４】同実施形態の具体的動作例２を示すタイムチャートである。
【図５】同実施形態の具体的動作例３を示すタイムチャートである。
【符号の説明】
【００６２】
１……ホストＣＰＵ、２……圧縮動画ＲＯＭ、３……復号化部、４……ワークメモリ、５……復号制御情報記憶部、６……フレームメモリ、７……表示制御部、８……表示制御情報記憶部、９……バス、１０……表示部。
【図１】
2008306444.tif 000003
【図２】
2008306444.tif 000004
【図３】
2008306444.tif 000005
【図４】
2008306444.tif 000006
【図５】
2008306444.tif 000007