(57)【要約】 【課題】  ４段階のパイプライン方式の係数可変長符号化方法、及び係数可変長符号化器を提供する。【解決手段】  係数可変長符号化方法は、係数データをランレングス符号化して、ラン、レベル、及びラストの３次元値で求める段階と、求められた３次元値を伝送する段階と、伝送された３次元値を用いて可変ビットベクトル値を求める段階と、求められた可変ビットベクトル値を保存する段階の４段階パイプライン方式で動作する。特に、パイプラインが割れた場合には、処理時間を最小化するために既に求められた３次元値を再び用いる。したがって、効果的なパイプライン動作を行って迅速に係数可変長の符号化を行い、特にパイプラインが割れる場合に処理時間を最小化することができる。【選択図】    図１
2006042331.tif 000002
【特許請求の範囲】
【請求項１】
クロックの第１周期内に階数データをランレングス符号化してラン、レベル、及びラストの３次元値として求める段階と、
前記クロックの第２周期内に前記求められた３次元値を伝送する段階と、
前記クロックの第３周期内に前記伝送された３次元値を用いて可変ビットベクトル値を求める段階と、
前記クロックの第４周期内に前記求められた可変ビットベクトル値を保存する段階を並列処理することを特徴とする４段階パイプライン方式の係数可変長の符号化方法。
【請求項２】
前記可変ビットベクトル値は、
前記第３周期内に前記３次元値を求めるために、ゲート化されたテーブルを用いて求めることを特徴とする請求項１に記載の係数可変長の符号化方法。
【請求項３】
前記３次元値を伝送する段階は、前記３次元値と共に対応するインデックス値を伝送し、前記３次元値を前記インデックスと対応させ、所定クロック期間保存し、
前記可変ビットベクトル値を求める段階は、前記伝送された３次元値を一般的なテーブルで見つけることができない例外が発生した場合、前記インデックス値を用いて前記例外を処理する期間中に求められた３次元値を再びランレングス符号化せず、前記保存された３次元値を用いるようにすることを特徴とする請求項１に記載の係数可変長の符号化方法。
【請求項４】
前記所定クロックは、４クロックであることを特徴とする請求項３に記載の係数可変長の符号化方法。
【請求項５】
前記係数可変長の符号化方法は、
前記例外が発生した場合に前記インデックス及び保存された値を用いて前記例外を処理する期間中に求められた３次元値を伝送した後に再び前記４段階パイプライン方式で動作する段階を更に含むことを特徴とする請求項４に記載の係数可変長の符号化方法。
【請求項６】
メモリから係数データを読み取った後、ランレングス符号化してクロックの第１周期内にラン、レベル、及びラストの３次元値を求め、前記求められた３次元値を前記クロックの第２周期内に伝送するＲＬＣ符号化器と、
前記伝送された３次元値を用いて可変ビットベクトル値を前記クロックの第３周期内に求め、前記求められた可変ビット値を前記クロックの第４周期内に保存するＶＬＣ符号化器を含んで４段階のパイプライン構造で動作することを特徴とする係数可変長の符号化器。
【請求項７】
前記ＲＬＣ符号化器は、３次元値保存バッファを具備し、前記伝送した３次元値を前記３次元値保存バッファのインデックスに該当する位置に所定クロック期間保存することを特徴とする請求項６に記載の係数可変長の符号化器。
【請求項８】
前記所定クロックは、４クロックであることを特徴とする請求項７に記載の係数可変長の符号化器。
【請求項９】
前記ＲＬＣ符号化器は、前記３次元値を伝送するためのラン、レベル、ラスト信号、及びこれに相応するインデックス信号と前記３次元値のＤＣ値可否を知らせるためのＤＣ信号とを出力し、前記ＶＬＣ符号化器から例外信号及び例外インデックス信号の入力を受けることを特徴とする請求項８に記載の係数可変長の符号化器。
【請求項１０】
前記ＶＬＣ符号化器は、前記３周期内に３次元値を求めるためにゲート化されたテーブルを用いて前記可変ビットベクトル値を求めることを特徴とする請求項９に記載の係数可変長の符号化器。
【請求項１１】
前記ＶＬＣ符号化器は、前記ＲＬＣ符号化器から前記ラン、レベル、ラスト信号と、前記インデックス信号及び前記ＤＣ信号の入力を受け、前記例外信号及び例外インデックス信号を出力することを特徴とする請求項１０に記載の係数可変長の符号化器。
【請求項１２】
前記ＶＬＣ符号化器は、前記ＲＬＣ符号化器から入力を受けたラン、レベル、及びラストの３次元値を前記テーブルのうち、一般的なテーブルで見つけることができない例外が発生する場合に、例外信号を活性化し、前記３次元値に該当するインデックスを前記例外インデックス信号として出力し、前記例外を処理することを特徴とする請求項１１に記載の係数可変長の符号化器。
【請求項１３】
前記ＲＬＣ符号化器は、前記ＶＬＣ符号化器から入力される前記例外信号が活性化される場合に前記例外インデックス信号を用いて前記ＶＬＣ符号化器が前記例外を処理する期間中に求められた３次元値を前記３次元値保存バッファから得て、前記ＶＬＣ符号化器に伝送することを特徴とする請求項１２に記載の係数可変長の符号化器。
【請求項１４】
前記ＶＬＣ符号化器は、前記求められた可変ビットベクトル値を累積して一定ビット単位としてメモリに伝送するピンポンバッファを含むことを特徴とする請求項１３に記載の係数可変長の符号化器。
【請求項１５】
動きベクトル及び係数データを受けてこれを保存する内部メモリと、
マクロブロックタイプ、０値でないデータの有無を知らせる情報などを可変長符号化して前記内部メモリに保存するマクロブロック情報可変長符号化器と、
ＤＣ値を前記内部メモリから読み取って、これをその周囲ブロックのＤＣ値との差分値を求めて符号化して前記内部メモリに保存するＤＣ値ＤＰＣＭ符号化器と、
マクロブロック又はそのサブブロックに対して周囲ブロックとの類似性を比較して動きを求めた動きベクトルを前記内部メモリから読み取って、これを周囲ブロックとの差分値を取って可変長符号化して前記内部メモリに保存する動きベクトルＤＰＣＭ可変長符号化器と、
係数データを前記内部メモリから読み取って可変長符号化して前記内部メモリに保存する係数可変長符号化器と、
前記内部メモリデータを外部メモリに保存するＤＭＡと、
制御信号を受けて、前記マクロブロック情報可変長符号化器、前記ＤＣ値ＤＰＣＭ符号化器、前記動きベクトルＤＰＣＭ可変長符号化器、前記係数可変長符号化器、及び前記ＤＭＡを制御する可変長符号化制御器とを含み、
前記係数可変長符号化器は、
前記内部メモリから前記係数データを読み取った後、ランレングス符号化してクロックの第１周期内にラン、レべル、及びラストの３次元値を求め、前記求められた３次元値を前記クロックの第２周期内に伝送するＲＬＣ符号化器と、
前記伝送された３次元値を用いて可変ビットベクトル値を前記クロックの第３周期内に求め、前記求められた可変ビットベクトル値を前記クロックの第４周期内に前記内部メモリに保存するＶＬＣ符号化器とを含み、４段階のパイプライン構造として動作することを特徴とするビデオコーデックの可変長符号化器。
【請求項１６】
前記動きベクトルＤＰＣＭ可変長符号化器及び前記係数可変長符号化器は、並列に動作することを特徴とする請求項１５に記載のビデオコーデックの可変長符号化器。
【請求項１７】
前記ＲＬＣ符号化器は、求められた３次元値を保存空間の所定インデックスに該当する空間に所定クロック期間保存することを特徴とする請求項１６に記載のビデオコーデックの可変長符号化器。
【請求項１８】
前記ＶＬＣ符号化器は、前記ＲＬＣ符号化機から伝送された３次元値を一般的なテーブルで見つけることができない例外が発生した場合に例外信号を活性化し、前記３次元値のインデックスを例外インデックス信号として出力することを特徴とする請求項１７に記載のビデオコーデックの可変長符号化器。
【請求項１９】
前記ＲＬＣ符号化器は、前記例外信号が活性化される場合、前記例外インデックス信号を用いて前記ＶＬＣ符号化器が例外を処理する期間中に求められた３次元値を前記保存空間から得て、前記例外信号が比活性化された後に前記ＶＬＣ符号化器に伝送することを特徴とする請求項１８に記載のビデオコーデックの可変長符号化器。
【請求項２０】
前記ＶＬＣ符号化器は、前記可変ビットベクトルを累積して一定ビット単位で前記内部メモリに保存するピンポンバッファを含むことを特徴とする請求項１９に記載のビデオコーデックの可変長符号化器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長の符号化方法に係り、特にビデオコーデックの係数可変長の符号化方法に関する。
【背景技術】
【０００２】
最近、携帯電話、デジタルカメラ、カムコーダのような携帯情報機器で扱う動画像データの画素数が急増する傾向にあり、これに比例する高い演算能力が要求される反面、同等な消費電力が要求される。
【０００３】
ビデオコーデックは、動き推定器、動き補償器、離散余弦変換器、逆離散余弦変換器、量子化器、逆量子化器、可変長符号化器、及び可変長復号化器のようなプロセッシングユニットで構成される。これらのうち、可変長符号化器及び可変長復号化器は、入力データに対する従属性が高いので、効率的なハードウェア構造として作り難いプロセッシングユニットの一つである。
【０００４】
最近、マルチメディア機器の動画像データ量が増加することによって、実時間が要求されるビデオコーデックは与えられた時間内に多量のデータを処理しなければならない。また、可変長符号化器は、ビット単位で動作し、多数のテーブルを参照するので、高速化されたハードウェアが必要である。特に、係数可変長符号化器は、係数データをランレングス符号化して、ラン、レベル、ラスト値（以下、３次元値と称する）を求め、テーブルを探してこの３次元値によるビットベクトル値を求める過程を実行する。即ち、係数データを圧縮するために、各８×８ブロックの画素ごとにデータを調査して「０」でない値が出る場合、その以前に出た「０」の累積値であるラン値、「０」でない場合の係数値であるレベル値、そして８×８ブロックの最後を意味するラスト値を求め、これらの値によって適切な可変長ビットベクトル値を割り当て、このビットストリームを累積してメモリに保存する。この過程を処理するためには、メモリからデータを取ってくる過程とテーブル探す過程、そして再びメモリや他の装置でビットベクトル値を保存したり、伝送したりする過程が必要である。したがって、多数のクロックが必要とされ、パイプライン構造を必ず必要とするモジュールである。
【０００５】
しかし、係数の符号化過程で、入力される３次元値によっては一般的なテーブルでは処理できない例外が発生するようになって問題になる。このような例外の場合にパイプラインが割れるようになり、また長い時間が要求される。これは、パイプラインが割れると、再び符号化しようとする係数の第３次元値を求めるためにアドレスポインタを再び戻さなければならないためである。３次元値のうち、ラスト値を求めるためには、該当係数データだけでなく以後のデータを確認しなければならないのでパイプラインが割れるので、以前の３次元値を再び求めるには多数のクロックの浪費を発生させる。このように、一般的なテーブルで処理できない例外が発生してパイプラインが割れる場合に、クロック消費を最小化して符号化を行うことが非常に重要な課題である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前記のような課題を解決するための本発明の第１の目的は、４段階パイプライン構造で動作し、パイプラインが割れる例外の場合に既に求められた３次元値を再び用いる係数可変長の符号化方法を提供することにある。
本発明の第２目的は、４段階パイプライン方式で動作し、パイプラインが割れる例外の場合に、既に求められた３次元値を再び用いる係数可変長符号化器を提供することにある。
【課題を解決するための手段】
【０００７】
前記本発明の第１目的を達成するための係数可変長の符号化方法は、クロックの第１周期内に階数データをランレングス符号化して３次元値として求める段階と、クロックの第２周期内に前記求められた３次元値を伝送する段階と、クロックの第３周期内に伝送された３次元値を用いて可変ビットベクトル値を求める段階と、求められた可変ビットベクトル値を保存する段階の４段階を並列処理する４段階パイプライン方式で係数可変長符号化を行う。
【０００８】
また、前記本発明の第２目的を達成するための係数可変長符号化器は、メモリから係数データを読み取った後、ランレングス符号化してクロックの第１周期内に３次元値を求め、前記求められた３次元値を前記クロックの第２周期内に伝送するＲＬＣ符号化器、及び伝送された３次元値を用いて可変ビットベクトル値をクロックの第３周期内に求め、求められた可変ビットベクトル値をクロックの第４周期内に保存するＶＬＣ符号化器を含んで４段階のパイプライン構造で動作する。
したがって、パイプライン方式で動作して、高速に係数可変長の符号化を行うことができ、特に、パイプラインが割れる例外の場合に処理時間を最小化して迅速な符号化を行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明による望ましい実施例を添付した図面を参照して詳細に説明する。
図１は、本発明の一実施例による係数可変長符号化器のブロック図である。図１を参照すると、係数可変長符号化器は、ＲＬＣ符号化器１１０、ＶＬＣ符号化器１２０、及びメモリ１３０を含む。ＲＬＣ符号化器１１０は、メモリから係数データを読み取ってランレングス符号化して３次元値を作り出し、これをインデックスと共にＶＬＣ符号化器１２０に伝送する。ＲＬＣ符号化器１１０は、特に３次元値保存バッファ１１３を具備してＶＬＣ符号化器１２０に伝送された３次元値を３次元値保存バッファ１１３のインデックスに該当する位置に所定クロック期間保存する。ここで、３次元値保存バッファ１１３は、四つまでの３次元値を保存することができることが望ましい。したがって、３次元値保存バッファ１１３は、４クロックの期間に３次元値を保存することが望ましい。これは、ＲＬＣ符号化器１１０が３次元値を求めてこれをＶＬＣ符号化器１２０に伝送し、ＶＬＣ符号化器１２０から伝送された３次元値を一般的なテーブル（ＡＣテーブル１、ＡＣテーブル２）で見つからない場合に、例外信号を発生させてこれを通じてＲＬＣ符号化器１１０が伝送した３次元値に対する例外発生を検出するのに４クロックがこの過程で必要とされるためである。ＲＬＣ符号化器１１０は、ＶＬＣ符号化器１２０から伝送された３次元値を一般的な値を一般的なテーブルで見つからない例外が発生してパイプラインが割れる場合が発生した時、ＶＬＣ符号化器１２０が例外を処理する期間中に求められた３次元値を再びランレングス信号化せず、３次元値保存バッファ１１３に保存された値を用いて符号化する。図１に示されたＲＬＣ符号化器１１０は、３次元値保存バッファ１１３、ＲＬＣ制御器１１１、アドレス発生器１１５、及びラン、レベル、ラストチェック部１１７を含む。ＲＬＣ制御器１１１は符号化が始まると、アドレス発生器１１５にアドレス発生信号（ＡＤＤＲ＿ＧＥＮ）を発生させる。アドレス発生器は、アドレス発生信号が発生すれば読み取る係数データが入っているメモリアドレス（ＡＤＤＲ）を生成するようにする。メモリ１３０は、アドレス発生器１１５からメモリアドレス（ＡＤＤＲ）が生成されると、これに該当する係数データ（ＤＡＴＡ）を、ラン、レベル、ラストチェック部１１７に出力する。ラン、レベル、ラストチェック部１１７は、係数データが「０」でなければ３次元値（ＲＬＣ＿ＶＡＬ）を生成してＲＬＣ制御器１１１に提供することになる。ＲＬＣ制御器１１１は、ラン、レベル、ラストチェック部１１７から３次元値が提供されると、この値がＤＣに対する値であるか否か判断して、ＤＣであればＤＣ信号（ＩＳ＿ＤＣ）を活性化し、ラン、レベル、ラスト信号（ＲＵＮ＿ＬＥＶＥＬ＿ＬＡＳＴ）を通じてＶＬＣ符号化器１２０へ伝送する。提供された値がＤＣでなければＤＣ信号（ＩＳ＿ＤＣ）が非活性化された状態で、ラン、レベル、ラスト信号（ＲＵＮ＿ＬＥＶＥＬ＿ＬＡＳＴ）を通じて３次元値をＶＬＣ符号化器１２０に伝送する。ここで、対応するインデックスをインデックス信号（ＣＵＲＲ＿ＩＮＤＥＸ）に出力する。本実施例で、インデックスは１〜４の値として、四つまでの３次元値を保存することができる３次元保存バッファ１１３に保存される保存位置を示す。ここで、ＲＬＣ制御器１１１は、バッファ信号（ＢＵＦ＿ＶＡＬ）及びバッファインデックス信号（ＢＵＦ＿ＩＮＤＥＸ）を通じて３次元値保存バッファ１１３に３次元値を保存し、３次元値及びインデックスを読み取るようになる。結局、図１に示したＲＬＣ符号化器１１０は、毎クロックごとにメモリアドレスをを発生させ、係数値が「０」でなければ、それに対応する３次元値を生成してインデックスと共に出力する動作を反復する。但し、３次元値が生成されるごとに、これを３次元値保存バッファ１３３の該当するインデックスに保存する。
【００１０】
以下、ＶＬＣ符号化器１２０から例外信号（ＥＳＧ＿ＳＩＧ）が発生した場合のＲＬＣ符号化器１１０の動作を説明する。例外信号（ＥＳＣ＿ＳＩＧ）が発生した場合にＲＬＣ制御器１１１は、３次元値保存バッファ１１３に例外信号（ＥＳＣ＿ＳＩＧ）を発生させた３次元値の後に保存された３次元値の有無をチェックする。このチェックは、例外インデックス信号（ＥＳＣ＿ＩＮＤＥＸ）を通じて入力される例外インデックス及び３次元値保存バッファの現在インデックスを比較して行いやすい。
【００１１】
即ち、例外インデックス、及び現在インデックスが同一であれば、例外信号（ＥＳＣ＿ＳＩＧ）を発生させた３次元値の後に保存された３次元値がないのであり、例外インデックス及び現在インデックスが異なれば、例外信号（ＥＳＣ＿ＳＩＧ）を発生させた３次元値の後に保存された３次元値があるのである。
例外インデックスが現在インデックスより大きければ、現在インデックス１を足すインデックスに該当する３次元値から例外インデックスに該当する３次元値までを再伝送すればよい。
例外インデックスが現在インデックスより小さければ、現在インデックスに１を足すインデックスに該当する値からインデックス４に該当する３次元値までを再伝送し、再び、インデックス１に該当する３次元値から例外インデックスに該当する３次元値までを再伝送すればよい。
【００１２】
また、ＲＬＣ制御器１１１は、例外が発生したことを知らせる信号（ＥＳＣ＿ＯＣＣＵＲ）を通じて例外が発生したことをアドレス発生器１１５に知らせる。３次元値保存バッファ１１３に例外信号（ＥＳＣ＿ＳＩＧ）を発生させた３次元値の後に保存された３次元値があれば、ＲＬＣ制御器１１１は、例外信号（ＥＳＣ＿ＳＩＧ）が比活性化するときから各クロックごとにこの３次元値をＶＬＣ符号化器１２０に伝送する。このとき、ＲＬＣ制御器１１１は、保存された３次元値のうち、最後値を伝送すると同時に新しく住所アドレス発生信号（ＡＤＤＲ＿ＧＥＮ）を生成して係数データを読み取る動作を再び始める。
【００１３】
ＶＬＣ符号化器１２０は、ＲＬＣ符号化器１１０からＤＣ信号（ＩＳ＿ＤＣ）、ラン、レベル、ラスト信号（ＲＵＮ＿ＬＥＶＥＬ＿ＬＡＳＴ）、インデックス信号（ＣＵＲＲ＿ＩＮＤＥＸ）の入力を受ける。ＶＬＣ符号化器１２０は、ＲＬＣ符号化器１１０から、ラン、レベル、ラスト信号（ＲＵＮ＿ＬＥＶＥＬ＿ＬＡＳＴ）を通じて３次元値が入力されると、ＤＣ信号（ＩＳ＿ＤＣ）を通じてこの値のＤＣ可否を判断する。この値がＤＣであれば、ＤＣテーブル１２２を探して該当するビットベクトルを求めてこれをメモリに保存されるようにする。ＤＣがなければ、ＡＣテーブル１（１２３）やＡＣテーブル２（１２４）の二つのテーブルを探して可変ビットベクトルを求めてピンポンバッファ１２７に保存する。
【００１４】
ここで、ＶＬＣ制御器１２１は、検索信号（ＶＡＬ＿ＲＬＣ）を通じて３次元値をテーブルで探すようになる。もし、３次元値をＡＣテーブル１（１２３）とＡＣテーブル（１２４）で見つからない例外が発生した場合には、例外信号（ＥＳＣ＿ＳＩＧ）を発生させ、次のクロックにてレベル例外テーブル１２５を用いてレベル例外に対する処理を行う。レベル例外に対する処理にて例外を処理すると、該当するビットベクトルをピンポンバッファに伝送しながら例外信号（ＥＳＣ＿ＳＩＧ）を非活性化させる。しかし、レベル例外に対する処理にて例外が処理できない場合には、例外信号（ＥＳＣ＿ＳＩＧ）を活性化されている状態で維持したままラン例外テーブル１２６を用いてラン例外に対する処理をする。ラン例外に対する処理にて例外処理をすると、該当するビットベクトルをピンポンバッファに伝送しながら例外信号（ＥＳＣ＿ＳＩＧ）を非活性化させる。しかし、ラン例外に対する処理にて例外が処理できない場合には、例外信号（ＥＳＣ＿ＳＩＧ）を活性化されている状態で維持したまま、固定ビット符号化する。固定ビット符号化の後には、例外信号（ＥＳＣ＿ＳＩＧ）を非活性化する。テーブルを検索した後、出力信号（ＥＳＣ＿ＢＩＴＶＥＣ＿ＬＥＮＧＴＨ）は、例外発生可否、求められたビットベクトル及びビットベクトルの長さなどの情報を含むことができる。
【００１５】
ＶＬＣ制御器１２１は、テーブルからビットベクトルが提供されると、ピンポンバッファ１２７にビットベクトル信号（ＢＩＴＶＥＣ＿ＬＥＮＧＴＨ）を出力してビットベクトルが保存されるようにする。ビットベクトル信号（ＢＩＴＶＥＣ＿ＬＥＮＧＴＨ）には、求められたビットベクトル以外にビットベクトルの長さなどの情報を含むことができる。
【００１６】
ピンポンバッファ１２７は、入力されるビットベクトルを累積して一定ビット単位でメモリ１３０に保存されるように保存信号（ＡＤＤＲ＿ＤＡＴＡ）を出力する。この保存信号（ＡＤＤＲ＿ＤＡＴＡ）は、保存されるメモリ１３０の住所と保存するビットストリームとを含む。ここで、ピンポンバッファ１２７は、一定ビット単位でメモリ１３０のアドレスを増加させ、効果的にＶＬＣ符号化器１２０とメモリ１３０との間のバッファ役割を果たす。ピンポンバッファ１２７の詳細な動作に対しては後に説明する。
【００１７】
図２は、図１に示した係数可変長符号化器の４段階のパイプライン構造を説明するためのブロック図である。図２を参照すると、図１に示した係数可変長符号化器は、３次元値を求める段階（ＧＥＮ）、求められた３次元値を伝送する段階（ＴＲＡＮＳＦＥＲ）、伝送された３次元値を用いて可変ビットベクトル値を求める段階（ＰＲＯＣＥＳＳ）、及び可変ビット値をメモリに保存する段階（ＢＩＴ＿ＧＥＮ）の４段階パイプライン構造で動作することがわかる。
【００１８】
パイプライン方式で動作するために、図１に示した係数可変長符号化器は、メモリから係数データを読み取る過程、及び可変ビットストリームをメモリに保存する過程を内部メモリを用いて一クロック期間に処理できるようにすることが望ましい。また、一般的に３次元値を用いて該当するテーブルを探して可変ビットベクトル値を求める段階は、長い処理時間が必要であるものの、本発明では全てのテーブルをゲート化して一クロック内に処理することができるようにした。これのために用いられるテーブルは、ＭＰＥＧ＿４  ｉｎｔｒａ  ｃｏｅｆｆｉｃｉｅｎｔ  ｔａｂｌｅ、ＭＰＥＧ−４  ｉｎｔｅｒ  ｃｏｅｆｆｉｃｉｅｎｔ  ｔａｂｌｅ、ｒｕｎ−ｅｓｃａｐｅ  ｔａｂｌｅ、ｌｅｖｅｌ−ｅｓｃａｐｅ  ｔａｂｌｅを用いる。即ち、３次元値が決定されると、これに応じるビットベクトルを一クロックにすぐ用いることができる。
【００１９】
図３は、ＲＬＣ符号化器の状態遷移図である。図３を参照すると、図１に示したＲＬＣ符号化器１１０は、符号化動作を始めると、アイドル状態（ＩＤＬＥ）でアドレス生成状態（ＡＤＲ＿ＧＥＮ）に移動してメモリアドレスを割り当てて内部メモリから係数データを読み取る。読み取った係数データにＤＣ係数がある場合にこれを残り係数と異なる方法で処理するためにＤＣ伝送状態（ＤＣ＿ＳＥＴ）に移動し、ＤＣ係数なしにＡＣ値のみあったり、或いはＤＣ係数値を伝送した後にＡＣ値がある場合にＡＣ伝送状態（ＡＤＤＲＳＴ）に移動して新しい３次元値を求めてＶＬＣ符号化器に伝送した後、インデックスに該当する位置に所定クロック期間保存するようになる。ＡＣ伝送状態（ＡＤＤＲＳＴ）では、３次元値を求めてこれをインデックスと共にＶＬＣ符号化器に伝送した後に継続して内部メモリのアドレスを作り出し、３次元値を求めてＶＬＣ符号化器に伝送する動作を反復する。したがって、例外が発生しない限り、パイプライン構造が割れないので、高速に係数を可変長符号化することができる。ＡＣ伝送状態であるとき、ＶＬＣ符号化器から例外信号（ＥＳＣ＿ＳＩＧ）が活性化した場合には再びアドレス生成状態（ＡＤＲ＿ＧＥＮ）に移動して保存されている３次元値のうち、例外インデックスに該当する３次元値の後に保存された３次元値を例外信号（ＥＳＣ＿ＳＩＧ）が非活性化した後にＶＬＣ符号化器に再び伝送する。ＤＣ伝送状態（ＤＣ＿ＳＥＴ）で、ＤＣ値を伝送した後、ＡＣ値がなかったり、或いは全ての係数に対して伝送済の場合には最終状態（ＬＡＳＴＳＴ）に移してＲＬＣ符号化器が動作を終了するようにする。
【００２０】
以下、図３に示した信号を説明すると、ＤＣＤＡＴＡＥＮ信号は、係数データにＤＣ値があると知らせる信号であり、ＤＣＯＮＬＹＤＡＴＡ信号はＤＣ値があるブロックにＡＣ値なしにＤＣ値のみ有していることを知らせる信号であり、ＡＣＥＸＩＳＴ信号はＡＣ値があることを知らせる信号であり、ＥＳＣ＿ＳＩＧ信号はＶＬＣ符号化器にて例外場合が発生したことを知らせる信号であり、ＬＡＳＴＣＨＥＣＫ信号はブロックのＲＬＣ符号化が完了したことを知らせる信号である。ここで、ＥＳＣ＿ＳＩＧ信号のみがＲＬＣ符号化器の外部から入力される信号であり、残り信号はＲＬＣ符号化器の内部で用いられる信号である。
【００２１】
図４は、ＶＬＣ符号化器の状態遷移図である。図４を参照すると、図１に示したＶＬＣ符号化器１２０は、符号化動作を始めると、アイドル（ＩＤＬＥ）状態で処理状態（ＣＨＥＣＨＳＴ）に移動してＲＬＣ符号化器から３次元値がインデックスと共に入力されると、テーブルから３次元値に該当する可変ビットベクトルを探してこの可変ビットベクトルを保存する。一般的なテーブルでは処理できない例外が発生した場合には、例外信号（ＥＳＣ＿ＳＩＧ）を活性化し、該当する第１例外状態（ＥＳＣ１）に移動してレベル値に対する例外処理を行う。第１例外状態（ＥＳＣ１）の例外処理が失敗した場合には、第２例外状態（ＥＳＣ２）に移動してラン値に対する例外処理を行う。第２例外状態（ＥＳＣ２）の例外処理が失敗した場合には、第３例外状態（ＥＳＣ３）に移動して固定ビット符号化を行う。第１例外状態（ＥＳＣ１）及び第２例外状態（ＥＳＣ２）にて例外処理に成功したり、或いは第３例外状態（ＥＳＣ３）にて固定ビット符号化を行った場合には、例外信号（ＥＳＣ＿ＳＩＧ）を非活性化させ、例外処理状態（ＥＳＣ＿ＰＲＯＣ）に移動して導出されたビットベクトルを保存する。例外処理状態（ＥＳＣ＿ＰＲＯＣ）にてビットベクトルを保存した後には再び処理状態（ＣＨＥＣＫＳＴ）に移動するようになる。ＲＬＣ符号化器から伝送されたラスト値が１である時には終了状態（ＬＡＳＴＳＴ）に移動して符号化を終了するようになる。
【００２２】
ＶＬＣ符号化器で、第１例外状態に進入するようになる場合に、ＶＬＣ符号化器は例外信号（ＥＳＣ＿ＳＩＧ）を通じてＲＬＣ符号化器に追加的なクロックが必要するようになったということを知らせて、ＲＬＣ符号化器がアドレス生成状態（ＡＤＲ＿ＧＥＮ）に変化するようにし、例外インデックス（ＥＳＣ＿ＩＮＤＥＸ）を通じて如何なるインデックスにて例外の場合が発生したかをＲＬＣ符号化器に知らせ、ＲＬＣ符号化器にて例外を処理する期間に求められた３次元値を再びランレングス符号化（ＲＵＮ−ＬＥＮＧＴＨ  ＣＯＤＩＮＧ）せず、保存された３次元値を再びＶＬＣ符号化器に伝送するようにして、パイプラインが割れる場合の消費クロックを最小化させる。ここで、ＲＬＣ符号化器の状態はアドレス生成状態（ＡＤＲ＿ＧＥＮ）としてパイプラインプロセスを新しく始めるようになる。
【００２３】
以下、図４に示した信号を説明する。ＧＥＴＲＵＮＬＥＶＥＬＬＡＳＴ信号は、継続してＲＬＣ符号化器から値を受け取る信号であり、ＥＳＣ＿ＳＩＧ信号は受け取った３次元値を一般的なテーブルで見つからない例外が発生したという信号である。この信号は、ＲＬＣ符号化器にも伝達され、ＲＬＣ符号化器では、このシグナルを見て例外状態が終わるまで待機する。ＯＮＬＹＬＥＶＥＬＥＳＣＡＰＥ信号は、例外のうちにレベル値が例外である場合を示す信号であり、レベル値例外として処理できない場合、ＯＮＬＹＲＵＮＥＳＣＡＰＥ信号としてラン値が例外である場合を示す。ラン値例外としても処理できない場合は、符号化せず、そのまま伝送するようになる。ＣＨＥＣＫＬＡＳＴ信号は、提供された３次元値のうち、ラスト値が１であるか否かをチェックしてラストが１である場合、符号化を終了するようになる。ここで、ＥＳＣ＿ＳＩＧ信号のみがＶＬＣ符号化器が外部に出力する信号であり、残り信号はＶＬＣ符号化器の内部にて用いられる信号である。
【００２４】
図５は、図１に示した係数可変長符号化器のパイプラインタイミング図である。図５を参照すると、図５の縦軸は４段階パイプラインの各段階を示す。即ち、図５は、３次元値を求める段階（ＧＥＮ）、求められた３次元値を伝送する段階（ＴＲＡＮＳＦＥＲ）、伝送された３次元値を用いて可変ビットベクトル値を求める段階（ＰＲＯＣＥＳＳ）、及び可変ビットベクトル値を内部メモリに保存する段階（ＢＩＴＳ＿ＧＥＮ）の各段階別に連続な符号化動作を行う時のタイミング図を示したものである。まず、３次元値を求める段階（ＧＥＮ）では、一番目の３次元値を求め（ＧＥＮ  Ａ）、その後、二番目及び三番目の３次元値を求め（ＧＥＮ  Ｂ，ＧＥＮ  Ｃ）、一クロック休んだ後、四番目及び五番目の３次元値を求める（ＧＥＮ  Ｄ，ＤＥＮ  Ｅ）。このように、３次元値を求める段階で毎クロックごとに３次元値が求められず、休むクロックが発生することは係数データが「０」である場合があるためである。
【００２５】
３次元値を求める段階（ＧＥＮ）で、一番目の３次元値を求めると（ＧＥＮ  Ａ）、その後のクロックにはこれを伝送する段階（ＴＲＡＮＳＦＥＲ）になる（ＴＸ  Ａ）。したがって、伝送する段階（ＴＲＡＮＳＦＥＲ）は、３次元値を求める段階（ＧＥＮ）より一クロック後に来るようになることがわかる。パイプラインが割れない場合に伝送する段階（ＴＲＡＮＳＦＥＲ）の次のクロックにて可変ビットベクトル値を求める段階（ＰＲＯＣＥＳＳ）が行われる。したがって、一番目及び二番目の３次元値に対して可変ビットベクトル値を求める段階（ＰＲＯＣ．Ａ，ＰＲＯＣ．Ｂ）がこれを伝送する段階（ＴＸ  Ａ，ＴＸ  Ｂ）の後のクロックにて行われることがわかる。また、可変ビットベクトル値を求める段階（ＰＲＯＣＥＳＳ）から一クロック過ぎると、求められた可変ビットベクトル値を保存してビットストリームを生成する段階（ＢＩＴＳ＿ＧＥＮ）になる。したがって、一番目及び二番目の３次元値に対して可変ビット値を求める段階（ＰＲＯＣ．Ａ，ＰＲＯＣ．Ｂ）の後のクロックにてこれらを保存する段階（ＭＡＫＥ  ＢＩＴ  Ａ，ＭＡＫＥ  ＢＩＴ  Ｂ）が行われることがわかる。しかし、図５で、三番目の３次元値である場合に（ＧＥＮ  Ｃ）一般的なテーブルで処理できない例外が発生したことがわかる。ここで、レベル値に対する例外の場合には、ビットベクトル値を求めるのに３クロックが必要とされることがわかる。これは、一般的なテーブルにて見つからない３次元値の可否を判断するのに一クロック、レベル値に対する例外処理をするのに一クロック、ビットベクトルを生成するのに一クロックが必要とされるためである。これは、図４に示した状態遷移図で、処理状態（ＣＨＥＣＫＳＴ）、第１例外状態（ＥＳＣ１）、及び例外処理状態（ＥＳＣ＿ＰＲＯＣ）の三つの状態に遷移することに対応させることができる。したがって、３クロックが必要とされ、レベル値の例外に対するビットベクトルが生成されると、３次元値を求める段階（ＧＥＮ）にて再び四番目の３次元値（ＧＥＮ  Ｄ）を再び伝送段階（ＴＲＡＮＳＦＥＲ）に送ることがわかる。本発明によると、二番目として四番目の３次元値（ＧＥＮ  Ｄ）を伝送するときには、ランレングス信号化して四番目の３次元値を求めるのではなく、保存された値を再使用する。三番目の３次元値（ＧＥＮ  Ｃ）に対する例外を処理する期間、二つの３次元値（ＧＥＮ  Ｄ，ＧＥＮ  Ｅ）が求められるので、この二つの値は例外が処理された後に保存された値として再使用されるのである。この二つの３次元値を再伝送した後には、再びパイプライン構造で動作するようになる。また、括弧として表示したように、ラン値に対する例外の場合にはレベル値に対する場合より１クロックが更に所要され、固定ビット符号化を行う場合には、これより１クロックが更に所要されることがわかる。これは、ラン値に対する例外の場合には、図４の状態遷移図で第２例外状態（ＥＳＣ２）を更に経て、固定ビット符号化を行う場合には、第２及び第３例外状態（ＥＳＣ２，ＥＳＣ３）を更に経るためである。したがって、このようなラン値に対する例外や固定ビット符号化をする場合には、３次元値を生成する段階（ＧＥＮ）もこれに合わせてビットベクトル��求めた後に再び四番目の３次元値を伝送するようになるのである。
【００２６】
図６は、ＶＬＣ符号化器のピンポンバッファを説明するためのブロック図である。ＶＬＣ符号化器は、ピンポンバッファを具備してビットベクトルを累積し、一定ビット単位で内部メモリに保存するようにする。
【００２７】
図６を参照すると、ピンポンバッファは、二つの３２ビットバッファで構成されている。図６に示した二つの３２ビットバッファのうち、左側バッファからデータを保存し、その後、右側のバッファにデータを保存するようになる。したがって、ＶＬＣ符号化器にて符号化が進行されることによって、ビットストリームが累積され、左側の３２ビットバッファが満杯になると、継続して右側の３２ビットバッファにデータを保存し、左側の３２ビットバッファの３２ビットデータは内部メモリに保存される。その後、右側の３２ビットバッファが満杯になると、継続して左側の３２ビットに保存し、右側の３２ビットバッファの３２ビットバッファの３２ビットデータは内部メモリに保存される。このような過程を反復してピンポンバッファは別途のクロック消費なしに３２ビットストリーム単位で内部メモリにデータを保存することができるのである。ここで、現在ビットの累積値を示すポインタ値と作られるビットストリームを保存するメモリのアドレス値は、制御が可能であるように設計され、別途の複写やビットの移動なしにストリームを作ることができる。
【００２８】
図７は、図１に示した係数可変長符号化器を具備する可変長符号化器のブロック図である。
図７を参照すると、本発明の一実施例による可変長符号化器は、内部メモリ６１０、マクロブロック情報可変長符号化器６２０、ＤＣ値ＤＰＣＭ符号化器６３０、動きベクトルＤＰＣＭ可変長符号化器６４０、係数可変長符号化器６５０、ＤＭＡ６６０、及び可変長符号化制御器６７０を含む。
【００２９】
内部メモリ６１０は、動きベクトル及び係数データを受けてこれを保存する。マクロブロック情報可変長符号化器６２０は、マクロブロックタイプ、「０」値でないデータの有無を知らせる情報などを可変長符号化して内部メモリに保存する。ＤＣ値ＤＰＣＭ符号化器６３０は、ＤＣ値を内部メモリ６１０から読み取って、これをその周囲ブロックのＤＣ値との差分値を求めて符号化して内部メモリ６１０に保存する。動きベクトルＤＰＣＭ可変長符号器６４０は、マクロブロック又はそのサブブロックに対して周囲ブロックとの類似性を比較して動きを求めた動きベクトルを内部メモリ６１０から読み取ってこれを周囲ブロックとの差分値を取って可変長符号化して内部メモリ６１０に保存する。係数可変長符号化器６５０は、係数データを内部メモリ６１０から読み取って可変長符号化して得られたビットストリームを再び内部メモリ６１０に保存する。ここで、係数可変長符号化器６５０は、図１に示された係数可変長符号化器であって、４段階のパイプライン構造で動作し、一般的なテーブルにて３次元値に対応するビットベクトルが見つからない例外が発生した場合、例外を処理する期間に求められた３次元値を再び用いてパイプラインが割れる場合に対する処理時間を最小化しようとした。ＤＭＡ６６０は、内部メモリ６１０のデータを外部メモリに伝送する機能を果たす。可変長符号化制御器６７０は、外部から制御信号の入力を受け、マクロブロック情報可変長符号化器６２０、ＤＣ値ＤＰＣＭ符号化器６３０、動きベクトルＤＰＣＭ可変長符号化器６４０、係数可変長符号化器６５０、及びＤＭＡ６６０を制御する。
【００３０】
図８は、図７に示した可変長符号化器の動作流れ図である。図８を参照すると、図７に示した可変長符号化器は、可変長符号化が始まると、並列に動きベクトルＤＰＣＭ可変長符号化及び係数の可変長符号化を行うようになることがわかる。動きベクトルＤＰＣＭ可変長符号化を説明すると、まず、インターモードの可否を判断する（Ｓ７２１）。インターモードであれば、動きベクトルＤＰＣＭを処理し（Ｓ７２２）、可変長符号化する（Ｓ７２３）。図７に示した可変長符号器は、動きベクトルＤＰＣＭ可変長符号化と同時に、係数可変長符号化を行う。以下、説明すると、まず、係数符号化でイントラモードの可否を判断する（Ｓ７１１）、イントラモードであれば、まず、周囲ＤＣ値とＤＰＣＭとを処理し（Ｓ７１２）、ランレングス符号化した後（Ｓ７１３）、可変長符号化を行う（Ｓ７１４）。イントラモードでなければ、すぐランレングス符号化した後（Ｓ７１３）、可変長符号化を行う（Ｓ７１４）。その後、符号化を行ったブロックがマクロブロックの最後のブロックであるか判断する（Ｓ７１５）。最後のブロックでなければ、Ｓ７１１段階に戻る。最後のブロックであれば、Ｓ７３１段階に移動する。Ｓ７３１段階では、係数可変長符号化及び動きベクトルＤＰＣＭ可変長符号化が全て終わったかを否か判断する。全て終わらなければ、Ｓ７３１段階に戻る。全て終われば、マクロブロックヘッダーを生成し（Ｓ７３２）、ビートストリームデータを保存することになる（Ｓ７３３）。
【産業上の利用可能性】
【００３１】
前述したように、本発明による係数可変長の符号化方法及び係数可変長符号化器は４段階のパイプライン構造として動作する。したがって、毎クロックごとに可変ビットベクトルを求めることができて、係数可変長符号化の速度を向上させることができる。また、例外が発生してパイプラインが割れる場合に、例外を処理する期間に発生した３次元値を保存しておき、例外を処理した後に再びランレングス符号化せず、保存された３次元値を再伝送してパイプラインが割れる場合に対する処理時間を減少させることができる。したがって、高解像度の動画像データに対する可変長符号化を効果的に行うことができる。
【００３２】
以上、本発明の実施例によって詳細に説明したが、本発明はこれに限定されず、本発明が属する技術分野において通常の知識を有するものであれば本発明の思想と精神を離脱することなく、本発明を修正または変更できる。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施例による係数可変長符号化器のブロック図である。
【図２】図１に示した係数可変長符号化器の４段階パイプラインの構造を説明するためのブロック図である。
【図３】図１に示したＲＬＣ符号化器の状態遷移図である。
【図４】図１に示したＶＬＣ符号化器の状態遷移図である。
【図５】図１に示した係数可変長符号化器のパイプラインのタイミング図である。
【図６】図１に示したＶＬＣ符号化器のピンポンバッファを説明するためのブロック図である。
【図７】図１に示した係数可変長符号化器を具備する可変長符号化器のブロック図である。
【図８】図７に示した可変長符号化器の動作流れ図である。
【符号の説明】
【００３４】
１１０    ＲＬＣ符号化器
１２０    ＶＬＣ符号化器
１３０    メモリ
【図１】
2006042331.tif 000003
【図２】
2006042331.tif 000004
【図３】
2006042331.tif 000005
【図４】
2006042331.tif 000006
【図５】
2006042331.tif 000007
【図６】
2006042331.tif 000008
【図７】
2006042331.tif 000009
【図８】
2006042331.tif 000010