(57)【要約】【課題】  高速で効率的なエンコード、デコード処理を実現する画像処理装置、および方法を提供する。【解決手段】  コーデック手段における処理を開始することが可能な予備処理データが、並列動作可能な複数のハードウェア手段によって準備されたことを条件として、コーデック手段の処理待ち行列としてのキューを設定し、キューの設定情報順に従って、順次、コーデック手段に対して処理開始命令を出力する。本構成により、特定の同期信号やコーデック手段の処理とは無関係に各ハードウェアにおける予備処理データの生成処理を進行させることが可能となる。また、各タイムスロットにおいて複数のコーデック処理を実行させ、また、コーデック処理状況を監視し、破綻のない処理を可能とした。【選択図】  図３
2005159787.tif 000002
【特許請求の範囲】
【請求項１】
データのエンコード処理またはデコード処理を実行する画像処理装置であり、
コーデック手段におけるデータのエンコード処理またはデコード処理に適用する予備処理データを生成する並列動作可能な複数のハードウェア手段と、
前記複数のハードウェア手段の生成した予備処理データを入力し、データのエンコード処理またはデコード処理を実行するコーデック手段と、
前記コーデック手段に対する処理開始命令を出力し、エンコード処理またはデコード処理のシーケンス制御を実行する処理制御手段とを有し、
前記処理制御手段は、
前記コーデック手段における処理を開始することが可能な予備処理データが準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定し、前記キューの設定情報順に従って、順次、前記コーデック手段に対する処理開始命令を出力する構成を有することを特徴とする画像処理装置。
【請求項２】
前記処理制御手段は、
同期信号の発生を条件として、前記コーデック手段に対する処理開始命令を出力する処理を実行する構成であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記処理制御手段は、
同期信号の発生を条件として、前記コーデック手段に対する処理開始命令を出力する処理を実行する構成であり、
同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段に対する処理開始命令を複数出力する処理を実行する構成であることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記処理制御手段は、
同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段からの処理完了通知を受領したことを条件として、前記コーデック手段に対して、前記キューに設定された情報に基づいて決定される後続の処理開始命令を出力する処理を実行する構成であることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記処理制御手段は、
前記コーデック手段の処理態様の異なる処理に対応して、前記コーデック手段の処理待ち行列としての複数のキューを設定し、異なるキューを順次選択し、該選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力する構成であることを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記コーデック手段の処理態様の異なる処理は、エンコード処理およびデコード処理であり、
前記処理制御手段は、
エンコード処理待ち行列としてのエンコード処理キューと、デコード処理待ち行列としてのデコード処理キューとを設定し、該２つの異なるキューを交互に選択し、選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力する構成であることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記処理制御手段は、
同期信号の発生を条件として、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段が実行予定のデータ処理単位情報を、前記キューに基づいて決定し、該決定情報をエントリとして設定したビデオコーデックリストを生成し、
前記コーデック手段からの処理完了通知の受領に基づいて、前記ビデオコーデックリストに設定された完了処理に対応するエントリの削除処理を実行する構成であることを特徴とする請求項１に記載の画像処理装置。
【請求項８】
前記処理制御手段は、
同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行し、
前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断し、前記同期信号によって規定される後続タイムスロットにおいて、前記ビデオコーデックに対する新たな処理命令の出力を中止する構成を有することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記処理制御手段は、
同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行し、
前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断し、
前記同期信号によって規定される後続タイムスロットにおける前記ビデオコーデックの実行予定処理として、前記未完了の処理に続く処理を前記キューに基づいて追加する再スケジューリング処理を実行し、追加した処理情報の対応エントリを前記ビデオコーデックリストに設定し、前記後続タイムスロットにおいて、前のタイムスロットの実行予定処理が完了した際に、前記ビデオコーデックリストに追加設定したエントリに対応する処理の開始命令を前記ビデオコーデックに出力する構成を有することを特徴とする請求項７に記載の画像処理装置。
【請求項１０】
データのエンコード処理またはデコード処理を実行する画像処理方法であり、
並列動作可能な複数のハードウェア手段において、コーデック手段におけるデータのエンコード処理またはデコード処理に適用する予備処理データを生成する予備処理データ生成ステップと、
コーデック手段において、前記予備処理データを入力し、データのエンコード処理またはデコード処理を実行するコーデックステップと、
前記コーデック手段に対する処理開始命令を出力するとともに、エンコード処理またはデコード処理のシーケンス制御を実行する処理制御ステップとを有し、
前記処理制御ステップは、
前記コーデック手段における処理を開始することが可能な予備処理データが準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定するキュー設定ステップと、
前記キューの設定情報順に従って、順次、前記コーデック手段に対する処理開始命令を出力するステップと、
を有することを特徴とする画像処理方法。
【請求項１１】
前記処理制御ステップは、
同期信号の発生を条件として、前記コーデック手段に対する処理開始命令を出力する処理を実行するステップを含むことを特徴とする請求項１０に記載の画像処理方法。
【請求項１２】
前記処理制御ステップは、
同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段に対する処理開始命令を複数出力するステップを含むことを特徴とする請求項１０に記載の画像処理方法。
【請求項１３】
前記処理制御ステップは、さらに、
同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段からの処理完了通知を受領したことを条件として、前記コーデック手段に対して、前記キューに設定された情報に基づいて決定される後続の処理開始命令を出力する処理を実行するステップを含むことを特徴とする請求項１２に記載の画像処理方法。
【請求項１４】
前記処理制御ステップは、
前記コーデック手段の処理態様の異なる処理に対応して、前記コーデック手段の処理待ち行列としての複数のキューを設定し、異なるキューを順次選択し、該選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力するステップを含むことを特徴とする請求項１０に記載の画像処理方法。
【請求項１５】
前記コーデック手段の処理態様の異なる処理は、エンコード処理およびデコード処理であり、
前記処理制御ステップは、
エンコード処理待ち行列としてのエンコード処理キューと、デコード処理待ち行列としてのデコード処理キューとを設定し、該２つの異なるキューを交互に選択し、選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力するステップを含むことを特徴とする請求項１４に記載の画像処理方法。
【請求項１６】
前記処理制御ステップは、さらに、
同期信号の発生を条件として、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段が実行予定のデータ処理単位情報を、前記キューに基づいて決定し、該決定情報をエントリとして設定したビデオコーデックリストを生成するステップと、
前記コーデック手段からの処理完了通知の受領に基づいて、前記ビデオコーデックリストに設定された完了処理に対応するエントリの削除処理を実行するステップと、
を有することを特徴とする請求項１０に記載の画像処理方法。
【請求項１７】
前記処理制御ステップは、さらに、
同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行するステップと、
前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断し、前記同期信号によって規定される後続タイムスロットにおいて、前記ビデオコーデックに対する新たな処理命令の出力を中止するステップと、
を有することを特徴とする請求項１６に記載の画像処理方法。
【請求項１８】
前記処理制御ステップは、
同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行するステップと、
前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断するステップと、
前記同期信号によって規定される後続タイムスロットにおける前記ビデオコーデックの実行予定処理として、前記未完了の処理に続く処理を前記キューに基づいて追加する再スケジューリング処理を実行し、追加した処理情報の対応エントリを前記ビデオコーデックリストに設定し、前記後続タイムスロットにおいて、前のタイムスロットの実行予定処理が完了した際に、前記ビデオコーデックリストに追加設定したエントリに対応する処理の開始命令を前記ビデオコーデックに出力するステップと、
を有することを特徴とする請求項１６に記載の画像処理方法。
【請求項１９】
データのエンコード処理またはデコード処理制御を実行するコンピュータ・プログラムであり、
並列動作可能な複数のハードウェア手段において、コーデック手段におけるデータのエンコード処理またはデコード処理に適用する予備処理データを生成する予備処理データ生成ステップと、
コーデック手段において、前記予備処理データを入力し、データのエンコード処理またはデコード処理を実行するコーデックステップと、
前記コーデック手段に対する処理開始命令を出力するとともに、エンコード処理またはデコード処理のシーケンス制御を実行する処理制御ステップとを有し、
前記処理制御ステップは、
前記コーデック手段における処理を開始することが可能な予備処理データが準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定するキュー設定ステップと、
前記キューの設定情報順に従って、順次、前記コーデック手段に対する処理開始命令を出力するステップと、
を有することを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、および画像処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、画像データの符号化、復号処理、すなわちエンコード、デコード処理を効率的に実行することを可能とした画像処理装置、および画像処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
画像データの転送あるいは格納の際には、例えばＭＰＥＧ(Moving Picture Experts Group)などのフォーマットを適用した符号化（圧縮）が実行されるのが一般的であり、画像データの符号化（圧縮）、および復号化（伸張）処理の高速化、効率化を目的とした技術開発、研究が多くなされている。
【０００３】
例えば、特許文献１には、ビデオデータの符号化復号処理において適用するスカラー処理器、ベクトル処理器、ビットストリーム処理器などの異なる処理機能を持つハードウェアブロックを並列動作させることにより、ハードウェアレベルでの高速処理を可能としたシステムが開示されている。
【０００４】
一方、ソフトウェアレベルでの改善についても、いくつかの取り組みが既に行われている。特に、サーバ・クライアントモデルを採用するシステムの改善案は多く、特許文献２や特許文献３には、サーバから発行された画像処理イベントを、クライアント側でスケジューリングし、システムとしての一連の処理を効率的に行う構成を開示している。
【０００５】
これらのモデルに共通して言えるのは、並列動作可能なハードウェアを搭載するとともに、一定のデータ単位の処理を各ハードウェアにそれぞれ並列にかつ独立に実行させるためのスケジューリング処理を実行するリアルタイムＯＳを実装しているという点である。システム制御をリアルタイムＯＳに依存する部分は大きく、リアルタイムＯＳの分野としても様々な改善が提案されている。リアルタイム処理システムとして、特定の信号に同期させた命令発行処理機構を用いた構成が知られている。
【０００６】
しかし、画像データの符号化、復号処理を行うビデオコーデック（Video Codec）と、ビデオコーデック（Video Codec）に提供する予備処理データの生成処理を行なう並列動作可能なハードウェアブロックを備えたこれまでのシステムは、ビデオコーデック（Video Codec）において実行するデータ処理単位毎に必要となるデータを準備するための処理を、複数のハードウェアを並列に実行させて高速化を図る構成であり、このようなシステムでは、各ハードウェアにおける待機時間が発生し、効率的な処理が実現されない場合がある。
【０００７】
図１を参照して、従来の画像データの符号化、復号処理システムにおける処理シーケンスを説明する。
【０００８】
図１において、左から右に時間（ｔ）が経過している。ハードウェアブロックＡ１０１、Ｂ１０２、Ｃ１０３は、ビデオコーデック（Video Codec）１０５において実行する画像データの符号化処理、復号処理に必要となるデータの生成を行なう並列処理可能なハードウェアブロックであり、例えば、スカラー処理器、ベクトル処理器、ビットストリーム処理器などの異なる処理機能を持つハードウェアブロックである。
【０００９】
Ａ００〜Ａ０１，Ｂ００〜Ｂ０１，Ｃ００〜Ｃ０１は、それぞれのハードウェアブロックＡ〜Ｃで実行する処理単位毎の処理時間を示している。
【００１０】
例えば、１つのデータ処理単位（例えば1フレーム分のビデオコーデック（Video Codec）処理単位）の符号化または復号処理に必要となる予備処理データは、ハードウェアブロックＡ１０１、Ｂ１０２、Ｃ１０３において並列に実行されるＡ００，Ｂ００，Ｃ００に示すハードウェアブロック処理において生成される。
【００１１】
Ａ００，Ｂ００，Ｃ００に示すハードウェアブロック処理が完了すると、実際にビデオコーデック（Video Codec）１０５での符号化／復号処理を実行するための準備が完了したことをＣＰＵ１０４が検出する。この時点が図に示す情報がＱ００の時点である。
【００１２】
この準備完了時点以降に、システムクロックとは別に定義されている特定の同期信号Ｓ００の発生をトリガとして、ＣＰＵ１０４は、ビデオコーデック（Video Codec）１０５へ処理開始命令を発行する。ビデオコーデック（Video Codec）１０５は、処理開始命令の受領を条件として、ビデオコーデック（Video Codec）１０５での処理、すなわち、ハードウェアブロックＡ１０１、Ｂ１０２、Ｃ１０３において生成された予備処理データを受領して単位データの符号化または復号処理を実行する。図に示すＶ００がビデオコーデック（Video Codec）１０５での処理期間を示している。
【００１３】
この従来の方法では、次のビデオコーデック（Video Codec）処理に適用する予備処理データを生成するハードウェアブロックＡ１０１、Ｂ１０２、Ｃ１０３における処理、すなわち図に示すＡ０１，Ｂ０１，Ｃ０１に示すグループの処理は、ビデオコーデック（Video Codec）１０５での１ステップ前の処理単位の処理期間Ｖ００が完了したことをＣＰＵが通知された以後にしか実行できない。
【００１４】
すなわち、図に示す時間［Ｗ００］以降にハードウェアブロックＡ１０１、Ｂ１０２、Ｃ１０３は、次のデータ処理単位に対応する予備処理データの生成処理を開始することが可能となる。
【００１５】
したがって、実際には、各ハードウェアブロックＡ１０１、Ｂ１０２、Ｃ１０３では、次のデータ処理単位に対応する予備処理データの生成処理を実行できる状態にあるにもかかわらず、待機時間（例えばハードウェアブロックＡ１０１の待機時間：Ｔ１）が発生する。
【００１６】
この結果、ビデオコーデック（Video Codec）１０５での次のデータ処理単位に対応する符号化または復号処理が、同期信号Ｓ０２の発生後まで待たされ、図に示すように、ビデオコーデック（Video Codec）１０５においても処理期間［Ｖ０１］までの待機時間（Ｔ２）が発生してしまう。
【００１７】
このように、従来型のシステムでは、全てのハードウェアの処理完了確認後に発生するシステムクロックとは別に定義されている同期信号（Ｓｎｎ）に応じて、ビデオコーデックの処理を開始させ、ビデオコーデックの処理の完了後に次のデータ処理単位の予備処理データの生成処理を各ハードウェアに開始させるという処理を繰り返すシーケンスである。
【００１８】
このようなシーケンスを実行すると、次のビデオコーデック（Video Codec）処理を実行するための予備処理データの生成が各ハードウェアで完了していたとしても、１つ前のデータ処理単位についてのビデオコーデック（Video Codec）からの処理完了通知がない場合、ビデオコーデック（Video Codec）命令処理が待たされるばかりか、さらに次のビデオコーデック（Video Codec）命令の準備もできず、上位システム側の各ハードウェアブロックに空き時間（待ち時間）が発生することになる。
【００１９】
上述のように、従来型のハードウェアの並列処理は、ビデオコーデック（Video Codec）における処理データ単位の処理開始および終了に依存して、処理時間制御を行っていたため、各ハードウェアブロックにおける待機時間の発生など、処理効率の低下を発生させてしまうという問題がある。複数のデータ処理単位、例えばフレーム単位の画像データの符号化または復号処理を連続的に実行するシステムにおいて、このような待機時間の累積による効率低下は多大なものとなる。
【００２０】
各ハードウェアブロックが独立に処理できるような機構を提案した従来技術としては、特許文献４がある。この手法では、符号化・復号化の両処理において、各処理の準備が各ハードウェアブロックにて独立のジョブとして実行され、最終的な出力段において、あらかじめ用意しておいた時間情報を用いて、つじつまを合わせるという方法である。しかし、この方法では、あらかじめ時間情報を管理する機構が別途必要であり、アルゴリズム的にも複雑になるという問題がある。また、特許文献５には、時間管理を行う特別なタグを用いて、処理時間の保証、および、パイプラインの動作保証を行っているが、前者の方法と同様な実装の難しさが問題として残る。
【００２１】
また、より高度なシステムにおいては、通常のビデオコーデック（Video Codec）処理命令（デコード（Decode）,エンコード（Encode））とは別に、特殊命令が実装されていることが望ましい。特殊命令とは、取り消し（Cancel）、やり直し（Retry）、中断（Pause）などの命令である。これらの特殊命令を実現することができれば、画像処理システムの拡張につながる。従来技術においては、各タイムスロットで処理すべきビデオコーデック（Video Codec）命令は１つしか保持することはできない。したがって、例えば、ビデオコーデックで現在の処理中の処理を取り消す必要がある場合、取り消し後にやり直すビデオコーデック（Video Codec）処理用に、各ハードウェアで準備していた各種情報の再処理が必要となる。
【００２２】
従来の構成においては、図１を参照して説明したように、ビデオコーデック（Video Codec）処理の完了通知が無いと、各ハードウェアは次の処理に移れないため、各ハードウェアでの再処理の開始も、ビデオコーデック（Video Codec）処理の完了通知の待機後にずれこむことになる。
【００２３】
このように、従来のハードウェアの並列処理による処理高速化を図った画像処理システムでは、様々なポイントで無駄な待機時間を発生させており、各ハードウェア処理ブロックおよびビデオコーデックを適用した効率的なパイプライン処理が実現されていなかった。
【特許文献１】特開平１０−９３９６１号公報
【特許文献２】特開平５−３５８３５号公報
【特許文献３】特開平６−２４２９０７号公報
【特許文献４】特開２００３−２３６２６号公報
【特許文献５】特許公表平４−５０３５８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明は、上述の問題点に鑑みてなされたものであり、並列処理可能なハードウェアとビデオコーデックとの組み合わせによる符号化処理または復号処理を実行する画像処理システムにおいて、個々のハードウェアブロックまたはビデオコーデックにおける待機時間を削減し、高速かつ効率的な処理を可能とした画像処理装置、および画像処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の第１の側面は、
データのエンコード処理またはデコード処理を実行する画像処理装置であり、
コーデック手段におけるデータのエンコード処理またはデコード処理に適用する予備処理データを生成する並列動作可能な複数のハードウェア手段と、
前記複数のハードウェア手段の生成した予備処理データを入力し、データのエンコード処理またはデコード処理を実行するコーデック手段と、
前記コーデック手段に対する処理開始命令を出力し、エンコード処理またはデコード処理のシーケンス制御を実行する処理制御手段とを有し、
前記処理制御手段は、
前記コーデック手段における処理を開始することが可能な予備処理データが準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定し、前記キューの設定情報順に従って、順次、前記コーデック手段に対する処理開始命令を出力する構成を有することを特徴とする画像処理装置にある。
【００２６】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、同期信号の発生を条件として、前記コーデック手段に対する処理開始命令を出力する処理を実行する構成であることを特徴とする。
【００２７】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、同期信号の発生を条件として、前記コーデック手段に対する処理開始命令を出力する処理を実行する構成であり、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段に対する処理開始命令を複数出力する処理を実行する構成であることを特徴とする。
【００２８】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段からの処理完了通知を受領したことを条件として、前記コーデック手段に対して、前記キューに設定された情報に基づいて決定される後続の処理開始命令を出力する処理を実行する構成であることを特徴とする。
【００２９】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、前記コーデック手段の処理態様の異なる処理に対応して、前記コーデック手段の処理待ち行列としての複数のキューを設定し、異なるキューを順次選択し、該選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力する構成であることを特徴とする。
【００３０】
さらに、本発明の画像処理装置の一実施態様において、前記コーデック手段の処理態様の異なる処理は、エンコード処理およびデコード処理であり、前記処理制御手段は、エンコード処理待ち行列としてのエンコード処理キューと、デコード処理待ち行列としてのデコード処理キューとを設定し、該２つの異なるキューを交互に選択し、選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力する構成であることを特徴とする。
【００３１】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、同期信号の発生を条件として、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段が実行予定のデータ処理単位情報を、前記キューに基づいて決定し、該決定情報をエントリとして設定したビデオコーデックリストを生成し、前記コーデック手段からの処理完了通知の受領に基づいて、前記ビデオコーデックリストに設定された完了処理に対応するエントリの削除処理を実行する構成であることを特徴とする。
【００３２】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行し、前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断し、前記同期信号によって規定される後続タイムスロットにおいて、前記ビデオコーデックに対する新たな処理命令の出力を中止する構成を有することを特徴とする。
【００３３】
さらに、本発明の画像処理装置の一実施態様において、前記処理制御手段は、同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行し、前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断し、前記同期信号によって規定される後続タイムスロットにおける前記ビデオコーデックの実行予定処理として、前記未完了の処理に続く処理を前記キューに基づいて追加する再スケジューリング処理を実行し、追加した処理情報の対応エントリを前記ビデオコーデックリストに設定し、前記後続タイムスロットにおいて、前のタイムスロットの実行予定処理が完了した際に、前記ビデオコーデックリストに追加設定したエントリに対応する処理の開始命令を前記ビデオコーデックに出力する構成を有することを特徴とする。
【００３４】
さらに、本発明の第２の側面は、
データのエンコード処理またはデコード処理を実行する画像処理方法であり、
並列動作可能な複数のハードウェア手段において、コーデック手段におけるデータのエンコード処理またはデコード処理に適用する予備処理データを生成する予備処理データ生成ステップと、
コーデック手段において、前記予備処理データを入力し、データのエンコード処理またはデコード処理を実行するコーデックステップと、
前記コーデック手段に対する処理開始命令を出力するとともに、エンコード処理またはデコード処理のシーケンス制御を実行する処理制御ステップとを有し、
前記処理制御ステップは、
前記コーデック手段における処理を開始することが可能な予備処理データが準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定するキュー設定ステップと、
前記キューの設定情報順に従って、順次、前記コーデック手段に対する処理開始命令を出力するステップと、
を有することを特徴とする画像処理方法にある。
【００３５】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、同期信号の発生を条件として、前記コーデック手段に対する処理開始命令を出力する処理を実行するステップを含むことを特徴とする。
【００３６】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段に対する処理開始命令を複数出力するステップを含むことを特徴とする。
【００３７】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、さらに、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段からの処理完了通知を受領したことを条件として、前記コーデック手段に対して、前記キューに設定された情報に基づいて決定される後続の処理開始命令を出力する処理を実行するステップを含むことを特徴とする。
【００３８】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、前記コーデック手段の処理態様の異なる処理に対応して、前記コーデック手段の処理待ち行列としての複数のキューを設定し、異なるキューを順次選択し、該選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力するステップを含むことを特徴とする。
【００３９】
さらに、本発明の画像処理方法の一実施態様において、前記コーデック手段の処理態様の異なる処理は、エンコード処理およびデコード処理であり、前記処理制御ステップは、エンコード処理待ち行列としてのエンコード処理キューと、デコード処理待ち行列としてのデコード処理キューとを設定し、該２つの異なるキューを交互に選択し、選択キューに設定された設定情報に基づいて、順次、前記コーデック手段に対して処理開始命令を出力するステップを含むことを特徴とする。
【００４０】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、さらに、同期信号の発生を条件として、同期信号の間隔によって規定される１タイムスロット期間において、前記コーデック手段が実行予定のデータ処理単位情報を、前記キューに基づいて決定し、該決定情報をエントリとして設定したビデオコーデックリストを生成するステップと、前記コーデック手段からの処理完了通知の受領に基づいて、前記ビデオコーデックリストに設定された完了処理に対応するエントリの削除処理を実行するステップと、を有することを特徴とする。
【００４１】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、さらに、同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行するステップと、前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断し、前記同期信号によって規定される後続タイムスロットにおいて、前記ビデオコーデックに対する新たな処理命令の出力を中止するステップとを有することを特徴とする。
【００４２】
さらに、本発明の画像処理方法の一実施態様において、前記処理制御ステップは、同期信号の発生を条件として、該同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であるか否かを前記ビデオコーデックリストのエントリ有無に基づいて判定する処理を実行するステップと、前記ビデオコーデックリストにエントリが残っている場合は、前記同期信号発生前のタイムスロットに実行予定であったビデオコーデック処理が未完了であると判断するステップと、前記同期信号によって規定される後続タイムスロットにおける前記ビデオコーデックの実行予定処理として、前記未完了の処理に続く処理を前記キューに基づいて追加する再スケジューリング処理を実行し、追加した処理情報の対応エントリを前記ビデオコーデックリストに設定し、前記後続タイムスロットにおいて、前のタイムスロットの実行予定処理が完了した際に、前記ビデオコーデックリストに追加設定したエントリに対応する処理の開始命令を前記ビデオコーデックに出力するステップとを有することを特徴とする。
【００４３】
さらに、本発明の第３の側面は、
データのエンコード処理またはデコード処理制御を実行するコンピュータ・プログラムであり、
並列動作可能な複数のハードウェア手段において、コーデック手段におけるデータのエンコード処理またはデコード処理に適用する予備処理データを生成する予備処理データ生成ステップと、
コーデック手段において、前記予備処理データを入力し、データのエンコード処理またはデコード処理を実行するコーデックステップと、
前記コーデック手段に対する処理開始命令を出力するとともに、エンコード処理またはデコード処理のシーケンス制御を実行する処理制御ステップとを有し、
前記処理制御ステップは、
前記コーデック手段における処理を開始することが可能な予備処理データが準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定するキュー設定ステップと、
前記キューの設定情報順に従って、順次、前記コーデック手段に対する処理開始命令を出力するステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４４】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００４５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４６】
本発明の構成によれば、コーデック手段における処理を開始することが可能な予備処理データが、並列動作可能な複数のハードウェア手段によって準備されたことを条件として、コーデック手段の処理待ち行列としてのキューを設定し、キューの設定情報順に従って、順次、コーデック手段に対して処理開始命令を出力する構成としたので、特定の同期信号や、コーデック手段の処理とは無関係に、各ハードウェアにおける予備処理データの生成処理を進行させることが可能となり、効率的な高速処理が実現される。
【００４７】
さらに、本発明の構成によれば、同期信号区間として定義される各タイムスロットにおいて複数のコーデック処理を実行させることが可能であり、より高速な処理が実現される。
【００４８】
また、本発明の構成によれば、各タイムスロットにおいて実行予定のコーデック処理が予定タイムスロット期間に終了できなかった場合に、次のタイムスロットで継続実行させる構成としたので、破綻のない処理が実現される。さらに、本発明の構成によれば、各タイムスロットにおいて実行予定のコーデック処理が予定タイムスロット期間に終了できなかった場合に、次のタイムスロットで実行する処理を再スケジューリングする構成としたので、処理遅れを解消し、破綻を防止するとともに高速処理を実現することが可能となる。
【００４９】
本発明の構成では、ビデオコーデック（Video Codec）処理システムに実行させる命令群を、上位システム側にてキュー登録してスケジューリングしている。したがって、現在のタイムスロット以降で処理すべき命令についても、キューに登録されることが許容される。これにより、対象タイムスロット中の処理以外に影響する例えば、取り消し（Cancel）、やり直し（Retry）、中断（Pause）といった特殊なシステム制御系の命令が発生した場合にも、必要な予備処理データの取り出しが即座に実行可能であり、このような付加的な高度なデータ処理にも対応することが可能となる。
【発明を実施するための最良の形態】
【００５０】
以下、図面を参照しながら本発明の画像処理装置、および画像処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【実施例１】
【００５１】
まず、図２を参照して本発明の画像処理装置の構成について説明する。本発明の画像処理装置は、ビデオコーデック（Video Codec）２４０で実行する符号化処理または復号処理に適用する予備処理データの生成を行なう複数のハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３を備えるとともに、画像処理のシーケンス制御を実行する処理制御手段としてのＣＰＵ２２１と、特定の処理タイムスロットの定義のための同期信号を発生する同期信号発生部２２２と、割り込み処理制御部（ＩＮＴ）２２３を持つ上位システム２００と、複数のハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３において生成した予備処理データを適用したデータ符号化処理または復号処理を実行するビデオコーデック（Video Codec）２４０と、ハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３において生成した予備処理データの格納、ビデオコーデック（Video Codec）２４０の生成したデータの格納に適用するメモリ（ＳＤＲＡＭ）２３０を有する。
【００５２】
システム全般のスケジューリングは、組み込み型のリアルタイムＯＳ（ＲＴＯＳ）が稼動する処理制御手段としてのＣＰＵ２２１が担当する。リアルタイムＯＳは、リアルタイム処理能力を持つマルチタスクＯＳであり、他処理の終了を待つことなく、予め決められた時間内（例えば１０μｓｅｃ〜１０ｍｓｅｃ）に確実にイベントハンドラを起動させて高速処理を実現するＯＳである。
【００５３】
ハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３は、ビデオコーデック（Video Codec）２４０で実行する符号化処理または復号処理に適用する予備処理データの生成を行なうハードウェアであり、並列動作可能なハードウェアである。
【００５４】
ハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３は、例えば、マルチプレクサ／デマルチプレクサ（MUX/DEMUX）、フレームメモリマネージャ、スカラー処理器、ベクトル処理器、ビットストリーム処理器などである。本実施例では３つの並列動作可能なハードウェアブロックＡ〜Ｃを持つ構成を例として説明するが、これらのハードウェア処理ブロックは３つとは限らずシステム仕様によって異なる数に設定可能である。
【００５５】
並列動作可能なハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３の生成した予備処理データは、メモリ２３０に格納される。ビデオコーデック（Video Codec）２４０は、上位システム２００のＣＰＵ２２１から、割り込み処理制御部２２３を介して処理開始命令を受領し、処理開始命令の受領を条件として、メモリ２３０に格納されたハードウェア処理ブロックＡ，２１１、Ｂ２１２，Ｃ２１３の生成した予備処理データを取り出して、データの符号化または復号処理を実行し、実行結果をメモリ２３０に格納する。
【００５６】
なお、図２に示す画像処理装置における処理実行結果として取得される符号化データは、例えば図示しないハードディスク等の大容量記憶手段に格納されたり、あるいは通信手段を介して外部出力される。また、図２に示す画像処理装置における処理実行結果として取得される復号データは、例えば図示しないディスプレイに出力される。
【００５７】
図２に示す画像処理装置において、システム全般のスケジューリングは、前述したように組み込み型のリアルタイムＯＳが稼動するＣＰＵ２２１が担当する。図３を参照して、本発明の画像処理装置において実行するデータの符号化または復号処理シーケンスについて説明する。
【００５８】
図３において、左から右に時間（ｔ）が経過している。ハードウェアブロックＡ２１１、Ｂ２１２、Ｃ２１３は、図２に示す上位システム２００内の並列動作可能なハードウェアブロックに対応する。これらのハードウェアブロックＡ２１１、Ｂ２１２、Ｃ２１３は、ビデオコーデック（Video Codec）２４０において実行する画像データの符号化処理、復号処理に必要となるデータの生成を行なう。処理制御手段としてのＣＰＵ２２１は、処理タイムスロットの定義のための同期信号を発生する同期信号発生部２２２からの同期信号Ｓ１０，Ｓ１１，Ｓ１２・・を受領し、同期信号Ｓｎｎの受領を条件として、ビデオコーデック２４０に対する処理命令を出力する。同期信号Ｓ１０とＳ１１の間隔は、一定間隔であり、これを１タイムスロット期間と定義する。
【００５９】
Ａ１０〜Ａ１１，Ｂ１０〜Ｂ１１，Ｃ１０〜Ｃ１１は、それぞれのハードウェアブロックＡ〜Ｃで実行する処理を示しており、矩形部の左端が処理開始時間、矩形部の右端が処理終了時間に対応する。矩形の横方向の長さが処理時間を示している。
【００６０】
例えば、1フレーム分のビデオコーデック（Video Codec）処理単位など、１つのデータ処理単位の符号化または復号処理に必要となる１組の予備処理データは、ハードウェアブロックＡ２１１、Ｂ２１２、Ｃ２１３において並列に実行される処理［Ａ１０，Ｂ１０，Ｃ１０］の結果として得られるデータ、あるいは処理［Ａ１１，Ｂ１１，Ｃ１１］の結果として得られるデータであり、これらは、図２に示すメモリ２３０に一時的に格納される。
【００６１】
各ハードウェアブロックＡ〜Ｃにおいて実行する最初のデータ処理単位に対応する処理（Ａ１０，Ｂ１０，Ｃ１０）が完了すると、ＣＰＵ２２１は、スケジューリング処理の一環として、各ハードウェアブロックＡ〜Ｃにおいて生成した予備処理データを適用したビデオコーデック（Video Codec）２４０における符号化または復号処理プロセスの処理待ち行列としてのキューを設定する。例えば図に示すキュー３０１のような構成を持つキューを設定する。ＣＰＵ２２１は、ビデオコーデック（Video Codec）２４０における処理を開始することが可能な予備処理データが各ハードウェアブロックＡ〜Ｃによって準備されたことを条件として、前記コーデック手段の処理待ち行列としてのキューを設定する。
【００６２】
キュー３０１のＱ１０は、各ハードウェアブロックＡ〜Ｃにおいて実行された最初のデータ処理単位に対応する処理（Ａ１０，Ｂ１０，Ｃ１０）の結果としての予備処理データ、または予備処理データに対応するバス情報に対応付けられている。ビデオコーデック（Video Codec）２４０は、キューに従って、各ハードウェアの生成した予備処理データを、Ｑ１０→Ｑ１１→・・・のキュー設定順に取り出して、取り出した予備処理データに基づく符号化処理または復号処理を、順次実行する。
【００６３】
キュー３０１に設定されるキュー情報Ｑ１０，Ｑ１１・・は、各ハードウェアブロックＡ〜Ｃにおいて生成した予備処理データの生成順に対応付けられており、ビデオコーデック（Video Codec）２４０は、キュー３０１の先頭から順番に、キュー情報を取り出し、キュー情報に対応付けられた各ハードウェアの生成した予備処理データをメモリ２３０から取得して符号化または復号処理を実行する。ビデオコーデック（Video Codec）２４０によって処理の開始された予備処理データに対応するキュー情報は、ビデオコーデック（Video Codec）２４０からの処理終了通知をＣＰＵ２２１が受領した時点で削除される。例えば、キュー３０１の先頭から削除され、第２番目のキュー情報が先頭に繰り上がる。すなわち図３に示すキュー３０１のキュー情報Ｑ１０に対応する予備処理データ［Ａ１０，Ｂ１０，Ｃ１０］に基づく符号化あるいは復号処理がビデオコーデック（Video Codec）２４０において終了すると、キュー３０１からキュー情報Ｑ１０は削除され、Ｑ１１がキュー３０１の先頭に設定される。なお、このキュー更新処理は、ＣＰＵ２２１が実行する。
【００６４】
このキュー設定および更新処理を実行することにより、従来の方法で発生していた、ビデオコーデック（Video Codec）２４０からの完了通知の待ち合わせ期間が不要となり、各ハードウェアブロックＡ〜Ｃにおける次のデータ処理単位に対応する予備処理データの生成処理、すなわち、図３に示すＡ１１，Ｂ１１，Ｃ１１の各処理が各ハードウェアブロックＡ〜Ｃにおいて、ビデオコーデック（Video Codec）からの完了通知を待つことなく開始できる。
【００６５】
特に、図３に示す例では、ハードウェアブロックＣ２１３は、最初のデータ処理単位のビデオコーデック（Video Codec）２４０の処理である［Ｖ１０］の完了通知を、ＣＰＵ２２１が受領する前に、次の処理単位に対応する予備処理データの生成処理［Ｃ１１］が完了する。
【００６６】
このようにキューの設定により、各ハードウェアブロックＡ〜Ｃは、ビデオコーデック（Video Codec）２４０からの完了通知を待機することなく、次のデータ処理単位に対する処理に移行することができる。
【００６７】
先に、図１を参照して説明した待ち合わせ期間を必要とするシーケンスと比較すると、本発明のシーケンスによりシステム全体の画像処理の効率化を実現していることが証明される。なお、従来の処理方法を示す図１と本発明の手法である図３において、各ハードウェアブロックＡ〜Ｃの担当する処理は全く同じであり、図１における同期信号Ｓ００〜Ｓ０２と、図３における同期信号Ｓ１０〜Ｓ１２とは同一タイミングで発生しているという前提とする。
【００６８】
図１では、１つ目のデータ処理単位に対応するビデオコーデック（Video Codec）の処理［Ｖ００］が同期信号［Ｓ００］の後に設定された後、２つ目のデータ処理単位に対応するビデオコーデック（Video Codec）の処理［Ｖ０１］は、同期信号［Ｓ０１］の後ではなく、その後の同期信号［Ｓ０２］の後に設定される。
【００６９】
本発明のキュー設定方式では、１つ目のデータ処理単位に対応するビデオコーデック（Video Codec）の処理［Ｖ１０］が同期信号［Ｓ１０］の後に設定された後、２つ目のデータ処理単位に対応するビデオコーデック（Video Codec）の処理［Ｖ１１］は、同期信号［Ｓ１１］の後、すなわち、同期信号［Ｓ１２］の前に設定され、図１に示す従来方式に比較すると、２つ目のデータ処理単位のビデオコーデック（Video Codec）処理が１タイムスロット分早く処理されることになる。
【００７０】
データ処理単位は例えば１フレームの画像データであり、例えば映画データなど、多数のフレーム処理を必要とする場合、本発明の構成の適用による処理時間の削減効果は大きなものとなる。すなわち、より大規模な上位システムへの実装の際に、より多くのタイムスロット数削減につながる可能性を持つ。
【００７１】
本発明の構成では、上述したように、ビデオコーデック（Video Codec）に実行させる命令群を、上位システム側にてキュー登録してスケジューリングしている。したがって、現在のタイムスロット以降で処理すべき命令についても、キューに登録されることが許容される。これにより、対象タイムスロット中の処理以外に影響する例えば、取り消し（Cancel）、やり直し（Retry）、中断（Pause）といった特殊なシステム制御系の命令が発生した場合にも、必要な予備処理データの取り出しが即座に実行可能であり、このような付加的な高度なデータ処理にも対応することが可能となる。
【００７２】
図４を参照して、本実施例１における処理制御手段としてのＣＰＵ２２１の処理手順について説明する。ステップＳ１０１において、並列動作可能な各ハードウェアブロックの生成した予備処理データを受領すると、ステップＳ１０２において、ＣＰＵは、キューの設定を実行する。図３に示したキュー３０１である。
【００７３】
ステップＳ１０１、ステップＳ１０２の処理は、ビデオコーデック（Video Codec）２４０の処理の進行状況に関わらず、繰り返し実行される。
【００７４】
ステップＳ１０３において同期信号［Ｓｎｎ］が発生すると、ステップＳ１０４においてＣＰＵは、設定キューに基づいて、符号化または復号処理開始命令をビデオコーデック（Video Codec）２４０に対して出力する。ビデオコーデック（Video Codec）２４０において実行する処理は、キューの先頭に設定されたキュー情報に対応付けられた予備データに基づく符号化または復号処理である。
【００７５】
ステップＳ１０５において、未処理データがあるか否かを判定する。これは、キューに設定されたキュー情報が存在するか否かの判定処理として実行する。キュー情報が存在する場合は、ステップＳ１０３において同期信号の発生を待ち、ステップＳ１０４において、キューの先頭に設定されたキュー情報に基づく符号化または復号処理の処理開始命令をビデオコーデック（Video Codec）に出力する。この処理をキューにキュー情報がなくなるまで繰り返し実行する。
【実施例２】
【００７６】
実施例１では、効率的な処理を可能とするため、キューを設定した構成を説明したが、実施例２では、より拡張された機能により、さらに高速な処理を可能とする構成について説明する。なお、実施例２も実施例１で説明した図２の構成を持つ画像処理装置が適用される。
【００７７】
図５を参照して、本実施例の画像処理装置において実行する処理シーケンスを説明する。本実施例の画像処理装置のビデオコーデック２４０は、各タイムスロット期間で２つのデータ処理単位の符号化または復号処理を実行する。例えば１データ処理単位が１フレーム画像データである場合、２フレーム分の画像データに対応する符号化または復号処理を実行する。
【００７８】
図５に示すように、処理制御手段としてのＣＰＵ２２１は、例えば同期信号Ｓ２０の発生を条件として、ビデオコーデック２４０に対して２つのデータ処理単位に対応するデータの符号化または復号処理の実行命令を出力する。ビデオコーデック２４０は、１つのタイムスロット期間で２つのデータ処理単位に対応する処理［Ｖ２０］、［Ｖ２１］を実行する。
【００７９】
この処理を実現するために、各ハードウェアブロックＡ２１１，Ｂ２１２，Ｃ２１３が、第１データ処理単位に対応する処理［Ａ２０］，［Ｂ２０］，［Ｃ２０］によって生成した予備処理データ１と、第２データ処理単位に対応する処理［Ａ２１］，［Ｂ２１］，［Ｃ２１］によって生成した予備処理データ２について、ＣＰＵ２２１は、連続するキューＱ２０，Ｑ２１として設定し、ＣＰＵ２２１は、連続するキューＱ２０，Ｑ２１に対応する２つのデータ処理単位の符号化または復号を実行するように、同期信号Ｓ２０の発生をトリガとして、ビデオコーデック（Video Codec）２４０に対して処理開始命令を出力する。
【００８０】
この設定により、ビデオコーデック（Video Codec）２４０は、２つのデータ処理単位に対応する符号化または復号処理［Ｖ２０］，［Ｖ２１］を同じタイムスロット期間中に実行する。
【００８１】
なお、次に処理されることになる各ハードウェアブロックの予備処理データ生成処理であるＡ２２，Ｂ２２，Ｃ２２を含め、全てのハードウェアブロックにおける処理は、ビデオコーデック（Video Codec）２４０の処理（Ｖ２０，Ｖ２１，Ｖ２２）の完了通知に依存することなく実行可能であり、待機時間が不要となることは、前述した実施例１と同様である。
【００８２】
本実施例の構成によれば、２つのデータ処理単位の符号化または復号処理を１つの同期信号期間（タイムスロット期間）において実行するので、より高速な処理が可能となる。なお、システム仕様によっては、１つの同期信号期間（タイムスロット期間）において実行する処理として２つのデータ処理単位に限らず３以上のデータ処理単位として設定することも可能である。
【００８３】
図６を参照して、本実施例２における処理制御手段としてのＣＰＵ２２１の処理手順について説明する。ステップＳ２０１において、並列動作可能な各ハードウェアブロックの生成した予備処理データを受領すると、ステップＳ２０２において、ＣＰＵは、キューの設定を実行する。図３に示したキュー３０１である。
【００８４】
ステップＳ２０１、ステップＳ２０２の処理は、ビデオコーデック（Video Codec）２４０の処理の進行状況に関わらず、繰り返し実行される。
【００８５】
ステップＳ２０３において同期信号［Ｓｎｎ］が発生すると、ステップＳ２０４において、ＣＰＵは、まずステップＳ２０４ａにおいて設定キューに基づいて、符号化または復号処理開始命令をビデオコーデック（Video Codec）２４０に対して出力する。さらに、ステップＳ２０４ｂにおいて、ビデオコーデック（Video Codec）２４０からの処理完了通知を受領すると、ステップＳ２０３ａに戻り、さらに次の処理命令をキューから取得してビデオコーデック（Video Codec）２４０に出力する。
【００８６】
すなわち、ビデオコーデック（Video Codec）２４０は、１タイムスロット期間において２つの処理単位の符号化または復号処理を実行する。なお、２つの処理に限らず、３以上の処理を行なう設定としてもよい。１タイムスロット期間が経過したことを同期信号の発生に基づいて検出すると、ステップＳ２０５に進む。
【００８７】
次に、ステップＳ２０５において、未処理データがあるか否かを判定する。これは、キューに設定されたキュー情報が存在するか否かの判定処理として実行する。キュー情報が存在する場合は、ステップＳ２０３において同期信号の発生を待ち、ステップＳ２０４において、キューの先頭に設定されたキュー情報に基づく符号化または復号処理の処理開始命令をビデオコーデック（Video Codec）に繰り返し出力する。
【００８８】
ステップＳ２０５において、キューに設定されたキュー情報が存在しないことが確認されると、処理が終了する。
【実施例３】
【００８９】
次に、本発明の画像処理における第３の実施例について説明する。実施例３では、ビデオコーデック（Video Codec）２４０が、各タイムスロット期間で、複数の異なる態様のビデオデータのコーデック処理（符号化または復号処理）を実行する構成例を説明する。なお、実施例３も実施例１で説明した図２の構成を持つ画像処理装置が適用される。
【００９０】
図７を参照して、本実施例の画像処理装置において実行する処理シーケンスを説明する。この実施例３の画像処理では、各ハードウェアブロックＡ〜Ｃの処理結果データ、すなわち、各処理データ単位の予備処理データは処理系統ごとに管理される。なお、図７においては、ハードウェアブロックＡ〜Ｃを１つにまとめて示してあるが、これらは、それぞれが並列動作可能なハードウェアブロックであり、実施例１，２と同様に個別に予備処理データ生成処理を実行しているものである。
【００９１】
図７に示す「Ａ２０，Ｂ２０，Ｃ２０」は、あるデータ処理単位のハードウェアブロックＡ〜Ｃで実行するエンコード（Encode）に関する予備処理データ生成処理期間３１１を示している。「Ａ２１，Ｂ２１，Ｃ２１」は、あるデータ処理単位のハードウェアブロックＡ〜Ｃで実行するデコード（Decode）に関する予備処理データ生成処理期間３１２を示している。
【００９２】
処理制御手段としてのＣＰＵ２２１は、エンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２のキューを別々に設定する。
【００９３】
ビデオコーデック（Video Codec）２４０は、各タイムスロット期間において、エンコード（Encode）とデコード（Decode）を各々１命令ずつ実行可能なシステムである。第１エンコード処理単位に対応する予備処理データ「Ａ２０，Ｂ２０，Ｃ２０」は、エンコード（Encode）用キュー３５１にキューＱ２０として設定される。
【００９４】
第１デコード処理単位に対応する予備処理データ「Ａ２１，Ｂ２１，Ｃ２１」は、デコード（Decode）用キュー３５２にキューＱ２１として設定される。
【００９５】
次の第２エンコード処理単位に対応する予備処理データ「Ａ２２，Ｂ２２，Ｃ２２」は、エンコード（Encode）用キュー３５１にキューＱ２２として設定される。
【００９６】
このようなキューの設定状態において、ＣＰＵ２２１は、各同期信号［Ｓ２０］，［Ｓ２１］を受けた段階でスケジューリング処理を実行し、エンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２の各キューに設定された予備処理データを１つずつ適用した符号化（エンコード（Encode））と、復号化（デコード（Decode））を実行するように、処理開始命令をビデオコーデック（Video Codec）２４０に出力する。なお、エンコード（Encode）用キュー３５１と、デコード（Decode）用キュー３５２から情報を取り出し、１タイムスロット期間に処理する命令のスケジューリング処理は、ＣＰＵ２２１が実行する。
【００９７】
ＣＰＵ２２１のスケジューリングに基づいて、ビデオコーデック（Video Codec）２４０は、エンコード（Encode）用キュー３５１の設定順に、エンコード処理用予備処理データに対するエンコード処理を実行し、さらに、デコード（Decode）用キュー３５２の設定順に、デコード処理用予備処理データに対するデコード処理を実行する。
【００９８】
例えば、図に示す同期信号［Ｓ２０］の発生を条件として、ＣＰＵ２２１は、ビデオコーデック２４０に対してエンコードおよびデコード処理開始命令を発行する。この処理開始命令を受領したビデオコーデック（Video Codec）２４０は、エンコード（Encode）用キュー３５１の設定順に、エンコード処理用予備処理データに対するエンコード処理［Ｖ２０］を実行し、さらに、デコード（Decode）用キュー３５２の設定順に、デコード処理用予備処理データに対するデコード処理［Ｖ２１］を実行する。
【００９９】
なお、ＣＰＵ２２１は、同期信号の発生を条件として、同期信号の間隔によって規定される１タイムスロット期間において、ビデオコーデック（Video Codec）２４０が実行予定のデータ処理単位情報を、キューに基づいて決定し、該決定情報をエントリとして設定したビデオコーデックリスト３５３を設定し、ビデオコーデック（Video Codec）２４０において実行されている処理の管理を行なう。
【０１００】
本実施例では、上述したように、複数の異なる処理に適用する予備処理データをそれぞれ対応付けた複数のキューを設定し、ＣＰＵ２２１のスケジューリングに基づいて、ビデオコーデックが各キューの設定順に各処理を実行することにより、異なる処理を効率的に、順次実行することが可能となる。
【０１０１】
なお、エンコード処理とデコード処理とを並列に実行する処理としては、例えばネットワークを介して受信するコンテンツデータを符号化（エンコード）してハードディスク等の記憶媒体に格納する処理と、記録した符号化データを読み出して復号（デコード）し、再生する処理を並列に行なう場合などが想定される。
【０１０２】
図８を参照して、本実施例３における処理制御手段としてのＣＰＵ２２１の処理手順について説明する。ステップＳ３０１において、並列動作可能な各ハードウェアブロックの生成した予備処理データを受領すると、ステップＳ３０２において、ＣＰＵは、ビデオコーデック（Video Codec）２４０の処理態様に応じた複数のキューの設定を実行する。図７に示すエンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２である。
【０１０３】
ステップＳ３０１、ステップＳ３０２の処理は、ビデオコーデック（Video Codec）２４０の処理の進行状況に関わらず、繰り返し実行される。
【０１０４】
ステップＳ３０３において同期信号［Ｓｎｎ］が発生すると、ステップＳ３０４において、ＣＰＵは、まずステップＳ３０４ａにおいて、エンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２のいずれかの設定キューに基づいて、符号化または復号処理開始命令をビデオコーデック（Video Codec）２４０に対して出力する。さらに、ステップＳ２０４ｂにおいて、ビデオコーデック（Video Codec）２４０からの処理完了通知を受領すると、ステップＳ２０３ａに戻り、さらに別のキューの処理命令をキューから取得してビデオコーデック（Video Codec）２４０に出力する。
【０１０５】
すなわち、ビデオコーデック（Video Codec）２４０は、１タイムスロット期間において１つの処理単位の符号化処理と、１つの処理単位の復号処理を実行する。なお、システム仕様によっては、１つの同期信号期間（タイムスロット期間）において実行する処理として２つのデータ処理単位に限らず３以上のデータ処理単位として設定することも可能である。１タイムスロット期間が経過したことを同期信号の発生に基づいて検出すると、ステップＳ３０５に進む。
【０１０６】
次に、ステップＳ３０５において、未処理データがあるか否かを判定する。これは、キュー、すなわちエンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２に設定されたキュー情報が存在するか否かの判定処理として実行する。キュー情報が存在する場合は、ステップＳ３０３において同期信号の発生を待ち、ステップＳ３０４において、キューの先頭に設定されたキュー情報に基づく符号化または復号処理の処理開始命令をビデオコーデック（Video Codec）に繰り返し出力する。
【０１０７】
ステップＳ３０５において、キューに設定されたキュー情報が存在しないことが確認されると、処理が終了する。
【実施例４】
【０１０８】
次に、本発明の画像処理における第４の実施例について説明する。実施例４は、先に図５を参照して説明した実施例２の改良版である。なお、実施例４も実施例１で説明した図２の構成を持つ画像処理装置が適用される。
【０１０９】
先に説明したように、実施例２に係る画像処理装置のビデオコーデック（Video Codec）２４０が、各タイムスロット期間で２つのデータ処理単位の符号化または復号処理を実行する例である。例えば１データ処理単位が１フレーム画像データである場合、２フレーム分の画像データに対応する符号化または復号処理を実行する。
【０１１０】
しかし、ビデオコーデック（Video Codec）２４０において、２つのデータ処理単位の符号化または復号処理を１タイムスロット期間で完了しないという事態が発生する場合がある。このような事態に対応する処理構成を実施例４として説明する。
【０１１１】
２つのデータ処理単位の符号化または復号処理を１タイムスロット期間で完了しない例について、図９を参照して説明する。
【０１１２】
図９に示すように、処理制御手段としてのＣＰＵ２２１は、例えば同期信号Ｓ３０の発生を条件として、ビデオコーデック２４０に対して２つのデータ処理単位に対応するデータの符号化または復号処理の実行命令を出力する。ビデオコーデック２４０は、１つのタイムスロット期間［Ｓ３０］で２つのデータ処理単位に対応する処理［Ｖ３０］、［Ｖ３１］を実行しようとするが、処理［Ｖ３１］が終了する前にタイムスロット期間［Ｓ３０］が終了し、次のタイムスロット期間［Ｓ３１］が開始してしまっている。
【０１１３】
ビデオコーデック（Video Codec）２４０が実行する符号化処理または復号処理において、画像サイズの影響や処理の複雑さにより、処理時間が長くなり、図に示すように、処理［Ｖ３１］の処理中に次の同期信号［Ｓ３１］が発生してしまうといったことは想定されるものである。
【０１１４】
このような事態に対する対処構成を持つ実施例４の画像処理シーケンスについて、図１０を参照して説明する。
【０１１５】
図１０に示す処理シーケンスは、ビデオコーデック（Video Codec）２４０が実行する符号化処理または復号処理が１つのタイムスロット内で完了しない場合に、その未完了の処理を次のタイムスロットで優先的に処理を行い、後続の処理を次のタイムスロットにずらすという「間引き処理」を実行する構成である。
【０１１６】
図１０において、ビデオコーデック（Video Codec）２４０は、同期信号［Ｓ４０］によって規定される１タイムスロット期間において、ハードウェアブロックの処理（Ａ４０，Ｂ４０，Ｃ４０）によって生成した予備処理データを適用した処理［Ｖ４０］と、ハードウェアブロックの処理（Ａ４１，Ｂ４１，Ｃ４１）によって生成した予備処理データを適用した処理［Ｖ４１］とを実行する予定であったが、処理［Ｖ４１］の実行中に次の同期信号［Ｓ４１］が発生した。
【０１１７】
この場合、処理制御手段としてのＣＰＵ２２１は、同期信号［Ｓ４１］の発生を条件として発行するビデオコーデック（Video Codec）２４０に対する処理開始命令の出力前に、前回のタイムスロット期間にビデオコーデック（Video Codec）２４０に対して発行済みの処理命令に対応する処理が完了しているか否かを判定し、完了していない場合は、予定していた処理開始命令、すなわち、キュー［Ｑ４２］に対応する処理開始命令を停止し、この処理開始命令を後続のタイムスロット、すなわち同期信号［Ｓ４２］によって規定されるタイムスロットにずらす処理を実行する。
【０１１８】
この命令発行間引き処理によって、ビデオコーデック（Video Codec）２４０は、２つのタイムスロット、すなわち同期信号［Ｓ４０］，［Ｓ４１］で規定される２つのタイムスロットを利用してキュー［Ｑ４０］，［Ｑ４１］に対応する処理［Ｖ４０］，［Ｖ４１］を実行することが可能となる。
【０１１９】
この処理方法を実現するためには、各同期信号が発生した際に、直前のタイムスロット内でビデオコーデック（Video Codec）２４０において処理すべき処理が、全て完了しているかどうかをＣＰＵ２２１が検出する必要がある。
【０１２０】
ＣＰＵ２２１は、各ハードウェアブロックの処理結果を保持するキューとは別に、スケジューリングの段階で、タイムスロット期間で処理すべき命令のみからなるビデオコーデックリスト３６１を設定し、ビデオコーデックリスト３６１に設定されたキュー情報に基づいて、各同期信号をトリガとしてビデオコーデック（Video Codec）２４０に出力する処理開始命令を決定する。ＣＰＵ２２１は、同期信号の発生を条件として、同期信号の間隔によって規定される１タイムスロット期間において、ビデオコーデック（Video Codec）２４０が実行予定のデータ処理単位情報を、キューに基づいて決定し、該決定情報をエントリとして設定したビデオコーデックリスト３６１を設定する。
【０１２１】
ＣＰＵ２２１は、同期信号を受けスケジューリング処理が発生すると、処理命令をシーケンシャルに設定したキュー、例えばエンコード（Encode）用キューとデコード（Decode）用キューの先頭に登録されたキュー情報をビデオコーデックリスト３６１に順番に登録する。
【０１２２】
このビデオコーデックリスト３６１に登録する順序は、想定するシステムによって異なるが、例えばＣＰＵ２２１での書くハードウェアブロックからの予備処理データの受け取り順、あるいは、エンコード（Encode）とデコード（Decode）の依存関係順などの設定が可能である。
【０１２３】
ビデオコーデックリスト３６１に登録された命令に対応するキュー情報は、ビデオコーデック（Video Codec）２４０からの処理完了通知をＣＰＵ２２１が受けた際に、ＣＰＵ２２１においてビデオコーデックリスト３６１から削除される。このリスト更新処理により、ＣＰＵ２２１は、次の同期信号を受けた際に、ビデオコーデックリスト３６１の設定情報を参照してビデオコーデック（Video Codec）２４０に出力する処理開始命令の態様を決定することができる。
【０１２４】
例えば、ＣＰＵ２２１は、同期信号を受けた際に、ビデオコーデックリスト３６１が空であれば、次の実行予定の処理に対応するキューをエンコード（Encode）用キューとデコード（Decode）用キューの先頭から取得して、そのキュー情報をビデオコーデックリスト３６１に登録するとともに、登録キューに対応する処理開始命令をビデオコーデック（Video Codec）２４０に出力する。
【０１２５】
一方、同期信号を受けた際に、ビデオコーデックリスト３６１が空でなく、何らかのキュー情報が設定されたままである場合は、その設定状態にあるキュー情報に対応する処理が未完了であると判断し、その同期信号において規定されるタイムスロットでは、新たなキューに対応する処理命令のビデオコーデック（Video Codec）２４０に対する出力を中止し、ビデオコーデック（Video Codec）２４０において、未完了の処理をその同期信号において規定されるタイムスロットにおいて継続して実行させる。このときのビデオコーデックリストのエントリ状態は、図１０に示すビデオコーデックリスト３６１−ａからビデオコーデックリスト３６１−ｂの状態となる。
【０１２６】
すなわち、同期信号［Ｓ４１］の発生時点で、Ｑ４１に対応する処理が未完了である場合、同期信号［Ｓ４１］によって規定されるタイムスロット期間で実行する処理を示すビデオコーデックリスト３６１−ｂには、Ｑ４１のみが設定され、ビデオコーデック（Video Codec）２４０は、同期信号［Ｓ４１］によって規定されるタイムスロット期間において、Ｑ４１に対応する処理［Ｖ４１］のみを実行する。
【０１２７】
このように、ＣＰＵ２２１が、ビデオコーデックリスト３６１に基づいて、ビデオコーデック（Video Codec）２４０における処理完了状況を確認し、確認に基づいてビデオコーデック（Video Codec）２４０に対する処理開始命令の発行または中止を行なう構成としたので、破綻することのない処理が実現される。
【０１２８】
このビデオコーデックリスト３６１を使用することで、ビデオコーデック（Video Codec）２４０における処理の「やり直し」といった処理も実現可能である。すなわち、ビデオコーデック（Video Codec）２４０において実行する符号化処理または復号処理に必要な予備処理データは、ビデオコーデック（Video Codec）２４０における処理の完了通知後に削除されることになり、ビデオコーデック（Video Codec）２４０における処理完了通知前であれば、やり直し対象の処理を行うための予備処理データはメモリ２３０に格納されており、常に取得することが可能であるからである。
【０１２９】
図１１を参照して、本実施例４における処理制御手段としてのＣＰＵ２２１の処理手順について説明する。ステップＳ４０１において、並列動作可能な各ハードウェアブロックの生成した予備処理データを受領すると、ステップＳ４０２において、ＣＰＵは、キューの設定を実行する。なお、設定キューは、実施例３と同様、ビデオコーデック（Video Codec）２４０の処理態様に応じた複数のキューの設定として実行してもよい。例えば、図７に示すエンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２である。
【０１３０】
ステップＳ４０１、ステップＳ４０２の処理は、ビデオコーデック（Video Codec）２４０の処理の進行状況に関わらず、繰り返し実行される。
【０１３１】
ステップＳ４０３において同期信号［Ｓｎｎ］が発生すると、ＣＰＵは、ステップＳ４０４において、ビデオコーデック（Video Codec）２４０が１タイムスロットにおいて実行予定のキューに対応するエントリをビデオコーデックリストに設定し、キューおよびビデオコーデックリストに基づいて、符号化または復号処理開始命令をビデオコーデック（Video Codec）２４０に対して出力する。
【０１３２】
ステップＳ４０５において、同期信号の発生を検出することなく、ステップＳ４０６において、ビデオコーデック（Video Codec）２４０からの処理完了通知を受領すると、ステップＳ４０７において、ビデオコーデックリストを更新、すなわち、完了した処理に対応するエントリをビデオコーデックリストから削除する。さらに、ステップＳ４０８において、１タイムスロットにおける実行予定処理が終了したか否かを判定する。これは、ステップＳ４０４で設定したビデオコーデックリストのエントリが全て削除されたか否かを判定する処理として実行可能である。まだ、ビデオコーデックリストのエントリが残っている場合は、ステップＳ４０４以降の処理を繰り返す。
【０１３３】
ステップＳ４０５において、１タイムスロットにおいて実行予定の処理の完了通知を受領する前に、同期信号の発生を検出した場合は、ステップＳ４１０に進み、処理開始命令を出力することなく、現在の処理を継続させて、ステップＳ４０６において、ビデオコーデック（Video Codec）２４０からの処理完了通知を受領し、その後、ステップＳ４０７において、ビデオコーデックリストを更新、すなわち、完了した処理に対応するエントリをビデオコーデックリストから削除する。
【０１３４】
ステップＳ４０８において、１タイムスロットにおける実行予定処理が終了したと判定すると、ステップＳ４０９において、未処理データがあるか否かを判定する。これは、設定キュー、例えばエンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２に設定されたキュー情報が存在するか否かの判定処理として実行する。キュー情報が存在する場合は、ステップＳ４０３において同期信号の発生を待ち、ステップＳ４０４以下の処理を繰り返し実行する。
【０１３５】
ステップＳ４０９において、キューに設定されたキュー情報が存在しないことが確認されると、処理が終了する。
【実施例５】
【０１３６】
次に、本発明の画像処理における第５の実施例について説明する。実施例５は、上述の実施例４の改良版である。なお、実施例５も実施例１で説明した図２の構成を持つ画像処理装置が適用される。
【０１３７】
実施例４において説明した間引き処理による破綻防止構成は、各タイムスロットにおいて予定していたビデオコーデック（Video Codec）２４０の処理を遅延させるものであるため、システム全体の処理効率が低下することになる。
【０１３８】
遅延させる処理が、デコード（Decode）処理である場合は、デコード結果としての画像データの表示速度が遅くなるという影響のみと考えられ、出力画像の見かけ上の問題は少なく押さえることが可能であるが、エンコード（Encode）処理を遅延させると、エンコード（Encode）した情報が次のビデオコーデック（Video Codec）処理に再利用されることがあるため、許容できない影響が発生する場合がある。
【０１３９】
そこで、ビデオコーデック（Video Codec）２４０の処理が予定された処理期間において完了できない場合の第２の対処構成について、実施例５として説明する。
【０１４０】
実施例５の画像処理シーケンスについて、図１２を参照して説明する。実施例５の画像処理装置は、処理制御手段としてのＣＰＵ２２１が、各同期信号発生時に、ビデオコーデック（Video Codec）２４０の処理状況を検出し、検出したビデオコーデック（Video Codec）２４０の処理状況に応じて、各同期信号発生時にビデオコーデック（Video Codec）２４０に出力する処理開始命令を再スケジューリングして、発行する処理構成を持つ。
【０１４１】
図１２に示すように、同期信号［Ｓ５０］において規定される最初のタイムスロット期間で処理すべきビデオコーデック（Video Codec）２４０の処理［Ｖ５１］の実行途中で、次の同期信号［Ｓ５１］が発生すると、ＣＰＵ２２１は、ビデオコーデックリスト３７１を参照し、未完了の処理が残存していること判定し、同期信号［Ｓ５１］によって規定されるタイムスロットでビデオコーデック（Video Codec）２４０に実行させる処理の再スケジューリングを行なう。
【０１４２】
先の実施例４では、ビデオコーデック（Video Codec）２４０において処理の完了していない状態で、次のタイムスロットが開始、すなわち、同期信号が発生した場合は、継続中の処理を次のタイムスロットにおいて実行させる構成としていたが、本実施例５では、さらに、継続中の処理を次のタイムスロットにおいて実行させるとともに、次の処理をそのタイムスロットで実行させるために、処理スケジューリングを変更し、次に予定された処理をキューの先頭から取得してビデオコーデックリスト３７１に設定し、ビデオコーデックリスト３７１の更新を実行する。
【０１４３】
ビデオコーデックリスト３７１は、同期信号Ｓ５０の時点で、ビデオコーデックリスト３７１−ａのようにエントリＱ５０とＱ５１が設定され、ビデオコーデック（Video Codec）２４０において処理［Ｖ５０］が完了して、ＣＰＵ２２１が処理完了通知を受領すると、エントリＱ５０が削除され、一旦、エントリＱ５１のみが設定されるが、この時点で、同期信号Ｓ５１が発生すると、ビデオコーデックリスト３７１−ｂのように、新たに次の処理［Ｑ５２］に対応する新規エントリをリストに追加設定する。すなわち、同期信号［Ｓ５１］によって規定さるタイムスロット期間において、実行すべき処理として［Ｑ５１］、［Ｑ５２］が設定される。
【０１４４】
ＣＰＵは、同期信号［Ｓ５１］によって規定されるタイムスロット期間において、ビデオコーデック（Video Codec）２４０から処理［Ｖ５１］についての処理完了通知３８１を受領すると、次の処理としてキューおよびビデオコーデックリスト３７１−ｂに設定されているＱ５２に対応する符号化または復号処理の開始命令をビデオコーデック（Video Codec）２４０に出力する。
【０１４５】
これにより、ビデオコーデック（Video Codec）２４０では処理［Ｖ５２］が処理［Ｖ５１］の完了後にすぐに開始される。さらに、ビデオコーデック（Video Codec）２４０において最適な処理が行われた場合、次の同期信号［Ｓ５２］が発生する前に、ビデオコーデック（Video Codec）２４０での処理［Ｖ５２］が完了する場合もあり、同期信号［Ｓ５２］以降のタイムスロット期間においては、さらに新たな２つのデータ処理単位の処理をビデオコーデック（Video Codec）２４０に実行させることが可能であり、処理の遅れを解消することが可能となる。この方法の実現には、ＣＰＵで管理するタイムスロット期間の状態拡張が必要ではあるが、画像処理システム全体の処理効率を含め、非常に有効な手法と言える。
【０１４６】
図１３を参照して、本実施例５における処理制御手段としてのＣＰＵ２２１の処理手順について説明する。ステップＳ５０１において、並列動作可能な各ハードウェアブロックの生成した予備処理データを受領すると、ステップＳ５０２において、ＣＰＵは、キューの設定を実行する。なお、設定キューは、実施例３と同様、ビデオコーデック（Video Codec）２４０の処理態様に応じた複数のキューの設定として実行してもよい。例えば、図７に示すエンコード（Encode）用キュー３５１とデコード（Decode）用キュー３５２である。
【０１４７】
ステップＳ５０１、ステップＳ５０２の処理は、ビデオコーデック（Video Codec）２４０の処理の進行状況に関わらず、繰り返し実行される。
【０１４８】
ステップＳ５０３において同期信号［Ｓｎｎ］が発生すると、ＣＰＵは、ステップＳ５０４に進む。ステップＳ５０４において、ＣＰＵは、ビデオコーデック（Video Codec）２４０が１タイムスロットにおいて実行予定のキューに対応するエントリをビデオコーデックリストに設定し、キューおよびビデオコーデックリストに基づいて、符号化または復号処理開始命令をビデオコーデック（Video Codec）２４０に対して出力する。
【０１４９】
ステップＳ５０５において、同期信号の発生を検出することなく、ステップＳ５０６において、ビデオコーデック（Video Codec）２４０からの処理完了通知を受領すると、ステップＳ５０７において、ビデオコーデックリストを更新、すなわち、完了した処理に対応するエントリをビデオコーデックリストから削除する。さらに、ステップＳ５０８において、１タイムスロットにおける実行予定処理が終了したか否かを判定する。これは、ステップＳ５０４で設定したビデオコーデックリストのエントリが全て削除されたか否かを判定する処理として実行可能である。まだ、ビデオコーデックリストのエントリが残っている場合は、ステップＳ５０４以降の処理を繰り返す。
【０１５０】
ステップＳ５０５において、１タイムスロットにおいて実行予定の処理の完了通知を受領する前に、同期信号の発生を検出した場合は、ステップＳ５１０に進み、ビデオコーデックリストの更新処理を実行する。ここでの更新は、次に予定される処理情報をキューから取得して、ビデオコーデックリストの新規エントリとして設定するエントリ追加処理である。具体的には、図１２に示すビデオコーデックリスト３７１−ｂのように、新たに次の処理［Ｑ５２］に対応する新規エントリをリストに追加設定する処理である。図１２に示した例では、同期信号［Ｓ５１］によって規定さるタイムスロット期間において、実行すべき処理として［Ｑ５１］、［Ｑ５２］を設定する処理である。
【０１５１】
ステップＳ５０６において、ビデオコーデック（Video Codec）２４０からの処理完了通知を受領し、その後、ステップＳ５０７において、ビデオコーデックリストを更新、すなわち、完了した処理に対応するエントリをビデオコーデックリストから削除する。ただし、システム仕様によっては、再スケジューリング時間のコストが大きくなり、ステップＳ５１０でコーデックリストの更新を行なうことが、必ずしも適切でない場合がある。従ってステップＳ５１０では、完了通知前に同期信号が発生したという情報のみを保持し、以下に説明するステップＳ５０８からステップＳ５０９へ遷移する途中において、保持情報から再スケジューリングが必要であれば、コーデックリストを更新するような設定としてもよい。
【０１５２】
ステップＳ５０８において、１タイムスロットにおける実行予定処理が終了したと判定すると、ステップＳ５０９において、未処理データがあるか否かを判定する。これは、設定キュー、例えばエンコード（Encode）用キューとデコード（Decode）用キューに設定されたキュー情報が存在するか否かの判定処理として実行する。キュー情報が存在する場合は、ステップＳ５０３において同期信号の発生を待ち、ステップＳ５０４以下の処理を繰り返し実行する。
【０１５３】
ステップＳ５０９において、キューに設定されたキュー情報が存在しないことが確認されると、処理が終了する。
【０１５４】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１５５】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１５６】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０１５７】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１５８】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１５９】
以上、説明したように、本発明の構成によれば、コーデック手段における処理を開始することが可能な予備処理データが、並列動作可能な複数のハードウェア手段によって準備されたことを条件として、コーデック手段の処理待ち行列としてのキューを設定し、キューの設定情報順に従って、順次、コーデック手段に対して処理開始命令を出力する構成としたので、特定の同期信号や、コーデック手段の処理とは無関係に、各ハードウェアにおける予備処理データの生成処理を進行させることが可能となり、効率的な高速処理が実現される。従って、本発明は、例えばビデオデータの符号化による格納処理や、符号化データの復号再生処理を実行する画像処理装置において適用可能である。
【０１６０】
さらに、本発明の構成によれば、同期信号区間として定義される各タイムスロットにおいて複数のコーデック処理を実行させることが可能であり、より高速な処理が実現される。また、本発明の構成によれば、各タイムスロットにおいて実行予定のコーデック処理が予定タイムスロット期間に終了できなかった場合に、次のタイムスロットで継続実行させる構成としたので、破綻のない処理が実現される。さらに、本発明の構成によれば、各タイムスロットにおいて実行予定のコーデック処理が予定タイムスロット期間に終了できなかった場合に、次のタイムスロットで実行する処理を再スケジューリングする構成としたので、処理遅れを解消し、破綻を防止するとともに高速処理を実現することが可能となる。従って、本発明は、例えばビデオデータの符号化による格納処理や、符号化データの復号再生処理を実行する画像処理装置において適用可能である。
【０１６１】
本発明の構成では、ビデオコーデック（Video Codec）処理システムに実行させる命令群を、上位システム側にてキュー登録してスケジューリングしている。したがって、現在のタイムスロット以降で処理すべき命令についても、キューに登録されることが許容される。これにより、対象タイムスロット中の処理以外に影響する例えば、取り消し（Cancel）、やり直し（Retry）、中断（Pause）といった特殊なシステム制御系の命令が発生した場合にも、必要な予備処理データの取り出しが即座に実行可能であり、このような付加的な高度なデータ処理にも対応することが可能となる。従って、本発明は、例えばビデオデータの符号化による格納処理や、符号化データの復号再生処理を実行する画像処理装置であり、取り消し（Cancel）、やり直し（Retry）、中断（Pause）といった特殊なシステム制御系の命令を実行する画像処理装置において適用可能である。
【図面の簡単な説明】
【０１６２】
【図１】従来の画像処理装置における処理シーケンスを説明する図である。
【図２】本発明の画像処理装置の構成を示す図である。
【図３】本発明の画像処理装置の実施例１の処理シーケンスを説明する図である。
【図４】本発明の画像処理装置の実施例１における制御手段としてのＣＰＵにおける制御シーケンスを説明するフローチャートである。
【図５】本発明の画像処理装置の実施例２の処理シーケンスを説明する図である。
【図６】本発明の画像処理装置の実施例２における制御手段としてのＣＰＵにおける制御シーケンスを説明するフローチャートである。
【図７】本発明の画像処理装置の実施例３の処理シーケンスを説明する図である。
【図８】本発明の画像処理装置の実施例３における制御手段としてのＣＰＵにおける制御シーケンスを説明するフローチャートである。
【図９】１タイムスロットにおいて、ビデオコーデックが複数の処理データ単位の処理が完了できない場合の例を説明する図である。
【図１０】本発明の画像処理装置の実施例４の処理シーケンスを説明する図である。
【図１１】本発明の画像処理装置の実施例４における制御手段としてのＣＰＵにおける制御シーケンスを説明するフローチャートである。
【図１２】本発明の画像処理装置の実施例５の処理シーケンスを説明する図である。
【図１３】本発明の画像処理装置の実施例５における制御手段としてのＣＰＵにおける制御シーケンスを説明するフローチャートである。
【符号の説明】
【０１６３】
１０１  ハードウェアブロックＡ
１０２  ハードウェアブロックＢ
１０３  ハードウェアブロックＣ
１０４  ＣＰＵ
１０５  ビデオコーデック
２００  上位システム
２１１  ハードウェアブロックＡ
２１２  ハードウェアブロックＢ
２１３  ハードウェアブロックＣ
２２１  ＣＰＵ
２２２  同期信号発生部
２２３  割り込み処理制御部
２３０  メモリ（ＳＤＲＡＭ）
２４０  ビデオコーデック
３０１  キュー
３５１  エンコードキュー
３５２  デコードキュー
３７１  ビデオコーデックリスト
【図１】
2005159787.tif 000003
【図２】
2005159787.tif 000004
【図３】
2005159787.tif 000005
【図４】
2005159787.tif 000006
【図５】
2005159787.tif 000007
【図６】
2005159787.tif 000008
【図７】
2005159787.tif 000009
【図８】
2005159787.tif 000010
【図９】
2005159787.tif 000011
【図１０】
2005159787.tif 000012
【図１１】
2005159787.tif 000013
【図１２】
2005159787.tif 000014
【図１３】
2005159787.tif 000015