(57)【要約】【課題】  動き予測を用いた画像符号化を行うにあたり、符号化する画像間に依存性があるため複数の符号化部で複数の画像を並列処理できない。【解決手段】  複数の画像のうちＮ番目の画像を符号化する第１の符号化手段と、  前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を符号化する第２の符号化手段を備え、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に基づいて処理を開始するタイミングを適応的に決定する。【選択図】  図１
2014027462.tif 000002
【特許請求の範囲】
【請求項１】
時間軸上に連続する複数の画像を符号化する画像符号化装置であって、
前記複数の画像のうちＮ番目の画像を符号化する第１の符号化手段と、
前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を符号化する第２の符号化手段と、
前記第１の符号化手段及び第２の符号化手段の処理開始タイミングを制御する制御手段と
を備え、
前記制御手段は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した後に、第２の符号化手段による前記最初の処理対象ブロックの処理の開始を指示することを特徴とする画像符号化装置。
【請求項２】
前記第１の符号化手段により処理されたブロックライン数を記録する記録手段
を更に備え、
前記制御手段は、前記記録手段により記録されたブロックライン数が動きベクトル存在範囲の垂直方向に相当するブロックライン数を記録した後に、第２の符号化手段による処理の開始を指示することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第２の符号化手段は、前記最初の処理対象ブロックの動きベクトルに基づいて符号化を行い、
前記動きベクトル存在範囲は、前記動きベクトルを探索する際に参照する前記Ｎ番目の画像の範囲に基づいて決定されることを特徴とする請求項１または請求項２に記載の画像符号化装置。
【請求項４】
前記動きベクトル存在範囲は、前記第１の符号化手段及び第２の符号化手段により符号化された符号化ストリームを入力として復号を行う、画像復号装置が復号可能なパラメータ値の範囲であるレベルに基づいて決定されることを特徴とする請求項１または請求項２に記載の画像符号化装置。
【請求項５】
時間軸上に連続する複数の画像を復号する画像復号装置であって、
前記複数の画像のうちＮ番目の画像を復号する第１の復号手段と、
前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を復号する第２の復号手段と、
前記第１の復号手段及び第２の復号手段の処理開始タイミングを制御する制御手段と
を備え、
前記制御手段は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の復号が完了した後に、第２の復号手段による前記最初の処理対象ブロックの復号の開始を指示することを特徴とする画像復号装置。
【請求項６】
時間軸上に連続する複数の画像を符号化する画像符号化システムであって、
前記複数の画像のうちＮ番目の画像を符号化する第１の符号化手段と、
前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を符号化する第２の符号化手段と、
前記第１の符号化手段及び第２の符号化手段の処理開始タイミングを制御する制御手段と
を備え、
前記制御手段は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した後に、第２の符号化手段による前記最初の処理対象ブロックの処理の開始を指示することを特徴とする画像符号化システム。
【請求項７】
時間軸上に連続する複数の画像を復号する画像復号システムであって、
前記複数の画像のうちＮ番目の画像を復号する第１の復号手段と、
前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を復号する第２の復号手段と、
前記第１の復号手段及び第２の復号手段の処理開始タイミングを制御する制御手段と
を備え、
前記制御手段は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した後に、第２の復号手段による前記最初の処理対象ブロックの処理の開始を指示することを特徴とする画像復号システム。
【請求項８】
時間軸上に連続する複数の画像を符号化する画像符号化方法であって、
前記複数の画像のうちＮ番目の画像を符号化する第１の符号化工程と、
前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を符号化する第２の符号化工程と、
前記第１の符号化工程及び第２の符号化工程の処理開始タイミングを制御する制御工程と
を備え、
前記制御工程は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した後に、第２の符号化工程による前記最初の処理対象ブロックの処理の開始を指示することを特徴とする画像符号化方法。
【請求項９】
時間軸上に連続する複数の画像を復号する画像復号方法であって、
前記複数の画像のうちＮ番目の画像を復号する第１の復号工程と、
前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を復号する第２の復号工程と、
前記第１の復号工程及び第２の復号工程の処理開始タイミングを制御する制御工程と
を備え、
前記制御工程は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した後に、第２の復号工程による前記最初の処理対象ブロックの処理の開始を指示することを特徴とする画像復号方法。
【請求項１０】
コンピュータが読みだして実行することにより、前記コンピュータを請求項１に記載の画像符号化装置として機能させることを特徴とするプログラム。
【請求項１１】
コンピュータが読みだして実行することにより、前記コンピュータを請求項３に記載の画像復号装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像符号化装置及びシステム、画像符号化方法及びプログラム、画像復号装置及びシステム、画像復号方法及びプログラムに関し、特に複数の画像を並列に符号化及び復号するシステムに関する。
【背景技術】
【０００２】
動画像の符号化方式として、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ（以下Ｈ．２６４）が知られている（非特許文献１）。
【０００３】
近年、Ｈ．２６４の後継としてさらに高効率な符号化方式の国際標準化を行う活動が開始され、ＪＣＴ−ＶＣ（Ｊｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）がＩＳＯ／ＩＥＣとＩＴＵ−Ｔの間で設立された。ＪＣＴ−ＶＣでは、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ符号化方式（以下、ＨＥＶＣ）の標準化が進められている（非特許文献２）。
【０００４】
Ｈ．２６４やＨＥＶＣには、符号化効率を向上させるために、画面内の相関を利用して符号化する画面内予測符号化（以下、画面内符号化）及び、画面間の相関を利用して動きを予測し符号化を行う画面間予測符号化（以下、画面間符号化）の両方が採用されている。この画面間符号化においては、符号化のブロック単位で参照する画像（以下、参照画像）から符号化対象の画像（以下、対象画像）への動きの大きさを示す、動きベクトルが探索される。探索された動きベクトルは、対象画像の予測残差と同様に符号化が行われ、画像符号化装置の出力である符号化ストリームの一部として多重化される。
【０００５】
また、動画像の画像サイズ及び毎秒フレーム数の増加に伴い、従来の動画像より高画質な映像を記録及び再生することが要求されている。このような映像をリアルタイムで符号化する場合、単一の画像符号化装置では一般的には処理性能が不足してしまう。このため、複数の画像符号化装置を使用して複数画像を並列に符号化処理することが検討されている。
【０００６】
また、画面間符号化の動きベクトル探索における参照画像は、画像符号化装置と画像復号装置で同じ画像を使用する必要があるため、画像符号化装置内部で復号を行う、局所復号という処理によって参照画像を生成することが一般的である（特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−２１９４２８
【非特許文献】
【０００８】
【非特許文献１】ＩＴＵ−Ｔ  Ｈ．２６４  （０３／２０１０）  Ａｄｖａｎｃｅｄ  ｖｉｄｅｏ  ｃｏｄｉｎｇ  ｆｏｒ  ｇｅｎｅｒｉｃ  ａｕｄｉｏ  ｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ
【非特許文献２】ＪＣＴ−ＶＣ  寄書  ＪＣＴＶＣ−Ｆ３３５．ｄｏｃ  インターネット＜  ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／６＿Ｔｏｒｉｎｏ／ｗｇ１１／  ＞
【発明の概要】
【発明が解決しようとする課題】
【０００９】
複数の画像符号化装置を使用して複数画像を並列に画面間符号化する場合、時間軸上において隣接する画像を参照画像とする。このとき、画面間符号化に必要な同一の参照画像が異なる画像符号化装置によって符号化及び局所復号が行われている最中である、という状況が発生する。このような状況においては、参照画像の符号化及び局所復号が完了するまで画面間符号化を開始できず、複数画像の並列符号化ができないという課題がある。
【００１０】
このような画面間予測における画像間の依存性を避けるために、時間軸上において離れた画像を参照画像として、複数画像の並列符号化を行うことも可能である。しかしながら画面間符号化においては、時間軸上において近い画像ほど画像間の相関が高いことが一般的である。従って、時間軸上において離れた画像を参照画像として画面間符号化する場合、近い画像を参照画像として画面間符号化する場合に比べ圧縮効率が劣化する。その結果、画像符号化装置の出力である符号化ストリームのデータサイズが大きくなってしまうという課題がある。
【００１１】
本発明は上記課題を鑑みて提案されたものであり、特定の符号化ストリームの構成に依存せず、かつ高い符号化効率を維持しながら複数の符号化部による高い処理性能を備えた画像符号化装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明の画像符号化装置は下記の構成を有する。すなわち、時間軸上に連続する複数の画像を符号化する画像符号化装置であって、前記複数の画像のうちＮ番目の画像を符号化する第１の符号化手段と、前記Ｎ番目の画像を参照することにより、当該Ｎ番目の画像と連続するＮ＋１番目の画像を符号化する第２の符号化手段と、前記第１の符号化手段及び第２の符号化手段の処理開始タイミングを制御する制御手段とを備え、前記制御手段は、前記Ｎ番目の画像の一部分であって、前記Ｎ＋１番目の画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の符号化が完了した後に、第２の符号化手段による前記最初の処理対象ブロックの符号化の開始を指示することを特徴とする。
【発明の効果】
【００１３】
本発明に係る画像符号化装置によれば、高い符号化効率を維持したまま、複数の符号化部によって複数画像の並列処理を行うことで、符号化の処理性能を向上させることが可能になる。また、複数の復号部を使用して複数画像の並列復号処理を行うことで復号の処理性能を向上させることも可能になる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１の画像符号化装置を示す図
【図２】実施形態１の各画像の符号化方法及び画像間の参照関係を示す図
【図３】実施形態１の一画像のマクロブロックを示す図
【図４】実施形態１の符号化処理のタイミングチャートを示す図
【図５】実施形態２のレベルに基づいた動きベクトルの垂直方向の最大値を示す図
【図６】実施形態２の符号化処理タイミングチャートを示す図
【図７】実施形態３の画像復号装置を示す図
【図８】実施形態３の復号処理のタイミングチャートを示す図
【図９】実施形態４の各画像の符号化方法及び画像間の参照関係を示す図
【図１０】実施形態５のスライスとタイルの例を示す図
【図１１】実施形態６の画像符号化装置を示す図
【図１２】実施形態６の符号化処理のタイミングチャートを示す図
【図１３】実施形態７の画像符号化装置を示す図
【図１４】実施形態８の各符号化スレッドのフローチャートを示す図
【図１５】実施形態８のセマフォを使用してマクロブロックライン数を入力する場合のフローチャートを示す図
【図１６】実施形態８のセマフォを使用してマクロブロックライン数を出力する場合のフローチャートを示す図
【発明を実施するための形態】
【００１５】
＜実施形態１＞
以下、本発明の実施形態１を、図面を用いて説明する。図１は、本実施形態１における画像符号化装置を示す図である。
【００１６】
図１に示す画像符号化装置は、ＣＰＵ１０１、第１符号化部１０２及び第２符号化部１１２、メモリバス１０８、メモリコントローラ１０９、主記憶部１１０、割り込みコントローラ１１１、レジスタバス１１８を有する。本実施形態では、時間軸上に連続する複数の画像、すなわち動画を符号化する画像符号化装置について説明する。
【００１７】
図１の第１符号化部１０２における符号化方法について、図２を用いて説明する。図２は、本実施形態における各画像の符号化方法を示す図である。
【００１８】
本実施形態では、１枚目の画像以降、１５枚に１枚の画像（図２においては１番目と１６番目）を、画面内予測を使用した画面内予測符号化（以下、画面内符号化）により符号化する。図２において、前記画面内符号化する画像をＩ１、Ｉ１６と表記する。一方、その他の画像（例えば２枚目から１５枚目の画像）は、動き予測を用いた画面間符号化により符号化される。図２において、動き予測における矢印は画像間の参照関係を示している。画面間符号化を行う各画像は、直近の過去の１枚を参照画像とする。図２において、前記参照画像を１枚使用する画像は、Ｐ２、Ｐ３のように表記される。
【００１９】
本実施形態において、画面内符号化された画像と画面間符号化された画像から構成されるグループを画像グループと呼ぶ。図２において、Ｉ１〜Ｐ１５を１画像グループとする。また、画面間符号化における動き予測の際の画像間の参照関係を画像グループ構造と呼ぶ。
【００２０】
本実施形態において、図１の第１符号化部１０２は、図２における奇数番目（１番目、３番目、５番目、（略）、（２Ｎ−１）番目）の画像の符号化を行う。尚、Ｎは任意の正の整数（Ｎ＞０）である。一方、第２符号化部１１２は、偶数番目（２番目、４番目、６番目、（略）、（２Ｎ））の画像の符号化を行う。また、第１符号化部１０２がＮ番目の画像を符号化した場合、第２符号化部１１２は当該Ｎ番目の画像を参照することによりＮ＋１番目の画像を符号化する。
【００２１】
第１符号化部１０２は、第１符号化制御部１０３、ダイレクト・メモリアクセス・コントローラ（ＤＭＡＣ）１０４及び１０７、動き予測部１０５、予測残差符号化及び局所復号部１０６を有する。第２符号化部１１２の内部構成は、第１符号化部１０２と同じである。
【００２２】
本実施形態において、第１符号化部１０２及び第２符号化部１１２は、マクロブロックと呼ばれる水平方向１６画素、垂直方向１６画素（本実施形態では以下、１６×１６画素と表記する。画素数が変化しても同様である）のブロック単位で符号化を行う。図３は、本実施形態における符号化対象である入力画像とマクロブロックの関係について示す図である。本実施形態における入力画像は、１９２０×１０８８画素であり、水平方向１２０マクロブロック、垂直方向６８マクロブロックから構成される。つまり、本実施形態において、１マクロブロックは入力画像の一部分である。一般的な画像符号化においては、ブロック毎のラスタ・スキャン順により符号化が行われる。例えば、図３に示すように、（０、０）→（１、０）→（２、０）→（略）→（１１９、０）→（０、１）→（略）→（１１９、１）→（略）→（１１９、６７）の順で各マクロブロックの符号化が行われる。尚、（Ｘ、Ｙ）は水平方向の座標位置がＸ、垂直方向の座標位置がＹであるマクロブロックを示す。
【００２３】
ＣＰＵ１０１は、符号化パラメータをレジスタバス１１８経由で第１符号化制御部１０３及び第２符号化制御部１１３内部のレジスタに設定する。ここで符号化パラメータとは、量子化パラメータや、各画像を画面内符号化するか若しくは画面間符号化するかを決定する情報など、符号化に用いられるパラメータである。符号化パラメータが第１符号化制御部１０３及び第２符号化制御部１１３内部のレジスタに設定された後、ＣＰＵ１０１は、レジスタ設定により、第１符号化制御部１０３及び第２符号化制御部１１３に符号化動作開始の指示を行う。このレジスタ設定は、ユーザーの操作や外部からの動作指示に基づく設定であり、一般的に符号化パラメータ設定と動作設定の両方を兼ねる。また、後述するように、ＣＰＵ１０１は第１符号化制御部１０３及び第２符号化制御部１１３から符号化が完了したマクロブロックラインの数をレジスタバス１１８経由で読み込む。
【００２４】
メモリバス１０８は、ＣＰＵ１０１及び第１符号化部１０２及び第２符号化部１１２から発行されるメモリ転送要求をメモリコントローラ１０９に伝達する。メモリコントローラ１０９は、メモリバス１０８から伝達されたメモリ転送要求を主記憶部１１０への命令に変換し、データの読み出し及び書き込みを行う。主記憶部１１０は、メモリコントローラ１０９からの命令に基づいて書き込み要求があったデータを記録し、読み出し要求があったデータを出力する。
【００２５】
尚、本実施形態において入力画像を生成する処理（例えばデジタルカメラにおける撮像センサからの読み出し、Ａ／Ｄ変換及び現像処理）は十分に高速であり、入力画像は主記憶部１１０上において常に利用可能であるものとする。
【００２６】
第１符号化部１０２及び第２符号化部１１２の内部動作について以下に示す。
【００２７】
第１符号化制御部１０３は、ＣＰＵ１０１からレジスタバス１１８経由で動作開始命令を受け、内部の各処理を制御する。ＤＭＡＣ１０４は、入力画像をマクロブロック毎に主記憶部１１０から読み込み、レジスタバス１１８経由で動き予測部１０５に出力する。動き予測部１０５は、ＤＭＡＣ１０４から受け取った入力マクロブロックの画面間予測を行うべく、参照画像中の必要な領域を主記憶部１１０から読み込み、予め定められた動きベクトル探索アルゴリズムに基づいて動きベクトル探索を行う。
【００２８】
動き予測部１０５は、発生する符号量が最も少なくなると推測される動きベクトルを符号化で使用する動きベクトルとして決定する。動き予測部１０５は、決定された動きベクトルを用いて動き予測を行った予測残差を、予測残差符号化及び局所復号部１０６に出力する。また、動き予測部１０５は、符号化で使用する動きベクトルも予測残差符号化及び局所復号部１０６に出力する。尚、符号化対象画像が画面内符号化を行う画像である場合には、動き予測部１０５は入力マクロブロックをそのまま予測残差符号化及び局所復号部１０６に出力する。
【００２９】
予測残差符号化及び局所復号部１０６は、動き予測部１０５から出力された予測残差に対して、予測残差符号化を行う。予測残差に対する予測残差符号化は、一般的に直交変換、量子化及びエントロピー符号化を含む。尚、予測残差符号化は、直交変換、量子化及びエントロピー符号化のうちいずれかが欠けていても良い。例えば静止画において、量子化を含まない予測残差符号化方式もある。さらに、予測残差符号化及び局所復号部１０６は、動き予測部１０５から受け取った動きベクトルに対しても、同一画像における周辺の動きベクトルからの予測及びエントロピー符号化を行う。
【００３０】
符号化された予測残差及び動きベクトルは、符号化ストリームとして多重化され、多重化された符号化ストリームは、ＤＭＡＣ１０７経由で主記憶部１１０に記録される。尚、対象画像が画面内符号化を行う画像である場合、予測残差符号化及び局所復号部１０６は、入力マクロブロックの画面内予測を行った後に予測残差符号化を行う。
【００３１】
さらに、予測残差符号化及び局所復号部１０６は、直交変換及び量子化を行った予測残差について逆量子化、逆直交変換を行って予測残差を復号する。また、予測残差符号化及び局所復号部１０６は、動き予測が使用されたかもしくは画面内予測が使用されたかという情報に基づいて、動き予測が使用された場合は動き補償を行う。この一連の復号処理は局所復号と呼ばれる。予測残差符号化及び局所復号部１０６は、局所復号を行うことにより画面間符号化における参照画像を生成する。生成された参照画像は、レジスタバス１１８を経由して主記憶部１１０に記録される。予測残差符号化及び局所復号部１０６は、局所復号処理の完了後、当該マクロブロックの符号化処理が完了した旨を第１符号化制御部１０３に通知する。
【００３２】
第１符号化制御部１０３は、符号化が完了したマクロブロック数をカウントする。後述するように、符号化が完了したマクロブロック数が、画像の水平方向のサイズに相当する１マクロブロックライン（本実施形態においては１２０マクロブロック）に到達する毎に、割り込みコントローラ１１１経由でＣＰＵ１０１に割り込みを発生させる。次に、第１符号化部１０２による符号化処理が完了したマクロブロックライン数をレジスタバス１１８経由でＣＰＵ１０１に伝達する。第２符号化部１１２の内部動作は、第１符号化部１０２の内部動作と同じであるため記述は省略する。
【００３３】
割り込みコントローラ１１１は、第１符号化制御部１０３及び第２符号化制御部１１３から出力される割り込みがあった際には、予め第１符号化制御部１０３及び第２符号化制御部１１３の内部に設定された割り込みに関するレジスタ値を読み出す。そして、割り込みコントローラ１１１は、読み出したレジスタ値に基づいて適応的にＣＰＵ１０１に伝達する。当該割り込みに関するレジスタ値は、割り込みコントローラ１１１が割り込みをマスクするか否か、及び各割り込みの優先度を設定するために用いられる。そして、レジスタバス１１８は、ＣＰＵ１０１から発行されるレジスタ読み出し／書き込み要求を、割り込みコントローラ１１１、第１符号化制御部１０３及び第２符号化制御部１１３内部のレジスタアクセスとして伝達する。
【００３４】
第１符号化部１０２及び第２符号化部１１２は、前述のように予め定められた動きベクトル探索アルゴリズムにより動きベクトル探索を行う。この動きベクトル探索アルゴリズムでは、動きベクトルの水平方向及び垂直方向の最大値は予め決まっており、動きベクトルが存在する可能性のある範囲である動きベクトル存在範囲（以下、動きベクトル存在範囲）は既知であることが一般的である。そして、本実施形態における動きベクトル探索アルゴリズムでは、動きベクトル存在範囲が既知である。ＣＰＵ１０１は、レジスタバス１１８経由で動きベクトルに関する所定のレジスタ値を読み出すことにより、第１符号化部１０２及び第２符号化部１１２における動きベクトル存在範囲を符号化処理開始前に把握することが可能である。
【００３５】
第１符号化制御部１０３及び第２符号化制御部１１３における符号化処理及びＣＰＵ１０１との情報伝達を図４のタイミングチャートを用いて示す。
【００３６】
図４は、水平方向に時刻を示し、第１符号化部１０２及び第２符号化部１１２における処理内容（どのフレームを符号化しているか）及び符号化が完了したマクロブロックラインの状況を示す。図４における符号化処理が完了したマクロブロックライン数は、現在符号化を行っているマクロブロックの垂直座標位置と同じ数になる。例えば、符号化を行っているマクロブロックが図３に示される状況である場合、２マクロブロックラインの符号化処理が完了している。尚、本実施形態において、動きベクトル探索アルゴリズムによって決まる垂直方向の動きベクトル存在範囲は、−３２画素〜３１画素である（５マクロブロック分）とする。
【００３７】
ＣＰＵ１０１からの動作開始指示に基づき、第１符号化部１０２は、時刻ｔ１において１番目の画像の画面内符号化を開始する。時刻ｔ１においては２番目の画像を画面間符号化する第２符号化部１１２は、動き探索で使用する参照画像が生成されていないため、符号化を開始することができない。
【００３８】
画像右端のマクロブロックの符号化が完了すると、第１符号化制御部１０３は、符号化が完了したマクロブロックラインの数を第１符号化制御部１０３内部のレジスタに反映させ、割り込みコントローラ１１１経由でＣＰＵ１０１に割り込みを通知する。
【００３９】
ＣＰＵ１０１は、当該割り込みを受け付けると、レジスタバス１１８経由で第１符号化制御部１０３から符号化が完了したマクロブロックラインの数を読み込む。そして、ＣＰＵ１０１は当該第１符号化制御部１０３の内部に割り込みクリアに関するレジスタ値を設定することで当該割り込みをクリアする。
【００４０】
動きベクトル存在範囲が−３２画素〜３１画素の場合、２番目の画像の第１マクロブロックライン中の各マクロブロック（１６×１６画素）が画面間予測において参照する可能性があるのは、１番目の画像の垂直方向０〜４７画素である。第１符号化部１０２により動きベクトル存在範囲である垂直０画素〜４７画素（３マクロブロックライン分）の符号化が完了する。すると、第２符号化部１１２における第１マクロブロックラインのマクロブロックが必要とする参照画像が利用可能になっているということが保証される。ＣＰＵ１０１は、割り込みが通知されるごとに第１符号化制御部１０３から符号化が完了したマクロブロックライン数を読み出し、第２符号化部１１２における参照画像が利用可能になっているかを判定する。時刻ｔ２において、第１符号化部１０２の処理が完了したマクロブロックライン数が３に達したため、ＣＰＵ１０１は、第２符号化部１１２に画面間符号化による２番目の画像の第１マクロブロックライン（最初の処理対象ブロック）の符号化処理の開始を指示する。
【００４１】
第１符号化部１０２と第２符号化部１１２の間で処理速度に差が発生することが一般的である。そのため、画面間符号化において、マクロブロックライン毎に参照画像が利用可能であることを確認する必要がある。よって、第２符号化部１１２は、マクロブロックラインの処理が完了する毎に、符号化が完了したマクロブロックライン数を第２符号化制御部１１３の内部のレジスタに反映させる。そして、第２符号化部１１２は、ＣＰＵ１０１に割り込みを通知し、符号化処理を中断する。
【００４２】
ＣＰＵ１０１は、第２符号化部１１２が各マクロブロックラインを画面間符号化するために、参照画像が利用可能であるか否かを、第１符号化部１０２から取得した符号化が完了したマクロブロックライン数より判定する。例えば、第２符号化部１１２が２番目のマクロブロックラインの符号化を開始するために、ＣＰＵ１０１は第１符号化部１０２における符号化が完了したマクロブロックライン数が４に達している必要がある。参照画像が利用可能である場合、ＣＰＵ１０１は第２符号化部１１２に符号化処理再開を指示する。参照画像が利用可能でない場合、利用可能になるまで第２符号化部１１２への符号化処理の再開指示は行わない。
【００４３】
上記処理を画像内の全てのマクロブロックライン分繰り返す。第１符号化部１０２は時刻ｔ３において１番目の画像の符号化処理を完了し、第２符号化部１１２は時刻ｔ５において２番目の画像の符号化処理を完了する。
【００４４】
ＣＰＵ１０１は、第１符号化部１０２が３番目の画像を画面間予測で符号化するために、第１符号化部１０２の動きベクトル存在範囲と第２符号化部１１２によって符号化処理が完了したマクロブロックライン数を照らし合わせる。ただし、第１符号化部１０２の動きベクトル存在範囲は動きベクトル探索アルゴリズムから決まる。また、本実施形態における画像の垂直サイズは、動きベクトル存在範囲の垂直サイズに比べて十分大きい。このため、第２符号化部１１２の符号化処理が極端に低速でない限り、参照画像の必要な領域は利用可能である。ＣＰＵ１０１は、参照画像上の必要な領域が利用可能であることを確認した後、第１符号化部１０２に３番目の画像の画面間符号化による符号化処理の開始を時刻ｔ４において指示する。
【００４５】
ＣＰＵ１０１は、３番目、４番目の画像に対してもマクロブロックラインの処理開始前に参照画像が利用可能であるかどうかを判定し、第１符号化部１０２及び第２符号化部１１２の処理動作を開始するタイミング（以下、処理開始タイミング）を決定する。
【００４６】
上記のように、ＣＰＵ１０１は、動きベクトル探索アルゴリズムにより予め定まる動きベクトル存在範囲に基づいて、第１及び第２の各符号化部における処理開始タイミングを調整する。これにより、第１符号化部１０２及び第２符号化部１１２は、画面間符号化において連続フレームを並列符号化処理が可能になり、処理性能を高速化することができる。更に、高い符号化効率を維持して符号化することができる。
【００４７】
尚、Ｈ．２６４等の標準符号化方式における動きベクトルは、非整数画素精度で使用できることが一般的である。非整数画素の生成にはフィルタ処理が必要なため、非整数画素精度で動きベクトルを使用する際に、マクロブロックの動きベクトル探索を行うために必要な参照画像の範囲は、動きベクトルの最大値に比べて水平・垂直方向共に２〜３画素程度増加する。よって、動き予測における画像間の依存性が無くなるためには、動きベクトル存在範囲が含まれるマクロブロックライン数より１マクロブロックライン分多く、符号化処理の開始及び再開を待つ必要がある。よって、図４のタイミングチャートにおいて、非整数画素精度の動きベクトルの使用を前提とする場合、ＣＰＵ１０１は第１符号化部１０２による４マクロブロックラインの符号化完了を待ってから、第２符号化部１１２に２番目の画像の符号化処理開始を指示する。
【００４８】
本実施形態では、第１符号化制御部１０３及び第２符号化制御部１１３からＣＰＵ１０１への割り込み通知は、各マクロブロックラインの完了時に行うとしているが、本発明はこれに限定されない。並列符号化処理の開始を早めるために、１マクロブロックが完了する度に参照画像が利用可能になっているか否かを確認し、符号化を開始することも可能である。その場合、垂直方向のみならず、水平方向の動きベクトル存在範囲を考慮する必要がある。ただし、各マクロブロックの符号化が完了する度にＣＰＵ１０１への割り込みが発生するため、割り込みの発生回数は大幅に増加する。
【００４９】
一方、ＣＰＵ１０１への割り込みの発生回数をより少なくするために、予め定められた複数のマクロブロックライン数が完了する度にＣＰＵ１０１への割り込みを発生させ、符号化処理の開始が可能か否かを判断することも可能である。この場合、複数画像の並列符号化の処理開始タイミングがやや遅くなる。
【００５０】
上記ＣＰＵ１０１への割り込みの発生回数は、第１符号化制御部１０３及び第２符号化制御部１１３に符号化開始前に割り込み発生回数に関する所定のレジスタ設定を行うことで調整させることが可能である。
【００５１】
尚、本発明で使用する画像符号化方式は、Ｈ．２６４に限定されず画面間予測を行ういかなる画像符号化方式も適用することが可能である。また、符号化の単位であるブロックのサイズも１６×１６画素のマクロブロックに限定されない。例えば、ＨＥＶＣ（非特許文献２参照）で規定されている３２×３２画素や６４×６４画素をブロックサイズとして使用することが可能である。
【００５２】
また、動きベクトル探索アルゴリズムに基づいて決定される動きベクトルの垂直方向の最大値も上記に限定されず、−５１２画素〜５１１．７５画素等、より大きな最大値や、非整数画素の動きベクトルが最大値となる場合にも適用可能である。
【００５３】
また、本発明は特定の動きベクトル探索アルゴリズムに限定されず、動きベクトル存在範囲が予め特定される、どのような動きベクトル探索アルゴリズムにも適用することが可能である。さらに、画像グループ構造も図３で示した構成に限定されず、いかなる画面内符号化と画面間符号化の組み合わせにも本実施形態を適用することが可能である。
【００５４】
＜実施形態２＞
本実施形態に示す画像符号化装置は、レベルを用いて動きベクトル存在範囲を算出する。このレベルはＨ．２６４やＨＥＶＣ等の画像符号化国際標準で一般的に使用されている、画像復号装置が復号可能なパラメータ値の範囲を示す情報である。
【００５５】
実施形態１の画像符号化装置は、動きベクトル探索アルゴリズムに基づいて動きベクトル存在範囲を算出していた。しかし、符号化部の動きベクトル探索アルゴリズムが開示されておらず動きベクトル存在範囲が不明である場合や、動きベクトル存在範囲が定まらないアルゴリズムが採用されている場合がある。この場合、実施形態１の構成では予め動きベクトル存在範囲を算出することができない。
【００５６】
そこで、本実施形態では、レベルを用いて動きベクトル存在範囲を算出し、符号化する画像符号化装置について説明する。このレベルは、符号化ストリームのヘッダに含まれる情報であるため、画像符号化装置と画像復号装置の両方で参照することが可能である。また、Ｈ．２６４等の画像符号化国際標準では、このレベルに基づいて、動きベクトルの垂直方向の最大値が制限されることが一般的である。
【００５７】
本実施形態における画像符号化装置の構成は、図１に示した実施形態１と同じ構成であるため記述を省略する。また、本実施形態におけるレベルは図５におけるレベル４、動きベクトルの垂直方向の正の最大値は２５５．７５画素であるとする。
【００５８】
図５は、レベルに基づいた動きベクトルの垂直方向の最大値の例を示す表である。図５における各レベルは、復号部が復号可能な画像の最大サイズ（画像内における最大マクロブロック数で示している）と動きベクトルの巣直方向の最大値を規定している。尚、図５において、動きベクトルの最大値は正の値と負の値が規定されているが、符号化及び復号前に参照画像が利用可能か否かは、動きベクトルの正の最大値のみに依存する。このため、本実施形態では、動きベクトルの正の最大値を使用する。
【００５９】
図６は、図２の画像グループ構造及び符号化対象画像割り当てで符号化を行う場合のタイミングチャートを示す図である。動きベクトルの垂直方向の正の最大値である２５５．７５に対応する１８マクロブロックラインの符号化が第１符号化部１０２により完了するまで待ってから、第２符号化部１１２の動作が開始される。
【００６０】
また、第２符号化部１１２が２番目の画像の符号化を完了した時刻ｔ５の直後においては、第１符号化部１０２による３番目の画像（４番目の画像にとっての参照画像）の符号化処理の進捗が十分でない。従って、ＣＰＵ１０１は第２符号化部１１２に対して（第１符号化部１０２の符号化が完了したマクロブロックライン数が１８になる）時刻ｔ６まで待ってから、４番目の画像の符号化処理の動作開始を指示している。
【００６１】
上記の画像符号化装置の構成によれば、動きベクトル探索アルゴリズムからは動きベクトル存在範囲が算出できない場合でも、レベルを使用して動きベクトル存在範囲を算出することができる。よって、本実施形態においても動きベクトル存在範囲を用いて複数の符号化部による複数画像の並列符号化処理を実現することができる。尚、前述の実施形態１同様にレベルや動きベクトル存在範囲、ブロックサイズは上記に限定されない。
【００６２】
＜実施形態３＞
実施形態１における、動きベクトル探索アルゴリズムに関する情報は、一般に符号化ストリームには含まれない。よって、圧縮された符号化ストリームを入力して復号を行う画像復号装置において、動きベクトル探索アルゴリズムに基づいた動きベクトル存在範囲を算出することができない。
【００６３】
また、実施形態２では、画像復号装置が復号可能なパラメータ値の範囲を示すレベルを用いて動きベクトル存在範囲を算出する画像符号化装置を示した。本実施形態では、実施形態２のレベルを用いた画像符号化装置で符号化された符号化ストリームを、レベルを用いて復号する画像復号装置について示す。
【００６４】
図７は、本発明の実施形態３における画像復号装置を示す図である。図７の画像復号装置は、ＣＰＵ７０１、第１復号部７０２及び第２復号部７１２、メモリバス７０８、メモリコントローラ７０９、主記憶部７１０、割り込みコントローラ７１１、レジスタバス７１８を有する。メモリバス７０８、メモリコントローラ７０９、主記憶部７１０、割り込みコントローラ７１１、レジスタバス７１８は、実施形態１における図１と同じ動作を行うため記述を省略する。
【００６５】
ＣＰＵ７０１は、ユーザーの操作や外部からの動作指示に基づいて、レジスタバス７１８経由で第１復号制御部７０３及び第２復号制御部７１３のレジスタに、復号動作開始の指示を設定する。ＣＰＵ７０１は、さらに第１復号制御部７０３及び第２復号制御部７１３から復号が完了したマクロブロックライン数をレジスタバス７１８経由で受け取る。
【００６６】
第１復号部７０２は、第１復号制御部７０３、ダイレクト・メモリアクセス・コントローラであるＤＭＡＣ７０４、第１予測残差復号部７０５、動き補償部７０６、ＤＭＡＣ７０７を有する。
【００６７】
第１復号制御部７０３は、ＣＰＵからの動作開始命令を受けて内部の各処理を制御する。ＤＭＡＣ７０４は、入力である符号化ストリームを主記憶部７１０から読み込み、第１予測残差復号部７０５に出力する。
【００６８】
第１予測残差復号部７０５は、圧縮ストリームのエントロピー復号、逆直交変換及び逆量子化を行い、予測残差を復号する。復号された予測残差は、第１予測残差復号部７０５から動き補償部７０６に出力される。復号しているマクロブロックが画面内予測で符号化されている場合、復号を行った後に、動き補償部７０６に出力する。第１予測残差復号部７０５は、さらに符号化ストリームに多重化されている動きベクトルの復号も行い、動き補償部７０６に出力する。
【００６９】
動き補償部７０６は、第１予測残差復号部７０５から受け取った動きベクトルに基づいて参照画像を主記憶部７１０から読み込み、予測残差の動き補償を行う。動き補償が行われた復号画像は、動き補償部７０６からＤＭＡＣ７０７に出力され、主記憶部７１０に書き込まれる。尚、動き補償部７０６は、復号しているマクロブロックが画面内予測で符号化されている場合、そのままＤＭＡＣ７０７へ出力する。
【００７０】
動き補償部７０６は、動き補償処理の完了後、当該マクロブロックの復号処理が完了した旨を第１復号制御部７０３に通知する。
【００７１】
第１復号制御部７０３は、復号が完了したマクロブロック数をカウントする。実施形態１と同じく、各マクロブロックラインの復号が完了すると、割り込みコントローラ７１１経由でＣＰＵ７０１に割り込みを通知し、動き補償処理が完了したマクロブロックライン数をレジスタバス７１８経由でＣＰＵ７０１に伝達する。
【００７２】
第２復号部７１２の内部動作は、第１復号部７０２と同じであるため記述を省略する。
【００７３】
第１復号部７０２及び第２復号部７１２の復号処理における、レベルに基づいて決まる動きベクトル存在範囲を用いた複数フレームの並列復号処理及びＣＰＵ７０１との通信を図８のタイミングチャートを用いて示す。尚、本実施形態において、復号対象である符号化ストリームの画像サイズは図３と同じく１９２０×１０８８画素、レベルは図５記載のレベル４、動きベクトルの垂直方向の正の最大値は２５５．７５画素であるとする。符号化ストリームは、実施形態１と同じく、図２の画像グループ構造で符号化が行われているものとする。第１復号部７０２は奇数番目の画像の復号を行い、第２復号部７１２は偶数番目の画像の復号を行う。
【００７４】
尚、本実施形態において、符号化ストリームは各画像の圧縮データにランダムアクセス可能なファイルフォーマットで構成されており、ＤＭＡＣ７０４は復号対象画像の先頭データを直接読み込むことが可能である。
【００７５】
ＣＰＵ７０１からの動作開始指示に基づき、第１復号部７０２は時刻ｔ１において、符号化ストリーム中の画面内符号化された１番目の画像に対して復号（画面内復号）を開始する。時刻ｔ１において、画面間符号化された２番目の画像の復号（画面間復号）は動き補償に用いる参照画像が生成されていないため、第２復号部７１２は復号処理を開始することができない。第１復号部７０２によって画像の右端のマクロブロックラインの復号処理が完了すると、第１復号制御部７０３は内部のレジスタに復号が完了したマクロブロックラインの数を反映させ、割り込みコントローラ７１１経由でＣＰＵ７０１に割り込みを通知する。
【００７６】
ＣＰＵ７０１は、割り込みを受け、レジスタバス７１８経由で復号が完了したマクロブロックラインの数を第１復号制御部７０３から読み込む。そして、ＣＰＵ７０１は当該第１復号制御部７０３からの割り込みをクリアする。前述の通り、本実施形態において、動きベクトルの垂直方向の正の最大値は２５５．７５画素であり、１７マクロブロックラインに包含される。さらに、本実施形態においては非整数画素動きベクトルの存在を前提としており、動き補償に用いる参照画素の生成には、１マクロブロックライン多い１８マクロブロックラインの復号が完了している必要がある。
【００７７】
図８に示すように、時刻ｔ２において第１復号部７０２における復号が完了したマクロブロックライン数が１８に達すると、ＣＰＵ７０１は参照画像が利用可能になっていることを確認し、第２復号部７１２の復号動作の開始を指示する。
【００７８】
第２復号部７１２は、２番目の画像の画面間復号処理を行うにあたり、マクロブロックラインの復号が完了する度に、復号が完了したマクロブロックライン数をレジスタバス７１８経由でＣＰＵ７０１に伝達する。また、実施形態１と同様に、マクロブロックライン毎に処理を中断し、ＣＰＵ７０１が次マクロブロックラインの復号にあたり参照画像が利用可能か否かを確認した後に復号処理を再開する。例えば、第２復号部７１２が２番目のマクロブロックラインの復号を開始するためには、第１復号部７０２における復号が完了したマクロブロックライン数は１９に達している必要がある。
【００７９】
上記復号処理を画像内の全てのマクロブロックライン分繰り返す。第１復号部７０２は、時刻ｔ３において１番目の画像の復号を完了する。第２復号部７１２は、時刻ｔ５において２番目の画像の復号処理を完了する。尚、時刻ｔ５において、第１復号部７０２による３番目の画像（４番目の画像にとっての参照画像）の復号処理の進捗が十分でない。従って、ＣＰＵ７０１は第２復号部７１２による４番目の画像の復号処理動作を（第１復号部７０２の復号が完了したマクロブロックライン数が１８になる）時刻ｔ６まで遅延させてから開始する。
【００８０】
上記のように、本実施形態の画像復号装置において、符号化ストリームのヘッダに含まれるレベルに基づいて動きベクトル存在範囲を特定し、第１及び第２の各復号部における処理開始タイミングを調整する。結果として、複数の復号部においても複数画像の並列復号処理を実現することが可能であり、処理速度を大幅に向上させることが可能である。また、動きベクトル探索アルゴリズムに依存せず、どのような符号化ストリームの復号にも適用することが可能である。
【００８１】
尚、レベルの値や動きベクトルの垂直方向の最大値は上記に限定されず、どのような値の場合でも本実施形態の構成を適用することが可能である。また画像グループ構造も上記に限定されない。
【００８２】
さらに、動きベクトルの垂直方向の最大値がレベルのみならず、復号部が復号可能な処理の組み合わせを示すプロファイルにも依存する場合にも本実施形態は適用可能である。レベル及びプロファイルに基づいて動きベクトル存在範囲を算出し、算出された動きベクトル存在範囲に基づいて、第１及び第２の各復号部の処理開始タイミングを調整することで、複数画像の並列復号処理を実現することができる。また、動きベクトルの垂直方向の最大値がレベルに依存せず、固定の値として定められている符号化方式の場合にも、当該固定値を動きベクトル存在範囲として使用することで本実施形態の構成を適用することが可能である。
【００８３】
＜実施形態４＞
実施形態１及び２では、図２に示すように、参照画像を１枚使用する画面間符号化を使用した画像グループ構造について符号化を行う画像符号化装置を示したが、本発明は図２の画像グループ構造に限定されない。
【００８４】
図９は、参照画像を２枚使用する双方向画面間符号化を用いた画像グループ構造で符号化を行う画像符号化装置について示す図である。尚、画面内符号化を行う画像は、１番目、１６番目とする。入力順序が４番目、７番目、等の画像は、参照画像が１枚の画面間符号化を行い、図９においてＰ４、Ｐ７と表記する。一方、入力順序が２番目、３番目の画像は、参照画像を２枚使用する双方向画面間符号化により符号化を行い、Ｂ２、Ｂ３と表記する。この双方向画面間符号化は、時間軸上において過去と未来の２枚の画像を使用するため、画像の入力順序と符号化順序が異なる。主記憶部１１０は、符号化順序を入れ替えるために、入力された画像を複数枚記録しておく必要がある。尚、図９において、Ｉ１、Ｂ２等の表示の下部に括弧付きの数字で符号化順序を示している。
【００８５】
また、本実施形態の双方向画面間予測においては、参照画像として画面内符号化した画像、画面間符号化した画像及び双方向画面間符号化した画像いずれも使用可能である。例えば、図９における画像Ｂ３は画像Ｂ２と画像Ｐ４の２枚を参照画像としている。
【００８６】
図９の画像グループ構造において、第１符号化部１０２は符号化順序が奇数番目の画像の符号化を行い、第２符号化部１１２は符号化順序が偶数番目の画像の符号化を行うとする。この場合にもタイミングチャートは図６と同様になる。ただし、３番目及び４番目の画像は画面間符号化ではなく、双方向画面間符号化を行う。尚、本実施形態におけるレベルは、図５におけるレベル４、動きベクトルの垂直方向の正の最大値は２５５．７５画素であるとする。以下、図１を用いて本実施形態における画像符号化装置について説明する。
【００８７】
ＣＰＵ１０１は、時刻ｔ１において第１符号化部１０２に画像Ｉ１の画面内符号化の動作開始を指示する。さらに、ＣＰＵ１０１は、第１符号化部１０２が１８マクロブロックラインの符号化処理を完了した時刻ｔ２において、第２符号化部１１２に画像Ｐ４の画面間符号化の動作開始を指示する。
【００８８】
ＣＰＵ１０１は、第１符号化部１０２によるＩ１の符号化が時刻ｔ３において完了した後、第２符号化部１１２による画像Ｐ４の符号化が１８マクロブロックライン以上進んでいることを確認する。確認後、ＣＰＵ１０１は時刻ｔ４において、第１符号化部１０２に画像Ｂ２の双方向画面間符号化の動作開始を指示する。ここで、画像Ｂ２にとっての参照画像は画像Ｉ１及び画像Ｐ４の両方であるが、画像Ｉ１は符号化が完了していることが明らかであるため、ＣＰＵ１０１は画像Ｉ１の処理状況の確認は行わない。しかしながら、画像符号化装置内部における符号化部の数が２以上の時には、画像Ｉ１についても符号化処理が完了したマクロブロックライン数を確認する必要がある。
【００８９】
画像Ｐ４の符号化が時刻ｔ５において完了後、ＣＰＵ１０１は第１符号化部１０２による画像Ｂ２の符号化が完了したマクロブロックライン数を確認する。ＣＰＵ１０１は、第１符号化部１０２による画像Ｂ２の符号化が１８マクロブロックライン以上完了し、参照画像が利用可能であることを確認後、第２符号化部１１２に画像Ｂ３の双方向画面間符号化の動作開始を指示する。尚、もう一方の参照画像である画像Ｐ４は符号化処理が完了していることが明らかであるため、ＣＰＵ１０１は画像Ｐ４の処理状況の確認は行わない。しかしながら、画像符号化装置内部における符号化部の数が２以上の時には、画像Ｐ４についても符号化処理が完了したマクロブロックライン数を確認する必要がある。
【００９０】
本実施形態は上記のように、双方向画面間符号化を含む画像グループ構成で符号化を行う場合にも容易に適用することが可能であり、複数画像の並列符号化処理を行うことを可能とする。
【００９１】
また、本実施形態は参照画像を２枚使用して復号する双方向画面間復号を行う復号部を複数備え、複数画像を並列復号処理する画像復号装置にも適用することが可能である。
【００９２】
＜実施形態５＞
本実施形態では、動きベクトル存在範囲として画像符号化におけるスライスまたはタイルを用いて、複数の符号化部による並列符号化処理を行う画像符号化装置の構成について示す。
【００９３】
Ｈ．２６４においては、画像をマクロブロック毎のラスタ・スキャン順に複数の領域に分割し、各領域を独立に符号化もしくは復号する、スライスという技術が採用されている。ＨＥＶＣにおいては、画像を複数の矩形領域に分割し、同じく独立に符号化もしくは復号する、タイルという技術が採用されている。図１０（ａ）にスライスの例を、図１０（ｂ）にタイルの例を示す。
【００９４】
本実施形態における動きベクトル探索は、スライス及びタイル境界を動きベクトル存在範囲とする。また、スライス及びタイルの垂直サイズは、符号化ストリームのヘッダ情報から算出することが可能である。このため、符号化部及び復号部の両方において、スライス及びタイルの垂直サイズは既知の情報として扱う。
【００９５】
本実施形態において、図１の画像符号化装置を用いて説明する。ＣＰＵ１０１は、外部から設定される各スライスの開始アドレス等に基づいて、符号化処理開始前に第１符号化部１０２及び第２符号化部１１２において符号化で使用するスライスの垂直サイズを算出する。
【００９６】
ＣＰＵ１０１は、第１符号化部１０２に画面内符号化の動作開始を指示した後、第１符号化部１０２から割り込みコントローラ１１１で伝達される、符号化が完了したマクロブロックライン数を確認する。第１符号化部１０２による符号化が完了したマクロブロックライン数が、第２符号化部１１２による符号化で使用するスライスの垂直サイズを超えた場合は、参照画像が利用可能であることを意味する。ＣＰＵ１０１は、参照画像が利用可能になったことを確認した後、第２符号化部１１２に画面間符号化の画面内符号化の動作開始を指示する。
【００９７】
また、画像の分割としてスライスの代わりにタイルを使用する場合にも、上記スライスと同様の構成により複数画像の並列符号化処理を実現することができる。ＣＰＵ１０１には、符号化処理開始前に外部からタイルのサイズもしくはタイルの分割数が設定される。ＣＰＵ１０１は、第１符号化部１０２及び第２符号化部１１２における符号化が完了したマクロブロックライン数と、タイルの垂直サイズを照らし合わせことにより符号化部への動作開始を指示する処理開始タイミングを決定する。
【００９８】
本実施形態は上述したように、符号化ストリームのヘッダに含まれる情報から算出可能である、スライス及びタイルの垂直サイズから動きベクトル存在範囲を算出することで、複数画像の並列符号化処理を実現することができる。本実施形態は、動き探索アルゴリズムが不明である場合もしくは動きベクトル存在範囲が定まらない場合に、符号化部を用いて複数画像を並列符号化処理する画像符号化装置に特に有効である。
【００９９】
また、本実施形態は、複数の復号部を使用して複数画像を並列復号処理する画像復号装置にも適用することが可能である。
【０１００】
＜実施形態６＞
本発明において画像符号化装置内部の符号化部の数には制限は無く、Ｍ（Ｍは２以上の任意の正の整数）個の符号化部を使用することが可能である。本実施形態は、Ｍ＝４とし、かつ符号化部間の通信方法として直接接続を使用する画像符号化装置を示す。
【０１０１】
図１１は、本実施形態における画像符号化装置を示す図である。図１１におけるＣＰＵ１１０１、メモリバス１１０６、メモリコントローラ１１０７、主記憶部１１０８、割り込みコントローラ１１０９、レジスタバス１１１０は、図１及び実施形態１と同じ動作を行うため記述を省略する。第１符号化部１１０２、第２符号化部１１０３、第３符号化部１１０４及び第４符号化部１１０５は、図１１においては符号化制御部のみを示しているが、内部構成は図１の符号化部と同じである。
【０１０２】
本実施形態のように符号化部が複数個ある場合、第１から第４の各符号化部（１１０２〜１１０５）がマクロブロックラインの符号化完了時にＣＰＵ１１０１に割込みを通知すると、ＣＰＵ１１０１が受け取る割り込みの数が符号化部数に比例して増大してしまう。ＣＰＵ１０１が複数の割り込み通知を受けると、ＣＰＵ１０１による第１から第４の各符号化部（１１０２〜１１０５）の動作開始指示に遅延が発生し、画像符号化装置全体の処理性能が低下するというデメリットがある。本実施形態は、符号化部の数が増加しても、ＣＰＵ１１０１への割り込みを増加させることのない画像符号化装置について示す。
【０１０３】
本実施形態は、図２に示す画像グループ構造で符号化を行い、以下の分担で各画像の符号化を行う（Ｎは任意の正の整数である）。
【０１０４】
第１符号化部１１０２：  １番目、５番目、９番目、（略）、（４Ｎ−３）番目
第２符号化部１１０３：  ２番目、６番目、１０番目、（略）、（４Ｎ−２）番目
第３符号化部１１０４：  ３番目、７番目、１１番目、（略）、（４Ｎ−１）番目
第４符号化部１１０５：  ４番目、８番目、１２番目、（略）、（４Ｎ）番目
本実施形態において、Ｍ個の符号化部を使用して複数画像の符号化を行う場合、第１から第４の各符号化部は符号化処理が完了したマクロブロックライン数を信号で出力する。ｉを１以上、かつＭ以下の整数とすると、前記マクロブロックラインの出力信号は、ｉ番目の符号化部が局所復号で生成した画像を動き予測における参照画像として使用する符号化部（複数の場合もある）に直接接続される。
【０１０５】
例えば、図２に示す画像グループ構造で符号化を行う場合、図１１における第２符号化部１１０３が動き予測に使用する参照画像は、第１符号化部１１０２の局所復号により生成される。よって、図１１において、第１符号化部１１０２の符号化処理が完了したマクロブロックライン数を示す出力信号は、第２符号化部１１０３の入力信号として直接接続される。同様に、図１１における第４符号化部１１０５のマクロブロックライン数を示す出力信号は、第１符号化部１１０２の入力信号として直接接続される。よって、図２の画像グループ構造で符号化を行う場合、結果的に符号化部間のマクロブロックライン数を示す信号は、図１１に示すようにリング状に接続される。
【０１０６】
図１２のタイミングチャートを用いて本実施形態の画像符号化装置の動作について説明する。尚、本実施形態の第１から第４の各符号化部（１１０２〜１１０５）における動き探索アルゴリズムに基づいた動きベクトル存在範囲は、−３２画素〜３１．７５画素であるとする。また、第１から第４の各符号化部（１１０２〜１１０５）における動きベクトル存在範囲は、内部の第１符号化制御部１１１２、第２符号化制御部１１１３、第３符号化制御部１１１４、第４符号化制御部１１１５が夫々符号化処理開始前に算出するものとする。
【０１０７】
図１２の時刻ｔ１において、第１符号化部１１０２内の第１符号化制御部１１１２は、ＣＰＵ１０１からの動作開始指示に基づき画面内符号化による１番目の画像の符号化を開始する。
【０１０８】
画面間符号化を行う第２符号化部１１０３、第３符号化部１１０４及び第４符号化部１１０５内部の第２から第４の各符号化制御部（１１１３〜１１１５）は、符号化が完了したマクロブロックライン数を示す信号のポーリング（読み出しの繰り返し）を行う。ここで、符号化が完了したマクロブロックライン数を示す信号とは、参照画像を生成している符号化部から入力される信号のことである。上述のように、動きベクトルの正の最大値は３１．７５画素であり、３１．７５画素を含む動きベクトル存在範囲は３マクロブロックラインである。さらに、非整数画素動きベクトルでは３２画素以上の参照画素を使用して非整数画素を生成することを考慮して、第１から第４の各符号化制御部（１１１２〜１１１５）は４マクロブロックラインの符号化処理（参照画素生成）の完了を待つ。よって、参照画像が利用可能であることを保証することができる。
【０１０９】
図１２の第２符号化部１１０３、第３符号化部１１０４及び第４符号化部１１０５内部の第２から第４の各符号化制御部（１１１３〜１１１５）は、参照画像を生成している符号化部から入力されるマクロブロックライン数が４になる時刻ｔ２、ｔ３、ｔ４まで待つ。そして、第２から第４の各符号化制御部（１１１３〜１１１５）は、符号化処理を開始している。
【０１１０】
さらに、第１から第４の各符号化部（１１０２〜１１０５）内の第１から第４の各符号化制御部（１１１２〜１１１５）は、符号化が完了したマクロブロックを夫々カウントし、１マクロブロックラインの処理が完了すると内部の符号化処理を中断する。第１から第４の各符号化制御部（１１１２〜１１１５）は、符号化処理を中断後、次に符号化を行うマクロブロックの参照画像が利用可能であるか否かを、前記マクロブロックライン数の入力信号から逐次判断する。そして、第１から第４の各符号化制御部（１１１２〜１１１５）は、次に符号化を行うマクロブロックの参照画像が利用可能であると判断した場合、後続のマクロブロックラインの符号化処理を再開する。例えば、図１２において、２番目のマクロブロックラインの符号化は、参照画像を生成している符号化部における、符号化が完了したマクロブロックライン数が５になっている必要がある。また、５番目の画像に対して画面間予測を行う第１符号化部１１０２も他の各符号化部（１１０３〜１１０５）と同様に、第４符号化部１１０５における符号化が完了したマクロブロックライン数が４になったことを確認し、時刻ｔ５に置いて符号化処理を開始する。
【０１１１】
第１から第４の各符号化部（１１０２〜１１０５）内の第１から第４の各符号化制御部（１１１２〜１１１５）は、画像内の全マクロブロックラインについて上記処理を繰り返す。
【０１１２】
また、第４符号化部１１０５は各画像の全マクロブロックラインの符号化処理が完了すると、割り込みコントローラ１１０９を介してＣＰＵ１１０１に割り込みを通知する。画像符号化装置全体としては、画像４枚の符号化が完了する度にＣＰＵ１１０１に割り込みを１回通知することになり、ＣＰＵ１１０１への割り込み回数を増やさずに符号化処理の状況を通知することが可能である。
【０１１３】
上記のように、Ｍ個の符号化部を備えた画像符号化装置においても、動きベクトル存在範囲に基づいて処理開始タイミングを決定することで、Ｍ枚の画像の並列符号化処理を実現することができ、処理性能を高速化することができる。本実施形態において、時間軸上で隣接した画像を参照画像とすることにより、高い符号化効率を維持した並列処理が可能である。
【０１１４】
また、本実施形態は上述した信号の直接接続に限定されず、例えばレジスタバス１１１０により符号化が完了したマクロブロックライン数を伝達することで、並列符号化処理を実現することも可能である。尚、レジスタバス１１１０により本実施形態の構成を実現する場合は、第１から第４の各符号化部（１１０２〜１１０５）がレジスタバス１１１０のマスタインターフェースを備える必要がある。尚、スレーブインターフェースは、図１１等に記載されている既存のものを流用可能である。
【０１１５】
尚、本実施形態における符号化部の個数は上記に限定されず、２個以上のいかなる整数個でも使用することが可能である。尚、符号化部の個数が２個である場合、上述したマクロブロックライン数を示す信号の直接接続は、２つの符号化部間で双方向に接続されることとなる。
【０１１６】
また、本実施形態の画像符号化装置においては、画面間予測のみならず図９で示した双方向画面間符号化を用いた画像グループ構造を使用することも可能である。双方向画面間符号化において各符号化部は参照画像を２枚使用するが、符号化部の数が３以上の場合は２枚の参照画像も異なる二つの符号化部において並列に生成される。各符号化部は２枚の参照画像両方について、符号化が完了したマクロブロックライン数を確認する必要があるため、マクロブロックライン数を示す信号線を２本入力信号とする。
【０１１７】
各符号化部の各符号化制御部は２本の信号線が示す数値の両方が、動きベクトル存在範囲を超えたことを確認してから、双方向画面間符号化を開始する。画像内の各マクロブロックライン処理の符号化を開始するにあたっても、同様に逐次２つのマクロブロックライン数の確認を行う必要がある。
【０１１８】
本発明は上記に限定されず、マクロブロックライン数を信号線の直接接続により伝達する方法は、実施形態２のような画像復号装置にも適用することが可能である。また、実施形態２〜４に示した動きベクトル存在範囲の算出に符号化及びレベルを使用する方法や、実施形態５に示したように、スライスやタイルのサイズに基づいて各符号化部が動作を開始する構成にも本実施形態は適用可能である。
【０１１９】
さらに、Ｈ．２６４等は、画面間符号化において、同一画像内の各マクロブロックにおける動きベクトルが夫々異なる画像を参照画像とすることが可能である。このように画面間符号化において複数の画像を参照画像とする場合には、前記画像符号化部には参照画像の枚数分毎に、符号化が完了したマクロブロックライン数を示す信号を夫々入力として接続する必要がある。
【０１２０】
また、本実施形態において、符号化処理が完了したマクロブロックライン数を異なる符号化部に伝達している。しかしながら、例えば各符号化部に異なる符号化部の動きベクトル存在範囲を予め設定し、各符号化部が異なる符号化部に処理を開始する構成も可能である。その場合、符号化部間はマクロブロックライン数を示す信号ではなく、動作開始を示す信号を入力して接続される。また、動作開始指示はレジスタバス１１１０により伝達することも可能である。
【０１２１】
＜実施形態７＞
ＨＥＶＣでは、動きベクトルを予測符号化するにあたり、適応動きベクトル予測技術が採用されている。この適応動きベクトル予測技術では、同一画像内で使用された動きベクトルに加え、時間軸上において異なる画像で使用された動きベクトルを参照動きベクトルの候補群とする。本実施形態においては、符号化部間で直接接続されたインターフェースにより、時間軸上において異なる画像の動きベクトルを直接伝達することで、適応動きベクトル予測と複数画像の並列符号化の両方を実現する構成について示す。尚、本実施形態はＨＥＶＣにおける符号化ブロック単位で符号化を行うものとし、この符号化ブロックのサイズは１６×１６画素、３２×３２画素、６４×６４画素のいずれも使用することが可能である。下記説明における符号化ブロックは実施形態１〜６におけるマクロブロックに、符号化ブロックラインはマクロブロックラインに相当する。
【０１２２】
図１３は、本実施形態の画像符号化装置を示す図である。第１符号化部１３０２及び第２符号化部１３１２内にある、第１符号化制御部１３０３及び第２符号化制御部１３１３、第１動き予測部１３０５及び第２動き予測部１３１５以外は、実施形態１と同じ動作を行うため記述を省略する。また、図１３において、第１符号化制御部１３０３及び第２符号化制御部１３１３は、動きベクトルを蓄えることが可能な第１ＦＩＦＯ１３１９及び第２ＦＩＦＯ１３２０を備えた直接接続インターフェースにより夫々接続されている。
【０１２３】
本実施形態の第１符号化部１３０２において、第１動き予測部１３０５は、第１予測残差符号化及び局所復号部１３０６と第１符号化制御部１３０３の両方に、探索した動きベクトルを出力する。第１符号化制御部１３０３は、第１予測残差符号化及び局所復号部１３０６における当該符号化ブロックの処理が完了したことを確認してから、第１動き予測部１３０５から受け取った動きベクトルを第１ＦＩＦＯ１３１９に出力する。尚、第１符号化部１３０２が画面内符号化により符号化を行う場合には、第１符号化制御部１３０３は動きベクトルが有効でないことを示すデータを第１ＦＩＦＯ１３１９に出力する。また、ＨＥＶＣでは、同一画像内において異なる符号化ブロックのサイズを使用することが可能であるため、第１符号化制御部１３０３は動きベクトルに符号化ブロックサイズの情報を付加して第１ＦＩＦＯ１３１９に出力する。
【０１２４】
第２符号化部１３１２の第２符号化制御部１３１３は、画面間符号化を行うにあたり、第１ＦＩＦＯ１３１９から第１符号化部１３０２で探索された動きベクトル及び符号化ブロックサイズを受け取る。第２符号化制御部１３１３は、動きベクトル及び符号化ブロックサイズを受け取った回数に基づいて、第１符号化部１３０２における符号化ブロックライン数を認識することが可能である。第２符号化制御部１３１３は、符号化が完了した符号化ブロックライン数と、レベル等により決まる第２符号化部１３１２の動きベクトル存在範囲（符号化ブロックライン数に変換したもの）を比較する。比較結果から、第２符号化制御部１３１３は、前述の実施形態１〜６と同様に参照画像が利用可能である否かを判定し、画面間符号化における各符号化ブロックラインの符号化の処理開始タイミングを決定することができる。
【０１２５】
さらに、第２符号化制御部１３１３は、第１ＦＩＦＯ１３１９から受け取った動きベクトルを参照動きベクトルの候補として第２予測残差符号化及び局所復号部１３１６へ出力する。
【０１２６】
第２予測残差符号化及び局所復号部１３１６は、第２動き予測部１３１５から受け取った動きベクトルを予測符号化する。第２予測残差符号化及び局所復号部１３１６は、当該動きベクトルを予測符号化するにあたり、同一画像内の隣接ブロックにおける動きベクトルと第２符号化制御部１３１３から受け取った動きベクトルを参照動きベクトルの候補群とする。第２予測残差符号化及び局所復号部１３１６は、前記参照動きベクトル候補群の中から、最も動きベクトルを予測符号化した時の符号量が少なくなる動きベクトルを参照動きベクトルとして決定する。第２予測残差符号化及び局所復号部１３１６は、前記参照動きベクトルを用いて動きベクトルの予測符号化を行い、予測符号化した動きベクトルを符号化ストリームに多重化する。
【０１２７】
尚、第２予測残差符号化及び局所復号部１３１６は、第２符号化制御部１３１３から受け取った動きベクトルが有効でないデータの場合、当該動きベクトルを参照動きベクトルの候補から除外する。
【０１２８】
第２符号化制御部１３１３は、符号化処理開始後、第２動き予測部１３１５において探索された動きベクトル及び符号化のブロックサイズを第２ＦＩＦＯ１３２０に出力することで、第１符号化制御部１３０３に伝達する。第１符号化制御部１３０３は、第２ＦＩＦＯ１３２０から動きベクトル及び符号化ブロックサイズを受け取った回数に基づいて、第２符号化部１３１２における符号化が完了した符号化ブロックライン数を把握できる。第１符号化制御部１３０３は、当該符号化ブロックラインと動きベクトル存在範囲（符号化ブロックライン数に変換したもの）を比較することで、参照画像が利用可能であるか否かを判定する。そして、第１符号化制御部１３０３は画面間符号化における各符号化ブロックラインの処理開始タイミングを決定することができる。
【０１２９】
上記のように、本実施形態では、時間の異なる画像の符号化で使用された動きベクトルを、ＦＩＦＯを備えて直接接続されたインターフェース経由で符号化部間に直接伝達させる。当該動きベクトルは、複数符号化部における処理開始タイミングの決定及び動きベクトルの予測符号化の両方で使用することができる。結果として、冗長な情報伝達を避けることができ、複数画像の並列符号化による処理性能を十分向上させることが可能である。また、符号化部間における動きベクトルを、主記憶部ではなく直接接続されたインターフェースを用いて直接伝達することで、主記憶部の使用帯域を削減できるという効果も有する。
【０１３０】
尚、ＨＥＶＣでは、Ｈ．２６４のように各符号化ブロックに複数の動きベクトルを定義することが可能である。その場合、ブロックあたりの動きベクトル数に基づいて、動きベクトルを受け取った回数に重みづけしてカウントすることにより対応可能である。例えば、符号化ブロック内に動きベクトルが１本存在する場合、動きベクトル数を１としてカウントし、動きベクトルが４本存在する場合には動きベクトル数を０．２５としてカウントすることで、上記同様に符号化処理の進捗を把握することが可能である。
【０１３１】
また、本実施形態において、第１符号化制御部１３０３及び第２符号化制御部１３１３は、第１ＦＩＦＯ１３１９及び第２ＦＩＦＯ１３２０から受け取った動きベクトルを第１動き予測部１３０５及び第２動き予測部１３１５に送っても良い。これにり、第１動き予測部１３０５及び第２動き予測部１３１５は、動きベクトルの予測符号化で発生する符号量を考慮して、動きベクトル探索を行うことが可能である。
【０１３２】
本実施形態では、上記のように画像符号化装置について示したが、画像復号装置についても同様の構成は適用可能である。例えば、図７に示した画像復号装置の場合、ＦＩＦＯを備えたインターフェースで第１及び第２の各復号部（７０２及び７１２）内の第１復号制御部７０３及び第２復号制御部７１３の間を直接接続する。第１予測残差復号部７０５及び第２予測残差復号部７１５が復号した動きベクトルを直接接続したインターフェース経由で直接伝達することで、画像復号装置においても本実施形態の構成を実現することが可能である。結果として、動きベクトルの復号を行いながら複数画像の並列復号を実現し、復号処理の高速化及び主記憶部の使用帯域の削減することが可能である。
【０１３３】
また、３個以上の符号化部もしくは復号部を備えた構成や、動きベクトル情報をＣＰＵからのレジスタアクセスにより符号化部もしくは復号部間で直接伝達する等、前述した全ての実施形態と組み合わせることが可能である。
【０１３４】
＜実施形態８＞
本発明はソフトウェア・プログラムとしても実現することが可能であり、マルチスレッド・プログラムで複数画像の並列符号化処理を行う構成を本実施形態で示す。マルチスレッド・プラグラムにおいて複数画像の並列符号化を行うために、符号化スレッド間では符号化が完了したマクロブロックライン数を共有する必要がある。本実施形態では、セマフォにより排他制御された共有メモリで、符号化が完了したマクロブロックライン数を伝達し、複数の符号化スレッドによる複数画像の並列符号化を行う。本実施形態において、セマフォは、符号化が完了したマクロブロックライン数を複数の符号化スレッド書き込むタイミングを同期制御するために用いられる。
【０１３５】
複数の画像を複数の符号化スレッドにより並列符号化処理する（各スレッドが異なる画像を符号化する）場合の、１枚の画像を符号化するスレッドのフローチャートを図１４、１５及び図１６に示す。尚、本実施形態は、実施形態２と同じく１６×１６画素のマクロブロック単位で符号化を行い、レベルに基づいて動きベクトル存在範囲を算出することでマクロブロックライン毎の処理開始タイミングを適応的に決定する。
【０１３６】
ステップＳ１４０１において、符号化に使用するレベルを外部から読み込む。
【０１３７】
ステップＳ１４０２において、画像を画面内予測で符号化するか画面間予測で符号化するかを含む符号化パラメータを外部から読み込む。
【０１３８】
ステップＳ１４０３において、処理対象画像を画面内符号化する場合にはステップＳ１４１２に、画面間符号化もしくは双方向画面間符号化する際にはステップ１４０４に進む。
【０１３９】
ステップＳ１４０４において、動きベクトル存在範囲として、ステップＳ１４０１で取得したレベルに対応する動きベクトルの垂直方向の正の最大値を入力する。
【０１４０】
ステップＳ１４０５において、参照画像を生成している外部の符号化スレッドにおける符号化処理が完了したマクロブロックライン数を、セマフォを介して共有メモリ上から入力する。
【０１４１】
ステップＳ１４０６において、ステップＳ１４０５で入力したマクロブロックライン数と、ステップＳ１４０４で入力した動きベクトルの垂直方向の正の最大値を以下の式により比較する。尚、下記の式において、除算は丸め無し（切り捨て）であり、かつ非整数画素の生成のために１マクロブロックが余分に必要となるため等号無しの不等号となっている。但し、整数画素動きベクトルのみの存在を前提とするならば、下記の式は等号付き不等号となる。
【０１４２】
符号化が完了したマクロブロックライン数  ＞（動きベクトル垂直方向最大値／１６＋１）ステップＳ１４０６において、上記条件が成立すればマクロブロックラインを画面間符号化するための参照画像が利用可能であるとしてステップＳ１４０７に進む。そして、上記条件が成立しなければステップＳ１４０５に戻ることでマクロブロックラインの符号化処理の開始を遅延させる。
【０１４３】
ステップＳ１４０７において、１マクロブロック分の入力画像と参照画像を読み出し、動き探索を行って符号化で使用する動きベクトルを決定する。決定した動きベクトルを使用して動き予測を行い、予測残差を算出する。
【０１４４】
ステップＳ１４０８において、マクロブロックの予測残差の符号化処理及び動きベクトルの予測符号化処理を行い、符号化ストリームを出力する。この予測残差の符号化処理は実施形態１と同様に直交変換、量子化及びエントロピー符号化により行われる。また、ステップＳ１４０８において局所復号も行い、参照画像を生成する。
【０１４５】
ステップＳ１４０９において、画像の右端のマクロブロックの符号化処理が完了したか否かを判定し、完了していなければステップＳ１４０７に戻り、１マクロブロックラインに達するまでステップＳ１４０７〜ステップＳ１４０８を繰り返す。１マクロブロックラインの符号化処理が完了するとステップＳ１４１０に進む。
【０１４６】
ステップＳ１４１０において、１マクロブロックラインの符号化処理完了に伴い、符号化処理が完了したマクロブロックライン数を、セマフォを介して共有メモリ上に出力する。
【０１４７】
ステップＳ１４１１において、画像内の全マクロブロックラインの符号化処理が完了したか否かを判定し、完了していなければステップＳ１４０５に戻り、完了していれば１画像の符号化を完了する。
【０１４８】
ステップＳ１４１２〜ステップＳ１４１４において、１マクロブロックライン分の画面内符号化、予測残差符号化及び局所復号を実施形態１と同様に行う。画面内符号化において、画像間の依存性が無いため、セマフォを使用した処理が完了したマクロブロックライン数の入力は行わない。
【０１４９】
ステップＳ１４１５において、１マクロブロックラインの符号化処理完了に伴い、他のスレッドに参照画像生成の進捗を伝達するために処理が完了したマクロブロックライン数を、セマフォを使用して出力する。
【０１５０】
ステップＳ１４１６において、画像内の全マクロブロックライン数が完了したか否かを判定し、完了していなければステップＳ１４１２に戻り、完了していれば１画像の符号化を完了する。
【０１５１】
図１５は、図１４のステップＳ１４０５で示した、外部符号化スレッドにおける符号化処理が完了したマクロブロックライン数を、セマフォを介して共有メモリから入力するフローチャートである。
【０１５２】
ステップＳ１５０１において、共有メモリにアクセスするためのセマフォ獲得命令を発行する。
【０１５３】
ステップＳ１５０２において、セマフォが獲得できていればステップＳ１５０３に進み、（他のスレッドがアクセス中との理由により）セマフォが獲得できなければステップＳ１５０１に戻る。
【０１５４】
ステップＳ１５０３において、共有メモリから外部符号化スレッドにおける符号化が完了したマクロブロックライン数を取得して、参照画像の生成状況を入力する。
【０１５５】
ステップＳ１５０４において、セマフォを解放し、他のスレッドが共有メモリにアクセスできるようにする。
【０１５６】
図１６は、図１４のステップＳ１４１０及びＳ１４１５で示した、セマフォを介して符号化が完了したマクロブロックライン数を共有メモリに出力するフローチャートである。本実施形態において、図１６は、自らの符号化スレッドで生成した参照画像の生成状況を他の符号化スレッドに伝達するために用いられる。
【０１５７】
ステップＳ１６０１において、共有メモリにアクセスするためのセマフォ獲得命令を発行する。
【０１５８】
ステップＳ１６０２において、セマフォが獲得できていればステップＳ１６０３に進み、（他のスレッドがアクセス中との理由により）セマフォが獲得できなければステップＳ１６０１に戻る。
【０１５９】
ステップＳ１６０３において、自らの符号化スレッドで符号化が完了したマクロブロックライン数を共有メモリに記録する。
【０１６０】
ステップＳ１６０４において、セマフォを解放し、他のスレッドが共有メモリにアクセスできるようにする。
【０１６１】
上記のように、マルチスレッド・プログラムを用いた複数画像の並列符号化処理において、セマフォにより排他制御された共有メモリ上は、符号化スレッド間で符号化が完了したマクロブロックライン数を共有する。結果として、各符号化スレッドにおける参照画像が利用可能であることを保証できる。本マルチスレッド・プログラムの各符号化スレッドをマルチコアＣＰＵ上の異なるコア上で実行することにより、複数画像の並列符号化処理を高速化させることが可能となる。
【０１６２】
尚、図１４のフローチャートは簡易化のため、画面間符号化する際には画像中の全てのマクロブロックは画面間予測して符号化するとしているが、本発明はこれに限定されない。また、画面間符号化する際に画像内の一部のマクロブロックを画面内符号化することも可能である。
【０１６３】
本発明は、復号スレッド・プログラムに適用が可能であることをはじめ、前記実施形態１〜７のいずれの形態もソフトウェア・プログラムとして実現することが可能である。マルチスレッドのスレッド数は上記に限定されず、Ｍ（Ｍは２以上の任意の整数）スレッドとして実現することが可能である。さらに、上記共有メモリの排他制御はセマフォに限定されず、同等の機能を備えるミューテックス等により実現することも可能である。
【０１６４】
＜その他の実施形態＞
実施形態１〜８では、符号化の対象画像を画面間符号化するための参照画像の一部であって、当該対象画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した場合に、当該対象画像の処理対象ブロックの処理を開始するとした。しかしながら、本発明はこれに限定されない。すなわち、当該対象画像の最初の処理対象ブロックの動きベクトル存在範囲に相当する部分の処理が完了した後、所定時間後に当該対象画像の最初の処理ブロックの処理を開始してもよい。尚、この場合、動きベクトル存在範囲に相当する部分の処理が終了した後に限らず、垂直方向の動きベクトル存在範囲に基づく所定のマクロブロックライン分の処理が終了した後としても良い。また、スライス及びタイルのサイズに基づいて算出した動きベクトル存在範囲の処理が終了した後でも構わない。
【０１６５】
また、前述した実施形態１〜８では、複数の符号化部を有する画像符号化装置及び複数の復号部を有する画像復号装置について説明したが、以下の形態で実現しても構わない。すなわち、実施形態１〜８における画像符号化装置及び画像復号装置を、画像符号化システム及び画像復号システムとして実行する。この場合、例えば図１において、第１符号化部及び第２符号化部を独立した２つの画像符号化装置として、図１全体を２つの画像符号化装置を有する画像符号化システムとして実現しても良い。
【０１６６】
本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【０１６７】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【０１６８】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。
【図１】
2014027462.tif 000003
【図２】
2014027462.tif 000004
【図３】
2014027462.tif 000005
【図４】
2014027462.tif 000006
【図５】
2014027462.tif 000007
【図６】
2014027462.tif 000008
【図７】
2014027462.tif 000009
【図８】
2014027462.tif 000010
【図９】
2014027462.tif 000011
【図１０】
2014027462.tif 000012
【図１１】
2014027462.tif 000013
【図１２】
2014027462.tif 000014
【図１３】
2014027462.tif 000015
【図１４】
2014027462.tif 000016
【図１５】
2014027462.tif 000017
【図１６】
2014027462.tif 000018