JP5233767B2 - 画像処理装置および画像処理方法 - Google Patents

画像処理装置および画像処理方法 Download PDF

Info

Publication number
JP5233767B2
JP5233767B2 JP2009064769A JP2009064769A JP5233767B2 JP 5233767 B2 JP5233767 B2 JP 5233767B2 JP 2009064769 A JP2009064769 A JP 2009064769A JP 2009064769 A JP2009064769 A JP 2009064769A JP 5233767 B2 JP5233767 B2 JP 5233767B2
Authority
JP
Japan
Prior art keywords
image processing
device driver
input
output
dma
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009064769A
Other languages
English (en)
Other versions
JP2010218263A (ja
Inventor
直也 守田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2009064769A priority Critical patent/JP5233767B2/ja
Publication of JP2010218263A publication Critical patent/JP2010218263A/ja
Application granted granted Critical
Publication of JP5233767B2 publication Critical patent/JP5233767B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Input (AREA)
  • Image Processing (AREA)

Description

本発明は、画像処理装置および画像処理方法に関するものである。
データ処理、特に、画像データ処理は、近年、ASIC(Application Specific Integrated Circuit)を用いて行われるようになってきている。このようなデータ処理においては、データ処理のアルゴリズムと該アルゴリズムを実行するハードウェア、または、ソフトウェアの実装形態とが密接に関連している。そのため、ハードウェアの性能が十分であっても、ソフトウェアの計算量が多いために、ソフトウェアがボトルネックとなり、装置全体の性能低下につながってしまう場合があった。このような理由により、ハードウェア、ソフトウェアの改善が求められている。
ところで、下記の特許文献1には、画像データを入力する画像入力手段と、入力された画像データを記憶可能な画像記憶部と、画像記憶部に記憶された画像データを出力する画像出力手段と、画像出力手段が出力する画像データのデータ形式を該画像出力手段に適したデータ形式に変換するデータ形式変換手段と、データ形式変換手段による変換対象となる画像データを記憶する任意容量のSRC領域を画像記憶部に確保するSRC領域確保手段と、変換後の任意容量の画像データを記憶するDST領域を画像記憶部に確保するDST領域確保手段と、SRC領域またはDST領域の少なくとも一方の領域を複数に分割する領域分割手段と、入力された画像データをSRC領域に記憶させる記憶手段と、変換後の画像データをDST領域に記憶させる変換記憶手段とを有することを特徴とする画像処理装置が記載されている。
この特許文献1では、DST領域の分割があり、SRCについてはSRC領域内に画像データがすべてある場合のI/Fの例について記載されている(特許文献1の図23参照)。しかしながら、上記の例では、ハードウェアから制御ハードウェアに通知(完了の通知)がされると、制御ハードウェアが必ずソフトウェア(アプリケーション)に通知(終了の通知)をすることとしているので、ソフトウェアが必ずしも通知を必要としない場合であっても、制御ハードウェアがソフトウェアに通知をすることになる。このような通知が、ソフトウェアの計算量の増加を招き、装置全体の性能の圧迫(低下)を招くことが考えられる。
また、多機能化によりデータ処理装置のソフトウェアの構成も複雑になってきている。そのため、何らかの問題が発生した場合に、その問題がどのような設定条件下で発生しているのか、またその問題がどのタイミングで発生しているか、の手がかりをつかむ必要が生じてきている。
本発明は上記に鑑みてなされたものであって、デバイスドライバからアプリケーションプログラムへの不要な通知を減らすことにより、性能の低下を防ぐことが可能となる画像処理装置および画像処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明にかかる画像処理装置は、複数のブロックに分割された画像データ、前記複数のブロックのDMA(Direct Memory Access)読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのDMA書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをDMA読み出しする入力側DMA制御部と、前記入力側DMA制御部によって前記データ記録手段からDMA読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にDMA書き込みする出力側DMA制御部と、を含む画像処理手段と、前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、を備え、前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたDMA読み出しまたはDMA書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有することを特徴とする。
また、本発明にかかる画像処理方法は、複数のブロックに分割された画像データ、前記複数のブロックのDMA(Direct Memory Access)読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのDMA書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをDMA読み出しする入力側DMA制御部と、前記入力側DMA制御部によって前記データ記録手段からDMA読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にDMA書き込みする出力側DMA制御部と、を含む画像処理手段と、前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、を備え、前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたDMA読み出しまたはDMA書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有する画像処理装置において実行される画像処理方法であって、前記デバイスドライバプログラムが、前記テンポラリ領域の情報に基づいて、前記信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記アプリケーションプログラムへ通知することが必要であるか否かを判定するステップを含むことを特徴とする。
本発明によれば、デバイスドライバからアプリケーションプログラムへの不要な通知を減らすことにより、性能の低下を防ぐことが可能となるという効果を奏する。
図1は、本発明の実施の形態にかかる複合機の構成を示すブロック図である。 図2は、アプリケーションプログラム、デバイスドライバ、およびASIC16の連携関係を示す図である。 図3は、ディスクリプタ情報の例を示す図である。 図4は、画像データの流れを示す図である。 図5は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。 図6は、アプリケーション、デバイスドライバ、入力側DMAC161、回転処理部162a、および出力側DMAC163のシーケンス図である。 図7は、デバイスドライバの処理を示すフローチャートである。 図8は、アプリケーション、デバイスドライバ、入力側DMAC161、回転処理部162a、および出力側DMAC163のシーケンス図である。 図9は、デバイスドライバの処理を示すフローチャートである。 図10は、デバイスドライバの処理を示すフローチャートである。 図11は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。 図12は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。 図13は、アプリケーション、デバイスドライバ、入力側DMAC161、回転処理部162a、圧縮処理部162b、および出力側DMAC163のシーケンス図である。 図14は、アプリケーションの処理を示すフローチャートである。 図15は、デバイスドライバの処理を示すフローチャートである。 図16は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。 図17は、コピーアプリケーション、デバイスドライバ、入力側DMAC161、回転処理部162a、および出力側DMAC163のシーケンス図である。 図18は、コピーアプリケーションの処理を示すフローチャートである。
以下に添付図面を参照して、この発明にかかる画像処理装置および画像処理方法の実施の形態を詳細に説明する。なお、同一の構成要素には同一の符号を付してその説明を省略している。
(本発明の実施の形態)
図1は、本発明の実施の形態にかかるMFP(複合機)の構成を示すブロック図である。本実施の形態は、本発明をMFPに適用したものである。図1に示すように、このMFPは、コントローラ10とエンジン部(Engine)60とをPCI(Peripheral Component Interface)バスで接続した構成となる。コントローラ10は、MFP全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部60は、PCIバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、1ドラムカラープロッタ、4ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部60には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
コントローラ10は、CPU11(本発明の情報処理手段に対応)と、ノースブリッジ(NB)13と、システムメモリ(MEM−P)12と、サウスブリッジ(SB)14と、ローカルメモリ(MEM−C)17と、ASIC(Application Specific Integrated Circuit)16(本発明の画像処理手段に対応)と、ハードディスクドライブ(HDD)18とを有し、ノースブリッジ(NB)13とASIC16との間をAGP(Accelerated Graphics Port)バス15で接続した構成となる。また、MEM−P12は、ROM(Read Only Memory)12a(本発明のプログラム記録手段に対応)と、RAM(Random Access Memory)12b(本発明のデータ記録手段に対応)と、をさらに有する。
CPU11は、MFPの全体制御をおこなうものであり、NB13、MEM−P12およびSB14からなるチップセットを有し、このチップセットを介して他の機器と接続される。
NB13は、CPU11とMEM−P12、SB14、AGP15とを接続するためのブリッジであり、MEM−P12に対する読み書きなどを制御するメモリコントローラと、PCIマスタおよびAGPターゲットとを有する。
MEM−P12は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ROM12aとRAM12bとからなる。ROM12aは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、RAM12bは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
本実施の形態においては、ROM12aには、アプリケーションプログラム(FAXアプリケーションプログラム、コピーアプリケーションプログラム、スキャナアプリケーションプログラム等)、デバイスドライバプログラム(ASIC16等のハードウェアを制御するプログラム)等の各種のプログラムが記録されている。これらのプログラムは、CPU11によって実行される。図2は、アプリケーションプログラム(以下、単に「アプリケーション」ともいう。)、デバイスドライバプログラム(以下、単に「デバイスドライバ」ともいう。)、およびASIC16の連携関係を示す図である。アプリケーションは、ASIC16を動作させる(起動する)ことをデバイスドライバに要求し、デバイスドライバは、アプリケーションからの要求に応じてASIC16を動作させる(起動する)。ASIC16は、所定のタイミング(後述)でデバイスドライバに割り込み信号を出力し、デバイスドライバは、割り込み信号を受け取ると、必要に応じてアプリケーションに結果通知を行う。
本実施の形態において、アプリケーションは、ASIC16に処理させるための画像データを複数のブロックに分割してRAM12b(図1参照)に用意する(記録する)。また、アプリケーションは、複数のブロックを参照する複数の入力側および出力側ディスクリプタ情報をRAM12bに用意する。
図3は、ディスクリプタ情報の例を示す図である。ディスクリプタ情報は、次のディスクリプタ情報の格納アドレスを示すチェーン先アドレス(本実施の形態では32ビット)、転送するデータ(ブロック)の先頭アドレスを示すデータ転送先アドレス(本実施の形態では32ビット)、転送するデータ(ブロック)のデータ量をライン数で示すデータ転送ライン数(本実施の形態では32ビット)、およびフォーマット情報(本実施の形態では32ビット)を含む。本実施の形態では、フォーマット情報のうち、使われずに空いている最下位ビット(ビット0)を、ASIC16からCPU11への割り込み信号のマスクに利用する。本実施の形態では、フォーマット情報の最下位ビット(ビット0)が「1」である場合にCPU割り込みを発生させ、「0」である場合にCPU割り込みをマスクする。また、フォーマット情報のうち、同じく使われずに空いている上位16ビット(ビット31〜16)をテンポラリ領域(後述)として利用する。
再び図1を参照すると、SB14は、NB13とPCIデバイス、周辺デバイスとを接続するためのブリッジである。このSB14は、PCIバスを介してNB13と接続されており、このPCIバスには、ネットワークインターフェース(I/F)部なども接続される。
ASIC16は、画像処理用のハードウェア要素を有する画像処理用途向けのIC(Integrated Circuit)であり、AGP15、PCIバス、HDD18およびMEM−C17をそれぞれ接続するブリッジの役割を有する。このASIC16は、PCIターゲットおよびAGPマスタと、ASIC16の中核をなすアービタ(ARB)と、MEM−C17を制御するメモリコントローラと、CPU11によってRAM12b内に用意(記録)された画像処理対象画像データ(以下、「入力画像データ」と言う場合がある。)をDMA(Direct Memory Access)読み出しする入力側DMAC(DMA Controller)と、ハードウェアロジックなどにより画像データの回転、圧縮などの各種の画像処理をおこなう画像処理機能ブロックと、画像処理機能ブロックにより画像処理が実施された後の画像処理結果画像データ(以下、「出力画像データ」と言う場合がある。)をRAM12bにDMA書き込みする出力側DMACと、エンジン部60との間でPCIバスを介したデータ転送をおこなうPCIユニットとからなる。このASIC16には、PCIバスを介してFCU(Facsimile Control Unit)30、USB(Universal Serial Bus)40、IEEE1394(the Institute of Electrical and Electronics Engineers 1394)インタフェース50が接続される。操作表示部20はASIC16に直接接続されている。
図4は、RAM12b〜ASIC16〜RAM12bという経路における画像データの流れを示す図である。ASIC16は、入力側DMAC161、画像処理機能ブロック162、および出力側DMAC163を含んでおり、入力側DMAC161は、CPU11によってRAM12b(図1参照)内に用意された複数の入力側ディスクリプタ情報を参照することで、CPU11によってRAM12b(図1参照)内に用意され、複数のブロックに分割された画像処理対象画像データ(入力画像データ)をDMA読み出しして、画像処理機能ブロック162に出力する。画像処理機能ブロック162は、入力側DMAC161によってDMA読み出しされた画像処理対象画像データに画像処理を実施する。出力側DMAC163は、CPU11によってRAM12b内に用意された複数の出力側ディスクリプタ情報を参照して、画像処理結果画像データ(出力画像データ)をRAM12aにDMA書き込みする。
再び図1を参照すると、MEM−C17は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、HDD(Hard Disk Drive)18は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
AGP15は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、MEM−P12に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
次に、本発明の実施の形態の第1の動作について説明する。図5は、入力画像データを時計回りに90度回転させる回転処理をASIC16に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報(処理データ)の例を示す図である。入力画像データは複数(ここでは、3つ)のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数(ここでは、3つ)の入力側ディスクリプタ情報ID1〜ID3内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数(ここでは、3つ)のブロックに分割される。出力画像データの複数(ここでは、3つ)のブロックが書き込まれる領域の先頭アドレスは、複数(ここでは、3つ)の出力側ディスクリプタ情報OD1〜OD3内に、データ転送先アドレスとして格納されている。なお、図5においては、便宜のため、テンポラリ領域(フォーマット情報の上位16ビット(ビット31〜ビット16)、図3参照)を、ディスクリプタ情報の最下段に独立させて示している。
先に触れたように、本実施の形態においては、各入力側および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット(ビット0)を、ASIC16からCPU11への割り込み信号のマスクとして利用する。図5に示す例では、入力側ディスクリプタ情報ID1、ID2のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)に設定されており、入力側ディスクリプタ情報ID3のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)に設定されている。
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位16ビット(ビット31〜16)をテンポラリ領域として利用する。図5に示す例では、入力側ディスクリプタ情報ID1のテンポラリ領域(ビット31〜16)は、「結果通知あり」(ここでは、「1」とする。)に設定されており、入力側ディスクリプタ情報ID2、ID3のテンポラリ領域(ビット31〜16)は、「結果通知なし」(ここでは、「0」とする。)に設定されている。
また、出力側ディスクリプタ情報OD1、OD2のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)に設定されており、出力側ディスクリプタ情報OD3のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)に設定されている。
また、出力側ディスクリプタ情報OD1、OD3のテンポラリ領域(ビット31〜16)は、「結果通知なし」(ここでは、「0」とする。)に設定されており、出力側ディスクリプタ情報OD2のテンポラリ領域(ビット31〜16)は、「結果通知あり」(ここでは、「1」とする。)に設定されている。
このように、テンポラリ領域を「結果通知あり」、「結果通知なし」に利用する場合、各入力側および出力側ディスクリプタ情報のフォーマット情報の上位16ビット(ビット31〜16)の全てのビットを利用する必要はなく、1ビット利用すれば足りる。
図6は、アプリケーションが図5に示す入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報をRAM12a内に用意して画像処理(ここでは、90度回転処理)の実施を要求する場合における、アプリケーション、デバイスドライバ、入力側DMAC161、ASIC16の画像処理機能ブロック162内の画像処理部(ここでは、回転処理部162a(図5参照))、および出力側DMAC163のシーケンス図である。
アプリケーションは、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報(図5参照)をRAM12a内に用意した後、デバイスドライバに画像処理要求を行う(ステップS1)。デバイスドライバは、画像処理要求をアプリケーションから受けると、アプリケーションから要求された画像処理(ここでは、90度回転処理)を行うように、ASIC16の画像処理機能ブロック162内の画像処理部(ここでは、回転処理部162a)を起動する(ステップS2)。ASIC16の画像処理機能ブロック162内の回転処理部162aは、デバイスドライバから起動されると、入力側DMAC161を起動する(ステップS3)。また、ASIC16の画像処理機能ブロック162内の回転処理部162aは、出力側DMAC163を起動する(ステップS4)。
入力側DMAC161は、入力側ディスクリプタ情報ID1(図5参照)を参照して、入力画像データの第1のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第1のブロックには、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理(ここでは、90度回転処理)が実施される。ここで、入力側ディスクリプタ情報ID1のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第1のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS5)。
図7は、ASIC16から割り込み信号が入力された場合におけるデバイスドライバの処理(割り込みハンドラ)を示すフローチャートである。ASIC16から割り込み信号が入力されると、デバイスドライバは、入力側ディスクリプタ情報ID1のテンポラリ領域が「1」(「結果通知あり」)であるか否かを判定する(ステップS21)。
デバイスドライバは、入力側ディスクリプタ情報ID1のテンポラリ領域が「1」(「結果通知あり」)であると判定した場合(ステップS21:Yes)、アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知する(ステップS22)。
また、デバイスドライバは、入力側ディスクリプタ情報ID1のテンポラリ領域が「1」(「結果通知あり」)ではないと判定した場合(ステップS21:No)、アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知することなく処理を終了する。
ここでは、入力側ディスクリプタ情報ID1のテンポラリ領域が「1」(「結果通知あり」)であるので(ステップS21:Yes)、デバイスドライバは、アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知する(ステップS22(図6のステップS6に対応))。デバイスドライバから通知を受けたアプリケーションは、種々の処理(例えば、今実施されている90度回転処理の次に実施する画像処理の準備のための処理等)を行うことができる。
再び図6を参照すると、出力側DMAC163は、出力側ディスクリプタ情報OD1(図5参照)を参照して、画像処理機能ブロック162内部の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第1のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD1のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、出力側DMAC163は、出力画像データの第1のブロックのDMA書き込みが完了すると、割り込み信号をデバイスドライバに出力する(ステップS7)。
再び図7を参照すると、デバイスドライバは、出力側ディスクリプタ情報OD1のテンポラリ領域が「1」(「結果通知あり」)であるか否かを判定する(ステップS21)。
デバイスドライバは、出力側ディスクリプタ情報OD1のテンポラリ領域が「1」(「結果通知あり」)であると判定した場合(ステップS21:Yes)、アプリケーションに結果(ここでは、第1のブロックのDMA書き込みが完了したこと)を通知する(ステップS22)。
また、デバイスドライバは、出力側ディスクリプタ情報OD1のテンポラリ領域が「1」(「結果通知あり」)ではないと判定した場合(ステップS21:No)、アプリケーションに結果(ここでは、第1のブロックのDMA書き込みが完了したこと)を通知することなく処理を終了する。
ここでは、出力側ディスクリプタ情報OD1のテンポラリ領域が「1」ではなく「0」(「結果通知なし」)であるので(ステップS21:No)、デバイスドライバは、アプリケーションに結果(ここでは、第1のブロックのDMA書き込みが完了したこと)を通知することなく、処理を終了する。
再び図6を参照すると、入力側DMAC161は、入力側ディスクリプタ情報ID2(図5参照)を参照して、入力画像データの第2のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第2のブロックには、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID2のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第2のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS8)。
再び図7を参照すると、デバイスドライバは、入力側ディスクリプタ情報ID2のテンポラリ領域が「1」(「結果通知あり」)であるか否かを判定する(ステップS21)。
デバイスドライバは、入力側ディスクリプタ情報ID2のテンポラリ領域が「1」(「結果通知あり」)であると判定した場合(ステップS21:Yes)、アプリケーションに結果(ここでは、第2のブロックのDMA読み出しが完了したこと)を通知する(ステップS22)。
また、デバイスドライバは、入力側ディスクリプタ情報ID2のテンポラリ領域が「1」(「結果通知あり」)ではないと判定した場合(ステップS21:No)、アプリケーションに結果(ここでは、第2のブロックのDMA読み出しが完了したこと)を通知することなく処理を終了する。
ここでは、入力側ディスクリプタ情報ID2のテンポラリ領域が「1」ではなく「0」(「結果通知なし」)であるので(ステップS21:No)、デバイスドライバは、アプリケーションに結果(ここでは、第2のブロックのDMA読み出しが完了したこと)を通知することなく、処理を終了する。
再び図6を参照すると、出力側DMAC163は、出力側ディスクリプタ情報OD2(図5参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第2のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD2のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、出力側DMAC163は、出力画像データの第2のブロックのDMA書き込みが完了すると、割り込み信号をデバイスドライバに出力する(ステップS9)。
再び図7を参照すると、デバイスドライバは、出力側ディスクリプタ情報OD2のテンポラリ領域が「1」(「結果通知あり」)であるか否かを判定する(ステップS21)。
デバイスドライバは、出力側ディスクリプタ情報OD2のテンポラリ領域が「1」(「結果通知あり」)であると判定した場合(ステップS21:Yes)、アプリケーションに結果(ここでは、第2のブロックのDMA書き込みが完了したこと)を通知する(ステップS22)。
また、デバイスドライバは、出力側ディスクリプタ情報OD2のテンポラリ領域が「1」(「結果通知あり」)ではないと判定した場合(ステップS21:No)、アプリケーションに結果(ここでは、第2のブロックのDMA書き込みが完了したこと)を通知することなく処理を終了する。
ここでは、出力側ディスクリプタ情報OD2のテンポラリ領域が「1」(「結果通知あり」)であるので(ステップS21:Yes)、デバイスドライバは、アプリケーションに結果(ここでは、第2のブロックのDMA書き込みが完了したこと)を通知する(ステップS22(図6のステップS10に対応))。デバイスドライバから通知を受けたアプリケーションは、種々の処理(例えば、次に実施する画像処理の準備のための処理等)を行うことができる。
再び図6を参照すると、入力側DMAC161は、入力側ディスクリプタ情報ID3(図5参照)を参照して、入力画像データの第3のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第3のブロックには、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID3のフォーマット情報の最下位ビット(ビット0)が「0」(CPU割り込みなし)であるので、入力側DMAC161は、入力画像データの第3のブロックのDMA読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データのDMA読み出しが完了したことをASIC16の画像処理機能ブロック162内の回転処理部162aには通知する(ステップS11)。
また、出力側DMAC163は、出力側ディスクリプタ情報OD3(図5参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第3のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD3のフォーマット情報の最下位ビット(ビット0)が「0」(CPU割り込みなし)であるので、出力側DMAC163は、出力画像データの第3のブロックのDMA書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データのDMA書き込みが完了したことをASIC16の画像処理機能ブロック162内の回転処理部162aには通知する(ステップS12)。
そして、ASIC16の画像処理機能ブロック162内の回転処理部162aは、画像処理が完了したことを表す割り込み信号をデバイスドライバに出力し(ステップS13)、デバイスドライバは、画像処理(ここでは、90度回転処理)が完了したことをアプリケーションに通知する(ステップS14)。
以上説明したように、アプリケーションは、入力側ディスクリプタ情報ID1〜ID3、および出力側ディスクリプタ情報OD1〜OD3のテンポラリ領域に結果通知の要否を設定してデバイスドライバを呼び出すことで、所望のタイミング(本例では、第1のブロックのDMA読み出しが完了したとき、および第2のブロックのDMA書き込みが完了したとき)で種々の処理(例えば、次に実施する画像処理の準備のための処理等)を行うことを実現することができる。
ここで、比較例として、アプリケーションがテンポラリ領域を結果通知の要否に利用せずに所望のタイミングで種々の処理を行うことを実現する場合の動作について説明する。
図8は、アプリケーションがテンポラリ領域を結果通知の要否に利用せずに所望のタイミングで種々の処理を行うことを実現する場合における、アプリケーション、デバイスドライバ、入力側DMAC161、ASIC16の画像処理機能ブロック162内の回転処理部162a、および出力側DMAC163のシーケンス図である。
まず、アプリケーションは、結果通知を所望するディスクリプタ情報が何番目であるかを表す1つまたは複数の値(1つまたは複数のカウント値)をデバイスドライバに渡して、結果通知要求を行う(ステップS30)。ここでは、アプリケーションは、入力側の1番目のディスクリプタ情報ID1と出力側の2番目のディスクリプタ情報OD2を表すカウント値をデバイスドライバに渡すものとする。
図9は、アプリケーションから結果通知要求を受けた場合におけるデバイスドライバの処理を示すフローチャートである。デバイスドライバは、アプリケーションから結果通知要求を受けると、結果通知をするディスクリプタ情報が何番目であるかを表す値(カウント値)を保持し(ステップS51)、処理されたディスクリプタ情報が何番目であるかを計数するためのディスクリプタカウンタを初期化する(ステップS52)。
再び図8を参照すると、アプリケーションは、デバイスドライバに画像処理(ここでは、90度回転処理)要求を行う(ステップS31)。デバイスドライバは、画像処理(ここでは、90度回転処理)要求をアプリケーションから受けると、アプリケーションから要求された画像処理(ここでは、90度回転処理)を行うように、ASIC16の画像処理機能ブロック162内の画像処理部(ここでは、回転処理部162a)を起動する(ステップS32)。画像処理機能ブロック162内の回転処理部162aは、デバイスドライバから起動されると、入力側DMAC161を起動する(ステップS33)。また、画像処理機能ブロック162内の回転処理部162aは、出力側DMAC163を起動する(ステップS34)。
入力側DMAC161は、入力側ディスクリプタ情報ID1(図5参照)を参照して、入力画像データの第1のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第1のブロックには、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID1のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第1のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS35)。
図10は、ASIC16から割り込み信号が入力された場合におけるデバイスドライバの処理(割り込みハンドラ)を示すフローチャートである。デバイスドライバは、ASIC16から割り込み信号が入力されると、ステップS51(図9参照)において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する(ステップS61)。
デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じであると判定した場合(ステップS61:Yes)、アプリケーションに結果を通知し(ステップS62)、ディスクリプタカウンタに1を加算する(ステップS63)。
また、デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じではないと判定した場合(ステップS61:No)、アプリケーションに結果を通知せずに、ディスクリプタカウンタに1を加算する(ステップS63)。
ここでは、アプリケーションが入力側の1番目のディスクリプタ情報ID1の結果通知を要求しており、ステップS51において保持したカウント値とディスクリプタカウンタの値が同じになるので(ステップS61:Yes)、デバイスドライバは、アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知し(ステップS62(図8のステップS36に対応))、ディスクリプタカウンタに1を加算する(ステップS63)。デバイスドライバから通知を受けたアプリケーションは、種々の処理(例えば、次に実施する画像処理の準備のための処理等)を行うことができる。
再び図8を参照すると、出力側DMAC163は、出力側ディスクリプタ情報OD1(図5参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第1のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD1のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、出力側DMAC163は、出力画像データの第1のブロックのDMA書き込みが完了すると、割り込み信号をデバイスドライバに出力する(ステップS37)。
再び図10を参照すると、デバイスドライバは、ステップS51(図9参照)において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する(ステップS61)。
デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じであると判定した場合(ステップS61:Yes)、アプリケーションに結果を通知し(ステップS62)、ディスクリプタカウンタに1を加算する(ステップS63)。
また、デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じではないと判定した場合(ステップS61:No)、アプリケーションに結果を通知せずに、ディスクリプタカウンタに1を加算する(ステップS63)。
ここでは、アプリケーションが出力側1番目のディスクリプタ情報の結果通知を要求しておらず、ステップS51において保持した値とディスクリプタカウンタの値が同じにはならないので(ステップS61:No)、デバイスドライバは、アプリケーションに結果(ここでは、第1のブロックのDMA書き込みが完了したこと)を通知せず、ディスクリプタカウンタに1を加算する(ステップS63)。
再び図8を参照すると、入力側DMAC161は、入力側ディスクリプタ情報ID2(図5参照)を参照して、入力画像データの第2のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第2のブロックには、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID2のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第2のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS38)。
再び図10を参照すると、デバイスドライバは、ステップS51(図9参照)において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する(ステップS61)。
デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じであると判定した場合(ステップS61:Yes)、アプリケーションに結果を通知し(ステップS62)、ディスクリプタカウンタに1を加算する(ステップS63)。
また、デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じではないと判定した場合(ステップS61:No)、アプリケーションに結果を通知せずに、ディスクリプタカウンタに1を加算する(ステップS63)。
ここでは、アプリケーションが入力側2番目のディスクリプタ情報の結果通知を要求しておらず、ステップS51において保持した値とディスクリプタカウンタの値が同じにはならないので(ステップS61:No)、デバイスドライバは、アプリケーションに結果(ここでは、第2のブロックのDMA書き込みが完了したこと)を通知せず(ステップS61:No)、ディスクリプタカウンタに1を加算する(ステップS63)。
再び図8を参照すると、出力側DMAC163は、出力側ディスクリプタ情報OD2(図5参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第2のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD2のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、出力側DMAC163は、出力画像データの第2のブロックのDMA書き込みが完了すると、割り込み信号をデバイスドライバに出力する(ステップS39)。
再び図10を参照すると、デバイスドライバは、ステップS51(図9参照)において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する(ステップS61)。
デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じであると判定した場合(ステップS61:Yes)、アプリケーションに結果を通知し(ステップS62)、ディスクリプタカウンタに1を加算する(ステップS63)。
また、デバイスドライバは、ステップS51において保持した値とディスクリプタカウンタの値が同じではないと判定した場合(ステップS61:No)、アプリケーションに結果を通知せずに、ディスクリプタカウンタに1を加算する(ステップS63)。
ここでは、アプリケーションが出力側2番目のディスクリプタ情報の結果通知を要求しており、ステップS51において保持した値とディスクリプタカウンタの値が同じになるので(ステップS61:Yes)、デバイスドライバは、アプリケーションに結果(ここでは、第2のブロックのDMA書き込みが完了したこと)を通知し(ステップS62(図8のステップS40に対応))、ディスクリプタカウンタに1を加算する(ステップS63)。デバイスドライバから通知を受けたアプリケーションは、種々の処理(例えば、次に実施する画像処理の準備のための処理等)を行うことができる。
再び図8を参照すると、入力側DMAC161は、入力側ディスクリプタ情報ID3(図5参照)を参照して、入力画像データの第3のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第3のブロックには、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID3のフォーマット情報の最下位ビット(ビット0)は「0」(CPU割り込みなし)であるので、入力側DMAC161は、入力画像データの第3のブロックのDMA読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データのDMA読み出しが完了したことを画像処理機能ブロック162内の回転処理部162aには通知する(ステップS41)。
また、出力側DMAC163は、出力側ディスクリプタ情報OD3(図5参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第3のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD3のフォーマット情報の最下位ビット(ビット0)は「0」(CPU割り込みなし)であるので、出力側DMAC163は、出力画像データの第3のブロックのDMA書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データのDMA書き込みが完了したことを画像処理機能ブロック162内の回転処理部162aには通知する(ステップS42)。
そして、ASIC16は、画像処理(ここでは、90度回転処理)が完了したことを表す割り込み信号をデバイスドライバに出力し(ステップS43)、デバイスドライバは、画像処理(ここでは、90度回転処理)が完了したことをアプリケーションに通知する(ステップS44)。
以上説明したように、アプリケーションは、画像処理(ここでは、90度回転処理)要求を行う前に結果通知要求を行っておくことで、所望のタイミング(本例では、第1のブロックのDMA読み出しが完了したとき、および第2のブロックのDMA書き込みが完了したとき)で種々の処理(例えば、次に実施する画像処理の準備のための処理等)を行うことを実現することができる。
ここで、テンポラリ領域を結果通知の要否に利用した場合のデバイスドライバの割り込み処理(図7参照)とテンポラリ領域を結果通知の要否に利用しない場合のデバイスドライバの割り込み処理(図10参照)とを比較すると、テンポラリ領域を結果通知の要否に利用した場合のデバイスドライバの割り込み処理の方がテンポラリ領域を結果通知の要否に利用しない場合のデバイスドライバの割り込み処理よりも計算量(処理量)が少ない。すなわち、テンポラリ領域を結果通知の要否に利用することで、デバイスドライバの割り込み処理を高速化することが可能である。
次に、本発明の実施の形態の第2の動作について説明する。図11は、入力画像データを時計回りに90度回転させる回転処理をASIC16に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報の例を示す図である。入力画像データは複数(ここでは、3つ)のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数(ここでは、3つ)の入力側ディスクリプタ情報ID11〜ID13内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数(ここでは、3つ)のブロックに分割される。出力画像データの複数(ここでは、3つ)のブロックが格納される領域の先頭アドレスは、複数(ここでは、3つ)の出力側ディスクリプタ情報OD11〜OD13内に、データ転送先アドレスとして格納されている。なお、図11においては、便宜のため、テンポラリ領域(フォーマット情報の上位16ビット(ビット31〜ビット16)、図3参照)を、ディスクリプタ情報の最下段に独立させて示している。
本実施の形態においては、各入力側および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット(ビット0)を、ASIC16からCPU11への割り込み信号のマスクとして利用する。図11に示す例では、入力側ディスクリプタ情報ID11、ID12のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)に設定されており、入力側ディスクリプタ情報ID13のフォーマット情報の最下位ビットは、「0」(CPU割り込みなし)に設定されている。
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位16ビット(ビット31〜16)をテンポラリ領域として利用する。図11に示す例では、入力側ディスクリプタ情報ID11のテンポラリ領域は、「入力側1番目」に設定されており、入力側ディスクリプタ情報ID12のテンポラリ領域は、「入力側2番目」に設定されており、入力側ディスクリプタ情報ID13のテンポラリ領域は、「入力側3番目」に設定されている。
また、出力側ディスクリプタ情報OD11、OD12のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)に設定されており、出力側ディスクリプタ情報OD13のフォーマット情報の最下位ビットは、「0」(CPU割り込みなし)に設定されている。
また、出力側ディスクリプタ情報OD11のテンポラリ領域は、「出力側1番目」に設定されており、出力側ディスクリプタ情報OD12のテンポラリ領域は、「出力側2番目」に設定されており、出力側ディスクリプタ情報OD13のテンポラリ領域は、「出力側3番目」に設定されている。
図12は、入力画像データを圧縮する圧縮処理をASIC16に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報の例を示す図である。入力画像データは複数(ここでは、3つ)のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数(ここでは、3つ)の入力側ディスクリプタ情報ID21〜ID23内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数(ここでは、2つ)のブロックに分割される。出力画像データの複数(ここでは、2つ)のブロックが書き込まれる領域の先頭アドレスは、複数(ここでは、2つ)の出力側ディスクリプタ情報OD21〜OD22内に、データ転送先アドレスとして格納されている。なお、図12においては、便宜のため、テンポラリ領域(フォーマット情報の上位16ビット(ビット31〜ビット16)、図3参照)を、ディスクリプタ情報の最下段に独立させて示している。
本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット(ビット0)を、ASIC16からCPU11への割り込み信号のマスクとして利用する。図12に示す例では、入力側ディスクリプタ情報ID21〜ID23のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)に設定されている。
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位16ビット(ビット31〜16)をテンポラリ領域として利用する。図12に示す例では、入力側ディスクリプタ情報ID21のテンポラリ領域は、「入力側1番目」に設定されており、入力側ディスクリプタ情報ID22のテンポラリ領域は、「入力側2番目」に設定されており、入力側ディスクリプタ情報ID23のテンポラリ領域は、「入力側3番目」に設定されている。
また、出力側ディスクリプタ情報OD21、OD22のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)に設定されている。
また、出力側ディスクリプタ情報OD21のテンポラリ領域は、「出力側1番目」に設定されており、出力側ディスクリプタ情報OD22のテンポラリ領域は、「出力側2番目」に設定されている。
ここで、図11に示す出力側ディスクリプタ情報OD11〜OD13のデータ転送先アドレス、およびデータ転送ライン数と、図12に示す入力側ディスクリプタ情報ID21〜ID23のデータ転送先アドレス、およびデータ転送ライン数と、を同じ値にそれぞれ設定しておけば、画像処理機能ブロック162内の回転処理部162aによって回転処理が実施された後の出力画像データをそのまま画像処理機能ブロック162内の圧縮処理部162bの入力画像データとすることができる。
図13は、アプリケーションが図11、および図12に示す入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報をRAM12a内に用意して2つの画像処理(ここでは、1つ目の画像処理が90度回転処理であり、2つ目の画像処理が圧縮処理である。)を継続、連続して実施することを要求する場合における、アプリケーション、デバイスドライバ、入力側DMAC161、ASIC16の画像処理機能ブロック162内の回転処理部162a(図11参照)、ASIC16の画像処理機能ブロック162内の圧縮処理部162b(図12参照)、および出力側DMAC163のシーケンス図である。
アプリケーションは、2つの画像処理(ここでは、1つ目の画像処理が90度回転処理であり、2つ目の画像処理が圧縮処理である。)のための入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報(図11、および図12参照)をRAM12a内に用意した後、2つ目の画像処理部を起動するタイミング対象のディスクリプタ情報をデバイスドライバに指定して、2つ目の画像処理部の起動タイミング要求を行う(ステップS70)。図14は、2つ目の画像処理部の起動タイミング要求をする場合におけるアプリケーションの処理を示すフローチャートである。図14に示すように、アプリケーションは、2つ目の画像処理部を起動するタイミング対象のディスクリプタ情報をデバイスドライバに指定する(ステップS91)。ここでは、アプリケーションは、「出力側2番目」を指定するものとする。デバイスドライバは、アプリケーションから指定された値(「出力側2番目」)を保持する。
再び図13を参照すると、アプリケーションは、デバイスドライバに1つ目の画像処理要求を行う(ステップS71)。デバイスドライバは、1つ目の画像処理要求をアプリケーションから受けると、アプリケーションから要求された画像処理(ここでは、90度回転処理)を行うように、ASIC16の画像処理機能ブロック162内の回転処理部162aを起動する(ステップS72)。画像処理機能ブロック162内の回転処理部162aは、デバイスドライバから起動されると、入力側DMAC161を起動する(ステップS73)。また、回転処理部162aは、出力側DMAC163を起動する(ステップS74)。
入力側DMAC161は、入力側ディスクリプタ情報ID11(図11参照)を参照して、入力画像データの第1のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第1のブロックには、画像処理機能ブロック162内の回転処理部162a(図11参照)によって画像処理(ここでは、90度回転処理)が実施される。ここで、入力側ディスクリプタ情報ID11のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第1のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS75)。
図15は、ASIC16から割り込み信号が入力された場合におけるデバイスドライバの処理(割り込みハンドラ)を示すフローチャートである。ASIC16から割り込み信号が入力されると、デバイスドライバは、入力側ディスクリプタ情報ID11のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであるか否かを判定する(ステップS101)。
デバイスドライバは、入力側ディスクリプタ情報ID11のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであると判定した場合(ステップS101:Yes)、2つ目の画像処理を実施する画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動する(ステップS102)。
また、デバイスドライバは、入力側ディスクリプタ情報ID11のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じではないと判定した場合(ステップS101:No)、処理を終了する。
ここでは、入力側ディスクリプタ情報ID11のテンポラリ領域の値が「入力側1番目」であり、アプリケーションが指定した値(ここでは、「出力側2番目」)と同じではないので(ステップS101:No)、デバイスドライバは、2つ目の画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動せずに、処理を終了する。
再び図13を参照すると、出力側DMAC163は、出力側ディスクリプタ情報OD11(図11参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図11参照)によって画像処理が実施された後の出力画像データの第1のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD11のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、出力側DMAC163は、出力画像データの第1のブロックのDMA書き込みが完了すると、割り込み信号をデバイスドライバに出力する(ステップS76)。
再び図15を参照すると、デバイスドライバは、出力側ディスクリプタ情報OD11のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであるか否かを判定する(ステップS101)。
デバイスドライバは、出力側ディスクリプタ情報OD11のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであると判定した場合(ステップS101:Yes)、2つ目の画像処理を実施する画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動する(ステップS102)。
また、デバイスドライバは、出力側ディスクリプタ情報OD11のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じではないと判定した場合(ステップS101:No)、処理を終了する。
ここでは、出力側ディスクリプタ情報OD11のテンポラリ領域の値が「出力側1番目」であり、アプリケーションが指定した値(ここでは、「出力側2番目」)と同じではないので(ステップS101:No)、デバイスドライバは、2つ目の画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動せずに、処理を終了する。
再び図13を参照すると、入力側DMAC161は、入力側ディスクリプタ情報ID12(図11参照)を参照して、入力画像データの第2のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第2のブロックには、画像処理機能ブロック162内の回転処理部162a(図11参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID12のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第2のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS77)。
再び図15を参照すると、デバイスドライバは、入力側ディスクリプタ情報OD12のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであるか否かを判定する(ステップS101)。
デバイスドライバは、入力側ディスクリプタ情報ID12のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであると判定した場合(ステップS101:Yes)、2つ目の画像処理を実施する画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動する(ステップS102)。
また、デバイスドライバは、入力側ディスクリプタ情報ID12のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じではないと判定した場合(ステップS101:No)、処理を終了する。
ここでは、入力側ディスクリプタ情報ID12のテンポラリ領域の値が「入力側2番目」であり、アプリケーションが指定した値(ここでは、「出力側2番目」)と同じではないので(ステップS101:No)、デバイスドライバは、2つ目の画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動せずに、処理を終了する。
再び図13を参照すると、出力側DMAC163は、出力側ディスクリプタ情報OD12(図11参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図5参照)によって画像処理が実施された後の出力画像データの第2のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD12のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、出力側DMAC163は、出力画像データの第2のブロックのDMA書き込みが完了すると、割り込み信号をデバイスドライバに出力する(ステップS78)。
再び図15を参照すると、デバイスドライバは、出力側ディスクリプタ情報OD12のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであるか否かを判定する(ステップS101)。
デバイスドライバは、出力側ディスクリプタ情報OD12のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じであると判定した場合(ステップS101:Yes)、2つ目の画像処理を実施する画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動する(ステップS102)。
また、デバイスドライバは、出力側ディスクリプタ情報OD12のテンポラリ領域の値とアプリケーションが指定した値(ここでは、「出力側2番目」)とが同じではないと判定した場合(ステップS101:No)、処理を終了する。
ここでは、出力側ディスクリプタ情報OD12のテンポラリ領域の値が「出力側2番目」であり、アプリケーションが指定した値(ここでは、「出力側2番目」)と同じであるので(ステップS101:Yes)、デバイスドライバは、2つ目の画像処理部(ここでは、画像処理機能ブロック162内の圧縮処理部162b(図12参照))を起動する(ステップS102(図13のステップS81に対応))。
再び図13を参照すると、入力側DMAC161は、入力側ディスクリプタ情報ID13(図11参照)を参照して、入力画像データの第3のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第3のブロックには、画像処理機能ブロック162内の回転処理部162a(図11参照)によって画像処理が実施される。ここで、入力側ディスクリプタ情報ID13のフォーマット情報の最下位ビット(ビット0)は「0」(CPU割り込みなし)であるので、入力側DMAC161は、入力画像データの第3のブロックのDMA読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データのDMA読み出しが完了したことを画像処理機能ブロック162内の回転処理部162aには通知する(ステップS79)。
また、出力側DMAC163は、出力側ディスクリプタ情報OD13(図11参照)を参照して、画像処理機能ブロック162内の回転処理部162a(図11参照)によって画像処理が実施された後の出力画像データの第3のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD13のフォーマット情報の最下位ビット(ビット0)は「0」(CPU割り込みなし)であるので、出力側DMAC163は、出力画像データの第3のブロックのDMA書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データのDMA書き込みが完了したことを画像処理機能ブロック162内の回転処理部162aには通知する(ステップS80)。
そして、ASIC16の画像処理機能ブロック162内の回転処理部162aは、画像処理が完了したことを表す割り込み信号をデバイスドライバに出力し(ステップS82)、デバイスドライバは、画像処理が完了したことをアプリケーションに通知する(ステップS85)。
一方、デバイスドライバによって起動された2つ目の画像処理部であるASIC16の画像処理機能ブロック162内の圧縮処理部162b(図12参照)は、入力側DMAC161を起動する(ステップS83)。また、ASIC16の画像処理機能ブロック162内の圧縮処理部162b(図12参照)は、出力側DMAC163を起動する(ステップS84)。
入力側DMAC161は、入力側ディスクリプタ情報ID21(図12参照)を参照して、入力画像データ(ここでは、ASIC16の画像処理機能ブロック162内の回転処理部162aによって回転処理が実施された後の画像データ)の第1のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第1のブロックには、画像処理機能ブロック162内の圧縮処理部162b(図12参照)によって画像処理(ここでは、圧縮処理)が実施される。ここで、入力側ディスクリプタ情報ID21のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)であるので、入力側DMAC161は、入力画像データの第1のブロックのDMA読み出しが完了しても、割り込み信号をデバイスドライバに出力しない。
入力側DMAC161は、入力側ディスクリプタ情報ID22(図12参照)を参照して、入力画像データ(ASIC16の画像処理機能ブロック162内の回転処理部162aによって回転処理が実施された後の画像データ)の第2のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第2のブロックには、画像処理機能ブロック162内の圧縮処理部162b(図12参照)によって画像処理(ここでは、圧縮処理)が実施される。ここで、入力側ディスクリプタ情報ID22のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)であるので、入力側DMAC161は、入力画像データの第2のブロックのDMA読み出しが完了しても、割り込み信号をデバイスドライバに出力しない。
入力側DMAC161は、入力側ディスクリプタ情報ID23(図12参照)を参照して、入力画像データ(ASIC16の画像処理機能ブロック162内の回転処理部162aによって回転処理が実施された後の画像データ)の第3のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第3のブロックには、画像処理機能ブロック162内の圧縮処理部162b(図12参照)によって画像処理(ここでは、圧縮処理)が実施される。ここで、入力側ディスクリプタ情報ID23のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)であるので、入力側DMAC161は、入力画像データの第3のブロックのDMA読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データ(画像処理対象画像データ)の転送が完了したことを画像処理機能ブロック162内の圧縮処理部162bには通知する(ステップS85)。
出力側DMAC163は、出力側ディスクリプタ情報OD21(図12参照)を参照して、出力画像データ(ASIC16の画像処理機能ブロック162内の圧縮処理部162bによって圧縮処理が実施された後の画像データ)の第1のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD21のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)であるので、出力側DMAC163は、出力画像データの第1のブロックのDMA書き込みが完了しても、割り込み信号をデバイスドライバに出力しない。
出力側DMAC163は、出力側ディスクリプタ情報OD22(図12参照)を参照して、出力画像データ(ASIC16の画像処理機能ブロック162内の圧縮処理部162bによって圧縮処理が実施された後の画像データ)の第2のブロックのDMA書き込みを行う。ここで、出力側ディスクリプタ情報OD22のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)であるので、出力側DMAC163は、出力画像データの第2のブロックのDMA書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データ(画像処理結果画像データ)の転送が完了したことを画像処理機能ブロック162内の圧縮処理部162bには通知する(ステップS86)。
そして、ASIC16の画像処理機能ブロック162内の圧縮処理部162bは、画像処理が完了したことを表す割り込み信号をデバイスドライバに出力し(ステップS87)、デバイスドライバは、画像処理が完了したことをアプリケーションに通知する(ステップS88)。
以上説明したように、アプリケーションが、2つの画像処理を継続、連続して実施するための入力側ディスクリプタ情報ID11〜ID13、ID21〜ID23、および出力側ディスクリプタ情報OD11〜OD13、OD21〜OD22のテンポラリ領域にそれぞれ値を設定し、2つ目の画像処理部の起動タイミング要求(図13のステップS70、および図14参照)をデバイスドライバに行うことで、2つの画像処理(ここでは、回転処理と圧縮処理)を継続、連続して行うことを実現することができる。また、2つ目の画像処理部の起動の際に、デバイスドライバとアプリケーションとの間のやり取りが不要であるので、デバイスドライバとアプリケーションとの間のやり取り(オーバーヘッド)を削減することができる。なお、ここでは、2つの画像処理(ここでは、回転処理と圧縮処理)を継続、連続して行う場合について説明したが、3つ以上の画像処理を継続、連続して行うようにしても良い。
次に、本発明の実施の形態の第3の動作について説明する。先に説明したように、複合機では、FAXアプリケーションプログラム、コピーアプリケーションプログラム、スキャナアプリケーションプログラム等の複数のアプリケーションがCPU11(図1参照)によって実行されており、ASIC16(図1参照)は、これら複数のアプリケーションから利用される。そのため、何らかの要因でASIC16の動作がストール(停止)した場合に、ASIC16がどのアプリケーションから利用されているときにストールしたのかを知ることが容易ではないことがある。本実施の形態では、テンポラリ領域を利用することで、ASIC16の動作がストール(停止)した場合に、ASIC16がどのアプリケーションから利用されているときにストールしたのかを容易に知ることが可能となる。
図16は、複合機のコピー(COPY)アプリケーションが、入力画像データを時計回りに90度回転させる回転処理をASIC16に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報の例を示す図である。入力画像データは複数(ここでは、3つ)のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数(ここでは、3つ)の入力側ディスクリプタ情報ID31〜ID33内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数(ここでは、3つ)のブロックに分割される。出力画像データの複数(ここでは、3つ)のブロックが格納される領域の先頭アドレスは、複数(ここでは、3つ)の出力側ディスクリプタ情報OD31〜OD33内に、データ転送先アドレスとして格納されている。なお、図16においては、便宜のため、テンポラリ領域(フォーマット情報の上位16ビット(ビット31〜ビット16)、図3参照)を、ディスクリプタ情報の下2段に独立させて示している。
本実施の形態においては、各入力側および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット(ビット0)を、ASIC16からCPU11への割り込み信号のマスクとして利用する。図16に示す例では、入力側ディスクリプタ情報ID31のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)に設定されており、入力側ディスクリプタ情報ID32、ID33のフォーマット情報の最下位ビットは、「0」(CPU割り込みなし)に設定されている。
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位16ビット(ビット31〜16)をテンポラリ領域として利用する。図16に示す例では、入力側ディスクリプタ情報ID31のテンポラリ領域(ビット31〜16)のうちの1ビットは、「結果通知あり」(ここでは、「1」)に設定されており、他のビットは、「COPY」というASCIIコード列(またはコピーという機能を表す情報)に設定されている。なお、「COPY」というASCIIコード列は4バイト(32ビット)であるので、この場合には、テンポラリ領域を16ビットから32ビットに拡張すれば良い。また、入力側ディスクリプタ情報ID32のテンポラリ領域(ビット31〜16)のうちの1ビット(以下、「第1の領域」ともいう。)は、「結果通知なし」(ここでは、「0」)に設定されており、他のビット(以下、「第2の領域」ともいう。)は、「COPY」というASCIIコード列に設定されている。また、入力側ディスクリプタ情報ID33のテンポラリ領域(ビット31〜16)のうちの1ビット(第1の領域)は、「結果通知なし」(ここでは、「0」)に設定されており、他のビット(第2の領域)は、「COPY」というASCIIコード列に設定されている。
また、出力側ディスクリプタ情報OD31、OD33のフォーマット情報の最下位ビット(ビット0)は、「0」(CPU割り込みなし)に設定されており、出力側ディスクリプタ情報OD32のフォーマット情報の最下位ビットは、「1」(CPU割り込みあり)に設定されている。
また、出力側ディスクリプタ情報OD31のテンポラリ領域(ビット31〜16)のうちの1ビット(第1の領域)は、「結果通知なし」(ここでは、「0」)に設定されており、他のビット(第2の領域)は、「COPY」というASCIIコード列に設定されている。また、出力側ディスクリプタ情報OD32のテンポラリ領域(ビット31〜16)のうちの1ビット(第1の領域)は、「結果通知あり」(ここでは、「1」)に設定されており、他のビット(第2の領域)は、「COPY」というASCIIコード列に設定されている。また、出力側ディスクリプタ情報OD33のテンポラリ領域(ビット31〜16)のうちの1ビット(第1の領域)は、「結果通知なし」(ここでは、「0」)に設定されており、他のビット(第2の領域)は、「COPY」というASCIIコード列に設定されている。
図17は、コピー(COPY)アプリケーションが図16に示す入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報をRAM12a内に用意して画像処理(ここでは、90度回転処理)の実施を要求する場合における、コピー(COPY)アプリケーション、デバイスドライバ、入力側DMAC161、ASIC16の画像処理機能ブロック162内の画像処理部(ここでは、回転処理部162a(図5参照))、および出力側DMAC163のシーケンス図である。
コピー(COPY)アプリケーションは、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報(図16参照)をRAM12a内に用意した後、結果通知を所望するディスクリプタ情報が何番目であるかを表す1つまたは複数の値(1つまたは複数のカウント値)をデバイスドライバに渡して、結果通知要求を行う(ステップS110)。なお、このときのデバイスドライバの処理は、先に説明した図9の処理と同様であるので、説明を省略する。
次に、コピー(COPY)アプリケーションは、アプリケーション機能の設定を行う(ステップS111)。図18は、アプリケーション機能の設定を行う場合におけるコピー(COPY)アプリケーションの処理を示すフローチャートである。コピー(COPY)アプリケーションは、全ディスクリプタ情報のテンポラリ領域(ビット31〜16)の第2の領域にアプリケーションの機能を表すASCIIコード列(ここでは、「COPY」というASCIIコード列)を設定したか否かを判定する(ステップS121)。
コピー(COPY)アプリケーションは、全ディスクリプタ情報のテンポラリ領域の第2の領域にアプリケーションの機能を表すASCIIコード列(ここでは、「COPY」というASCIIコード列)を設定していないと判定した場合(ステップS121:No)、全ディスクリプタ情報のテンポラリ領域の第2の領域にアプリケーションの機能を表すASCIIコード列(ここでは、「COPY」というASCIIコード列)を設定する(ステップS122)。
また、コピー(COPY)アプリケーションは、全ディスクリプタ情報のテンポラリ領域の第2の領域にアプリケーションの機能を表すASCIIコード列(ここでは、「COPY」というASCIIコード列)を設定していると判定した場合(ステップS121:Yes)、処理を終了する。
再び図17を参照すると、コピー(COPY)アプリケーションは、デバイスドライバに画像処理要求を行う(ステップS112)。デバイスドライバは、画像処理要求をアプリケーションから受けると、アプリケーションから要求された画像処理(ここでは、90度回転処理)を行うように、ASIC16の画像処理機能ブロック162内の画像処理部(ここでは、回転処理部162a)を起動する(ステップS113)。ASIC16の画像処理機能ブロック162内の回転処理部162aは、デバイスドライバから起動されると、入力側DMAC161を起動する(ステップS114)。また、ASIC16の画像処理機能ブロック162内の回転処理部162aは、出力側DMAC163を起動する(ステップS115)。
入力側DMAC161は、入力側ディスクリプタ情報ID31(図16参照)を参照して、入力画像データの第1のブロックのDMA読み出しを行う。このようにして入力側DMAC161によってDMA読み出しされた入力画像データの第1のブロックには、画像処理機能ブロック162内の回転処理部162a(図16参照)によって画像処理(ここでは、90度回転処理)が実施される。ここで、入力側ディスクリプタ情報ID31のフォーマット情報の最下位ビット(ビット0)は、「1」(CPU割り込みあり)であるので、入力側DMAC161は、入力画像データの第1のブロックのDMA読み出しが完了すると、割り込み信号をデバイスドライバに出力する(ステップS116)。
ASIC16から割り込み信号が入力された場合におけるデバイスドライバの処理(割り込みハンドラ)は、先に説明した図7と同様である。図7を参照すると、デバイスドライバは、ASIC16から割り込み信号が入力されると、入力側ディスクリプタ情報ID31のテンポラリ領域の第1の領域が「1」(「結果通知あり」)であるか否かを判定する(ステップS21)。
デバイスドライバは、入力側ディスクリプタ情報ID1のテンポラリ領域の第1の領域が「1」(「結果通知あり」)であると判定した場合(ステップS21:Yes)、アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知する(ステップS22)。
また、デバイスドライバは、入力側ディスクリプタ情報ID1のテンポラリ領域の第1の領域が「1」(「結果通知あり」)ではないと判定した場合(ステップS21:No)、アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知することなく処理を終了する。
ここでは、入力側ディスクリプタ情報ID1のテンポラリ領域の第1の領域が「1」(「結果通知あり」)であるので(ステップS21:Yes)、デバイスドライバは、コピー(COPY)アプリケーションに結果(ここでは、第1のブロックのDMA読み出しが完了したこと)を通知する(ステップS22(図17のステップS117に対応))。デバイスドライバから通知を受けたアプリケーションは、種々の処理(例えば、今実施されている90度回転処理の次に実施する画像処理の準備のための処理等)を行うことができる。
その後、ASIC16に何らかの問題が発生し、ASIC16がストールした場合、コピー(COPY)アプリケーションや、複合機の診断プログラム等は、入力側ディスクリプタ情報ID31に基づくDMA読み出しが完了した後にASIC16がストールしたと判定することが可能である。また、複合機の診断プログラム等は、ASIC16がコピー(COPY)アプリケーションから利用されているときにストールしたと判定することが可能である。
本実施の形態の複合機で実行されるアプリケーションプログラム、デバイスドライバ、診断プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、本実施の形態の複合機で実行されるアプリケーションプログラム、デバイスドライバ、診断プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態の複合機で実行されるアプリケーションプログラム、デバイスドライバ、診断プログラムを、インターネット等のネットワーク経由で提供または配布するように構成しても良い。
なお、本実施の形態では、本発明を複合機に適用した例を挙げて説明したが、他の種々の装置に適用することができる。
以上のように、本発明にかかる画像処理装置および画像処理方法は、複合機等に有用である。
10 コントローラ
11 CPU
12 MEM−P
12a ROM
12b RAM
13 NB
14 SB
15 AGP
16 ASIC
17 MEM−C
18 HDD
20 操作表示部
30 FCU
40 USB
50 IEEE1394
60 エンジン部
161 入力側DMAC
162 画像処理機能ブロック
162a 回転処理部
162b 圧縮処理部
163 出力側DMAC
特開2004−220579号公報

Claims (6)

  1. 複数のブロックに分割された画像データ、前記複数のブロックのDMA(Direct Memory Access)読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのDMA書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、
    前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをDMA読み出しする入力側DMA制御部と、前記入力側DMA制御部によって前記データ記録手段からDMA読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にDMA書き込みする出力側DMA制御部と、を含む画像処理手段と、
    前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、
    前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、
    を備え、
    前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたDMA読み出しまたはDMA書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有すること
    を特徴とする画像処理装置。
  2. 前記デバイスドライバプログラムは、前記テンポラリ領域の情報に基づいて、前記信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記アプリケーションプログラムへ通知することが必要であるか否かを判定する処理を含むこと
    を特徴とする請求項1記載の画像処理装置。
  3. 前記データ記録手段には、複数の前記処理データが記録されており、
    前記デバイスドライバプログラムは、前記複数の処理データのうちの1つの処理データ内の前記複数の入力側および出力側のディスクリプタ情報のいずれかの前記テンポラリ領域に、前記複数の処理データのうちの他の1つの処理データに対する処理を開始することを表す情報が含まれている場合に、当該ディスクリプタ情報を参照して行われたDMA読み出しまたはDMA書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、前記他の1つの処理データに対する処理を開始するように前記画像処理手段を制御すること
    を特徴とする請求項1または2記載の画像処理装置。
  4. 前記アプリケーションプログラムは、当該アプリケーションプログラムを特定する情報を前記テンポラリ領域に設定すること
    を特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
  5. 前記アプリケーションプログラムは、前記画像処理手段がストールした場合に、前記テンポラリ領域を参照することにより、前記画像処理手段が前記複数の入力側ディスクリプタ情報、および前記複数の出力側ディスクリプタ情報のいずれに基づく処理を実施した後に前記画像処理手段がストールしたかを判定すること
    を特徴とする請求項4記載の画像処理装置。
  6. 複数のブロックに分割された画像データ、前記複数のブロックのDMA(Direct Memory Access)読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのDMA書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをDMA読み出しする入力側DMA制御部と、前記入力側DMA制御部によって前記データ記録手段からDMA読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にDMA書き込みする出力側DMA制御部と、を含む画像処理手段と、前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、を備え、前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたDMA読み出しまたはDMA書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有する画像処理装置において実行される画像処理方法であって、
    前記デバイスドライバプログラムが、前記テンポラリ領域の情報に基づいて、前記信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記アプリケーションプログラムへ通知することが必要であるか否かを判定するステップを含むこと
    を特徴とする画像処理方法。
JP2009064769A 2009-03-17 2009-03-17 画像処理装置および画像処理方法 Expired - Fee Related JP5233767B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009064769A JP5233767B2 (ja) 2009-03-17 2009-03-17 画像処理装置および画像処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009064769A JP5233767B2 (ja) 2009-03-17 2009-03-17 画像処理装置および画像処理方法

Publications (2)

Publication Number Publication Date
JP2010218263A JP2010218263A (ja) 2010-09-30
JP5233767B2 true JP5233767B2 (ja) 2013-07-10

Family

ID=42977042

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009064769A Expired - Fee Related JP5233767B2 (ja) 2009-03-17 2009-03-17 画像処理装置および画像処理方法

Country Status (1)

Country Link
JP (1) JP5233767B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102114233B1 (ko) 2013-12-13 2020-05-25 삼성전자 주식회사 영상 처리 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005107820A (ja) * 2003-09-30 2005-04-21 Kyocera Mita Corp データ転送装置
JP2008071054A (ja) * 2006-09-13 2008-03-27 Ricoh Co Ltd データ転送制御方法、データ処理装置及び画像処理装置

Also Published As

Publication number Publication date
JP2010218263A (ja) 2010-09-30

Similar Documents

Publication Publication Date Title
JP4833568B2 (ja) 情報処理装置、画像形成装置、起動プログラムおよび記憶媒体
JP6632709B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
US11257178B2 (en) Image processing device, image processing method, and storage medium
US20080229327A1 (en) Information processing apparatus, information processing mehtod and computer program product
WO2017163591A1 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
JP5750899B2 (ja) 画像形成装置およびその制御方法
JP5691270B2 (ja) 画像処理システムおよび画像処理装置
JP5233767B2 (ja) 画像処理装置および画像処理方法
JP4928795B2 (ja) 情報記録装置、画像形成装置、情報記録方法及び情報記録プログラム
JP6600077B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
US8126860B2 (en) Method and apparatus for processing data
JP2002203236A (ja) 画像処理装置および画像処理装置の制御方法および記憶媒体
JP5560785B2 (ja) 情報処理装置、画像形成装置及び情報処理方法
JP2012096405A (ja) 画像処理システム
JP7259348B2 (ja) 情報処理装置、情報処理装置の起動方法、及び、情報処理装置の起動プログラム
JP7491004B2 (ja) 情報処理装置、決定方法、及びプログラム
US11403112B2 (en) Information processing apparatus, method of starting up an information processing apparatus
JP7380157B2 (ja) 情報処理装置およびプログラム
JP2010016800A (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JP2006260093A (ja) プリンタドライバ、画像形成装置、印刷方法および文書印刷プログラム
JP2022014688A (ja) 画像形成装置、及び画像形成プログラム
JP2013141233A (ja) 画像形成装置及び画像形成作業制御方法並びにコンピュータ読取可能記録媒体
JP2015166928A (ja) プログラム、情報処理装置、情報処理システムおよび情報処理方法
JP2013103372A (ja) 画像形成装置
JP5482302B2 (ja) 情報処理装置、及び、情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130311

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees