(57)【要約】【課題】パケットヘッダの挿入に伴う再符号化によって処理速度が低下しない、高速の動画像符号化装置を提供する。【解決手段】処理対象のマクロブロックがパケット内の先頭マクロブロックである場合を先頭時、先頭マクロブロックでない場合を通常時とする。動きベクトル予測部２０は、動きベクトル５２に対して、先頭時の動きベクトル予測処理と通常時の動きベクトル予測処理の両方を施す。ＤＣ／ＡＣ予測部３０は、量子化結果５４に対して、先頭時のＤＣ／ＡＣ予測処理と通常時のＤＣ／ＡＣ予測処理の両方を施す。可変長符号化部４０は、先頭時の差分動きベクトル５６ａと先頭時の係数データ５７ａを可変長符号化して先頭時の符号化データを求めると共に、通常時の差分動きベクトル５６ｂと通常時の係数データ５７ｂを可変長符号化して通常時の符号化データを求め、いずれかをパケット化すべき符号化データとして選択する。【選択図】図１
2007158744.tif 000002
【特許請求の範囲】
【請求項１】
動画像を符号化し、得られた符号化データをパケット化して出力する動画像符号化装置であって、
入力された動画像に対して動き検出、直交変換および量子化を含む符号化処理を施し、動きベクトルおよび量子化結果を出力する符号化部と、
前記動きベクトルに対して動きベクトル予測処理を施し、差分動きベクトルを出力する動きベクトル予測部と、
前記量子化結果に対してＤＣ／ＡＣ予測処理を施し、係数データを出力するＤＣ／ＡＣ予測部と、
前記差分動きベクトルおよび前記係数データを可変長符号化し、得られた符号化データをパケット化して出力する可変長符号化部とを備え、
処理対象のマクロブロックがパケット内の先頭マクロブロックである場合を先頭時、それ以外の場合を通常時としたとき、
前記動きベクトル予測部は、前記動きベクトルに対して先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理の両方を施し、先頭時の差分動きベクトルおよび通常時の差分動きベクトルの両方を出力し、
前記ＤＣ／ＡＣ予測部は、前記量子化結果に対して先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理の両方を施し、先頭時の係数データおよび通常時の係数データの両方を出力し、
前記可変長符号化部は、前記先頭時の差分動きベクトルおよび前記先頭時の係数データを可変長符号化して先頭時の符号化データを求めると共に、前記通常時の差分動きベクトルおよび前記通常時の係数データを可変長符号化して通常時の符号化データを求め、前記先頭時の符号化データおよび前記通常時の符号化データのいずれかをパケット化すべき符号化データとして選択することを特徴とする、動画像符号化装置。
【請求項２】
前記可変長符号化部は、未出力の符号化データを記憶し、前記未出力の符号化データおよび前記通常時の符号化データのサイズの和が所定値未満の場合には、前記先頭時の符号化データを破棄して、前記通常時の符号化データを前記未出力の符号化データに追加し、前記和が前記所定値以上の場合には、前記通常時の符号化データを破棄して、前記未出力の符号化データをパケットとして出力し、前記先頭時の符号化データを新たな未出力の符号化データとして記憶することを特徴とする、請求項１に記載の動画像符号化装置。
【請求項３】
前記可変長符号化部は、前記先頭時の符号化データ、前記通常時の符号化データおよび前記未出力の符号化データを重要度ごとに区別して処理し、符号化データを重要度の順に配置したパケットを出力することを特徴とする、請求項１に記載の動画像符号化装置。
【請求項４】
動画像を符号化し、得られた符号化データをパケット化して出力する動画像符号化方法であって、
入力された動画像に対して動き検出、直交変換および量子化を含む符号化処理を施し、動きベクトルおよび量子化結果を求める符号化ステップと、
前記動きベクトルに対して動きベクトル予測処理を施し、差分動きベクトルを出力する動きベクトル予測ステップと、
前記量子化結果に対してＤＣ／ＡＣ予測処理を施し、係数データを出力するＤＣ／ＡＣ予測ステップと、
前記差分動きベクトルおよび前記係数データを可変長符号化し、得られた符号化データをパケット化して出力する可変長符号化ステップとを備え、
処理対象のマクロブロックがパケット内の先頭マクロブロックである場合を先頭時、それ以外の場合を通常時としたとき、
前記動きベクトル予測ステップは、前記動きベクトルに対して先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理の両方を施し、先頭時の差分動きベクトルおよび通常時の差分動きベクトルを出力し、
前記ＤＣ／ＡＣ予測ステップは、前記量子化結果に対して先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理の両方を施し、先頭時の係数データおよび通常時の係数データを出力し、
前記可変長符号化ステップは、前記先頭時の差分動きベクトルおよび前記先頭時の係数データを可変長符号化して先頭時の符号化データを求めると共に、前記通常時の差分動きベクトルおよび前記正常時の係数データを可変長符号化して通常時の符号化データを求め、前記先頭時の符号化データおよび前記通常時の符号化データのいずれかをパケット化すべき符号化データとして選択することを特徴とする、動画像符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像符号化装置および動画像符号化方法に関し、特に、動画像を符号化し、得られた符号化データをパケット化して出力する動画像符号化装置および動画像符号化方法に関する。
【背景技術】
【０００２】
動画像を圧縮符号化する方式として、ＭＰＥＧ１（Moving Picture Experts Group 1）、ＭＰＥＧ２、ＭＰＥＧ４などの方式が広く知られている。このうちＭＰＥＧ４は、伝送速度の遅い通信路を用いて高圧縮率の動画像を伝送することを目的として定められた規格である。ＭＰＥＧ４は、例えば、テレビ電話、移動体通信、インターネット、放送などの用途に利用されている。
【０００３】
ＭＰＥＧ４では、動画像を構成するフレームは、ＶＯＰ（Video Plane Object）と呼ばれる。ＶＯＰはマクロブロック（１６×１６画素）およびブロック（８×８画素）に分割され（図１１を参照）、符号化処理はマクロブロック単位あるいはブロック単位で実行される。符号化処理により得られた符号化データは、ビデオパケットに格納され、パケット化された状態で伝送される。ＭＰＥＧ４では、ＶＯＰの種類に応じて、ビデオパケットの最大長が決定されている。
【０００４】
ビデオパケットは、ヘッダ部とデータ部とからなる（図１２を参照）。ヘッダ部は、パケットヘッダと呼ばれ、再同期マーカ、マクロブロック番号、量子化スケール、および、ヘッダ拡張コードを含む。データ部は、差分動きベクトルや係数データを可変長符号化した結果を含む。各ビデオパケットには、前後のビデオパケットに格納されたデータを参照しなくても単独で復号できるようなデータが含まれる。したがって、ビデオパケットでエラーが発生した場合、当該ビデオパケットのエラー発生箇所以降は復号できないが、次のビデオパケット（すなわち、再同期マーカ以降のデータ）は復号できる。
【０００５】
また、ＭＰＥＧ４では、重要なデータをビデオパケットの前方に配置する方法（データパーティショニングと呼ばれる）も採用されている。データパーティショニングを行う場合、ビデオパケットのデータ部には例えば３つのフィールドが設けられ、各フィールドには前方から順に、最重要データ、重要データ、一般データが格納される。最重要データと重要データとの間には、マーカ（ＤＣマーカまたはモーションマーカ）が配置される（図１３を参照）。
【０００６】
通信路でランダムにエラーが発生する場合、ビデオパケットのサイズが大きいほど、そのビデオパケットでエラーが発生する確率が高くなる。このため、サイズの大きなビデオパケットでは、末尾付近のデータを復号できない可能性が高くなる。したがって、符号化データを伝送する際のエラー耐性を高めるためには、ビデオパケットのサイズ（以下、パケットサイズという）が揃っていることが好ましい。
【０００７】
ところが、１個のマクロブロックを符号化して得られる符号化データのサイズは一定ではなく、１個のビデオパケットに何マクロブロック分の符号化データを格納するかは自由に決定できる。そこで、パケットサイズを揃えるために、パケットサイズの閾値を予め決定しておき、１マクロブロック分の符号化データが得られたときに、今回までに得られた符号化データのサイズが閾値以上であれば、前回までに得られた符号化データをビデオパケットとして出力する方法が一般に用いられる。
【０００８】
また、特許文献１には、１マクロブロック分の符号化データが得られたときに、今回までに得られた符号化データのサイズが閾値未満であっても、次回までに得られる符号化データのサイズの予想値が閾値以上のときには、今回までに得られた符号化データをビデオパケットとして出力する動画像符号化装置が開示されている。
【特許文献１】特開２００１−３４６２１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ＭＰＥＧ４では、処理対象のマクロブロックがビデオパケット内の先頭マクロブロックであるか否かに応じて、異なる符号化処理を行う必要がある。具体的には、先頭マクロブロックであるか否かに応じて、動きベクトル予測処理およびＤＣ／ＡＣ予測処理の内容を切り換える必要がある。ＭＰＥＧ４の符号化処理でこのような切り換えを行う理由は、ビデオパケットを単独で復号可能とするためである。
【００１０】
従来の動画像符号化装置は、マクロブロックを符号化するときに、先に先頭マクロブロックでない場合の符号化処理を行い、今回までに得られた符号化データのサイズが閾値以上であれば、前回までに求めた符号化データをビデオパケットとして出力する。この際、従来の動画像符号化装置は、今回得られた符号化データを破棄し、先頭マクロブロックである場合の符号化処理をやり直す（以下、この処理を再符号化という）。特許文献１にも、このような再符号化を行うことが記載されている。
【００１１】
このため、従来の動画像符号化装置には、再符号化によって処理速度が低下するという問題がある。再符号化は、ビデオパケットごとに行われるので、１マクロブロック分の符号化データのサイズが大きいほど、また、パケットサイズが小さいほど、この問題は顕著になる。
【００１２】
それ故に、本発明は、パケットヘッダの挿入に伴う再符号化によって処理速度が低下しない、高速の動画像符号化装置および動画像符号化方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
第１の発明は、動画像を符号化し、得られた符号化データをパケット化して出力する動画像符号化装置であって、
入力された動画像に対して動き検出、直交変換および量子化を含む符号化処理を施し、動きベクトルおよび量子化結果を出力する符号化部と、
前記動きベクトルに対して動きベクトル予測処理を施し、差分動きベクトルを出力する動きベクトル予測部と、
前記量子化結果に対してＤＣ／ＡＣ予測処理を施し、係数データを出力するＤＣ／ＡＣ予測部と、
前記差分動きベクトルおよび前記係数データを可変長符号化し、得られた符号化データをパケット化して出力する可変長符号化部とを備え、
処理対象のマクロブロックがパケット内の先頭マクロブロックである場合を先頭時、それ以外の場合を通常時としたとき、
前記動きベクトル予測部は、前記動きベクトルに対して先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理の両方を施し、先頭時の差分動きベクトルおよび通常時の差分動きベクトルの両方を出力し、
前記ＤＣ／ＡＣ予測部は、前記量子化結果に対して先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理の両方を施し、先頭時の係数データおよび通常時の係数データの両方を出力し、
前記可変長符号化部は、前記先頭時の差分動きベクトルおよび前記先頭時の係数データを可変長符号化して先頭時の符号化データを求めると共に、前記通常時の差分動きベクトルおよび前記通常時の係数データを可変長符号化して通常時の符号化データを求め、前記先頭時の符号化データおよび前記通常時の符号化データのいずれかをパケット化すべき符号化データとして選択することを特徴とする。
【００１４】
第２の発明は、第１の発明において、
前記可変長符号化部は、未出力の符号化データを記憶し、前記未出力の符号化データおよび前記通常時の符号化データのサイズの和が所定値未満の場合には、前記先頭時の符号化データを破棄して、前記通常時の符号化データを前記未出力の符号化データに追加し、前記和が前記所定値以上の場合には、前記通常時の符号化データを破棄して、前記未出力の符号化データをパケットとして出力し、前記先頭時の符号化データを新たな未出力の符号化データとして記憶することを特徴とする。
【００１５】
第３の発明は、第１の発明において、
前記可変長符号化部は、前記先頭時の符号化データ、前記通常時の符号化データおよび前記未出力の符号化データを重要度ごとに区別して処理し、符号化データを重要度の順に配置したパケットを出力することを特徴とする。
【００１６】
第４の発明は、動画像を符号化し、得られた符号化データをパケット化して出力する動画像符号化方法であって、
入力された動画像に対して動き検出、直交変換および量子化を含む符号化処理を施し、動きベクトルおよび量子化結果を求める符号化ステップと、
前記動きベクトルに対して動きベクトル予測処理を施し、差分動きベクトルを出力する動きベクトル予測ステップと、
前記量子化結果に対してＤＣ／ＡＣ予測処理を施し、係数データを出力するＤＣ／ＡＣ予測ステップと、
前記差分動きベクトルおよび前記係数データを可変長符号化し、得られた符号化データをパケット化して出力する可変長符号化ステップとを備え、
処理対象のマクロブロックがパケット内の先頭マクロブロックである場合を先頭時、それ以外の場合を通常時としたとき、
前記動きベクトル予測ステップは、前記動きベクトルに対して先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理の両方を施し、先頭時の差分動きベクトルおよび通常時の差分動きベクトルを出力し、
前記ＤＣ／ＡＣ予測ステップは、前記量子化結果に対して先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理の両方を施し、先頭時の係数データおよび通常時の係数データを出力し、
前記可変長符号化ステップは、前記先頭時の差分動きベクトルおよび前記先頭時の係数データを可変長符号化して先頭時の符号化データを求めると共に、前記通常時の差分動きベクトルおよび前記正常時の係数データを可変長符号化して通常時の符号化データを求め、前記先頭時の符号化データおよび前記通常時の符号化データのいずれかをパケット化すべき符号化データとして選択することを特徴とする。
【発明の効果】
【００１７】
上記第１または第４の発明によれば、先頭時の符号化処理および通常時の符号化処理の両方が行われ、２種類の符号化処理で得られた２種類の符号化データのいずれかがパケット化すべき符号化データとして選択される。このため、先に通常時の符号化処理を行い、これに失敗した場合に先頭時の符号化処理を行う従来の技術とは異なり、本発明では再符号化を行う必要がない。したがって、パケットヘッダの挿入に伴う再符号化によって処理速度が低下せず、動画像符号化処理を高速に実行することができる。
【００１８】
上記第２の発明によれば、今回までに得られた符号化データのサイズが所定値以上となったときに、前回までに得られた符号化データがパケットとして出力される。これにより、パケットのサイズを揃え、符号化データを伝送する際のエラー耐性を高めることができる。
【００１９】
上記第３の発明によれば、符号化データを重要度ごとに区別して処理し、符号化データを重要度の順に配置したパケットを出力することにより、符号化データを伝送する際のエラー耐性を高めることができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の実施形態に係る動画像符号化装置の構成を示すブロック図である。図１に示す動画像符号化装置１は、符号化部１０、動きベクトル予測部２０、ＤＣ／ＡＣ予測部３０、および、可変長符号化部４０を備えている。動画像符号化装置１には、処理対象の動画像として原画像５１が入力される。動画像符号化装置１は、原画像５１に対してＭＰＥＧ４に準拠した符号化処理を施し、得られた符号化データをパケット化して、ビデオパケット５８を出力する。
【００２１】
符号化部１０は、フレームメモリ１１、動き検出部１２、予測画像作成部１３、減算部１４、ＤＣＴ部１５、量子化部１６、逆量子化部１７、逆ＤＣＴ部１８、および、加算部１９を含んでいる。フレームメモリ１１は、符号化部１０でこれまでに求めた画像（再生画像５５）を記憶している。動き検出部１２は、原画像５１とフレームメモリ１１に記憶された画像とに基づき動き検出処理を行い、動きベクトル５２を出力する。予測画像作成部１３は、動きベクトル５２を参照して、フレームメモリ１１に記憶された画像から予測画像５３を求める。減算部１４は、原画像５１と予測画像５３の差を求める。ＤＣＴ部１５は、減算部１４で求めた差に対して、直交変換の一種であるＤＣＴ（Discrete Cosine Transform ：離散コサイン変換）を施す。量子化部１６は、ＤＣＴ部１５の出力に対して量子化処理を施し、量子化結果５４を出力する。
【００２２】
逆量子化部１７は、量子化結果５４に対して、量子化処理の逆処理である逆量子化処理を施す。逆ＤＣＴ部１８は、逆量子化部１７の出力に対して、ＤＣＴの逆変換である逆ＤＣＴを施す。加算部１９は、逆ＤＣＴ部１８の出力と予測画像５３を加算し、再生画像５５を出力する。再生画像５５は、フレームメモリ１１に記憶される。
【００２３】
動きベクトル予測部２０は、動きベクトル５２に対して動きベクトル予測処理を施し、差分動きベクトル５６を出力する。ＤＣ／ＡＣ予測部３０は、量子化結果５４に対してＤＣ／ＡＣ予測処理を施し、係数データ５７を出力する。可変長符号化部４０は、動きベクトル予測部２０から出力された差分動きベクトル５６、および、ＤＣ／ＡＣ予測部３０から出力された係数データ５７を可変長符号化し、得られた符号化データをパケット化して、ビデオパケット５８を出力する。
【００２４】
以下、動きベクトル予測部２０、ＤＣ／ＡＣ予測部３０および可変長符号化部４０の詳細を説明する。ＭＰＥＧ４では、処理対象のマクロブロックがビデオパケット内の先頭マクロブロックであるか否かに応じて、動きベクトル予測処理およびＤＣ／ＡＣ予測処理の内容を切り換える必要がある。以下、処理対象のマクロブロックがビデオパケット内の先頭マクロブロックである場合を「先頭時」、先頭マクロブロックでない場合を「通常時」という。
【００２５】
まず、図２を参照して、動きベクトル予測部２０による動きベクトル予測処理について説明する。以下に示す動きベクトル予測処理は、動きベクトルを含むマクロブロックに対して実行される。動きベクトル予測部２０は、これまでに符号化したマクロブロックの動きベクトルを、以下の処理に必要な分だけ記憶している。ここでは、図２に示すように、処理対象のマクロブロックをＭＸとし、ＭＸの左、上、右上のマクロブロックをＭＡ、ＭＣ、ＭＤとする。また、マクロブロックＭＸの動きベクトルをＭＶ＝（ＭＶｘ，ＭＶｙ）、マクロブロックＭＡの動きベクトルをＭＶ１＝（ＭＶ１ｘ，ＭＶ１ｙ）、マクロブロックＭＣの動きベクトルをＭＶ２＝（ＭＶ２ｘ，ＭＶ２ｙ）、マクロブロックＭＤの動きベクトルをＭＶ３＝（ＭＶ３ｘ，ＭＶ３ｙ）とする。
【００２６】
動きベクトル予測部２０は、次式（１ａ）および（１ｂ）を用いて、予測値ＰＶ＝（ＰＶｘ，ＰＶｙ）を求める。
ＰＶｘ＝ｍｅｄｉａｎ（ＭＶ１ｘ，ＭＶ２ｘ，ＭＶ３ｘ）  …（１ａ）
ＰＶｙ＝ｍｅｄｉａｎ（ＭＶ１ｙ，ＭＶ２ｙ，ＭＶ３ｙ）  …（１ｂ）
ただし、上式（１ａ）および（１ｂ）において、ｍｅｄｉａｎ（ａ１，ａ２，ａ３）は、ａ１、ａ２およびａ３のメディアン値（中央値）を表す。
【００２７】
なお、３個のマクロブロックＭＡ、ＭＣ、ＭＤのうち１個がＶＯＰの範囲外にある場合には、そのマクロブロックの動きベクトルは（０，０）として扱われる。また、上記３個のマクロブロックのうち２個がＶＯＰの範囲外にある場合には、残り１個のマクロブロックの動きベクトルが予測値ＰＶとなる。また、上記３個のマクロブロックがすべてＶＯＰの範囲外にある場合には、予測値ＰＶは（０，０）となる。
【００２８】
さらに、上記３個のマクロブロックのうちの１個の符号化データがマクロブロックＭＸの符号化データとは別のビデオパケットに格納される場合には、そのマクロブロックの動きベクトルは（０，０）として扱われる。また、上記３個のマクロブロックのうちの２個の符号化データがマクロブロックＭＸの符号化データとは別のビデオパケットに格納される場合には、残り１個のマクロブロックの動きベクトルが予測値ＰＶとなる。また、上記３個のマクロブロックの符号化データがすべてマクロブロックＭＸの符号化データとは別のビデオパケットに格納される場合には、予測値ＰＶは（０，０）となる。
【００２９】
動きベクトル予測部２０は、動きベクトル５２（＝ＭＶ）を受け取ったときに、上記の方法で予測値ＰＶを求める。その上で、動きベクトル予測部２０は、動きベクトル５２と予測値ＰＶとの差（すなわち、ＭＶ−ＰＶ＝（ＭＶｘ−ＰＶｘ，ＭＶｙ−ＰＶｙ））を求め、これを通常時の差分動きベクトル５６ｂとして出力する。
【００３０】
また、マクロブロックＭＸがビデオパケット内の先頭マクロブロックである場合、上記３個のマクロブロックの符号化データはすべてマクロブロックＭＸの符号化データとは別のビデオパケットに格納される。この場合、予測値ＰＶは（０，０）となる。そこで、動きベクトル予測部２０は、予測値ＰＶを（０，０）としたときの、動きベクトル５２と予測値ＰＶとの差（すなわち、ＭＶ＝（ＭＶｘ，ＭＶｙ））を先頭時の差分動きベクトル５６ａとして出力する。
【００３１】
このように動きベクトル予測部２０は、動きベクトル５２に対して先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理の両方を施し、先頭時の差分動きベクトル５６ａおよび通常時の差分動きベクトル５６ｂの両方を出力する。
【００３２】
動きベクトル予測部２０は、動きベクトル５２に対して、先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理を並列に実行し、先頭時の差分動きベクトル５６ａおよび通常時の差分動きベクトル５６ｂを同じタイミングで出力してもよい。２種類の動きベクトル予測処理を並列に実行するために、動きベクトル予測部２０には、２種類の回路が設けられる。このうち、先頭時の動きベクトル予測処理を行う回路は、入力信号をそのまま出力する。
【００３３】
あるいは、動きベクトル予測部２０は、動きベクトル５２に対して、先頭時の動きベクトル予測処理および通常時の動きベクトル予測処理を順に実行し、先頭時の差分動きベクトル５６ａおよび通常時の差分動きベクトル５６ｂを異なるタイミングで出力してもよい。２種類の動きベクトル予測処理を順に実行するために、動きベクトル予測部２０には、与えられた制御信号に従い２種類の動きベクトル予測処理のいずれかを行う回路が設けられる。具体的には、動きベクトル予測部２０には、通常時の動きベクトル予測処理を行う回路と、入力信号をそのまま出力する回路と、これら２つの回路の出力のいずれかを選択するセレクタとが設けられる。
【００３４】
次に、図３を参照して、ＤＣ／ＡＣ予測部３０によるＤＣ／ＡＣ予測処理について説明する。以下に示すＤＣ／ＡＣ予測処理は、ＩＮＴＲＡマクロブロック（他のＶＯＰを参照して符号化されたマクロブロック）に対して実行される。ＤＣ／ＡＣ予測部３０は、これまでに受け取った量子化結果５４のうち、以下の処理に必要なものを記憶している。ここでは、図３に示すように、処理対象のブロックをＢＸとし、ＢＸの左、左上、上のブロックをＢＡ、ＢＢ、ＢＣとする。また、ブロックＢＸ、ＢＡ、ＢＢ、ＢＣの量子化結果をＸｉｊ、Ａｉｊ、Ｂｉｊ、Ｃｉｊ（ｉ、ｊは０以上７以下の整数）とし、ＤＣ成分の量子化ステップ幅をＱｄｘ、Ｑｄａ、Ｑｄｂ、Ｑｄｃとし、ＡＣ成分の量子化パラメータをＱｐｘ、Ｑｐａ、Ｑｐｂ、Ｑｐｃとする。
【００３５】
ＤＣ／ＡＣ予測部３０は、量子化結果５４を受け取ると、次式（２）が成立するか否かを判断する。
｜Ａ００×Ｑｄａ−Ｂ００×Ｑｄｂ｜
＜｜Ｂ００×Ｑｄｂ−Ｃ００×Ｑｄｃ｜  …（２）
【００３６】
ＤＣ／ＡＣ予測部３０は、上式（２）が成立する場合には、次式（３ａ）〜（３ｃ）を用いて予測後の量子化結果Ｐｉｊを求め（上のブロックＢＣを用いた予測）、上式（２）が成立しない場合には、次式（４ａ）〜（４ｃ）を用いて予測後の量子化結果Ｐｉｊを求める（左のブロックＢＡを用いた予測）。
Ｐ００＝Ｘ００−Ｃ００×Ｑｄｃ／Ｑｄｘ  …（３ａ）
Ｐｉ０＝Ｘｉ０−Ｃｉ０×Ｑｐｃ／Ｑｐｘ  …（３ｂ）  （ただし、ｉ＝０を除く）
Ｐｉｊ＝Ｘｉｊ                          …（３ｃ）  （ただし、ｊ＝０を除く）
Ｐ００＝Ｘ００−Ａ００×Ｑｄａ／Ｑｄｘ  …（４ａ）
Ｐ０ｊ＝Ｘ０ｊ−Ａ０ｊ×Ｑｐａ／Ｑｐｘ  …（４ｂ）  （ただし、ｊ＝０を除く）
Ｐｉｊ＝Ｘｉｊ                          …（４ｃ）  （ただし、ｉ＝０を除く）
【００３７】
ＤＣ／ＡＣ予測部３０は、通常時の係数データ５７ｂのＤＣ成分として、上述した予測後の量子化結果Ｐ００を出力する。また、ＤＣ／ＡＣ予測部３０は、通常時の係数データ５７ｂのＡＣ成分として、元の量子化結果Ｘｉｊ、および、上述した予測後の量子化結果Ｐｉｊのいずれかを選択して出力する。量子化結果Ｘｉｊおよび予測後の量子化結果Ｐｉｊのいずれを選択するかは、例えば、それぞれの結果を選択したときの予測誤差を比較することにより判断される。
【００３８】
なお、３個のブロックＢＡ、ＢＢ、ＢＣの中にＶＯＰの範囲外にあるものが含まれている場合、そのブロックの量子化結果のＤＣ成分は所定の定数値β、ＡＣ成分はすべて０として扱われる。また、上記３個のブロックの中に、その符号化データがブロックＢＸの符号化データとは異なるビデオパケットに格納されるものが含まれている場合も、そのブロックの量子化結果のＤＣ成分は上記の定数値β、ＡＣ成分はすべて０として扱われる。
【００３９】
このようにＤＣ／ＡＣ予測部３０は、量子化結果５４（＝Ｘｉｊ）を受け取ったときに、上記の方法により、量子化結果Ｘｉｊおよび予測後の量子化結果Ｐｉｊのいずれかを通常時の係数データ５７ｂとして出力する。
【００４０】
また、ブロックＢＸが属するマクロブロックがビデオパケット内の先頭マクロブロックである場合、上記３個のブロックの符号化データが、ブロックＢＸの符号化データとは別のビデオパケットに格納されることがある。具体的には、（１）ブロックＢＸがＹ０、ＣｂまたはＣｒのブロックである場合には、ブロックＢＡ、ＢＢ、ＢＣの符号化データが、（２）ブロックＢＸがＹ１のブロックである場合には、ブロックＢＢ、ＢＣの符号化データが、（３）ブロックＢＸがＹ２のブロックである場合には、ブロックＢＡ、ＢＢの符号化データが、ブロックＢＸの符号化データとは異なるビデオパケットに格納される。そこで、ＤＣ／ＡＣ予測部３０は、これらのブロックの量子化結果のＤＣ成分を上記の定数値β、ＡＣ成分をすべて０としたときの予測後の量子化結果を求め、これを先頭時の係数データ５７ａとして出力する。
【００４１】
このようにＤＣ／ＡＣ予測部３０は、量子化結果５４に対して先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理の両方を施し、先頭時の係数データ５７ａおよび通常時の係数データ５７ｂの両方を出力する。
【００４２】
ＤＣ／ＡＣ予測部３０は、量子化結果５４に対して、先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理を並列に実行し、先頭時の係数データ５７ａおよび通常時の係数データ５７ｂを同じタイミングで出力してもよい。２種類のＤＣ／ＡＣ予測処理を並列に実行するために、ＤＣ／ＡＣ予測部３０には、２種類の回路が設けられる。このうち、先頭時のＤＣ／ＡＣ予測処理を実行する回路は、量子化結果５４のＤＣ成分から上記定数βを引き、量子化結果５４のＡＣ成分をそのまま出力する。
【００４３】
あるいは、ＤＣ／ＡＣ予測部３０は、量子化結果５４に対して、先頭時のＤＣ／ＡＣ予測処理および通常時のＤＣ／ＡＣ予測処理を順に実行し、先頭時の係数データ５７ａおよび通常時の係数データ５７ｂを異なるタイミングで出力してもよい。２種類のＤＣ／ＡＣ予測処理を順に実行するために、ＤＣ／ＡＣ予測部３０には、与えられた制御信号に従い、２種類のＤＣ／ＡＣ予測処理のいずれかを実行する回路が設けられる。
【００４４】
次に、図４〜図１０を参照して、可変長符号化部４０の詳細を説明する。図４は、可変長符号化部４０の詳細な構成を示すブロック図である。可変長符号化部４０は、動きベクトル符号化テーブル４１、係数符号化テーブル４２、制御部４３、および、バッファメモリ４４を含んでいる。
【００４５】
動きベクトル符号化テーブル４１には、差分動きベクトルの値と、各値に対応した不等長のビット列とが蓄積されている。動きベクトル符号化テーブル４１には、動きベクトル予測部２０から出力された、先頭時の差分動きベクトル５６ａおよび通常時の差分動きベクトル５６ｂが入力される。動きベクトル符号化テーブル４１は、先頭時の差分動きベクトル５６ａに応じて先頭時の動きベクトルコード６１ａを出力し、通常時の差分動きベクトル５６ｂに応じて通常時の動きベクトルコード６１ｂを出力する。
【００４６】
係数符号化テーブル４２には、係数データの値と、各値に対応した不等長のビット列とが蓄積されている。係数符号化テーブル４２には、ＤＣ／ＡＣ予測部３０から出力された、先頭時の係数データ５７ａおよび通常時の係数データ５７ｂが入力される。係数符号化テーブル４２は、先頭時の係数データ５７ａに応じて先頭時の係数コード６２ａを出力し、通常時の係数データ５７ｂに応じて通常時の係数コード６２ｂを出力する。
【００４７】
制御部４３には、先頭時の動きベクトルコード６１ａ、通常時の動きベクトルコード６１ｂ、先頭時の係数コード６２ａ、および、通常時の係数コード６２ｂが入力される。制御部４３は、バッファメモリ４４を用いてこれらの符号化データをパケット化し、ビデオパケット５８を出力する。
【００４８】
バッファメモリ４４は、先頭時データ記憶部４５、通常時データ記憶部４６、および、未出力データ記憶部４７を含んでいる。先頭時データ記憶部４５は、先頭時の動きベクトルコード６１ａおよび先頭時の係数コード６２ａ（以下、これらを「先頭時の符号化データ」という）を記憶する。通常時データ記憶部４６は、通常時の動きベクトルコード６１ｂおよび通常時の係数コード６２ｂ（以下、これらを「通常時の符号化データ」という）を記憶する。未出力データ記憶部４７は、未出力の符号化データとして、作成途中のビデオパケットを記憶する。
【００４９】
制御部４３は、先頭時の動きベクトルコード６１ａまたは先頭時の係数コード６２ａを受け取ったときには、それらを先頭時データ記憶部４５に書き込み、通常時の動きベクトルコード６１ｂまたは通常時の係数コード６２ｂを受け取ったときには、それらを通常時データ記憶部４６に書き込む。また、制御部４３は、１個のマクロブロックについて可変長符号化が完了したときに、図５に示すパケット化処理を実行する。
【００５０】
図５に示すパケット化処理では、制御部４３は、まず、通常時データ記憶部４６に記憶された通常時の符号化データのサイズと、未出力データ記憶部４７に記憶された未出力の符号化データのサイズの和Ｓを求める（ステップＳ１０１）。次に、制御部４３は、和Ｓが予め定めた閾値ＴＨ未満か否かを判断する（ステップＳ１０２）。閾値ＴＨは、ＭＰＥＧ４で定められたビデオパケットの最大長以下の定数である。
【００５１】
和Ｓが閾値ＴＨ未満である場合（ステップＳ１０２のＹｅｓ）、制御部４３は、先頭時データ記憶部４５に記憶された先頭時の符号化データを破棄し（ステップＳ１０３）、通常時データ記憶部４６に記憶された通常時の符号化データを未出力データ記憶部４７に転送する（ステップＳ１０４）。これにより、未出力データ記憶部４７に記憶された未出力の符号化データには、通常時データ記憶部４６に記憶された通常時の符号化データが追加される。このように和Ｓが閾値ＴＨ未満である場合、未出力の符号化データには１マクロブロック分の通常時の符号化データが追加される。
【００５２】
これに対して、和Ｓが閾値ＴＨ以上である場合（ステップＳ１０２のＮｏ）、制御部４３は、通常時データ記憶部４６に記憶された通常時の符号化データを破棄し（ステップＳ１０５）、未出力データ記憶部４７に記憶された未出力の符号化データをビデオパケット５８として出力する（ステップＳ１０６）。次に、制御部４３は、未出力データ記憶部４７に次のビデオパケットのヘッダ部を書き込み（ステップＳ１０７）、先頭時データ記憶部４５に記憶された先頭時の符号化データを未出力データ記憶部４７に転送する（ステップＳ１０８）。ステップＳ１０７で書き込まれたヘッダ部、および、ステップＳ１０８で転送された先頭時の符号化データは、新たな未出力の符号化データとなる。このように和Ｓが閾値ＴＨ以上である場合、未出力の符号化データはビデオパケット５８として出力され、ヘッダ部および１マクロブロック分の先頭時の符号化データが新たに未出力の符号化データとして記憶される。
【００５３】
図６は、バッファメモリ４４の状態変化を示す図である。図６には、２個のマクロブロックＭ１、Ｍ２について符号化処理を行った場合の状態変化が記載されている。マクロブロックＭ１について符号化処理を行う前は、バッファメモリ４４の状態はＳ１であるとする。状態Ｓ１では、先頭時データ記憶部４５および通常時データ記憶部４６は空であり、未出力データ記憶部４７には未出力の符号化データ（斜線部）が記憶されている。
【００５４】
マクロブロックＭ１について可変長符号化が行われると、先頭時データ記憶部４５には先頭時の符号化データ（すなわち、先頭時の動きベクトルコード６１ａおよび先頭時の係数コード６２ａ；交差斜線部）が書き込まれ、通常時データ記憶部４６には通常時の符号化データ（すなわち、通常時の動きベクトルコード６１ａおよび通常時の係数コード６２ｂ；点模様部）が書き込まれる。この結果、マクロブロックＭ１について可変長符号化が完了した時点では、バッファメモリ４４の状態はＳ２となる。
【００５５】
状態Ｓ２において、パケット化処理のステップＳ１０２（図５）でＹｅｓと判断されたとする。この場合、先頭時データ記憶部４５に記憶された先頭時の符号化データは破棄され、通常時データ記憶部４６に記憶された通常時の符号化データは未出力データ記憶部４７に転送される。この結果、パケット化処理が完了した時点で、バッファメモリ４４の状態はＳ３となる。
【００５６】
次にマクロブロックＭ２について可変長符号化が行われると、マクロブロックＭ１のときと同様に、先頭時データ記憶部４５には先頭時の符号化データが書き込まれ、通常時データ記憶部４６には通常時の符号化データが書き込まれる。この結果、マクロブロックＭ２について可変長符号化が完了した時点では、バッファメモリ４４の状態はＳ４となる。
【００５７】
状態Ｓ４において、パケット化処理のステップＳ１０２でＮｏと判断されたとする。この場合、通常時データ記憶部４６に記憶された通常時の符号化データは破棄され、未出力データ記憶部４７に記憶された未出力のデータはビデオパケット５８として出力される。また、未出力データ記憶部４７には次のパケットのヘッダ部が書き込まれ、先頭時データ記憶部４５に記憶された先頭時の符号化データは未出力データ記憶部４７に転送される。この結果、パケット化処理が完了した時点で、バッファメモリ４４の状態はＳ５となる。
【００５８】
このように可変長符号化部４０は、先頭時の差分動きベクトル５６ａおよび先頭時の係数データ５７ａを可変長符号化して先頭時の符号化データを求めると共に、通常時の差分動きベクトル５６ｂおよび通常時の係数データ５７ｂを可変長符号化して通常時の符号化データを求め、先頭時の符号化データおよび通常時の符号化データのいずれかを、ビデオパケット５８として出力すべき符号化データとして選択する。特に、可変長符号化部４０は、未出力の符号化データを記憶し、未出力の符号化データおよび通常時の符号化データのサイズの和Ｓが閾値ＴＨ未満の場合には、先頭時の符号化データを破棄して、通常時の符号化データを未出力の符号化データに追加し、和Ｓが閾値ＴＨ以上の場合には、通常時の符号化データを破棄して、未出力の符号化データをビデオパケット５８として出力し、先頭時の符号化データを新たな未出力の符号化データとして記憶する。
【００５９】
なお、以上の説明では、バッファメモリ４４は３種類の記憶部を含むこととしたが（第１の構成例）、通常時データ記憶部４６を未出力データ記憶部４７に統合してもよい（第２の構成例）。第２の構成例では、制御部４３は、通常時の符号化データを、通常時データ記憶部４６ではなく未出力データ記憶部４７に書き込む。図７は、第２の構成例を採用した場合のバッファメモリ４４の状態変化を示す図である。このような第２の構成例によれば、通常時の符号化データを転送する必要がなくなる。
【００６０】
また、バッファメモリ４４に含まれる３種類の記憶部を１つに統合することもできる（第３の構成例）。図８は、第３の構成例を採用した場合のバッファメモリ４４の状態変化を示す図である。図８には、あるビデオパケットＶＰ１が出力されるまでのバッファメモリ４４の状態Ｓ１〜Ｓ５、および、次のビデオパケットＶＰ２が出力されるまでのバッファメモリ４４の状態Ｓ６〜Ｓ１０が記載されている。
【００６１】
第３の構成例では、制御部４３は、ビデオパケットＶＰ１を出力するまでの間は、未出力の符号化データおよび通常時の符号化データをバッファメモリ４４のアドレスが小さい側（図８では左側）に書き込み、先頭時の符号化データをバッファメモリ４４のアドレスが大きい側（図８では右側）に書き込む。また、制御部４３は、次のビデオパケットＶＰ２を出力するまでの間は、未出力の符号化データおよび通常時の符号化データをバッファメモリ４４のアドレスが大きい側に書き込み、先頭時の符号化データをバッファメモリ４４のアドレスが小さい側に書き込む。
【００６２】
制御部４３は、バッファメモリ４４のアドレスが小さい側に書き込みを行うときにはアドレスの昇順に書き込みを行い、バッファメモリ４４のアドレスが大きい側に書き込みを行うときにはアドレスの降順に書き込みを行う。また、制御部４３は、次のビデオパケットのヘッダ部を書き込むときには、バッファメモリ４４のアドレスが大きい側と小さい側のうち、それまでビデオパケット５８が記憶されていた側に書き込みを行う。このような第３の構成によれば、先頭時の符号化データおよび通常時の符号化データを転送する必要がなくなる。
【００６３】
また、データパーティショニングを行う場合には、バッファメモリ４４は符号化データを重要度ごとに記憶し、制御部４３は符号化データを重要度ごとに処理すればよい。例えば、ビデオパケット５８に含まれるデータの重要度が３種類である場合、第２の構成例のバッファメモリ４４に含まれる先頭時データ記憶部４５および未出力データ記憶部４７は、それぞれ、第１〜第３の領域４５ｐ〜４５ｒおよび４７ｐ〜４７ｒに分割される（第４の構成例）。図９は、第４の構成例を採用した場合のバッファメモリ４４の状態変化を示す図である。
【００６４】
第４の構成例では、制御部４３は、先頭時の符号化データおよび通常時の符号化データのうち、最重要データを第１の領域４５ｐおよび４７ｐに、重要データを第２の領域４５ｑおよび４７ｑに、一般データを第３の領域４５ｒおよび４７ｒに書き込む。制御部４３は、パケット化処理のステップＳ１０２（図５）でＹｅｓと判断した場合には、第１〜第３の領域４５ｐ〜４５ｒに記憶された先頭時の符号化データを破棄する（図９に示す状態Ｓ２から状態Ｓ３への遷移）。
【００６５】
これに対してステップＳ１０２でＮｏと判断した場合には、制御部４３は、第１〜第３の領域４７ｐ〜４７ｒに記憶された符号化データのうち、通常時の符号化データ（点模様部）を破棄し、未出力の符号化データ（斜線部）をビデオパケット５８として出力する。この際、未出力の符号化データは、ビデオパケット５８内に重要度の順に配置される。さらに、制御部４３は、第１の領域４７ｐに次のパケットのヘッダ部を書き込み、第１〜第３の領域４５ｐ〜４５ｒに記憶された先頭時の符号化データを第１〜第３の領域４７ｐ〜４７ｒに転送する（図９に示す状態Ｓ４から状態Ｓ５への遷移）。
【００６６】
また、ビデオパケット５８に含まれるデータの重要度が３種類である場合、第３の構成例のバッファメモリ４４は、第１〜第３の領域４４ｐ〜４４ｒに分割される（第５の構成例）。図１０は、第５の構成例を採用した場合のバッファメモリ４４の状態変化を示す図である。
【００６７】
第５の構成例では、制御部４３は、先頭時の符号化データおよび通常時の符号化データのうち、最重要データを第１の領域４４ｐに、重要データを第２の領域４４ｑに、一般データを第３の領域４４ｒに書き込む。制御部４３は、パケット化処理のステップＳ１０２（図５）でＹｅｓと判断した場合には、第１〜第３の領域４４ｐ〜４４ｒに記憶された符号化データのうち、先頭時の符号化データ（交差斜線部）を破棄する（図１０に示す状態Ｓ２から状態Ｓ３への遷移）。
【００６８】
これに対してステップＳ１０２でＮｏと判断した場合には、制御部４３は、第１〜第３の領域４４ｐ〜４４ｒに記憶された符号化データのうち、通常時の符号化データ（点模様部）を破棄し、未出力の符号化データ（斜線部）をビデオパケット５８として出力する。この際、未出力の符号化データは、ビデオパケット５８内に重要度の順に配置される。さらに、制御部４３は、第１の領域４４ｐのアドレスが大きい側と小さい側のうち、それまでビデオパケット５８が記憶されていた側に、次のパケットのヘッダ部を書き込む（図１０に示す状態Ｓ４から状態Ｓ５への遷移）。
【００６９】
このようにデータパーティショニングを行う場合には、可変長符号化部４０は、先頭時の符号化データ、通常時の符号化データおよび未出力の符号化データを重要度ごとに区別して処理し、符号化データを重要度の順に配置したパケットを出力する。
【００７０】
以下、本実施形態に係る動画像符号化装置１の効果を説明する。上述したように、従来の動画像符号化装置は、先に通常時の符号化処理を行い、これに失敗した場合に先頭時の符号化処理を行う。これに対して、本実施形態に係る動画像符号化装置１は、先頭時の符号化処理および通常時の符号化処理の両方を行い、２種類の符号化処理で得られた２種類の符号化データのいずれかをパケット化すべき符号化データとして選択する。したがって、動画像符号化装置１では、従来の動画像符号化装置で行われる再符号化を行う必要がない。よって、動画像符号化装置１によれば、パケットヘッダの挿入に伴う再符号化によって処理速度が低下せず、動画像符号化処理を高速に実行することができる。
【００７１】
また、動画像符号化装置１は、図５に示すパケット化処理を行うことにより、今回までに得られた符号化データのサイズが所定値以上となったときに、前回までに得られた符号化データをパケットとして出力する。これにより、ビデオパケットのサイズを揃え、符号化データを伝送する際のエラー耐性を高めることができる。
【００７２】
また、可変長符号化部４０が符号化データを重要度ごとに区別して処理し、符号化データを重要度の順に配置したパケットを出力する場合、動画像符号化装置１はデータパーティショニングを行うことができる。これにより、重要なデータをビデオパケットの前方に配置し、符号化データを伝送する際のエラー耐性を高めることができる。
【００７３】
以上に示すように、本発明によれば、パケットヘッダの挿入に伴う再符号化によって処理速度が低下しない、高速の動画像符号化処理および動画像符号化方法を得ることができる。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施形態に係る動画像符号化装置の構成を示すブロック図である。
【図２】動きベクトル予測処理で用いられるマクロブロックを示す図である。
【図３】ＤＣ／ＡＣ予測処理で用いられるブロックを示す図である。
【図４】図１に示す動画像符号化装置に含まれる可変長符号化部の詳細な構成を示すブロック図である。
【図５】図４に示す可変長符号化部に含まれる制御部によるパケット化処理を示すフローチャートである。
【図６】図４に示す可変長符号化部に含まれるバッファメモリ（第１の構成例）の状態変化を示す図である。
【図７】図４に示す可変長符号化部に含まれるバッファメモリ（第２の構成例）の状態変化を示す図である。
【図８】図４に示す可変長符号化部に含まれるバッファメモリ（第３の構成例）の状態変化を示す図である。
【図９】図４に示す可変長符号化部に含まれるバッファメモリ（第４の構成例）の状態変化を示す図である。
【図１０】図４に示す可変長符号化部に含まれるバッファメモリ（第５の構成例）の状態変化を示す図である。
【図１１】ＭＰＥＧ４符号化方式におけるＶＯＰ、マクロブロックおよびブロックの関係を示す図である。
【図１２】ＭＰＥＧ４符号化方式におけるビデオパケットのフォーマットを示す図である。
【図１３】ＭＰＥＧ４符号化方式における、データパーティショニングを行う場合のビデオパケットのフォーマットを示す図である。
【符号の説明】
【００７５】
１…動画像符号化装置
１０…符号化部
２０…動きベクトル予測部
３０…ＤＣ／ＡＣ予測部
４０…可変長符号化部
４１…動きベクトル符号化テーブル
４２…係数符号化テーブル
４３…制御部
４４…バッファメモリ
４５…先頭時データ記憶部
４６…通常時データ記憶部
４７…未出力データ記憶部
５１…原画像
５２…動きベクトル
５３…予測画像
５４…量子化結果
５５…再生画像
５６ａ…先頭時の差分動きベクトル
５６ｂ…通常時の差分動きベクトル
５７ａ…先頭時の係数データ
５７ｂ…通常時の係数データ
５８…ビデオパケット
６１ａ…先頭時の動きベクトルコード
６１ｂ…通常時の動きベクトルコード
６２ａ…先頭時の係数コード
６２ｂ…通常時の係数コード
【図１】
2007158744.tif 000003
【図２】
2007158744.tif 000004
【図３】
2007158744.tif 000005
【図４】
2007158744.tif 000006
【図５】
2007158744.tif 000007
【図６】
2007158744.tif 000008
【図７】
2007158744.tif 000009
【図８】
2007158744.tif 000010
【図９】
2007158744.tif 000011
【図１０】
2007158744.tif 000012
【図１１】
2007158744.tif 000013
【図１２】
2007158744.tif 000014
【図１３】
2007158744.tif 000015