(57)【特許請求の範囲】
【請求項１】
符号化装置に用いる符号化方法において、
前記符号化装置が、
動画像データを符号化し、
符号化された動画像データの情報量が、符号化された動画像データの送信先である復号化装置の受信バッファが仮想的にモデル化された仮想バッファの制御をピクチャ単位で満足するか否かを判定し、
前記仮想バッファの制御が前記ピクチャ単位で満足しないと判定された場合に、符号化された動画像データを構成する１枚のピクチャを分割し、分割された分割ピクチャ毎に前記復号化装置で復号化処理を実行させる復号時刻を設定する
処理を実行することを特徴とする符号化方法。
【請求項２】
前記仮想バッファの制御をピクチャ単位で満足するか否かを判定する処理として、符号化された動画像データの情報量に基づいて前記仮想バッファでアンダーフローが発生するか否かを判定し、
前記復号時刻を設定する処理として、前記仮想バッファでアンダーフローが発生すると判定された場合に、符号化された動画像データを構成する１枚のピクチャを分割し、分割された分割ピクチャのうち前段の第１分割ピクチャには第１の復号時刻を設定し、後段の第２分割ピクチャには前記第１の復号時刻よりも遅い第２の復号時刻を設定する
処理を実行することを特徴とする請求項１に記載の符号化方法。
【請求項３】
前記仮想バッファの制御をピクチャ単位で満足するか否かを判定する処理として、符号化された動画像データの情報量に基づいて前記仮想バッファでオーバーフローが発生するか否かを判定し、
前記復号時刻を設定する処理として、前記仮想バッファでオーバーフローが発生すると判定された場合に、今回に符号化された動画像データには第１の復号時刻を設定し、次回に符号化される動画像データを構成するピクチャを分割し、分割された分割ピクチャのうち前段の第１分割ピクチャには前記第１の復号時刻を設定し、後段の第２分割ピクチャには前記第１の復号時刻よりも遅い第２の復号時刻を設定する
処理を実行することを特徴とする請求項１に記載の符号化方法。
【請求項４】
復号化装置に用いる復号化方法において、
前記復号化装置が、
符号化された動画像データを受信し、バッファに格納し、
前記バッファに蓄積された動画像データに対してピクチャ単位ではなくピクチャの分割単位で自装置が復号化処理を実行する復号時刻が設定されている場合に、前記復号時刻に応じて、符号化された動画像データをピクチャ単位で復号化し、
復号化された動画像データを構成するピクチャを並べ替えて復号化された動画像データを表示時間順に出力する
処理を実行することを特徴とする復号化方法。
【請求項５】
符号化装置において、
動画像データを符号化する符号化部と、
前記符号化部にて符号化された動画像データの情報量が、符号化された動画像データの送信先である復号化装置の受信バッファが仮想的にモデル化された仮想バッファの制御をピクチャ単位で満足するか否かを判定する判定部と、
前記判定部にて前記仮想バッファの制御が前記ピクチャ単位で満足しないと判定された場合に、符号化された動画像データを構成する１枚のピクチャを分割し、分割された分割ピクチャ毎に前記復号化装置で復号化処理を実行させる復号時刻を設定する設定部と
を有することを特徴とする符号化装置。
【請求項６】
復号化装置において、
符号化された動画像データを蓄積するバッファと、
前記バッファに蓄積された動画像データに対してピクチャ単位ではなくピクチャの分割単位で自装置が復号化処理を実行する復号時刻が設定されている場合に、前記復号時刻に応じて符号化された動画像データをピクチャ単位で復号化する復号化部と、
前記復号化部にて復号化された動画像データを構成するピクチャを並べ替えて復号化された動画像データを表示時間順に出力する出力制御部と
を有することを特徴とする復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化方法、復号化方法、符号化装置及び復号化装置に関する。
【背景技術】
【０００２】
符号化装置から復号化装置へ動画像の符号化データを伝送する際には、受信側の復号化装置が符号化データを蓄積する受信バッファ（buffer）でアンダーフロー（underflow）やオーバーフロー（overflow）が発生するのを防止する必要がある。このため、符号化装置は、復号化装置の受信バッファを仮想的にモデル化した仮想バッファを用いて、復号化装置が一定のビットレート（bit  rate）で動画像を再生できるように、動画像の符号化により発生させる情報量を制御する。なお、上記の仮想バッファは、ＶＢＶ（video  buffering  verifier）バッファとも呼ばれる。
【０００３】
例えば、映像の動きが激しい状態から映像の場面が切り替わった場合には、場面が切り替わるまでの区間で発生する符号化データの情報量が高いレベルで推移する上、場面が切り替わった時点で発生する符号化データの情報量はさらに大きくなる。この結果、復号化装置の受信バッファが枯渇する事態、すなわちバッファアンダーフローが発生する場合がある。
【０００４】
図１６は、バッファアンダーフローの発生を説明するための図である。図１６に示す例では、理想的なデコーダ（decoder）に搭載されるＶＢＶバッファを想定し、復号化が終了したピクチャ（picture）の符号化データは瞬時にＶＢＶバッファから除去されるものとして説明を行う。図１６に示すグラフの横軸は時間を表す。図１６に示す横軸を刻むＤＴＳ（Decoding  Time  Stamp）は、ＶＢＶバッファで符号化データが復号化される復号時刻、言い換えればＶＢＶバッファから符号化データを除去する除去時刻を指し、同一のピクチャの符号化データには同一の時刻が割り当てられる。また、図１６に示すグラフの縦軸は、ＶＢＶバッファを占有する符号化データの情報量、すなわちバッファ占有量を表す。図１６に示すグラフの傾きは、ＶＢＶバッファへ入力される符号化データのビットレートを表す。
【０００５】
図１６に示すように、ＤＴＳ０、ＤＴＳ１及びＤＴＳ２の区間では、ＶＢＶバッファに蓄積されたピクチャがそれぞれ復号された上で除去される。これらＤＴＳ０、ＤＴＳ１及びＤＴＳ２の区間では、フレーム間で動きの激しい動画像が符号化されるので、バッファ占有量が枯渇気味に遷移する。そして、ＤＴＳ３に至った段階では、映像の場面が切り替わるシーンチェンジ（scene  change）が発生することにより、ＶＢＶバッファへの入力ビットレートでは入力しきれないデータ量の符号化データが発生する。この結果、ＤＴＳ３の時点で復号されるべきピクチャの符号化データのバッファリングが完了せず、バッファアンダーフローが発生する。
【０００６】
かかるバッファアンダーフローの発生を防止するための技術として、次のような技術がある。一例として、ＶＢＶバッファのアンダーフローが検知された場合に、マクロブロック（macro  block）の符号化をスキップ（skip）する技術が挙げられる。このようにマクロブロックの符号化をスキップすることにより、符号化データの情報量を低減させる。なお、ここで言う「マクロブロック」とは、符号化前の動画像データが所定のサイズ、例えば１６画素×１６画素や８画素×８画素などに分割されたデータを指す。また、「スキップ」とは、符号化しようとするマクロブロックを既に符号化したピクチャのマクロブロックと同定することを指す。
【０００７】
また、映像の動きがない状態から映像の場面が切り替わった場合には、場面が切り替わるまでの区間で発生する符号化データの情報量は低いレベルで推移するのに対し、場面が切り替わった時点で発生する符号化データの情報量は急激に大きくなる。この結果、復号化装置の受信バッファが溢れる事態、すなわちバッファオーバーフローが発生する場合がある。
【０００８】
図１７は、バッファオーバーフローの発生を説明するための図である。図１７に示す例では、図１６と同様、理想的なデコーダに搭載されるＶＢＶバッファを想定し、復号化が終了したピクチャの符号化データは瞬時にＶＢＶバッファから除去されるものとする。なお、図１７のグラフ表記は、図１６で説明したものと同様である。
【０００９】
図１７に示すように、ＤＴＳ０、ＤＴＳ１及びＤＴＳ２の区間では、ＶＢＶバッファに蓄積されたピクチャがそれぞれ復号された上で除去される。これらＤＴＳ０、ＤＴＳ１及びＤＴＳ２の区間では、フレーム間で動きのない動画像が符号化されるので、バッファ占有量が溢れ気味に遷移する。そして、ＤＴＳ３に至った段階では、映像の場面が切り替わるシーンチェンジが発生することにより、ＶＢＶバッファの容量に収まらないデータ量の符号化データが発生する。この結果、ＤＴＳ３の時点で復号されるべきピクチャの符号化データを全てバッファリングできず、バッファオーバーフローが発生する。
【００１０】
かかるバッファオーバーフローの発生を防止するための技術として、次のような技術がある。一例として、ＶＢＶバッファのオーバーフローが検知された場合に、復号時には無効なデータとして扱われるスタッフィングビット（stuffing  bit）を符号化データへ挿入する技術が挙げられる。このようにスタッフィングにより、復号化装置におけるバッファ占有率を低減させる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００１−１６９２８１号公報
【特許文献２】特開平９−１３９９１２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記の従来技術は、いずれも符号化データの情報量をピクチャ単位で調節するものに過ぎず、動画像の画質が不均一になってしまうという問題がある。
【００１３】
すなわち、上記の従来技術は、ＶＢＶバッファでアンダーフローが発生する場合には、マクロブロックの符号化をスキップすることにより符号化データの情報量を低減させる。また、上記の従来技術は、ＶＢＶバッファでオーバーフローが発生する場合には、動画像の画質に寄与しないスタッフィングビットを符号化データに水増しする。かかる符号化データの情報量の増減は、ＶＢＶバッファの占有量を最優先になされる制御である。したがって、ＶＢＶバッファの占有量に応じて符号化データの情報量の増減を制御した場合には、符号化される動画像の画質を度外視せざるを得ず、バッファのアンダーフローやオーバーフローの回避と引き換えに動画像の画質を不安定にしてしまう。
【００１４】
開示の技術は、上記に鑑みてなされたものであって、動画像の画質を均一化できる符号化方法、復号化方法、符号化装置及び復号化装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本願の開示する符号化方法は、符号化装置に用いる符号化方法において、前記符号化装置が、動画像データを符号化する処理を実行する。前記符号化装置が、符号化された動画像データの情報量が、符号化された動画像データの送信先である復号化装置の受信バッファが仮想的にモデル化された仮想バッファの制御をピクチャ単位で満足するか否かを判定する処理を実行する。前記符号化装置が、前記仮想バッファの制御が前記ピクチャ単位で満足しないと判定された場合に、符号化された動画像データを構成する１枚のピクチャを分割し、分割されたピクチャ単位に前記復号化装置で復号化処理を実行させる時刻を設定する処理を実行する。
【発明の効果】
【００１６】
本願の開示する符号化方法の一つの態様によれば、動画像の画質を均一化できるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る伝送システムに含まれる各装置の構成を示す図である。
【図２】図２は、復号順序と表示順序の関係を説明するための図である。
【図３】図３は、図２に示した各ピクチャの復号時刻及び表示時刻とＶＢＶバッファの占有量との関係を示す図である。
【図４】図４は、バッファアンダーフローの発生の一態様を示す図である。
【図５】図５は、バッファアンダーフローの回避例を示す図である。
【図６】図６は、バッファオーバーフローの発生の一態様を示す図である。
【図７】図７は、バッファオーバーフローの回避例を示す図である。
【図８】図８は、ＶＢＶ管理部の処理内容を説明するための図である。
【図９】図９は、付加データの一例を示す図である。
【図１０】図１０は、ＶＢＶ管理部の処理内容を説明するための図である。
【図１１】図１１は、実施例１に係る符号化処理の手順を示すフローチャートである。
【図１２】図１２は、実施例１に係る符号化処理の手順を示すフローチャートである。
【図１３】図１３は、実施例１に係る符号化処理の手順を示すフローチャートである。
【図１４】図１４は、実施例１に係る復号化処理の手順を示すフローチャートである。
【図１５】図１５は、応用例を説明するための説明図である。
【図１６】図１６は、バッファアンダーフローの発生を説明するための図である。
【図１７】図１７は、バッファオーバーフローの発生を説明するための図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する符号化方法、復号化方法、符号化装置及び復号化装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１９】
［システム構成］
図１は、実施例１に係る伝送システムに含まれる各装置の構成を示す図である。図１に示す伝送システム１は、符号化装置１０と、復号化装置３０とを有し、符号化装置１０及び復号化装置３０の間で動画像の符号化データを伝送するものである。なお、図１の例では、符号化装置１０および復号化装置３０の間で符号化データがリアルタイムで伝送される場合を想定して以下の説明を行うが、符号化データを遅延させて伝送する場合にも同様に適用できる。
【００２０】
符号化装置１０は、入力される動画像を符号化するエンコーダ（encoder）である。この符号化装置１０は、復号化装置３０で符号化データが蓄積されるバッファを仮想的にモデル化した仮想バッファを用いて、復号化装置３０が一定のビットレート（bit  rate）で動画像を再生できるように、動画像の符号化により発生させる情報量を制御する。ここでは、Ｈ．２６４を始めとするＭＰＥＧ（Moving  Picture  Experts  Group）の規格にしたがって仮想バッファ、いわゆるＶＢＶ（video  buffering  verifier）バッファを動作させる場合を想定するが、他の圧縮符号化方式にも同様に適用できる。なお、符号化装置１０のエンコード機能は、ソフトウェア（software）によって実現してもよいし、また、ＬＳＩ（Large  Scale  Integration）等の集積回路によって実現することとしてもよい。
【００２１】
復号化装置３０は、入力される動画像の符号化データを復号化するデコーダ（decoder）である。この復号化装置３０は、符号化装置１０から受信した動画像の符号化データを後述の符号化データバッファ３２ａに蓄積した上で、符号化データに付与されたタイムスタンプにしたがって符号化データを符号化データバッファ３２ａから取り出して復号化する。なお、復号化装置３０のデコード機能は、ソフトウェアによって実現してもよいし、また、ＬＳＩ等の集積回路によって実現することとしてもよい。
【００２２】
［ＶＢＶバッファの破綻回避方法］
続いて、本実施例に係る符号化装置によるＶＢＶバッファの不具合回避方法について説明する。本実施例に係る符号化装置１０は、自装置が符号化したピクチャが復号化装置３０によって復号される復号順序と復号化後に表示される表示順序とが異なる点を利用する。すなわち、符号化装置１０は、復号時刻が表示時刻よりも早いピクチャの符号化データを分割した上で、各々が異なる復号時刻を分割後の符号化データそれぞれに付与する。これによって、ＶＢＶバッファの破綻、すなわちアンダーフロー及びオーバーフローを回避する。
【００２３】
図２を用いて、復号順序と表示順序の関係について説明する。図２は、復号順序と表示順序の関係を説明するための図である。図２の例では、動画像が入力される入力順序、符号化装置１０によって符号化される符号化順序、復号化装置３０によって復号化される復号化順序、さらには、復号後に表示される表示順序に各ピクチャが左側から右側に整列した場合を示す。図２に示す矩形は、動画像の１フレームを指す。図２に示す矩形中の符号Ｉは、ＧＯＰ（Group  of  picture）のうちＩピクチャ（Intra-Picture）を指す。図２に示す矩形中の符号Ｐは、Ｐピクチャ（Predictive-Picture）を指す。図２に示す矩形中の符号Ｂは、Ｂピクチャ（Bidirectionally  Picture）を指す。なお、図２に示す符号Ｉ、ＰまたはＢの右側に付した数字は、動画像が入力される入力順序、すなわち表示順序を指す。
【００２４】
図２に示すように、符号化装置１０には、フレームＢ０、フレームＢ１、フレームＩ２、フレームＢ３、フレームＢ４、フレームＰ５の順に動画像が入力される。このとき、符号化装置１０は、Ｂピクチャの符号化時に参照されるＩピクチャ又はＰピクチャのフレームを先に符号化するために、Ｉピクチャ又はＰピクチャへ符号化するフレームをＢピクチャへ符号化するフレームよりも符号化順序が先になるように並べ替える。図２の例では、符号化装置１０は、フレームＩ２、フレームＢ０、フレームＢ１、フレームＰ５、フレームＢ３、フレームＢ４の順に並べ替える。
【００２５】
その上で、符号化装置１０は、並べ替えたフレームＩ２、フレームＢ０、フレームＢ１、フレームＰ５、フレームＢ３、フレームＢ４の順に各フレームを符号化する。これによって、ＩピクチャであるピクチャＩ２、ＰピクチャであるピクチャＰ５、ＢピクチャであるピクチャＢ０、ピクチャＢ１、ピクチャＢ３及びピクチャＢ４が生成される。これらピクチャＩ２、ピクチャＢ０、ピクチャＢ１、ピクチャＰ５、ピクチャＢ３、ピクチャＢ４の符号化データは、符号化装置１０から復号化装置３０へストリームデータとして伝送される。
【００２６】
一方、復号化装置３０は、符号化装置１０から受信した符号化データをピクチャＩ２、ピクチャＢ０、ピクチャＢ１、ピクチャＰ５、ピクチャＢ３、ピクチャＢ４の順に復号化する。これによって、フレームＩ２、フレームＢ０、フレームＢ１、フレームＰ５、フレームＢ３、フレームＢ４が生成される。そして、復号化装置３０は、このようにして復号化した各フレームをフレームＢ０、フレームＢ１、フレームＩ２、フレームＢ３、フレームＢ４、フレームＰ５の表示順序に再び並べ替えた上で所定の表示部に表示させる。
【００２７】
図３は、図２に示した各ピクチャの復号時刻及び表示時刻とＶＢＶバッファの占有量との関係を示す図である。図３に示す例では、理想的なデコーダに搭載されるＶＢＶバッファを想定し、復号化が終了したピクチャの符号化データは瞬時にＶＢＶバッファから除去されるものとして説明を行う。図３に示すグラフの横軸は、時間を指す、右に進むほど時間が経過することを表す。図３に示す横軸を刻むＤＴＳ（Decoding  Time  Stamp）は、ＶＢＶバッファで符号化データが復号化される復号時刻、言い換えればＶＢＶバッファから符号化データを除去する除去時刻を指す。図３に示す横軸を刻むＰＴＳ（Presentation  Time  Stamp）は、復号化後のフレームが表示される表示時刻を指す。また、図３に示すグラフの縦軸は、ＶＢＶバッファを占有する符号化データの情報量、すなわちバッファ占有量の大きさを表す。図３に示すグラフの傾きは、ＶＢＶバッファへ入力される符号化データのビットレートを表す。
【００２８】
図３に示すように、ピクチャＩ２は、ＤＴＳ［２］の時点で復号化された上でＰＴＳ［２］（＝ＤＴＳ［５］）の時点で表示される。また、ピクチャＢ０は、ＤＴＳ［０］の時点で復号化された上でＰＴＳ［０］の時点で表示される。また、ピクチャＢ１は、ＤＴＳ［１］の時点で復号化された上でＰＴＳ［１］の時点で表示される。また、ピクチャＰ５は、ＤＴＳ［５］の時点で復号化された上でＰＴＳ［５］（＝ＤＴＳ［８］）の時点で表示される。また、ピクチャＢ３は、ＤＴＳ［３］の時点で復号化された上でＰＴＳ［３］の時点で表示される。また、ピクチャＢ４は、ＤＴＳ［４］の時点で復号化された上でＰＴＳ［４］の時点で表示される。このようにして、図示しない後続のピクチャの復号化、さらには表示が同様にして実行される。
【００２９】
このように、Ｂピクチャの復号化時に参照されるＩピクチャ及びＰピクチャのＤＴＳとＰＴＳとは同一ではない。すなわち、Ｉピクチャ及びＰピクチャのＰＴＳは、Ｉピクチャ又はＰピクチャが復号化されてからそのフレームを復号化に使用したＢピクチャが表示されるまで遅延させた時刻がそのＰＴＳとなる。例えば、ピクチャＰ５は、ＤＴＳ［５］の時点で復号化されるが、実際に表示されるのは、入力順序で先行するピクチャＢ３及びピクチャＢ４が復号化及び表示された後のＰＴＳ［５］（＝ＤＴＳ［８］）のタイミングである。このため、復号化装置３０でピクチャＰ５を正常に表示させるには、必ずしもＤＴＳ［５］の時点でピクチャ内の全てのデータが復号されている必要はない。すなわち、ピクチャＰ５の復号化は、ピクチャＢ３及びピクチャＢ４から復号化時に参照画として使用される前までに完了していればよい。
【００３０】
このようなＤＴＳとＰＴＳの時間差を利用して、符号化装置１０は、伝送ビットレートでは復号化装置３０へ伝送しきれない、あるいはＶＢＶバッファの容量に収まりきらないＩピクチャ又はＰピクチャを分割する。その上で、符号化装置１０は、Ｉピクチャ又はＰピクチャを分割した分割データのうち一部または全部の復号時刻を、その復号化データを復号化に使用するＢピクチャが復号化される前となる範囲内で元の復号時刻よりも早めたり、あるいは遅めたりする。これによって、バッファアンダーフロー及びバッファオーバーフローを回避する。なお、本実施例では、Ｉピクチャ又はＰピクチャを対象に分割および復号時刻の設定を行う場合を説明するが、符号化装置１０が符号化データを復号化装置３０へ遅延させて伝送する場合にはＢピクチャを対象にして分割および復号時刻の設定を行うこともできる。
【００３１】
まず、図４及び図５を用いて、バッファアンダーフローの回避方法について説明する。図４は、バッファアンダーフローの発生の一態様を示す図であり、また、図５は、バッファアンダーフローの回避例を示す図である。なお、図４及び図５の例は、いずれも図２に示した各ピクチャを対象に符号化、復号化及び表示が実行される場合を想定している。
【００３２】
図４に示すように、符号化装置１０によって符号化されたピクチャＰ５の情報量は、図１に示した符号化装置１０及び復号化装置３０の間で規定されたビットレートに比べて大きい。このため、符号化装置１０は、ＤＴＳ［５］（＝ＰＴＳ［２］）までにピクチャＰ５の全てを復号化装置３０へ伝送しきれない。それゆえ、ＤＴＳ［５］（＝ＰＴＳ［２］）の時点でＶＢＶバッファのアンダーフローが発生する。
【００３３】
このようなアンダーフローの発生を回避するために、符号化装置１０は、一例として、次のような処理を実行する。すなわち、符号化装置１０は、アンダーフローのボトルネックとなっているピクチャＰ５の符号化データを前段部分及び後段部分の２つに分割する。ここで言う「前段部分」とは、図４及び図５に示す太線部分を指し、また、「後段部分」とは、図４及び図５に示す太い点線部分を指す。その上で、符号化装置１０は、図５に示すように、ピクチャＰ５を分割した分割データのうち後段部分のデータをＤＴＳ［５］には復号させずに、ピクチャＰ５の次に復号するピクチャＢ３のＤＴＳ［３］に復号させるように後段部分のデータの復号時刻を設定する。つまり、符号化装置１０は、ピクチャＰ５を分割した分割データのうち前段部分のデータの復号時刻をＤＴＳ［５］と設定するとともに、後段部分のデータの復号時刻をＤＴＳ［３］と設定する。
【００３４】
このように、本実施例に係る符号化装置１０は、復号化装置３０に１ピクチャの符号化データを一度に復号させずに前段部分および後段部分のデータをＤＴＳ［５］及びＤＴＳ［３］の二度に分けて復号させる。このとき、本実施例に係る符号化装置１０は、ピクチャＢ３やピクチャＢ４の復号化が開始されるまでには、ピクチャＰ５の復号化が開始されるように各分割データの復号時刻を設定する。このため、後段部分のデータの復号化を後回しすることによって、ピクチャＰ５を参照して復号されるピクチャＢ３やピクチャＢ４が復号できなくなることもない。よって、本実施例に係る符号化装置１０では、ピクチャＰ５のトータルの情報量を削減せずともバッファアンダーフローを回避できる。それゆえ、ＤＴＳ［５］のタイミングで復号化装置３０にピクチャＰ５を復号化させるために、ピクチャＰ５の符号化データをＤＴＳ［５］までにピクチャＰ５を伝送できる情報量に削減する必要はない。したがって、本実施例に係る符号化装置１０によれば、動画像のフレーム間で画質を均一化できる。
【００３５】
次に、図６及び図７を用いて、バッファオーバーフローの回避方法について説明する。図６は、バッファオーバーフローの発生の一態様を示す図であり、また、図７は、バッファオーバーフローの回避例を示す図である。なお、図６及び図７の例は、いずれも図２に示した各ピクチャを対象に符号化、復号化及び表示が実行される場合を想定している。
【００３６】
図６に示すように、符号化装置１０によって符号化されたピクチャＰ５の情報量は、ＶＢＶバッファの容量を超える。このため、ＤＴＳ［５］（＝ＰＴＳ［２］）の時点でＶＢＶバッファのオーバーフローが発生する。
【００３７】
このようなオーバーフローの発生を回避するために、符号化装置１０は、一例として、次のような処理を実行する。すなわち、符号化装置１０は、オーバーフローのボトルネックとなっているピクチャＰ５の符号化データを前段部分及び後段部分の２つに分割する。ここで言う「前段部分」とは、図６及び図７に示す太線部分を指し、また、「後段部分」とは、図６及び図７に示す太い点線部分を指す。その上で、符号化装置１０は、図７に示すように、ピクチャＰ５を分割した分割データのうち前段部分のデータをＤＴＳ［５］には復号させずに、ピクチャＰ５の前に復号するピクチャＢ１のＤＴＳ［１］に復号させるように前段部分のデータの復号時刻を設定する。つまり、符号化装置１０は、ピクチャＰ５を分割した分割データのうち前段部分のデータの復号時刻をＤＴＳ［１］と設定するとともに、後段部分のデータの復号時刻をＤＴＳ［５］と設定する。
【００３８】
このように、本実施例に係る符号化装置１０は、復号化装置３０に１ピクチャの符号化データを一度に復号させずに前段部分および後段部分のデータをＤＴＳ［１］及びＤＴＳ［５］の二度に分けて復号させる。このとき、本実施例に係る符号化装置１０は、ピクチャＢ３やピクチャＢ４の復号化が開始されるまでには、ピクチャＰ５の復号化が開始されるように各分割データの復号時刻を設定する。このため、前段部分のデータの符号化を前倒しすることによって、ピクチャＰ５を参照して復号されるピクチャＢ３やピクチャＢ４が復号できなくなることもない。よって、本実施例に係る符号化装置１０では、スタッフィングビットのように動画像の画質に寄与しない無駄なデータを水増しせずに、ピクチャＰ５の符号化によって発生する符号化データを前倒して伝送できる分、画質を向上させることができる。したがって、本実施例に係る符号化装置１０によれば、動画像のフレーム間で画質を均一化できる。
【００３９】
上述してきたように、本実施例に係る符号化装置１０は、ピクチャよりも細かい単位に分割して上でその一部を後回しまたは前倒しで復号化装置３０に復号させる。これによって、本実施例に係る符号化装置１０では、復号化装置３０にピクチャ単位で復号化させた場合にアンダーフロー又はオーバーフローが発生するからといって、符号化データの情報量を増減させる必要がない。それゆえ、本実施例に係る符号化装置１０によれば、動画像のフレーム間で画質を均一化できる。一例として、映像の動きが激しい状態から映像の場面が切り替わる場合にバッファアンダーフローの回避方法を好適に適用できる。他の一例として、映像の動きがない状態から映像の場面が切り替わる場合にバッファオーバーフローの回避方法を好適に適用できる。
【００４０】
［符号化装置の構成］
次に、本実施例に係る符号化装置の構成について説明する。図１に示す符号化装置１０は、動画像入力部１１と、フレームメモリ１２と、符号化データバッファ１３ａと、符号化部１３と、データ送信部１４と、ＶＢＶ管理部１５とを有する。
【００４１】
このうち、動画像入力部１１は、自装置に動画像を入力する処理部である。一例としては、動画像入力部１１は、所定の撮像装置から撮画像を受信することにより動画像を入力することができる。他の一例としては、動画像入力部１１は、ネットワークを介して接続される外部装置からダウンロードすることにより動画像を入力することもできる。更なる一例としては、動画像入力部１１は、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）やＤＶＤ（Digital  Versatile  Disc）などの可搬記録媒体からの読出し処理を実行することにより動画像を入力することもできる。また、動画像入力部１１は、図示しない記憶部からの読出し処理を実行することにより動画像を入力することもできる。このように、動画像入力部１１は、撮像装置、読取装置または通信インタフェースなどの手段を任意に選択して実現できる。
【００４２】
フレームメモリ１２は、動画像のフレームデータを記憶するメモリである。一例としては、フレームメモリ１２には、動画像入力部１１によって入力される動画像のフレームが格納される。なお、ここでは、フレームメモリ１２に記憶されるフレームデータが動画像入力部１１によって入力される場合を例示したが、動画像入力部１１を介することなく、予めフレームデータを記憶しておくようにしてもかまわない。
【００４３】
符号化データバッファ１３ａは、符号化データを蓄積するバッファである。一例としては、後述する符号化部１３によって符号化された符号化データが蓄積される。このようにして符号化データバッファ１３ａに蓄積された符号化データは、後述するデータ送信部１４によって復号化装置３０へ送信された後に消去される。なお、符号化データバッファ１３ａの符号化データは、一定時間にわたって蓄積された後にタイマーにより自動的に消去されるようにしてもよい。
【００４４】
符号化部１３は、フレームメモリ１２に記憶されたフレームを符号化する処理部である。これを説明すると、符号化部１３は、フレームメモリ１２に記憶されたフレームのうち、Ｉピクチャ又はＰピクチャへ符号化するフレームをＢピクチャへ符号化するフレームよりも符号化順序が先になるように並べ替えて取り出す。その上で、符号化部１３は、並び替えを行ったフレームに順次符号化することにより得た符号化データを符号化データバッファ１３ａへ格納する。このフレームデータの符号化中に、符号化部１３は、マクロブロックの符号化によって発生した情報量、以下「発生情報量」と記載を後述のＶＢＶ管理部１５へ出力する。なお、「マクロブロック」とは、符号化前の動画像データが所定のサイズ、例えば１６画素×１６画素や８画素×８画素などに分割されたデータを指す。
【００４５】
データ送信部１４は、符号化データバッファ１３ａに蓄積された符号化データを復号化装置３０へ送信する処理部である。このデータ送信部１４は、後述のＶＢＶ管理部１５によって入力される付加データを符号化データバッファ１３ａから取り出したピクチャの符号化データの中でピクチャが分割される部分に挿入して復号化装置３０へ送信する。なお、付加データは、復号化装置３０側でピクチャの分割を認識させるためにＶＢＶ管理部１５によって付加される情報である。
【００４６】
ＶＢＶ管理部１５は、符号化部１３による符号化に伴って発生した情報量に基づいて、ＶＢＶバッファの管理を行う処理部である。一例としては、ＶＢＶ管理部１５は、符号化部１３によってフレームメモリ１２からフレームデータが取り出される度に、復号化装置３０にピクチャ単位で復号化させた場合にアンダーフローが発生するか否かを判定する。このとき、アンダーフローが発生する場合には、ＶＢＶ管理部１５は、現在入力中のピクチャの符号化データを分割した上で前段部分のデータの後に後段部分のデータのＤＴＳを復号化装置３０に認識させるための付加データを挿入する。このようにアンダーフローが発生する場合には、ピクチャの符号化データが分割されるので、分割した後段部分のデータがＶＢＶバッファの容量に近い情報量を持つ稀なケース以外はオーバーフローが発生しない。よって、ＶＢＶ管理部１５は、オーバーフローを回避するための分割は実行しない。また、アンダーフローが発生せずにピクチャの符号化が終了した場合には、ＶＢＶ管理部１５は、１ピクチャのＤＴＳ分の時間が経過した場合にオーバーフローが発生するか否かを判定する。このとき、オーバーフローが発生する場合には、ＶＢＶ管理部１５は、本来次のＤＴＳが付与されるピクチャの符号化を開始し、オーバーフローが検出されなくなった段階でピクチャの符号化データを分割する。その上で、ＶＢＶ管理部１５は、ピクチャの分割データのうち前段部分のデータの後に後段部分のデータのＤＴＳを復号化装置３０に認識させるための付加データを挿入する。
【００４７】
ここで、ＶＢＶ管理部１５によって使用されるパラメータについて説明する。かかるパラメータの一例としては、「MAX_MB_NUM」、「mbnum」、「B(mbnum)」、「MAX_DIV_NUM」、「div_num」、「MB_div[divnum]」、「Bitrete」、「VBVBOC_ini」、「SumB」、「SumB_TH[divnum]」などが挙げられる。さらに、「VBVBOC_divnum」、「DTS_ini」、「DTS[divnum]」、「DTS_1pic」なども挙げられる。
【００４８】
このうち、「MAX_MB_NUM」は、ピクチャ内の総ＭＢ（Macro  Block）数を示す。「mbnum」は、マクロブロックの番号を指し、例えば、０〜MAX_NUM−１の番号までインクリメントされる。「B(mbnum)」は、各々のＭＢ番号におけるマクロブロックの発生情報量を指す。「MAX_DIV_NUM」は、最大分割数を示す。「div_num」は、分割番号を指し、例えば、０〜MAX_DIV_NUM−１までインクリメントされる。「MB_div[divnum]」は、分割番号の領域に含まれる終端ＭＢ番号を指す。「Bitrete」は、符号化装置１０及び復号化装置３０の間のビットレートを指す。「VBVBOC_ini」は、復号化装置３０にピクチャ単位で復号させる場合のピクチャ先頭のＶＢＶバッファの占有量を指す。「SumB」は、発生情報量の累積加算値を指す。「SumB_TH[divnum]」は、データの分割条件とする分割番号別の発生情報量閾値を指す。「VBVBOC_divnum」は、最新の分割番号におけるＶＢＶバッファの占有量、以下「分割ＶＢＶバッファ占有量」と記載を指す。「DTS_ini」は、復号化装置３０にピクチャ単位で復号させる場合に付与される初期の復号時刻を指す。「DTS[divnum]」は、最新の分割番号の符号化データに付与される復号時刻、以下「分割復号時刻」と記載を指す。「DTS_1pic」は、１ピクチャ分のＤＴＳ加算値を指す。
【００４９】
これを具体的に説明すると、ＶＢＶ管理部１５は、ピクチャの先頭のマクロブロックの符号化が開始されると各パラメータを初期化する。一例として、ＶＢＶ管理部１５は、分割番号「div_num」を０に初期化する。さらに、ＶＢＶ管理部１５は、終端ＭＢ番号「MB_div[0]〜MB_div[MAX_DIV_NUM-1]」を０に初期化する。さらに、ＶＢＶ管理部１５は、分割復号時刻「DTS[0]〜DTS[MAX_DIV_NUM-1]」をDTS_iniに初期化する。さらに、ＶＢＶ管理部１５は、分割ＶＢＶバッファ占有量「VBVBOC_divnum[MAX_DIV_NUM-1]」をVBVBOC_iniに初期化する。
【００５０】
そして、ＶＢＶ管理部１５は、復号化装置３０にピクチャ単位で復号させる場合に付与される初期の復号時刻、すなわち分割復号時刻「DTS[0]」における最大発生情報量閾値「SumB_TH[0]」を決定する。かかる最大発生情報量閾値の決定方法の一例としては、次のような方法が挙げられる。例えば、図８に示すように、ＶＢＶ管理部１５は、分割ＶＢＶバッファ占有量「VBVBOC_divnum[0]」から、アンダーフローを防止するために予め規定されたバッファ枯渇防止閾値「VBV_TH」を減算することにより、最大発生情報量閾値「SumB_TH[0]」を決定する。なお、図８は、ＶＢＶ管理部の処理内容を説明するための図である。
【００５１】
続いて、ＶＢＶ管理部１５は、現在のＭＢ番号「mbnum」に対応するマクロブロックを符号化部１３に符号化させる。そして、ＶＢＶ管理部１５は、マクロブロックの発生情報量「B(mbnum)」を取得する。その上で、ＶＢＶ管理部１５は、先に取得した発生情報量「B(mbnum)」をそれまでに累積されてきた現在の分割番号「div_num」の加算値へ累積加算する計算、つまりSumB=ΣB(i)(MB_div[divnum-1〜mbnum])の計算を実行する。なお、発生情報量の累積加算値は、分割データ内の累積加算値であり、ピクチャの分割が発生する場合には０にリセットされる。ピクチャの分割が発生しない場合には、ピクチャの発生情報量の累積加算値に等しくなる。
【００５２】
ここで、ＶＢＶ管理部１５は、現在の分割番号「div_num」の発生情報量の累積加算値「SumB」が最大発生情報量閾値「SumB_TH[divnum]」を超過するか否かを判定する。この閾値判定によって、ＶＢＶ管理部１５は、ピクチャの分割の要否を判定する。なお、発生情報量の累積加算値「SumB」が最大発生情報量閾値「SumB_TH[divnum]」以下である場合には、ＭＢ番号を１つインクリメントした上で上記の処理を繰り返し実行する。図８の例で言えば、ＭＢ番号「X-1」の発生情報量「B(X-1)」が累積加算された値「SumB」は、最大発生情報量閾値「SumB_TH[0]」よりも小さい。このため、ＭＢ番号「X-1」が符号化された段階では、当ピクチャの分割は不要と判定される。一方、ＭＢ番号「X」の発生情報量「B(X)」が累積加算された値「SumB」は、最大発生情報量閾値「SumB_TH[0]よりも大きい。この場合には、当ピクチャの分割が好ましいと判定される。
【００５３】
このとき、発生情報量の累積加算値「SumB」が最大発生情報量閾値「SumB_TH[divnum]」を超過する場合には、ＶＢＶ管理部１５は、１つ前のＭＢ番号「mbnum」を分割切れ目の終端ＭＢ番号「MB_div[divnum]」と定める。図８の例で言えば、ＭＢ番号「X」の発生情報量「B(X)」が累積加算された値「SumB」で最大発生情報量閾値「SumB_TH[0]」を超えるので、ＭＢ番号「X-1」が終端ＭＢ番号「MB_div[divnum]」と決定される。これによって、ＶＢＶ管理部１５は、ＭＢ番号「X-1」までのマクロブロックの符号化データをDTS[0]で復号させる符号化データとして扱う。
【００５４】
そして、ＶＢＶ管理部１５は、分割復号時刻「DTS[divnum]」の分割ＶＢＶバッファ占有量「VBVBOC_divnum」を確定させる。図８の例で言えば、ＶＢＶ管理部１５は、分割復号時刻「DTS[0]」で符号化データが復号されてＶＢＶバッファから除去された際のＶＢＶバッファの占有量を算出する。すなわち、ＭＢ番号「X-1」が符号化された段階での分割ＶＢＶバッファ占有量「VBVBOC_divnum[0]」は、ピクチャ先頭の「VBVBOC_divnum[0]」からＭＢ番号「X-1」の発生情報量「B(X-1)」が累積加算された値「SumB」を減算することにより計算される。
【００５５】
続いて、ＶＢＶ管理部１５は、分割復号時刻「DTS[divnum]」に１ピクチャ分のＤＴＳ加算値「DTS_1pic」を加えることにより、ＤＴＳを１ピクチャ分進める。そして、ＶＢＶ管理部１５は、分割復号時刻「DTS[divnum]」の分割ＶＢＶバッファ占有量「VBVBOC_divnum」に１ピクチャ分のＤＴＳ加算値「DTS_1pic」×ビットレート「Bitrare」を乗算することにより、ＶＢＶバッファの占有量を１ＤＴＳ分進める。その上で、ＶＢＶ管理部１５は、分割番号「div_num」をインクリメントする。図８の例で言えば、ＶＢＶ管理部１５は、分割復号時刻「DTS[0]」に１ピクチャ分のＤＴＳ加算値「DTS_1pic」を加えることにより、分割されたＭＢ番号「X」以降の分割復号時刻を「DTS[1]」と決定する。その後、ＶＢＶ管理部１５は、「VBVBOC_divnum[0]」に１ピクチャ分のＤＴＳ加算値「DTS_1pic」×ビットレート「Bitrare」を乗算する。このようにして、分割復号時刻「DTS[1]」の分割ＶＢＶバッファ占有量「VBVBOC_divnum[1]」を計算する。これによって、復号化装置３０にピクチャ単位で復号させる場合には、復号化装置３０にＤＴＳ［０］で復号化させるＭＢ番号「X」以降の符号化データが、図８に示す円囲いの点線で示すように、復号化装置３０に次のＤＴＳ［１］で復号化させることになる。そして、ＶＢＶ管理部１５は、分割番号「0」を１つインクリメントすることにより、分割番号を「1」とする。
【００５６】
そして、ＶＢＶ管理部１５は、先にインクリメントした分割番号「divnum+1」の分割復号時刻「DTS[divnum+1]」における最大発生情報量閾値「SumB_TH[divnum]」を決定する。図８に示す例では、分割復号時刻「DTS[1]」における最大発生情報量閾値「SumB_TH[divnum]」が決定される。一例としては、ＶＢＶ管理部１５は、ＶＢＶバッファの容量に対する所定の割合、例えば７０％などを分割後の最大発生情報量閾値として採用する。
【００５７】
続いて、ＶＢＶ管理部１５は、スタートコード「startcode」、分割終端ＭＢ番号「MB_div[divnum]」及び分割復号時刻「DTS[divnum]」を含む付加データを生成する。図９は、付加データの一例を示す図である。図９に示す例では、ＰｉｃＮｏ．１のピクチャの符号化データに付加データを挿入する場合を例示している。図９に示すように、付加データには、スタートコード、終端ＭＢ番号及び分割復号時刻が含まれる。このうち、スタートコードは、ストリームデータの中から付加データを識別するためのコードであり、例えば、ＭＰＥＧ等で使用される0×000001**などの同期コードが使用される。終端ＭＢ番号は、本付加データ以前までに含まれるべき、ピクチャ内のＭＢ番号を示す。また、分割復号時刻は、次以降のＭＢ番号の符号化データが復号化装置３０で復号化されてＶＢＶバッファから除去されると推定される時刻を指す。なお、図８の例で言えば、ＤＴＳ［０］に復号させるべき終端ＭＢ番号には「MB_div[X-1]」が付加されるとともに、次以降のＭＢ番号「X」の符号化データを符号化させる分割復号時刻には「DTS[1]」が付加される。
【００５８】
そして、ＶＢＶ管理部１５は、終端ＭＢ番号「MB_div[divnum]」までの符号化データをデータ送信部１４に送信させるとともに、終端ＭＢ番号「MB_div[divnum]」の後に付加データを挿入する。
【００５９】
このようにして、ＶＢＶ管理部１５は、ＭＢ番号が「MAX_MB_NUM」に到達するまで、上記の処理を繰り返し行う。その後、ＭＢ番号が「MAX_MB_NUM」に到達し、１ピクチャの符号化が完了すると、ＶＢＶ管理部１５は、次のように未送信のストリームをデータ送信部１４に送信させる。例えば、ＶＢＶ管理部１５は、分割が発生していない場合には、符号化データバッファ１３ａに蓄積されたピクチャの符号化データをデータ送信部１４に送信させる。また、分割が発生していない場合には、ＶＢＶ管理部１５は、終端ＭＢ番号「MB_div[divnum]」までの符号化データをデータ送信部１４に送信させるとともに、終端ＭＢ番号「MB_div[divnum]」の後に付加データを挿入する。
【００６０】
続いて、バッファアンダーフローを回避していなかった場合には、ＶＢＶ管理部１５は、次のような処理を実行する。すなわち、ＶＢＶ管理部１５は、ピクチャ先頭のＶＢＶバッファの占有量「VBVBOC_ini」から、ＭＢ番号「MAX_MB_NUM」までの発生情報量の累積加算値「SumB=ΣB(0〜MAX_MB_NUM-1)」を減算することにより、現在のピクチャのバッファ占有量「VBVBOC」を算出する。
【００６１】
そして、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」を算出する。図１０に示す例で言えば、ＶＢＶ管理部１５は、現在のピクチャのバッファ占有量「VBVBOC」に１ピクチャ分のＤＴＳ加算値「DTS_1pic」×ビットレート「Bitrare」を乗算することにより、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」を算出する。なお、図１０は、ＶＢＶ管理部の処理内容を説明するための図である。
【００６２】
ここで、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」がＶＢＶバッファの容量「VBVBufferSize」を超えるか否か、すなわちバッファオーバーフローするか否かを判定する。図１０に示す例で言えば、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」がＶＢＶバッファの容量「VBVBufferSize」を超えるので、ＶＢＶ管理部１５によってバッファオーバーフローすると判定される。
【００６３】
このとき、バッファオーバーフローが発生しない場合には、ＶＢＶ管理部１５は、次のピクチャが前倒しで復号されないように、次のピクチャについて復号化装置３０にピクチャ単位で復号させる場合と同様のタイミングで復号化する旨を決定する。
【００６４】
一方、バッファオーバーフローが発生する場合には、ＶＢＶ管理部１５は、ＶＢＶバッファを超過するサイズ「Overbit」を算出する。図１０に示す例で言えば、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」からＶＢＶバッファの容量「VBVBufferSize」を減算することにより、ＶＢＶバッファを超過するサイズ「Overbit」を算出する。
【００６５】
続いて、ＶＢＶ管理部１５は、スタートコード「startcode」、分割終端ＭＢ番号「MB_div[divnum]」及び分割復号時刻「DTS[divnum]」を含む付加データを生成する。そして、ＶＢＶ管理部１５は、復号化装置３０にピクチャ単位で復号させる場合には次のＤＴＳで符号化されるピクチャの符号化を開始する。なお、この時、発生情報量の累積加算値「SumB」は、ゼロにリセットされるとともに、最大発生情報量閾値「SumB_TH[divnum]」は、ＶＢＶバッファを超過するサイズ「Overbit」に設定される。図１０の例で言えば、本来であれば復号化装置３０にＤＴＳ［１］で復号化させるピクチャをＤＴＳ［０］で前倒して符号化させる。
【００６６】
その後、ＶＢＶ管理部１５は、次のＤＴＳで符号化されるピクチャの符号化を符号化部１３へ指示する。続いて、ＶＢＶ管理部１５は、符号化部１３から取得した発生情報量「B(mbnum)」をそれまでに累積されてきた加算値「SumB」へ累積加算する。
【００６７】
ここで、ＶＢＶ管理部１５は、現在の分割番号「div_num」の発生情報量の累積加算値「SumB」が最大発生情報量閾値「SumB_TH[Overbit]」以上であるか否かを判定する。このとき、現在の分割番号の発生情報量の累積加算値が最大発生情報量閾値未満である場合には、次のＭＢ番号に対応するマクロブロックを符号化部１３に符号化させる。
【００６８】
一方、現在の分割番号の発生情報量の累積加算値が最大発生情報量閾値以上である場合には、ＶＢＶ管理部１５は、次のような処理を行う。すなわち、ＶＢＶ管理部１５は、先に求めたＶＢＶバッファの占有量「VBVBOC」から発生情報量の累積加算値「SumB」を減算して現在のＶＢＶバッファの占有量「VBVBOC」を再計算する。
【００６９】
そして、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」を算出する。続いて、ＶＢＶ管理部１５は、スタートコード「startcode」、分割終端ＭＢ番号「MB_div[divnum]」及び分割復号時刻「DTS[divnum]」を含む付加データを生成する。図１０の例で言えば、ＭＢ番号「X」で「Overbit」を超えた場合には、本来であれば復号化装置３０にＤＴＳ［１］で復号化させるピクチャのうち、ＭＢ番号「0〜X」までの符号化データがＤＴＳ［０］で前倒して符号化される。そして、ＭＢ番号「X+1」以降のマクロブロックは本来の復号時刻であるＤＴＳ［１］のデータとして符号化が実行される。
【００７０】
その後、ＶＢＶ管理部１５は、「Overbit」を超えたＭＢ番号までの符号化データをデータ送信部１４に送信させるとともに、終端ＭＢ番号「MB_div[divnum]」の後に付加データを挿入する。そして、ＶＢＶ管理部１５は、「Overbit」を超えたＭＢ番号の次のＭＢ番号、すなわち符号化されずに残ったＭＢ番号から復号化装置３０にピクチャ単位で復号させる場合と同様のタイミングで復号化する旨を決定する。
【００７１】
［復号化装置の構成］
次に、本実施例に係る復号化装置の構成について説明する。図１に示す復号化装置３０は、データ受信部３１と、符号化データバッファ３２ａと、復号化部３２と、バッファ管理部３２と、フレームメモリ３４と、表示部３５を有する。
【００７２】
データ受信部３１は、符号化装置１０によって送信された符号化データを受信する処理部である。データ受信部３１は、このようにして受信した符号化データを後述の符号化データバッファ３２ａへ格納する。
【００７３】
符号化データバッファ３２ａは、符号化データを蓄積するバッファである。一例としては、データ受信部３１によって受信された符号化データが蓄積される。このようにして符号化データバッファ３２ａに蓄積された符号化データは、後述する復号化部３３によって復号化されるとともに除去される。
【００７４】
復号化部３３は、符号化データバッファ３２ａに記憶された符号化データを復号化する処理部である。一例としては、復号化部３３は、後述のバッファ管理部３２からの指示にしたがって、符号化データバッファ３２ａから符号化データを取り出して復号化する。
【００７５】
フレームメモリ３４は、動画像のフレームデータを記憶するメモリである。一例としては、フレームメモリ３４には、復号化部３３によって復号化された動画像のフレームが格納される。また、表示部３５は、各種の情報、例えばフレームメモリ３４から読み出した画像を表示する表示デバイスであり、例えば、モニタ、ディスプレイやタッチパネルなどである。なお、表示部３５は、フレームメモリ３４に蓄積されたフレームのうち、先にＩピクチャ又はＰピクチャのフレームとして復号化されたものよりもそれを参照して復号化されたＢピクチャのフレームを先に表示する。
【００７６】
バッファ管理部３２は、符号化データバッファ３２ａを管理する処理部である。一例としては、バッファ管理部３２は、符号化データバッファ３２ａに蓄積された動画像データに対してピクチャ単位ではなくピクチャの分割単位で復号時刻が設定されている場合に、復号時刻に応じて符号化データをピクチャ単位で復号化部３３に復号化させる。
【００７７】
［各種処理の流れ］
次に、本実施例に係る伝送システムの処理の流れを説明する。なお、ここでは、符号化装置１０によって実行される（１）符号化処理を説明した後に、復号化装置３０によって実行される（２）復号化処理を説明する。
【００７８】
（１）符号化処理
図１１〜図１３は、実施例１に係る符号化処理の手順を示すフローチャートである。この符号化処理は、動画像入力部１１によって動画像のフレームが受け付けられた場合に起動する処理である。図１１に示すように、フレームが受け付けられると（ステップＳ１０１肯定）、動画像入力部１１は、動画像のフレームをフレームメモリ１２へ書き込む（ステップＳ１０２）。
【００７９】
そして、フレームメモリ１２に書き込まれたフレームに並び替えが不要である場合、すなわちＩピクチャやＰピクチャであった場合（ステップＳ１０３否定）には、ＶＢＶ管理部１５は、次のような処理を行う。すなわち、ＶＢＶ管理部１５は、今回書き込んだピクチャを符号化部１３へ入力する（ステップＳ１０４）。
【００８０】
また、フレームメモリ１２に書き込まれたフレームに並び替えが必要である場合、すなわちＢピクチャであった場合（ステップＳ１０３肯定）には、ＶＢＶ管理部１５は、次のような処理を行う。すなわち、ＶＢＶ管理部１５は、既にフレームメモリ１２に蓄積されているピクチャを符号化部１３へ入力する（ステップＳ１０５）。
【００８１】
続いて、ＶＢＶ管理部１５は、ピクチャの先頭のマクロブロックの符号化が開始されると各パラメータを初期化する（ステップＳ１０６）。そして、ＶＢＶ管理部１５は、復号化装置３０にピクチャ単位で復号させる場合に付与される初期の復号時刻、すなわち分割復号時刻「DTS[0]」における最大発生情報量閾値「SumB_TH[0]」を決定する（ステップＳ１０７）。
【００８２】
続いて、ＶＢＶ管理部１５は、現在のＭＢ番号「mbnum」に対応するマクロブロックを符号化部１３に符号化させる（ステップＳ１０８）。そして、ＶＢＶ管理部１５は、マクロブロックの発生情報量「B(mbnum)」を取得する（ステップＳ１０９）。その上で、ＶＢＶ管理部１５は、先に取得した発生情報量「B(mbnum)」をそれまでに累積されてきた現在の分割番号「div_num」の加算値へ累積加算する計算、つまりSumB=ΣB(i)(MB_div[divnum-1〜mbnum])の計算を実行する（ステップＳ１１０）。
【００８３】
ここで、ＶＢＶ管理部１５は、現在の分割番号「div_num」の発生情報量の累積加算値「SumB」が最大発生情報量閾値「SumB_TH[divnum]」を超過するか否かを判定する（ステップＳ１１１）。なお、発生情報量の累積加算値が最大発生情報量閾値以下である場合（ステップＳ１１１否定）には、ステップＳ１２０の処理に移行する。
【００８４】
このとき、発生情報量の累積加算値が最大発生情報量閾値を超過する場合（ステップＳ１１１肯定）には、ＶＢＶ管理部１５は、１つ前のＭＢ番号「mbnum」を分割切れ目の終端ＭＢ番号「MB_div[divnum]」と定める（ステップＳ１１２）。そして、ＶＢＶ管理部１５は、分割復号時刻「DTS[divnum]」の分割ＶＢＶバッファ占有量「VBVBOC_divnum」を確定させる（ステップＳ１１３）。
【００８５】
続いて、ＶＢＶ管理部１５は、分割復号時刻「DTS[divnum]」に１ピクチャ分のＤＴＳ加算値「DTS_1pic」を加えることにより、ＤＴＳを１ピクチャ分進める（ステップＳ１１４）。そして、ＶＢＶ管理部１５は、ＶＢＶバッファの占有量を１ＤＴＳ分進める（ステップＳ１１５）。その上で、ＶＢＶ管理部１５は、分割番号「div_num」をインクリメントする（ステップＳ１１６）。
【００８６】
そして、ＶＢＶ管理部１５は、先にインクリメントした分割番号「divnum+1」の分割復号時刻「DTS[divnum+1]」における最大発生情報量閾値「SumB_TH[divnum]」を決定する（ステップＳ１１７）。続いて、ＶＢＶ管理部１５は、スタートコード「startcode」、分割終端ＭＢ番号「MB_div[divnum]」及び分割復号時刻「DTS[divnum]」を含む付加データを生成する（ステップＳ１１８）。
【００８７】
その後、ＶＢＶ管理部１５は、終端ＭＢ番号「MB_div[divnum]」までの符号化データをデータ送信部１４に送信させるとともに、終端ＭＢ番号「MB_div[divnum]」の後に付加データを挿入する（ステップＳ１１９）。
【００８８】
そして、ＶＢＶ管理部１５は、ＭＢ番号が「MAX_MB_NUM」に到達するまで（ステップＳ１２０否定）、上記のステップＳ１０８〜Ｓ１１９までの処理を繰り返し行う。その後、ＭＢ番号が「MAX_MB_NUM」に到達し、１ピクチャの符号化が完了すると（ステップＳ１２０肯定）、ＶＢＶ管理部１５は、次のように未送信のストリームをデータ送信部１４に送信させる（ステップＳ１２１）。
【００８９】
続いて、バッファアンダーフローを回避していなかった場合（ステップＳ１２２否定）には、ＶＢＶ管理部１５は、現在のピクチャのバッファ占有量「VBVBOC」を算出する（ステップＳ１２３）。そして、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」を算出する（ステップＳ１２４）。なお、バッファアンダーフローを回避していた場合（ステップＳ１２２肯定）には、上記のステップＳ１０１の処理に戻る。
【００９０】
ここで、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」がＶＢＶバッファの容量「VBVBufferSize」を超えるか否か、すなわちバッファオーバーフローするか否かを判定する（ステップＳ１２５）。
【００９１】
このとき、バッファオーバーフローが発生しない場合（ステップＳ１２５否定）には、ＶＢＶ管理部１５は、次のような処理を行う。すなわち、ＶＢＶ管理部１５は、次のピクチャが前倒しで復号されないように、次のピクチャについて復号化装置３０にピクチャ単位で復号させる場合と同様のタイミングで復号化する旨を決定し（ステップＳ１２６）、上記のステップＳ１０１の処理に戻る。
【００９２】
また、バッファオーバーフローが発生する場合（ステップＳ１２５肯定）には、ＶＢＶ管理部１５は、ＶＢＶバッファを超過するサイズ「Overbit」を算出する（ステップＳ１２７）。続いて、ＶＢＶ管理部１５は、スタートコード「startcode」、分割終端ＭＢ番号「MB_div[divnum]」及び分割復号時刻「DTS[divnum]」を含む付加データを生成する（ステップＳ１２８）。そして、ＶＢＶ管理部１５は、復号化装置３０にピクチャ単位で復号させる場合には次のＤＴＳで符号化されるピクチャの符号化を開始する（ステップＳ１２９）。
【００９３】
その後、ＶＢＶ管理部１５は、次のＤＴＳで符号化されるピクチャの符号化を符号化部１３へ指示する（ステップＳ１３０）。続いて、ＶＢＶ管理部１５は、符号化部１３から取得した発生情報量「B(mbnum)」をそれまでに累積されてきた加算値「SumB」へ累積加算する（ステップＳ１３１）。
【００９４】
ここで、ＶＢＶ管理部１５は、現在の分割番号「div_num」の発生情報量の累積加算値「SumB」が最大発生情報量閾値「SumB_TH[Overbit]」以上であるか否かを判定する（ステップＳ１３２）。このとき、現在の分割番号の発生情報量の累積加算値が最大発生情報量閾値未満である場合（ステップＳ１３２否定）には、全てのＭＢ番号のマクロブロックについて処理が終了するまで（ステップＳ１３８否定）、ＶＢＶ管理部１５は、次のような処理を行う。すなわち、ＶＢＶ管理部１５は、上記のステップＳ１３０〜Ｓ１３２までの処理を繰り返し行う。
【００９５】
一方、現在の分割番号の発生情報量の累積加算値が最大発生情報量閾値以上である場合（ステップＳ１３２肯定）には、ＶＢＶ管理部１５は、次のような処理を行う。すなわち、ＶＢＶ管理部１５は、先に求めたＶＢＶバッファの占有量「VBVBOC」から発生情報量の累積加算値「SumB」を減算して現在のＶＢＶバッファの占有量「VBVBOC」を再計算する（ステップＳ１３３）。
【００９６】
そして、ＶＢＶ管理部１５は、１ＤＴＳ分進めたＶＢＶバッファの占有量「VBVBOC_next」を算出する（ステップＳ１３４）。続いて、ＶＢＶ管理部１５は、スタートコード「startcode」、分割終端ＭＢ番号「MB_div[divnum]」及び分割復号時刻「DTS[divnum]」を含む付加データを生成する（ステップＳ１３５）。
【００９７】
その後、ＶＢＶ管理部１５は、「Overbit」を超えたＭＢ番号までの符号化データをデータ送信部１４に送信させるとともに、終端ＭＢ番号「MB_div[divnum]」の後に付加データを挿入する（ステップＳ１３６）。
【００９８】
そして、ＶＢＶ管理部１５は、「Overbit」を超えたＭＢ番号の次のＭＢ番号、すなわち符号化されずに残ったＭＢ番号から復号化装置３０にピクチャ単位で復号させる場合と同様のタイミングで復号化する旨を決定する（ステップＳ１３７）。その後、ＶＢＶ管理部１５は、上記のステップＳ１０１の処理に戻る。
【００９９】
（２）復号化処理
図１４は、実施例１に係る復号化処理の手順を示すフローチャートである。この復号化処理は、データ受信部３１によって復号対象とする符号化データが受信された場合に処理が起動する。図１４に示すように、復号対象とする符号化データが受信された場合（ステップＳ３０１肯定）には、バッファ管理部３２は、次のような処理を行う。すなわち、バッファ管理部３２は、シーケンスヘッダ、ピクチャヘッダ、スライスヘッダなどのマクロブロックよりも上位のヘッダの復号処理を復号化部３３に実行させる（ステップＳ３０２）。続いて、バッファ管理部３２は、マクロブロックの復号処理を復号化部３３に実行させる（ステップＳ３０３）。
【０１００】
そして、マクロブロックの復号データから付加データのスタートコード「Startcode」が検出された場合（ステップＳ３０４肯定）には、バッファ管理部３２は、次のような処理を行う。すなわち、バッファ管理部３２は、復号が完了したマクロブロックのＭＢ番号と付加データに含まれる終端ＭＢ番号とが等しいか否かをさらに判定する（ステップＳ３０５）。
【０１０１】
このとき、復号が完了したマクロブロックのＭＢ番号と付加データに含まれる終端ＭＢ番号とが等しい場合（ステップＳ３０５肯定）には、バッファ管理部３２は、次のような処理を行う。すなわち、バッファ管理部３２は、ピクチャの符号化データが分割されていることを認識し、次の復号時刻を取得し（ステップＳ３０６）、上記のステップＳ３０１の処理に戻る。
【０１０２】
一方、復号が完了したマクロブロックのＭＢ番号と付加データに含まれる終端ＭＢ番号とが等しくない場合（ステップＳ３０５否定）には、バッファ管理部３２は、次のような処理を行う。すなわち、バッファ管理部３２は、符号化装置１０により付加データとして書き込まれた分割位置のＭＢ番号と、実際に復号できたＭＢ番号とが違うので、エラー処理を行う（ステップＳ３０７）。
【０１０３】
また、マクロブロックの復号データから付加データのスタートコード「Startcode」が検出されなかった場合（ステップＳ３０４否定）には、バッファ管理部３２は、次のような処理を行う。すなわち、バッファ管理部３２は、今回復号したマクロブロックのＭＢ番号がピクチャ内の終端ＭＢであるか否かを判定する（ステップＳ３０８）。
【０１０４】
そして、今回復号したマクロブロックのＭＢ番号がピクチャ内の終端ＭＢである場合（ステップＳ３０８肯定）には、バッファ管理部３２は、復号したマクロブロックの復号化データをフレームメモリ３２へ格納する（ステップＳ３０９）。その後、バッファ管理部３２は、上記のステップＳ３０１の処理に戻る。一方、今回復号したマクロブロックのＭＢ番号がピクチャ内の終端ＭＢである場合（ステップＳ３０８否定）には、上記のステップＳ３０３の処理に戻る。
【０１０５】
［実施例１の効果］
上述してきたように、本実施例に係る符号化装置１０は、ＶＢＶバッファでアンダーフロー又はオーバーフローが検知された場合にピクチャの符号化データを分割した上で分割後のデータ毎に復号時刻を設定する。これによって、本実施例に係る符号化装置１０では、復号化装置３０にピクチャ単位で復号化させた場合にアンダーフロー又はオーバーフローが発生するからといって、符号化データの情報量を増減させる必要がない。それゆえ、本実施例に係る符号化装置１０によれば、動画像のフレーム間で画質を均一化できる。
【０１０６】
また、本実施例に係る符号化装置１０は、符号化データの情報量に基づいてＶＢＶバッファでアンダーフローが発生するか否かを判定する。そして、本実施例に係る符号化装置１０は、ＶＢＶバッファでアンダーフローが発生すると判定された場合に、符号化データを分割し、分割された符号化データのうち前段の符号化データには第１の復号時刻を設定する。さらに、本実施例に係る符号化装置１０は、後段の符号化データには第１の復号時刻よりも遅い第２の復号時刻を設定する。このため、本実施例に係る符号化装置１０では、符号化データのトータルの情報量を削減せずともバッファアンダーフローを回避できる。
【０１０７】
さらに、本実施例に係る符号化装置１０は、符号化データの情報量に基づいてＶＢＶバッファでオーバーフローが発生するか否かを判定する。そして、本実施例に係る符号化装置１０は、ＶＢＶバッファでオーバーフローが発生すると判定された場合に、今回に符号化データには第１の復号時刻を設定する。さらに、本実施例に係る符号化装置１０は、次回に符号化される動画像データを分割し、分割された符号化データのうち前段の符号化データには第１の復号時刻を設定する。また、本実施例に係る符号化装置１０は、後段の符号化データには第１の復号時刻よりも遅い第２の復号時刻を設定する。よって、本実施例に係る符号化装置１０では、スタッフィングビットのように動画像の画質に寄与しない無駄なデータを水増しせずに、動画像の符号化によって発生する符号化データを前倒して伝送できる分、画質を向上させることができる。
【０１０８】
また、本実施例に係る復号化装置３０は、符号化された動画像データを受信し、符号化データバッファ３２ａに格納する。そして、本実施例に係る復号化装置３０は、符号化データバッファ３２ａに蓄積された符号化データに対してピクチャ単位ではなくピクチャの分割単位で復号時刻が設定されている場合に、復号時刻に応じて符号化データをピクチャ単位で復号化する。さらに、本実施例に係る復号化装置３０は、復号化された動画像データを並べ替えて復号化された動画像データを表示時間順に出力する。このため、本実施例に係る復号化装置３０によれば、ＶＢＶバッファの破綻を防止しつつ、動画像のフレーム間で均質な画質で出力できる。
【実施例２】
【０１０９】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１１０】
さて、上記の実施例１では、１つのピクチャを２つに分割する場合について例示したが、開示の装置はこれに限定されない。すなわち、開示の装置は、１つのピクチャを３つ以上に分割する場合についても同様に適用することができる。図１５は、応用例を説明するための図である。図１５に示すように、ＤＴＳ［０］の時点でバッファアンダーフローが発生する場合に、分割したデータをＤＴＳ［１］の時点で復号させるように後回し、さらに、分割したデータをＤＴＳ［２］の時点で復号させるように後回しすることもできる。なお、バッファアンダーフローのみならず、バッファオーバーフローについても同様に３つ以上に分割することができる。
【０１１１】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ＶＢＶ管理部１５が実行する処理を分割処理と復号時刻設定処理とに分散してもよい。
【０１１２】
また、上記の実施例で説明した各種の処理は、予め用意された符号化プログラム及び復号化プログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することもできる。これら符号化プログラム及び復号化プログラムについては、必ずしも最初からコンピュータのＨＤＤ（Hard  Disk  Drive）やＲＯＭに記憶させておく必要はない。例えば、コンピュータに挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータがこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータに接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータがこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【０１１３】
１    伝送システム
１０    符号化装置
１１    動画像入力部
１２    フレームメモリ
１３ａ  符号化データバッファ
１３    符号化部
１４    データ送信部
１５    ＶＢＶ管理部
３０    復号化装置
３１    データ受信部
３２ａ  符号化データバッファ
３２    バッファ管理部
３３    復号化部
３４    フレームメモリ
３５    表示部
【図１】
0005521940.tif 000002
【図２】
0005521940.tif 000003
【図３】
0005521940.tif 000004
【図４】
0005521940.tif 000005
【図５】
0005521940.tif 000006
【図６】
0005521940.tif 000007
【図７】
0005521940.tif 000008
【図８】
0005521940.tif 000009
【図９】
0005521940.tif 000010
【図１０】
0005521940.tif 000011
【図１１】
0005521940.tif 000012
【図１２】
0005521940.tif 000013
【図１３】
0005521940.tif 000014
【図１４】
0005521940.tif 000015
【図１５】
0005521940.tif 000016
【図１６】
0005521940.tif 000017
【図１７】
0005521940.tif 000018