(57)【要約】  【課題】可変長符号の復号処理の高速化を図る。  【解決手段】バレルシフタ６１によって、６４ビット長のCodewordとして、１つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックスの全てが同時に後段へと出力される。ＶＣ１ Tables６２から使用した複数のシンタックスの総サイズがフィードバックされ、その値を用いてバレルシフタ６１の出力のシフト動作が制御される。ＶＣ１ Tables６２内でＡＣ係数のRun,Level,LastFlagを求めるのに必要なテーブルが集約されている。コントローラ６３は、Run,Level,LastFlagを求める際に使用するテーブルを決定する信号Table selectを出力する。集約されたテーブルを１回参照することによって、ＡＣ係数に対応したRun,Level,LastFlagを求めることができる。【選択図】図１０
2008048235.tif 000002
【特許請求の範囲】
【請求項１】
データの連続する数を示すランと、値を示すレベルとの組合せに対応して１個の符号が割り当てられる可変長符号化の復号化方法において、
入力ストリーム中に存在し、上記ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出ステップと、
可変長の符号が割り当てられる第１のモードと、固定長の符号が割り当てられる第２のモードとを判別するモード判別ステップと、
上記第１のモードの処理と、上記第２のモードの処理との内で、上記モード判別ステップで判定されたモードの処理を行う処理ステップと
からなり、
上記第１のモードの処理ステップにおいて、上記抽出ステップで抽出されたシンタックスをテーブルに入力して一度に上記ランおよびレベルを得ることを特徴とする可変長符号化の復号化方法。
【請求項２】
さらに、上記第２のモードとして、上記レベルが修正される第３のモードと、上記ランが修正される第４のモードと、上記レベルおよびランの修正がされない第５のモードとからなり、
上記第３および第４のモードにおいても、上記抽出ステップで抽出されたシンタックスをテーブルに入力して一度に修正された上記ランおよび修正された上記レベルを得ることを特徴とする請求項１記載の可変長符号化の復号化方法。
【請求項３】
上記テーブルが上記第１のモードで使用される第１のテーブルと、上記第３および第４のモードで使用される第２のテーブルとに分割される請求項１記載の可変長符号化の復号化方法。
【請求項４】
データの連続する数を示すランと、値を示すレベルとの組合せに対応して１個の符号が割り当てられる可変長符号化の復号化装置において、
入力ストリーム中に存在し、上記ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出手段と、
可変長の符号が割り当てられる第１のモードと、固定長の符号が割り当てられる第２のモードとを判別するモード判別手段と、
上記第１のモードの処理と、上記第２のモードの処理との内で、上記モード判別ステップで判定されたモードの処理を行う処理手段と
からなり、
上記第１のモードの処理手段において、上記抽出手段で抽出されたシンタックスをテーブルに入力して一度に上記ランおよびレベルを得ることを特徴とする可変長符号化の復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、離散コサイン変換またはカルーネン・レーベ変換等の直交変換によって画像情報を圧縮する画像符号化方法において、ＡＣ係数データの伝送データ量の圧縮に適用される可変長符号の復号化方法および復号化装置に関する。
【背景技術】
【０００２】
近年、画像情報をディジタルとして取り扱い、画像情報特有の冗長性を利用して、離散コサイン変換等の直交変換と動き補償により圧縮するＭＰＥＧなどの方式に準拠した画像情報符号化装置や復号化装置が、放送局などの情報配信、および一般家庭における情報受信の双方において普及しつつある。
【０００３】
特に、ＭＰＥＧ２（ＩＳＯ（International Organization for Standardization）／ＩＥＣ（International Electrotechnical Commition）１３８１８−２）は、汎用画像符号化方式として定義されている。またＭＰＥＧ２は、飛び越し走査画像および順次走査画像の双方、並びに標準解像度画像および高精細画像を網羅する標準で、現在、プロフェッショナル用途およびコンシューマー用途の広範なアプリケーションに広く用いられている。
【０００４】
ＭＰＥＧ２は、主として放送用に適合する高画質符号化を対象としていたが、ＭＰＥＧ１より小さい符号量（低ビットレート）、つまり、より高い圧縮率の符号化方式には対応していなかった。携帯端末の普及により、今後そのような符号化方式のニーズは高まると思われ、これに対応してＭＰＥＧ４符号化方式の標準化が行われた。画像符号化方式に関しては、１９９８年１２月にＩＳＯ／ＩＥＣ１４４９６−２という規格が国際標準として承認された。
【０００５】
さらに、近年、当初テレビ会議用の画像符号化を目的として策定されたＨ. ２６Ｌ（ＩＴＵ（International Telecommunication Union ）−Ｔ  Ｑ６／１６  ＶＣＥＧ）という標準の規格化が進んでいる。Ｈ．２６Ｌは、ＭＰＥＧ２やＭＰＥＧ４といった従来の符号化方式に比べ、その符号化、復号化により多くの演算量が要求されるものの、より高い符号化効率が実現されることが知られている。また、現在、ＭＰＥＧ４の活動の一環として、このＨ．２６Ｌをベースに、Ｈ．２６Ｌではサポートされない機能も取り入れ、より高い符号化効率を実現する標準化がＪｏｉｎｔＭｏｄｅｌ  ｏｆ  Ｅｎｈａｎｃｅｄ−Ｃｏｍｐｒｅｓｓｉｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇとして行われ、２００３年３月には、Ｈ．２６４／ＡＶＣ（Advanced Video Coding ）という規格が国際標準として認められた。非特許文献１には、この規格に基づく処理の内容が記載されている。
【０００６】
【非特許文献１】「Draft Errata List with Revision-Marked Corrections for H.264/AVC」, JVT-1050, Thomas Wiegand et al., Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG, 2003
【０００７】
さらに、２００３年９月にマイクロソフトがＳＭＰＴＥ(Society of Motion Picture and Television Engineers)に対してＷＭＶ９にインターレス対応のための拡張を追加したものを提出し、２００５年１０月にＳＭＰＴＥでの規格化作業が終了し、ＳＭＰＴＥ  ４２１Ｍとして発表された。この規格は、ＶＣ１フォーマットと称される。ＶＣ１フォーマットは、Ｈ．２６４／ＡＶＣと共通点と相違点を有しており、二つの方式の比較については、例えば下記の非特許文献２に記載されている。
【０００８】
【非特許文献２】日経エレクトロニクス２００４年３月２９日号，131−136頁，および日経エレクトロニクス２００４年４月１２日号，115−120頁，「ベールを脱ぐＷＭＶ９  Ｈ．２６４とはここが違う」
【０００９】
図１および図２は、非特許文献２に記載されているＶＣ１フォーマットの符号化および復号化の流れを示すブロック図である。入力画像データが分割され、イントラ（フレーム内）予測符号化部１およびインター（フレーム間）予測符号化部２にそれぞれ入力される。イントラ予測符号化部１が直交変換部３、画面内予測符号化部４および量子化部５からなり、量子化部５からの量子化された係数データが可変長符号符号化部６に供給される。可変長符号符号化部６から可変長符号化された符号化データが出力される。係数データとしては、２次元周波数が０でないＡＣ係数と２次元周波数が０のＤＣ係数とがある。
【００１０】
インター予測符号化部２は、入力画像データと局部復号化画像データとの差分を得るための加算器７、差分を直交変換する直交変換部８および直交変換部８からの係数データを量子化する量子化部９とからなる。量子化部９からの量子化された係数データが可変長符号符号化部１０に供給される。可変長符号符号化部１０から可変長符号化された符号化データが出力される。
【００１１】
局部復号化のために、量子化部５および９のそれぞれの出力が供給される逆量子化部１１、直交変換の逆の変換を行う逆変換部１２、動き補償部１３、動き補償部１３の出力と逆変換部１２の出力を加算する加算器１４、加算器１４の出力が供給され、ブロック境界を平滑化するためのデブロックフィルタ１５、および入力画像データの動きを検出する動き予測部１６が設けられている。動き予測部１６で形成された動きベクトルが動き補償部１３に供給されると共に、予測符号化され、可変長符号符号化部１０に対して供給される。
【００１２】
入力画像信号は、イントラ予測で符号化されるものと、インター予測で符号化されるものとに分離され、それぞれイントラ予測符号化部１およびインター予測符号化部２に対して供給される。イントラ予測符号化部１では、単一のフレームを用いて符号化が行われる。イントラ予測符号化部１では、入力画像の画素値が直交変換部３に入力され、ここで離散コサイン変換、カルーネン・レーベ変換等の直交変換が施される。直交変換部３の出力（変換係数）が画面内予測符号化部４に供給され、ブロック間の相関を利用して係数データが画面内予測符号化部４によって予測符号化される。画面内予測符号化で符号化された係数データ（差分値）が量子化部５に提供され、量子化部５において量子化処理が施される。量子化部５からの量子化された変換係数が可変長符号符号化部６に供給されて可変長符号化が施される。
【００１３】
インター予測符号化部２では、複数のフレームの画像情報を用いて入力画像信号が符号化される。ローカル復号化によって動き補償部１３から得られた参照画像と入力画像との差分が加算器７の出力に得られる。動き補償部１３では、入力フレームと異なる他のフレームの画像情報の動き補償処理が行われ、参照画像情報が生成される。動き補償のために動き予測部１６からの動きベクトルが使用され、また、動きベクトル情報が可変長符号符号化部１０に出力され、動きベクトル情報が可変長符号化され、画像圧縮情報のヘッダ部に挿入される。その他の処理はイントラ符号化に関するものと同様である。
【００１４】
次に、図２のブロック図を参照して、画像情報復号化装置について説明する。受け取った符号化データがイントラ予測で復号されるものと、インター予測で復号されるものとに分けられ、イントラ予測復号化部２１およびインター予測復号化部２２にそれぞれ供給される。
【００１５】
イントラ予測復号化部２１は、可変長符号復号化部２３と、画面内予測符号復号化部２４と、量子化の逆の処理を行う逆量子化部２５と、直交変換の逆の変換を行う逆変換部２６と、ブロック歪みの軽減のためのデブロッキング・フィルタ２７とからなる。デブロッキング・フィルタ２７の出力に復号画像が得られる。
【００１６】
インター予測復号化部２２は、可変長符号復号化部２８と、量子化の逆の処理を行う逆量子化部２９と、直交変換の逆の変換を行う逆変換部３０と、加算器３１と、ブロック境界を平滑化するためのデブロッキング・フィルタ３２と、動きベクトル復号化部３３と、復号された動きベクトルによって動き補償を行う動き補償部３４とからなる。動き補償部３４において、デブロッキング・フィルタ３２から得られる復号画像が動き補償され、復号画像が加算器３１に供給される。加算器３１において、逆変換部３０からの差分信号と復号画像信号とが加算される。
【００１７】
ＶＣ１フォーマットは、ＭＰＥＧなどと異なる処理がなされている。非特許文献２によれば、主なものは、以下の通りである。
【００１８】
１．適応型ブロック・サイズによる直交変換
（複数のサイズの直交変換ブロックを使用して直交変換を行う。）
２．１６ビット処理を前提とした直交変換セット
（１６ビットの固定小数点演算を使用して逆変換を実装し、復号化時の演算量を抑える。）
３．動き補償
（探索ブロックと、動きベクトルの検出の画素単位と、予測値生成に使用するフィルタの種類との３つのパラメータの組合せによる４つの動き補償のモードを規定する。）
４．量子化と逆量子化
（２つの量子化の方法が切り換えられる。）
５．デブロッキング・フィルタ
（ブロック境界に不連続が生じるのを防止するために、Ｈ．２６４／ＡＶＣと同様にデブロッキング・フィルタを導入して、ブロック境界を平滑化している。）
６．２つのインタレース符号化方式
（インタレース符号化方式としてInterlaced fieldピクチャ符号化方式と、Interlaced frameピクチャ符号化方式との２つの方式が可能とされている。）
７．Ｂピクチャの符号化方式
（参照するピクチャに対するＢピクチャの位置関係を明示して符号化する等の特徴を有する。）
【００１９】
この発明は、上述したＶＣ１フォーマットの復号化装置における可変長符号復号化部２３，２８に適用される。ＡＣ係数（AC coefficient）は、ＤＣＴ等による変換後の周波数成分が０でない係数のことである。量子化ＡＣ係数は、ラン(Run)-レベル(Level)方法に
よって符号化されている。Runは、ジグザクスキャン後の１次元ＡＣ係数列における連続
する０の数である。連続する０に続く非０の値がLevelである。ブロックにおける最後の
非０の値かどうかを識別するフラグがLastFlagである。
【００２０】
一例について述べると、｛Run,Level,LastFlag｝で記述する場合、下記のＡＣ係数列を以下のように表す。
ＡＣ係数列：5,0,2,0,0,0,-1,0,0,0,0,0,1,0,0,0
｛Run,Level,LastFlag｝：｛0,5,0｝,｛1,2,0｝,｛3,-1,0｝,｛5,1,1｝
【００２１】
可変長符号復号化の処理は、入力ビットストリームを復号してRun,Level,LastFlagを得る処理と、これらを使用してＡＣ係数の値を復号する処理とからなる。この発明は、入力ビットストリームの復号処理に対して適用される。入力ビットストリームがＶＣ１ストリームである。
【００２２】
図３は、従来の可変長符号復号化部（ビットストリーム復号化部）の一例の構成を示す。入力ビットストリームがバレルシフタ４１に供給される。バレルシフタとは、本来、ビット幅ｎのデータをｍビットシフトするための効率的な回路構成のことだが、ここでは可変長シフタのことを指す。
【００２３】
バレルシフタ４１は、ビットストリームからシンタックスを取り出して各シンタックスをコードワード（VLC Codeword）として後段のＶＣ１Tables ４２に供給する。シンタッ
クス（Syntax Element）は、ＶＣ１ビットストリームを構成する要素である。ＡＣ係数のSyntax Elementは、（ACCOEF1 、ESCMODE 、ACCOEF2 、ESCLR 、ESCLVLSZ、ESCRUNSZ、ESCRUN、LVLSGN2 、ESCLVL、LVLSIGN ）である。Escape mode 等により、存在したりしなかったりする。
【００２４】
また、コードワードは、ＶＬＣ(Variable Length Coding) テーブルエントリに一致す
るビット列パターンのことである。VLC Size（VLC Codeword Size ）は、コードワードのビット長のことである。ＡＣ係数の場合、コードワードは、ＶＬＣテーブルで表現される｛Run,Level,LastFlag｝またはEscapeを一意に特定可能なビット列である。
【００２５】
ＶＣ１ Tables ４２は、バレルシフタ４１からのコードワードの値をテーブルによって変換し、後段のAC Run Levelデコーダ４３に対して変換された値(Index,VLC Size)を出力する。ＶＣ１ Tables４２で使用されるテーブルは、ＶＣ１規格書では、Table177,184,191,198,205,212,219,226として記載されている。
【００２６】
AC Run Levelデコーダ４３は、ＶＣ１ Tables ４２から入力された値｛Run,Level,LastFlag｝を使用してＡＣ係数のＡＣ係数列（Run,Level,LastFlag）を求める。AC Run Levelデコーダ４３で使用するテーブルは、ＶＣ１規格書では、Table178〜183,185〜190,192〜197,199〜204,206〜211,220〜225,227〜232として記載されている。
【００２７】
ＶＣ１ Tables ４２およびAC Run Levelデコーダ４３がコントローラ４４によって制御される。コントローラ４４は、Run,Level,LastFlagを求める際に使用するテーブルを指示指示する信号を出力する。指示信号は、ブロックレイヤのより上位のレイヤのシンタックスによって決定される。
【００２８】
図４は、AC Run Levelデコーダ４３の一例の構成を示す。AC Run Levelデコーダ４３は、Run Levelテーブル５１と、フラグ生成器５２と、Delta Levelテーブル５３と、Delta
Runテーブル５４と、セレクタ５５と、Sign付加回路５６とから構成されている。Run Levelテーブル５１は、Indexが入力され、RunおよびLevelを出力する。フラグ生成器５２は
、LastFlagを生成する。実際にはIndex 値とStartIndexOfLastとの比較器である。Index
の並びはLastFlagでソーティングしてあり、LastFlag=1の閾値がStartIndexOfLastである。つまり、index≧StartIndexOfLast ならば、LastFlag＝１となる。
【００２９】
Delta Levelは、Level の補正値である。Delta Runは、Run の補正値である。｛Run,Level,LastFlag｝で表されるLevel値は、１以上の整数であり、当該非ゼロ係数の正負の符
号は別に１ビットのSyntax Element（LVLSIGN or LVLSGN2）にて表現される。
【００３０】
一般的にハフマン符号の符号割り当てにおいては、出現確率の低いシンボルには、長い符号を割り当て、データの平均符号長を最小にするようになされている。但し、出現確率の低いシンボルの場合では、逆に符号長が長くなるために、固定長符号で符号割当がなされる。ＶＣ１では、ＡＣ係数を求めるためのRun,Level,LastFlagの求め方は、Not Escape mode、Escape mode 1、Escape mode 2、Escape mode 3の４種類存在する。固定長符号を割り当てるモードがEscape mode 1、Escape mode 2、Escape mode 3である。
【００３１】
Run 値を基にして、Delta LevelによるLevelの補正を行うモードがEscape mode 1であ
り、Level値を基にして、Delta RunによるRunの補正を行うモードがEscape mode 2である。Not Escape mode 、Escape mode 1 、Escape mode 2 で表現できない｛Run,Level,LastFlag｝の組み合わせがEscape mode ３である。これらのEscape mode以外がNot Escape modeである。 Escape mode 3 のときのＡＣ係数のSyntax Element（ESCRUN、ESCLVL、ESCLR ）から復号された値（ビットサイズ）を用いてビットストリーム中から直接ビットサイ
ズ分ビット列を取り出し、｛Run,Level,LastFlag｝とする処理であり、Run3,Level3,LastFlag3が使用される。
【００３２】
セレクタ５５は、４種類のmodeに対応するTable Select信号（図ではTable selと表記
する ）によって使用するテーブルセットを選択する。Ｙ（輝度）ブロックと、ＣｂＣｒ
（色差）ブロックで独立したテーブルセットが使用される。Table Select信号はピクチャーレイヤーパラメータ（PQINDEX 、TRANSACFRM、TRANSACFRM2 ）から生成される。
【００３３】
図５を参照して、｛Run,Level,LastFlag｝を導出するＶＬＣテーブルとEscape modeに
ついて説明する。Table 177:High Motion Intra VLC Tableについての数値表記とバイナ
リ表記とを示す。このテーブルは、IndexとVLC CodewordとVLC Sizeとの関係を示してい
る。Indexは、ＡＣ係数のSyntax Element（ACCOEF1 or ACCOEF2）から復号されたIndex
値である。このIndex 値を経由して、｛Run,Level,LastFlag｝が復号される。コードワードは、テーブルエントリに一致するビット列パターンのことであり、VLC Sizeは、コードワードのビット長である。ESCAPE値は、テーブル毎に固有の値で、例えばTable 177にお
いては、VLC Codeword＝７４となっている。
【００３４】
Table 177のＶＬＣコード割り当て｛Run,Level,LastFlag｝は、図６に示すようになさ
れる。図６は、符号化時のVLC Codewordの割り当て方法を示し、最も右側の枠の大きさ（幅）が発生確率の頻度を示す。符号化時の符号割当の方法について述べると、最初に情報源シンボルについて、その生起確率の大きいものから順に並べる。次に、確率が最も小さいシンボルと、２番目に小さいシンボルに対して一方に０、他方に１を割り当てる。この２つのシンボルをあわせて１つのシンボルとみなし、確率も和とし、再度、確率の大きいものから並べ直す。この処理をシンボル数が１になるまで繰り返す。各シンボルについて割り当てた値（０または１）を逆方向に読み出して、そのシンボルに対する符号とする。
【００３５】
Table 177がＶＣ１ Tables ４２で使用され、AC Run Levelデコーダ４３（Run Levelテーブル５１）において、Table 178:High Motion Intra Indexed Run and Level Table(Last=0)が使用される。Table 178によってRun,Level,LastFlagが求められる。
【００３６】
Escape mode 1において、Run,Level,LastFlagを求めるテーブルの例を図７に示す。上
述したTable 177およびTable 178に加えて、Delta Levelテーブル５３において、Table 180:High Motion Intra Delta Level Indexed Run and Level Table(Last=0)が使用される。このTable 180によってLevelが補正されたものがセレクタ５５に入力される。Escape Indexは、テーブル毎に規定された固有の値である。Escape Indexは、Escape mode を示すIndex 値である。このIndex 値の場合は、Escape mode 1 、Escape mode 2 、Escape mode 3 のいずれかであることを示す。なお、図示しないが、Escape mode 2において、Delta RunによるRunの補正を行うテーブルが規定され、Delta Runテーブル５４において、そのテーブルが使用される。
【００３７】
各modeのＡＣ係数を求める動作について説明する。
最初に、Not Escape modeにおけるＡＣ係数を求める動作について図８を参照して説明
する。
Not Escape modeでは、１組のＡＣ係数のRun,Level,LastFlagを得るためには、ACCOEF1（可変長）、LVLSIGN（固定長）の２つのシンタックスが必要となる。
１）コントローラ４４の動作
Tableを決定する信号を出力する。
２）バレルシフタ４１の動作
１サイクル（１クロック周期）目において、バレルシフタ４１が図８Ａに示すように、１つのシンタックスCodeword（ACCOEF1）を後段へと出力し、ＶＣ１ Tables４２から出力されたシンタックスのサイズがフィードバックされる。図８においては、例えば３２ビット長がバレルシフタ４１の出力ビット長であり、その中の有効データとしてACCOEF1（可
変長）、LVLSIGN（固定長）が含まれる。シンタックスのサイズは、Syntax Elementのビ
ット長である。シリアルビットストリーム上で、次にデコードすべきSyntax Elementの先頭位置にあわせるため、デコード済みのSyntax Elementのビット長分、シリアルビットストリームをバレルシフタ４１でシフトする。次のサイクルにおいて、図８Ｂに示すように、そのサイズ分シフトしたCodeword（LVLSIGN）を後段へと出力する。
３）ＶＣ１ Tables ４２の動作
バレルシフタ４１からの出力された値ACCOEF1をTable例えばTable177に入力してIndex
を得る。そのIndexを後段へと出力する。また、ACCOEF1のサイズをバレルシフタ４１へと出力する。次に、バレルシフタ４１から出力された値LVLSIGNからLevelのSignを得て、後段へと出力する。LVLSIGNが０なら＋となり、これが１なら−となる。また、LVLSIGNのサイズ（１ビット）をバレルシフタ４１へと出力する。
４）ＡＣ Run Level Decoder４３の動作
ＶＣ１ Tables４２から入力されたIndexをRun、Level Table例えばTable178に入力してRun、Levelを得る。また、IndexをStartIndexOfLastと比較してLast Flagを得る。StartIndexOfLastとは、各Tableに固有の値で、Indexがこの値を以上になるとLastFlagが１になる。ＶＣ１規格書のTable178、Table179を例にとると、StartIndexOfLast ＝119となる。ＶＣ１規格書のTable185、Table186を例にとると、StartIndexOfLast ＝ 99になる。すなわち、ＶＣ１規格書でTable名に(Last=1)と名前が付くTableの最初のIndexがStartIndexOfLastになる。その後、LevelはSignの値を考慮し、後段へRun,Level,LastFlagを出力する。
【００３８】
次に、Escape mode 1 におけるＡＣ係数を求める動作について図９を参照して説明する。
Escape mode 1では１組のＡＣ係数のRun,Level,LastFlagを得るためには、ACCOEF1、ESCMODE、ACCOEF2、LVLSIGNの４つのシンタックスが必要となる。
１）コントローラ４４の動作
Tableを決定する信号を出力する。
２）バレルシフタ４１の動作
Not Escape modeと同じような動作を４回繰り返す（図９Ａ〜図９Ｄ参照）。
３）ＶＣ１ Tables ４２の動作
バレルシフタ４１から出力された値ACCOEF1をTable例えば例えばTable177に入力すると、Escape Indexが得られる。これによりEscape modeであることが分かり、ACCOEF1のサイズをバレルシフタ４１へと出力する。次にバレルシフタ４１から出力された値ESCMODEか
ら、Escape mode 1であることが分かり、ESCMODEのサイズをバレルシフタ４１へ出力する。
次に、バレルシフタ４１からの出力された値ACCOEF2をTable例えばTable177に入力すると、Indexが得られる。そのIndexを後段へと出力する。この際に使用するTableはNot Escape modeの場合と同じTableである。また、ACCOEF2のサイズをバレルシフタ４１へと出力する。次に、バレルシフタ４１から出力されたLVLSIGNからLevelのSignを得て、後段へと出力する。LVLSIGNが０なら＋となり、これが１なら−となる。また、LVLSIGNのサイズ（１ビット）をバレルシフタ４１へと出力する。
４）ＡＣ Run Level Decoder４３の動作
ＶＣ１ Tables４２から入力されたIndexをRun、Level Table例えばTable178に入力してRun、Levelを得る。また、IndexをStartIndexOfLastと比較してLast Flagを得る。次にRunをDelta Level Table例えばTable180に入力するとLevelの補正値Delta Levelが得られ、Level + Delta Level によって補正されたLevel値が得られる。その後、LevelはSignの値を考慮し、後段へRun,Level,LastFlagを出力する。
【００３９】
次に、Escape mode 2 におけるＡＣ係数を求める動作について説明する。
上述したEscape mode 1における「１）コントローラ４４の動作」および「２）バレル
シフタ４１の動作」についてはEscape mode 2においても同様である。また、「３）ＶＣ
１ Tables ４２の動作」とほぼ同様の処理を行う。相違する点は、ESCMODEから、Escape
mode 2であることが分かることである。「４）ＡＣ Run Level Decoder４３の動作」とほぼ同様の処理がなされる。相違する点は、補正対象がLevelからRunになることである。LevelをDelta Run Tableに入力してRunの補正値DeltaRunが得られる。その後、Run ＋DeltaRun＋１によって補正されたRun値が得られる。その後、LevelはSignの値を考慮し、後段
へRun,Level,LastFlagを出力する。
【００４０】
Escape mode 3 の場合は、発生頻度が著しく低く、ＶＣ１対応のＶＬＤの高速化に与える影響が小さいので、この発明では、取り扱わない。しかし、この発明によるＶＣ１対応のＶＬＤの高速化と同様の手法によって、Escape mode 3の場合も高速化が可能となる。
【発明の開示】
【発明が解決しようとする課題】
【００４１】
上述した従来の可変長符号復号化の処理では、ＡＣ係数のRun,Level,LastFlagを求めるために、バレルシフタの動作がNot Escape modeでは、２サイクル（２クロック周期）を
必要とし、Escape mode 1、Escape mode 2では、４サイクル（４クロック周期）を必要とする。また、従来の可変長符号復号化の処理では、ＡＣ係数のRun,Level,LastFlagを求めるために、Not Escape modeでは、テーブル参照動作を２回行う必要があり、Escape mode 1、Escape mode 2では、テーブル参照動作を２回行う必要があった。その結果、ＶＬＤ
の動作が遅くなる問題があった。
【００４２】
したがって、この発明の目的は、これらの問題を改善し、高速動作が可能な可変長符号の復号化方法および復号化装置を提供することにある。
【課題を解決するための手段】
【００４３】
上述した課題を解決するために、この発明は、データの連続する数を示すランと、値を示すレベルとの組合せに対応して１個の符号が割り当てられる可変長符号化の復号化方法において、
入力ストリーム中に存在し、ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出ステップと、
可変長の符号が割り当てられる第１のモードと、固定長の符号が割り当てられる第２のモードとを判別するモード判別ステップと、
第１のモードの処理と、第２のモードの処理との内で、モード判別ステップで判定されたモードの処理を行う処理ステップと
からなり、
第１のモードの処理ステップにおいて、抽出ステップで抽出されたシンタックスをテーブルに入力して一度にランおよびレベルを得ることを特徴とする可変長符号化の復号化方法である。
【００４４】
この発明は、データの連続する数を示すランと、値を示すレベルとの組合せに対応して１個の符号が割り当てられる可変長符号化の復号化装置において、
入力ストリーム中に存在し、ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出手段と、
可変長の符号が割り当てられる第１のモードと、固定長の符号が割り当てられる第２のモードとを判別するモード判別手段と、
第１のモードの処理と、第２のモードの処理との内で、モード判別ステップで判定されたモードの処理を行う処理手段と
からなり、
第１のモードの処理手段において、抽出手段で抽出されたシンタックスをテーブルに入力して一度にランおよびレベルを得ることを特徴とする可変長符号化の復号化装置である。
【発明の効果】
【００４５】
この発明においては、可変長符号の復号化のために、ストリームからシンタックスを切り出して出力する可変長ビットシフトのシフトの回数と、テーブル参照動作の回数とを減少させることによって、可変長符号の復号化を高速とすることができる。その結果、復号時間を短縮化でき、消費電力を低減でき、また、低速のクロックで動作させても、性能の低下の割合をすくなくでき、さらに、再生時に倍速再生などの多彩な再生が可能となる。
【発明を実施するための最良の形態】
【００４６】
以下、図面を参照してこの発明の一実施の形態について説明する。この一実施の形態は、上述したＶＣ１フォーマットの復号化装置における可変長符号復号化部２３、２８に対してこの発明を適用した例である。但し、ＶＣ１フォーマット以外のフォーマットであっても、可変長符号の復号化を行う処理に対して、この発明を適用することができる。
【００４７】
図１０に示すように、入力ビットストリームがバレルシフタ６１に供給される。バレルシフタとは、本来、ビット幅ｎのデータをｍビットシフトするための回路構成のことを言うが、ここでは可変長シフタのことを指す。バレルシフタ６１は、６４ビット長のCodewordで、１つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックスを全て同時に後段へと出力する。Codewordの先頭は必ずACCOEF1からはじまるように制御する。
また、ＶＣ１ Tables６２から使用した複数のシンタックスの総サイズがフィードバック
され、その値を用いてバレルシフタの出力のシフト動作が制御される。
【００４８】
ＶＣ１ Tables６２内でＡＣ係数のRun,Level,LastFlagを求めるのに必要なテーブルが
集約されている。ＶＣ１ Tables６２に対して、バレルシフタ６１から、６４ビット長で
、１つのＡＣ係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックス（先頭は必ずACCOEF1)の全てが同時に入力される。図１１に示すように、ＶＣ１ Tables６２にはEscape検出部７１が設けられており、Escape検出部７１がNot Escape／Escape mode 1 ／Escape mode 2 ／Escape mode 3 をCodewordより判定する。判定結果に応じてセレクタ７
７を制御するモード信号Esc mode selが生成される。
【００４９】
Not Escape modeの場合は、入力されたCodewordの先頭がACCOEF1なので、そのままTableを参照し、Run,Level,LastFlagを求めることが可能である。一方、Escape modeの場合はそのままではTableを引くことができない。なぜならば、上述したように、Escape mode 1、Escape mode 2では、AC係数のRun、Level、LastFlagを得るためには、ACCOEF1、ESCMODE、ACCOEF2、LVLSIGNの４つのシンタックスを必要とし、この中で、ACCOEF1はEscape modeであることの判定に使用され、ESCMODEはどのEscape modeかの判定に使用され、ACCOEF2を用いてTableを引いているからである。そのため、Escape mode 1、Escape mode 2では
、ACCOEF1、ESCMODEのシンタックスを取り除く必要がある。取り除く処理については後述する。
【００５０】
コントローラ６３は、Run,Level,LastFlagを求める際に使用するテーブルを決定する信号Table selectを出力する。この信号は、ブロックレイヤより上位レイヤのシンタックスにより決定される。ブロックレイヤは、画像データを（８×８）に分割した階層である。
【００５１】
信号Table selectがＶＣ１ Index Table７７およびEscape Index Size Output部７２に供給される。Escape Index Size は、Escapeに割り当てられたVLC Codewordのビット長である。Escape Index Size Output部７２は、Table Select信号より、使用するTableのEscape Indexのサイズを決定する。Escape IndexのサイズはTableによって固有の値である。Table Select信号はブロックレイヤより上位レイヤのシンタックスにより決定されるので、Run,Level,LastFlagを求める以前に、使用するTableが決定され、Escape Indexのサイ
ズが分かる。
【００５２】
Escape IndexのサイズとCodewordとがEscape Mode 1部７３に入力される。Escape Mode 1部７３は、図１２Ａに示すように、Escape 1 Size Output部８１と加算器８２とCodewordセレクタ８３とから構成されている。Escape Mode 1部７３は、Escape Index Size Output部７２から出力されたEscape Indexのサイズと、シンタックスESCMODEのサイズ(Escape mode 1は１ビット固定長)を加算器８２によって足した値だけセレクタ８３においてCodewordの先頭からシフトし、シフト後の値を選択する。すなわち、ACCOEF1とESCMODEを取
り除く処理を行う。
【００５３】
Escape IndexのサイズとCodewordとがEscape Mode 2部７４に入力される。Escape Mode 2部７４は、図１２Ｂに示すように、Escape 2 Size Output部９１と加算器９２とCodewordセレクタ９３とから構成されている。Escape Mode 2部７４は、Escape Index Size Output部７２から出力されたEscape Indexのサイズと、シンタックスESCMODEのサイズ(Escape mode 2は２ビット固定長)を加算器９２によって足した値だけセレクタ９３においてCodewordの先頭からシフトし、シフト後の値を選択する。すなわち、ACCOEF1とESCMODEを取
り除く処理を行う。
【００５４】
Table Select信号とCodewordとがEscape Mode 3部７５に入力される。Escape mode 3の場合は、発生頻度が著しく低く、ＶＣ１に対応したＶＬＤの高速化に与える影響は小さいので、従来と同様に処理する。しかしながら、この発明と同様の手法で処理すれば、Escape mode 3の場合も高速化が可能となる。
【００５５】
Escape Detection７１においては、Escape Index Size Output部７２から出力されたEscape Indexのサイズ分Codewordの先頭からシフトし、シンタックスESCMODEから、どのEscape modeであるかを判別して、セレクタ７６に対してセレクト信号Esc mode selを出力する。
【００５６】
モードに応じてセレクタ７６によって選択された信号がＶＣ１ Index Table７７に入力される。ＶＣ１ Index Table７７は、１組のRun,Level,LastFlagを求めるためのテーブルを１つに集約したものである。例えばＶＣ１規格書に記載のHigh Motion Intra:Table177〜183を１つに集約した例を図１３に示す。このように、テーブルを集約したことによっ
て、Codewordから直接Run,Level,LastFlag,Delta Level,Delta Runを求めることができるようになる。
【００５７】
テーブルを集約できる理由はつぎの通りである。図５、図７から分かるように、ＶＣ１において、ＡＣ係数のRun,Level,LastFlagを求める際には、Codewordを用いてTableを引
きSize、Indexを得て、そのIndexを用いてTableを引きRun、Levelが得られる。さらに、Escape mode 1 、2の場合、求められたRun、Levelを用いてTableを引きDeltaLevel、DeltaRunが得られる。したがって、これらのTableが相互に関係をもっていることが分かり、１つに集約することができる。また、LastFlagも同じTableに集約する。図１４は、Table177〜183を１つに集約する場合のイメージである。すなわち、図１４は、VLC Codewordを復号する際にテーブルを最大３回引く（Escape modeの場合)必要があるところを各テーブルの関連性に着目してテーブルを一つに集約することによって、新しいテーブル（図１４では、左端のHigh Motion Intra Table、図１４の実体は、図１３のテーブル）を作成し、
ＶＬＣを復号する際にその新しいテーブルを１回引くのみで済むことを示している。テーブルを集約することによって、集約したテーブルの数だけ｛Run,Level,LastFlag｝を求める処理ステップ数を短縮することができる。
【００５８】
従来では、StartIndexOfLastとの比較により、LastFlagを求めていたが、このことは、例えば、図１３のIndex部分を見ると、StartIndexOfLast以降のIndexに対応する部分をLastFlag＝１とすることと同じである。したがって、同じTableに集約できることが分かる
。
【００５９】
図１３のテーブルに対してCodewordが入力されると、その結果として、Size、Run、Level、LastFlag、DeltaRun、DeltaLevelを得る。その後、Escape mode 1、Escape mode2の
場合はLevle、Runの補正を行い、Levelに対して符号を考慮する。Tableを引く際に使用したシンタックスの直後の１ビットがLVLSIGNシンタックスになっている(Escape mode 3以
外)ので符号がわかる。その結果、Run、Level、LastFlagを後段へ出力する。また、入力
されたSizeとTableを引いて得られたSizeを足し合わせ合計のサイズをバレルシフタへと
出力する。
【００６０】
この発明の一実施の形態の動作について説明する。コントローラ６３からTableを決定
する信号が出力されている状態で、バレルシフタから１つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックスが全て含まれた６４ビット長のCodewordが入力されたとする。この時、Table Select信号は、すでに決定されており、Escape Index SizeOutput部７２からEscape Index Sizeが出力されている。
【００６１】
入力されたCodewordは、NotEscape(そのままセレクタ７６に通す経路)、Escape Mode 1部７３、Escape Mode 2部７４、Escape Mode 3部７５、Escape検出部７１に入力され、これらのブロックによる処理が並行して行われる。Escape検出部７１により、後段への出力信号をセレクトするためのセレクト信号Escape mode selが形成される。セレクタ７６に
よって選択されたCodeword、SizeがＶＣ１ Index Table ７７に入力され、Run,Level,LastFlagが得られる。
【００６２】
図１５は、Not Escape modeにおけるＡＣ係数を求める動作を示す。Not Escape modeでは、１組のＡＣ係数のRun,Level,LastFlagを得るためには、ACCOEF1（可変長）、LVLSIGN（固定長）の２つのシンタックスが必要となる。
【００６３】
１サイクル（１クロック周期）目において、バレルシフタ６１が図１５Ａに示すように、４つのシンタックスCodeword（ACCOEF1、LVLSIGN、ACCOEF1、LVLSIGN）を後段へと出力し、ＶＣ１ Index Table ７７から出力された２つのシンタックスのサイズがフィードバ
ックされる。シリアルビットストリーム上で、次にデコードすべきSyntax Elementの先頭位置にあわせるため、デコード済みのSyntax Elementのビット長分、シリアルビットストリームをバレルシフタ６１でシフトする。次のサイクルにおいて、図１５Ｂに示すように、次にデコードすべきCodeword（ACCOEF1、LVLSIGN）を後段へと出力する。後段のＶＣ１ Index Table ７７では、Codewordが集約したテーブルに対して入力され、１回のテーブ
ルの参照動作でRun,Level,LastFlagが得られる。
【００６４】
次に、Escape mode 1 におけるＡＣ係数を求める動作について図１６を参照して説明する。Escape mode 1では１組のＡＣ係数のRun,Level,LastFlagを得るためには、ACCOEF1、ESCMODE、ACCOEF2、LVLSIGNの４つのシンタックスが必要となる。
【００６５】
上述したNot Escape modeと同様に、１サイクル（１クロック周期）目において、バレ
ルシフタ６１が図１６Ａに示すように、４つのシンタックスCodeword（ACCOEF1、LVLSIGN、ACCOEF1、LVLSIGN）を後段へと出力し、ＶＣ１ Index Table ７７から出力された４つ
のシンタックスのサイズがフィードバックされる。シリアルビットストリーム上で、次にデコードすべきSyntax Elementの先頭位置にあわせるため、デコード済みのSyntax Elementのビット長分、シリアルビットストリームをバレルシフタ６１でシフトする。次のサイクルにおいて、図１６Ｂに示すように、次にデコードすべきCodeword（ACCOEF1、LVLSIGN、ACCOEF1、LVLSIGN）を後段へと出力する。後段のＶＣ１ Index Table ７７では、Codewordが集約したテーブルに対して入力され、１回のテーブルの参照動作でRun,Level,LastFlagが得られる。
【００６６】
図示しないが、Escape mode 2 におけるＡＣ係数を求める動作も、上述したEscape mode 1 と同様である。Escape mode １では、補正対象がLevelであったが、Escape mode １
では、補正対象がRunになる。
【００６７】
上述したように、この発明の一実施の形態では、ＡＣ係数のRun,Level,LastFlagを求めるために必要なバレルシフタの動作が１サイクルのみで可能となる。また、ＡＣ係数のRun,Level,LastFlagを求めるために、Tableを１回引くのみで済む。その結果、高速動作が
可能である
【００６８】
図１７のフローチャートを参照してこの発明の一実施の形態の処理の流れについて説明する。図１７において、矩形の処理モジュールの表記として２種類使用されている。短辺が１本の線の矩形の処理モジュールは、演算あるいはテーブル参照処理を意味する。この処理は、処理時間が短ければ、１クロック時間内に同一タイプ処理モジュールの複数処理が可能である。短辺が２本の線の矩形の処理モジュールは、ビットストリームからシンタックス要素を抽出する（抜き取る）ためにバレルシフタが動作する処理を意味する。この処理は、次の同一タイプの処理モジュールまで、１クロック時間を要する。抜き取るシンタックス要素は、[ ]内に表記されている。
【００６９】
ステップＳＴ１において、ビットストリームからAc1Indexが取得される。ステップＳＴ２において、Ac1Index＝Escapeか否かが判定される。Escapeでない場合がNot Escape modeである。処理がステップＳＴ３に移り、テーブルを１回参照することによって、Run,Level,LastFlagが取得される。ステップＳＴ４において、ストリームのシンタックスからLevelの符号が取得される。ステップＳＴ５において、Levelに符号が付加され、処理が完了
する。
【００７０】
ステップＳＴ２において、Escape modeと判定されると、ステップＳＴ６において、ビ
ットストリームからEscModeが取得される。ステップＳＴ７において、EscMode＝３か否かが判定される。そうでない場合には、ステップＳＴ８において、ビットストリームからAc2Indexが取得される。ステップＳＴ９において、テーブルを１回参照することによって、Run,Level,LastFlagが取得される。
【００７１】
ステップＳＴ１０において、EscMode＝２か否かが判定される。そうでない場合は、Escape mode 1 であるので、ステップＳＴ１１において、Levelが修正される。そして、ステップＳＴ４（Levelの符号の取得）に処理が移り、ステップＳＴ５においてLevelに符号が付加されて処理が完了する。
【００７２】
ステップＳＴ１０において、EscMode＝２と判定される場合は、Escape mode 2 である
ので、ステップＳＴ１２において、Runが修正される。そして、ステップＳＴ４（Levelの符号の取得）に処理が移り、ステップＳＴ５においてLevelに符号が付加されて処理が完
了する。
【００７３】
ステップＳＴ７において、EscMode＝３と判定されると、ステップＳＴ１３において、
ストリームからLastが取得される。ステップＳＴ１４において、Slice内で最初のEscape
mode 3 か否かが判定される。最初のEscape mode 3と判定されると、ステップＳＴ１５において、LevelSizeがストリームから取得され、ステップＳＴ１６において、RunSizeがストリームから取得される。
【００７４】
ステップＳＴ１７において、Runがストリームから取得され、ステップＳＴ１８におい
て、Levelの符号がストリームから取得され、ステップＳＴ１９において、Levelがストリームから取得される。そして、ステップＳＴ５においてLevelに符号が付加されて処理が
完了する。
【００７５】
図１８は、図１１に示すＶＣ１ Tables６２の変形例を示す。セレクタ７６を出力段に
配置し、セレクタ７６の前段にＶＣ１ Index Tableを配置する。この構成は、Escape検出部７１の検出処理が遅れる場合に適している。また、それぞれがRun,Level,LastFlagを求めるTableを備えるNot Escape Mode部１０１、Escape Mode 1部１０２、Escape Mode 2部１０３が設けられる。
【００７６】
図１９は、図１０に示す構成の変形例を示す。Run,Level,LastFlagを求めるTable６２
ａと、Escape Mode 1およびEscape Mode 2におけるRun、Levelの補正用テーブル６２ｂとを別々に設けた構成である。コントローラ６３からの信号Table select信号ガテーブル６２ａおよび６２ｂに対して供給される。図１９の構成では、Escape Mode 1およびEscape
Mode 2では、２サイクルの処理が必要となるが、DeltaLevel TableおよびDeltaRun Tableを集約しないので、回路規模を小さくできる。
【００７７】
さらに、図示を省略するが、図１８に示すセレクタ７６の前段にＶＣ１ Index Tableを配置する構成と、図１９に示すRun、Levelの補正用テーブル６２ｂを設ける構成とを組み合わせることも可能である。
【００７８】
以上、この発明の一実施の形態について具体的に説明したが、この発明は、上述した一実施の形態に限定されるものではなく、この発明の技術的思想に基づく各種の変形が可能である。例えばこの発明は、ＶＣ１フォーマットに限らず、可変長符号の復号化に対して適用できる。
【図面の簡単な説明】
【００７９】
【図１】この発明を適用することができる符号化装置の一例のブロック図である。
【図２】この発明を適用することができる復号化装置の一例のブロック図である。
【図３】従来の可変長符号復号装置の構成例を示すブロック図である。
【図４】図３の構成の一部のより詳細なブロック図である。
【図５】ＶＬＣテーブルの一例を説明するための略線図である。
【図６】ＶＬＣテーブルの一例の符号割当を説明するための略線図である。
【図７】ＶＬＣテーブルの他の例を説明するための略線図である。
【図８】従来の可変長符号復号装置の動作の一例を説明するための略線図である。
【図９】従来の可変長符号復号装置の動作の他の例を説明するための略線図である。
【図１０】この発明による可変長符号復号装置の一実施の形態を示すブロック図である。
【図１１】図１０の構成の一部のより詳細なブロック図である。
【図１２】図１１の構成の一部のより詳細なブロック図である。
【図１３】この発明の一実施の形態におけるＶＬＣテーブルの一例を説明するための略線図である。
【図１４】この発明の一実施の形態におけるＶＬＣテーブルの集約を概念的に説明するための略線図である。
【図１５】この発明の一実施の動作の一例を説明するための略線図である。
【図１６】この発明の一実施の動作の他の例を説明するための略線図である。
【図１７】この発明の一実施の動作を説明するためのフローチャートである。
【図１８】この発明の変形例の説明に用いるブロック図である。
【図１９】この発明の変形例の説明に用いるブロック図である。
【符号の説明】
【００８０】
１  イントラ予測符号化部
２  インター予測符号化部
３  直交変換部
４  画面内予測符号化部
２１  イントラ予測復号化部
２２  インター予測復号化部
２３，２８  可変長符号復号化部
６１  バレルシフタ
６２  ＶＣ１テーブル
６３  コントローラ
７１  Escape検出部
７６  セレクタ
７７  ＶＣ１Index Table
【図１】
2008048235.tif 000003
【図２】
2008048235.tif 000004
【図３】
2008048235.tif 000005
【図４】
2008048235.tif 000006
【図５】
2008048235.tif 000007
【図６】
2008048235.tif 000008
【図７】
2008048235.tif 000009
【図８】
2008048235.tif 000010
【図９】
2008048235.tif 000011
【図１０】
2008048235.tif 000012
【図１１】
2008048235.tif 000013
【図１２】
2008048235.tif 000014
【図１３】
2008048235.tif 000015
【図１４】
2008048235.tif 000016
【図１５】
2008048235.tif 000017
【図１６】
2008048235.tif 000018
【図１７】
2008048235.tif 000019
【図１８】
2008048235.tif 000020
【図１９】
2008048235.tif 000021