(57)【要約】【課題】一定の伝送帯域幅の下で伝送バッファ遅延を削減し、伝送帯域を有効に活用して実時間映像伝送の遅延量を大幅に短縮することが可能な動画像符号化方法を提供する。【解決手段】動画像符号化方法であって、動画像の各スライスの画像符号列と各スライスの復号化のタイミングを示す第１タイミング情報とを含む符号化データを出力する。【選択図】図１
2010232720.tif 000002
【特許請求の範囲】
【請求項１】
動画像の各スライスの画像符号列と各スライスの復号化のタイミングを示す第１タイミング情報とを含む符号化データを出力する画像符号化方法。
【請求項２】
前記画像符号列をスライス単位で入出力する第１仮想受信バッファがアンダーフローもオーバーフローもしないように、各スライスの前記画像符号列のデータ量が制御されることを特徴とする請求項１に記載の画像符号化方法。
【請求項３】
前記符号化データは、各ピクチャの復号化のタイミングを示す第２タイミング情報をさらに含むことを特徴とする請求項２に記載の画像符号化方法。
【請求項４】
前記画像符号列をピクチャ単位で入出力する第２仮想受信バッファがアンダーフローもオーバーフローもしないように、各スライスの前記画像符号列のデータ量が制御されることをさらに特徴とする請求項３に記載の画像符号化方法。
【請求項５】
前記符号化データは、前記第１仮想バッファの第１バッファサイズ情報と前記第２仮想バッファの第２バッファサイズ情報とをさらに含むことを特徴とする請求項４に記載の画像符号化方法。
【請求項６】
前記第１タイミング情報は、各ピクチャの復号化のタイミングと各スライスの復号化のタイミングとの差分値であることを特徴とする請求項５に記載の画像符号化方法。
【請求項７】
動画像の各スライスの画像符号列と各スライスの復号化のタイミングを示す第１タイミング情報とを含む符号化データを受信し、
前記第１タイミング情報が示す復号化のタイミングに従って、各スライスの前記画像符号列を復号する画像復号化方法。
【請求項８】
前記符号化データは各ピクチャの復号化タイミングを示す第２タイミング情報をさらに含み、
前記第１タイミング情報は、各ピクチャの復号化タイミングと各スライスの復号化タイミングとの差分値であることを特徴とする請求項７に記載の画像復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像の符号化を行う画像符号化方法および画像の復号化を行う動画像復号化方法に関する。
【背景技術】
【０００２】
動画像符号化の国際標準規格として広く普及しているISO/IEC  13818-2（非特許文献１）（以下MPEG2）や、ITU-T  Rec.   H.264（非特許文献２）（以下H.264）では、圧縮単位である画像フレームまたはフィールドをピクチャと定義し、ピクチャをエンコード及びデコードのアクセス単位（アクセスユニット）としている。通常のエンコードでは、ピクチャ毎に、画像複雑度や符号化モード（フレーム内符号化、前方予測符号化、双方向符号化など）などにより符号量が変動する。
【０００３】
固定ビットレートの伝送路や最大伝送レートが定められた伝送路で、破綻無く伝送及び再生を実現するため、各国際標準規格では、仮想デコーダモデルを規定し、仮想デコーダにおける受信バッファモデルにおいてオーバーフローやアンダーフローが発生しないように、ピクチャ単位の符号量変動を制御することがエンコーダに義務付けられている。仮想デコーダモデルは、MPEG2ではVBV（Video  Buffering  Verifier）、H.264ではHRD（Hypothetical  Reference  Decoder）と呼ばれ、VBVモデルでは仮想受信バッファをVBVバッファ、HRDモデルではCPB（Coded  Picture  Buffer）と呼んでいる。これらの仮想受信バッファモデルでは、ピクチャをアクセス単位とする動作が定義されている。
【０００４】
MPEG2やH.264などでは、動画像信号を入力してから、圧縮、伝送し、受信側で伸張及び表示するまでの総遅延量は、通常少なくとも数１００ミリ秒から数秒必要となり、画像フレームで数枚から数１０枚分の遅延が生じる。そのため、リアルタイム画像通信や、ビデオゲームなどの即時性が要求される用途では低遅延化が不可欠となる。
【０００５】
非特許文献１で定義されるMPEG2のVBVモデルや非特許文献２で定義されるH.264のHRDモデルでは、通常遅延モードの他に、低遅延モードが用意されている（特許文献１）。これらの低遅延モードでは、受信バッファモデルにおいて、各ピクチャのデコードタイミングで、当該ピクチャに関する全符号化データが受信バッファにあればデコードを開始し、当該ピクチャに関する全符号化データが受信バッファ溜まっていなければデコードをスキップし、当該ピクチャに関する全符号化データが受信バッファに溜まった直後のピクチャデコードタイミングで当該ピクチャのデコード及び表示を行う。
【０００６】
エンコーダでは、スキップしたフレーム数を仮想受信バッファモデルで計算し、計算されたスキップ数だけ入力ピクチャを廃棄する。MPEG2やH.264の低遅延モデルでは、ピクチャ単位の仮想バッファ管理が行われるため、少なくとも１ピクチャ以上の圧縮伸張遅延が発生する。
【０００７】
また、H.264のHRDモデルでは、同一の圧縮データに対して複数の伝送帯域幅の伝送モデルを同時に満たすバッファモデルが規定されている（特許文献２、特許文献３）。複数帯域幅の伝送モデルでは、複数の伝送帯域幅すべてにおいて、アンダーフロー又はオーバーフロー無く伝送を行えるようにエンコードを行うことが義務付けられ、伝送帯域幅が広がるに従って、送受信バッファ遅延時間を削減することが可能となり、圧縮伸張遅延をより小さくすることが可能となる。
【０００８】
ただし、複数帯域幅のうち、最も伝送帯域が狭い伝送モデルでの伝送を保証する必要があるため、伝送帯域が広い伝送路において、帯域幅を有効に利用して画質を改善することは出来ない。また、MPEG2などの従来の受信バッファモデルと同様に、ピクチャを単位とするバッファ制御を行うため、圧縮伸張の低遅延化には限界がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平８−１６３５５９号公報
【特許文献２】特開２００３−１７９６６５号公報
【特許文献３】特開２００７−３２９９５３号公報
【非特許文献】
【００１０】
【非特許文献１】ＩＳＯ／ＩＥＣ  １３８１８−２
【非特許文献２】ＩＴＵ−Ｔ  Ｒｅｃ．  Ｈ．２６４
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した通り、MPEG2やH.264など従来の動画像符号化方式では、符号化処理及び復号化処理による遅延に加えて、ピクチャを単位とする仮想バッファモデルに従った伝送バッファ遅延があり、圧縮伸張を伴う実時間映像伝送において大きな表示遅れが発生する。また、従来の低遅延モードでは、フレームスキップの発生などの問題や、符号化データ量よりも広帯域の伝送路が必要になるなどの問題がある。
【００１２】
本発明は、上記に鑑みてなされたものであって、一定の伝送帯域幅の下で伝送バッファ遅延を削減し、伝送帯域を有効に活用して実時間映像伝送の遅延量を大幅に短縮することが可能な画像符号化方法および画像復号化方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明は、動画像符号化方法であって、動画像の各スライスの画像符号列と各スライスの復号化のタイミングを示す第１タイミング情報とを含む符号化データを出力する。
【００１４】
本発明の他の形態は、画像復号化方法であって、動画像の各スライスの画像符号列と各スライスの復号化のタイミングを示す第１タイミング情報とを含む符号化データを受信し、前記第１タイミング情報が示す復号化のタイミングに従って、各スライスの前記画像符号列を復号する。
【発明の効果】
【００１５】
本発明によれば、スライス単位の仮想バッファ管理を行い、スライス毎の復号化タイミングに関する情報を符号化データに重畳することで、スライス分割数やスライス単位の符号量制御に応じて、送受信バッファ遅延量を大幅に短縮することができるという効果をそうする。
【図面の簡単な説明】
【００１６】
【図１】図１は、第１の実施の形態にかかるエンコーダ１００の構成を示すブロック図である。
【図２】図２は、符号化データを受信した際の第１仮想バッファモデルおよび第２仮想バッファモデルの動作例を示す図である。
【図３】図３は、タイミング情報を説明するための図である。
【図４】図４は、本実施の形態にかかるエンコーダ１００により生成された１ピクチャに対応する符号化データのデータ構成を示す図である。
【図５】図５は、「SPS」の詳細なデータ構成を示す図である。
【図６】図６は、「Buffering  period  SEI」の詳細なデータ構成を示す図である。
【図７】図７は、「Picture  timing  SEI」の詳細なデータ構成を示す図である。
【図８】図８は、「Slice  timing  SEI」の詳細なデータ構成を示す図である。
【図９】図９は、スライスに関する符号化データが伝送時に欠落した場合について説明するための図である。
【図１０】図１０は、本実施の形態にかかるエンコーダ１００によるエンコード処理を示すフローチャートである。
【図１１】図１１は、ピクチャ符号化処理（ステップＳ１０５）における詳細な処理を示すフローチャートである。
【図１２】図１２は、スライス符号化処理（ステップＳ１１５）における詳細な処理を示すフローチャートである。
【図１３】図１３は、第１の実施の形態にかかるデコーダ２００の構成を示すブロック図である。
【図１４】図１４は、本実施の形態にかかるデコーダ２００によるデコード処理を示すフローチャートである。
【図１５】図１５は、本発明の実施形態にかかるエンコーダ１００およびデコーダ２００による圧縮伸張遅延を説明するための図である。
【図１６】図１６は、第１の実施の形態の第１の変更例にかかる「Slice  timing  SEI」のデータ構成を示す図である。
【図１７】図１７は、仮想バッファモデルとデコードのタイミングとを示す図である。
【図１８】図１８は、第２の変更例にかかる符号化データのデータ構成を示す図である。
【図１９】図１９は、「Slice  HRD  Parameters」の詳細なデータ構成を示す図である。
【図２０】図２０は、「Slice  Buffering  Period  SEI」の詳細なデータ構成を示す図である。
【図２１】図２１は、第３の変更例にかかる「Slice  timing  SEI」のデータ構成を示す図である。
【図２２】図２２は、第２の実施の形態にかかるエンコーダ１０１の構成を示すブロック図である。
【図２３】図２３は、第２の実施の形態にかかるエンコーダ１０１によるピクチャ符号化処理を示すフローチャートである。
【図２４】図２４は、第３の実施の形態にかかるエンコーダ１０２の構成を示すブロック図である。
【図２５】図２５は、第３の実施の形態にかかるエンコーダ１０２によるスライス符号化処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照して、この発明にかかる画像符号化方法および画像復号化方法の最良な実施の形態を詳細に説明する。
【００１８】
（第１の実施の形態）
第１の実施の形態にかかるエンコーダは、フレーム内予測またはフレーム間予測を用いた動画像符号化を行う。さらに、符号化に際し、デコーダにおいてピクチャ単位だけでなくスライス単位でデコードおよび表示を行うことができる符号化データを生成し、出力する。エンコーダ１００は、図１に示すように、エンコーダコア１１０と、ＶＬＣ（Variable  Length  Code）部１２０と、ストリームバッファ１３０と、記憶部１４０と、制御部１５０とを備えている。エンコーダコア１１０は、制御部１５０の制御の下、入力画像信号５００を取得し、入力画像信号５００をスライスに分割する。そして、ＤＣＴなどエンコードに関わる信号処理を行う。
【００１９】
ＶＬＣ部１２０は、エンコーダコア１１０による処理後のデータ５０２を取得し、スライス単位で可変長符号化や算術符号化などのエントロピー符号化を行い、符号化データを得る。なお、データ５０２には、ＤＣＴ係数など信号処理結果を示す情報のほか、符号化データをスライス単位で復号化するタイミングを示すタイミング情報、符号化データをピクチャ単位で復号化するタイミングを示すタイミング情報など符号化すべきデータが含まれている。タイミング情報については後述する。エントロピー符号化により得られた符号化データ５０４は、ストリームバッファ１３０を介して出力される。ＶＬＣ部１２０は、またエントロピー符号化における発生符号量を示す符号量情報５０６を制御部１５０に出力する。
【００２０】
記憶部１４０は、スライス単位の仮想バッファモデルおよびピクチャ単位の仮想バッファモデルの２つの仮想バッファモデルを記憶している。ピクチャ単位の仮想バッファモデルは、ピクチャに関する符号化データを入出力単位とするバッファモデルである。スライス単位の仮想バッファモデルはスライスに関する符号化データを入出力単位とするバッファモデルである。なお、スライスは、ピクチャを構成する単位であり、本実施の形態においては、スライス単位とは、１スライス単位であってもよく、また、ピクチャに比べて小さい単位である複数のスライスを１単位としてもよい。記憶部１４０は、具体的には、スライス単位の仮想バッファモデルのバッファサイズｘ１と、ピクチャ単位の仮想バッファモデルのバッファサイズｘ２（ｘ１＜ｘ２）を記憶している。なお、ピクチャ単位の仮想バッファモデルは、第２仮想バッファモデルに相当し、スライス単位の仮想バッファモデルは第１仮想バッファモデルに相当する。
【００２１】
制御部１５０は、エンコーダコア１１０の制御を司る。具体的には、記憶部１４０に記憶されている各仮想バッファモデルのバッファサイズと、ＶＬＣ部１２０から取得した符号量情報に基づいて、スライス単位の仮想バッファモデルおよびピクチャ単位の仮想バッファモデルそれぞれのバッファ占有量変動を算出する。すなわち、制御部１５０はバッファ占有量変動を算出する算出手段を備える。バッファ占有量変動に基づいて、符号化データにおけるデータ量を制御するための制御情報５０８を生成し、これをエンコーダコア１１０に送る。制御情報は具体的には、直交変換係数の量子化パラメータを調整する情報である。これ以外にも、制御情報は、スタッフィングデータの挿入、プリフィルタの制御、量子化マトリクスの制御など発生符号量のフィードバック制御に関する情報を含んでもよい。
【００２２】
図２は、符号化データを受信した際の、２つの仮想バッファモデル（仮想受信バッファモデル）の動作例を示す図である。図２に示すグラフの横軸は時間を示している。グラフの縦軸は、バッファ占有量を示している。仮想バッファは、H.264であれば、CPB（Coded  Picture  Buffer）、MPEG2であれば、ＶＢＶ（Video  Buffering Verifier）バッファに相当する。なお、本実施の形態においては、H.264においてCPBを採用する場合を例に説明する。
【００２３】
図２に示すｘ２は、ピクチャを単位とする仮想バッファモデルのバッファサイズ、ｘ１は、スライスを単位とする仮想バッファモデルのバッファサイズを示している。点線６１０は、ピクチャを単位とする仮想バッファモデルにおける符号化データを示している。実線６２０は、スライスを単位とする仮想バッファモデルにおける符号化データを示している。なお、説明の便宜上、図２においては４スライスが１つのピクチャを構成する場合の例を示している。
【００２４】
ピクチャ単位の仮想バッファモデルにおいては、第１ピクチャに関する符号化データ６１１は、第１ピクチャのデコードタイミングｔ４まで仮想バッファに蓄積され、タイミングｔ４において瞬時に出力され、デコード処理が行われる。同様に、第２ピクチャの符号化データ６１２は、デコードタイミングｔ８まで仮想バッファに蓄積され、タイミングｔ８において瞬時に出力され、デコード処理が行われる。なお、これは従来のモデルに対応するものである。
【００２５】
制御部１５０は、記憶部１４０からピクチャ単位の仮想バッファモデルのバッファサイズｘ２を取得する。そして、バッファサイズｘ２に対して、上記仮想バッファモデルの動作において、オーバーフローおよびアンダーフローしないようにピクチャ単位の符号化データのデータ量を制御する。
【００２６】
また、スライス単位の仮想バッファモデルにおいては、第１スライスに関する符号化データ６２１は、第１スライスのデコードタイミングｔ１まで仮想バッファに蓄積され、タイミングｔ１において瞬時に出力され、デコード処理が行われる。同様に第２スライスの符号化データ６２２はデコードタイミングｔ２まで仮想バッファに蓄積され、タイミングｔ２において瞬時に出力され、デコード処理が行われる。
【００２７】
制御部１５０は、記憶部１４０からスライス単位の仮想バッファモデルのバッファサイズｘ１を取得する。そして、バッファサイズｘ１に対して、上記仮想バッファモデルの動作において、オーバーフローおよびアンダーフローしないようにスライス単位の符号化データのデータ量を制御する。
【００２８】
制御部１５０は、さらにデコード処理における符号化データの復号化のタイミングを示すタイミング情報を生成する。タイミング情報としては、ピクチャ単位の仮想バッファモデルにおける復号化のタイミングを示すピクチャ単位のタイミング情報と、スライス単位の仮想バッファモデルにおける復号化のタイミングを示すスライス単位のタイミング情報の２つの種類のタイミング情報がある。
【００２９】
図３は、ピクチャ単位およびスライス単位の仮想バッファモデルにおける復号化および表示のタイミングモデルを示す図である。このタイミングモデルにおいては、いずれの仮想バッファモデルにおいても符号化データは瞬時にデコードされ、かつデコードと同時に表示されるものとする。なお、各時間ｔｉ（ｉ＝１，２…）は、それぞれ図２におけるｔｉと一致する。
【００３０】
図３に示すデコード画像７１１およびデコード画像７１２は、それぞれ図１の仮想バッファモデル６１０において点線６１１、６１２で示す第１ピクチャおよび第２ピクチャの符号化データから得られるデコード画像である。制御部１５０は、第１ピクチャを復号化するタイミングであるｔ４、第２ピクチャを復号化するタイミングであるｔ８をそれぞれピクチャ単位のタイミング情報とする。このように、制御部１５０は、ピクチャ単位の符号化データとともに、復号化するタイミングを示すタイミング情報を、ピクチャ単位のタイミング情報として生成して出力する。
【００３１】
固定長フレームレートの場合には、制御部１５０は、フレームレートに基づいて、ピクチャ単位のタイミング情報を生成する。また、可変フレームレートの場合には、制御部１５０は、入力画像信号５００の入力タイミングに基づいてタイミング情報を生成する。
【００３２】
図３に示すデコード画像７２１、７２２、７２３、７２４は、図１において実線で示したスライス単位の仮想バッファモデル６２０において実線６２１、６２２、６２３、６２４で示す第１スライス〜第４スライスの符号化データから得られるデコード画像である。制御部１５０は、第１スライスを復号化するタイミングであるｔ１、第２スライスを復号化するタイミングであるｔ２など各スライスを復号化するタイミングを示すタイミング情報を、スライス単位のタイミング情報として生成する。すなわち、制御部１５０は、１スライス分の符号化データとともに、復号化するタイミングを示すタイミング情報を、スライス単位のタイミング情報として生成して出力する。
【００３３】
制御部１５０は、具体的には、ピクチャ単位のスライス情報に基づいて、スライスを含むピクチャの復号化のタイミングからの差分値として各スライスの復号化のタイミングを規定する。例えば、図３に示す第１スライス７２１〜第４スライス７２４のタイミングｔ１〜ｔ４は、それぞれ第１ピクチャの復号化のタイミングｔ４を基準とし、ｔ４との差分として規定する。また、第５スライス７２５〜第８スライス７２８のタイミングｔ５〜ｔ８はそれぞれ、第２ピクチャの復号化のタイミングｔ８を基準とし、ｔ８との差分として規定する。なお、第４スライス７２４のタイミングｔ４と第１ピクチャのタイミングｔ４は等しく差分は０となる。第８スライス７２８と第２ピクチャのタイミングについても差分は０となる。
【００３４】
ピクチャ単位およびスライス単位の仮想バッファモデルにおける表示タイミングは、それぞれピクチャまたはスライスの表示開始タイミングに相当する。例えば、図２の第１ピクチャに注目すると、ピクチャ単位の仮想バッファモデルにおいては、ｔ４のタイミングで表示が開始するのに対し、スライス単位の仮想バッファモデルにおいては、ｔ１のタイミングで表示が開始する。したがって、スライス単位のバッファモデルにしたがって動作した場合、ピクチャ単位のバッファモデルにしたがって動作した場合にくらべて、低遅延で画像を再生することができる。
【００３５】
また、実際のピクチャの表示は、表示開始のタイミングから１ピクチャ期間かけて行われ、ピクチャ単位での表示においては、１ピクチャの符号化データを画面左から右の副走査方向に走査しつつ、画面上から下の主走査方向に走査してピクチャを復号化、表示していく。スライス単位での表示においても、スライス単位で副走査方向に走査しつつ主走査方向に走査してピクチャを復号化、表示する。１つのスライスの表示が完了すると、次のスライスの表示が開始するので、結果として、ピクチャ単位、スライス単位のいずれにおいても画面上部から副走査方向、主走査方向に走査して１ピクチャを表示する処理は同様のものとなる。
【００３６】
本実施の形態にかかるエンコーダ１００においては、従来のピクチャ単位での仮想バッファモデルに対するタイミング情報に加えてスライス単位の仮想バッファモデルに対するタイミング情報を付与した符号化データを生成し出力する。これにより、デコード処理においては、スライス単位でのデコードタイミング制御が可能となり、この場合には、より低遅延で画像を復号化、表示することができる。さらに、スライス単位だけでなくピクチャ単位のタイミング情報も付与されているので、ピクチャ単位でのデコードタイミング制御を行う従来の装置において従来通りの処理によりデコードすることも可能である。
【００３７】
以下、エンコーダ１００により生成された１ピクチャに対する符号化データのデータ構成について説明する。符号化データは、図４に示すように、「Access  unit  delimiter」、「SPS  (Sequence  parameter  Set)」、「PPS  (Picture  Parameter  Set)」、「Buffering  period  SEI  (Supplemental  Enhancement  Information)」、「Picture  timing  SEI」を含んでいる。さらに、これに続いて「Slice  timing  SEＩ」および「Slice  data」をそれぞれ１ピクチャに含まれるスライスの数（ｎ）だけ含んでいる。
【００３８】
「Access  unit  delimiter」は、ピクチャ境界位置を示す情報である。「SPS(Sequence  parameter  Set)」は、ビデオシーケンスに関するパラメータである。「SPS(Sequence  parameter  Set)」は、具体的には、ピクチャ単位またはスライス単位の仮想バッファのバッファサイズやビットレート情報が含まれる。「PPS  (Picture  Parameter  Set)」は、当該ピクチャに関するパラメータである。「Buffering  period  SEI  (Supplemental  Enhancement  Information)」は、ピクチャ単位またはスライス単位の仮想バッファモデルの初期化タイミング情報である。具体的には、ピクチャ単位またはスライス単位の仮想バッファの初期遅延時間を示す情報が含まれている。
【００３９】
「Picture  timing  SEI」は、ピクチャ単位の仮想バッファモデルにおける復号化および表示のタイミングを示すタイミング情報である。「Slice  timing  SEI」は、スライス単位の仮想バッファモデルにおける復号化および表示のタイミングを示すタイミング情報である。「Slice  data」は、当該ピクチャをｎ（ｎ≧１）分割した各スライスの圧縮画像データである。
【００４０】
なお、符号化データのデータ構造は、上記の構造に限定されるものではない。例えば「SPS」及び「Buffering  period  SEI」は、すべてピクチャに付加せずフレーム内符号化ピクチャから始まるランダムアクセス単位で付加することとしてもよい。なお、ランダムアクセス単位は、MPEG2のGOP(Group  Of  Pictures)に相当する。
【００４１】
また、「PPS」を複数のピクチャ毎に１つ付加することとしてもよい。また、「Slice  timing  SEI」は、全スライス符号化データ「Slice  data（1/n）〜（n/n）」それぞれに付加してもよく、他の例としては、最初のスライス「Slice  data（1/n）」のみに付加してもよい。また他の例としては、複数スライス毎に付加してもよい。
【００４２】
図４に示す「Slice  timing  SEI」以外のデータは、H.264に示されるものであるが、これは一例であり、データ構成は、H.264に限定されるものではない。
【００４３】
「SPS」の中には、H.264の仮想デコーダモデルHRD(Hypothetical  Reference  Decoder)に関するパラメータが含まれている。図５に示す「hrd_parameters()」においてHRDのパラメータが定義されている。HRDにおいては、仮想受信バッファモデルであるCPBモデルが定義されている。「hrd_parameters()」において、「cpb_cnt_minus1」は、「送信する仮想受信バッファモデル数−１」の値を示す。「cpb_size_value_minus1」および「bit_rate_value_minus1」は、それぞれ各仮想バッファモデルのバッファサイズおよびこの仮想バッファモデルへの入力ビットレートを示している。
【００４４】
このように、H.264では、同一の符号化データで１つ又は複数のCPBモデルパラメータを符号化することが可能である。複数のバッファモデルパラメータを符号化する場合、すべてのモデルパラメータに対して、バッファアンダーフローやオーバーフローをしない符号化データを生成することが義務付けられている。なお、H.264のCPBモデルは、図２に示した仮想バッファモデルの点線で示したピクチャ符号化データを単位とするバッファモデルとなっている。図２におけるピクチャ単位の仮想バッファモデルのバッファサイズｘ２は、CPBバッファサイズを示しており、「hrd_parameters()」の「cpb_size_value_minus1」として符号化されている。
【００４５】
図４に示す「Buffering  period  SEI」として、１つまたは複数の仮想受信バッファモデルにおける初期遅延パラメータが符号化される。なお、通常は符号化データの再生開始可能なポイント（ランダムアクセスポイント）毎に符号化される。図６に示す「initial_cpb_removal_delay」は、図２に示す「initial_cpb_removal_delay」と同一であり、仮想受信バッファにおける初期遅延時間を示すものである。
【００４６】
図４に示す「Picture  timing  SEI」は、各符号化ピクチャのデコード及び表示のタイミングを示すタイミング情報を含んでいる。図７に示す「cpb_removal_delay」は、図２に示す「cpb_removal_delay」と同一であり、ピクチャのデコード時刻を示すタイミング情報を示している。また、「dpb_output_delay」は、ピクチャデコード時刻から当該ピクチャの表示時刻までの差分を示している。デコード時刻と表示時刻が同一の場合、「dpb_output_delay」には０がセットされる。
【００４７】
図４に示す「Slice  timing  SEI」について詳述する。図８に示す「slice_hrd_flag」は、ピクチャ単位の仮想受信バッファモデルに加えて、スライス単位の仮想バッファモデルが有効であることを示すフラグである。本実施の形態においては、ピクチャ単位の仮想受信バッファモデル及びスライス単位の仮想受信バッファモデルはそれぞれ１つに限定される。図５における「cpb_cnt_minus1」は仮想受信バッファモデル数から１減算した値を示すものであるが、「slice_hrd_flag」が有効の場合、「cpb_cnt_minus1」は０とする。
【００４８】
また、ピクチャ単位の仮想受信バッファのサイズ及びスライス単位の仮想受信バッファのサイズは同一とし、図５における「cpb_size_value_minus1」においてこのバッファサイズが示される。図６に示す「slice_cpb_removal_delay_offset」は、スライスを復号化するタイミングを示すスライス単位のタイミング情報を示している。「slice_cpb_removal_delay_offset」は、前述のように、当該スライスが含まれるピクチャの、ピクチャ単位の仮想バッファモデルにおける復号化のタイミング、すなわちデコード時刻からの差分値としてスライス単位のタイミング情報を示している。
【００４９】
スライス単位の仮想バッファモデルでは、ピクチャ単位の仮想バッファモデルよりも早い時刻にデコードを開始する。そして、「slice_cpb_removal_delay_offset」の値が大きいほど、デコード開始時刻が早いことを意味している。なお、ピクチャ単位の仮想バッファモデルにおけるデコード時刻は、「initial_cpb_removal_delay」および「cpb_removal_delay」から、非特許文献２に示される方法と同様にして計算される。
【００５０】
ここで、スライス単位の仮想バッファモデルにおける復号化のタイミングの算出処理について説明する。エンコーダ１００の制御部１５０は、（式１）によりピクチャｎにおけるｉ番目のスライスのデコード開始時刻
【数１】
2010232720.tif 000003
から、「slice_cpb_removal_delay_offset(i)」を算出する。また、デコーダの制御部は、受信した「slice_cpb_removal_delay_offset(i)」から、（式１）によりピクチャｎにおけるｉ番目のスライスのデコード開始時刻
【数２】
2010232720.tif 000004
を算出する。
【数３】
2010232720.tif 000005
ここで、ｔｒ（ｎ）は、ピクチャ単位の仮想バッファモデルにおけるデコード開始時刻を示している。「slice_cpb_removal_delay_offset(i)」は、「Slice  timing  SEI」で符号化されるスライスｉの復号化時刻、すなわち復号化のタイミングを示すタイミング情報である。ｔｃはタイミング情報の単位時間を示す定数である。
【００５１】
また、他の例としては、デコーダ制御部は、各ピクチャに含まれる複数のスライスのうち最初に再生されるスライス、すなわち１番目のスライスのデコード開始時刻を「Slice  timing  SEI」から計算し、当該ピクチャの２番目以降のスライスのデコード開始時刻は、当該ピクチャにおけるデコード済みの画素数又はマクロブロック数から計算することとしてもよい。すなわち、エンコーダ１００の制御部１５０は、各ピクチャの１番目のスライスのデコード開始時刻に基づいて、「slice_cpb_removal_delay_offset(0)」を算出する。また、デコーダの制御部は、受信した「slice_cpb_removal_delay_offset(0)」から、（式２）によりピクチャのｉ番目のスライスのデコード開始時刻
【数４】
2010232720.tif 000006
を算出する。
【数５】
2010232720.tif 000007
（式２）において、ｔｒ（ｎ）は、スライスが属するピクチャｎのピクチャ単位の仮想バッファモデルにおけるデコード開始時刻を示している。「slice_cpb_removal_delay_offset(0)」は「Slice  timing  SEI」で符号化されるピクチャ内の１番目のスライスに関する復号化時刻に関するタイミング情報を示している。Δｔｒは１ピクチャのデコード又は表示間隔を示している。ＴＭＢは１ピクチャ内の総マクロブロック数を示している。
【数６】
2010232720.tif 000008
は、当該ピクチャのスライス０からスライスi−１までの総マクロブロック数を示している。なお、MBS(k)はｋ番目のスライスに属するマクロブロック数を示している。
【００５２】
固定フレームレートの映像の場合、エンコーダ１００の制御部１５０は、１つの符号化データに含まれるすべてのピクチャの１番目のスライスの「slice_cpb_removal_delay_offset(0)」は一定とする。また、エンコーダ１００の制御部１５０は、各ピクチャ内の２番目以降のスライスに関する「slice_cpb_removal_delay_offset(i)」を、（式２）で計算されるｉ番目のスライスのデコード開始時刻と一致若しくは所定の誤差以下になるように、（式１）により計算するものとする。従って、「Slice  timing  SEI」としては、再生開始点のピクチャの最初のスライスについてのみ符号化することにより、スライス単位の仮想バッファモデルにおける各スライスのデコード開始タイミングを受信側（デコーダの制御部）で計算することが可能となる。
【００５３】
また、任意のピクチャからの再生を実現するためには、少なくとも各ピクチャの最初のスライスについてのみ「Slice  timing  SEI」を符号化すればよい。この場合には、例えば図９に示すデコード画像７２１、７２５についてのタイミング情報７３１、７３５のみ符号化し、デコード画像７２２、７２３、７２４、７２６、７２７、７２８についてのタイミング情報７３２、７３３、７３４、７３６、７３７、７３８は符号化せず、受信側において（式２）により算出することができる。
【００５４】
また、すべてのスライスに対する「Slice  timing  SEI」を付与してもよい。これにより、受信側で各スライスのデコード開始タイミングを（式２）の計算を行わずに、符号化データから容易に得ることが可能となる。すべてのスライスに「Slice  timing  SEI」を付与する場合には、伝送エラーやパケットロスなどにより受信側でスライス単位のデータ欠落が発生した場合であっても任意のスライスから適切なタイミングでデコードを開始することが可能となり、エラーに対する耐性も向上する。例えば、図９に示すように、デコード画像７２１、７２５、７２８についてのタイミング情報７３１、７３５、７３８がデータ伝送時に欠落したとする。この場合には、デコード処理において、正常に受信したデコード画像７２２、７２３、７２４、７２６、７２７についてのタイミング情報７３２、７３３、７３４、７３６、７３７に基づいて、（式１）によりタイミング情報７３１、７３５、７３８を得ることができる。したがって、適切な時刻にデコードの開始を行い、仮想受信バッファのオーバーフローやアンダーフロー、表示の遅れなどが生じることなく、正常な再生を行うことが可能となる。
【００５５】
図１０から図１２を参照しつつ、エンコーダ１００によるエンコード処理について説明する。図１０に示すように、エンコード処理が開始すると、制御部１５０は、初期化処理を行う（ステップＳ１０１）。具体的には、画像サイズ、ビットレート、仮想バッファサイズなどのパラメータの設定を行う。なお、仮想バッファサイズとしては、第１仮想バッファモデルおよび第２仮想バッファモデルそれぞれの仮想バッファサイズが設定される。
【００５６】
次に、ピクチャ符号化ループ処理が開始する（ステップＳ１０２）。ピクチャ符号化ループ処理においては、エンコーダコア１１０は、制御部１５０の指示により符号化データのうち、ピクチャレイヤ以上の上位ヘッダである「Access  unit  delimiter」、「SPS  （Sequence  Parameter  Set）、「PPS  （Picture  Parameter  Set）」、「Buffering  Period  SEI」、「Picture  timing  SEI」などの生成及び出力をすべてのピクチャまたは周期的なピクチャ単位で行う（ステップＳ１０３）。
【００５７】
次に、制御部１５０は、符号化されるピクチャに対する符号量割当を、ピクチャ単位の仮想バッファがオーバーフローまたはアンダーフローしない制約の下で計算する（ステップＳ１０４）。次に、制御部１５０の制御の下、エンコーダコア１１０は、エンコードに関わる信号処理である本エンコード処理を行い、続いてＶＬＣ部１２０は、エンコーダコア１１０から取得したデータ５０２に対しエントロピー符号化を施し、符号化データを得る（ステップＳ１０５）。
【００５８】
１ピクチャに対する符号化が終了すると、制御部１５０は、ＶＬＣ部１２０から発生符号量を示す符号量情報を取得し、符号化が終了したピクチャに対する発生符号量に基づいて、ピクチャ単位の仮想バッファモデルのバッファ占有量を更新する（ステップＳ１０６）。予め定められたフレーム数のエンコードが完了した場合、または外部よりエンコード停止命令を受け取った場合には、ピクチャ符号化ループ処理が終了し（ステップＳ１０７）、エンコード処理が完了する。
【００５９】
図１１に示すように、図１０のピクチャ符号化処理（ステップＳ１０５）においては、スライス符号化ループ処理を開始する（ステップＳ１１１）。そして、エンコーダコア部１１０、１ピクチャを２つ以上のスライスに分割し、各スライスを順次符号化する。具体的には、制御部１５０の制御の下エンコーダコア１１０は、記憶部１４０に記憶されているスライス単位の仮想バッファモデルなどを参照し、まずスライスに関する「Slice  Timing  SEI」などのヘッダ情報を生成し出力する（ステップＳ１１２）。次に、制御部１５０は、スライス単位の仮想バッファがオーバーフローまたはアンダーフローしない制約の下で、スライスに対する符号量割当を計算する（ステップＳ１１３）、そして、エンコーダコア１１０は、符号化対象の入力画像信号を読み込んで（ステップＳ１１４）、エンコーダコア１１０およびＶＬＣ部１２０により当該スライスの符号化処理が行われる（ステップＳ１１５）。１スライスの符号化が完了すると、当該スライスの符号化データがストリームバッファ１３０を介して出力される（ステップＳ１１６）。
【００６０】
次に、制御部１５０は、当該スライスの発生符号量を取得して（ステップＳ１１７）、スライス単位の仮想バッファモデルのバッファ占有量の更新を行う（ステップＳ１１８）。１ピクチャを構成するすべてのスライスの符号化が完了すると、当該ピクチャの符号化が終了し（ステップＳ１１９）、ピクチャ符号化処理（ステップＳ１０５）が終了する。
【００６１】
図１２に示すように、図１１のスライス符号化処理（ステップＳ１１５）においては、ＭＢ符号化ループ処理を開始する（ステップＳ１５１）。具体的には、まずエンコーダコア１１０は、スライスを構成する各マクロブロックをフレーム内またはフレーム間予測を用いた符号化を行う（ステップＳ１５２）。そして、制御部１５０は、エンコーダコア１１０が１つのマクロブロックを符号化する毎に当該マクロブロックの発生符号量を取得する（ステップＳ１５３）。そして、制御部１５０は、スライスの発生符号量が、このスライスに割り当てられた符号量となるように、量子化パラメータＱＰを更新して符号量制御を行う（ステップＳ１５４）。スライスを構成するすべてのマクロブロックに対する処理が完了すると、当該スライスの符号化処理が終了し（ステップＳ１５５）、スライス符号化処理（ステップＳ１１５）が終了する。
【００６２】
以上のように、本実施の形態にかかるエンコーダ１００は、ピクチャ単位のタイミング情報とスライス単位のタイミング情報とを含む符号化データを生成するので、スライス単位でのデコード開始タイミングの制御が可能なデコーダにおいては、スライス単位でのデコード開始タイミングの制御を行うことができる。これにより、ピクチャ単位の仮想バッファモデルに比べて低遅延で復号化、表示を行うことができる。また、ピクチャ単位のタイミング情報も含まれているので、スライス単位でのデコード開始タイミングの制御が可能でない従来のデコーダにおいては、従来通りピクチャ単位の仮想バッファモデルにしたがった復号化、表示を行うことができる。
【００６３】
次に、符号化データを取得し、これをデコードし、表示するデコーダについて説明する。なお、本実施の形態にかかるデコーダは、スライス単位での復号化、表示およびピクチャ単位での復号化、表示の両方のタイミング制御を行うことができる。図１３に示すように、デコーダ２００は、ストリームバッファ２１０と、パーサ２２０と、制御部２３０と、デコーダコア２４０と、表示バッファ２５０とを備えている。
【００６４】
符号化データ８００は、ストリームバッファ２１０に入力され、パーサ２２０に渡される。パーサ２２０は、図４から図８参照しつつ説明したデータ構造の符号化データの解読を行う。これにより、ピクチャ単位の仮想バッファモデルにおけるタイミング情報およびスライス単位の仮想バッファモデルのタイミング情報を抽出し、これら２種類のタイミング情報８０１を制御部２３０に出力する。制御部２３０は、取得したタイミング情報８０１に基づいて、ピクチャ単位の仮想バッファモデルおよびスライス単位の仮想バッファモデルのうちいずれのモデルでの復号化および表示を行うかを決定し、復号化および表示のタイミングを制御するための制御情報８０２，８０３をそれぞれデコーダコア２４０および表示バッファ２５０に出力する。
【００６５】
具体的には、制御部２３０は、符号化データ８００に、有効なスライス単位のデコードタイミング情報が含まれていない場合、すなわち、「Slice  timing  SEI」が存在しない場合、または「slice_hrd_flag」が０の場合には、ピクチャ単位のデコードタイミング情報に基づいて、ピクチャ単位でデコードタイミング及び表示タイミングの制御を行う。一方、符号化データ８００に有効なスライス単位のデコードタイミング情報が含まれている場合、すなわち「Slice  timing  SEI」が存在し、「slice_hrd_flag」が１であり、かつ図５、図６に示した「SPS」および「Buffering  period  SEI」において、スライス単位の仮想バッファモデルに関するパラメータが定義されている場合には、制御部２３０は、スライス単位でデコードタイミング及び表示タイミングの制御を行う。
【００６６】
このように、スライス単位でデコードタイミング及び表示タイミングの制御を行うことにより、デコーダにおける受信バッファ遅延を低減して、低遅延での画像再生が可能となる。また、デコーダがスライス単位でデコードタイミング及び表示タイミングの制御を行う能力を有さない場合には、符号化データに有効なスライス単位のデコードタイミング情報が含まれている場合であっても、それを無視してピクチャ単位のデコードタイミング情報に基づいて、ピクチャ単位でデコードタイミング及び表示タイミングの制御を行えばよい。
【００６７】
このように、本実施の形態にかかる符号化データ８００は、従来のピクチャ単位でのデコードタイミング及び表示タイミングの制御機能しか持たないデコーダでの再生を保証しつつ、スライス単位でのデコードタイミング及び表示タイミングの制御機能を持つデコーダでの低遅延再生を実現することが可能となる。
【００６８】
デコーダコア２４０は、パーサ２２０から符号化データ８００を取得する。さらに、制御部２３０から制御情報８０２を取得する。デコーダコア２４０は、制御情報８０２に示される制御方法、すなわちスライス単位またはピクチャ単位の仮想バッファモデルにしたがい、符号化データ８００に対するデコード処理を行う。表示バッファ２５０は、デコーダコア２４０から復号化後の画像信号８０４取得し、制御部２３０から制御情報８０３を取得する。表示バッファ２５０は、制御情報８０３に示されるタイミング、すなわちスライス単位またはピクチャ単位の仮想バッファモデルにおける出力のタイミングにおいて表示バッファ２５０に蓄積された画像信号８０４を出力する。
【００６９】
図１４に示すように、デコーダ２００によるデコード処理においては、ピクチャデコードループが開始すると（ステップＳ２０１）、全符号化データのデコードが終了するか、外部よりデコード停止命令が入力されるまで、ピクチャ単位のデコードが順次行われる（ステップＳ２０１〜Ｓ２１４）。
【００７０】
デコード処理においては、ストリームバッファ２１０に符号化データが入力されると、パーサ２２０は、符号化データを読み込み（ステップＳ２０２）、スライス以上の上位ヘッダ情報の解析を行う（ステップＳ２０３）。上位ヘッダの解析の結果、有効なスライス単位の仮想バッファモデルの情報及びタイミング情報が含まれている場合は（ステップＳ２０４，Ｙｅｓ）、デコーダコア２４０は、スライス単位で符号化データのデコードを行い、制御部２３０は、復号化された画像信号をスライス単位で表示すべく表示バッファ２５０を制御する。
【００７１】
具体的には、スライスデコードループが開始すると（ステップＳ２０５）、スライス毎に、「Slice  Timing  SEI」で示されるデコード時刻、すなわちスライス単位のタイミング情報に示されるデコード時刻まで待ち、デコード時刻になると（ステップＳ２０６，Ｙｅｓ）、デコーダコア２４０は、スライス単位でデコード処理及び表示処理を行う（ステップＳ２０７）。以上の処理を、ピクチャを構成するすべてのスライスに対して行うと、スライスデコードループが終了する（ステップＳ２０８）。符号化データに含まれるすべてのピクチャに対する処理が終了すると、ピクチャデコードループが終了し（ステップＳ２１４）、デコード処理が完了する。
【００７２】
ステップＳ２０４において、上位ヘッダの解析の結果、有効なスライス単位のバッファモデル情報及びタイミング情報が含まれていない場合は（ステップＳ２０４，Ｎｏ）、デコーダコア２４０は、ピクチャ単位での符号化データのデコードを行う。そして、制御部２３０は、ピクチャ単位の仮想バッファモデルにしたがいデコードにより得られた画像信号の表示のタイミングを制御する。具体的には、ピクチャ毎に、「Picture  Timing  SEI」で示されるデコード時刻、すなわちピクチャ単位のタイミング情報に示されるデコード時刻まで待ち、デコード時刻になると（ステップＳ２０９，Ｙｅｓ）、処理対象のピクチャを構成する複数のスライスに対し、順次デコード処理を行い（ステップＳ２１０〜ステップＳ２１２）、対象とするピクチャのデコードが終了すると（ステップＳ２１２）、デコードにより得られた画像信号の表示に関する処理を行い（ステップＳ２１３）、ステップＳ２１４へ進む。
【００７３】
以上のように、本実施の形態にかかるデコーダ２００は、スライス単位での復号化を行うことができるので、低遅延再生を実現することができる。さらに、ピクチャ単位での復号化も可能であるので、従来からのピクチャ単位の復号化を行うべき符号化データが入力された場合には、ピクチャ単位での復号化を行うことができる。
【００７４】
図１５は、本発明の実施形態にかかるエンコーダ１００およびデコーダ２００による圧縮伸張遅延を説明するための図である。本実施の形態では、１ピクチャを複数のスライスに分割し、スライス単位で発生符号量を制御して、圧縮、送信、受信、デコード、表示のタイミングの制御を行う。これにより、デコード処理におけるバッファ遅延を大幅に短くすることができ、図１５に示すように、エンコーダへの入力からデコーダでの表示までの総遅延が、従来方式では困難であった１ピクチャ未満で実現することができる。
【００７５】
第１の実施の形態の第１の変更例としては、「Slice  timing  SEI」は、図１６に示すようなデータ構成であってもよい。図１６に示す「Slice  timing  SEI」のデータ構成において、「slice_hrd_flag」は、図８に示す「Slice  timing  SEI」中の「slice_hrd_flag」同様である。すなわち、ピクチャ単位の仮想受信バッファモデルに加えて、スライス単位の仮想バッファモデルが有効であることを示すフラグである。
【００７６】
本例においては、ピクチャ単位の仮想受信バッファモデル及びスライス単位の仮想受信バッファモデルはそれぞれ１つに限定されず、１つ又は複数のモデルであってもよい。ピクチャ単位及びスライス単位の仮想バッファモデルが複数ある場合、そのすべての仮想バッファモデルに対して、当該符号化データがバッファオーバーフローやアンダーフローを起こさないように符号化が行われる。また、ピクチャ単位の仮想受信バッファのサイズ及びスライス単位の仮想受信バッファのサイズは仮想バッファモデル毎に独立に設定される。
【００７７】
実施の形態において図５を参照しつつ説明した「SPS」の「cpb_cnt_minus1」は、ピクチャ単位の仮想バッファモデルおよびスライス単位の仮想バッファモデルの数を合わせたバッファモデルの総数から１を減算した値を示している。「cpb_cnt_minus1」により規定された数の仮想バッファモデルそれぞれに対して、「cpb_size_value_minus1」でバッファサイズ、「bit_rate_value_minus1」で仮想バッファに対する入力ビットレートがそれぞれ規定される。
【００７８】
スライス単位の仮想バッファの総数は、図１６に示す「Slice  timing  SEI」における「slice_cpb_cnt_minus1」に１を加算した値である。「slice_cpb_cnt_minus1」は「cpb_size_value_minus1」以下でなければならない。図１６の「slice_cpb_remova_delay」は、スライス単位の仮想バッファモデルにおける、当該スライスに対するデコード時刻を示すタイミング情報を示すものである。スライス単位の仮想バッファが複数ある場合、「slice_cpb_remova_delay」はすべてのバッファモデルに対して共通とする。
【００７９】
また、図１６における「slice_sched_sel_idx[idx]」は、図５の複数の仮想バッファモデルのパラメータとの対応関係を示すインデックスである。すなわち、図１６におけるidx番目のスライス単位仮想バッファモデルに対しては、図５の「cpb_size_value_minus1[Slice_sched_sel_idx[idx]]」が仮想バッファサイズを示し、「bit_rate_value_minus1[Slice_sched_sel_idx[idx]]」が当該仮想バッファに対する入力ビットレートを示している。
【００８０】
さらに、本例においては、「slice_cpb_remova_delay」は、当該スライス単位の仮想バッファモデルにおいて、図４で示した「Buffering  period  SEI」を含む直前のピクチャ又はスライスのデコード時刻からの差分として符号化する。
【００８１】
図１７に示す例においては、１つのピクチャ単位の仮想バッファモデルと１つのスライス単位の仮想バッファモデルで構成される例を示している。この場合、図５の「cpb_cnt_minus1」は１となり、図１６の「slice_cpb_cnt_minus1」は０となる。また、図１６の「slice_sched_sel_idx[idx]」は１とする。すなわち、スライス単位の仮想バッファモデルのインデックスは１である。
【００８２】
図１７の点線６１０は、ピクチャ単位の仮想バッファモデルのバッファ占有量の変動を示している。実線６２０は、スライス単位の仮想バッファモデルのバッファ占有量変動を示している。ｘ２は、ピクチャ単位の仮想バッファモデルのバッファサイズであり、図５の「cpb_size_value_minus1[0]」で示される。また、ｘ１は、スライス単位の仮想バッファモデルのバッファサイズであり、図５の「cpb_size_value_minus1[1]」で示される。図１７の「initial_cpb_removal_delay[0]」は、ピクチャ単位の仮想バッファモデルの初期遅延量であり、図６の「Buffering  period  SEI」で符号化される。
【００８３】
また、図１７の矢印６３１は、スライス単位の仮想バッファモデルの初期遅延量であり、図６の「Buffering  period  SEI」で「initial_cpb_removal_delay[1]」として符号化される。図１７の「cpb_removal_delay」は、ピクチャ単位の仮想バッファモデルにおける各ピクチャのデコードタイミングを示すタイミング情報であり、図７の「Picture  timing  SEI」で符号化される。また、図３の矢印６３２〜６３８は、各スライスのデコードタイミングを示すタイミング情報であり、図１６の「slice_cpb_removal_delay」としてスライス毎に「Slice  timing  SEI」で符号化される。
【００８４】
本例にかかるスライス単位のタイミング情報の算出処理について説明する。エンコーダ１００の制御部１５０は、（式３）によりピクチャｎのｉ番目のスライスのデコード開始時刻
【数７】
2010232720.tif 000009
から、「slice_cpb_removal_delay(i)」を算出する。また、デコーダ２００の制御部２３０は、受信した「slice_cpb_removal_delay(i)」から、（式３）によりピクチャｎのｉ番目のスライスのデコード開始時刻
【数８】
2010232720.tif 000010
を算出する。
【数９】
2010232720.tif 000011
ここで、
【数１０】
2010232720.tif 000012
は、図４で示した「Buffering  period  SEI」を含む直前のピクチャ又はスライスのデコード開始時刻である。また、「slice_cpb_removal_delay(i)」は「Slice  timing  SEI」で符号化されるスライスｉの復号化時刻を示すタイミング情報である。ｔｃはタイミング情報の単位時間を示す定数である。
【００８５】
このように、制御部１５０は、最初のスライスの復号化時刻を基準とし、基準の復号化時刻との差分として各スライスの復号化時刻を示すタイミング情報を生成する。
【００８６】
また、他の例としては、最初のスライスのデコード開始時刻を「Buffering  period  SEI」から計算し、２番目以降のスライスデコード開始時刻は、当該ピクチャにおけるデコード済みの画素数又はマクロブロック数から計算してもよい。具体的には、デコーダ２００の制御部２３０は、（式４）によりピクチャｎにおけるｉ番目のスライスのデコード開始時刻
【数１１】
2010232720.tif 000013
を算出する。
【数１２】
2010232720.tif 000014
ここで、
【数１３】
2010232720.tif 000015
は、当該スライスが属するピクチャｎの最初のスライスのデコード開始時刻を示している。Δｔｒは１ピクチャのデコード又は表示間隔、ＴＭＢは１ピクチャ内の総マクロブロック数、
【数１４】
2010232720.tif 000016
は、当該ピクチャのスライス０からスライスｉ−１までの総マクロブロック数を示している。なお、固定フレームレートの映像の場合、エンコーダ１００の制御部１５０は、（式４）で計算されるｉ番目のスライスのデコード開始時刻と、（式３）で計算されるｉ番目のスライスのデコード開始時刻が一致若しくは所定の誤差以下になるように、（式３）により「slice_cpb_removal_delay(i)」を計算する。
【００８７】
実施の形態において述べたように、「Slice  timing  SEI」は、再生開始点のピクチャの最初のスライスのみ符号化することにより、スライス単位の仮想バッファモデルにおける各スライスのデコード開始タイミングを受信側で計算することが可能となる。また、任意のピクチャからの再生を実現するためには、少なくとも各ピクチャの最初のスライスについてのみ「Slice  timing  SEI」を符号化すればよい。また、すべてのスライスについて「Slice  timing  SEI」を付加することにより、受信側で各スライスのデコード開始タイミングを数４の計算を行わずに、符号化データから容易に得ることが可能となる。また、伝送エラーやパケットロスなどにより受信側でスライス単位のデータ欠落が発生した場合、すべてのスライスについて「Slice  timing  SEI」を付加することにより、任意のスライスから適切なタイミングでデコードを開始することか可能となり、エラーに対する耐性も向上する。
【００８８】
第２の変更例としては、符号化データは、図１８に示すようなデータ構成であってもよい。図１８に示すデータ構成においては、「SPS  (Sequence  Parameter  Set)」の内部または「SPS」に続いて、「Slice  HRD  Parameters」が追加されている。また、「Buffering  Period  SEI」に続いて「Slice  Buffering  Period  SEI」が追加されている。
【００８９】
図１９に示すように、「Slice  HRD  Parameters」には、スライス単位の仮想バッファモデルのモデル数、ビットレート、仮想受信バッファサイズなどの情報が含まれている。図１９の「slice_cpb_cnt_minus1」はスライス単位の仮想バッファモデルの数から１減算した値を示している。「bit_rate_scale」、「slice_cpb_size_scale」はそれぞれビットレート及び仮想受信バッファサイズの単位を示している。「bit_rate_value_minus1」および「slice_cpb_size_value_minus1」はそれぞれ「SchedSelIdx」番目のスライス単位の仮想バッファモデルに対する入力ビットレート及び仮想バッファサイズを示している。
【００９０】
図２０に示すように、「Slice  Buffering  Period  SEI」には、スライス単位の仮想バッファモデルの初期遅延量に関する情報が含まれている。符号化データの先頭及び任意の位置に「Slice  Buffering  Period  SEI」を挿入することで、符号化データの途中からの再生を行うことが可能となる。図２０の「seq_parameter_set_id」は、スライス単位の仮想バッファモデルを規定する「Slice  HRD  Parameters」を特定するためのインデックスである。「slice_initial_cpb_removal_delay」はスライス単位の仮想バッファモデルの初期遅延量を示す情報である。「slice_initial_cpb_removal_delay」と「slice_initial_cpb_removal_delay_offset」との和は一定とする。この和は、スライス単位の仮想バッファモデルの最大遅延量となる。
【００９１】
第３の変更例としては、「Slice  timing  SEI」は、図２１に示すようなデータ構成であってもよい。図２１に示すように、本例にかかる「Slice  timing  SEI」は、「slice_hrd_flag」と、「slice_cpb_removal_delay」と、「slice_dpb_output_delay」とを含んでいる。「slice_hrd_flag」は、スライス単位の仮想バッファモデルの有効、無効を示している。「slice_cpb_removal_delay」は、各スライスの復号化時刻の情報を「Slice  Buffering  Period  SEI」が含まれるピクチャの復号化時刻からの遅延時間で表現した情報である。「slice_dpb_output_delay」は、当該スライスの表示時刻を当該スライスの復号化時刻からの遅延時間で表現した情報である。スライス単位の仮想バッファモデルに準拠したデコーダにおいては、これらのタイミング情報に基づいて、デコードタイミング及び表示のタイミングの制御が行われる。
【００９２】
（第２の実施の形態）
第２の実施の形態にかかるエンコーダおいては、エンコーダコア、ＶＬＣ部およびストリームバッファのセットを複数備え、各セットにおいて異なるエンコードパラメータで同一の入力画像信号５００のエンコードを行う。そして、発生符号量に基づいて最適な符号化データを選択し、出力する。なお、本実施の形態においては、エンコーダコア等を２セット有するエンコーダについて説明するが、３セット以上を有してもよい。
【００９３】
図２２に示すように第２の実施の形態にかかるエンコーダ１０１は、第１エンコーダコア１１１と、第１ＶＬＣ部１２１と、第１ストリームバッファ１３１と、第２エンコーダコア１１２と、第２ＶＬＣ部１２２と、第２ストリームバッファ１３２と、記憶部１４０と、制御部１５１と、セレクタ１６０とを備えている。
【００９４】
第１エンコーダコア１１１および第２エンコーダコア１１２は、それぞれ制御部１５１による制御の下、本エンコード処理を行う。制御部１５１は、第１エンコーダコア１１１および第２エンコーダコア１１２に対し、例えば異なる量子化パラメータなど異なるエンコードパラメータ５０８，５１８をセットする。第１エンコーダコア１１１および第１ＶＬＣ部１２１により第１のパラメータによる第１符号化データ５０４が生成され、第１ストリームバッファ１３１に一時保存される。同様に、第２エンコーダコア１１２および第２ＶＬＣ部１２２により第２のパラメータによる第２符号化データ５１４が生成され、第２ストリームバッファ１３２に一時保存される。
【００９５】
制御部１５１は、第１ＶＬＣ部１２１および第２ＶＬＣ部１２２からそれぞれの発生符号量を示す発生符号量情報５０６，５１６を取得する。制御部１５１は、発生符号量情報５０６，５１６に基づいて、第１符号化データおよび第２符号化データから許容される符号量の範囲で最適な符号化データを選択し、選択した符号化データを示す選択情報５２０をセレクタ１６０に出力し、選択した符号化データ５２４をセレクタ１６０を介して出力させる。
【００９６】
ここで最適な符号化データとは、符号量の上限を超えず、入力画像と復号画像との誤差が最小となるような符号化データである。また他の例としては、簡易的に平均量子化幅が最小となる符号化データであってもよい。
【００９７】
制御部１５１は、スライス単位の仮想バッファモデル及びピクチャ単位の仮想バッファモデルのバッファ占有量変動を計算し、各仮想バッファがオーバーフローまたはアンダーフローを起こさないように、第１エンコーダコア１１１および第２エンコーダコア１１２の符号量制御を行う。一般に、１つのピクチャに対するスライス分割数が多くなると、フィードバック制御によりスライス単位で所定の発生符号量以下に抑えることの困難度が増し、確実に保証するためにはマージンを大きく、つまり許容符号量よりも少ない符号量でエンコードをする必要がある。
【００９８】
しかし、複数のエンコーダで同時に異なるパラメータでエンコード処理をすることで、許容される符号量を最大限利用して、高画質なエンコードを実現することが容易となる。また、並列処理をすることで、エンコード処理の遅延は増加せず、低遅延のエンコードが可能となる。
【００９９】
第２の実施の形態にかかるエンコーダ１０１によるエンコード処理においては、第１の実施の形態において説明したピクチャ符号化処理において、第１エンコーダコア１１１のセットと、第２エンコーダコア１２１のセットによりそれぞれ符号化処理が行われる。図２３に示すように、第２の実施の形態にかかるエンコーダ１０１によるピクチャ符号化処理においては、制御部１５１による符号量割り当ての計算（ステップＳ１１３）の後、第１エンコーダコア１１１および第２エンコーダコア１１２は同一のスライスに対する入力画像信号を読み込み（ステップＳ２０１，ステップＳ２１１）、それぞれ符号化パラメータの異なるスライス符号化１（ステップＳ２０２）およびスライス符号化２（ステップＳ２１２）により符号化を行う。
【０１００】
なお、スライス符号化１（ステップＳ２０２）及びスライス符号化２（ステップＳ２１２）における処理は、第１の実施の形態において図１２を参照しつつ説明したスライス符号化処理と同様である。
【０１０１】
ここで符号化パラメータとは、量子化幅、予測方法（フレーム内符号化、フレーム間符号化など）、ピクチャ構造（フレームまたはフィールド）、符号量制御方法（量子化固定、フィードバック制御など）などのパラメータである。
【０１０２】
次に、制御部１５１は、第１ＶＬＣ部１２１および第２ＶＬＣ部１２２からそれぞれスライス符号化１およびスライス符号化２の発生符号量情報５０６，５１６を取得し（ステップＳ２０３）、当該スライスの割当符号量以下で且つ割当符号量に最も近い符号化結果をスライス毎に選択する（ステップＳ２０４）。次に、制御部１５１は、選択された符号化データをセレクタ１６０を介して出力する（ステップＳ２０５）。次に、制御部１５１は、選択されたスライス符号化データの発生符号量に基づいて、スライス単位の仮想バッファモデルのバッファ占有量の更新を行い（ステップＳ２０６）、１ピクチャを構成するすべてスライスの符号化が完了すると、当該ピクチャの符号化を終了する（ステップＳ２０７）。
【０１０３】
このように、同一のスライスに対して、異なる符号化パラメータを用いて符号化し、発生符号量が最も割当符号量に近いものを選択することで、より効率的な符号化結果を出力することが可能となる。なお、本実施の形態では、同一のスライスに対して２種類のパラメータを用いた符号化を行うこととしたが、符号化パラメータの選択は２種類以上用いても良い。
【０１０４】
なお、第２の実施の形態にかかるエンコーダ１０１のこれ以外の構成および処理は、第１の実施の形態にかかるエンコーダ１００の構成および処理と同様である。
【０１０５】
本実施の形態のエンコーダおよびデコーダは、ＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１０６】
本実施形態のエンコーダおよびデコーダで実行される動画像符号化プログラムおよび動画像復号化プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１０７】
また、本実施形態のエンコーダおよびデコーダで実行される動画像符号化プログラムおよび動画像復号化プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のエンコーダおよびデコーダで実行される動画像符号化プログラムおよび動画像復号化プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１０８】
また、本実施形態の動画像符号化プログラムおよび動画像復号化プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１０９】
本実施の形態のエンコーダおよびデコーダで実行される動画像符号化プログラムおよび動画像復号化プログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から各部を読み出して実行することにより上記各部が主記憶装置上にロードされ、各部が主記憶装置上に生成されるようになっている。
【０１１０】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１１１】
１００  エンコーダ
１１０  エンコーダコア
１２０  ＶＬＣ部
１３０  ストリームバッファ
１４０  記憶部
１５０  制御部
２００  デコーダ
２１０  ストリームバッファ
２２０  パーサ
２３０  制御部
２４０  デコーダコア
２５０  表示バッファ
【図１】
2010232720.tif 000017
【図２】
2010232720.tif 000018
【図３】
2010232720.tif 000019
【図４】
2010232720.tif 000020
【図５】
2010232720.tif 000021
【図６】
2010232720.tif 000022
【図７】
2010232720.tif 000023
【図８】
2010232720.tif 000024
【図９】
2010232720.tif 000025
【図１０】
2010232720.tif 000026
【図１１】
2010232720.tif 000027
【図１２】
2010232720.tif 000028
【図１３】
2010232720.tif 000029
【図１４】
2010232720.tif 000030
【図１５】
2010232720.tif 000031
【図１６】
2010232720.tif 000032
【図１７】
2010232720.tif 000033
【図１８】
2010232720.tif 000034
【図１９】
2010232720.tif 000035
【図２０】
2010232720.tif 000036
【図２１】
2010232720.tif 000037
【図２２】
2010232720.tif 000038
【図２３】
2010232720.tif 000039
【図２４】
2010232720.tif 000040
【図２５】
2010232720.tif 000041
【手続補正書】
【提出日】平成21年9月24日(2009.9.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
【図１】図１は、第１の実施の形態にかかるエンコーダ１００の構成を示すブロック図である。
【図２】図２は、符号化データを受信した際の第１仮想バッファモデルおよび第２仮想バッファモデルの動作例を示す図である。
【図３】図３は、タイミング情報を説明するための図である。
【図４】図４は、本実施の形態にかかるエンコーダ１００により生成された１ピクチャに対応する符号化データのデータ構成を示す図である。
【図５】図５は、「SPS」の詳細なデータ構成を示す図である。
【図６】図６は、「Buffering  period  SEI」の詳細なデータ構成を示す図である。
【図７】図７は、「Picture  timing  SEI」の詳細なデータ構成を示す図である。
【図８】図８は、「Slice  timing  SEI」の詳細なデータ構成を示す図である。
【図９】図９は、スライスに関する符号化データが伝送時に欠落した場合について説明するための図である。
【図１０】図１０は、本実施の形態にかかるエンコーダ１００によるエンコード処理を示すフローチャートである。
【図１１】図１１は、ピクチャ符号化処理（ステップＳ１０５）における詳細な処理を示すフローチャートである。
【図１２】図１２は、スライス符号化処理（ステップＳ１１５）における詳細な処理を示すフローチャートである。
【図１３】図１３は、第１の実施の形態にかかるデコーダ２００の構成を示すブロック図である。
【図１４】図１４は、本実施の形態にかかるデコーダ２００によるデコード処理を示すフローチャートである。
【図１５】図１５は、本発明の実施形態にかかるエンコーダ１００およびデコーダ２００による圧縮伸張遅延を説明するための図である。
【図１６】図１６は、第１の実施の形態の第１の変更例にかかる「Slice  timing  SEI」のデータ構成を示す図である。
【図１７】図１７は、仮想バッファモデルとデコードのタイミングとを示す図である。
【図１８】図１８は、第２の変更例にかかる符号化データのデータ構成を示す図である。
【図１９】図１９は、「Slice  HRD  Parameters」の詳細なデータ構成を示す図である。
【図２０】図２０は、「Slice  Buffering  Period  SEI」の詳細なデータ構成を示す図である。
【図２１】図２１は、第３の変更例にかかる「Slice  timing  SEI」のデータ構成を示す図である。
【図２２】図２２は、第２の実施の形態にかかるエンコーダ１０１の構成を示すブロック図である。
【図２３】図２３は、第２の実施の形態にかかるエンコーダ１０１によるピクチャ符号化処理を示すフローチャートである。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2010232720.tif 000042
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２４
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図２５
【補正方法】削除
【補正の内容】