(57)【要約】【課題】複数系統の動画像に対応する符号化対象画像を並列に符号化する際の符号化処理時間を短縮する。【解決手段】動画像符号化装置は、記憶装置と符号化部とを有する。記憶装置は、複数系統の動画像に対応する複数系統の符号化対象画像を記憶する。符号化部は、記憶装置に記憶された、複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定する。符号化部は、パイプライン処理において複数の非更新ブロックが連続するように、パイプライン処理における複数系統の符号化対象画像のブロック間の処理順序を決定する。符号化部は、決定された処理順序に基づいてパイプライン処理を行う。【選択図】図１
2017005362.tif 000002
【特許請求の範囲】
【請求項１】
複数系統の動画像に対応する複数系統の符号化対象画像を記憶する記憶装置と、
前記記憶装置に記憶された、前記複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定し、前記パイプライン処理において複数の非更新ブロックが連続するように、前記パイプライン処理における前記複数系統の符号化対象画像のブロック間の処理順序を決定し、決定された前記処理順序に基づいて前記パイプライン処理を行う符号化部と、
を有することを特徴とする動画像符号化装置。
【請求項２】
前記処理順序は、さらに、前記非更新ブロックでないと判定された更新ブロックが連続するように決定される
ことを特徴とする請求項１に記載の動画像符号化装置。
【請求項３】
前記処理順序は、さらに、前記非更新ブロックと、前記更新ブロックとの境界数の増加をより少なくするように決定される
ことを特徴とする請求項１または請求項２に記載の動画像符号化装置。
【請求項４】
前記処理順序は、さらに、前記パイプライン処理が行われるパイプラインの段数から２を減じた数以下の、前記非更新ブロックが連続した箇所の直後に、連続した前記非更新ブロックの後に処理される非更新ブロックを追加しないように決定される
ことを特徴とする請求項１から請求項３のいずれか一項に記載の動画像符号化装置。
【請求項５】
前記処理順序は、さらに、前記符号化対象画像毎の前記ブロック単位の符号化における処理順と、前記符号化対象画像毎の前記非更新ブロックと前記更新ブロックとの境界の境界数と、前記符号化対象画像を前記境界毎に区切った部分に含まれるブロックが非更新ブロックであるか否かに基づき決定される、
ことを特徴とする請求項１から請求項４のいずれか一項に記載の動画像符号化装置。
【請求項６】
前記処理順序は、さらに、各前記符号化画像を前記境界毎に区切った部分を、前記境界数が多い順序で前記符号化における処理順の早い順に前記境界の増加を少なくするように並べることで決定される
ことを特徴とする請求項５に記載の動画像符号化装置。
【請求項７】
前記処理順序は、前記符号化対象画像の所定ブロック数毎に決定され、
前記処理順序は、さらに、前記符号化対象画像毎の前記所定ブロック数における先頭ブロックが、前記非更新ブロックであるか否かに基づき決定される
ことを特徴とする請求項１から請求項６のいずれかに記載の動画像符号化装置。
【請求項８】
前記処理順序は、前記符号化対象画像の所定時間内に入力されたブロック毎に決定され、
前記処理順序は、さらに、前記符号化対象画像毎の前記ブロック毎の先頭ブロックが、前記非更新ブロックであるか否かに基づき決定される
ことを特徴とする請求項１から請求項６のいずれかに記載の動画像符号化装置。
【請求項９】
動画像符号化装置が
複数系統の動画像に対応する複数系統の符号化対象画像を記憶し、
記憶された、前記複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定し、
前記パイプライン処理において複数の非更新ブロックが連続するように、前記パイプライン処理における前記複数系統の符号化対象画像のブロック間の処理順序を決定し、
決定された前記処理順序に基づいて前記パイプライン処理を行う
ことを特徴とする動画像符号化方法。
【請求項１０】
複数系統の動画像に対応する複数系統の符号化対象画像を記憶し、
記憶された、前記複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定し、
前記パイプライン処理において複数の非更新ブロックが連続するように、前記パイプライン処理における前記複数系統の符号化対象画像のブロック間の処理順序を決定し、
決定された前記処理順序に基づいて前記パイプライン処理を行う
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像符号化装置、動画像符号化方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、動画像符号化の技術においては、符号化処理速度を向上させるための工夫がなされている。例えば、１フレームの画像を複数のマクロブロックから構成されるスライスに分割し、さらに該マクロブロック分割した小ブロック単位でＨ．２６４に準拠したイントラ予測符号化を行う際に、スライス毎のパイプライン処理を行う動画像符号化装置が知られている。縦に連続する少なくとも２行のマクロブロック行がひとまとまりとされ、これらひとまとまりのマクロブロック行から１行のマクロブロック行あたり１個のマクロブロックが選択される例も知られている。この例では、これら選択された複数のマクロブロックが１マクロブロックサイクルごとにマクロブロックパイプラインに投入され、そのマクロブロックの符号化が開始される。複数の画素から構成される小ブロックが、背景領域に属するかを判定する処理を含むことで、符号化する必要がある情報を有していないスキップ領域に属する小ブロックを検出する例も知られている（例えば、特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−３４８０２号公報
【特許文献２】特開２００７−３１２３４０号公報
【特許文献３】特開２００２−２８１５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、Virtual Desktop Infrastructure（ＶＤＩ）において、サーバが複数系統の動画像に対応する符号化対象画像を並列に符号化する際には、多数の入力を処理するために処理性能を向上させることが求められる。このため、パイプライン処理を用いて複数系統の符号化対象画像を並列に符号化することがある。このような場合、各系統の符号化対象画像における固定の処理順序（以下、スケジュールということがある。）に基づいて、複数の符号化系列を併合するスケジューリングを行うことが考えられる。例えば、２つの符号化系列がある場合には、一方の系列の処理の終了後に他方の系列の処理を行うスケジューリング等である。しかし、ブロック毎の符号化では、更新処理が必要か否かによって処理時間に大きな差が生じる。このため、固定のスケジュールに基づいた併合では、アイドル時間が多くなり、全体として処理時間が短縮されず、処理性能の向上が十分でない場合がある。
【０００５】
ひとつの側面によれば、本発明の目的は、複数系統の動画像に対応する符号化対象画像を並列に符号化する際の符号化処理時間を短縮することである。
【課題を解決するための手段】
【０００６】
ひとつの態様である動画像符号化装置は、記憶装置と符号化部とを有する。記憶装置は、複数系統の動画像に対応する複数系統の符号化対象画像を記憶する。符号化部は、記憶装置に記憶された、複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定する。符号化部は、パイプライン処理において複数の非更新ブロックが連続するように、パイプライン処理における複数系統の符号化対象画像のブロック間の処理順序を決定する。符号化部は、決定された処理順序に基づいてパイプライン処理を行う。
【発明の効果】
【０００７】
ひとつの実施形態によれば、複数系統の動画像に対応する符号化対象画像を並列に符号化する際の符号化処理時間を短縮することが可能になる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施の形態による動画像符号化装置を備えたＶＤＩシステムの構成の一例を示す図である。
【図２】第１の実施の形態によるＶＤＩサーバのハードウエア構成の一例を示す図である。
【図３】第１の実施の形態によるＶＤＩサーバの機能的な構成の一例を示す図である。
【図４】比較例によるパイプライン処理の一例を示す図である。
【図５】比較例による非更新ブロックがある場合のパイプライン処理の一例を示す図である。
【図６】比較例によるパイプライン処理における並列処理の一例を示す図である。
【図７】比較例によるパイプライン処理における並列処理の別の例を示す図である。
【図８】比較例によるパイプライン処理における並列処理のさらに別の例を示す図である。
【図９】第１の実施の形態によるパイプライン処理の一例を示す図である。
【図１０】第１の実施の形態によるパイプライン処理の別の例を示す図である。
【図１１】第１の実施の形態によるパイプライン処理のスケジュール決定方法の一例を説明する図である。
【図１２】第１の実施の形態による各入力系統のスケジュールをソートしたリストの一例を示す図である。
【図１３】第１の実施の形態による２つのスケジュールの境界数を増やさない単純なマージの一例を示す図である。
【図１４】第１の実施の形態による２つのスケジュールの境界数が等しく、先頭ブロックの種別が異なる場合のマージの一例を示す図である。
【図１５】第１の実施の形態による２つのスケジュールの境界数が異なる場合のマージの一例を示す図である。
【図１６】第１の実施の形態による動画像符号化における１ピクチャの処理の一例を示すフローチャートである。
【図１７】第１の実施の形態によるスケジューリングの決定処理の一例を示すフローチャートである。
【図１８】第１の実施の形態によるマージ処理の一例を示すフローチャートである。
【図１９】第１の実施の形態によるマージＰ処理の一例を示すフローチャートである。
【図２０】第１の実施の形態によるマージＱ処理の一例を示すフローチャートである。
【図２１】第１の実施の形態によるマージＱ―１処理の一例を示すフローチャートである。
【図２２】第１の実施の形態によるマージＲ処理の一例を示すフローチャートである。
【図２３】第１の実施の形態によるマージＲ再帰処理を示すフローチャートである。
【図２４】第１の実施の形態によるマージＲ再帰処理の処理例（その１）を示す図である。
【図２５】第１の実施の形態によるマージＲ再帰処理の処理例（その２）を示す図である。
【図２６】第２の実施の形態による入力部の処理の一例を示すフローチャートである。
【図２７】第３の実施の形態による入力部の処理の一例を示すフローチャートである。
【図２８】標準的なコンピュータのハードウエア構成の一例を示す図である。
【発明を実施するための形態】
【０００９】
（第１の実施の形態）
以下、図面を参照しながら、第１の実施の形態による動画像符号化装置５０について説明する。図１は、第１の実施の形態による動画像符号化装置を備えたＶＤＩシステム１０の構成の一例を示す図である。ＶＤＩシステム１０は、ＶＤＩサーバ２０とクライアント４０−１、４０−２、・・・、４０−ｋ（まとめて、あるいは代表して、クライアント４０ということがある）とが、ネットワーク４６で接続されたシステムである。ここで、ｋは、正の整数である。
【００１０】
ＶＤＩシステム１０では、各クライアント４０は、例えばそれぞれユーザ４２−１、４２−２、・・・、４２−ｋにより操作される。なお、ユーザ４２−１、４２−２、・・・、４２−ｋ等、ＶＤＩサーバ２０と接続されるクライアント４０のユーザを、まとめて、あるいは代表してユーザ４２ということがある。
【００１１】
ＶＤＩサーバ２０には、各クライアント４０にそれぞれ対応した複数の仮想マシンVirtual Machine（ＶＭ）１、ＶＭ２、・・・（まとめて、あるいは代表して仮想マシンＶＭということがある。）が実現される。ＶＤＩサーバ２０は、クライアント４０からの入力を、対応する仮想マシンＶＭで受け付け、入力に応じた処理を行い、処理結果、および処理結果等を含む画面出力をクライアント４０に出力する装置である。ＶＤＩサーバ２０の構成については後述する。
【００１２】
クライアント４０は、ユーザ４２の操作を受け付けて対応する情報をＶＤＩサーバ２０に出力する。またクライアント４０は、ユーザ４２の操作がクライアント４０に入力されると、入力を受け付けて、対応する情報を、ネットワーク４６を介してＶＤＩサーバ２０の対応する仮想マシンＶＭに転送する。ＶＤＩサーバ２０からクライアント４０に出力される画面出力は、本実施の形態では、ＶＤＩサーバ２０の仮想マシンＶＭから、動画像符号化方式の符号化ストリームとして、クライアント４０に伝送され、クライアント４０で復号されて、表示される。クライアント４０は、ユーザ４２の入力を受け付ける入力装置と、ＶＤＩサーバ２０から受け付ける符号化ストリームを復号し、復号した画像を表示する表示装置とを備えた情報処理装置である。
【００１３】
なお、代表的な動画像符号化標準は、International Organization for Standardization/International Electrotechnical Commission(ISO/IEC) によって策定されている。動画像符号化標準は、International Telecommunication Union Telecommunication Standardization Sector(ITU-T)によっても策定されている。動画像符号化方式としては、例えば、Moving Picture Experts Group phase 2（MPEG-2, ITU-T H.262 | ISO/IEC 13818-2）及びAdvanced Video Coding (AVC, ITU-T H.264 | ISO/IEC 14496-10) を用いるようにしてもよい。さらに、High Efficiency Video Coding (HEVC, ITU-T H.265 | ISO/IEC 23008-2)を用いるようにしてもよい。
【００１４】
図２は、第１の実施の形態によるＶＤＩサーバ２０のハードウエア構成の一例を示す図である。ＶＤＩサーバ２０は、Central Processing Unit（ＣＰＵ）２１、メモリ２３、符号化処理装置２５、ネットワークインタフェイス３１を有している。符号化処理装置２５は、Graphics Processing Unit（ＧＰＵ）２７およびＶＤＩ用動画像符号化Large Scale Integration（ＬＳＩ）２９を有している。
【００１５】
ＣＰＵ２１は、例えばメモリ２３に記憶された制御プログラムを読み込んで実行することにより、ＶＤＩサーバ２０の動作を制御する処理を行う演算処理装置である。メモリ２３は、ＶＤＩサーバ２０の動作を制御するための制御プログラムを格納している。また、メモリ２３は、クライアント４０に表示させる画面の画像、画像の符号化を行う画像処理における演算の途中経過等を記憶する。なお、仮想マシンＶＭは、例えば、ＣＰＵ２１がメモリ２３に記憶された制御プログラムを読み込んで実行することにより実現される。
【００１６】
符号化処理装置２５は、ＣＰＵ２１による仮想マシンＶＭに対応する処理として、クライアント４０に送信するための画面の画像情報の生成が指示されると、画像を圧縮符号化して符号化ストリームを生成する処理を行う。仮想マシンＶＭでの処理で、クライアント４０に送信するための画面の画像情報を符号化処理装置２５に生成させるための指示を、描画命令ということがある。符号化処理装置２５のＧＰＵ２７は、描画命令に対応する符号化対象の入力画像を、メモリ２３に書き込む。ＶＤＩ用動画像符号化ＬＳＩ２９は、メモリ２３に書き込まれた符号化対象画像を読み出し、圧縮符号化の処理を行い、生成した符号化ストリームをメモリ２３に書き込む。ＣＰＵ２１は、仮想マシンＶＭの処理として、符号化ストリームをメモリ２３から読み出し、ネットワークインタフェイス３１を介して、ネットワーク４６へ出力する。
【００１７】
図３は、第１の実施の形態によるＶＤＩサーバ２０の機能的な構成の一例を示す図である。図３に示すように、ＶＤＩサーバ２０は、符号化部５１、及び記憶装置５４を有している。本実施の形態において、上述のように、ＶＤＩサーバ２０上には、仮想マシンＶＭ１〜ｋ（ｋは、２以上の整数）が構築されている。符号化部５１は、ＶＤＩサーバ２０が所定の制御プログラムをメモリ２３から読み出して実行することにより実現される機能である。符号化部５１は、符号化対象画像となる入力画像を圧縮符号化（単に、符号化ということがある）して出力する。符号化部５１と記憶装置５４とは、仮想マシンＶＭに共通して用いられる動画像符号化装置５０であるともいえる。また、ＶＤＩサーバ２０が、本実施の形態による動画像符号化装置の一例であるともいえる。
【００１８】
符号化部５１は、入力部５２、符号化処理部５５、およびパイプラインスケジュール部５７を有している。入力部５２は、各クライアント４０に表示させる画面の画像として、例えば、ＣＰＵ２１の指示により、対応するＶＭ１用入力画像〜ＶＭｋ用入力画像を受け付ける。入力部５２は、受け付けた画像を、対応するＶＭ１〜ｋ用バッファ５３（まとめて、あるいは代表してＶＭ用バッファ５３ということがある。）に書き込む。さらに、入力部５２は、書き込んだ各画像を読み出し、符号化ブロック単位に、符号化結果の更新処理が行われない非更新ブロックであるか否かを判定する。符号化ブロックとは、例えば、マクロブロック、あるいは、Coding Tree Unit（ＣＴＵ）である。非更新ブロックの判定方法については後述される。符号化部５１は、例えば、図２の符号化処理装置２５に対応している。
【００１９】
記憶装置５４は、例えば図１で説明したメモリ２３上に確保される記憶領域である。記憶装置５４は、ＶＭ１〜ｋ用バッファ５３−１〜ｋを有している。ＶＭ１〜ｋ用バッファ５３−１〜ｋは、仮想マシンＶＭ１〜ｋにそれぞれ対応し、それぞれのＶＭ１〜ｋにおいて処理される画像、及び符号化の途中で得られた情報等を記憶させる、
図２を参照しながら説明したように、符号化処理装置２５において、ＧＰＵ２７とＶＤＩ用動画像符号化ＬＳＩ２９とが備えられている場合には、ＧＰＵ２７が、画像のＶＭ用バッファ５３への書き込みを行うようにしてもよい。このとき、記憶装置５４に書き込んだ画素の画像内での位置を示す情報と、書き込んだ記憶装置５４における場所とが、ＶＤＩ用動画像符号化ＬＳＩ２９に通知される。あるいは、入力部５２の処理は、ＣＰＵ２１により行われるようにしてもよい。
【００２０】
パイプラインスケジュール部５７は、入力部５２で判定された非更新ブロックが連続するように、符号化におけるブロック単位のパイプライン処理の処理順序（以下、スケジュールということがある。）を決定する。パイプライン処理、及びそのスケジュールの詳細については後述される。
【００２１】
符号化処理部５５は、決定されたスケジュールに基づいたパイプライン処理により、入力部５２が受け付けた複数系統の符号化対象画像を並列に符号化する。複数系統の符号化対象画像は、複数系統の動画像に対応している。符号化処理部５５は、符号化ストリームであるＶＭ１ストリーム、・・・、ＶＭｋストリームを、ネットワークインタフェイス３１を介してネットワーク４６に出力する。
【００２２】
ここで、図４を参照しながら、比較例によるパイプライン処理の一例について説明する。図４は、比較例によるパイプライン処理の一例を示す図である。図４に示すように、２つの画像Ａ、Ｂがあり、それぞれ符号化対象画像８０のように、複数の符号化ブロックＸ０、Ｘ１、・・・（Ｘは、ＡかＢ）を有しているとする。符号化対象画像８０は、ストリームＸ０、Ｘ１、Ｘ２、・・・として伝送される。２つの画像Ａ、Ｂは、それぞれ複数の符号化ブロックＡ０、Ａ１、・・・、符号化ブロックＢ０、Ｂ１、・・・を有し、それぞれに専用に用意されたパイプラインによって符号化処理が行われるとする。符号化ブロックＡ０、Ａ１、・・・の符号化処理は、Ａ０、Ａ１、Ａ２、・・・の順で行われる。例えば、画像Ａの、例えばあるブロックラインの符号化処理の処理順を示した情報を、スケジュールＡという。同様に、画像Ｂのあるブロックラインの符号化処理の処理順を示した情報を、スケジュールＢという。このように、符号化処理では、符号化済みのブロックの画素を参照する関係上、画像の左上端のブロックから右下端のブロックへ向かう順で、すなわち、各スケジュール順を守って、各符号化ブロックの符号化処理が行われる。
【００２３】
パイプライン処理は、動き検出処理、変換量子化処理、ループフィルタ／エントロピー符号化処理の３段の処理で行われるとする。パイプライン動作スケジュールＡ８２は、スケジュールＡに対応するパイプラインの動作である。パイプライン動作スケジュールＡ８２に示したように、スケジュールＡの順で、各符号化ブロックＡ０、Ａ１、・・・の符号化処理が行われる。パイプライン動作スケジュールＢ８４でも同様に、スケジュールＢの順で各符号化ブロックＢ０、Ｂ１、・・の符号化処理が行われる。
【００２４】
図５は、比較例による非更新ブロックがある場合のパイプライン処理の一例を示す図である。図５に示すように、符号化の更新処理を行うブロックと行わないブロックとが混在するスケジュールＡ９１、スケジュールＢ９３があるとする。このとき、パイプライン動作スケジュールＡ９５、パイプライン動作スケジュールＢ９７に示すように、更新を行わないブロックの後に、処理が行われない空き時間（アイドル時間）が生じてしまう。
【００２５】
また、図５では、符号化ブロックＡ２に対する動き検出処理と、符号化ブロックＡ１に対する変換量子化処理と、符号化ブロックＡ０に対するループフィルタ／エントロピー符号化処理が同時に行われている。このうち、Ａ０にアイドル時間が存在している。このようなパイプラインの処理サイクルを、以下では、アイドルと呼ぶ。例えば、パイプライン動作スケジュールＢ９７内の処理開始から７番目の処理サイクルは、符号化ブロックＢ４のループフィルタ／エントロピー符号化処理にアイドル時間が存在するので、アイドルである。また、パイプライン動作スケジュールＢ９７の最後の処理サイクルはアイドルではない。
【００２６】
ここで、非更新ブロック（スキップブロックといわれることがある。）について説明する。非更新ブロックでは、例えば、動き検出での、ベクトル差分＝０（スキップベクトル）である。一つ前のピクチャの同一ブロックとの比較によるSum of Absolute Difference（ＳＡＤ）＝０である場合、動き検出は不要である。また、変換量子化では、全量子化結果＝０ならば、逆量子化、逆変換処理は不要である。ループフィルタでは、全量子化係数＝０ならば、フィルタ対象画素が少ない。エントロピー符号化では、全量子化係数＝０ならば、符号化対象が少ない。以上のようなブロックでは、各ステージの処理が通常よりも極端に短い可能性が高い。
【００２７】
動画像においては、処理対象の全画面の画面全体が更新される可能性は非常に低い。そこで、更新されないブロックを非更新ブロックと判定し、判定結果に応じてパイプライン処理のスケジュールを決める。
【００２８】
非更新ブロックは、以下のようにして判定される。
判定例１）ＶＤＩサーバ２０において、ＧＰＵ２７に対する描画命令を解析して判定する。
判定例２）前ピクチャの同位置ブロックとのＳＡＤを算出して判定する。
判定例３）前ピクチャの同位置ブロックとのハッシュ値を比較して判定する。
【００２９】
例えば、判定例１においては、描画命令に更新処理が含まれない場合、非更新ブロックであると判定される。ＶＤＩ用動画像符号化ＬＳＩ２９とメモリ２３との間のアクセスパターンから、符号化処理部５５のスケジュールを間接的に推定することで、非更新ブロックを判断するようにしてもよい。判定例２においては、動き検出におけるベクトル差分が算出される。このとき、ＳＡＤが予め決められた閾値以下の場合、当該ブロックは非更新ブロックであると判定されることが好ましい。判定例３においては、例えば１ブロックの画素に応じて算出されるハッシュ値を、前ピクチャの同位置のブロックに関して算出されるハッシュ値と比較し、一致する場合、当該ブロックは、非更新ブロックであると判定されることが好ましい。
【００３０】
図６は、比較例によるパイプライン処理における並列処理の一例を示す図である。図６に示すように、スケジュールＡ１０１、スケジュールＢ１０３を並列処理するため、パイプライン動作スケジュール１０５のような処理が考えられる。パイプライン動作スケジュール１０５では、符号化ブロックライン単位で時分割並行処理が行われている。すなわち、パイプライン動作スケジュール１０５は、単に、スケジュールＡ１０１の処理が終了した後に、スケジュールＢ１０３を行う例である。この例では、パイプライン動作スケジュール１０５の中で、アイドル時間が１４箇所発生している。全ステージが更新ブロックである処理サイクルの処理時間を２単位時間とし、仮に、非更新ブロックの処理時間は全て１単位時間であるとすると、アイドルは１０箇所で発生し、パイプライン動作スケジュール１０５の処理開始から終了までには、３１単位時間を要する。
【００３１】
図７は、比較例によるパイプライン処理における並列処理の別の例を示す図である。図７に示すように、スケジュールＡ１０１、スケジュールＢ１０３を並列処理するため、パイプライン動作スケジュール１０７のような処理が考えられる。パイプライン動作スケジュール１０７では、単純に、スケジュールＡ１０１とスケジュールＢ１０３との非更新ブロックと更新ブロックとを連続するようにしている。この例では、パイプライン動作スケジュール１０７の中で、アイドルは２箇所しか発生しておらず、処理時間は２７単位時間に短縮されている。しかし、パイプライン動作スケジュール１０７では、スケジュールＡ１０１、スケジュールＢ１０３の順が守られておらず、符号化順に適合しない。
【００３２】
図８は、比較例によるパイプライン処理における並列処理のさらに別の例を示す図である。図８に示すように、スケジュールＡ１０１、スケジュールＢ１０３を並列処理するため、パイプライン動作スケジュール１０９のような処理が考えられる。パイプライン動作スケジュール１０９では、単に、スケジュールＡ１０１とスケジュールＢ１０３との各ブロックを交互に処理するようにしている。この例では、パイプライン動作スケジュール１０９の中で、アイドルが１０箇所発生しており、処理終了までには３１単位時間を必要とする。
【００３３】
図９は、第１の実施の形態によるパイプライン処理の一例を示す図である。図９では、上述のスケジュールＡ１０１、スケジュールＢ１０３に対するパイプライン処理の一例を示している。パイプライン動作スケジュール１０９は、比較例として図８で説明した処理である。パイプライン動作スケジュール１１７は、第１の実施の形態によるパイプラインの処理例である。パイプライン動作スケジュール１１７は、非更新ブロックがなるべく連続するように、スケジュールＡ１０１、スケジュールＢ１０３を守ってスケジュールを決定したパイプライン動作スケジュールである。パイプライン動作スケジュール１１７では、アイドルが６箇所発生しているが、処理時間が２９単位時間となっており、実現可能な比較例のパイプライン動作スケジュール１０９よりも処理時間が短縮されている。
【００３４】
図１０は、第１の実施の形態によるパイプライン処理の別の例を示す図である。図１０では、図９とは別のスケジュールＡ１２１、スケジュールＢ１２３に対するパイプライン処理の一例を示している。パイプライン動作スケジュール１２５は、比較例として、パイプライン動作スケジュール１０９と同様に、スケジュールＡ１２１とスケジュールＢ１２３とを交互に処理する比較例である。パイプライン動作スケジュール１２５では、処理時間が２４単位時間となっている。一方、パイプライン動作スケジュール１２７は、第１の実施の形態によるパイプラインの処理例である。パイプライン動作スケジュール１２７では、非更新ブロックがなるべく連続するように、スケジュールＡ１２１、スケジュールＢ１２３を守ってスケジュールを決定したパイプラインである。パイプライン動作スケジュール１２７では、アイドルが４箇所発生しているが、処理時間が２２単位時間となっており、実現可能な比較例のパイプライン動作スケジュール１２５よりも処理時間が短縮されている。
【００３５】
以下、第１の実施の形態によるパイプライン処理のスケジュール決定方法についてさらに説明する。図１１は、第１の実施の形態によるパイプライン処理のスケジュール決定方法の一例を説明する図である。本実施の形態におけるパイプライン処理のスケジュール決定の方針については、以下のようにする。
【００３６】
以下、「２つのスケジュールについて、それぞれのスケジュールのブロック処理順を維持したまま、２つのスケジュールの全てのブロックに対して処理順を定める処理」をマージという。パイプライン処理のスケジュール決定においては、全入力画像に対するブロック処理順をマージすることで、規格上の処理順序（それぞれのスケジュールのブロック処理順）を保った全体スケジュールを決定する。
【００３７】
図１１に示すように、スケジュール決定例１３０は、スケジュールＸ１３１とスケジュールＹ１３３とをマージする例である。パイプライン動作スケジュール１３７は、スケジュールＸ１３１のみのパイプライン動作スケジュールである。スケジュールＸ１３１にスケジュールＹ１３３をマージした結果のスケジュールから、パイプライン動作スケジュール１３９が得られる。パイプライン動作スケジュール１３９では、境界領域１４１、１４３でアイドル時間、およびアイドルが増加している。
【００３８】
スケジュール決定例１５０は、（パイプライン段数−２個）以下の数連続した非更新ブロックの直後に、非更新ブロックを追加する例である。スケジュール決定例１５０では、スケジュールＸ１５１とスケジュールＹ１５３とがマージされる。パイプライン動作スケジュールＸ１５５は、スケジュールＸ１５１のみのパイプライン処理である。このとき、ブロックＸ３は、（パイプライン段数−２個）以下の数連続した非更新ブロックに該当する。パイプライン動作スケジュール１５７は、スケジュールＸ１５１にスケジュールＹ１５３をマージしたスケジュールから得られたものである。パイプライン動作スケジュール１５７では、（パイプライン段数−２個）以下の数連続した非更新ブロックであるブロックＸ３の直後に、非更新ブロックＹ０が追加されている。このため、パイプライン動作スケジュールＸ１５５に比べて、アイドル時間１５９が増加し、アイドルも増加している。
【００３９】
スケジュール決定例１６０は、（パイプライン段数−２個）より多い数連続した非更新ブロックの直後に非更新ブロックを追加する例である。スケジュール決定例１６０では、スケジュールＸ１６１とスケジュールＹ１６３とがマージされる。パイプライン動作スケジュールＸ１６５は、スケジュールＸ１６１のみのパイプライン処理である。このとき、ブロックＸ３、Ｘ４は、（パイプライン段数−２個）より多い数連続した非更新ブロックに該当する。パイプライン動作スケジュール１６７は、スケジュールＸ１６１にスケジュールＹ１６３をマージしたスケジュールから得られたものである。パイプライン動作スケジュール１６７では、（パイプライン段数−２個）より多い数連続した非更新ブロックであるブロックＸ３、Ｘ４の直後に、非更新ブロックＹ０が追加されている。このため、パイプライン動作スケジュールＸ１６５に比べて、アイドルの増加はない。
【００４０】
上記に説明したように、マージにおいて、パイプライン処理におけるアイドルが増えるのは以下の２つの場合である。
アイドル増加例１）更新／非更新ブロックの境界数が増加するとき。
アイドル増加例２）非更新ブロックが、“パイプライン段数−２”個以下の連続した部分に非更新ブロックを追加するとき。
【００４１】
例えば、１系統からの入力に対するスケジュールでも、例えばパイプライン動作スケジュールＸ１５５のように、更新／非更新ブロックの境界（以下、単に境界ということがある。）でのアイドルが存在する。そこで、最初に最も境界でのアイドルが多いスケジュールを選択し、アイドル増加例１、２を最小限に抑えるマージを繰り返すことで最適なスケジュールを導出することができると考えられる。
【００４２】
以下、図１２から図１５を参照しながら、上記のような方針でパイプライン処理のスケジュールを決定する例について説明する。パイプラインスケジュール部５７でのスケジュール決定例の詳細は以下のようになる。
処理１）複数入力の各入力系列のブロック処理順であるスケジュールを、境界数の降順でソートする。境界数が同じ場合は、アイドル数が多いスケジュールを先頭側に配置する。
処理２）ソートしたリストの先頭のスケジュールをリストから取り除き、取り除いたスケジュールをスケジュールＸとする。
処理３）リストの先頭のスケジュールをリストから取り除き、取り除いたスケジュールをスケジュールＹとし、スケジュールＸにスケジュールＹをマージする処理を、ソートしたリストが空になるまで、繰り返す。 
【００４３】
図１２は、第１の実施の形態による各入力系統のスケジュールをソートしたリストの一例を示す図である。リスト１７０は、上記処理１）によりソートされたリストの一例である。リスト１７０は、境界数の多い順に、スケジュールｉ、スケジュールｉｉ、・・・とソートされた全入力系統のスケジュールを有している。スケジュールは、例えば、１ブロックライン分のスケジュールとしてもよい。
【００４４】
リスト１７２は、処理２）により、リスト１７０において最も境界数の多いスケジュールｉがスケジュールＸとされ、さらに、処理３）により、次に境界数の多いスケジュールｉｉがスケジュールＹとされて取り除かれたリストの一例を示している。リスト１７０から取り除かれたスケジュールＸとスケジュールＹとのマージが終了すると、マージされたスケジュールが新たにスケジュールＸとされる。リスト１７２において、境界数が最も多いスケジュールｉｉｉが新たなスケジュールＹとしてリスト１７２から取り除かれ、マージされたスケジュールＸと新たなスケジュールＹとのマージが行われる。このようにして、境界数の多いスケジュールから順に、当初のリスト１７０からスケジュールが全て取り除かれるまで、マージが行われる。
【００４５】
図１３から図１５は、上記のような処理に基づき行われるマージの例を示している。図１３は、第１の実施の形態による２つのスケジュールの境界数を増やさない単純なマージの一例を示す図である。図１３に示すように、スケジュールＸ１８１、スケジュールＹ１８３とは、共に境界数＝２で、先頭ブロックの更新／非更新の種別（以下、単に種別ということがある。）が等しい例である。この場合、境界毎に各スケジュールを分割して、非更新ブロック、更新ブロックがそれぞれなるべく連続するように単純にマージすることで、境界数を増やさないマージが可能である。このとき、マージされた結果は、スケジュール１８５となる。スケジュール１８５において、境界数＝２であり、増加していない。
【００４６】
図１４は、第１の実施の形態による２つのスケジュールの境界数が等しく、先頭ブロックの種別が異なる場合のマージの一例を示す図である。図１４に示すように、２つのスケジュールとなるスケジュールＸ１９１とスケジュールＹ１９３とでは、境界数＝３で等しく、先頭ブロックの種別は異なっている。このように、境界数が等しく、先頭ブロックの種別が異なる場合、マージ後の最小境界増加数＝１となる。最小境界増加数＝１の条件で、かつ、アイドル増加例２）をなるべく避けるようにマージする場合、スケジュールＸ１９１とスケジュールＹ１９３のどちらの先頭ブロックをマージの際に先頭にするかによって、異なるスケジュールが生成される。この例では、スケジュールＬ１９５とスケジュールＭ１９７とが生成される。
【００４７】
スケジュールＬ１９５とスケジュールＭ１９７から得られるパイプライン動作スケジュールはそれぞれ、パイプライン動作スケジュール１９８とパイプライン動作スケジュール１９９で、それぞれの処理時間は１８単位時間と２０単位時間であるため、スケジュールＬ１９５が選択される。
【００４８】
図１５は、第１の実施の形態による２つのスケジュールの境界数が異なる場合のマージの一例を示す図である。この場合には、境界数を増加させないスケジューリングが可能である。図１５に示すように、この例では、スケジュールＸ２０１とスケジュールＹ２０３とがマージされる。スケジュールＸ２０１とスケジュールＹ２０３とは、いずれも先頭ブロックの種別が非更新ブロックである。境界数は、スケジュールＸ２０１が境界数＝３で、スケジュールＹ２０３が境界数＝０である。このとき、境界数を増加させないマージを行うと、スケジュールＬ２０５とスケジュールＭ２０７とが得られる。
【００４９】
すなわち、スケジュールＹ２０３をスケジュールＸ２０１にマージする際に境界数を増やさないためには、以下のような手順でマージをすることが考えられる。スケジュールＹ２０３は、全てが非更新ブロックであるため、スケジュールＸ２０１にマージする際には、図示のスケジュールＸ２０１の境界の左側が、非更新ブロックである境界２１３または境界２１５にスケジュールＹ２０３を組み入れることが考えられる。境界２１３に組み入れた例がスケジュールＬ２０５であり、境界２１５に組み入れた例がスケジュールＭ２０７となる。組み入れる可能性のある境界の数が多ければ、境界数を増やさずに生成されるスケジュールの数も多くなる。
【００５０】
次に、得られた２つのスケジュールＬ２０５とスケジュールＭ２０７とについて、パイプライン処理を行う場合について検証する。スケジュールＬ２０５の場合には、パイプライン動作スケジュール２０９が得られ、３段のパイプライン処理の終了までの処理時間は、１５単位時間となる。スケジュールＭ２０７の場合には、パイプライン動作スケジュール２１１が得られ、３段のパイプライン処理の終了までの処理時間は、１６単位時間となる。以上より、図１５の例では、スケジュールＬ２０５がパイプライン処理のスケジュールとして選択されることが好ましい。境界数が多く、スケジュールの候補が多い場合、すべてについて処理時間を換算して、最も処理時間の少ないスケジュールをパイプライン処理のスケジュールと決定する。
【００５１】
図１３から図１５を参照しながら説明したように、マージは下記の方針に基づいて行われることが好ましい。
マージ方針１）スケジュールＸとスケジュールＹとの境界数が等しく、先頭ブロックの種別が等しい場合、境界数を増やさないように単純にマージすることが好ましい。よって、非更新ブロック、更新ブロックをそれぞれなるべく連続させるようにマージする。
マージ方針２）スケジュールＸとスケジュールＹとの境界数が等しく、先頭ブロックの種別が異なる場合、最小の境界増加数＝１となる。この条件下で上記アイドル増加例２）をなるべく避ける観点から最適なものを選択するようにマージする。
マージ方針３）上記以外の、スケジュールＸの境界数がスケジュールＹの境界数より多い場合には、必ず、境界数の増加をさせないマージが可能である。境界数の増加をさせないマージで、かつアイドルの増加を最小限にとどめるスケジュールとなるようにマージする。
【００５２】
以下、上記のようなパイプライン処理におけるスケジュールの決定が行われるＶＤＩサーバ２０における動画像符号化処理について、フローチャートを参照しながらさらに説明する。図１６は、第１の実施の形態による動画像符号化における１ピクチャの処理の一例を示すフローチャートである。以下の説明では、図３に示した各機能が処理を行うものとして説明する。全ての入力系統のフレームレート、および処理対象画像サイズが同じ場合、単位時間あたりに処理すべき１ピクチャのブロックライン数は同じになるので、図１６に例示するようなフローチャートで処理することができる。
【００５３】
図１６に示すように、符号化部５１は、全入力系統の１ピクチャの入力画素に関するループ処理を開始する（Ｓ２３１）。全入力系統とは、ＶＤＩサーバ２０に仮想的に構築されている全仮想マシンＶＭに対応する。符号化部５１の入力部５２は、いずれかの入力系統から画素入力があったかの判定を行う（Ｓ２３２）。入力部５２は、入力があるまで、Ｓ２３２の処理を繰り返す（Ｓ２３２：ＮＯ）。入力部５２は、いずれかの入力系統から画素入力があると（Ｓ２３２：ＹＥＳ）、入力された画素によって、ある入力系統の１ブロック分の画素が揃ったか否かを判定する（Ｓ２３３）。１ブロック分の画素がいずれも揃わない場合（Ｓ２３３：ＮＯ）、Ｓ２３１からのループ処理を繰り返す。
【００５４】
１ブロック分の画素が揃った場合（Ｓ２３３：ＹＥＳ）、入力部５２は、後述する処理対象ブロックの更新／非更新判定処理を行う（Ｓ２３４）。更新／非更新判定処理の詳細については、上述のように、判定例１〜３のいずれかを用いてもよい。また、同様に判定が行われる方法であれば、他の方法であってもよい。
【００５５】
入力部５２は、処理対象ブロックの画素を、ＶＭ用バッファ５３の対応する領域に書き込む（Ｓ２３５）。入力部５２は、全入力系統の１ブロックライン分のブロックが揃ったか、すなわちＶＭ用バッファ５３に書き込まれたかを判定する（Ｓ２３６）。揃っていない場合（Ｓ２３６：ＮＯ）、入力部５２は、Ｓ２３１からのループ処理を繰り返す。全系統の１ブロックラインのブロックが揃うと（Ｓ２３６：ＹＥＳ）、符号化部５１は、パイプラインスケジュール部５７へ、スケジュールを決定することを指示する（Ｓ２３７）。上記Ｓ２３２からＳ２３８までの処理を、全入力系統の１ピクチャ分について繰り返し（Ｓ２３８）、符号化処理装置２５は、処理を終了する。なお、本実施の形態においては、Ｓ２３７の指示により決定されたスケジュールに基づいてパイプライン処理が行われることで、１ピクチャの画像が符号化される。
【００５６】
図１７は、第１の実施の形態によるスケジューリングの決定処理の一例を示すフローチャートである。図１７に示すように、パイプラインスケジュール部５７は、図１２を参照しながら説明したように、各入力系統のスケジュールを、境界数の降順でソートし、例えばリスト１７０等のスケジュールのリストを生成する（Ｓ２５１）。このとき、パイプラインスケジュール部５７は、境界数が同じ場合は、アイドル数が多いスケジュールをリストの先頭側に配置する。パイプラインスケジュール部５７は、スケジュールのリストから、先頭の要素、すなわち、最も境界数の多いスケジュール（図１２では、リスト１７０のスケジュールｉ）を取り除き、スケジュールＸとする（Ｓ２５２）。続いて、パイプラインスケジュール部５７は、スケジュールのリストから、最も境界数の多いスケジュール（図１２では、リスト１７０のスケジュールｉｉ）を取り除き、スケジュールＹとする（Ｓ２５３）。
【００５７】
パイプラインスケジュール部５７は、スケジュールＸとスケジュールＹとのマージ処理を行う（Ｓ２５４）。このとき、例えば図１３〜図１５を参照しながら説明したように、各スケジュールの更新／非更新の境界数を増やさないように、マージ処理が行われる。パイプラインスケジュール部５７は、引数をスケジュールＸ、Ｙとして、マージの結果となる戻り値となるスケジュールＺを、新たなスケジュールＸとする。マージ処理の詳細については、後述される。
【００５８】
パイプラインスケジュール部５７は、スケジュールのリストが空か否かを判定し（Ｓ２５５）、空でない場合（Ｓ２５５：ＮＯ）、Ｓ２５３から処理を繰り返す。スケジュールのリストが空であると判定されると（Ｓ２５５：ＹＥＳ）、パイプラインスケジュール部５７は、スケジュールの決定処理を終了する。
【００５９】
図１８は、第１の実施の形態によるマージ処理の一例を示すフローチャートである。図１８に示すように、パイプラインスケジュール部５７は、スケジュールＸとスケジュールＹとの境界数が等しく、かつ先頭ブロックの更新／非更新が等しい場合（Ｓ２７１：ＹＥＳ）、マージＰ処理を行う（Ｓ２７５）。マージＰ処理の詳細は、後述される。
【００６０】
スケジュールＸとスケジュールＹとの境界数が等しくないか、先頭ブロックの更新／非更新が等しくない場合（Ｓ２７１：ＮＯ）、処理は、Ｓ２７２に進む。スケジュールＸとスケジュールＹとの境界数が等しく、かつ先頭ブロックの更新／非更新が異なる場合（Ｓ２７２：ＹＥＳ）、パイプラインスケジュール部５７は、マージＱ処理を行う（Ｓ２７４）。マージＱ処理の詳細は、後述される。
【００６１】
スケジュールＸとスケジュールＹとの境界数が等しくない場合（Ｓ２７２：ＮＯ）、パイプラインスケジュール部５７は、マージＲ処理を行う（Ｓ２７３）。マージＲ処理の詳細は、後述される。パイプラインスケジュール部５７は、戻り値Ｚを返し、マージ処理を終了する。
【００６２】
図１９は、第１の実施の形態によるマージＰ処理の一例を示すフローチャートである。図１９に示すように、パイプラインスケジュール部５７は、マージ処理の出力であるスケジュールＺを空にする（Ｓ２８１）。パイプラインスケジュール部５７は、スケジュールＸを先頭からスキャンし、最初の境界までのブロックをスケジュールＸから取り除き、スケジュールＺの後端に、取り除いたブロックを追加する（Ｓ２８２）。パイプラインスケジュール部５７は、スケジュールＹを先頭からスキャンし、最初の境界までのブロックをスケジュールＹから取り除き、スケジュールＺの後端に取り除いたブロックを追加する（Ｓ２８３）。パイプラインスケジュール部５７は、スケジュールＸから全てのブロックが取り除かれていない間（Ｓ２８４：ＮＯ）、Ｓ２８２から処理を繰り返す。全てのブロックがスケジュールＸから取り除かれると（Ｓ２８４：ＹＥＳ）、戻り値としてスケジュールＺを返して、マージＰ処理を終了する。
【００６３】
図２０は、第１の実施の形態によるマージＱ処理の一例を示すフローチャートである。図２０に示すように、パイプラインスケジュール部５７は、マージ処理Ｑにおいて、まず、マージＱ―１処理を行う（Ｓ２９１）。この処理では、引数がスケジュールＸ、スケジュールＹであり、戻り値は、スケジュールＺ１と増加アイドル数ＩＤＣ１とする。パイプラインスケジュール部５７は、続いて、引数を、スケジュールＹ、スケジュールＸとして、マージＱ―１処理を行う（Ｓ２９２）。このとき、戻り値は、スケジュールＺ２と増加アイドル数ＩＤＣ２とする。
【００６４】
パイプラインスケジュール部５７は、スケジュールＺ１とスケジュールＺ２のうち、増加アイドル数が小さいほうを選択してスケジュールＺとし（Ｓ２９３）、マージＱ処理を終了する。
【００６５】
図２１は、第１の実施の形態によるマージＱ―１処理の一例を示すフローチャートである。図２１に示すように、パイプラインスケジュール部５７は、まず増加アイドル数ＩＤＣ＝０とする（Ｓ３０１）。パイプラインスケジュール部５７は、出力となるスケジュールＺを空にする（Ｓ３０２）。パイプラインスケジュール部５７は、スケジュールＸを先頭からスキャンし、最初の境界までのブロックをスケジュールＸから取り除き、スケジュールＺの後端に、取り除いたブロックを追加する（Ｓ３０３）。パイプラインスケジュール部５７は、前ステップ（Ｓ３０３）の追加によって生じた増加アイドル数ＩＤＣ１を、増加アイドル数ＩＤＣに追加する（Ｓ３０４）。
【００６６】
パイプラインスケジュール部５７は、スケジュールＹを先頭からスキャンし、最初の境界までのブロックをスケジュールＹから取り除き、スケジュールＺの後端に、取り除いたブロックを追加する（Ｓ３０５）。パイプラインスケジュール部５７は、前ステップ（Ｓ３０５）の追加によって生じたアイドル数ＩＤＣ２を、増加アイドル数ＩＤＣに追加する（Ｓ３０６）。
【００６７】
パイプラインスケジュール部５７は、スケジュールＸから全てのブロックが取り除かれていない間（Ｓ３０７：ＮＯ）、Ｓ３０３に戻って処理を繰り返す。全てのブロックがスケジュールＸから取り除かれると（Ｓ３０７：ＹＥＳ）、戻り値としてスケジュールＺ、増加アイドル数ＩＤＣを返して、マージＱ―１処理を終了する。
【００６８】
次に、マージＲ処理について説明する。図２２は、第１の実施の形態によるマージＲ処理の一例を示すフローチャートである。マージＲ処理は、スケジュールＸとスケジュールＹとの境界数が異なる場合のマージ処理である。図２２に示すように、パイプラインスケジュール部５７は、マージＲの再帰処理を行う（Ｓ３１１）。このとき、引数は、スケジュールＸとスケジュールＹであり、戻り値は、スケジュールＺと、増加アイドル数ＩＤＣである。
【００６９】
続いて、マージＲ再帰処理について、図２３から図２５を参照しながら説明する。図２３は、第１の実施の形態によるマージＲ再帰処理を示すフローチャートである。図２４は、マージＲ再帰処理の処理例（その１）を示す図である。図２５は、マージＲ再帰処理の処理例（その２）を示す図である。
【００７０】
図２３に示すように、パイプラインスケジュール部５７は、まず、スケジュールＹが空の場合（Ｓ３２１：ＹＥＳ）、戻り値のスケジュールＺ＝スケジュールＸ、増加アイドル数ＩＤＣ＝０に設定し（Ｓ３２２）、マージＲ再帰処理を終了する。
【００７１】
パイプラインスケジュール部５７は、スケジュールＹが空でない場合（Ｓ３２１：ＮＯ）であって、スケジュールＸが空の場合（Ｓ３２３：ＹＥＳ）、戻り値のスケジュールＺ＝スケジュールＹ、増加アイドル数ＩＤＣ＝０に設定し（Ｓ３２４）、マージＲ再帰処理を終了する。
【００７２】
スケジュールＸもスケジュールＹも空でない場合（Ｓ３２３：ＮＯ）、パイプラインスケジュール部５７は、スケジュールＹに境界があれば、最初の境界までのブロック、境界がなければ全てのブロックをスケジュールＹから取り除く。パイプラインスケジュール部５７は、取り除いた少なくとも一つのブロックをスケジュールｍとする（Ｓ３２５）。パイプラインスケジュール部５７は、スケジュールＸから、境界、または終端の先頭側のブロックの種別（更新／非更新）がスケジュールｍ内のブロックの種別と等しい場所を全て列挙し、境界ｎ（ｎは、１から境界または終端の数Ｎまでの整数）とする（Ｓ３２６）。
【００７３】
パイプラインスケジュール部５７は、Ｓ３２７からの境界ｎに関するループ処理を行う（Ｓ３２７）。パイプラインスケジュール部５７は、境界ｎに、スケジュールｍを挿入し、挿入によって増加するアイドル数を増加アイドル数ＩＤＣＡとする（Ｓ３２８）。
【００７４】
パイプラインスケジュール部５７は、スケジュールＸを、境界ｎで分割し、前方（先頭ブロックに近い方）の終端にスケジュールｍを追加したものを、スケジュールＸＦとし、境界ｎより後方のものを、スケジュールＸＬとする（Ｓ３２９）。
【００７５】
パイプラインスケジュール部５７は、引数を、新たに設定されたスケジュールＸＬとスケジュールＹとし、戻り値をスケジュールＺ、増加アイドル数ＩＤＣとするマージＲ再帰処理を行う（Ｓ３３０）。
【００７６】
パイプラインスケジュール部５７は、本イタレーションの結果を以下のように設定する。すなわち、スケジュールＺ＝スケジュールＸＦ＋Ｓ３３０でのスケジュールＺ、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋Ｓ３３０での増加アイドル数ＩＤＣと設定する（Ｓ３２９）。上記処理までで、境界ｎに関するループは終了する（Ｓ３３２）。
【００７７】
パイプラインスケジュール部５７は、上記処理において、最小の増加アイドル数ＩＤＣとなったイタレーションを選択する（Ｓ３３３）。パイプラインスケジュール部５７は、Ｓ３３３で選択されたイタレーションの戻り値を、マージＲ再帰処理の戻り値スケジュールＺ、増加アイドル数ＩＤＣに設定する（Ｓ３３４）。以上のようにしてマージＲ再帰処理が行われる。
【００７８】
図２４は、マージＲ再帰処理の引数として、スケジュールＸ＝Ｘ０、Ｘ１、Ｘ２、Ｘ３、スケジュールＹ＝Ｙ０、Ｙ１が与えられた場合の処理の一例を示している。図２４は、図２３の処理の具体例を示している。処理系列３４１におけるループ前のＳ３２６において、スケジュールＸから２つの境界ｎ（ｎ＝１〜Ｎ、Ｎ＝２）が抽出される。また、スケジュールｍ＝Ｙ０が切り取られ、新たなスケジュールＹ＝Ｙ１とされる。
【００７９】
再帰処理の呼び出し前のＳ３２９（その１）において、まず、スケジュールＸのｎ＝１の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ０、Ｘ１、Ｙ０とされる。このとき、スケジュールＸＬ＝Ｘ２、Ｘ３である。また、スケジュールＹ＝Ｙ１となる。ここで、スケジュールｍを追加したことによる増加アイドル数ＩＤＣＡ＝αが算出される。
【００８０】
マージＲ再帰処理が呼び出されると、処理系列３４２におけるスケジュールＸとして処理系列３４１におけるスケジュールＸＬが割り当てられる。処理系列３４２におけるループ前のＳ３２６において、スケジュールＸから１つの境界ｎ（Ｎ＝１）が抽出される。また、スケジュールｍ＝Ｙ１が切り取られ、新たなスケジュールＹは「空」とされる。
【００８１】
再帰処理の呼び出し前のＳ３２９（その１）において、スケジュールＸのｎ＝１の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ２、Ｙ１とされる。このとき、スケジュールＸＬ＝Ｘ３である。また、スケジュールＹは「空」となる。ここで、スケジュールＸＬにおける増加アイドル数ＩＤＣＡ＝βが算出される。
【００８２】
マージＲ再帰処理が再び呼び出されると、スケジュールＸとして処理系列３４２におけるスケジュールＸＦ＝Ｘ３が割り当てられる。スケジュールＹは「空」であるため、処理系列３４３における戻り値としてスケジュールＺ＝Ｘ３となる。ここで、増加アイドル数ＩＤＣ＝０とされる。
【００８３】
処理系列３４２に戻って、再帰呼出し後のＳ３３１（その１）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝βを戻り値として、処理系列３４１に戻す。
【００８４】
処理系列３４１に戻って、再帰呼出し後のＳ３３１（その１）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ＝Ｘ０、Ｘ１、Ｙ０、Ｘ２、Ｙ１、Ｘ３、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝α＋βが算出される。
【００８５】
さらにｎ＝ｎ＋１として、再帰呼び出し前のＳ３２９（その２）で、処理系列３４１のループ前のＳ３２６でのスケジュールＸのｎ＝２の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ０、Ｘ１、Ｘ２、Ｘ３とされる。このとき、スケジュールＸＬは、「空」となる。また、スケジュールＹ＝Ｙ１となる。ここで、スケジュールｍを追加したことによる増加アイドル数ＩＤＣＡ＝γが算出される。
【００８６】
マージＲ再帰処理が再び呼び出されると、スケジュールＸとして処理系列３４１におけるスケジュールＸＦが割り当てられるが、これは「空」である。スケジュールＹ＝Ｙ１である。よって、このとき、処理系列３４４における戻り値としてスケジュールＺ＝Ｙ１となる。ここで、増加アイドル数ＩＤＣ＝０とされる。
【００８７】
処理系列３４１に戻って、再帰呼出し後のＳ３３１（その２）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ＝Ｘ０、Ｘ１、Ｘ２、Ｘ３、Ｙ０、Ｙ１、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝γが算出される。
【００８８】
この処理では、スケジュールＺの候補が２つであるため、α＋βとγとを比べて少ない方が、マージＲ処理の結果として選択される。
【００８９】
図２５は、引数として、スケジュールＸ＝Ｘ０、Ｘ１、Ｘ２、Ｘ３、スケジュールＹ＝Ｙ０、Ｙ１、Ｙ２が与えられた場合の処理の一例を示している。処理系列３４５におけるループ前のＳ３２６において、スケジュールＸから２つの境界ｎ（ｎ＝１〜Ｎ、Ｎ＝２）が抽出される。また、スケジュールｍ＝Ｙ０が切り取られ、新たなスケジュールＹ＝Ｙ１、Ｙ２とされる。
【００９０】
再帰処理の呼び出し前のＳ３２９（その１）において、まず、スケジュールＸのｎ＝１の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ０、Ｘ１、Ｙ０とされる。このとき、スケジュールＸＬ＝Ｘ２、Ｘ３である。また、スケジュールＹ＝Ｙ１、Ｙ２となる。ここで、スケジュールｍを追加したことによる増加アイドル数ＩＤＣＡ＝αが算出される。
【００９１】
マージＲ再帰処理が呼び出されると、処理系列３４６において、スケジュールＸとして処理系列３４５におけるスケジュールＸＬが割り当てられる。処理系列３４６におけるループ前のＳ３２６において、スケジュールＸから１つの境界ｎ（Ｎ＝１）が抽出される。また、スケジュールｍ＝Ｙ１が切り取られ、新たなスケジュールＹ＝Ｙ２とされる。
【００９２】
再帰処理の呼び出し前のＳ３２９（その１）において、スケジュールＸのｎ＝１の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ２、Ｙ１とされる。このとき、スケジュールＸＬ＝Ｘ３である。また、スケジュールＹ＝Ｙ２となる。ここで、スケジュールＸＬにおける増加アイドル数ＩＤＣＡ＝βが算出される。
【００９３】
マージＲ再帰処理が再び呼び出されると、処理系列３４７において、スケジュールＸとして処理系列３４６におけるスケジュールＸＬが割り当てられる。処理系列３４７におけるループ前のＳ３２６において、スケジュールＸから１つの境界ｎ（Ｎ＝１）が抽出される。また、スケジュールＹからスケジュールｍ＝Ｙ２が切り取られ、新たなスケジュールＹは「空」とされる。
【００９４】
再帰処理の呼び出し前のＳ３２９（その１）において、スケジュールＸのｎ＝１の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ３、Ｙ２とされる。このとき、スケジュールＸＬ、スケジュールＹは、共に「空」となる。ここで、スケジュールＸＬにおける増加アイドル数ＩＤＣＡ＝γが算出される。
【００９５】
マージＲ再帰処理がさらに呼び出されると、スケジュールＸとして処理系列３４７におけるスケジュールＸＬが割り当てられるが、これは「空」である。スケジュールＹも「空」であるため、処理系列３４８における戻り値としてスケジュールＺも「空」となる。ここで、増加アイドル数ＩＤＣ＝０とされる。
【００９６】
処理系列３４７に戻って、再帰呼出し後のＳ３３１（その１）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝γを戻り値として、処理系列３４６に戻す。
【００９７】
処理系列３４６に戻って、再帰呼出し後のＳ３３１（その１）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ＝Ｘ２、Ｙ１、Ｘ３、Ｙ３、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝β＋γが算出される。
【００９８】
処理系列３４５に戻って、再帰呼出し後のＳ３３１（その１）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ＝Ｘ０、Ｘ１、Ｙ０、Ｘ２、Ｙ１、Ｘ３、Ｙ２となる。また、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝α＋β＋γが算出される。
【００９９】
さらにｎ＝ｎ＋１として、再帰呼び出し前のＳ３２９（その２）で、処理系列３４５のループ前のＳ３２６でのスケジュールＸのｎ＝２の境界から分離された後端にスケジュールｍが追加されて、スケジュールＸＦ＝Ｘ０、Ｘ１、Ｘ２、Ｘ３、Ｙ０とされる。このとき、スケジュールＸＬは、「空」となる。また、スケジュールＹ＝Ｙ１、Ｙ２となる。ここで、スケジュールｍを追加したことによる増加アイドル数ＩＤＣＡ＝δが算出される。
【０１００】
マージＲ再帰処理がさらに呼び出されると、スケジュールＸとして処理系列３４５におけるスケジュールＸＬが割り当てられるが、これは「空」である。スケジュールＹ＝Ｙ１、Ｙ２である。よって、このとき、処理系列３４９における戻り値としてスケジュールＺ＝Ｙ１、Ｙ２となる。ここで、増加アイドル数ＩＤＣ＝０とされる。
【０１０１】
処理系列３４５に戻って、再帰呼出し後のＳ３３１（その２）で、スケジュールＺ＝スケジュールＸＦ＋スケジュールＺ＝Ｘ０、Ｘ１、Ｘ２、Ｘ３、Ｙ０、Ｙ１、Ｙ２、増加アイドル数ＩＤＣ＝増加アイドル数ＩＤＣＡ＋増加アイドル数ＩＤＣ＝δが算出される。
【０１０２】
この処理では、スケジュールＺの候補が２つであるため、α＋β＋γと、δとを比べて少ない方が、マージＲ処理の結果として選択される。
【０１０３】
以上説明したように、第１の実施の形態によるＶＤＩサーバ２０では、メモリ２３は、複数系統の動画像に対応する複数系統の符号化対象画像を記憶している。動画像符号化においては、全画面の画面全体が更新される可能性は非常に低い。そこで、符号化結果の更新処理が行われない非更新部分については高速に処理可能な符号化パイプラインを用意することにより、複数の入力を時分割並行処理することでハードウエアコストを削減することが求められる。例えば、符号化処理装置２５のＶＤＩ用動画像符号化ＬＳＩ２９は、メモリ２３に記憶された、複数系統の符号化対象画像のブロック単位に、符号化結果の更新処理が行われない非更新ブロックか否か判定する。ＶＤＩ用動画像符号化ＬＳＩ２９は、非更新ブロックが連続するように、ブロック単位のパイプライン処理における複数系統の符号化対象画像のブロック間のスケジュールを決定する。ＶＤＩ用動画像符号化ＬＳＩ２９は、決定されたスケジュールに基づいてパイプライン処理を行い、複数系統の符号化対象画像を並列に符号化する。
【０１０４】
このとき、ＶＤＩ用動画像符号化ＬＳＩ２９では、パイプライン処理のスケジュールを決定する際に、例えば、複数のブロックライン毎のスケジュールを、更新／非更新の境界数の多い順にソートする。境界数の多い順から、２つずつのスケジュールについて、ＶＤＩ用動画像符号化ＬＳＩ２９は、境界数が等しいか、および先頭ブロックの種別が等しいか、に応じたマージ処理を行う。その際、符号化処理装置２５は、マージされたスケジュールで、境界数の増加を抑制し、かつパイプライン段数−２以下の非更新ブロックの連続する箇所に、非更新ブロックを追加しないようにする。その上で、同一種別のブロックをなるべく連続するようにマージが行われる。マージの方法の候補が複数ある場合、最もアイドル数の増加が少ないスケジュールが採用される。
【０１０５】
以上のように、第１の実施の形態による動画像符号化方法によれば、ＶＤＩサーバ２０における複数系統の符号化対象画像を並列に符号化する際に、パイプライン処理を用いて時分割並行処理することで、従来よりも短時間で処理を完了することができる。ＶＤＩサーバ２０における複数系統の符号化対象画像を並列に符号化する際のパイプライン処理においては、上記スケジュールにより、アイドル数の最も少ないスケジュールを採用することができる。これにより、多数の入力を時分割並行処理する際にも、符号化処理時間を削減することが可能になる。よって、消費電力の削減が可能となると共に、ハードウエアコストの観点でも有利なＶＤＩサーバ２０とすることができる。このように、各ブロックラインのスケジュールを分割して再構成する動的なスケジュール構成を行うので、分割、再構成などを伴わない従来のスケジュールでは成しえない、処理の短縮が実現される。
【０１０６】
なお、メモリ２３は、例えば、その蓄積データ量から、外付けSynchronous Dynamic Random Access Memory（ＳＤＲＡＭ）を含むようにしてもよい。ＧＰＵ２７とＶＤＩ用動画像符号化ＬＳＩ２９とは、一体のＬＳＩとして実装されるようにしてもよい。また、符号化処理装置２５の処理は、例えば、ＣＰＵ２１がメモリ２３に予め記憶された制御プログラムを読み込むことで行われるようにしてもよい。
【０１０７】
（第２の実施の形態）
以下、第２の実施の形態による動画像符号化処理について説明する。第２の実施の形態は、第１の実施の形態の入力部５２の処理の変形例である。第２の実施の形態において、第１の実施の形態と同様の構成及び動作については同一番号を付し、重複説明を省略する。
【０１０８】
第２の実施の形態による動画像符号化装置のハードウエア構成及び機能的な構成は、第１の実施の形態と同様である。図２６は、第２の実施の形態による入力部５２の処理を示すフローチャートである。図２６に示すように、入力部５２は、動画像符号化において、無限ループ処理を開始する（Ｓ３６１）。入力部５２は、無限ループの開始前のイタレーション処理中にＶＭ用バッファ５３に入力された画素に関するループを開始する（Ｓ３６２）。入力部５２は、入力された画素によって、ある入力系統の１ブロック分の画素が揃ったかを判定する。
【０１０９】
１ブロック分の画素が揃った場合（Ｓ３６３：ＹＥＳ）、入力部５２は、処理対象ブロックの更新／非更新判定処理を行う（Ｓ３６４）。入力部５２は、処理対象ブロックの画素のバッファへの書き込みを行う（Ｓ３６５）。Ｓ３６４、Ｓ３６５の処理は、第１の実施の形態における、図１６のＳ２３４、Ｓ２３５の処理と同様である。Ｓ３６５の処理の後、入力部５２は、Ｓ３６３において、１ブロック分の画素が揃わない場合（Ｓ３６３：ＮＯ）とともに、Ｓ３６２からＳ３６６までの、無限ループの前のイタレーション処理中に入力された画素に関するループ処理を行う。終了すると、入力部５２は、Ｓ３６７の処理を行う。
【０１１０】
入力部５２は、符号化処理部５５によるパイプライン処理において、パイプラインがアイドルしているかを判定する（Ｓ３６７）。アイドルしているか否かの判定は、パイプラインスケジュール部５７におけるスケジュール速度と、符号化処理部５５におけるパイプライン処理性能に応じて、様々なバリエーションが考えられる。例えば、パイプライン処理の残りブロック数が、所定数以上であるかで判定されるようにしてもよい。アイドルしていない場合（Ｓ３６７：ＮＯ）、入力部５２は、Ｓ３６９へ処理を進める。アイドルしている場合（Ｓ３６７：ＹＥＳ）、入力部５２は、パイプラインスケジュール部５７へ、パイプラインで未処理のブロックラインに関して、スケジュールを指示する（Ｓ３６８）。入力部５２は、Ｓ３６２からＳ３６８の処理を繰り返す。
【０１１１】
以上説明したように、第２の実施の形態による動画像符号化処理において、入力部５２は、符号化処理部５５におけるパイプライン処理の進捗を検出して、アイドルしている場合に、パイプラインスケジュール部５７へスケジューリングを指示する。
【０１１２】
これにより、第２の実施の形態による動画像符号化処理においては、第１の実施の形態による動画像符号化処理による効果に加え、以下の効果がある。すなわち、無限ループの前のイタレーション、及びパイプライン処理がアイドルしていない間といったある期間に貯まったブロックまたはブロックラインに対してスケジュールが実施される。そして、スケジュールされたブロックまたはブロックラインは、パイプラインに投入される。
【０１１３】
パイプラインがアイドルしている場合にスケジュールの指示が行われるので、複数系統の動画像に対応する符号化対象画像の、フレームレート、画像サイズ等が異なる場合にも、パイプラインのスケジュールが決定され、パイプライン処理が行われる。よって、パイプライン処理を効率よく行うことができ、複数系統の符号化対象画像を並列に符号化する際の符号化処理時間を短縮することが可能となる。
【０１１４】
なお、パイプラインがアイドルしているかを判定する方法は、符号化処理部５５のパイプラインの処理性能に応じて様々なバリエーションが考えられる。例えば「パイプラインの残り処理ブロック数がｓ個（ｓは、０以上の整数）以上であるか？」を判断し、ｓ個未満である場合、アイドルしていると判断するようにしてもよい。また、Ｓ３６８において、パイプラインスケジュール部５７へ未処理のブロックラインに関してスケジュールを指示する代わりに、未処理のブロックに関してスケジュールを指示するようにしてもよい。
【０１１５】
（第３の実施の形態）
以下、第３の実施の形態による動画像符号化処理について説明する。第３の実施の形態は、第１および第２の実施の形態の入力部５２の処理の変形例である。第３の実施の形態において、第１または第２の実施の形態と同様の構成及び動作については同一番号を付し、重複説明を省略する。
【０１１６】
第３の実施の形態による動画像符号化装置のハードウエア構成及び機能的な構成は、第１の実施の形態と同様である。図２７は、第３の実施の形態による入力部５２の処理を示すフローチャートである。図２７に示すように、入力部５２は、動画像符号化において、無限ループ処理を開始する（Ｓ３８１）。入力部５２は、予め決められた一定時間待つ（Ｓ３８２）。このとき、入力部５２には、画素の入力が行われている。
【０１１７】
入力部５２は、無限ループの開始前のイタレーション処理中、およびＳ３８２の処理中に入力された画素に関するループを開始する（Ｓ３８３）。入力部５２は、入力された画素によって、ある入力系統の１ブロック分の画素が揃ったかを判定する（Ｓ３８４）。
【０１１８】
１ブロック分の画素が揃った場合（Ｓ３８４：ＹＥＳ）、入力部５２は、処理対象ブロックの更新／非更新判定処理を行う（Ｓ３８５）。入力部５２は、処理対象ブロックの画素のバッファへの書き込みを行う（Ｓ３８６）。Ｓ３８５、Ｓ３８６の処理は、第１の実施の形態における、図１６のＳ２３４、Ｓ２３５の処理と同様である。入力部５２は、Ｓ３８４において、１ブロック分の画素が揃わない場合（Ｓ３８４：ＮＯ）、およびＳ３８６の処理の後、Ｓ３８４からＳ３８６までの、無限ループの前のイタレーション処理中およびＳ３８２の処理中に入力された画素に関するループ処理を行う。終了すると、入力部５２は、Ｓ３８８の処理を行う。
【０１１９】
入力部５２は、パイプラインスケジュール部５７へ、パイプラインで未処理のブロックラインに関して、スケジュールを指示する（Ｓ３８８）。入力部５２は、Ｓ３８２からＳ３８８の処理を繰り返す（Ｓ３８９）。なお、スケジュールの指示は、ブロックラインに代えてブロックに関して行われるようにしてもよい。
【０１２０】
以上説明したように、第３の実施の形態による動画像符号化処理において、入力部５２は、一定時間待ってから、ブロック毎の種別判定、ＶＭ用バッファ５３への書き込みの処理を行い、パイプラインスケジュール部５７へスケジューリングを指示する。
【０１２１】
これにより、第３の実施の形態による動画像符号化処理においては、第１の実施の形態による動画像符号化処理による効果に加え、以下の効果がある。すなわち、無限ループの前のイタレーション、及び一定時間待つ間といったある期間に貯まったブロックまたはブロックラインに対してスケジュールが実施される。そして、スケジュールされたブロックまたはブロックラインは、パイプラインに投入される。
【０１２２】
このように、ある期間に入力部５２に入力されたブロックまたはブロックラインに関してスケジュールの指示が行われる。よって、複数系統の動画像に対応する符号化対象画像が、フレームレート、画像サイズ等が異なる場合にも、パイプラインのスケジュールを決定され、パイプライン処理が行われる。よって、パイプライン処理を効率よく行うことができ、複数系統の符号化対象画像を並列に符号化する際の符号化処理時間を短縮することが可能となる。
【０１２３】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を採ることができる。符号化処理装置２５が、ＧＰＵ２７とＶＤＩ用動画像符号化ＬＳＩ２９とを有する例を説明したが、これに限定されない。例えば、ＧＰＵ２７とＶＤＩ用動画像符号化ＬＳＩ２９とが一体となったＬＳＩが用いられるようにしてもよい。また、符号化処理装置２５による処理は、ＣＰＵ２１が制御プログラムをメモリ２３から読み出して実行することにより行われるようにしてもよい。上記に説明されたパイプラインの段数は一例であり、これに限定されない。
【０１２４】
上記第１から第３の実施の形態においては、パイプラインの前段に存在するＶＭ用バッファ５３への書き込み時に、ブロック単位の更新／非更新の種別の判定を行う例について説明したが、これに限定されない。例えば、ＶＤＩ用動画像符号化ＬＳＩ２９がラスタスキャンに対応する場合、画素をブロック単位へ変換する際に必要なバッファへの書き込み時に、種別の判定が行われるようにしてもよい。また、各クライアント４０側と、ＶＤＩ用動画像符号化ＬＳＩ２９での処理単位に相違がある場合には、相違を吸収するバッファへの書き込み時に種別の判定が行われるようにしてもよい。
【０１２５】
各フローチャートに記載した処理順序は、記載の例に限定されない。同様の結果を導ける別の処理順序で処理を行うようにしてもよい。例えば、マージの処理順序は、上記の例に限定されず、アイドル時間がなるべく短縮されるように決定されればよい。
【０１２６】
ここで、上記第１から第３の実施の形態による動画像符号化方法の動作をコンピュータに行わせるために共通に適用されるコンピュータの例について説明する。図２８は、標準的なコンピュータのハードウエア構成の一例を示すブロック図である。図２８に示すように、コンピュータ５００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）５０２、メモリ５０４、入力装置５０６、出力装置５０８、外部記憶装置５１２、媒体駆動装置５１４、ネットワーク接続装置５１８等がバス５１０を介して接続されている。
【０１２７】
ＣＰＵ５０２は、コンピュータ５００全体の動作を制御する演算処理装置である。メモリ５０４は、コンピュータ５００の動作を制御するプログラムを予め記憶したり、プログラムを実行する際に必要に応じて作業領域として使用したりするための記憶部である。メモリ５０４は、例えばＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）等である。入力装置５０６は、コンピュータの使用者により操作されると、その操作内容に対応付けられている使用者からの各種情報の入力を取得し、取得した入力情報をＣＰＵ５０２に送付する装置であり、例えばキーボード装置、マウス装置などである。出力装置５０８は、コンピュータ５００による処理結果を出力する装置であり、表示装置などが含まれる。例えば表示装置は、ＣＰＵ５０２により送付される表示データに応じてテキストや画像を表示する。
【０１２８】
外部記憶装置５１２は、例えば、ハードディスクなどの記憶装置であり、ＣＰＵ５０２により実行される各種制御プログラムや、取得したデータ等を記憶しておく装置である。媒体駆動装置５１４は、可搬型記録媒体５１６に書き込みおよび読み出しを行うための装置である。ＣＰＵ５０２は、可搬型記録媒体５１６に記録されている所定の制御プログラムを、媒体駆動装置５１４を介して読み出して実行することによって、各種の制御処理を行うようにすることもできる。可搬型記録媒体５１６は、例えばＣｏｍｐａｃｔ  Ｄｉｓｃ（ＣＤ）−ＲＯＭ、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ（ＤＶＤ）、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリ等である。ネットワーク接続装置５１８は、有線または無線により外部との間で行われる各種データの授受の管理を行うインタフェース装置である。バス５１０は、上記各装置等を互いに接続し、データのやり取りを行う通信経路である。
【０１２９】
上記第１から第４の実施の形態による動画像符号化方法をコンピュータに実行させるプログラムは、例えば外部記憶装置５１２に記憶させる。ＣＰＵ５０２は、外部記憶装置５１２からプログラムを読み出し、メモリ５０４を利用してプログラムを実行することで、動画像符号化の動作を行なう。このとき、まず、動画像符号化の処理をＣＰＵ５０２に行わせるための制御プログラムを作成して外部記憶装置５１２に記憶させておく。そして、入力装置５０６から所定の指示をＣＰＵ５０２に与えて、この制御プログラムを外部記憶装置５１２から読み出させて実行させるようにする。また、このプログラムは、可搬型記録媒体５１６に記憶するようにしてもよい。
【０１３０】
以上の第１から第３の実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数系統の動画像に対応する複数系統の符号化対象画像を記憶する記憶装置と、
前記記憶装置に記憶された、前記複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定し、前記パイプライン処理において複数の非更新ブロックが連続するように、前記パイプライン処理における前記複数系統の符号化対象画像のブロック間の処理順序を決定し、決定された前記処理順序に基づいて前記パイプライン処理を行う符号化部と、
を有することを特徴とする動画像符号化装置。
（付記２）
前記処理順序は、さらに、前記非更新ブロックでないと判定された更新ブロックが連続するように決定される
ことを特徴とする付記１に記載の動画像符号化装置。
（付記３）
前記処理順序は、さらに、前記非更新ブロックと、前記更新ブロックとの境界数の増加をより少なくするように決定される
ことを特徴とする付記１または付記２に記載の動画像符号化装置。
（付記４）
前記処理順序は、さらに、前記パイプライン処理が行われるパイプラインの段数から２を減じた数以下の、前記非更新ブロックが連続した箇所の直後に、連続した前記非更新ブロックの後に処理される非更新ブロックを追加しないように決定される
ことを特徴とする付記１から付記３のいずれか一項に記載の動画像符号化装置。
（付記５）
前記処理順序は、さらに、前記符号化対象画像毎の前記ブロック単位の符号化における処理順と、前記符号化対象画像毎の前記非更新ブロックと前記更新ブロックとの境界の境界数と、前記符号化対象画像を前記境界毎に区切った部分に含まれるブロックが非更新ブロックであるか否かに基づき決定される、
ことを特徴とする付記１から付記４のいずれか一項に記載の動画像符号化装置。
（付記６）
前記処理順序は、さらに、各前記符号化画像を前記境界毎に区切った部分を、前記境界数が多い順序で前記符号化における処理順の早い順に前記境界の増加を少なくするように並べることで決定される
ことを特徴とする付記５に記載の動画像符号化装置。
（付記７）
前記処理順序は、前記符号化対象画像の所定ブロック数毎に決定され、
前記処理順序は、さらに、前記符号化対象画像毎の前記所定ブロック数における先頭ブロックが、前記非更新ブロックであるか否かに基づき決定される
ことを特徴とする付記１から付記６のいずれかに記載の動画像符号化装置。
（付記８）
前記処理順序は、前記符号化対象画像の所定時間内に入力されたブロック毎に決定され、
前記処理順序は、さらに、前記符号化対象画像毎の前記ブロック毎の先頭ブロックが、前記非更新ブロックであるか否かに基づき決定される
ことを特徴とする付記１から付記６のいずれかに記載の動画像符号化装置。
（付記９）
動画像符号化装置が
複数系統の動画像に対応する複数系統の符号化対象画像を記憶し、
記憶された、前記複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定し、
前記パイプライン処理において複数の非更新ブロックが連続するように、前記パイプライン処理における前記複数系統の符号化対象画像のブロック間の処理順序を決定し、
決定された前記処理順序に基づいて前記パイプライン処理を行う
ことを特徴とする動画像符号化方法。
（付記１０）
前記処理順序は、さらに、前記非更新ブロックでないと判定された更新ブロックが連続するように決定される
ことを特徴とする付記９に記載の動画像符号化方法。
（付記１１）
前記処理順序は、さらに、前記非更新ブロックと、前記更新ブロックとの境界数の増加をより少なくするように決定される
ことを特徴とする付記９または付記１０に記載の動画像符号化方法。
（付記１２）
前記処理順序は、さらに、前記パイプライン処理が行われるパイプラインの段数から２を減じた数以下の、前記非更新ブロックが連続した箇所の直後に、連続した前記非更新ブロックの後に処理される非更新ブロックを追加しないように決定される
ことを特徴とする付記９から付記１１のいずれか一項に記載の動画像符号化方法。
（付記１３）
前記処理順序は、さらに、前記符号化対象画像毎の前記ブロック単位の符号化における処理順と、前記符号化対象画像毎の前記非更新ブロックと前記更新ブロックとの境界の境界数と、前記符号化対象画像を前記境界毎に区切った部分に含まれるブロックが非更新ブロックであるか否かに基づき決定される
ことを特徴とする付記９から付記１２のいずれか一項に記載の動画像符号化方法。
（付記１４）
前記処理順序は、さらに、各前記符号化画像を前記境界毎に区切った部分を、前記境界数が多い順序で前記符号化における処理順の早い順に前記境界の増加を少なくするように並べることで決定される
ことを特徴とする付記１３に記載の動画像符号化方法。
（付記１５）
複数系統の動画像に対応する複数系統の符号化対象画像を記憶し、
記憶された、前記複数系統の符号化対象画像をブロック単位のパイプライン処理により符号化する際、符号化結果の更新処理が行われない非更新ブロックか否かをブロック単位に判定し、
前記パイプライン処理において複数の非更新ブロックが連続するように、前記パイプライン処理における前記複数系統の符号化対象画像のブロック間の処理順序を決定し、
決定された前記処理順序に基づいて前記パイプライン処理を行う
処理をコンピュータに実行させるプログラム。
【符号の説明】
【０１３１】
１０        ＶＤＩシステム
２０        ＶＤＩサーバ
２１        ＣＰＵ
２３        メモリ
２５        符号化処理装置
２７        ＧＰＵ
２９        ＶＤＩ用動画像符号化ＬＳＩ
３１        ネットワークインタフェイス
４０        クライアント
４２        ユーザ
４６        ネットワーク
５０        動画像符号化装置
５１        符号化部
５２        入力部
５３        ＶＭ用バッファ
５４        記憶装置
５５        符号化処理部
５７        パイプラインスケジュール部
８０        符号化対象画像
１３０      スケジュール決定例
１３１      スケジュールＸ
１３３      スケジュールＹ
１３７      パイプライン動作スケジュール
１７０      リスト
【図１】
2017005362.tif 000003
【図２】
2017005362.tif 000004
【図３】
2017005362.tif 000005
【図４】
2017005362.tif 000006
【図５】
2017005362.tif 000007
【図６】
2017005362.tif 000008
【図７】
2017005362.tif 000009
【図８】
2017005362.tif 000010
【図９】
2017005362.tif 000011
【図１０】
2017005362.tif 000012
【図１１】
2017005362.tif 000013
【図１２】
2017005362.tif 000014
【図１３】
2017005362.tif 000015
【図１４】
2017005362.tif 000016
【図１５】
2017005362.tif 000017
【図１６】
2017005362.tif 000018
【図１７】
2017005362.tif 000019
【図１８】
2017005362.tif 000020
【図１９】
2017005362.tif 000021
【図２０】
2017005362.tif 000022
【図２１】
2017005362.tif 000023
【図２２】
2017005362.tif 000024
【図２３】
2017005362.tif 000025
【図２４】
2017005362.tif 000026
【図２５】
2017005362.tif 000027
【図２６】
2017005362.tif 000028
【図２７】
2017005362.tif 000029
【図２８】
2017005362.tif 000030