(57)【要約】【課題】run_beforeシンタックスをより少ないサイクル数でデコードを行うことが可能な画像復号装置を提供することである。【解決手段】ビットストリームを入力し、ビットストリームの先頭にあるシンタックスをその符号長に応じて更新して出力する更新出力部１０１と、デコード要求に応じてビットストリーム更新出力部１０１からのシンタックスの可変長符号をデコードするデコード部１０２と、デコードされた特定のシンタックスでzerosLeftを更新するzerosLeft更新部１０３と、デコードされた特定のシンタックスでrun_beforeの残数を更新するrun_before残数更新部１０４と、デコードすべきシンタックスを選択するシンタックス選択部１０５とを備え、複数のゼロであるrun_beforeのシンタックスおよび、１つの非ゼロrun_before、または複数のゼロであるrun_beforeのシンタックスを一度にデコードする。【選択図】図１
2008227946.tif 000002
【特許請求の範囲】
【請求項１】
ビットストリームを入力し、該ビットストリームの先頭にあるシンタックスをその符号長に応じて更新して出力するビットストリーム更新出力部と、
デコード要求に応じて前記ビットストリーム更新出力部からのシンタックスの可変長符号をデコードするビットストリームデコード部と、
前記ビットストリームデコード部にてデコードされた特定のシンタックスでzerosLeftを更新するzerosLeft更新部と、
前記ビットストリームデコード部にてデコードされた特定のシンタックスでrun_beforeの残数を更新するrun_before残数更新部と、
前記ビットストリームデコード部にてデコードすべきシンタックスを選択するシンタックス選択部とを具備し、
複数のゼロであるrun_beforeのシンタックスおよび、１つの非ゼロrun_before、または複数のゼロであるrun_beforeのシンタックスを一度にデコードすることを特徴とする画像復号装置。
【請求項２】
前記zerosLeftおよび前記ビットストリームの先頭を入力とし、複数のゼロであるrun_beforeおよび１つの非ゼロrun_beforeを一度にデコードできる第１のテーブル群（20Xa）を有していることを特徴とする請求項１に記載の画像復号装置。
【請求項３】
前記zerosLeftおよび前記ビットストリームの先頭および前記run_beforeの残数を入力とし、複数のゼロであるrun_beforeを一度にデコードできる第２のテーブル群（20Xb）を有していることを特徴とする請求項１に記載の画像復号装置。
【請求項４】
前記run_before残数更新部は、
特定のシンタックスを、run_beforeの残数の初期値として更新可能に保持するレジスタと、
前記レジスタに保持したrun_beforeの残数から前記ビットストリームデコード部で得られるrun_beforeの個数を減算する減算器と、
前記特定のシンタックスの初期値と前記減算器からのrun_beforeの個数と前記レジスタの出力とを入力し、有効の有無に応じていずれか１つの入力を選択して前記レジスタに供給する選択回路と、
を備えたことを特徴とする請求項１乃至３のいずれか１つに記載の画像復号装置。
【請求項５】
前記zerosLeft更新部における特定のシンタックスは、total_zerosであり、
前記run_before残数更新部における特定のシンタックスは、total_coeffであることを特徴とする請求項１乃至４のいずれか１つに記載の画像復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、H.264形式で符号化された画像符号化ビットストリーム（符号化された画像データ）を復号する画像復号装置に関するものである。
【背景技術】
【０００２】
ITU-T勧告H.264 /AVC(Advanced video coding)と呼ばれている技術（以下単にH.264 と称する）では、符号化されたデータ列（ビットストリーム）の設定ルールを示す規則（シンタックス）でＤＣＴ係数や動きベクトルなどを伝送することが規定されている。
【０００３】
例えば動画像データを圧縮符号化して伝送するには、輝度又は色差の入力データと、１画面前のデータに基づく動き補償出力とのブロックごとの動き予測誤差（残差ブロック）を得、その残差ブロックのＤＣＴ係数を量子化及び可変長符号化してデコーダ側に伝送する。
【０００４】
ＤＣＴ係数には、高度な符号化方法としてＣＡＶＬＣ（Context-Adaptive Variable Length Coding、コンテキスト適応型可変長符号化方式）が用いられる。ＤＣＴ変換の処理ブロックサイズ（処理単位）は例えば４×４であり、１６個のＤＣＴ係数は、次のような６つの情報（run_before，level，TotalCoeff，total_zeros，TrailingOnes，trailing_ones_sign_flag）に分解され、これらの６つの情報により１６個の全ての係数を一意に確定できる。
【０００５】
run_beforeは非ゼロ係数値の前の０の連続個数，levelは非ゼロ係数値，TotalCoeffは非ゼロ係数の個数、total_zerosは最後の非ゼロ係数以前の０の個数、TrailingOnesは最後に連続する絶対値１の係数の個数、trailing_ones_sign_flagは最後に連続する絶対値１の係数の符号である。
【０００６】
デコーダ側では、上記の６つの情報（run_before，level，TotalCoeff，total_zeros，TrailingOnes，trailing_ones_sign_flag）から例えばジグザグ・スキャン順に量子化された全てのＤＣＴ係数を、復号（デコード）することができる。
【０００７】
run_beforeシンタックスは（非ゼロ係数の個数−１）個、残差ブロック中に存在し、H.264規格書に定められたテーブルを用いてデコードを行った場合、一度のデコードコマンドで複数個のrun_beforeシンタックスの内の１つしかデコードできない。つまり、従来では、非ゼロrun_before（run_before≠０）、ゼロrun_before（run_before＝０）それぞれ１つにつきデコード動作を行う必要があった。
【０００８】
従って、非ゼロ係数の個数（即ち係数データの個数）が多いほどその残差ブロックの処理サイクル数が増大し、デコード性能の劣化につながる問題があった。
【０００９】
なお、１つの符号列（ビットストリーム）では（非ゼロ係数の個数−１）個だけrun_beforeが存在している。（非ゼロ係数の個数−１）個は、(TotalCoeff)−１と表現することもできる。
【００１０】
一方、H.264の符号化及び復号化についての先行技術としては、例えば特許文献１に記載されているものがある。しかしながら、特許文献１にはデコード処理サイクル数の増大を抑える技術については記載されていない。
【特許文献１】特開２００６−１３５７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
そこで、本発明は上記の問題に鑑み、run_beforeシンタックスを従来より少ないサイクル数でデコードを行うことが可能な画像復号装置を提供することを目的とするものである。
【課題を解決するための手段】
【００１２】
本願発明の一態様によれば、ビットストリームを入力し、該ビットストリームの先頭にあるシンタックスをその符号長に応じて更新して出力するビットストリーム更新出力部と、デコード要求に応じて前記ビットストリーム更新出力部からのシンタックスの可変長符号をデコードするビットストリームデコード部と、前記ビットストリームデコード部にてデコードされた特定のシンタックスでzerosLeftを更新するzerosLeft更新部と、前記ビットストリームデコード部にてデコードされた特定のシンタックスでrun_beforeの残数を更新するrun_before残数更新部と、前記ビットストリームデコード部にてデコードすべきシンタックスを選択するシンタックス選択部とを具備し、複数のゼロであるrun_beforeのシンタックスおよび、１つの非ゼロrun_before、または複数のゼロであるrun_beforeのシンタックスを一度にデコードすることを特徴とする画像復号装置が提供される。
【発明の効果】
【００１３】
本発明によれば、run_beforeシンタックスを従来より少ないサイクル数でデコードを行うことが可能な画像復号装置を提供できる。
【発明を実施するための最良の形態】
【００１４】
発明の実施の形態について図面を参照して説明する。  
図１乃至図７を参照して本発明の実施形態を説明する前に、図８乃至図１１を参照して本発明の関連技術について説明する。
【００１５】
図８は、符号化されたデータであるビットストリームの一例を示す図であ。ビットストリームは、その設定ルールを示す複数のシンタックスで構成されている。例えば、ビットストリームは、 図８のようにシンタックスＡ、シンタックスＥ、…‥run_beforeシンタックス、……のように複数のシンタックスが連続的に流れてくる。↓はここからが（非ゼロ係数の個数−１）個のrun_beforeのシンタックスを含むrun_beforeシンタックス群であることを示している。この所定数のrun_beforeを含むシンタックス群を個々のシンタックスと区別するためにrun_beforeシンタックス全体と呼ぶことがある。つまり、run_beforeシンタックスの全体は、所定個数の個々のrun_beforeのシンタックスを有している。run_beforeシンタックスが始まることはrun_beforeシンタックスの前の別のシンタックス部分で検出可能となっている。
【００１６】
画像復号装置には、run_beforeシンタックスを含む複数の種々のシンタックスで構成されるビットストリームが入力データとして供給される。ビットストリームは、先頭から後端部まで全てシンタックスで構成されるが、画像復号装置内のデコード部にて各シンタックスのデコードが終了するごとにデコード済みのシンタックスは破棄されるので、画像復号装置内のデコード部には各シンタックスのデコード終了ごとにビットストリームの先頭に相当する次のシンタックスが入力される。
【００１７】
図９は、本発明の関連技術である画像復号装置のブロック図を示している。  
図９に示す画像復号装置400は、run_beforeシンタックスのデコードを行うためのハードウェア構成であって、FIFO装置401と、可変長符号デコード装置402と、zerosLeft更新装置403と、シンタックス選択装置404と、を備えている。可変長符号デコード装置402は、テーブル501〜507のテーブル群を備えている。
【００１８】
図９の動作を説明する。  
FIFO装置401は、ビットストリーム（bitstream）を取り込み、入力した順に出力していく。FIFO装置401では、次々とビットストリームの先頭にあるシンタックスを更新しながら可変長符号デコード装置402に入力していく。可変長符号デコード装置402は、FIFO装置401からビットストリームの先頭が来たときにはどのシンタックスが来たかということを知り、そのシンタックスのデコード処理を行い終了すると、符号長を検出する。そして、検出した符号長をFIFO装置401に通知する。FIFO装置401は符号長の通知を受けてその符号長分のシンタックスはデコード処理済みであるとして破棄する。これによって次のビットストリームのデータ（次のシンタックス）の先頭をFIFO装置401から出力して、可変長符号デコード装置402に送る。可変長符号デコード装置402では再び次のシンタックスのデコード処理及び符号長通知を行って、各シンタックスごとにデコードを行っていく。
【００１９】
可変長符号デコード装置402は、シンタックス選択装置404よりtotal_zerosのデコード指示を受けると、total_zerosシンタックスをデコードしてバリッド信号（valid）と共にzerosLeft更新装置403へ送出する。zerosLeft更新装置103は、zerosLeft（自身のrun_beforeをデコードする際に存在しているrun_beforeの数であり、初期値はtotal_zerosに等しい）を更新する。
【００２０】
次に可変長符号デコード装置402は、シンタックス選択装置404よりrun_beforeのデコード指示を受けると、zerosLeft更新装置403からzerosLeftを受け取り、zerosLeft情報に基づき図１０に示すテーブル群501〜507の中から使用するテーブルを決定（選択）する。このとき、zerosLeft情報に対応したテーブルが選択される。決定されたテーブルを用いてrun_beforeのデコード出力を得ることができる。
【００２１】
そして、valid信号と共に、テーブルから取得されたrun_beforeの値（デコード出力）を、zerosLeft更新装置403へ送出する。zerosLeft更新装置403はrun_beforeの値を用いてzerosLeftを更新する。更新されたzerosLeftが非ゼロであれば、シンタックス選択装置404は再度run_beforeのデコードを行う。zerosLeftが0になるまでrun_beforeのデコードを繰り返す。
【００２２】
次に、図９の可変長符号デコード装置402の動作を、図１０のテーブル群501〜507と図1１の動作説明図を参照して説明する。  
ビットストリーム（bitstream）として示しているrun_beforeシンタックス全体が図８のように‘１１１１１１１００１０’である場合を例として説明する。
【００２３】
図1１で、‘bitstream’はビットストリームとしてのrun_beforeシンタックス‘１１１１１１１００１０’を示し、‘table’は図１０のテーブル群（501〜507）内でシンタックスごとに選択される各テーブルの番号を示し、‘値’はrun_before（rbと略記することがある）の値を示し、‘更新’はzerosLeft（zLと略記することがある）の更新即ち使用されるtableの更新に対応している。なお、図１１中で、また、zL−rb（＝zerosLeft−run_before）はzerosLeft更新装置403の更新演算式を示し、下線はデコード処理の１サイクル分を示している。
【００２４】
まず、可変長符号デコード装置402では、run_beforeのシンタックスよりも前に送られてくるzerosLeftシンタックスに基づいて、図１０に示した、run_beforeのテーブルを選択し参照することになる。zerosLeftシンタックスの初期値がzerosLeft＝３（＝total_zeros）とすると、テーブル503が選択される。テーブル503では、入力として先頭の２桁が示されているので、bitstreamの先頭の２桁のシンタックス‘１１’が入力されると、テーブル503によってデコード出力としてのrun_beforeは‘０’（rb=0）となる。この場合の符号長は２である。このときの更新演算式の結果は、zL−rb＝３となり、zerosLeftは初期値と同じになり、tableの更新はない。その結果、次の２桁のシンタックス‘１１’についても同じテーブル503を使用するので、同様にrb=0、zL−rb＝３となり、zerosLeftは初期値と同じになり、tableの更新はない。従って、その次の３つ目の２桁のシンタックス‘１１’についても同様となり、同じテーブル503を使用する。そして、更に次の４つ目の２桁のシンタックス‘１０’については、テーブル５０３によってデコード出力としてのrun_beforeは‘１’（rb=1）となる。このときの更新演算式はzL−rb＝２となり、zerosLeft＝２となってzerosLeftの値が更新される。
【００２５】
従って、次に使用するテーブルは、zerosLeft＝２に対応したテーブル502となる。bitstreamの５つ目の２桁のシンタックス‘０１’が入力されると、テーブル502によってデコード出力としてのrun_beforeは‘１’（rb=1）となり、更新演算式はzL−rb＝１となり、zerosLeft＝１となってzerosLeftの値が更新される。
【００２６】
従って、次に使用するテーブルは、zerosLeft＝１に対応したテーブル501となる。テーブル501は入力が１桁のものとなっている。bitstreamの６つ目の１桁のシンタックス‘０’が入力されると、テーブル501によってデコード出力としてのrun_beforeは‘１’（rb=1）となる。この場合の符号長は１である。このときの更新演算式はzL−rb＝０となり、デコード処理は終了する。
【００２７】
図９のハードウェア構成で、かつ図１０に示したデコード処理用のテーブル群を使用すると、４つのシンタックスに亘って同じテーブル503を用いるにも係わらず１つのシンタックスごとにデコード指示及び更新演算が必要となる結果、全体のデコード処理のサイクル数（デコード指示及び更新演算）は６つとなっている。
【００２８】
［第１の実施形態］
図１は本発明の第１の実施形態の画像復号装置のブロック図を示している。  
図１に示す画像復号装置100は、run_beforeシンタックスのデコードを行うためのハードウェア構成である。
【００２９】
画像復号装置100は、ビットストリームを入力し、ビットストリームの先頭にあるシンタックスをその符号長に応じて更新して出力するビットストリーム更新出力部としてのFIFO装置101と、デコード要求に応じてFIFO装置101からのシンタックスの可変長符号をデコードするビットストリームデコード部としての可変長符号デコード装置102と、可変長符号デコード装置102でデコードされた特定のシンタックスでzerosLeftを更新するzerosLeft更新装置103と、可変長符号デコード装置102でデコードされた特定のシンタックスでrun_beforeの残数を更新するrun_beforeの残数更新装置104と、可変長符号デコード装置102でデコードすべきシンタックスを選択するシンタックス選択装置105とを備え、複数のゼロであるrun_beforeのシンタックスおよび、１つの非ゼロrun_before、または複数のゼロであるrun_beforeのシンタックスを一度にデコードすることを特徴とする。可変長符号デコード装置102はテーブル201a〜207bのテーブル群を備えている。また図７に示すようにrun_beforeの残数更新装置104は、選択回路であるマルチプレクス（MUX）301と、レジスタ302と、減算器303とを備えている（図７については後述する）。
【００３０】
図1の動作を説明する。  
可変長符号デコード装置102は、FIFO装置101からbitstreamの先頭部分を入力データ（シンタックス）として受け取る。  
可変長符号デコード装置102は、シンタックス選択装置105よりtotal_coeffのデコード指示を受けると、total_coeffシンタックスをデコードしてvalid信号と共にrun_beforeの残数更新装置104へ送出する。run_beforeの残数更新装置104は、図７に示すようにMUX301でtotal_coeffを選択し、初期値としてrun_beforeの個数の最大値に相当する（total_coeff−１）をレジスタ302へ書き込む。
【００３１】
次に可変長符号デコード装置102は、シンタックス選択装置105よりtotal_zerosのデコード指示を受けると、total_zerosをデコードしてvalid信号と共にzerosLeft更新装置103へ送出する。zerosLeft更新装置103は、zerosLeftを更新する。  
次に可変長符号デコード装置102は、シンタックス選択装置105よりrun_beforeのデコード指示を受けると、zerosLeft更新装置103、run_beforeの残数更新装置104から、それぞれzerosLeft、run_beforeの残数を受け取り、まずzerosLeft情報からテーブルの番号(201a〜207b)（図２及び図３参照）を決定する（201a〜201bを添え字aのものとbのものとに分けて20Xaおよび20Xbと表記する）。
【００３２】
続いてbitstreamの先頭、run_beforeの残数から選択されたテーブル番号の添え字bのテーブル(20Xb)を引く。bitstreamの先頭、およびrun_beforeの残数で、20Xbのテーブルの入力に一致すれば、この入力に対応するrun_beforeの個数およびrun_before = 0を出力として選択する。20Xbのテーブルの入力に一致するものがなければ、20Xaのテーブルを引き入力bitstreamに対応するrun_beforeの数およびrun_beforeの値を出力として選択する。
【００３３】
そして、valid信号、選択されたrun_beforeの値を、zerosLeft更新装置103へ、valid信号、選択されたrun_beforeの個数をrun_beforeの残数更新装置104へ送出する。
【００３４】
zerosLeft更新装置103はzerosLeftを更新し、run_beforeの残数更新装置104は図7に示すようにMUX301でレジスタ302にあるrun_beforeの残数から、装置102にて取得したrun_beforeの個数を減算器303で減算した値を選択し、レジスタ302の値を更新する。更新されたzerosLeftが非ゼロでかつrun_beforeの残数が非ゼロであれば、シンタックス選択装置105は再度run_beforeのデコードを行う。zerosLeftもしくはrun_beforeの残数が0になるまでrun_beforeのデコードを繰り返す。
【００３５】
以上のようなデコード動作を行った場合、run_before ＝0のrun_beforeシンタックスのデコードを1cycleで行うことができる。例えばrun_beforeのデコード段階でbitstreamの先頭が‘1101’、zerosLeftが２、run_beforeの残数が6であった場合、本実施形態の画像復号装置を用いてデコードを行うと、まずzerosLeft情報‘２’をもとにテーブル202a/202bが選択される。run_beforeの残数が6であることから202bに該当する入力項目は無く、続いて202aのテーブルを引く。‘1101’は202aのテーブルの入力項目の上から５番目に一致し、出力としてrun_beforeの個数が３(２)であるので、run_before = 0のrun_beforeシンタックスが2個、run_before = 1のrun_beforeシンタックスが1個がデコードされる。
【００３６】
上記例のような場合、本発明の実施形態では、３つのrun_beforeシンタックスデコードが１回のデコード指示で済んでしまう。これに対して、図１０に示したようにH.264規格書どおりにテーブル501〜507を用いてデコードをすると、このような場合３回デコード指示を行う必要がある。
【００３７】
なお、構成の補足として20Xa/20Xbのテーブルを同時に選択し、20Xbの入力項目に一致すれば20Xbの出力値を、それ以外は20Xaの出力値を選択する構成にもすることができる。また、20Xa/20Xbの２種類のテーブルを合わせたテーブル(仮に20Xとする)を用いた構成とすることもできる。
【００３８】
次に、図１の画像復号装置100の動作を、図２及び図３のテーブル群201a〜207bと図４の動作説明図を参照して説明する。なお、図２及び図３は、連続したテーブル番号で示されるテーブル群201a〜207bを紙面の都合で２つの図面に分けて記載したものである。
【００３９】
ビットストリーム（bitstream）として示しているrun_beforeシンタックス全体が図８のように‘１１１１１１１００１０’である場合を例として説明する。
【００４０】
図４で、‘bitstream’はビットストリームとしてのrun_beforeシンタックス‘１１１１１１１００１０’を示し、‘table’は図２及び図３のテーブル群（201a〜207b）の各テーブルの番号を示し、‘値’はrun_before（rbと略記することがある）の値を示し、‘個数’はrun_beforeの個数、‘更新’はzerosLeft（zLと略記することがある）の更新（即ち使用されるtableの更新）に対応している。なお、zL−rb（＝zerosLeft−run_before）は図１のzerosLeft更新装置403の更新演算式を示し、下線はデコード処理の１サイクル分を示している。また、‘個数’で例えば４(３)は‘４’がrun_beforeの個数で‘３’がrun_before＝０の個数である。
【００４１】
zerosLeftの初期値を与えるtotal_zerosシンタックスは、run_beforeシンタックスが来る前に可変長符号デコード装置102に入力される。  
まず、可変長符号デコード装置102は、zerosLeftシンタックスに基づいて図２及び図３に示した、run_beforeのテーブルを選択し参照することになる。zerosLeftシンタックスの初期値がzerosLeft＝３（＝total_zeros）とすると、テーブル203a/203bが選択される。bitstreamとしてrun_beforeシンタックスの先頭の８桁の‘１１１１１１１０’の入力はテーブル203aに存在している。先頭の８桁‘１１１１１１１０’が入力されると、テーブル203aを参照することによってデコード出力としてのrun_beforeは‘１’（rb=1）となる。この場合の符号長は８である。このときの更新演算式の結果は、zL−rb＝２となり、zerosLeft＝２となってzerosLeftが更新される。
【００４２】
なお、この場合、先頭の８桁の‘１１１１１１１０’については、H.264規格書どおりに図１０のテーブル501〜507を用いてデコードをすると、入力‘１１’‘１１’‘１１’‘１０’のそれぞれのシンタックスについて出力としてのrun_beforeが０，０，０，１となるので、図２のテーブル203aにおけるrun_beforeの個数としては４（３）と表記される。
【００４３】
上述の先頭の８桁に対するデコード出力（rb=1）に基づく演算結果から、次に使用するテーブルは、zerosLeft＝２に対応したテーブル202a/202bが選択される。bitstreamとして次の２桁のシンタックス‘０１’が入力されると、入力‘０１’はテーブル202aに存在している。テーブル202aを参照することによってデコード出力としてのrun_beforeは‘１’（rb=1）となり、更新演算式はzL−rb＝１となり、zerosLeft＝１となってzerosLeftが更新される。
【００４４】
従って、次に使用するテーブルは、zerosLeft＝１に対応したテーブル201a/201bが選択される。bitstreamとして最後の１桁のシンタックス‘０’が入力されると、入力‘０’はテーブル201aに存在しているので、テーブル201aを参照することによってデコード出力としてのrun_beforeは‘１’（rb=1）となる。このとき更新演算式はzL−rb＝０となり、デコード処理は終了する。
【００４５】
図１のハードウェア構成で、かつ図２及び図３に示したデコード処理用のテーブル群（201a〜207b）を使用すると、同じテーブル203aを用いるデコード処理サイクルが１つとなる結果、４つのシンタックスについてデコード指示及び更新演算が１回で済み、全体のデコード処理のサイクル数（デコード指示及び演算処理回数）は３つとなる。つまり、run_beforeシンタックスを、図９乃至図１１の関連技術に示したもの（６つ）より少ない処理サイクル数でデコードすることが可能となる。
【００４６】
図５は可変長符号デコード装置102における、テーブル20Xaと20Xb（例えば上述のテーブル203aと203b）の一方のテーブルの選択を行うハードウェア構成を示し、図６は図５のハードウェアに入力されるrun_beforeの残数を説明する図を示している。
【００４７】
図５において、可変長符号デコード装置102には、bitstreamとしてrun_beforeシンタックス全体‘１１１１１１１００１０’の内の‘１１１１１１１０’が入力される。この入力はテーブル203aに供給されると共にテーブル203bに供給される。テーブル203aにおける入力‘１１１１１１１０’に対しては出力としてrun_beforeの個数‘４(３)’でかつrun_before＝１が出力可能である。また、テーブル203bにおける入力‘１１１１１１’に対しては出力としてrun_beforeの個数‘３(３)’でかつrun_before＝０が出力可能である。そして、装置102内に設けられた選択装置102Aにてテーブル203a及び203bの出力の内の一方の出力を、後述するrun_beforeの残数に応じて切り換えて出力する。選択装置102Aでは、run_beforeの残数が３より大きければ、テーブル203aの出力を選択し、run_beforeの残数が３に等しければ、テーブル203bの出力を選択して出力する。
【００４８】
run_beforeの残数について、図６を参照して説明する。bitstreamとしてrun_beforeシンタックス‘１１１１１１１００１０’について考えると、run_beforeの残数が６とはこの１１桁のデコード前の数‘１１１１１１１００１０’をデコード処理単位として先頭から２桁ずつに区切った‘１１’‘１１’‘１１’‘１０’‘０１’‘０’の６つのシンタックスを指し、run_beforeの残数が５とはデコード前の数‘１１１１１１１００１０’をデコード処理単位として先頭から２桁ずつに区切った‘１１’‘１１’‘１１’‘１０’‘０１’の５つのシンタックスを指し、run_beforeの残数が４とはデコード前の数‘１１１１１１１００１０’をデコード処理単位として先頭から２桁ずつに区切った‘１１’‘１１’‘１１’‘１０’の４つのシンタックスを指し、run_beforeの残数が３とはデコード前の数‘１１１１１１１００１０’をデコード処理単位として先頭から２桁ずつに区切った‘１１’‘１１’‘１１’の３つのシンタックスを指し、run_beforeの残数が２とはデコード前の数‘１１１１１１１００１０’をデコード処理単位として先頭から２桁ずつに区切った‘１１’‘１１’の２つのシンタックスを指し、run_beforeの残数が１とはデコード前の数‘１１１１１１１００１０’をデコード処理単位として先頭から２桁分‘１１’の１つのシンタックスを指している。run_beforeの残数が、５，４，３，２，１となっている場合は、これからデコードするrun_beforeの個数がそれぞれ５，４，３，２，１であることを意味している。従って、例えばrun_beforeの残数が４の場合は、‘１１１１１１１０’のつぎに来る‘０１０’はrun_beforeとは異なる別のシンタックスであると解釈される。
【００４９】
図７は、run_beforeの残数更新装置104のブロック図を示している。  
図７に示すようにrun_beforeの残数更新装置104は、特定のシンタックスを、run_beforeの残数の初期値として更新可能に保持するレジスタ302と、レジスタ302に保持したrun_beforeの残数から可変長符号デコード装置102で得られるrun_beforeの個数を減算する減算器303と、レジスタ302で用いた特定のシンタックスの初期値と減算器303からのrun_beforeの個数と前記レジスタ302の出力とを入力し、有効の有無に応じていずれか１つの入力を選択してレジスタ302に供給する選択回路であるマルチプレク（MUX）301と、を備えている。
【００５０】
run_beforeの残数更新装置104は、可変長符号デコード装置102からのtotal_coeffのバリッド信号（valid）に基づいてMUX301で装置102からのtotal_coeffを選択し、初期値として（total_coeff−１）をレジスタ302へ書き込む。次に、run_beforeのバリッド信号（valid）が入ると、レジスタ302にあるrun_beforeの残数（最初は初期値）からrun_beforeの個数を減算器303で減算した値を、MUX301で選択して出力することによって、レジスタ302の値を更新する。つまり、可変長符号デコード装置102でrun_beforeのデコード処理単位ごとにデコード処理が済むごとに可変長符号デコード装置102からのrun_beforeの個数とrun_beforeのバリッド信号（valid）が、run_beforeの残数更新装置104へ入力されて、レジスタ302の値即ちrun_beforeの残数を更新する。
【００５１】
次に、本発明の実施形態による効果を説明する。  
図９の画像復号装置400では、非ゼロrun_before、ゼロrun_beforeそれぞれ１つにつきデコード動作を行う必要があった。そのため、デコード処理サイクル数が増大し、デコード性能の劣化につながっていた。
【００５２】
図１の画像復号装置100では、FIFO装置101の出力であるbitstreamの先頭、zerosLeft更新装置103の出力であるzerosLeft、run_beforeの残数更新装置104の出力であるrun_beforeの残数の３つを入力としてテーブル201a〜207bのうち適切なテーブルを選択し、入力に合致する値を出力させることで、非ゼロrun_before（run_before≠0）に先行するゼロrun_before（run_before＝0）を一度のデコード動作でデコードすることができる。つまり、run_beforeシンタックスをより少ない処理サイクル数でデコードすることができる。このことは、本発明が、run_beforeのシンタックスとして０が続けば続くほど、従来よりデコード動作サイクル数が少なくなることを意味している。また、原理的に非ゼロ残差係数の数が多いほどrun_before = 0が続く。従って、非ゼロ残差係数の数が多い、言い換えれば残差係数のデコード処理サイクル数が多くなってしまうような場合に、run_beforeのデコード処理サイクル数を抑えることができ、特に有益となる。このことは１マクロブロックにかかる最高処理サイクル数を抑えることになるのでデコード装置全体の処理能力向上に貢献する。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１の実施形態の画像復号装置のブロック図。
【図２】本発明の第１の実施形態で用いられる、テーブル20Xaおよび20Xb を示す図。
【図３】本発明の第１の実施形態で用いられる、テーブル20Xaおよび20Xb を示すものであって、図２の続きを示す図。
【図４】図１のデコード処理動作の説明図。
【図５】可変長符号デコード装置における、テーブル20Xaと20Xbの一方の選択を行うハードウェア構成を示すブロック図。
【図６】un_beforeの残数を説明する説明図。
【図７】本発明の実施形態で用いるrun_beforeの残数更新回路のブロック図。
【図８】符号化されたデータ列であるビットストリームの一例を示す図。
【図９】本発明の関連技術である画像復号装置のブロック図。
【図１０】図９の関連技術で用いるテーブル群(規格書に同じ)を示す図。
【図１１】図９のデコード処理動作の説明図。
【符号の説明】
【００５４】
１００…画像復号装置
１０１…FIFO装置（ビットストリーム更新出力部）
１０２…可変長符号デコード装置（ビットストリームデコード部）
１０３…zerosLeft更新装置（zerosLeft更新部）
１０４…run_beforeの残数更新装置（run_before残数更新部）
１０５…シンタックス選択装置（シンタックス選択部）
【図１】
2008227946.tif 000003
【図２】
2008227946.tif 000004
【図３】
2008227946.tif 000005
【図４】
2008227946.tif 000006
【図５】
2008227946.tif 000007
【図６】
2008227946.tif 000008
【図７】
2008227946.tif 000009
【図８】
2008227946.tif 000010
【図９】
2008227946.tif 000011
【図１０】
2008227946.tif 000012
【図１１】
2008227946.tif 000013