(57)【要約】【課題】  ＰＤＬデータから領域毎に作成した中間データに基づいて、レンダリング処理する場合に、領域間に生じるレンダリング処理の待機時間を削減する。【解決手段】  入力される印刷データをラスタ画像データに変換するための中間データを生成する情報処理装置であって、前記印刷データに基づいて、前記画像に描画される画像オブジェクトの符号化された圧縮データをデコードするデコード手段と、前記保持手段が保持する前記画像オブジェクトの画像データを参照しながら、前記画像の領域毎にレンダリングすることによりラスタ画像データを生成するレンダリング手段とを有し、前記デコード手段は、前記レンダリング手段が注目領域のラスタ画像データを生成している間に、前記注目領域に描画される画像オブジェクトの圧縮データと、前記注目領域の後続の領域に描画される画像オブジェクトの圧縮データの少なくとも一部をデコードする。【選択図】  図１
2017001387.tif 000002
【特許請求の範囲】
【請求項１】
入力される印刷対象の画像を表す印刷データをラスタ画像データに変換する情報処理装置であって、
前記印刷データに基づいて、前記画像に描画される画像オブジェクトの符号化された圧縮データをデコードするデコード手段と、
前記デコード手段が前記圧縮データをデコードした結果、得られる前記画像オブジェクトの画像データを保持する第１の保持手段と、
前記保持手段が保持する前記画像オブジェクトの画像データを参照しながら、前記画像の領域毎にレンダリングすることによりラスタ画像データを生成するレンダリング手段とを有し、
前記デコード手段は、前記レンダリング手段が注目領域のラスタ画像データを生成している間に、前記注目領域に描画される画像オブジェクトの圧縮データと、前記注目領域の後続の領域に描画される画像オブジェクトの圧縮データの少なくとも一部をデコードすることを特徴とする情報処理装置。
【請求項２】
さらに、印刷データを解釈して、描画命令に変換する解釈手段と、
前記描画命令に従って、前記領域毎に、前記画像に描画される画像オブジェクトの圧縮データ、前記画像のレンダリングデータを含む中間データを作成する中間データ作成手段と、を有し、
前記デコード手段は、前記中間データに含まれる前記圧縮データをデコードし
前記レンダリング手段は、前記レンダリングデータをレンダリングし、
前記中間データ作成手段は、前記注目領域について、
前記レンダリング手段が処理する前記注目領域のレンダリングデータと、
前記注目領域に描画される画像オブジェクトの圧縮データと、前記注目領域には描画されず前記注目領域の後続で中間データを作成される領域に描画される画像オブジェクトの少なくとも一部の圧縮データとを含む中間データを作成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記レンダリング手段の処理単位をレンダリングバンドとし、前記デコード手段の処理手段のデコードバンドとし、
前記中間データ作成手段は、前記注目領域について、レンダリングバンド毎に、前記レンダリング手段がレンダリングを開始可能なタイミングを示すスケジュールデータと、
デコードバンド毎に、前記デコード手段がデコードを開始可能なタイミングを示すスケジュールデータとを作成することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記中間データ作成手段は、
前記第１の保持手段の使用状況を管理する手段と、
前記印刷データにおいて前記画像オブジェクトが描画される描画位置を算出する算出手段と、
前記描画位置に基づいて、前記デコードバンドそれぞれと、前記デコードバンドの画像データが参照されなくなるレンダリングバンドとの対応関係を決定する決定手段と、
前記使用状況と前記対応関係に基づいて、前記注目領域以外の領域に描画される画像オブジェクトを先行してデコード可能かどうかを判定する判定手段と、
デコードバンドの識別情報と該デコードバンドを開始するまでにレンダリングの完了を待つべきレンダリングバンドの識別情報を待ちＩＤとして対応づけたタスクを作成する作成手段を有し、
前記タスク作成手段は、前記判定手段により先行してデコードできると判定された場合、前記使用状況に基づいて、前記注目領域には描画されず前記注目領域の後続で中間データを作成される領域に描画される画像オブジェクトの少なくとも一部の圧縮データを生成し、かつ該圧縮データをデコードの開始を制御するためのデコードタスクを作成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記タスク手段は、レンダリングバンドの識別番号と該レンダリングバンドのレンダリングを開始するまでにデコードを完了すべき最後のデコードバンドの識別番号を対応づけたレンダリングタスクを作成することを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記中間データを読み出し、前記中間データに含まれる前記デコードタスクと前記レンダリングタスクとに従って、前記レンダリング手段と前記デコード手段を制御する制御手段を有することを特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記注目領域の後続の領域に描画される画像オブジェクトの圧縮データとは、前記後続の領域のみにおいて描画に用いられる圧縮データであることを特徴とする請求項１乃至６の何れか一項に記載の情報処理装置。
【請求項８】
前記中間データ作成手段は、前記注目領域に描画される画像オブジェクトの圧縮データで、前記既にデコードされた圧縮データがあるか否かを判定し、
既にデコードされた圧縮データがある場合は、前記注目領域の中間データに、前記既にデコードされた圧縮データを含ませないことを特徴とする請求項２に記載の情報処理装置。
【請求項９】
さらに、前記中間データを保持する第２の保持手段を有し、  前記第２の保持手段は、前記複数の領域のうち１つの領域の中間データのみ保持可能であることを特徴とする請求項２に記載の情報処理装置。
【請求項１０】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至９の何れか一項に記載された情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項１１】
入力される印刷対象の画像を表す印刷データをラスタ画像データに変換する情報処理方法であって、
前記印刷データに基づいて、前記画像に描画される画像オブジェクトの符号化された圧縮データをデコードする工程と、
前記画像オブジェクトの画像データを参照しながら、前記画像の領域毎にレンダリングすることによりラスタ画像データを生成する工程からなる、
前記デコードする工程は、前記レンダリング工程が注目領域のラスタ画像データを生成している間に、前記注目領域に描画される画像オブジェクトの圧縮データと、前記注目領域の後続の領域に描画される画像オブジェクトの圧縮データの少なくとも一部をデコードすることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページ記述言語（ＰＤＬ）で記述されたデータから画像データを生成する情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
記録媒体に画像を印刷する場合、ページ記述言語（ＰＤＬ：ｐａｇｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）で記述された印刷対象のデータをネットワーク等の通信媒体を介して受信する。プリンタ等の画像形成装置で出力するため、ＰＤＬで記述されたデータに対してＲＩＰ（Ｒａｓｔｅｒ  ｉｍａｇｅ  ｐｒｏｃｅｓｓｏｒ）処理を実行することにより、ＰＤＬで記述されたデータは、ラスタ画像データに変換される。具体的にはまず、印刷する画像形成装置（プリンタ）専用のインタプリタが、受信したＰＤＬによって記述されたデータを解釈し、中間データ作成部が、解釈した結果に基づいて中間データを作成する。さらに、中間データに基づいてレンダリング処理が実行され、ラスタ画像データが生成される。以上のようＲＩＰ処理によって生成されるラスタ画像データは、所定の画像処理を施され、画像形成装置が印刷可能な印字データに変換され、プリンタが印刷データに基づいて印刷する。このようなプリンタシステムにおいて、中間データを格納するメモリ量を削減するために、１ページ分の画像データを帯状に分割した複数の領域毎に、中間データを生成する方法が知られている。
【０００３】
特許文献１には、領域毎に中間データを分割する際に、画像オブジェクトが領域の境界に跨っている場合、隣接する領域分が一部重複するように分割し、中間データを作成する方法について開示している。また特許文献２では、画像オブジェクトが複数の領域に跨る場合には、分割する位置を変更する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−３０６２７５号公報
【特許文献２】特開２００３−７２１６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＲＩＰ処理において、レンダリング処理する対象の領域に、圧縮された画像データがオブジェクトとして含まれている場合、必要な圧縮データを伸張した後に、レンダリング処理が開始される。そのため特許文献１や特許文献２に開示された方法によれば、領域毎に作成された中間データに基づくレンダリング処理をするたびに、必要な画像データが伸張されるのを待たなければならないという課題が生じる。
【０００６】
そこで本発明は、領域毎に作成された中間データに基づいてレンダリング処理する場合に、領域間に生じるレンダリング処理の待機時間を削減することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため本発明は、入力される印刷対象の画像を表す印刷データをラスタ画像データに変換する情報処理装置であって、前記印刷データに基づいて、前記画像に描画される画像オブジェクトの符号化された圧縮データをデコードするデコード手段と、前記デコード手段が前記圧縮データをデコードした結果得られる前記画像オブジェクトの画像データを保持する第１の保持手段と、前記保持手段が保持する前記画像オブジェクトの画像データを参照しながら、前記画像の領域毎にレンダリングすることによりラスタ画像データを生成するレンダリング手段とを有し、前記デコード手段は、前記レンダリング手段が注目領域のラスタ画像データを生成している間に、前記注目領域に描画される画像オブジェクトの圧縮データと、前記注目領域の後続の領域に描画される画像オブジェクトの圧縮データの少なくとも一部をデコードすることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、領域毎に作成した中間データに基づいて、レンダリング処理する場合に、領域間に生じるレンダリング処理の待機時間を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】画像形成装置の全体構成を示すブロック図
【図２】印刷対象とする画像の一例を示す図
【図３】第１実施形態におけるラスタ画像データ生成部の詳細な構成を示すブロック図
【図４】印刷対象の画像データとラスタ画像データ生成における処理のタイミングを説明する図
【図５】ＰＤＬ処理部の詳細な構成を示すブロック図と中間データの一例を示す図
【図６】スケジュールデータの一例を示す図
【図７】領域毎に作成された中間データに基づくレンダリング処理を説明する図
【図８】中間データの一例を示す図
【図９】中間データ作成処理およびラスタ画像データ生成処理のフローチャート
【図１０】中間データ作成処理のフローチャート
【図１１】先行タスク作成処理の詳細なフローチャート
【図１２】第１実施形態によるラスタ画像データ生成処理における処理順を説明する図
【図１３】第２実施形態におけるＰＤＬ処理部１０５の詳細な構成を示すブロック図
【図１４】中間データ作成処理のフローチャート
【図１５】ＰＤＬ処理部１０５及びラスタ画像データ生成部１０６による処理のフローチャート
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して、本発明の実施形態を詳細に説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【００１１】
＜第１実施形態＞
（全体構成）
図１は、第１実施形態に適用可能な画像形成装置１００の全体構成を示すブロック図である。画像形成装置１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、入力部１０４、画像処理部１０７、出力部１０８を有する。また画像形成装置１００は、情報処理装置としてＰＤＬ処理部１０５とラスタ画像データ生成部を有し、画像形成装置１００における各構成はバス１０９を介して接続されている。
【００１２】
ＣＰＵ１０１は、ＲＯＭ１０２に格納されたプログラムを読み出し実行することにより、演算処理や画像形成装置１００の各部の動作を統括的に制御する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３は、読み出し及び書き込み可能なメモリであり、画像データなどの各種データを一時的に格納するための記憶媒体である。入力部１０４は、ホストＰＣやサーバ（不図示）から転送されてくるページ記述言語で記述された印刷対象のデータ（以降、ＰＤＬデータ）を受信し、ＲＡＭ１０３に格納する。
【００１３】
ＰＤＬ処理部１０５は、入力部１０４が受信したページ単位のＰＤＬデータを解析し、中間データに変換する。ＰＤＬデータは、１ページ単位で印刷対象のデータにおけるオブジェクト情報やオブジェクトが描画される位置を示す情報を含む。印刷対象のデータとして、図２（ａ）に示す印刷ページ２００を例に説明する。印刷ページ２００には画像オブジェクト２０１と、画像オブジェクト２０２とテキストオブジェクト２０３が描画されている。印刷ページ２００の場合、ＰＤＬデータには、各オブジェクトを再現するための情報とオブジェクト毎の描画される位置が含まれている。具体的には、画像オブジェクト２０１および２０２の圧縮されたデータ（以降、圧縮データ）や、テキストの色や種類を示すテキスト情報、背景色等の情報を含むデータである。ＰＤＬデータは一般に、様々な形式のファイルとして存在する。そのためＰＤＬ処理部１０５は、ＰＤＬデータを画像形成装置１００におけるラスタ画像データ生成部１０６が処理可能な形式の中間データに変換する。このときＰＤＬ処理部１０５は、ラスタ画像データ生成部１０６における後述のレンダリング処理やデコード処理のタイミングを制御するためのスケジュールデータも作成し、中間データの一部として出力する。
【００１４】
ラスタ画像データ生成部１０６は、ＰＤＬ処理部１０５が作成した中間データに基づいて、ラスタ画像データを生成する。なおＰＤＬ処理部１０５およびラスタ画像データ生成部１０６の詳細については後述する。
【００１５】
画像処理部１０７は、ラスタ画像データ生成部１０６が生成したラスタ画像データに対して所定の画像処理を施して印刷データを生成する。出力部１０８は、インクジェット方式や電子写真方式を用いたプリンタエンジンである。出力部１０８は、画像処理部１０７を介して生成された印刷データに従って、記録媒体上に画像を形成する。
【００１６】
（ラスタ画像データ生成部１０６の詳細な構成）
まず、ラスタ画像データ生成部１０６の詳細な構成について、図３を用いて説明する。第１実施形態においてラスタ画像データ生成部１０６は、制御部３０１、レンダリング部３０２、デコード部３０３を有する。またラスタ画像データ生成部１０６は、データを記憶するためのデコードバッファ３０４を持つ。本実施形態においてレンダリング部３０２およびデコード部３０３は、ＣＰＵ１０１がコンピュータプログラムを実行することにより、機能する。ただしこの例に限定されず、その一部または全部をＡＳＩＣや電子回路等の専用のハードウェアで構成するようにしてもよい。
【００１７】
レンダリング部３０２は、中間データに基づいて、予め設定されたバンド毎にレンダリング処理を行う。図２（ｂ）に示すように、識別情報として番号１〜６が割り当てられた領域が、レンダリング部３０２の処理単位であり、ここではレンダリングバンドと呼ぶ。レンダリングバンドとは、印刷ページ２００の出力空間において、高さは所定の画素数分、幅はページ幅分の領域である。レンダリングバンドの高さは、処理速度や生成したラスタ画像データを保存可能なメモリ容量に応じて設定されている。
【００１８】
デコード部３０３は、印刷ページ上に描画されるオブジェクトのうち、画像オブジェクトなど所定の符号化形式によって圧縮された画像データ（以降、圧縮データ）をデコードする。第１実施形態では、画像オブジェクト２０１と２０２の圧縮データを必要に応じて読み出し、予め設定された所定の高さ分ごとにデコードする。ここで画像オブジェクトがデコードされる単位領域をデコードバンドと呼ぶ。図２（ｂ）に識別情報ａ、ｂ、ｃ、ｄ、ｅで示された５つの領域がデコード部３０３における処理単位を表している。画像オブジェクト２０１は、デコードバンドａとｂの２つの領域に分割され、画像オブジェクト２０２はデコードバンドｃ、ｄ、ｅでの３つの領域に分割されていることがわかる。このようにデコードバンド毎にデコードすることにより、例えばレンダリングバンド１を処理する際には、画像オブジェクト２０１全体ではなく、その半分の面積分をデコードすればよい。従って、デコードバンド毎にデコードすることは、デコード処理の効率化とデコードバッファ３０４の削減につながる。なお、デコードバンドの高さは、デコードした画像データを格納するデコードバッファ３０４の容量に応じて設定されている。デコードバッファ３０４は、デコードバンド毎にデコードされた画像データを保存することができる。第１実施形態においてデコードバッファ３０４は、デコードバンド３つ分のデータを格納可能な容量を保持している。
【００１９】
ここで、図４を用いて、レンダリングとデコード処理の処理順を説明する。レンダリング部３０２が、処理対象のレンダリングバンドのレンダリング処理を開始できるのは、処理対象のレンダリングバンドに必要な圧縮データが全てデコードされた後である。つまり、レンダリングバンド１に必要なデコードバンドａのデコードが完了した後、レンダリング部３０３はレンダリングバンド１のレンダリング処理を開始できる。
【００２０】
一方デコード部は、レンダリング部３０２がレンダリングしている間、処理中のレンダリングバンドに描画される画像データを、デコードバッファ３０４から書き換えたり削除したりしてはならない。デコード部３０３がデコードバンドｃのデコードが完了したとき、デコードバッファ３０４にはデコードバンドａ、ｂ、ｃの画像データが格納され、空き容量がない。レンダリング部３０２が処理中のレンダリングバンド２にはデコードバンドａ、ｂの画像データが必要であり、かつデコードバンドｃの画像データは次のレンダリング処理の際に必要となる。そこでデコード部３０３は、レンダリング部３０３によるレンダリングバンド２のレンダリング処理が完了するのを待つ。レンダリング部３０３がレンダリングバンド３の処理に進むと、デコードバンドｄのデコードを開始する。デコード部３０３は、デコードしたデコードバンドｄの画像データを、デコードバッファａの画像データが格納された領域に上書きする。
【００２１】
以上のように、レンダリング処理とデコード処理との間には、処理開始が可能かどうかについて依存関係がある。なお、デコードバッファ３０４がデコードバンド３つ分の容量をもつということは、１つのレンダリングバンドに対して３つのデコードバンドの画像データを描画できることを意味する。そのためデコードバッファ３０４は、１つのレンダリングバンドに描画されるデコードバンドの最大数とメモリ容量のコストとを考慮して、その容量が設計されている。
【００２２】
制御部３０１は、中間データに従って、レンダリング部３０２およびデコード部３０３それぞれにおける処理を制御する。中間データには、各レンダリングバンドの処理に必要なデコードバンドを示す情報や、各デコードバンドが不要になるレンダリングバンドを示す情報が含まれている。制御部３０１は、中間データからこれらの情報を読み出し、レンダリング部３０２やデコード部３０３に処理の開始を指示したり、処理の完了通知を受け取る。中間データについては後述する。
【００２３】
（ＰＤＬ処理部１０５の詳細な構成）
ＰＤＬ処理部１０５の詳細な構成と中間データについて、図５を用いて説明する。ＰＤＬ処理部１０５は、ＣＰＵ１０１がコンピュータプログラムを実行することにより、各処理部として機能する。ＰＤＬ処理部１０５は前述の通り、１ページ分のＰＤＬデータに基づいて、ラスタ画像データ生成部１０６が処理可能な形式である中間データを作成する。ＰＤＬ処理部１０５はＰＤＬインタプリタ５０１と中間データ作成部５０２を有する。ＰＤＬインタプリタ５０１は、ＰＤＬデータを解釈して描画命令に変換し、中間データ作成部５０２に出力する。
【００２４】
中間データ作成部５０２はレンダリングデータ作成部５０３、圧縮データ作成部５０４、スケジュールデータ作成部５０５を有する。レンダリングデータ作成部５０３は、ＰＤＬインタプリタ５０１が解釈した描画命令に基づいて、レンダリングバンド毎にレンダリング部３０２が処理可能な形式のレンダリングデータ５１１を作成する。前述の通り、印刷ページの出力空間における主走査方向に印刷ページ幅、副走査方向に所定の画素数分（ここでは６４画素）の領域をレンダリングバンドの単位とする。
【００２５】
レンダリングデータ５１１には、レンダリングバンドに含まれる領域情報と、各領域にオブジェクトを描画するためのオブジェクト情報が含まれる。前述の通りオブジェクト情報としては、領域内を単色で描画する為の色情報や、領域内に画像オブジェクトを描画する為の画像情報などが生成されている。なお、画像オブジェクトが複数のレンダリングバンドに跨っている場合、両方のレンダリングバンドに対応するレンダリングデータに、その画像オブジェクトの情報が含まれる。ただし、ラスタ画像データにおける画像オブジェクトを描画する位置や画像オブジェクトのうち描画に用いる領域がレンダリングバンド毎に異なっている。図２に示す例では、レンダリングデータ作成部５０３は、６つのレンダリングバンド毎のレンダリングデータを作成する。レンダリング部３０２は、制御部３０１の指示により指定されたレンダリングデータを順に読み出し、レンダリング処理することでラスタ画像データを生成する。
【００２６】
圧縮データ作成部５０４は、描画命令に従って、様々なフォーマットによって圧縮されている圧縮データを読み込み、デコードバンド毎にデコード部３０３が処理可能な形式の圧縮データ５１２に変換する。ここでは、圧縮データとして保持されている画像データ内の二次元空間において、横方向にイメージ幅、縦方向に６４画素の領域をデコードバンドとする。図２に示す印刷ページ２００については、圧縮データ作成部５０４は、各画像オブジェクトを分割して、デコードバンドａ、ｂ、ｃ、ｄ、ｅの圧縮データ５１２を作る。
【００２７】
スケジュールデータ作成部５０５は、描画命令に従って、レンダリング処理とデコード処理のタイミングを制御するためのスケジューリングデータを作成する。スケジューリングデータには、レンダリング部３０３における処理のタイミングを制御するためのレンダリングスケジュール５１３と、デコード部３０３がデコードするタイミングを制御するためのデコードスケジュール５１４がある。スケジュールデータ作成部５０５は、デコードバッファ管理部５０６、依存関係決定部５０７、描画位置算出部５０８、タスク作成部５０９、先行可否判定部５１０を有する。
【００２８】
レンダリングスケジュール５１３は、レンダリングの処理順に並べられ、レンダリングバンドの識別情報を示すタスクと、各タスクに紐付けられたデコードバンドの識別情報を示す待ちＩＤとからなる。レンダリングタスクは、レンダリング部３０３が処理すべきレンダリングバンドの識別情報を示す。また待ちＩＤは、レンダリング部３０３が処理対象のレンダリングバンドに対する処理を開始する前に、デコード部３０４によるデコードが完了すべき最後のデコードバンドの識別番号を示している。例えば図２（ｂ）に示すレンダリング処理の場合、レンダリングバンド３には、デコードバンドｂとｃの画像データが描画される。画像オブジェクトは、描画される位置に従って描画される順にデコードされるので、後にデコードされるデコードバンドｃがレンダリングバンド３のタスクに対応する待ちＩＤとして対応付けられる。
【００２９】
図６（ａ）に、図４に示すレンダリング処理のためのレンダリングスケジュールを示す。待ちＩＤが０であるレンダリングタスクについては、そのレンダリングバンドに対するレンダリングを、即座に実行させられることを意味する。レンダリングスケジュールは、ラスタ画像データ生成部１０６における制御部３０１によって順に読み込まれる。制御部３０１は、レンダリングスケジュール５１３を参照し、処理対象のレンダリングバンドに対応する待ちＩＤのデコード処理が完了したことを確認すると、レンダリング部３０２に処理対象のレンダリングバンドに対するレンダリング処理の開始を指示する。
【００３０】
描画位置算出部５０８はまず、ＰＤＬインタプリタ２０１から得られる描画命令に基づいて、ラスタ画像データにおける画像オブジェクトの描画位置を計算する。タスク作成部５０９は、描画するオブジェクトが圧縮データとして保持されている場合、計算した描画位置に基づいて各レンダリングバンドに描画されるデコードバンドを決定する。タスク作成部５０９は、決定したデコードバンドを各待ちＩＤとして対応付けてタスクを作成し、レンダリングスケジュール５１３を出力する。
【００３１】
一方デコードスケジュール５１０は、デコードバンドの識別情報を示すデコードタスク５１０ａと、各デコードタスクａ５１０に紐付けられた、レンダリングバンドの識別情報を示す待ちＩＤ５１０ｂとからなる。待ちＩＤ５１０ｂが０を示すとき、対応するデコードタスク５１０ａは即座に実行させられることを意味する。待ちＩＤ５１０ｂが０以外を示すときは、待ちＩＤが示すレンダリングバンドのレンダリングタスク５０９ａを完了すると、実行させられることを意味する。
【００３２】
デコードスケジュール５１０は、制御部３０１によって上から順に読みこまれる。制御部は、読みこんだデコードバンドに対応する待ちＩＤが示すレンダリングバンドのレンダリング処理が完了したことを検知すると、読みこんだデコードバンドのデコード処理の開始を指示する。
【００３３】
依存関係決定部５０７は、ＰＤＬインタプリタ２０１から得られる描画命令に基づいて、ラスタ画像データにおける画像オブジェクトの描画終了位置を計算する。依存関係決定部５０８は、計算した描画終了位置に基づいて、各デコードバンドが参照されなくなるレンダリングバンドを決定し、デコードバンドとレンダリングバンドとの依存関係として記憶する。デコードバッファ管理部５０６は、デコードバッファ３０４の保持可能なデコードバンド数を示す情報を予め保持している。デコードバッファ管理部５０６は、デコードバッファ３０４の使用状況（空き状況）を管理することが出来る。タスク作成部５０９は、デコードバッファ３０４の空き状況に基づいて、デコードバンドの識別情報を示す各タスクに、タスクを開始可能な合図となるレンダリングバンドを対応づけてタスクを作成する。
【００３４】
図２（ｂ）に示す印刷ページの場合、各デコードバンドとそのデコードバンドが参照されなくなるレンダリングバンドとの対応（依存関係）は、図６（ｂ）に示すように算出される。なおデコードバンドは、描画される位置に基づいて上方から順に並べられる。例えば、デコードバンドａは、一番目にデコードされるデコードバンドであり、レンダリング処理がレンダリングバンド３に進むと、デコードバッファ３０４上のデコードバンドａを格納していた領域に上書きできる。タスク作成部５０９は、各デコードバンドが参照されなくなるレンダリングバンドに基づいて、各デコードバンドの待ちＩＤを決定する。その結果を図６（ｃ）に示す。第１実施形態においてデコードバッファ３０４は、３つのデコードバンドを格納することができるので、デコードバンドａ、ｂ、ｃはデコードバッファ３０４が空くのを待たずに、そのデコードした結果を格納することできる。従ってタスク作成部５０９は、デコードバンドａ、ｂ、ｃについては待ちＩＤとして０を決定する。デコードバンドｄは、デコードバンドａが解放可能になったとき、デコードバッファ３０４に格納できる。デコードバンドａは、レンダリングバンド３のレンダリング処理に進むと上書き可能なので、タスク作成部５０９は、デコードバンドｄの待ちＩＤとしてレンダリングバンド２を決定する。
【００３５】
上記のように、中間データ作成部５０２は中間データを作成する。作成された中間データは、中間データバッファ５０７に格納される。
【００３６】
（分割した領域毎に中間データを作成する場合について）
中間データ５０６は前述の通り、レンダリングデータ、圧縮データ、スケジュールデータからなり、そのデータ量は膨大になってしまう場合がある。そこで中間データバッファ５０６のメモリ容量を削減するため、中間データ作成部５０２が印刷ページに対して、領域毎に中間データを作成する場合について説明する。図７（ａ）に、印刷ページ２００を水平方向に分割して得られる、領域１と領域２を示す。
【００３７】
ここでまず、印刷ページを分割せずに中間データを作成した場合と同様の方法により、領域毎に中間データを作成した場合について、図７（ｂ）を用いて説明する。中間データ作成部５０２は、領域１のＰＤＬデータを解釈して中間データを作成し、中間データバッファ５０７に格納する。領域１については、３つのレンダリングバンドに対応するレンダリングデータ５１１が作られる。画像オブジェクト２０１の全領域に対応するデコードバンドａ、ｂと画像オブジェクト２０２が部分的に描画されるデコードバンドｃの３つに対応して、３つの圧縮データ５１２が作られる。ラスタ画像データ生成部１０６は、領域１の中間データに基づいて、領域１を構成するレンダリングバンド１、２、３およびデコードバンドａ、ｂ、ｃについて、デコードとレンダリング処理を実行する。最後のタスクであるレンダリングバンド３のレンダリング処理が開始されると、中間データバッファ５０６は上書き可能になる。
【００３８】
中間データ作成部５０２は、領域２のＰＤＬデータを解釈して中間データを作成し、中間データバッファ５０７に書き込む。領域２については、３つのレンダリングバンドに対応するレンダリングデータ５１１と、画像オブジェクト２０２の全領域であるデコードバンドｃ、ｄ、ｅに対応して、３つの圧縮データ２１２が作られる。ラスタ画像データ生成部１０６は、領域２の中間データを中間データバッファ５０６から読み出し、レンダリングバンド４、５、６およびデコードバンドｃ、ｄ、ｅについてレンダリング処理およびデコード処理を実行する。
【００３９】
以上のように、領域毎に中間データを作成した場合、領域２に対するレンダリング処理は、最初にレンダリング処理されるレンダリングバンドに必要なデコードバンドのデコード処理から始めなければならない。その結果、１ページ分の印刷ページを領域毎に中間データを作成すると、分割せずに中間データを作成した場合よりも、描画に必要な画像オブジェクトがデコードされるまでの待ち時間が増えてしまう場合がある。この領域２におけるデコード処理の待ち時間は、図４に示す分割しない場合に比べて、印刷するまでの処理時間が長くなり、オーバーヘッドが生じてしまう。
【００４０】
そこで第１実施形態では、１ページ分の印刷ページについて、領域毎に中間データを作成した場合、デコードバッファの使用状況に応じて、中間データに含まれない領域に必要なＰＤＬデータを参照してスケジュールデータを作成する。つまり中間データを作成しようとする領域を注目領域とすると、注目領域以外の領域に描画される画像オブジェクトの少なくとも一部のデコードバンドを先行してデコードさせる。そのため先行可否判定部５１０は、次に処理すべき領域のＰＤＬデータを参照し、次に処理すべき領域の最初にレンダリングされるレンダリングバンドに必要な圧縮データを先行してデコード可能かどうかを判定する。図８は、スケジュールデータ作成部５０５が領域毎に中間データを作成した結果の一例を示す。
【００４１】
タスク作成部５０９は、先行可否判定部５１０による判定結果に応じて、次に処理すべき領域のデコードされる圧縮データを、先行してデコードするためのデコードスケジュールを作成する。また圧縮データは、先行してデコードするデコードバンドの圧縮データを先行デコードバンドとして作成する。つまり第１実施形態では、領域毎に中間データを作成した場合、次に中間データを作成される領域のデコードバンドおよび次に中間データを作成される領域のデコードを識別情報とする先行タスクが、中間データに含まれることになる。圧縮データに含まれる先行デコードバンドは、注目領域に描画されない画像オブジェクトの圧縮データである。
【００４２】
（情報処理装置における全体の処理の流れ）
ここで、情報処理装置として機能するＰＤＬ処理部１０２及びラスタ画像データ生成部１０６による全体の処理の流れを説明する。図９は、ＰＤＬ処理部１０２及びラスタ画像データ生成部１０６による全体の処理のフローチャートである。ＣＰＵ１０１が図９に示すフローチャートを実現できるプログラムを読み出し、制御することにより、各処理部の機能が実現される。
【００４３】
まずステップＳ９０１においてＰＤＬ処理部１０２に、印刷対象のＰＤＬデータが入力される。ステップＳ９０２においてＰＤＬ処理部１０２は、予め定められた領域分のＰＤＬデータに基づいて、領域毎に中間データを作成し出力する。まず、ＰＤＬインタプリタ５０１は、ＰＤＬデータのうち一部領域のＰＤＬデータを解釈し、描画命令に変換する。中間データ作成部５０２は、ＰＤＬインタプリンタ５０１によって解釈された描画命令に従って、中間データを作成する。中間データ作成処理については、詳細を後述する。作成した中間データは、ＲＡＭ１０３の中間データバッファ５０７に格納する。ＰＤＬ処理部１０２は、領域の中間データを作成すると、ＣＰＵ１０１に完了通知を送る。
【００４４】
ステップＳ９０３において、ラスタ画像データ生成部１０６の制御部３０１は、中間データバッファ５０７から、中間データを読み込む。ステップＳ９０４において制御部３０１は、読みこんだ中間データに含まれるレンダリングスケジュールを参照し、処理すべきタスクを読みこみ、処理対象のレンダリングバンドを決定する。制御部３０１は、タスクの待ちＩＤに基づいて、処理対象のレンダリングバンドのレンダリング処理を開始できるかどうか判定する。待ちＩＤが０か、または待ちＩＤに示されたデコードバンドのデコード処理が完了している場合、制御部３０１は、ステップＳ９０８に進む。待ちＩＤに示されたデコードバンドのデコード処理が完了していない場合、制御部３０１はステップＳ９０５に進む。
【００４５】
ステップＳ９０５において制御部３０１は、処理対象のタスクの待ちＩＤに記載されたデコードバンドまでのデコード処理の開始を、デコード部３０３に指示する。ステップＳ９０６においてデコード部３０３は、制御部３０１による指示に従って、中間データに含まれる圧縮データを読み込み、指示されたデコードバンドまで順にデコードする。ステップＳ９０７においてデコード部３０３は、デコードによって得られる画像データをデコードバッファ３０４に格納する。
【００４６】
制御部３０１は、処理対象タスクの待ちＩＤが示すデコードバンドのデコード処理が完了したことを検知すると、ステップＳ９０８においてレンダリング部３０２にタスクに示された識別情報のレンダリングバンドのレンダリング処理を開始させる。ステップＳ９０９においてレンダリング部３０２は、制御部３０１によって指示されたレンダリングバンドのレンダリングを開始する。処理対象のレンダリングバンドにデコードされた画像データが必要なときは、デコードバッファ３０４から読み出す。ステップＳ９１０においてレンダリング部３０２は、レンダリング処理により生成したラスタ画像データを出力する。
【００４７】
ステップＳ９０８において制御部３０１はレンダリング開始の指示をすると、ステップＳ９１１に進み、開始指示したレンダリング処理が最後かどうかを判定する。最後である場合、デコード部３０３は全てのデコードバンドのデコードが完了していることを意味する。また、レンダリング部３０２が最後のレンダリングバンドのレンダリングデータを読み出せば、中間データバッファ５０７は上書き可能になる。そこで制御部３０１は、開始指示したレンダリングが最後のレンダリングバンドである場合、完了通知を送信する。
【００４８】
ステップＳ９１３においてＰＤＬ作成部１０２は、印刷ページの全領域について、中間データを作成したかどうかを判定する。中間データを作成していない領域があれば、ステップＳ９０２に戻り、ＰＤＬ処理部１０２は次の領域の中間データを作成する。
【００４９】
（中間データ作成部５０２における処理の流れ）
ステップＳ９０２における中間データ作成部５０２が実行する中間データ作成処理について、図１０のフローチャートを用いて詳細に説明する。図１１はさらに、タスク作成部５０９による先行タスク作成処理および圧縮データ作成部５０４による先行デコードバンド作成処理のフローチャートを示す。
【００５０】
まずステップＳ１００１において、ＣＰＵ１０１の制御により、中間データ作成部５０２はレンダリングデータおよび圧縮イメージデータの作成を開始する。中間データ作成部５０２は、前述の通り、印刷ページを領域１と領域２に分割して、中間データを作成する。以降、領域１の中間データを作成するとする。ステップ１００２においてレンダリングデータ作成部５０３は、予め定められた高さ分のレンダリングバンド毎に、レンダリングデータを作成する。
【００５１】
ステップＳ１００３において圧縮データ作成部５０４は、ラスタ画像データ上に描画すべきオブジェクトがあるか検出する。画像オブジェクトがなければ、レンダリングデータのみが中間データとなり、ステップＳ１０１６に進む。画像オブジェクトがある場合、ステップＳ１００４に進み、領域１のように１つ目の領域の場合はＳ１００６に進む。圧縮データ作成部５０４は、検出した画像オブジェクトを予め定められた高さ分のデコードバンド毎の圧縮データに変換する。ここまでの処理により、領域１に対しては、３つのレンダリングバンドのレンダリングデータと、領域１に描画される３つのデコードバンドの圧縮データが作成される。ステップＳ１００４で、領域２のように前の領域の後に処理される場合はステップＳ１００５に進み、前の領域でデコード済みのデコードバンドがデコードバッファ３０４にあるかを検出する。デコードバッファ管理部５０６に記憶されているデコードバッファ使用状況を取得することで、検出した画像オブジェクトが前の領域で先行してデコードされているかを検出する。先行してデコードされている画像オブジェクトは、圧縮データ作成の対象から外し、デコードされていないものを対象に、ステップＳ１００６で圧縮データに変換する。
【００５２】
ステップＳ１００７においてレンダリングデータおよび圧縮データの作成を完了したことが検知されると、ステップＳ１００８に進み、スケジュールデータ作成部５０５に対してスケジュールデータの作成開始が指示される。
【００５３】
ステップＳ１００９においてまず、描画位置算出部５０８はオブジェクトが描画される位置を算出する。ステップＳ１０１０においてタスク作成部５０９は、各レンダリングバンドについて、最後に描画されるデコードバンドを待ちＩＤとして対応づける。例えば図２（ｂ）に示すレンダリングバンド２については、デコードバンドｂの方がデコードバンドａよりもラスタ順で後方に位置するため、レンダリングバンド２には、デコードバンドｂを対応づけ、待ちＩＤとして設定する。タスク作成部５０９は、全てのレンダリングバンドをタスクとして、待ちＩＤを設定したら、レンダリングスケジュールとして出力する。
【００５４】
ステップＳ１０１１において依存関係決定部８１５は、デコードバンドとレンダリングバンドとの依存関係を決定する。依存関係とは、デコードバンドと、そのデコードバンドの画像データを参照しなくなるレンダリングバンドとを対応関係を意味する。依存関係決定部５０７は、各デコードバンドの描画が終了する位置を参照し、終了位置のレンダリングバンドの次にレンダリングされるレンダリングバンドを、対応づける。
【００５５】
ステップＳ１０１２においてタスク作成部５０９は、描画される順にデコードバンドを選択し、選択したデコードバンドの識別情報をタスクとして設定する。ステップＳ１０１３においてタスク作成部５０９は、デコードバンドとレンダリングバンドとの依存関係と、デコードバッファ管理部５０６が管理しているデコードバッファ３０４の空き状況を参照し、選択したデコードバンドの待ちＩＤを決定する。デコードバッファ３０４に空き領域がある場合は、選択したデコードバンドはレンダリングの完了を待つ必要はないので、待ちＩＤが０となる。また、デコードバッファ３０４に空きがない場合は、依存関係を参照して、どのレンダリングバンドのレンダリング処理が完了すれば空き領域ができるかを検出し、空き領域ができるレンダリングバンドを待ちＩＤとして決定する。例えば、デコードバンドｄを選択した場合、デコードバンドａ、ｂ、ｃの画像データがデコードバッファ３０４に格納され、空き容量がない。依存関係を参照すると、格納されているデコードバンドのうち、デコードバンドａはレンダリングバンド３に処理が進むと参照されなくなることがわかる。そこで、タスク作成部５０９は、デコードバンドｄのタスクにはレンダリングバンド３を待ちＩＤとして決定する。
【００５６】
ステップＳ１０１４においてデコードバッファ管理部５０６は、決定されたデコードタスクと待ちＩＤに応じて、デコードバッファ３０４の使用状況を更新する。デコードバッファ管理部５０６は、デコードバッファ３０４が記憶可能なデコードバンド数を示す情報を予め保持している。ステップＳ１０１３においてデコードタスクの待ちＩＤが０に決定された場合、デコードタスクが開始されたタイミングで空き容量から１減ることを記憶しておく。また、ステップＳ１０１３においてデコードタスクの依存関係を参照し、参照されなくなるレンダリングバンドが完了したタイミングで、そのレンダリングバンドに依存関係があるデコードバンドの数分、空き容量を増やす。
【００５７】
ステップＳ１０１５においてタスク作成部５０９は、全てのデコードバンドをデコードタスクとして選択したかどうかを判定する。全てのデコードバンドのタスクを作成していない場合、ステップＳ１０１２に戻る。全てのデコードバンドのタスクを作成した場合、ステップＳ１０１６にすすむ。
【００５８】
ステップＳ１０１７においてタスク作成部５０９は、次に中間データを作成される領域に描画される画像オブジェクトを、先行してデコードするための先行タスクを作成する。先行タスク作成処理について、詳細は後述する。ここで作成される先行タスクは、図８に示すように、デコードスケジュールの一部としてステップＳ１０１３において作成されたタスクの後続に配置される。
【００５９】
ステップ１０１８において中間データ作成部５０２は、以上の処理によって作成される中間データを中間データバッファ５０７に送信し、領域１の中間データの作成を完了する。
【００６０】
ステップＳ１０１６における先行タスクの作成処理のフローについて、図１１を用いて説明する。まずステップＳ１１０２においてデコードバッファ管理部５０６は、中間データを作成した領域の全てのデコードタスクが完了するタイミングにおける、デコードバッファの使用状況を更新する。具体的には、領域１において、全てのデコードタスクが完了するのは、デコードｃのデコードが完了した時、レンダリングバンド２のタスク処理中である。この時、レンダリングバンド２には、デコードバンドａおよびｂの画像データが必要なので、上書き可能な領域はない。そこでデコードバッファ管理部５０８は、デコードｃのデコードが完了した時のバッファの空き容量として０を更新する。
【００６１】
次にステップＳ１１０３においてタスク作成部５０９は、次に中間データを作成する領域の描画命令を参照し、次に中間データを作成する領域に描画される画像オブジェクトを、先頭のレンダリングバンドから順に画像オブジェクトが検出されるまで、検出する。本実施形態の場合、領域２の描画命令を参照し、領域２の１バンド目にデコードバンドｃ、デコードバンドｄが描画されることを検出する。
【００６２】
ステップ１１０４において描画位置算出部５０８は、検出された画像オブジェクトの描画され始めるレンダリングバンドと、描画し終わるレンダリングバンドを演算する。デコードバンドｃの場合、領域１のレンダリングバンド３から描画され始め、領域２のレンダリングバンド４で描画が完了する。デコードバンドｄの場合、領域２のレンダリングバンド４から描画が開始され、領域２のレンダリングバンド５で描画が完了する。
【００６３】
ステップＳ１１０５においてタスク作成部５０９は、ステップ１１０２で更新したデコードバッファの使用状況に基づいて、検出された画像オブジェクトが既にデコードされているかを検出する。検出された画像オブジェクトが既にデコードバッファにデコードされているときは、先行タスク作成の処理をスキップし、ステップＳ１１０３に戻って次の画像オブジェクトの検出を繰り返す。ステップＳ１１０５において、デコード済みでなかった場合は、ステップＳ１１０６に進む。
【００６４】
図７（ｂ）に示す例の場合、領域２のレンダリングバンド４において描画されるデコードバンドｃは、領域１のレンダリングバンド３でも描画される。そのため、先行タスクが実行される前には既にデコードされて、デコードバッファに残っている。従って、デコードバンドｃは先行タスクの対象とされない。一方、デコードバンドｃは領域１のレンダリングバンドでは描画されなくなるが、領域２においてはレンダリングバンド４まで描画される。このため、レンダリングバンド４のレンダリング処理が完了するまでは、デコードバンドｃのデコード結果がデコードバッファ３０４において解放されないことが必要である。ステップＳ１１０５において、デコードバンドｃのように後続の領域でも描画されるデコードバンドの情報がデコードバッファ管理部５０６によって記憶される。後続の領域でも描画されるデコードバンドの情報は、領域２の中間データ生成時にステップＳ１１０５において参照される。デコードバッファに参照すべきデータが残っている場合には、そのデコードバンドの圧縮データの作成処理をスキップすると共に参照すべきデータが上書きされないようにする。
【００６５】
次にステップＳ１１０６においてタスク作成部５０９は、領域１のデコードバンドのデコードが完了したタイミングで、先行タスク作成の対象であるデコードバンドを、デコード可能かを判定する。本実施形態の場合は、デコードバンドｃのデコードを完了した時デコードバッファ３０４に空き領域はないので、Ｓ１１０６ではデコードできないと判定される。
【００６６】
ステップＳ１１０６でデコードできないと判定されると、デコードバッファ管理部５０６は、ステップＳ１１０７においてバッファを使用中の画像オブジェクトの描画終了バンドを調査する。ステップＳ１１０８においてタスク生成部５０９は、次にデコードバッファ３０４がデコード可能になるタイミングを検出する。図７に示す例では、デコードバンドｃのデコードが完了した後、領域１のレンダリングバンド２のタスクが完了すれば、デコードバンドａの画像データが必要なくなり、デコードバッファ３０４に空き容量ができる。
【００６７】
ステップＳ１１０９において先行可否判定部５１０は、先行タスクを作成できるかどうかを判定する。具体的には、Ｓ１１０８で検出した空き容量ができるタイミングが領域１のレンダリング終了前かどうかを判定する。図７の例では、空き容量ができるのは、領域１のレンダリングタスクが完了する前と検出されているので、先行可否判定部５１０は、先行タスクを作成できると判定する。
【００６８】
ステップＳ１１０９において先行タスク作成可能と判定されると、ステップＳ１１１０において圧縮イメージ作成部５０４は、先行タスクの対象であるデコードバンドの圧縮イメージデータを、領域２の先行デコードバンドとして作成する。またステップＳ１１１１においてタスク作成部５０９は、先行タスクの対象であるデコードバンドのタスクを作成する。ここでは、先行タスクの対象であるデコードバンドｄは、レンダリングバンド３の処理が開始されるとデコード可能になるので、先行タスクｄに待ちＩＤ３を対応づける。
【００６９】
ステップＳ１１１２においてタスク作成部５０９は、既に作成した領域１の圧縮データに、領域１には描画されない先行圧縮データを追加する。また、領域１のデコードスケジュールに先行タスクを追加する。
【００７０】
最後に、ステップＳ１１１３において、追加した先行タスクを完了したタイミングにおけるデコードバッファ３０４の使用状況に、デコードバッファ管理部５０６が記憶している情報を更新する。
【００７１】
先行タスクを追加すると、ステップ１１０３に戻り、画像オブジェクトの検出を繰り返す。ステップＳ１１０８で検出されたオブジェクトが先行デコードできないと判定された場合、もしくは画像オブジェクトが検出されなくなると、ステップＳ１１１４に進んで先行タスク作成を完了する。
【００７２】
このように本実施形態では、次に中間データを作成する領域のデコード処理を先行してデコードできるように、現在中間データを作成している領域に描画されないデコード処理も含めて中間データを作成する。図１２は、上述のフローによって領域毎に中間データを作成した場合の、レンダリング処理およびデコード処理を示している。デコードバンドｄが先行してデコードされるため、レンダリング部２は、領域２のレンダリングバンド４のレンダリング処理を、デコード処理を待つことなく開始できる。
【００７３】
以上説明したように、１ページを分割して分割して領域単位に中間データを作成することで、中間データバッファ５０７を低コスト化することが出来る。さらに、画像オブジェクトが領域間で跨った場合には、次の領域に描画されるデコードバンドを検出し、デコードバッファの使用状況を考慮して先行してデコードさせるため、待ち合わせによる処理低下を軽減することができる。さらに、レンダリングとデコードの依存関係に基づいてデコードバッファの空き状況を管理することで、先行してデコードすることの出来ない圧縮イメージの作成とタスクの追加を行わない。この為、冗長な中間データ生成の処理時間を削減でき、中間データのサイズが冗長に大きくならない。また、ラスタ画像データ生成部は、レンダリングとデコードの依存関係を中間データから読み出すことが出来るので、デコードバッファの管理や依存性の解析を必要としない簡単な構成で中間データを処理することが出来る。
【００７４】
なお、第１実施形態では、情報処理装置として機能するＰＤＬ処理部１０５およびラスタ画像データ生成部１０６が画像形成装置１００に内蔵される形態を例に説明した。しかしながら情報処理装置の一部または全部が、印刷を実行する出力部を有する装置とは独立した構成あってもよい。例えばＰＤＬ処理部１０５は、パーソナルコンピュータ（ＰＣ）やタブレット等の情報端末のソフトウェアとして実現することもできる。この場合、ＰＤＬ処理部１０５は、印刷する画像形成装置が特定されると、印刷する画像形成装置に応じたＰＤＬ処理を実行する。
【００７５】
＜第２実施形態＞
前述の第１実施形態では、領域に必要なデコードスケジュールを作成した後、デコードバッファ３０４の使用状況に基づいて、次に中間データを作成する領域のＰＤＬデータを参照し、先行タスクを作成した。第２実施形態では、デコードバッファ３０４に空きがあれば描画される領域に関わらず次にデコードすべき圧縮データの作成を続けることで、先行的に圧縮データおよびデコードタスクを作成する方法について説明する。図１３は、第２実施形態におけるＰＤＬ処理部１０５の詳細なブロックを示す。第２実施形態では、デコードバッファ３０４に空き容量があればデコードタスクを作成するよう構成するため、先行可否判定部５１０を必要としない。なお第１実施形態と同様の構成については、同じ番号を付し、その説明を省略する。
【００７６】
図１４は、第２実施形態における中間データ作成処理中のフローチャートである。ステップＳ１４０１〜Ｓ１４０８について説明する。
【００７７】
まずステップＳ１４０１においてタスク作成部５０９は、注目領域に描画される画像オブジェクトのデコードタスクの作成が完了したかどうかを判定する。全てのデコードバンドのタスクを作成していなければ、ステップＳ１０１０に戻る。注目領域に描画される画像オブジェクトのデコードバンドの全てについてタスクを作成したが、ステップＳ１４０２に進む。
【００７８】
ステップＳ１４０２においてタスク作成部５０９は、全てのデコードバンドをデコードした時の、デコードバッファ３０４の使用状況を確認する。デコードバッファ３０４に空き容量がない場合はさらに、作成したタスクの各デコードバンドの依存関係を参照する。全てのデコードバンドをデコードし終えた時に空き容量があるが、参照されなくなるレンダリングバンドが領域内であるデコードバンドがある場合、ステップＳ１４０２に進む。全てのデコードバンドのデコード完了時に空き容量がなく、かつ参照されなくなるレンダリングバンドが領域内でのデコードバンドがない場合、デコードバンドはいずれも領域内のレンダリング処理している間は、上書き可能にならないことを意味する。従って次の領域に描画される画像オブジェクトのデコードバンドを先行してデコードすることはできないので、ステップＳ１０１５にスケジュールデータの作成を完了する。
【００７９】
ステップＳ１４０３において圧縮データ作成部５０４は、注目領域以降に中間データを作成する領域の画像オブジェクトを検出する。画像オブジェクトがそれ以降にない場合は、ステップＳ１０１５に進み、処理を完了する。画像オブジェクトが検出できた場合、デコードバンドを特定し、ステップＳ１４０４に進む。
【００８０】
ステップＳ１４０４においてタスク作成部５０９は、ステップＳ１４０３において検出したデコードバンドを先行タスクとして選択する。ステップＳ１４０５においてタスク作成部５０９は、ステップＳ１４０２において注目領域のレンダリング中にデコードバッファ３０４に空き領域ができるタイミングを待ちＩＤとして設定する。
【００８１】
ステップＳ１４０６において圧縮データ作成部５０４は、ステップＳ１４０３において特定したデコードバンドの圧縮データを作成する。ステップＳ１４０７においてデコードバッファ３０４の使用状況を更新し、ステップＳ１４０８において圧縮データに、ステップＳ１４０６において作成した圧縮データを追加し、ステップＳ１４０５において作成したタスクをデコードスケジュールに追加する。
【００８２】
以上の処理によれば、中間データ作成部５０２は、印刷ページを分割した領域ごとに中間データを作成する際に、レンダリングデータおよびレンダリングスケジュールは領域内だけを対象とする。一方、描画オブジェクトの圧縮データおよびデコードスケジュールは、デコードバッフの使用状況に応じて、他の領域の画像オブジェクトを含めて作成する。デコードバッファにおいていずれかのデコードバンドが上書き可能になると、注目領域以外の画像オブジェクトの圧縮データのデコードを先行して開始する。その結果、デコードバッファには、以降のレンダリングに必要な圧縮データが順次最も早いタイミングでデコードされることになる。これにより、領域毎に中間データを作成することによって生じる、デコードの待ち時間を短縮することができる。
【００８３】
＜第３実施形態＞
前述の第１実施形態では、ステップＳ９０４において処理対象のレンダリングバンドが開始可能かどうかの処理判定をきっかけにデコードの開始を制御する構成とした。第３実施形態では、デコードの開始指示とレンダリングの開始指示を並行に行う方法について説明する。なお、第１実施形態と同様の構成については、同じ番号を付し、その説明を省略する。
【００８４】
図１５は、第３実施形態におけるＰＤＬ処理部１０５及びラスタ画像データ生成部１０６による全体の処理のフローチャートである。
ステップＳ１５０１からステップＳ１５０３の中間データの読み込みまでの処理は、第１実施形態におけるステップＳ９０１からステップＳ９０３と同じ処理であるため、その説明を省略する。
【００８５】
ステップ１５０４において制御部３０１は、読みこんだ中間データに含まれるデコードスケジュールを参照し、処理すべきデコードタスクを読みこみ、処理対象のデコードバンドを決定する。制御部３０１は、タスクの待ちＩＤに基づいて、処理対象のデコードバンドのデコード処理を開始できるかどうか判定する。待ちＩＤが０か、または待ちＩＤに示されたレンダリング処理が完了している場合、制御部３０１は、ステップＳ１５０５に進む。
【００８６】
ステップＳ１５０５において制御部３０１は、処理対象のデコードバンドのデコード処理の開始をデコード部３０３に指示すると、完了の通知を待たずにステップＳ１５０８に進む。また、ステップＳ１５０４で待ちＩＤに示されたレンダリング処理がまだ完了していない場合、デコード処理の開始を指示せずにステップＳ１５０８に進む。
【００８７】
ステップＳ１５０６においてデコード部３０３は、制御部３０１による指示に従って、中間データに含まれる圧縮データを読み込み、指示されたデコードバンドのデコード処理を行う。ステップＳ１５０７においてデコード部３０３は、デコードによって得られる画像データをデコードバッファ３０４に格納し、デコード処理を完了すると制御部３０１にデコード完了を通知する。
【００８８】
ステップＳ１５０８において制御部３０１は、読みこんだ中間データに含まれるレンダリングスケジュールを参照し、処理すべきタスクを読みこみ、処理対象のレンダリングバンドを決定する。制御部３０１は、タスクの待ちＩＤに基づいて、処理対象のレンダリングバンドのレンダリング処理を開始できるかどうか判定する。待ちＩＤが０か、または待ちＩＤに示されたデコードバンドのデコード処理が完了している場合、制御部３０１は、ステップＳ１５０９に進む。
【００８９】
ステップＳ１５０９において制御部３０１は、処理対象のレンダリングバンドのレンダリング処理の開始をレンダリング部３０２に指示すると、完了の通知を待たずにステップＳ１５１２に進む。また、ステップＳ１５０８で待ちＩＤに示されたデコード処理がまだ完了していない場合、レンダリング処理の開始を指示せずにステップＳ１５１２に進む。
【００９０】
ステップＳ１５１２において制御部３０１は、ステップＳ１５０５もしくはステップＳ１５０９で指示したデコード処理とレンダリング処理の完了通知待ちを行う。デコード処理とレンダリング処理どちらか一方の完了通知を検知すると、ステップ１５１３に進み、最後のレンダリングバンドの処理が完了したかどうかを判定する。まだレンダリング処理の場合や未処理のレンダリングバンドがある場合は、ステップＳ１５０４に戻り、次のデコードバンドもしくは次のレンダリングバンドの処理を行う。最後のレンダリングバンドの処理が完了したことを検知すると、中間データバッファ５０７は上書き可能になるので、完了通知を送信する。
【００９１】
ステップ１５１５においてＰＤＬ作成部１０２は、印刷ページの全領域について、中間データを作成したかどうかを判定する。中間データを作成していない領域があれば、ステップＳ１５０２に戻り、ＰＤＬ処理部１０２は次の領域の中間データを作成する。
【００９２】
以上、説明したように、デコード処理、レンダリング処理を依存関係のある処理の完了を待っている間にも、処理開始を指示できる処理があれば処理を実行するように制御することで、デコードの開始指示とレンダリングの開始指示を並行に行うことができる。その結果、レンダリング処理の待ち時間および、デコード処理の待ち時間を短縮することができる。
【００９３】
なお、前述の実施形態では制御部３０１がレンダリング部３０２およびデコード部３０３に処理開始を指示する構成であったが、制御部３０１を独立に２つ構成してもよい。レンダリング部３０２にレンダリング処理の処理開始を指示するレンダリング制御部と、デコード部３０３にデコード処理の処理開始を指示するデコード制御部を独立に構成することで、レンダリング処理とデコード処理の開始指示を並列に行う構成としてもよい。
【００９４】
＜その他の実施形態＞
前述の実施形態では、先行して圧縮データを作成する領域に制限を設けていないが、領域に描画すべき画像オブジェクトが含まれない場合を考慮して制限を設けてもよい。例えば、後続の領域を２領域分先まで処理しても、先行する圧縮データが作成されない、もしくはデコードバッファの空きが無くならない場合などに、圧縮イメージデータ２１２の作成を終えるなどとしてもよい。
【符号の説明】
【００９５】
１０５  ＰＤＬ処理部１０５
１０６  ラスタ画像データ生成部
５０２  中間データ作成部
５０５  スケジュールデータ作成部
５０６  デコードバッファ管理部
５０７  依存関係決定部
５０８  描画位置算出部
５０９  タスク作成部
５１０  先行可否判定部
【図１】
2017001387.tif 000003
【図２】
2017001387.tif 000004
【図３】
2017001387.tif 000005
【図４】
2017001387.tif 000006
【図５】
2017001387.tif 000007
【図６】
2017001387.tif 000008
【図７】
2017001387.tif 000009
【図８】
2017001387.tif 000010
【図９】
2017001387.tif 000011
【図１０】
2017001387.tif 000012
【図１１】
2017001387.tif 000013
【図１２】
2017001387.tif 000014
【図１３】
2017001387.tif 000015
【図１４】
2017001387.tif 000016
【図１５】
2017001387.tif 000017