JP2008048235A - 可変長符号の復号化方法および復号化装置 - Google Patents

可変長符号の復号化方法および復号化装置 Download PDF

Info

Publication number
JP2008048235A
JP2008048235A JP2006222925A JP2006222925A JP2008048235A JP 2008048235 A JP2008048235 A JP 2008048235A JP 2006222925 A JP2006222925 A JP 2006222925A JP 2006222925 A JP2006222925 A JP 2006222925A JP 2008048235 A JP2008048235 A JP 2008048235A
Authority
JP
Japan
Prior art keywords
level
run
mode
escape
lastflag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006222925A
Other languages
English (en)
Inventor
Masahiko Saotome
晶彦 早乙女
Tetsuo Sumida
哲夫 隅田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006222925A priority Critical patent/JP2008048235A/ja
Publication of JP2008048235A publication Critical patent/JP2008048235A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】可変長符号の復号処理の高速化を図る。
【解決手段】バレルシフタ61によって、64ビット長のCodewordとして、1つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックスの全てが同時に後段へと出力される。VC1 Tables62から使用した複数のシンタックスの総サイズがフィード
バックされ、その値を用いてバレルシフタ61の出力のシフト動作が制御される。VC1 Tables62内でAC係数のRun,Level,LastFlagを求めるのに必要なテーブルが集約され
ている。コントローラ63は、Run,Level,LastFlagを求める際に使用するテーブルを決定する信号Table selectを出力する。集約されたテーブルを1回参照することによって、AC係数に対応したRun,Level,LastFlagを求めることができる。
【選択図】図10

Description

この発明は、離散コサイン変換またはカルーネン・レーベ変換等の直交変換によって画像情報を圧縮する画像符号化方法において、AC係数データの伝送データ量の圧縮に適用される可変長符号の復号化方法および復号化装置に関する。
近年、画像情報をディジタルとして取り扱い、画像情報特有の冗長性を利用して、離散コサイン変換等の直交変換と動き補償により圧縮するMPEGなどの方式に準拠した画像情報符号化装置や復号化装置が、放送局などの情報配信、および一般家庭における情報受信の双方において普及しつつある。
特に、MPEG2(ISO(International Organization for Standardization)/IEC(International Electrotechnical Commition)13818−2)は、汎用画像符号化方式として定義されている。またMPEG2は、飛び越し走査画像および順次走査画像の双方、並びに標準解像度画像および高精細画像を網羅する標準で、現在、プロフェッショナル用途およびコンシューマー用途の広範なアプリケーションに広く用いられている。
MPEG2は、主として放送用に適合する高画質符号化を対象としていたが、MPEG1より小さい符号量(低ビットレート)、つまり、より高い圧縮率の符号化方式には対応していなかった。携帯端末の普及により、今後そのような符号化方式のニーズは高まると思われ、これに対応してMPEG4符号化方式の標準化が行われた。画像符号化方式に関しては、1998年12月にISO/IEC14496−2という規格が国際標準として承認された。
さらに、近年、当初テレビ会議用の画像符号化を目的として策定されたH. 26L(ITU(International Telecommunication Union )−T Q6/16 VCEG)という標準の規格化が進んでいる。H.26Lは、MPEG2やMPEG4といった従来の符号化方式に比べ、その符号化、復号化により多くの演算量が要求されるものの、より高い符号化効率が実現されることが知られている。また、現在、MPEG4の活動の一環として、このH.26Lをベースに、H.26Lではサポートされない機能も取り入れ、より高い符号化効率を実現する標準化がJointModel of Enhanced−Compression Video Codingとして行われ、2003年3月には、H.264/AVC(Advanced Video Coding )という規格が国際標準として認められた。非特許文献1には、この規格に基づく処理の内容が記載されている。
「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
さらに、2003年9月にマイクロソフトがSMPTE(Society of Motion Picture and Television Engineers)に対してWMV9にインターレス対応のための拡張を追加したものを提出し、2005年10月にSMPTEでの規格化作業が終了し、SMPTE 421Mとして発表された。この規格は、VC1フォーマットと称される。VC1フォーマットは、H.264/AVCと共通点と相違点を有しており、二つの方式の比較については、例えば下記の非特許文献2に記載されている。
日経エレクトロニクス2004年3月29日号,131−136頁,および日経エレクトロニクス2004年4月12日号,115−120頁,「ベールを脱ぐWMV9 H.264とはここが違う」
図1および図2は、非特許文献2に記載されているVC1フォーマットの符号化および復号化の流れを示すブロック図である。入力画像データが分割され、イントラ(フレーム内)予測符号化部1およびインター(フレーム間)予測符号化部2にそれぞれ入力される。イントラ予測符号化部1が直交変換部3、画面内予測符号化部4および量子化部5からなり、量子化部5からの量子化された係数データが可変長符号符号化部6に供給される。可変長符号符号化部6から可変長符号化された符号化データが出力される。係数データとしては、2次元周波数が0でないAC係数と2次元周波数が0のDC係数とがある。
インター予測符号化部2は、入力画像データと局部復号化画像データとの差分を得るための加算器7、差分を直交変換する直交変換部8および直交変換部8からの係数データを量子化する量子化部9とからなる。量子化部9からの量子化された係数データが可変長符号符号化部10に供給される。可変長符号符号化部10から可変長符号化された符号化データが出力される。
局部復号化のために、量子化部5および9のそれぞれの出力が供給される逆量子化部11、直交変換の逆の変換を行う逆変換部12、動き補償部13、動き補償部13の出力と逆変換部12の出力を加算する加算器14、加算器14の出力が供給され、ブロック境界を平滑化するためのデブロックフィルタ15、および入力画像データの動きを検出する動き予測部16が設けられている。動き予測部16で形成された動きベクトルが動き補償部13に供給されると共に、予測符号化され、可変長符号符号化部10に対して供給される。
入力画像信号は、イントラ予測で符号化されるものと、インター予測で符号化されるものとに分離され、それぞれイントラ予測符号化部1およびインター予測符号化部2に対して供給される。イントラ予測符号化部1では、単一のフレームを用いて符号化が行われる。イントラ予測符号化部1では、入力画像の画素値が直交変換部3に入力され、ここで離散コサイン変換、カルーネン・レーベ変換等の直交変換が施される。直交変換部3の出力(変換係数)が画面内予測符号化部4に供給され、ブロック間の相関を利用して係数データが画面内予測符号化部4によって予測符号化される。画面内予測符号化で符号化された係数データ(差分値)が量子化部5に提供され、量子化部5において量子化処理が施される。量子化部5からの量子化された変換係数が可変長符号符号化部6に供給されて可変長符号化が施される。
インター予測符号化部2では、複数のフレームの画像情報を用いて入力画像信号が符号化される。ローカル復号化によって動き補償部13から得られた参照画像と入力画像との差分が加算器7の出力に得られる。動き補償部13では、入力フレームと異なる他のフレームの画像情報の動き補償処理が行われ、参照画像情報が生成される。動き補償のために動き予測部16からの動きベクトルが使用され、また、動きベクトル情報が可変長符号符号化部10に出力され、動きベクトル情報が可変長符号化され、画像圧縮情報のヘッダ部に挿入される。その他の処理はイントラ符号化に関するものと同様である。
次に、図2のブロック図を参照して、画像情報復号化装置について説明する。受け取った符号化データがイントラ予測で復号されるものと、インター予測で復号されるものとに分けられ、イントラ予測復号化部21およびインター予測復号化部22にそれぞれ供給される。
イントラ予測復号化部21は、可変長符号復号化部23と、画面内予測符号復号化部24と、量子化の逆の処理を行う逆量子化部25と、直交変換の逆の変換を行う逆変換部26と、ブロック歪みの軽減のためのデブロッキング・フィルタ27とからなる。デブロッキング・フィルタ27の出力に復号画像が得られる。
インター予測復号化部22は、可変長符号復号化部28と、量子化の逆の処理を行う逆量子化部29と、直交変換の逆の変換を行う逆変換部30と、加算器31と、ブロック境界を平滑化するためのデブロッキング・フィルタ32と、動きベクトル復号化部33と、復号された動きベクトルによって動き補償を行う動き補償部34とからなる。動き補償部34において、デブロッキング・フィルタ32から得られる復号画像が動き補償され、復号画像が加算器31に供給される。加算器31において、逆変換部30からの差分信号と復号画像信号とが加算される。
VC1フォーマットは、MPEGなどと異なる処理がなされている。非特許文献2によれば、主なものは、以下の通りである。
1.適応型ブロック・サイズによる直交変換
(複数のサイズの直交変換ブロックを使用して直交変換を行う。)
2.16ビット処理を前提とした直交変換セット
(16ビットの固定小数点演算を使用して逆変換を実装し、復号化時の演算量を抑える。)
3.動き補償
(探索ブロックと、動きベクトルの検出の画素単位と、予測値生成に使用するフィルタの種類との3つのパラメータの組合せによる4つの動き補償のモードを規定する。)
4.量子化と逆量子化
(2つの量子化の方法が切り換えられる。)
5.デブロッキング・フィルタ
(ブロック境界に不連続が生じるのを防止するために、H.264/AVCと同様にデブロッキング・フィルタを導入して、ブロック境界を平滑化している。)
6.2つのインタレース符号化方式
(インタレース符号化方式としてInterlaced fieldピクチャ符号化方式と、Interlaced frameピクチャ符号化方式との2つの方式が可能とされている。)
7.Bピクチャの符号化方式
(参照するピクチャに対するBピクチャの位置関係を明示して符号化する等の特徴を有する。)
この発明は、上述したVC1フォーマットの復号化装置における可変長符号復号化部23,28に適用される。AC係数(AC coefficient)は、DCT等による変換後の周波数成分が0でない係数のことである。量子化AC係数は、ラン(Run)-レベル(Level)方法に
よって符号化されている。Runは、ジグザクスキャン後の1次元AC係数列における連続
する0の数である。連続する0に続く非0の値がLevelである。ブロックにおける最後の
非0の値かどうかを識別するフラグがLastFlagである。
一例について述べると、{Run,Level,LastFlag}で記述する場合、下記のAC係数列を以下のように表す。
AC係数列: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を得る処理と、これらを使用してAC係数の値を復号する処理とからなる。この発明は、入力ビットストリームの復号処理に対して適用される。入力ビットストリームがVC1ストリームである。
図3は、従来の可変長符号復号化部(ビットストリーム復号化部)の一例の構成を示す。入力ビットストリームがバレルシフタ41に供給される。バレルシフタとは、本来、ビット幅nのデータをmビットシフトするための効率的な回路構成のことだが、ここでは可変長シフタのことを指す。
バレルシフタ41は、ビットストリームからシンタックスを取り出して各シンタックスをコードワード(VLC Codeword)として後段のVC1Tables 42に供給する。シンタッ
クス(Syntax Element)は、VC1ビットストリームを構成する要素である。AC係数のSyntax Elementは、(ACCOEF1 、ESCMODE 、ACCOEF2 、ESCLR 、ESCLVLSZ、ESCRUNSZ、ESCRUN、LVLSGN2 、ESCLVL、LVLSIGN )である。Escape mode 等により、存在したりしなかったりする。
また、コードワードは、VLC(Variable Length Coding) テーブルエントリに一致す
るビット列パターンのことである。VLC Size(VLC Codeword Size )は、コードワードのビット長のことである。AC係数の場合、コードワードは、VLCテーブルで表現される{Run,Level,LastFlag}またはEscapeを一意に特定可能なビット列である。
VC1 Tables 42は、バレルシフタ41からのコードワードの値をテーブルによって変換し、後段のAC Run Levelデコーダ43に対して変換された値(Index,VLC Size)を出力する。VC1 Tables42で使用されるテーブルは、VC1規格書では、Table177,184,191,198,205,212,219,226として記載されている。
AC Run Levelデコーダ43は、VC1 Tables 42から入力された値{Run,Level,LastFlag}を使用してAC係数のAC係数列(Run,Level,LastFlag)を求める。AC Run Levelデコーダ43で使用するテーブルは、VC1規格書では、Table178〜183,185〜190,192〜197,199〜204,206〜211,220〜225,227〜232として記載されている。
VC1 Tables 42およびAC Run Levelデコーダ43がコントローラ44によって制御される。コントローラ44は、Run,Level,LastFlagを求める際に使用するテーブルを指示指示する信号を出力する。指示信号は、ブロックレイヤのより上位のレイヤのシンタックスによって決定される。
図4は、AC Run Levelデコーダ43の一例の構成を示す。AC Run Levelデコーダ43は、Run Levelテーブル51と、フラグ生成器52と、Delta Levelテーブル53と、Delta
Runテーブル54と、セレクタ55と、Sign付加回路56とから構成されている。Run Levelテーブル51は、Indexが入力され、RunおよびLevelを出力する。フラグ生成器52は
、LastFlagを生成する。実際にはIndex 値とStartIndexOfLastとの比較器である。Index
の並びはLastFlagでソーティングしてあり、LastFlag=1の閾値がStartIndexOfLastである。つまり、index≧StartIndexOfLast ならば、LastFlag=1となる。
Delta Levelは、Level の補正値である。Delta Runは、Run の補正値である。{Run,Level,LastFlag}で表されるLevel値は、1以上の整数であり、当該非ゼロ係数の正負の符
号は別に1ビットのSyntax Element(LVLSIGN or LVLSGN2)にて表現される。
一般的にハフマン符号の符号割り当てにおいては、出現確率の低いシンボルには、長い符号を割り当て、データの平均符号長を最小にするようになされている。但し、出現確率の低いシンボルの場合では、逆に符号長が長くなるために、固定長符号で符号割当がなされる。VC1では、AC係数を求めるためのRun,Level,LastFlagの求め方は、Not Escape mode、Escape mode 1、Escape mode 2、Escape mode 3の4種類存在する。固定長符号を割り当てるモードが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 3である。これらのEscape mode以外がNot Escape modeである。 Escape mode 3 のときのAC係数のSyntax Element(ESCRUN、ESCLVL、ESCLR )から復号された値(ビットサイズ)を用いてビットストリーム中から直接ビットサイ
ズ分ビット列を取り出し、{Run,Level,LastFlag}とする処理であり、Run3,Level3,LastFlag3が使用される。
セレクタ55は、4種類のmodeに対応するTable Select信号(図ではTable selと表記
する )によって使用するテーブルセットを選択する。Y(輝度)ブロックと、CbCr
(色差)ブロックで独立したテーブルセットが使用される。Table Select信号はピクチャーレイヤーパラメータ(PQINDEX 、TRANSACFRM、TRANSACFRM2 )から生成される。
図5を参照して、{Run,Level,LastFlag}を導出するVLCテーブルとEscape modeに
ついて説明する。Table 177:High Motion Intra VLC Tableについての数値表記とバイナ
リ表記とを示す。このテーブルは、IndexとVLC CodewordとVLC Sizeとの関係を示してい
る。Indexは、AC係数のSyntax Element(ACCOEF1 or ACCOEF2)から復号されたIndex
値である。このIndex 値を経由して、{Run,Level,LastFlag}が復号される。コードワードは、テーブルエントリに一致するビット列パターンのことであり、VLC Sizeは、コードワードのビット長である。ESCAPE値は、テーブル毎に固有の値で、例えばTable 177にお
いては、VLC Codeword=74となっている。
Table 177のVLCコード割り当て{Run,Level,LastFlag}は、図6に示すようになさ
れる。図6は、符号化時のVLC Codewordの割り当て方法を示し、最も右側の枠の大きさ(幅)が発生確率の頻度を示す。符号化時の符号割当の方法について述べると、最初に情報源シンボルについて、その生起確率の大きいものから順に並べる。次に、確率が最も小さいシンボルと、2番目に小さいシンボルに対して一方に0、他方に1を割り当てる。この2つのシンボルをあわせて1つのシンボルとみなし、確率も和とし、再度、確率の大きいものから並べ直す。この処理をシンボル数が1になるまで繰り返す。各シンボルについて割り当てた値(0または1)を逆方向に読み出して、そのシンボルに対する符号とする。
Table 177がVC1 Tables 42で使用され、AC Run Levelデコーダ43(Run Levelテーブル51)において、Table 178:High Motion Intra Indexed Run and Level Table(Last=0)が使用される。Table 178によってRun,Level,LastFlagが求められる。
Escape mode 1において、Run,Level,LastFlagを求めるテーブルの例を図7に示す。上
述したTable 177およびTable 178に加えて、Delta Levelテーブル53において、Table 180:High Motion Intra Delta Level Indexed Run and Level Table(Last=0)が使用される。このTable 180によってLevelが補正されたものがセレクタ55に入力される。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テーブル54において、そのテーブルが使用される。
各modeのAC係数を求める動作について説明する。
最初に、Not Escape modeにおけるAC係数を求める動作について図8を参照して説明
する。
Not Escape modeでは、1組のAC係数のRun,Level,LastFlagを得るためには、ACCOEF1(可変長)、LVLSIGN(固定長)の2つのシンタックスが必要となる。
1)コントローラ44の動作
Tableを決定する信号を出力する。
2)バレルシフタ41の動作
1サイクル(1クロック周期)目において、バレルシフタ41が図8Aに示すように、1つのシンタックスCodeword(ACCOEF1)を後段へと出力し、VC1 Tables42から出力されたシンタックスのサイズがフィードバックされる。図8においては、例えば32ビット長がバレルシフタ41の出力ビット長であり、その中の有効データとしてACCOEF1(可
変長)、LVLSIGN(固定長)が含まれる。シンタックスのサイズは、Syntax Elementのビ
ット長である。シリアルビットストリーム上で、次にデコードすべきSyntax Elementの先頭位置にあわせるため、デコード済みのSyntax Elementのビット長分、シリアルビットストリームをバレルシフタ41でシフトする。次のサイクルにおいて、図8Bに示すように、そのサイズ分シフトしたCodeword(LVLSIGN)を後段へと出力する。
3)VC1 Tables 42の動作
バレルシフタ41からの出力された値ACCOEF1をTable例えばTable177に入力してIndex
を得る。そのIndexを後段へと出力する。また、ACCOEF1のサイズをバレルシフタ41へと出力する。次に、バレルシフタ41から出力された値LVLSIGNからLevelのSignを得て、後段へと出力する。LVLSIGNが0なら+となり、これが1なら−となる。また、LVLSIGNのサイズ(1ビット)をバレルシフタ41へと出力する。
4)AC Run Level Decoder43の動作
VC1 Tables42から入力されたIndexをRun、Level Table例えばTable178に入力してRun、Levelを得る。また、IndexをStartIndexOfLastと比較してLast Flagを得る。StartIndexOfLastとは、各Tableに固有の値で、Indexがこの値を以上になるとLastFlagが1になる。VC1規格書のTable178、Table179を例にとると、StartIndexOfLast =119となる。VC1規格書のTable185、Table186を例にとると、StartIndexOfLast = 99になる。すなわち、VC1規格書でTable名に(Last=1)と名前が付くTableの最初のIndexがStartIndexOfLastになる。その後、LevelはSignの値を考慮し、後段へRun,Level,LastFlagを出力する。
次に、Escape mode 1 におけるAC係数を求める動作について図9を参照して説明する。
Escape mode 1では1組のAC係数のRun,Level,LastFlagを得るためには、ACCOEF1、ESCMODE、ACCOEF2、LVLSIGNの4つのシンタックスが必要となる。
1)コントローラ44の動作
Tableを決定する信号を出力する。
2)バレルシフタ41の動作
Not Escape modeと同じような動作を4回繰り返す(図9A〜図9D参照)。
3)VC1 Tables 42の動作
バレルシフタ41から出力された値ACCOEF1をTable例えば例えばTable177に入力すると、Escape Indexが得られる。これによりEscape modeであることが分かり、ACCOEF1のサイズをバレルシフタ41へと出力する。次にバレルシフタ41から出力された値ESCMODEか
ら、Escape mode 1であることが分かり、ESCMODEのサイズをバレルシフタ41へ出力する。
次に、バレルシフタ41からの出力された値ACCOEF2をTable例えばTable177に入力すると、Indexが得られる。そのIndexを後段へと出力する。この際に使用するTableはNot Escape modeの場合と同じTableである。また、ACCOEF2のサイズをバレルシフタ41へと出力する。次に、バレルシフタ41から出力されたLVLSIGNからLevelのSignを得て、後段へと出力する。LVLSIGNが0なら+となり、これが1なら−となる。また、LVLSIGNのサイズ(1ビット)をバレルシフタ41へと出力する。
4)AC Run Level Decoder43の動作
VC1 Tables42から入力された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 におけるAC係数を求める動作について説明する。
上述したEscape mode 1における「1)コントローラ44の動作」および「2)バレル
シフタ41の動作」についてはEscape mode 2においても同様である。また、「3)VC
1 Tables 42の動作」とほぼ同様の処理を行う。相違する点は、ESCMODEから、Escape
mode 2であることが分かることである。「4)AC Run Level Decoder43の動作」とほぼ同様の処理がなされる。相違する点は、補正対象がLevelからRunになることである。LevelをDelta Run Tableに入力してRunの補正値DeltaRunが得られる。その後、Run +DeltaRun+1によって補正されたRun値が得られる。その後、LevelはSignの値を考慮し、後段
へRun,Level,LastFlagを出力する。
Escape mode 3 の場合は、発生頻度が著しく低く、VC1対応のVLDの高速化に与える影響が小さいので、この発明では、取り扱わない。しかし、この発明によるVC1対応のVLDの高速化と同様の手法によって、Escape mode 3の場合も高速化が可能となる。
上述した従来の可変長符号復号化の処理では、AC係数のRun,Level,LastFlagを求めるために、バレルシフタの動作がNot Escape modeでは、2サイクル(2クロック周期)を
必要とし、Escape mode 1、Escape mode 2では、4サイクル(4クロック周期)を必要とする。また、従来の可変長符号復号化の処理では、AC係数のRun,Level,LastFlagを求めるために、Not Escape modeでは、テーブル参照動作を2回行う必要があり、Escape mode 1、Escape mode 2では、テーブル参照動作を2回行う必要があった。その結果、VLD
の動作が遅くなる問題があった。
したがって、この発明の目的は、これらの問題を改善し、高速動作が可能な可変長符号の復号化方法および復号化装置を提供することにある。
上述した課題を解決するために、この発明は、データの連続する数を示すランと、値を示すレベルとの組合せに対応して1個の符号が割り当てられる可変長符号化の復号化方法において、
入力ストリーム中に存在し、ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出ステップと、
可変長の符号が割り当てられる第1のモードと、固定長の符号が割り当てられる第2のモードとを判別するモード判別ステップと、
第1のモードの処理と、第2のモードの処理との内で、モード判別ステップで判定されたモードの処理を行う処理ステップと
からなり、
第1のモードの処理ステップにおいて、抽出ステップで抽出されたシンタックスをテーブルに入力して一度にランおよびレベルを得ることを特徴とする可変長符号化の復号化方法である。
この発明は、データの連続する数を示すランと、値を示すレベルとの組合せに対応して1個の符号が割り当てられる可変長符号化の復号化装置において、
入力ストリーム中に存在し、ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出手段と、
可変長の符号が割り当てられる第1のモードと、固定長の符号が割り当てられる第2のモードとを判別するモード判別手段と、
第1のモードの処理と、第2のモードの処理との内で、モード判別ステップで判定されたモードの処理を行う処理手段と
からなり、
第1のモードの処理手段において、抽出手段で抽出されたシンタックスをテーブルに入力して一度にランおよびレベルを得ることを特徴とする可変長符号化の復号化装置である。
この発明においては、可変長符号の復号化のために、ストリームからシンタックスを切り出して出力する可変長ビットシフトのシフトの回数と、テーブル参照動作の回数とを減少させることによって、可変長符号の復号化を高速とすることができる。その結果、復号時間を短縮化でき、消費電力を低減でき、また、低速のクロックで動作させても、性能の低下の割合をすくなくでき、さらに、再生時に倍速再生などの多彩な再生が可能となる。
以下、図面を参照してこの発明の一実施の形態について説明する。この一実施の形態は、上述したVC1フォーマットの復号化装置における可変長符号復号化部23、28に対してこの発明を適用した例である。但し、VC1フォーマット以外のフォーマットであっても、可変長符号の復号化を行う処理に対して、この発明を適用することができる。
図10に示すように、入力ビットストリームがバレルシフタ61に供給される。バレルシフタとは、本来、ビット幅nのデータをmビットシフトするための回路構成のことを言うが、ここでは可変長シフタのことを指す。バレルシフタ61は、64ビット長のCodewordで、1つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックスを全て同時に後段へと出力する。Codewordの先頭は必ずACCOEF1からはじまるように制御する。
また、VC1 Tables62から使用した複数のシンタックスの総サイズがフィードバック
され、その値を用いてバレルシフタの出力のシフト動作が制御される。
VC1 Tables62内でAC係数のRun,Level,LastFlagを求めるのに必要なテーブルが
集約されている。VC1 Tables62に対して、バレルシフタ61から、64ビット長で
、1つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックス(先頭は必ずACCOEF1)の全てが同時に入力される。図11に示すように、VC1 Tables62にはEscape検出部71が設けられており、Escape検出部71がNot Escape/Escape mode 1 /Escape mode 2 /Escape mode 3 をCodewordより判定する。判定結果に応じてセレクタ7
7を制御するモード信号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の4つのシンタックスを必要とし、この中で、ACCOEF1はEscape modeであることの判定に使用され、ESCMODEはどのEscape modeかの判定に使用され、ACCOEF2を用いてTableを引いているからである。そのため、Escape mode 1、Escape mode 2では
、ACCOEF1、ESCMODEのシンタックスを取り除く必要がある。取り除く処理については後述する。
コントローラ63は、Run,Level,LastFlagを求める際に使用するテーブルを決定する信号Table selectを出力する。この信号は、ブロックレイヤより上位レイヤのシンタックスにより決定される。ブロックレイヤは、画像データを(8×8)に分割した階層である。
信号Table selectがVC1 Index Table77およびEscape Index Size Output部72に供給される。Escape Index Size は、Escapeに割り当てられたVLC Codewordのビット長である。Escape Index Size Output部72は、Table Select信号より、使用するTableのEscape Indexのサイズを決定する。Escape IndexのサイズはTableによって固有の値である。Table Select信号はブロックレイヤより上位レイヤのシンタックスにより決定されるので、Run,Level,LastFlagを求める以前に、使用するTableが決定され、Escape Indexのサイ
ズが分かる。
Escape IndexのサイズとCodewordとがEscape Mode 1部73に入力される。Escape Mode 1部73は、図12Aに示すように、Escape 1 Size Output部81と加算器82とCodewordセレクタ83とから構成されている。Escape Mode 1部73は、Escape Index Size Output部72から出力されたEscape Indexのサイズと、シンタックスESCMODEのサイズ(Escape mode 1は1ビット固定長)を加算器82によって足した値だけセレクタ83においてCodewordの先頭からシフトし、シフト後の値を選択する。すなわち、ACCOEF1とESCMODEを取
り除く処理を行う。
Escape IndexのサイズとCodewordとがEscape Mode 2部74に入力される。Escape Mode 2部74は、図12Bに示すように、Escape 2 Size Output部91と加算器92とCodewordセレクタ93とから構成されている。Escape Mode 2部74は、Escape Index Size Output部72から出力されたEscape Indexのサイズと、シンタックスESCMODEのサイズ(Escape mode 2は2ビット固定長)を加算器92によって足した値だけセレクタ93においてCodewordの先頭からシフトし、シフト後の値を選択する。すなわち、ACCOEF1とESCMODEを取
り除く処理を行う。
Table Select信号とCodewordとがEscape Mode 3部75に入力される。Escape mode 3の場合は、発生頻度が著しく低く、VC1に対応したVLDの高速化に与える影響は小さいので、従来と同様に処理する。しかしながら、この発明と同様の手法で処理すれば、Escape mode 3の場合も高速化が可能となる。
Escape Detection71においては、Escape Index Size Output部72から出力されたEscape Indexのサイズ分Codewordの先頭からシフトし、シンタックスESCMODEから、どのEscape modeであるかを判別して、セレクタ76に対してセレクト信号Esc mode selを出力する。
モードに応じてセレクタ76によって選択された信号がVC1 Index Table77に入力される。VC1 Index Table77は、1組のRun,Level,LastFlagを求めるためのテーブルを1つに集約したものである。例えばVC1規格書に記載のHigh Motion Intra:Table177〜183を1つに集約した例を図13に示す。このように、テーブルを集約したことによっ
て、Codewordから直接Run,Level,LastFlag,Delta Level,Delta Runを求めることができるようになる。
テーブルを集約できる理由はつぎの通りである。図5、図7から分かるように、VC1において、AC係数のRun,Level,LastFlagを求める際には、Codewordを用いてTableを引
きSize、Indexを得て、そのIndexを用いてTableを引きRun、Levelが得られる。さらに、Escape mode 1 、2の場合、求められたRun、Levelを用いてTableを引きDeltaLevel、DeltaRunが得られる。したがって、これらのTableが相互に関係をもっていることが分かり、1つに集約することができる。また、LastFlagも同じTableに集約する。図14は、Table177〜183を1つに集約する場合のイメージである。すなわち、図14は、VLC Codewordを復号する際にテーブルを最大3回引く(Escape modeの場合)必要があるところを各テーブルの関連性に着目してテーブルを一つに集約することによって、新しいテーブル(図14では、左端のHigh Motion Intra Table、図14の実体は、図13のテーブル)を作成し、
VLCを復号する際にその新しいテーブルを1回引くのみで済むことを示している。テーブルを集約することによって、集約したテーブルの数だけ{Run,Level,LastFlag}を求める処理ステップ数を短縮することができる。
従来では、StartIndexOfLastとの比較により、LastFlagを求めていたが、このことは、例えば、図13のIndex部分を見ると、StartIndexOfLast以降のIndexに対応する部分をLastFlag=1とすることと同じである。したがって、同じTableに集約できることが分かる
図13のテーブルに対してCodewordが入力されると、その結果として、Size、Run、Level、LastFlag、DeltaRun、DeltaLevelを得る。その後、Escape mode 1、Escape mode2の
場合はLevle、Runの補正を行い、Levelに対して符号を考慮する。Tableを引く際に使用したシンタックスの直後の1ビットがLVLSIGNシンタックスになっている(Escape mode 3以
外)ので符号がわかる。その結果、Run、Level、LastFlagを後段へ出力する。また、入力
されたSizeとTableを引いて得られたSizeを足し合わせ合計のサイズをバレルシフタへと
出力する。
この発明の一実施の形態の動作について説明する。コントローラ63からTableを決定
する信号が出力されている状態で、バレルシフタから1つのAC係数のRun,Level,LastFlagを求めるのに必要な複数のシンタックスが全て含まれた64ビット長のCodewordが入力されたとする。この時、Table Select信号は、すでに決定されており、Escape Index SizeOutput部72からEscape Index Sizeが出力されている。
入力されたCodewordは、NotEscape(そのままセレクタ76に通す経路)、Escape Mode 1部73、Escape Mode 2部74、Escape Mode 3部75、Escape検出部71に入力され、これらのブロックによる処理が並行して行われる。Escape検出部71により、後段への出力信号をセレクトするためのセレクト信号Escape mode selが形成される。セレクタ76に
よって選択されたCodeword、SizeがVC1 Index Table 77に入力され、Run,Level,LastFlagが得られる。
図15は、Not Escape modeにおけるAC係数を求める動作を示す。Not Escape modeでは、1組のAC係数のRun,Level,LastFlagを得るためには、ACCOEF1(可変長)、LVLSIGN(固定長)の2つのシンタックスが必要となる。
1サイクル(1クロック周期)目において、バレルシフタ61が図15Aに示すように、4つのシンタックスCodeword(ACCOEF1、LVLSIGN、ACCOEF1、LVLSIGN)を後段へと出力し、VC1 Index Table 77から出力された2つのシンタックスのサイズがフィードバ
ックされる。シリアルビットストリーム上で、次にデコードすべきSyntax Elementの先頭位置にあわせるため、デコード済みのSyntax Elementのビット長分、シリアルビットストリームをバレルシフタ61でシフトする。次のサイクルにおいて、図15Bに示すように、次にデコードすべきCodeword(ACCOEF1、LVLSIGN)を後段へと出力する。後段のVC1 Index Table 77では、Codewordが集約したテーブルに対して入力され、1回のテーブ
ルの参照動作でRun,Level,LastFlagが得られる。
次に、Escape mode 1 におけるAC係数を求める動作について図16を参照して説明する。Escape mode 1では1組のAC係数のRun,Level,LastFlagを得るためには、ACCOEF1、ESCMODE、ACCOEF2、LVLSIGNの4つのシンタックスが必要となる。
上述したNot Escape modeと同様に、1サイクル(1クロック周期)目において、バレ
ルシフタ61が図16Aに示すように、4つのシンタックスCodeword(ACCOEF1、LVLSIGN、ACCOEF1、LVLSIGN)を後段へと出力し、VC1 Index Table 77から出力された4つ
のシンタックスのサイズがフィードバックされる。シリアルビットストリーム上で、次にデコードすべきSyntax Elementの先頭位置にあわせるため、デコード済みのSyntax Elementのビット長分、シリアルビットストリームをバレルシフタ61でシフトする。次のサイクルにおいて、図16Bに示すように、次にデコードすべきCodeword(ACCOEF1、LVLSIGN、ACCOEF1、LVLSIGN)を後段へと出力する。後段のVC1 Index Table 77では、Codewordが集約したテーブルに対して入力され、1回のテーブルの参照動作でRun,Level,LastFlagが得られる。
図示しないが、Escape mode 2 におけるAC係数を求める動作も、上述したEscape mode 1 と同様である。Escape mode 1では、補正対象がLevelであったが、Escape mode 1
では、補正対象がRunになる。
上述したように、この発明の一実施の形態では、AC係数のRun,Level,LastFlagを求めるために必要なバレルシフタの動作が1サイクルのみで可能となる。また、AC係数のRun,Level,LastFlagを求めるために、Tableを1回引くのみで済む。その結果、高速動作が
可能である
図17のフローチャートを参照してこの発明の一実施の形態の処理の流れについて説明する。図17において、矩形の処理モジュールの表記として2種類使用されている。短辺が1本の線の矩形の処理モジュールは、演算あるいはテーブル参照処理を意味する。この処理は、処理時間が短ければ、1クロック時間内に同一タイプ処理モジュールの複数処理が可能である。短辺が2本の線の矩形の処理モジュールは、ビットストリームからシンタックス要素を抽出する(抜き取る)ためにバレルシフタが動作する処理を意味する。この処理は、次の同一タイプの処理モジュールまで、1クロック時間を要する。抜き取るシンタックス要素は、[ ]内に表記されている。
ステップST1において、ビットストリームからAc1Indexが取得される。ステップST2において、Ac1Index=Escapeか否かが判定される。Escapeでない場合がNot Escape modeである。処理がステップST3に移り、テーブルを1回参照することによって、Run,Level,LastFlagが取得される。ステップST4において、ストリームのシンタックスからLevelの符号が取得される。ステップST5において、Levelに符号が付加され、処理が完了
する。
ステップST2において、Escape modeと判定されると、ステップST6において、ビ
ットストリームからEscModeが取得される。ステップST7において、EscMode=3か否かが判定される。そうでない場合には、ステップST8において、ビットストリームからAc2Indexが取得される。ステップST9において、テーブルを1回参照することによって、Run,Level,LastFlagが取得される。
ステップST10において、EscMode=2か否かが判定される。そうでない場合は、Escape mode 1 であるので、ステップST11において、Levelが修正される。そして、ステップST4(Levelの符号の取得)に処理が移り、ステップST5においてLevelに符号が付加されて処理が完了する。
ステップST10において、EscMode=2と判定される場合は、Escape mode 2 である
ので、ステップST12において、Runが修正される。そして、ステップST4(Levelの符号の取得)に処理が移り、ステップST5においてLevelに符号が付加されて処理が完
了する。
ステップST7において、EscMode=3と判定されると、ステップST13において、
ストリームからLastが取得される。ステップST14において、Slice内で最初のEscape
mode 3 か否かが判定される。最初のEscape mode 3と判定されると、ステップST15において、LevelSizeがストリームから取得され、ステップST16において、RunSizeがストリームから取得される。
ステップST17において、Runがストリームから取得され、ステップST18におい
て、Levelの符号がストリームから取得され、ステップST19において、Levelがストリームから取得される。そして、ステップST5においてLevelに符号が付加されて処理が
完了する。
図18は、図11に示すVC1 Tables62の変形例を示す。セレクタ76を出力段に
配置し、セレクタ76の前段にVC1 Index Tableを配置する。この構成は、Escape検出部71の検出処理が遅れる場合に適している。また、それぞれがRun,Level,LastFlagを求めるTableを備えるNot Escape Mode部101、Escape Mode 1部102、Escape Mode 2部103が設けられる。
図19は、図10に示す構成の変形例を示す。Run,Level,LastFlagを求めるTable62
aと、Escape Mode 1およびEscape Mode 2におけるRun、Levelの補正用テーブル62bとを別々に設けた構成である。コントローラ63からの信号Table select信号ガテーブル62aおよび62bに対して供給される。図19の構成では、Escape Mode 1およびEscape
Mode 2では、2サイクルの処理が必要となるが、DeltaLevel TableおよびDeltaRun Tableを集約しないので、回路規模を小さくできる。
さらに、図示を省略するが、図18に示すセレクタ76の前段にVC1 Index Tableを配置する構成と、図19に示すRun、Levelの補正用テーブル62bを設ける構成とを組み合わせることも可能である。
以上、この発明の一実施の形態について具体的に説明したが、この発明は、上述した一実施の形態に限定されるものではなく、この発明の技術的思想に基づく各種の変形が可能である。例えばこの発明は、VC1フォーマットに限らず、可変長符号の復号化に対して適用できる。
この発明を適用することができる符号化装置の一例のブロック図である。 この発明を適用することができる復号化装置の一例のブロック図である。 従来の可変長符号復号装置の構成例を示すブロック図である。 図3の構成の一部のより詳細なブロック図である。 VLCテーブルの一例を説明するための略線図である。 VLCテーブルの一例の符号割当を説明するための略線図である。 VLCテーブルの他の例を説明するための略線図である。 従来の可変長符号復号装置の動作の一例を説明するための略線図である。 従来の可変長符号復号装置の動作の他の例を説明するための略線図である。 この発明による可変長符号復号装置の一実施の形態を示すブロック図である。 図10の構成の一部のより詳細なブロック図である。 図11の構成の一部のより詳細なブロック図である。 この発明の一実施の形態におけるVLCテーブルの一例を説明するための略線図である。 この発明の一実施の形態におけるVLCテーブルの集約を概念的に説明するための略線図である。 この発明の一実施の動作の一例を説明するための略線図である。 この発明の一実施の動作の他の例を説明するための略線図である。 この発明の一実施の動作を説明するためのフローチャートである。 この発明の変形例の説明に用いるブロック図である。 この発明の変形例の説明に用いるブロック図である。
符号の説明
1 イントラ予測符号化部
2 インター予測符号化部
3 直交変換部
4 画面内予測符号化部
21 イントラ予測復号化部
22 インター予測復号化部
23,28 可変長符号復号化部
61 バレルシフタ
62 VC1テーブル
63 コントローラ
71 Escape検出部
76 セレクタ
77 VC1Index Table

Claims (4)

  1. データの連続する数を示すランと、値を示すレベルとの組合せに対応して1個の符号が割り当てられる可変長符号化の復号化方法において、
    入力ストリーム中に存在し、上記ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出ステップと、
    可変長の符号が割り当てられる第1のモードと、固定長の符号が割り当てられる第2のモードとを判別するモード判別ステップと、
    上記第1のモードの処理と、上記第2のモードの処理との内で、上記モード判別ステップで判定されたモードの処理を行う処理ステップと
    からなり、
    上記第1のモードの処理ステップにおいて、上記抽出ステップで抽出されたシンタックスをテーブルに入力して一度に上記ランおよびレベルを得ることを特徴とする可変長符号化の復号化方法。
  2. さらに、上記第2のモードとして、上記レベルが修正される第3のモードと、上記ランが修正される第4のモードと、上記レベルおよびランの修正がされない第5のモードとからなり、
    上記第3および第4のモードにおいても、上記抽出ステップで抽出されたシンタックスをテーブルに入力して一度に修正された上記ランおよび修正された上記レベルを得ることを特徴とする請求項1記載の可変長符号化の復号化方法。
  3. 上記テーブルが上記第1のモードで使用される第1のテーブルと、上記第3および第4のモードで使用される第2のテーブルとに分割される請求項1記載の可変長符号化の復号化方法。
  4. データの連続する数を示すランと、値を示すレベルとの組合せに対応して1個の符号が割り当てられる可変長符号化の復号化装置において、
    入力ストリーム中に存在し、上記ランおよびレベルの組合せを求めるために必要とされる全てのシンタックスを同時に後段に出力するシンタックス抽出手段と、
    可変長の符号が割り当てられる第1のモードと、固定長の符号が割り当てられる第2のモードとを判別するモード判別手段と、
    上記第1のモードの処理と、上記第2のモードの処理との内で、上記モード判別ステップで判定されたモードの処理を行う処理手段と
    からなり、
    上記第1のモードの処理手段において、上記抽出手段で抽出されたシンタックスをテーブルに入力して一度に上記ランおよびレベルを得ることを特徴とする可変長符号化の復号化装置。
JP2006222925A 2006-08-18 2006-08-18 可変長符号の復号化方法および復号化装置 Pending JP2008048235A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006222925A JP2008048235A (ja) 2006-08-18 2006-08-18 可変長符号の復号化方法および復号化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006222925A JP2008048235A (ja) 2006-08-18 2006-08-18 可変長符号の復号化方法および復号化装置

Publications (1)

Publication Number Publication Date
JP2008048235A true JP2008048235A (ja) 2008-02-28

Family

ID=39181531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006222925A Pending JP2008048235A (ja) 2006-08-18 2006-08-18 可変長符号の復号化方法および復号化装置

Country Status (1)

Country Link
JP (1) JP2008048235A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113411606A (zh) * 2019-06-21 2021-09-17 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000316154A (ja) * 1996-11-06 2000-11-14 Matsushita Electric Ind Co Ltd 画像復号化方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000316154A (ja) * 1996-11-06 2000-11-14 Matsushita Electric Ind Co Ltd 画像復号化方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113411606A (zh) * 2019-06-21 2021-09-17 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113411606B (zh) * 2019-06-21 2022-07-01 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Similar Documents

Publication Publication Date Title
EP1370087B1 (en) Moving picture coding apparatus and moving picture decoding apparatus
EP2858365B1 (en) Video encoder and method of operating the same
JP5893002B2 (ja) ビデオ符号化におけるレート制御
CA2904730C (en) Image encoding device, image decoding device, image encoding method, and image decoding method
EP2150061A1 (en) Video encoding device, video encoding method, and video encoding program
CN106851289A (zh) 图像处理装置和图像处理方法
CN103152579A (zh) 用于视频编码及解码的环内自适应维纳滤波器
US20100150242A1 (en) Image data decoding device and image data decoding method
EP1336307A2 (en) Scalable mpeg-2 video decoder
EP1708511A2 (en) Hardware implementation of optimized single inverse quantization engine for a plurality of standards
JP2011030177A (ja) 復号装置、復号制御装置、復号方法およびそのプログラム
US20070133689A1 (en) Low-cost motion estimation apparatus and method thereof
WO2011125314A1 (ja) 動画像符号化装置および動画像復号装置
CN101072355A (zh) 一种加权预测运动补偿方法
KR101294364B1 (ko) 고화질 영상을 위한 무손실 영상 압축방법, 압축 해제방법 및 이를 적용한 전자기기
CN113853788A (zh) 色度残差缩放的延迟降低方法和装置
JP2007300389A (ja) 画像符号化装置および画像符号化プログラム
JP2007329528A (ja) 動きベクトル復号化方法および復号化装置
JP2008048235A (ja) 可変長符号の復号化方法および復号化装置
JP2009017472A (ja) 画像復号装置および画像復号方法
JP2008289105A (ja) 画像処理装置およびそれを搭載した撮像装置
US20040013200A1 (en) Advanced method of coding and decoding motion vector and apparatus therefor
US8363725B2 (en) Method and apparatus for VLC encoding in a video encoding system
JP2008042701A (ja) 画像データ処理方法および処理装置
JP2001069012A (ja) 可変長復号器及びこれを用いた動画像復号装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110719