JPWO2010095181A1 - 可変長復号化装置 - Google Patents

可変長復号化装置 Download PDF

Info

Publication number
JPWO2010095181A1
JPWO2010095181A1 JP2011500365A JP2011500365A JPWO2010095181A1 JP WO2010095181 A1 JPWO2010095181 A1 JP WO2010095181A1 JP 2011500365 A JP2011500365 A JP 2011500365A JP 2011500365 A JP2011500365 A JP 2011500365A JP WO2010095181 A1 JPWO2010095181 A1 JP WO2010095181A1
Authority
JP
Japan
Prior art keywords
flag
buffer
zero
data
final
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
JP2011500365A
Other languages
English (en)
Inventor
秀樹 黒木
秀樹 黒木
岳志 古田
岳志 古田
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2010095181A1 publication Critical patent/JPWO2010095181A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • H03M7/48Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本発明の可変長復号化装置は、可変長復号化部(100)により復号された成分値が特定の値であるか否かを判定するデータ判定部(101)と、特定の値でない成分値のみを保持するデータバッファ(103)と、ブロック内の最終の前記特定の値以外の成分値を判定する最終有効データ判定部(106)と、ブロック内の最終の特定の値以外の成分値までのそれぞれの成分値に対応するフラグであって、特定の値でないか特定の値であるかを示すフラグを保持するフラグバッファ(104)と、フラグを設定するフラグバッファ制御部(107)と、データバッファ(103)への書き込みを制御するデータバッファ制御部(105)と、ゼロかデータバッファからの係数を選択する選択部(109)とを備える。

Description

本発明は可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置に関し、特に、画像符号化/復号化処理における基幹処理である可変長復号装置に関する。
現行の動画圧縮/伸張は、動画符号化規格としてMPEG1、MPEG2、MPEG4、H.264/AVC、VC−1等のMPEG(Moving picture expert group)が存在し、画像の大きさや利用媒体などの違いによって、それぞれに対応できるように規格で定められている。例えば、MPEG1、MPEG2であればDVD等の比較的画像サイズの大きな媒体に対して使用され、MPEG4やH.264/AVCの一方式では携帯電話や1seg等の比較的画像サイズの小さい媒体に対して使用され、H.264/AVC、VC−1ではHDTV等の画像サイズが非常に大きい媒体に対して使用される。昨今、HDTVの急速な普及や2K4Kといった高解像度の画質の処理が必要不可欠となっており動画像処理の効率化も必須となっている。
図17は、従来技術における代表的な画像圧縮処理フローを示す図である。動画符号化を行う場合は、動画像をマクロブロック(MB)と呼ばれる処理単位に分割し処理を行う。MBは輝度成分と色差成分とで構成されており、輝度成分はY0、Y1、Y2、Y3の4個で成り、また色差成分はCb、Crの2個で成っている。各Y、C成分は8×8のブロックの64個の画素成分で構成されている。MPEG1、MPEG2、MPEG4、H.264/AVC、VC−1に共通する処理として直交変換処理や可変長符号化処理、量子化処理等がある。
直交変換処理10はY0、Y1、Y2、Y3、Cb、Crブロック毎に行われる処理であり、空間成分である動画像信号を周波数成分に変換する技術である。図18は、直交変換されたブロックの周波数成分を示す図である。直交変換処理を行うことによって、図18に示すように自然画像などは周波数成分に変換した際にデータの偏りが発生し、可変長符号化等でのデータ圧縮に有効に作用する。
量子化処理11は各符号化規格によってそれぞれ処理方式が異なるが、外部から設定される量子化値を用いて直交変換されたDCT係数を除算することで量子化係数を生成する。この処理によって画質にさほど影響を与えないDCT係数の高周波領域にゼロ値を集中させることにより後段の可変長符号化処理の符号化効率を更に高める。
更に、可変長符号化処理12にて図19に示すようなジグザグスキャンの順でゼロ値の個数を表すRUNと符号化係数の大きさを表すLEVELとを組み合わせてランレングスデータを生成する。それらの組み合わせの出現率に応じて長さの異なる符号を割り当てることでデータの容量を小さくする。
図20は、従来技術における代表的な画像復号化処理フローを示す図である。図18の画像圧縮処理によって符号化された符号化データを復号する画像復号化処理を示す、可変長復号処理20、逆量子化処理21、及び逆直交変換処理22からなる。
可変長復号処理20は、可変長符号化データをRUNとLEVELとの組み合わせとして復号した上で、RUNの大きさ分だけゼロ値を生成し、生成したゼロ値とLEVELとを組み合わせる。この動作が8×8ブロック単位で繰り返される。逆量子化処理21は上記で生成された8×8ブロック単位の符号化データを量子化時に使用した量子化係数を乗算することで圧縮前のデータである逆量子化係数に復元する。逆直交変換処理22は、上記生成された逆量子化係数を周波数領域から空間領域に変換することで画像データとして復号する。
この従来の可変長復号処理20の構成について図21を用いて説明する。図21は、従来技術における可変長復号処理20の構成を示す図である。入力部400から入力される可変長符号データを可変長復号部401においてゼロ値の個数を表すRUNと係数値の大きさを表すLEVELの組み合わせとして復号する。書き込み制御部402は復号されたRUNの個数だけデータバッファ405へゼロ値を書き込むようにデータ選択部403に選択信号を供給し、RUNの個数だけゼロ値を書き込んだ後、LEVELで表される係数をデータバッファ405へ書き込む。この動作が8×8画素分生成されるまで繰り返された後、読み出し制御部404によってデータバッファ405からジグザグスキャン(図19)で順次読み出し、後段処理部406である逆量子化処理21へ出力する。しかしながら、上記従来の構成では、RUNの個数分だけゼロ値である係数を連続してデータバッファに書き込みしているためデータバッファへの無駄なアクセスが発生してしまう課題があった。
上記問題の解決案の一つとして、特許文献1において公開しているランレングス符号の復号回路がある。その1例について図22を用いて説明する。
図22において、入力部500は可変長符号化・ランレングス符号化データを入力する。可変長復号化手段501は入力部500から入力されたデータを、ゼロ値の個数を表すRUNと、係数値の大きさを表すLEVELとの組み合わせとして順次復号する。データバッファ508はLEVELを格納する。アドレス加算手段502はRUNによるゼロ値の個数に基づいてこのデータに対応するLEVELのアドレスを演算する。情報レジスタ509はアドレス加算手段502の結果を記憶するM×Nビットのレジスタである。書き込み制御手段503はアドレス加算手段502からの情報に基づいてLEVELをデータバッファ508へ格納する。読み出し制御手段504は情報レジスタ509の値に基づいてデータバッファ508からLEVELを読み出す。データ選択手段505は情報レジスタ509の値に基づいて、データバッファ508に格納されているLEVELとゼロ値のうちいずれかを選択して出力する。後段処理手段506はデータ選択手段505からのデータを後段処理する。出力手段507は後段処理手段506からのデータを出力する。
入力部500から可変長符号化・ランレングス符号化データが入力されると、可変長復号化手段501は、入力される可変長符号化・ランレングス符号化データを、ゼロ値の個数を表すRUNと係数値の大きさを表すLEVELとの組み合わせとして順次復号する。
アドレス加算手段502は、復号化したデータにおいて、図19に示すジグザグスキャンの順に、すなわち1→2→9→17・・・という順に、復号されたRUNの大きさに基づいてアドレスを演算する。情報レジスタ509は、RUNの大きさ分だけジグザグスキャン順に例えばゼロ値を連続して記憶し、その後の位置にLEVELのアドレスとして例えば"1"を記憶する。書き込み制御手段503は、アドレス加算手段502が演算したアドレスにLEVELを書き込む。書き込み制御手段503は、1ブロック分のLEVELの書き込みが終了したか否かを判断し、未終了であると判断するときは復号の最初のステップに戻り、終了したと判断するときは読み出しの処理に進む。可変長復号化手段501によって1ブロックに相当するRUNとLEVELとの組み合わせが復号されたうえでLEVELの書き込みが終了すると、読み出し制御手段504は、後段処理手段506からの読み出し許可を示す制御信号に基づいて情報レジスタ509の記憶内容を判断してその判断結果に基づいて読み出し処理を制御する。すなわち、読み出し制御手段504は、情報レジスタ509に"1"が格納されているビットに相当するアドレスをデータバッファ508に出力したうえで、そのアドレスに格納されているLEVELを読み出す。データ選択手段505では読み出し制御手段504が情報レジスタ509を判断する際、同時に、情報レジスタ509のビットがゼロ値の場合は、後段処理手段506にゼロ値を出力し、"1"の場合は、後段処理手段506にデータバッファ508から読み出した出力データLEVELを出力する。後段処理手段506はデータ選択手段505を介して受け取ったデータを後段処理したうえで、出力手段507から処理したデータを出力する。
上記の従来の技術によれば、データバッファ508の後段にデータ選択手段505を設けたうえで、データバッファ508には、ゼロ値を格納することなく、LEVELのみを格納する。これにより、ゼロ値は後段のデータ選択手段505において選択される。可変長復号化手段501はその動作を停止させる必要がなく、高速化に有利となる。そして、必要最低限の構成で、アドレスの保持器の情報に基づいてLEVELのみを読み出すことで、データバッファ508へのアクセスを削減できることから、低消費電力の可変長復号器を提供することができる。
また、動画符号化規格の1つであるH.264/AVCでは、ブロック中の非ゼロ係数の個数を表すTotalCoeffと、非ゼロ係数値の大きさを表すlevelと、データスキャン方向において最後のlevelより前のゼロ係数の個数を表すtotal_zerosと、データスキャン方向においてlevelの前のゼロ係数の連続個数を表すrun_beforeが符号化されていることであり、RUNとLEVELとが組み合わせとして符号化されていないことである。H.264に関しては、インプレス標準教科書H.264/AVC 教科書に詳細な説明がある。
図23に示す上記のH.264/AVCに対応した特許文献2において公開しているランレングス符号の復号回路がある。上記特許文献2も上記特許文献1と同様に非ゼロ値を書き込むデータバッファのアドレスをTotalCoeffやtotal_zeros、run_beforeを用いて決定し、データバッファに対するゼロ値の書き込み/読み出しアクセスを削減することを目的としている。
本発明の目的は、複数の符号化規格を処理する場合において、上記に示す非ゼロ値を格納するデータバッファの更なる有効利用を行うとともに、上記に示すゼロ値か非ゼロ値かを判断する情報レジスタに関してもデータバッファ同様に有効活用することで、可変長復号化処理の効率化を実現する。
特開2006−74197号公報 特開2007−329903号公報
インプレス標準教科書H.264/AVC 教科書
先に示した、特許文献1と特許文献2とに共通する課題として、2点存在する。1つ目はアドレス加算手段502でデータバッファ508の非ゼロ係数値の書き込み位置を決めるため、ゼロ値に対応するアドレスのデータバッファは無効なデータが存在することとなる。2つ目は、直交変換処理された係数は高周波領域になるに連れてゼロ値の連続回数が増加する。その場合、情報レジスタ509に関しても"0"が登録された領域が連続して存在することになる。情報レジスタの特定の領域に全て"0"が登録されていることがわかっているのであれば、上記の特定の領域全てに"0"を登録することは冗長な動作である。更に情報レジスタの限られた資源を"0"だけで埋めてしまうのは非効率である。
例えば、昨今の半導体集積回路では複雑かつ様々な動画符号化処理の実現や、高解像度画像処理の実現が要求されている。また、環境対策の観点での低消費電力化も必須である。このような背景の中で、非ゼロ係数値の書き込み/読み出しアクセス削減だけでは電力削減や処理の効率化といった観点では十分な効果を得ることはできない。
本発明は上記の問題を解決するものであり、非ゼロ係数を格納するデータバッファの効率化に加えて情報レジスタの効率化も合わせて実現し、消費電力を低減する可変長復号化装置を提供することを目的とする。
上記課題を解決するために本発明の可変長復号装置は、可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、前記符号化データを前記成分値に復号する可変長復号化部と、復号された成分値が特定の値であるか否かを判定するデータ判定部と、復号された成分値のうち、前記データ判定部によって特定の値でないと判定された成分値のみを保持するデータバッファと、復号された成分値が、ブロック内の前記特定の値以外の成分値のうちのブロック内の最終の成分値であるか否かを判定する最終判定部と、ブロックの先頭の成分値から前記最終判定部によって前記最終の成分値であると判定された成分値までのそれぞれに対応するフラグであって、対応する成分値が前記特定の値でないか特定の値であるかを示すフラグを保持するフラグバッファと、前記データ判定部による判定結果のうち、ブロックの先頭の成分値から前記最終判定部によって前記最終の成分値であると判定された成分値までに対応する判定結果のそれぞれを、前記フラグとして前記フラグバッファに設定し、前記最終の成分値であると判定された成分値に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、フラグバッファに設定されたフラグに基づいて、前記データ判定部によって前記特定の値でないと判定された成分値のみを前記データバッファに書き込む制御と、前記データバッファから前記特定の値でない成分値を読み出す制御とを行うデータバッファ制御部と、データバッファから読み出された成分値およびゼロのうち一方を選択する選択部とを備え、前記フラグバッファ制御部は、前記フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する。
この構成によれば、フラグバッファ(従来技術における情報レジスタに対応する。)は、ブロック内の全ての成分値(係数)と同数のフラグを保持するのではなく、ブロック内の先頭の成分値から、前記特定の値以外の成分値のうちのブロック内の最終の成分値までの成分値の個数のフラグを保持し、最終の成分値以降の成分値に対応するフラグを保持しない。これにより、フラグバッファおよびデータバッファにおける1ブロックあたりの必要な記憶領域のサイズを削減し、フラグバッファおよびデータバッファを効率よく使用することができる。
すなわち、ブロック内の末尾には通常は通常ゼロの成分値が連続するので、ブロック末尾に連続するゼロの成分値と同数のフラグを保持する領域を節約することができ、フラグバッファおよびデータバッファの領域を効率よく利用することができる。
また、ブロック末尾に連続するゼロの成分値と同数のフラグの書込みおよび読出し回数を削減するので、消費電力を低減することができる。
ここで、前記特定の値はゼロであり、前記可変長復号化部は、さらに前記符号化データからの第1パラメータおよび第2パラメータのうち少なくとも1つを検出し、前記第1パラメータは、ブロック内の当該パラメータ以降の成分値が前記最終の成分値であることを示すEOB符号であり、前記第2パラメータは、ブロック内に含まれる前記特定の値以外の成分値の個数を示す第1の符号と、ブロックにおいて前記最終の成分値より前に含まれる前記特定の値の成分値の個数を表す第2符号とを含み、前記最終判定部は、前記可変長復号化部により検出された第1パラメータおよび第2パラメータの少なくとも1つに基づいて、復号された成分値が前記最終の成分値であるか否かを判定するようにしてもよい。この構成によれば、最終判定部は符号化データに含まれる第1パラメータ(EOB符号)または第2パラメータにより前記最終の成分値を検出するので、異なる規格に準拠して符号化された複数種類の符号化データに対応することができる。
ここで、前記可変長復号化装置は、さらに、外部から設定される任意の判定用データを記録し、当該判定用データを前記特定の値として前記データ判定部に供給する判定データ記憶部を備えていてもよい。この構成によれば、特定の値(判定用データ)は、任意に設定することが可能である。例えば、特定の値は、典型的には"0"であるが、"0"を表すコードであってもよいし、"0"以外の任意の値であってもよいし、"0"以外の任意の値を表すコードであってもよい。
ここで、前記判定データ記憶部に設定される判定用データは、前記符号化データに対応する符号化規格がMPEG2、H.264またはVC−1である場合、ゼロ値であってもよい。
ここで、前記フラグバッファに設定される各フラグは、データ判定部によって対応する成分値が前記特定の値であると判定された場合は"0"を、前記特定の値以外であると判定された場合は"1"を示す構成としてもよい。この構成によれば、フラグ"0"はブロック中の存在確率が高い成分値に対応するので、フラグバッファを予め0クリアしておけば"0"を設定する処理を削減し、さらに低消費電力を図ることができる。また、フラグが"1"の場合のみ、データバッファ制御部はデータバッファへの書込みおよび読出しの動作をすればよいので、フラグによりデータバッファへの書き込みおよび読み出しを容易に制御することができる。
ここで、前記符号化データに対応する符号化規格がMPEG2もしくはH.264、VC−1である場合、前記フラグバッファに設定される各フラグは、データ判定部によって対応する成分値がゼロであると判定された場合は"0"を、ゼロ以外であると判定された場合は"1"を示す構成としてもよい。
ここで、前記フラグバッファ制御部は、さらに、前記最終の成分値に対応するフラグの次のフラグとして"0"を前記フラグバッファに設定してもよい。この構成によれば、最終の成分値に後続するブロック末尾までの連続するゼロ係数に対応する複数のフラグ(従来技術におけるブロック末尾の複数のフラグ)を、1ビットのフラグで代表することができ、明示的にフラグのビット数を圧縮することができる。
ここで、前記最終判定部は、前記第1パラメータおよび第2パラメータのどちらを用いて前記最終の成分値の判定を行うかを選択するようにしてもよい。
ここで、前記最終判定部は、前記符号化データに対応する符号化規格がMPEGもしくはVC1である場合は前記第1パラメータを、符号化規格がH.264である場合は前記第2パラメータを選択するようにしてもよい。この構成によれば、符号化データの種類(どの規格に準拠して符号化されているか)に応じて、最終判定部の動作を切り換えることができる。
ここで、前記最終判定部は、復号された成分値が前記最終の成分値であると判定した場合に、前記フラグバッファ制御部に書き込み停止要求を通知し、前記フラグバッファ制御部は、前記最終判定部から出力される前記書き込み停止要求の通知を受けたとき、前記フラグバッファへのフラグの設定を停止するようにしてもよい。この構成によれば、前記最終の成分値より後の成分値に対応するフラグの設定を停止する処理を高速に行うことができる。
ここで、前記最終判定部は、さらに、前記選択部から出力された成分の個数が1ブロック内の前記最終の成分値までの個数に達したとき、前記フラグバッファ制御部に更新停止要求を通知し、前記フラグバッファ制御部は、前記最終判定部から読み出し停止要求が通知されたとき、当該ブロック内の前記最終の成分値より後の成分値の読み出しにおいて前記フラグバッファの読み出しポインタの更新を停止し、フラグとしてゼロをデータバッファ制御部に出力するようにしてもよい。この構成によれば、ブロック内の成分値の読み出し動作が、前記最終の成分値にまで完了したとき、前記最終の成分値より後の成分値から当該ブロックの末尾の成分値までフラグとして"0"を繰り返し出力する。これにより、フラグバッファおよびデータバッファの読み出し動作においても消費電力を低減することができる。
ここで、前記フラグバッファ制御部は前記ブロックに対応する符号化データの復号開始前または復号終了後に、フラグバッファの1ブロックに対応する領域をゼロに初期化してもよい。この構成によれば、フラグバッファを予め0クリアする初期化によって、ゼロの成分値毎に0を設定する処理を削減し、さらに低消費電力を図ることができる。
ここで、前記可変長復号装置は、さらに、前記データバッファの空き領域と前記フラグバッファの空き領域とを管理し、空き領域に応じて、前記可変長復号化部に対して復号停止要求または次ブロックの復号許可を出力する残量管理部を備える構成としてもよい。この構成によれば、前記フラグバッファは、前記最終の成分値の次の成分値からブロック末尾の成分値までの個数のフラグを保持しないので、その個数分の空き領域をフラグバッファおよびデータバッファに確保することができる。この空き領域を次ブロックのために有効に利用することができる。また、先行して次ブロックの可変長復号化処理を行うので、処理性能を向上させることができる。
ここで、前記残量管理部は、復号された成分が前記最終の成分値であると前記最終判定部によって判定されたとき、前記データバッファおよび前記フラグバッファに空き領域がある場合に、前記可変長復号化部に対して次ブロックの復号許可を出力するようにしてもよい。この構成によれば、上記の空き領域を次ブロックのために有効に利用することができる。また、先行して次ブロックの可変長復号化処理を行うので、処理性能を向上させることができる。
ここで、前記フラグバッファは、少なくとも64個のフラグを保持する領域を有する構成としてもよい。
ここで、前記データバッファ制御部は、前記ブロックに対応する符号化データの復号開始前もしくは復号終了後に、データバッファ内の1ブロックに対応する領域をゼロ値に初期化するようにしてもよい。
ここで、前記データバッファの1ブロックに対応する領域は、64個の成分値を保持可能な構成としてもよい。
ここで、前記バッファ残量管理部は、前記データバッファおよび前記フラグバッファの一方に空き領域がないとき、前記可変長復号化部に対して復号停止要求を出力するようにしてもよい。
また、本発明の他の可変長復号装置は、可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、前記符号化データから、ブロック内に含まれる非ゼロ係数の個数を示す第1の符号であるTotalCoeffと、ブロック内の最終の非ゼロ値係数より前に含まれるゼロ係数の個数を示す第2符号であるtotalzeroと、非ゼロ係数の値を示す第3符号であるLEVELと、前記LEVELの前のゼロ係数の連続個数を示す第4符号であるrun_beforeを検出および復号する可変長復号化部と、前記第1符号および前記第2符号に基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する最終判定部と、ブロック内の先頭の係数から、前記最終判定部に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持するフラグバッファと、復号された係数のうち、非ゼロ係数のみを保持するデータバッファと、復号された第1符号から第4符号に基づいて、ブロック内の先頭の係数から前記最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグを前記フラグバッファに設定し、前記最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、フラグバッファに設定されたフラグに基づいて、非ゼロ係数のみを前記データバッファに書き込む制御と、前記データバッファから非ゼロの係数を読み出す制御とを行うデータバッファ制御部と、データバッファから読み出された係数およびゼロのうち一方を選択する選択部とを備え、前記フラグバッファ制御部は、フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する。
また、本発明のさらに他の可変長復号装置は、可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、前記符号化データから、ブロック内に含まれる非ゼロ係数のうち最終の非ゼロ係数を示す符号であるEOBと、非ゼロ係数の値を示す符号であるLEVELと、非ゼロ係数の前に連続するゼロ係数の個数を示す符号であるRUNとを検出および復号する可変長復号化部と、前記EOBに基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する最終判定部と、ブロック内の先頭の係数から、前記最終判定部に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持するフラグバッファと、復号された係数のうち、非ゼロ係数のみを保持するデータバッファと、前記LEVELおよび前記RUNに基づいて、ブロック内の先頭の係数から前記最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグを前記フラグバッファに設定し、前記最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、フラグバッファに設定されたフラグに基づいて、非ゼロ係数のみを前記データバッファに書き込む制御と、前記データバッファから非ゼロの係数を読み出す制御とを行うデータバッファ制御部と、データバッファから読み出された係数およびゼロのうち一方を選択する選択部とを備え、前記フラグバッファ制御部は、フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する。
本発明の可変長復号化装置によれば、フラグバッファおよびデータバッファにおける1ブロックあたりの必要な記憶領域のサイズを削減し、フラグバッファおよびデータバッファを効率よく使用することができる。また、フラグの書込みおよび読出し回数を削減するので、消費電力を低減することができる。さらに、可変長復号の処理性能を向上させることができる。
図1は、本発明の実施の形態1における可変長復号化装置の構成を示す図である。 図2Aは、MPEG2でのブロック内の係数の配置を示す図である。 図2Bは、MPEG2でのブロック内の係数に対応するアドレスを示す図である。 図3は、従来技術における情報レジスタと、本実施形態におけるデータバッファおよびフラグバッファのデータ例を示す図である。 図4Aは、フラグバッファのアドレスであるFWPおよびFRPとの関係を示す図である。 図4Bは、FRPの更新停止および再開を制御する回路例を示す図である。 図5は、フラグバッファの空き領域を活用して先行して次ブロックの復号した場合のフラグバッファのデータ例を示す図である。 図6は、マクロブロック単位で復号化処理をした場合のフラグバッファのデータ例を示す図である。 図7は、次の世代のマクロブロックを先行して復号した場合のフラグバッファのデータ例を示す図である。 図8は、本発明の実施の形態3における可変長復号化装置の構成を示す図である。 図9は、4×4係数からなるブロックの一例を示す図である。 図10は、4×4ブロックをジグザグスキャンの逆順に並べたデータ例を示す図である。 図11は、復号結果の一例を示す図である。 図12は、4×4ブロックの復号処理を説明するための図である。 図13Aは、4×4ブロックの復号処理におけるフラグバッファ、FWPおよびFRPを示す図である。 図13Bは、FWPの更新および再開を制御する回路例を示す図である。 図14は、8×8係数からなるブロックの説明図である。 図15は、本発明の実施の形態5における可変長復号化装置の構成を示す図である。 図16は、フラグバッファのアドレスであるFWPおよびFRPとの関係を示す図である。 図17は、従来技術における代表的な画像圧縮処理フローを示す図である。 図18は、直交変換されたブロックの周波数成分を示す図である。 図19は、ジグザグスキャンを示す図である。 図20は、従来技術における代表的な画像復号化処理フローを示す図である。 図21は、従来技術における可変長復号化部の構成を示す図である。 図22は、従来技術におけるランレングス符号の復号回路を示す図である。 図23は、従来技術におけるH.264/AVCに対応したランレングス符号の復号回路を示す図である。
(実施の形態1)
以下、本発明の実施の形態1について、図面を参照しながら説明する。
図1は、本発明の実施の形態1における可変長復号化装置の構成を示す図である。なお、本実施の形態においては、1ブロックが8×8個で構成されている場合で且つ、MPEG2の符号化処理を行う場合について説明する。
図1において、可変長復号化装置は、可変長復号化部100、データ判定部101、判定データ記憶部102、データバッファ103、フラグバッファ104、データバッファ制御部105、最終有効データ判定部106、フラグバッファ制御部107、バッファ残量管理部108、選択部109及び後段処理部110を備える。
可変長復号化部100は、符号化データを成分値(すなわち係数)に復号する。
データ判定部101は、復号された成分値が特定の値であるか否かを判定する。ここで、特定の値は、典型的には"0"であるが、"0"を表すコードであってもよいし、"0"以外の任意の値であってもよいし、"0"以外の任意の値を表すコードであってもよい。
判定データ記憶部102は、特定の値を示す判定データを記憶し、データ判定部101に出力する。
データバッファ103は、復号された成分値のうち、データ判定部101によって特定の値でないと判定された成分値(例えば非ゼロ係数)のみを保持するデータバッファである。
最終有効データ判定部106は、復号された成分値が、ブロック内の特定の値以外の成分値のうちのブロック内の最終の成分値であるか否かを判定する。つまり、復号された成分値が、ブロック内の最後の非ゼロ係数であるか否かを判定する。
フラグバッファ104は、ブロックの先頭の成分値から、最終有効データ判定部106によって最終の成分値であると判定された成分値まで、のそれぞれに対応するフラグであって、対応する成分値が特定の値でないか特定の値であるかを示すフラグを保持するフラグバッファである。例えば、フラグ"0"は特定の値の成分値(ゼロ係数)に、フラグ"1"は、特定の値以外の成分値(非ゼロ係数)に対応する。
フラグバッファ制御部107は、データ判定部101による判定結果のうち、ブロックの先頭の成分値から最終有効データ判定部106によって最終の成分値であると判定された成分値までに対応する判定結果のそれぞれを、フラグとしてフラグバッファに設定する。さらに、フラグバッファ制御部107は、最終の成分値に対応するフラグの次のフラグとして"0"を設定してもよい。このフラグ"0"は、最終の成分値に後続するブロック末尾までの連続するゼロ係数に対応する複数のフラグの代表として設定される1ビットのフラグである。さらに、フラグバッファ制御部107は、フラグバッファ104にフラグを書き込むためのアドレスであるフラグバッファライトポインタFWPを保持するレジスタと、フラグバッファ104からフラグを読み出すためのアドレスであるフラグバッファリードポインタFRPを保持するレジスタとを有する。また、フラグバッファ制御部107は、最終の成分値であると判定された成分値に対応するデータバッファのアドレスである最終アドレスを保持するレジスタを有する。また、フラグバッファ制御部107は、フラグバッファ104に保持されたフラグおよび最終アドレスに基づいて選択部109の選択を制御する。
データバッファ制御部105は、フラグバッファ104に設定されたフラグに基づいて、データ判定部101によって特定の値でないと判定された成分値のみをデータバッファ103に書き込む制御と、データバッファ103から特定の値でない成分値を読み出す制御とを行う。この制御のために、データバッファ制御部105は、データバッファ103に特定値以外の成分値(非ゼロ係数)を書き込むためのアドレスであるデータバッファライトポインタDWPを保持するレジスタと、データバッファ103から非ゼロ係数を読み出すためのアドレスであるデータバッファリードポインタDRPを保持するレジスタとを有する。
バッファ残量管理部108はフラグバッファ104及びデータバッファ103の容量管理を行う。
選択部109は、データバッファ103から読み出された成分値および判定データ記憶部102に記憶された判定データ(例えばゼロ)のうち一方を選択して、選択結果を後段処理部110からの読み出し要求への応答として出力する。
後段処理部110は、選択部109からの復号された係数を後段処理する後段処理部である。
まず、可変長復号化部100に入力された符号化データは、可変長復号化処理をされ図19に示されるジグザグスキャン順でデータ判定部101に出力される。このとき、上記で示したように直交変換部により周波数領域に変換されているため出力される係数の多数がゼロ値である。図2Aは、MPEG2でのブロック内の係数の配置と係数の一例とを示す図である。図2Bは、MPEG2でのブロック内の係数に対応するアドレスの一例を示す図である。図2Aでは、丸印の12の値をもつ係数より後ろの係数が全てゼロ値になっている。
上記に示す特徴により、判定データ記憶部102にはゼロ値を設定する。前記データ判定部101に出力された成分値(つまり、復号化された係数であり、以下単に係数と呼ぶ。)はゼロ値と逐次比較され結果を前記フラグバッファ104に通知する。判定結果が設定値と等しければ、つまり係数がゼロ値であれば前記フラグバッファに"0"を格納し、ゼロ値でなければ"1"を格納する。
前記フラグバッファに格納される値が"1"である場合、前記フラグバッファより前記データバッファ制御部105に対して前記データバッファ103の書き込みポインタ位置(以下、DWP)の更新を通知し、その際の非ゼロ値を前記データバッファに格納する。上記の動作により前記データバッファには非ゼロ値のみが登録される。
上記処理は1ブロック単位、つまり8×8の64個の係数からなるブロック単位で行われる。MPEG2の符号化規格では図2A、図2Bで示すように、上記64個の係数のうちある係数以降は全てゼロ値であるという情報を別途保持している。これをEOB(End Of Block)と呼ぶ。前記EOBを可変長符号化処理中に検出した場合、前記最終有効データ判定部に対して出力する。前記最終有効データ判定部は前記EOBを用いて、前記フラグバッファ制御部に対してDWPの値を保持するとともに、DWPの更新を停止する制御を行う。
図3は、データバッファおよびフラグバッファの保持されたデータ(このデータは図2Aのブロックに対応する。)の一例を示す図である。同図では、従来技術の情報レジスタのデータ例も示している。同図のように、データバッファ103は、非ゼロ係数のみを格納する。フラグバッファ104は、ブロック内の先頭の係数から、最終有効データ判定部106に判定された最終の非ゼロ係数(同図では12の値をもつ係数)までのそれぞれの係数に対応するフラグを保持する。各フラグは、対応する係数の値がゼロであるか非ゼロであるかを示す。同図では、フラグが"1"のとき非ゼロであることを、"0"のときゼロであることを示す。さらに、フラグバッファ104は、最終の非ゼロ係数に対応するフラグの次のフラグとして"0"を保持する。最終の非ゼロ係数に対応するフラグの次のフラグ"0"は、46個のフラグを代表するフラグであり、言い換えれば、46個のフラグが1個のフラグに圧縮されている。
上記制御により通常は全64個分のフラグバッファの個数が必要であったものを、EOBを検出するまでの係数の個数分で対応することが可能となる。また、前記データバッファに関してもEOBを検出するまでの非ゼロ係数のみを格納すればよい。
次に、前記データバッファに登録された係数を前記後段処理部へ出力する。後段処理部より前記フラグバッファ制御部に読み出し要求がだされた場合、フラグバッファ制御部はフラグバッファに対して読み出しポインタ位置(以下、FRP)の更新を通知し、その際フラグバッファのFRP位置の値が"0"であった場合は、前記データバッファ制御部に対してデータバッファの読み出しポインタ位置(以下、DRP)の更新停止を要求し、判定データ記憶部に格納されているゼロ値を出力するとともに前記選択部の出力を判定データ記憶部の出力に切り替え、前記後段処理部にデータを出力する。FRP位置の値が"1"であった場合は、DRPを更新させデータバッファに格納されている係数を出力するとともに、前記選択部の出力をデータバッファの出力に切り替え、前記後段処理部にデータを出力する。
更に、前記後段処理部の読み出し要求は、前記最終有効データ判定部に対しても入力され読み出し回数をカウントする。読み出し回数と前記EOBの値もしくはFWPの値とを比較し等しい場合は、前記後段処理部の読み出し要求がある場合でも前記フラグバッファのFRPは更新せずにFRPは常に同じ位置を読み出す。上記処理は、例えば最終有効データ判定部106内に図4Bに示すような回路を備えることにより実現される。これにより、EOB以降のフラグバッファのWRP更新がなされていなかった部分を連続して読み出すことを可能にする。つまり、EOB以降のゼロ値は、フラグバッファに登録される係数1個分の情報に圧縮されたことと等価となり見かけ上フラグバッファを削減した効果を得られる。
図4Aは、フラグバッファ104のアドレスであるFWPおよびFRPとの関係を示す図である。同図のように、フラグバッファ制御部107は、FWPおよびFRPを更新しながらフラグをフラグバッファ104に設定する。さらに、フラグバッファ制御部107は、EOBが検出されたとき、最終の非ゼロ係数に対応するフラグの次のアドレスにFWPを更新し、圧縮されたフラグ"0"を設定する。
このように、EOB以降の係数がフラグバッファ上で圧縮された場合、通常64個分の領域を必要とするフラグバッファが64−N個分未使用になる。その際、前記バッファ残量管理部は、フラグバッファの残量を確認し前記可変長復号化部に対して次のブロックの復号化を要求する。上記処理により、通常フラグバッファが係数64個分を格納するまで次のブロックの処理を実施できなかったものを、前記後段処理部とは独立して先行的に処理することが可能となり、可変長復号化処理の処理性能向上の効果を得られる(図5)。上記処理を実現する場合、可変長復号化部は、EOB以降の係数の出力を行わない機能も有する。図5に、先行して次のブロックを処理した場合のフラグバッファ104のデータ例を示す。同図上段は、Y0ブロックの復号完了時にデータ例を示す。同図下段は、Y0ブロックの復号後に、次のY1ブロックと次の次のY2ブロックとを先行して復号しているデータ例を示す。
更に、ブロック単位ではなくブロックがY0、Y1、Y2、Y3、Cb、Crの6個で構成されたマクロブロック(以下、MB)単位で上記処理を実現する(図6、図7)。動画像はMBの塊を複数で構成される。つまり動画像全体の処理性能向上を実現する場合は、MB単位での処理性能を向上させることが必須となる。図6、図7では、図5で示すフラグバッファの有効利用をMB単位にまで発展させた場合である。EOBまでの係数が少ないブロック/マクロブロックが多く存在することが考えられる場合などフラグバッファの領域が確保できる可能な限り可変長復号化処理の先行処理を実現できる本実施の形態は、更に可変長復号化処理性能を向上させることが可能となる。
(実施の形態2)
以下、本発明の実施の形態2について図面を参照しながら説明する。本発明の実施の形態2の構成図は、本発明の実施の形態1と同じ図1を用いているため説明を省略する。
実施の形態2において、前記最終有効データ判定部に通知する情報がEOBでなくTotalCoeffとtotalzerosである点において実施の形態1と異なる可変長復号化装置であって、かかる構成によれば、TotalCoeffとtotalzerosを加算した値から、全ブロック数を減算することによって、EOBと同様に以降ゼロ値が連続する値を得ることが可能であり、実施の形態1と同様の効果を得られる。
(実施の形態3)
以下、本発明の実施の形態3について、図面を参照しながら説明する。
図8は、本発明の実施の形態3における可変長復号化装置の構成図である。なお、本実施の形態においては、1ブロックが4×4個で構成されている場合で且つ、H.264/AVCの符号化処理を行う場合について説明する。
図8において、可変長復号化装置は、可変長復号化部200、データバッファ203、フラグバッファ204、データバッファ制御部205、最終有効データ判定部206、フラグバッファ制御部207、バッファ残量管理部208、選択部209及び後段処理部210を備える。
可変長復号化部200は、符号化データから、ブロック内に含まれる非ゼロ係数の個数を示す第1の符号であるTotalCoeffと、ブロック内の最終の非ゼロ値係数より前に含まれるゼロ係数の個数を示す第2符号であるtotalzeroと、非ゼロ係数の値を示す第3符号であるLEVELと、LEVELの前のゼロ係数の連続個数を示す第4符号であるrun_beforeを検出および復号する。
データバッファ203は、復号された係数のうち、非ゼロ係数のみを保持する。
フラグバッファ204は、ブロック内の先頭の係数から、最終有効データ判定部206に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持する。
データバッファ制御部205は、フラグバッファ204に設定されたフラグに基づいて、非ゼロ係数のみをデータバッファ203に書き込む制御と、データバッファ203から非ゼロの係数を読み出す制御とを行う。
最終有効データ判定部206は、第1符号および第2符号に基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する。すなわち、最終有効データ判定部206はTotalCoeffとtotalzerosとを用いて1ブロック(4×4ブロック)の最終の非ゼロ係数の位置を検索し、フラグバッファ制御部207に通知する。
フラグバッファ制御部207は、復号された第1符号から第4符号に基づいて、ブロック内の先頭の係数から最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグをフラグバッファ204に設定し、また、最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持する。また、フラグバッファ制御部207は、フラグバッファ204に保持されたフラグおよび最終アドレスに基づいて選択部209の選択を制御する。
バッファ残量管理部208はフラグバッファ及びデータバッファの容量管理を行う。
選択部209は、データバッファ203から読み出された係数およびゼロのうち一方を選択し、選択結果を後段処理部110からの読み出し要求への応答として出力する。
後段処理部210は選択部209からの復号された係数を後段処理する。
まず、可変長復号化部200は、非ゼロ係数の個数を表すTotalCoeffと、非ゼロ係数値の大きさを表すlevelと、データスキャン方向において最後のlevelより前のゼロ係数の個数を表すtotalzerosと、データスキャン方向においてlevelの前のゼロ係数の連続個数を表すrun_beforeとを順次復号する。
図9に順次復号された例を示す。復号化処理ではジグザグスキャンの逆順にデータが復号される。図10は、図9の4×4ブロックデータをジグザグスキャンの逆順に並べたものである。図11は、図8で示した一例の復号例である。
復号化の手順としては、16個の係数のうちの非ゼロ係数(+23、−4、+11、+8、−3、+1、−1)の個数であるTotalCoeff=7が復号される。次に、非ゼロ係数の大きさを示すlevelが、逆ジグザグスキャン順に、−1→+1→−3→+8→+11→−4→+23と、順次復号される。次に、ジグザグスキャン順の最後のlevel=−1の前に存在するゼロ値の総個数totalzeros=5が復号される。最後にlelveの前に存在するゼロ値の個数run_beforeが逆ジグザグスキャン順に、1→2→1→1→0→0が順次復号される。
復号化データにおいて、
・level=−1の前に存在するゼロ値の個数は1である、
・level=+1の前に存在するゼロ値の個数は2である、
・level=−3の前に存在するゼロ値の個数は1である、
・level=+8の前に存在するゼロ値の個数は1である、
・level=+11の前に存在するゼロ値の個数は0(存在しない)である、
・level=−4の前に存在するゼロ値の個数は0である、
・level=+23の前に存在するゼロ値の個数は0である、
という結果が得られる。
この結果に基づいてrun_beforeは、逆ジグザグスキャン順に、1→2→1→1→0→0となる。
図12を用いて処理の流れを説明する。
まず、level値は非ゼロ値のみしか存在しないので、ゼロ値との比較の必要はなく連続でデータバッファに書き込む。
次に、TotalCoeff=7とtotalzeros=5の値が復号されるので上記2つの値を最終有効データ判定部に通知する。ブロックの構成数が16個であることがわかっているので、16−12=4がゼロ値の連続する回数である。H.264の場合は逆スキャン順でデータが復号されるのでフラグバッファの書き込みポインタFWPの更新を係数4つ分停止する。
係数5つ目は必ずlevel値であることがわかっているので、FWPを1つ進めた位置のフラグバッファの値は"1"を設定する。この"1"に対応するlevelが最初の係数である1である。
次に、run_beforeの値を使って(図13A、図13B参照)、フラグバッファのFWPをスキップし、スキップされた区間のフラグバッファには"0"を格納する。run_beforeは、データスキャン方向でLEVELの前のゼロ係数の連続個数を表すものである。つまり、FWPに"1"を格納した次のFWPが"1"になるのはrun_before分だけ進んだ先になるからである。
上記のように、最初のFWPの停止とrun_before値分のFWPのスキップを最終有効データ判定部とフラグバッファ制御部を用いることで実現が可能となり、実施の形態1と同様、符号化係数4つ分のフラグバッファの見かけ上削減が実現可能となる。
次に、係数の読み出しでは、実施の形態1とは逆となり、TotalCoeff=7とtotalzeros=5の値から算出されたFWPの更新停止期間係数4個分を読み出し開始時に停止させ、その後、連続してフラグバッファとデータバッファを用いて係数を読み出す。
更に、かかる構成によれば、H.264/AVCの符号化規格において、実施の形態1同様フラグバッファとデータバッファの効率化を実現でき、更に可変長復号化部の性能向上も実現できる。
(実施の形態4)
以下、本発明の実施の形態4について図面を参照しながら説明する。本発明の実施の形態4の構成図は、本発明の実施の形態3と同じ図2を用いているため説明を省略する。
実施の形態4において、構成する1ブロックが4×4でなく8×8である点が実施の形態3と異なる可変長復号化装置である。かかる構成によれば、図14で示すように8×8を構成するブロックは、可変長復号化処理時は4×4単位で処理されデータバッファに出力される際にスキャン順に出力され、ブロック構成を変更するため4×4単位で高周波成分がゼロ値であった場合には、8×8ブロック構成になってもゼロ値を多数含むため、実施の形態3と同様の効果を得られる。
(実施の形態5)
以下、本発明の実施の形態5について、図面を参照しながら説明する。
図15は請求項20に示すものであり、本発明の実施の形態5における可変長復号化装置の構成図である。なお、本実施の形態においては、1ブロックが8×8個で構成されている場合で且つ、MPEG1、MPEG2、MPEG4、VC−1の符号化処理を行う場合について説明する。
図15において、可変長復号化装置は、可変長復号化部300、データバッファ303、フラグバッファ304、データバッファ制御部305、最終有効データ判定部306、フラグバッファ制御部307、バッファ残量管理部308、選択部309および後段処理部310を備える。
可変長復号化部300は、符号化データから、ブロック内に含まれる非ゼロ係数のうち最終の非ゼロ係数を示す符号であるEOBと、非ゼロ係数の値を示す符号であるLEVELと、非ゼロ係数の前に連続するゼロ係数の個数を示す符号であるRUNとを検出および復号する。
最終有効データ判定部306は、EOBに基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する。
データバッファ303は、復号された係数のうち、非ゼロ係数のみを保持する。
フラグバッファ304は、ブロック内の先頭の係数から、最終有効データ判定部306に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持する。
フラグバッファ制御部307は、LEVELおよびRUNに基づいて、ブロック内の先頭の係数から最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグをフラグバッファ304に設定し、最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持する。また、フラグバッファ制御部307は、フラグバッファに保持されたフラグおよび最終アドレスに基づいて選択部309の選択を制御する。
データバッファ制御部305は、フラグバッファ304に設定されたフラグに基づいて、非ゼロ係数のみをデータバッファ303に書き込む制御と、データバッファ303から非ゼロの係数を読み出す制御とを行う。
バッファ残量管理部308はフラグバッファ及びデータバッファの容量管理を行う。
選択部309は、データバッファから読み出された係数およびゼロのうち一方を選択する。
後段処理部310は選択部309からの復号された係数を後段処理する。
実施の形態5において、可変長復号された係数を逐次判定値と比較し、比較結果をフラグバッファおよびデータバッファに格納するのではなく、連続するゼロ値の値によってフラグバッファを更新する点において実施の形態1と異なる可変長復号化装置である。
本実施の形態の可変長復号化部は、ゼロ値の連続する個数RUNと非ゼロ値LEVELを復号するものであり、上記RUNの値を前記フラグバッファ制御部に通知することで図16に示すようにフラグバッファのFWPをRUNの値分スキップさせ、スキップされた区間の符号化係数はゼロ値となり、その区間はフラグバッファを"0"を格納する。更に、スキップした先のフラグバッファに"1"を書き込み上記フラグバッファに対応するLEVEL値がデータバッファに格納される。
また、最終有効データの判定は、実施の形態1同様EOBを用いて行いEOBが検出された場合はFWPとFRPはゼロ値が連続する期間フラグバッファは同じ部分を参照し、フラグバッファの見かけ上の削減を実現する。
かかる構成によれば、符号化規格を限定した場合において、前記記載のデータ判定部や判定データ記憶部を使用せずに実施の形態1と同様の効果を実現することが可能である。
(実施の形態6)
実施の形態6に関しては、上記に示す実施の形態1から実施の形態5までに共通する部分に関することであるため詳細な説明は省略する。全実施の形態に記載されているフラグバッファは判定結果が判定値と等しい場合かもしくは、ゼロ値である場合、ないしは、run_before、RUN値によってポインタがスキップすることによるフラグへの"0"を格納する処理を割愛するために、1ブロックの読み出し終了時に対象のフラグバッファを全て"0"に更新する初期化処理を行うことも可能である。
かかる構成によれば、フラグバッファに"0"を格納する処理を省略することで更に可変長復号化処理の処理性能向上を実現できる。
本発明にかかる可変調復号化装置は、MPEG1、MPEG2、MPEG4、H.264/AVC、VC−1の動画像符号化規格の可変長復号化処理の面積削減と処理性能向上を可能とするため動画像符号化などの画像符号化の分野において有用である。
10 直交変換処理
11 量子化処理
12 可変長符号化処理
20 可変長復号処理
21 逆量子化処理
22 逆直交変換処理
100 可変長復号化部
101 データ判定部
102 判定データ記憶部
103 データバッファ
104 フラグバッファ
105 データバッファ制御部
106 最終有効データ判定部
107 フラグバッファ制御部
108 バッファ残量管理部
109 選択部
110 後段処理部
200 可変長復号化部
203 データバッファ
204 フラグバッファ
205 データバッファ制御部
206 最終有効データ判定部
207 フラグバッファ制御部
208 バッファ残量管理部
209 選択部
210 後段処理部
300 可変長復号化部
303 データバッファ
304 フラグバッファ
305 データバッファ制御部
306 最終有効データ判定部
307 フラグバッファ制御部
308 バッファ残量管理部
309 選択部
310 後段処理部
400 入力部
401 可変長復号部
402 書き込み制御部
403 データ選択部
404 読み出し制御部
405 データバッファ
406 後段処理部
500 入力部
501 可変長復号化手段
502 アドレス加算手段
503 書き込み制御手段
504 読み出し制御手段
505 データ選択手段
506 後段処理手段
507 出力手段
508 データバッファ
509 情報レジスタ
本発明は可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置に関し、特に、画像符号化/復号化処理における基幹処理である可変長復号装置に関する。
現行の動画圧縮/伸張は、動画符号化規格としてMPEG1、MPEG2、MPEG4、H.264/AVC、VC−1等のMPEG(Moving picture expert group)が存在し、画像の大きさや利用媒体などの違いによって、それぞれに対応できるように規格で定められている。例えば、MPEG1、MPEG2であればDVD等の比較的画像サイズの大きな媒体に対して使用され、MPEG4やH.264/AVCの一方式では携帯電話や1seg等の比較的画像サイズの小さい媒体に対して使用され、H.264/AVC、VC−1ではHDTV等の画像サイズが非常に大きい媒体に対して使用される。昨今、HDTVの急速な普及や2K4Kといった高解像度の画質の処理が必要不可欠となっており動画像処理の効率化も必須となっている。
図17は、従来技術における代表的な画像圧縮処理フローを示す図である。動画符号化を行う場合は、動画像をマクロブロック(MB)と呼ばれる処理単位に分割し処理を行う。MBは輝度成分と色差成分とで構成されており、輝度成分はY0、Y1、Y2、Y3の4個で成り、また色差成分はCb、Crの2個で成っている。各Y、C成分は8×8のブロックの64個の画素成分で構成されている。MPEG1、MPEG2、MPEG4、H.264/AVC、VC−1に共通する処理として直交変換処理や可変長符号化処理、量子化処理等がある。
直交変換処理10はY0、Y1、Y2、Y3、Cb、Crブロック毎に行われる処理であり、空間成分である動画像信号を周波数成分に変換する技術である。図18は、直交変換されたブロックの周波数成分を示す図である。直交変換処理を行うことによって、図18に示すように自然画像などは周波数成分に変換した際にデータの偏りが発生し、可変長符号化等でのデータ圧縮に有効に作用する。
量子化処理11は各符号化規格によってそれぞれ処理方式が異なるが、外部から設定される量子化値を用いて直交変換されたDCT係数を除算することで量子化係数を生成する。この処理によって画質にさほど影響を与えないDCT係数の高周波領域にゼロ値を集中させることにより後段の可変長符号化処理の符号化効率を更に高める。
更に、可変長符号化処理12にて図19に示すようなジグザグスキャンの順でゼロ値の個数を表すRUNと符号化係数の大きさを表すLEVELとを組み合わせてランレングスデータを生成する。それらの組み合わせの出現率に応じて長さの異なる符号を割り当てることでデータの容量を小さくする。
図20は、従来技術における代表的な画像復号化処理フローを示す図である。図18の画像圧縮処理によって符号化された符号化データを復号する画像復号化処理を示す、可変長復号処理20、逆量子化処理21、及び逆直交変換処理22からなる。
可変長復号処理20は、可変長符号化データをRUNとLEVELとの組み合わせとして復号した上で、RUNの大きさ分だけゼロ値を生成し、生成したゼロ値とLEVELとを組み合わせる。この動作が8×8ブロック単位で繰り返される。逆量子化処理21は上記で生成された8×8ブロック単位の符号化データを量子化時に使用した量子化係数を乗算することで圧縮前のデータである逆量子化係数に復元する。逆直交変換処理22は、上記生成された逆量子化係数を周波数領域から空間領域に変換することで画像データとして復号する。
この従来の可変長復号処理20の構成について図21を用いて説明する。図21は、従来技術における可変長復号処理20の構成を示す図である。入力部400から入力される可変長符号データを可変長復号部401においてゼロ値の個数を表すRUNと係数値の大きさを表すLEVELの組み合わせとして復号する。書き込み制御部402は復号されたRUNの個数だけデータバッファ405へゼロ値を書き込むようにデータ選択部403に選択信号を供給し、RUNの個数だけゼロ値を書き込んだ後、LEVELで表される係数をデータバッファ405へ書き込む。この動作が8×8画素分生成されるまで繰り返された後、読み出し制御部404によってデータバッファ405からジグザグスキャン(図19)で順次読み出し、後段処理部406である逆量子化処理21へ出力する。しかしながら、上記従来の構成では、RUNの個数分だけゼロ値である係数を連続してデータバッファに書き込みしているためデータバッファへの無駄なアクセスが発生してしまう課題があった。
上記問題の解決案の一つとして、特許文献1において公開しているランレングス符号の復号回路がある。その1例について図22を用いて説明する。
図22において、入力部500は可変長符号化・ランレングス符号化データを入力する。可変長復号化手段501は入力部500から入力されたデータを、ゼロ値の個数を表すRUNと、係数値の大きさを表すLEVELとの組み合わせとして順次復号する。データバッファ508はLEVELを格納する。アドレス加算手段502はRUNによるゼロ値の個数に基づいてこのデータに対応するLEVELのアドレスを演算する。情報レジスタ509はアドレス加算手段502の結果を記憶するM×Nビットのレジスタである。書き込み制御手段503はアドレス加算手段502からの情報に基づいてLEVELをデータバッファ508へ格納する。読み出し制御手段504は情報レジスタ509の値に基づいてデータバッファ508からLEVELを読み出す。データ選択手段505は情報レジスタ509の値に基づいて、データバッファ508に格納されているLEVELとゼロ値のうちいずれかを選択して出力する。後段処理手段506はデータ選択手段505からのデータを後段処理する。出力手段507は後段処理手段506からのデータを出力する。
入力部500から可変長符号化・ランレングス符号化データが入力されると、可変長復号化手段501は、入力される可変長符号化・ランレングス符号化データを、ゼロ値の個数を表すRUNと係数値の大きさを表すLEVELとの組み合わせとして順次復号する。
アドレス加算手段502は、復号化したデータにおいて、図19に示すジグザグスキャンの順に、すなわち1→2→9→17・・・という順に、復号されたRUNの大きさに基づいてアドレスを演算する。情報レジスタ509は、RUNの大きさ分だけジグザグスキャン順に例えばゼロ値を連続して記憶し、その後の位置にLEVELのアドレスとして例えば"1"を記憶する。書き込み制御手段503は、アドレス加算手段502が演算したアドレスにLEVELを書き込む。書き込み制御手段503は、1ブロック分のLEVELの書き込みが終了したか否かを判断し、未終了であると判断するときは復号の最初のステップに戻り、終了したと判断するときは読み出しの処理に進む。可変長復号化手段501によって1ブロックに相当するRUNとLEVELとの組み合わせが復号されたうえでLEVELの書き込みが終了すると、読み出し制御手段504は、後段処理手段506からの読み出し許可を示す制御信号に基づいて情報レジスタ509の記憶内容を判断してその判断結果に基づいて読み出し処理を制御する。すなわち、読み出し制御手段504は、情報レジスタ509に"1"が格納されているビットに相当するアドレスをデータバッファ508に出力したうえで、そのアドレスに格納されているLEVELを読み出す。データ選択手段505では読み出し制御手段504が情報レジスタ509を判断する際、同時に、情報レジスタ509のビットがゼロ値の場合は、後段処理手段506にゼロ値を出力し、"1"の場合は、後段処理手段506にデータバッファ508から読み出した出力データLEVELを出力する。後段処理手段506はデータ選択手段505を介して受け取ったデータを後段処理したうえで、出力手段507から処理したデータを出力する。
上記の従来の技術によれば、データバッファ508の後段にデータ選択手段505を設けたうえで、データバッファ508には、ゼロ値を格納することなく、LEVELのみを格納する。これにより、ゼロ値は後段のデータ選択手段505において選択される。可変長復号化手段501はその動作を停止させる必要がなく、高速化に有利となる。そして、必要最低限の構成で、アドレスの保持器の情報に基づいてLEVELのみを読み出すことで、データバッファ508へのアクセスを削減できることから、低消費電力の可変長復号器を提供することができる。
また、動画符号化規格の1つであるH.264/AVCでは、ブロック中の非ゼロ係数の個数を表すTotalCoeffと、非ゼロ係数値の大きさを表すlevelと、データスキャン方向において最後のlevelより前のゼロ係数の個数を表すtotal_zerosと、データスキャン方向においてlevelの前のゼロ係数の連続個数を表すrun_beforeが符号化されていることであり、RUNとLEVELとが組み合わせとして符号化されていないことである。H.264に関しては、インプレス標準教科書H.264/AVC 教科書に詳細な説明がある。
図23に示す上記のH.264/AVCに対応した特許文献2において公開しているランレングス符号の復号回路がある。上記特許文献2も上記特許文献1と同様に非ゼロ値を書き込むデータバッファのアドレスをTotalCoeffやtotal_zeros、run_beforeを用いて決定し、データバッファに対するゼロ値の書き込み/読み出しアクセスを削減することを目的としている。
本発明の目的は、複数の符号化規格を処理する場合において、上記に示す非ゼロ値を格納するデータバッファの更なる有効利用を行うとともに、上記に示すゼロ値か非ゼロ値かを判断する情報レジスタに関してもデータバッファ同様に有効活用することで、可変長復号化処理の効率化を実現する。
特開2006−74197号公報 特開2007−329903号公報
インプレス標準教科書H.264/AVC 教科書
先に示した、特許文献1と特許文献2とに共通する課題として、2点存在する。1つ目はアドレス加算手段502でデータバッファ508の非ゼロ係数値の書き込み位置を決めるため、ゼロ値に対応するアドレスのデータバッファは無効なデータが存在することとなる。2つ目は、直交変換処理された係数は高周波領域になるに連れてゼロ値の連続回数が増加する。その場合、情報レジスタ509に関しても"0"が登録された領域が連続して存在することになる。情報レジスタの特定の領域に全て"0"が登録されていることがわかっているのであれば、上記の特定の領域全てに"0"を登録することは冗長な動作である。更に情報レジスタの限られた資源を"0"だけで埋めてしまうのは非効率である。
例えば、昨今の半導体集積回路では複雑かつ様々な動画符号化処理の実現や、高解像度画像処理の実現が要求されている。また、環境対策の観点での低消費電力化も必須である。このような背景の中で、非ゼロ係数値の書き込み/読み出しアクセス削減だけでは電力削減や処理の効率化といった観点では十分な効果を得ることはできない。
本発明は上記の問題を解決するものであり、非ゼロ係数を格納するデータバッファの効率化に加えて情報レジスタの効率化も合わせて実現し、消費電力を低減する可変長復号化装置を提供することを目的とする。
上記課題を解決するために本発明の可変長復号装置は、可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、前記符号化データを前記成分値に復号する可変長復号化部と、復号された成分値が特定の値であるか否かを判定するデータ判定部と、復号された成分値のうち、前記データ判定部によって特定の値でないと判定された成分値のみを保持するデータバッファと、復号された成分値が、ブロック内の前記特定の値以外の成分値のうちのブロック内の最終の成分値であるか否かを判定する最終判定部と、ブロックの先頭の成分値から前記最終判定部によって前記最終の成分値であると判定された成分値までのそれぞれに対応するフラグであって、対応する成分値が前記特定の値でないか特定の値であるかを示すフラグを保持するフラグバッファと、前記データ判定部による判定結果のうち、ブロックの先頭の成分値から前記最終判定部によって前記最終の成分値であると判定された成分値までに対応する判定結果のそれぞれを、前記フラグとして前記フラグバッファに設定し、前記最終の成分値であると判定された成分値に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、フラグバッファに設定されたフラグに基づいて、前記データ判定部によって前記特定の値でないと判定された成分値のみを前記データバッファに書き込む制御と、前記データバッファから前記特定の値でない成分値を読み出す制御とを行うデータバッファ制御部と、データバッファから読み出された成分値およびゼロのうち一方を選択する選択部とを備え、前記フラグバッファ制御部は、前記フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する。
この構成によれば、フラグバッファ(従来技術における情報レジスタに対応する。)は、ブロック内の全ての成分値(係数)と同数のフラグを保持するのではなく、ブロック内の先頭の成分値から、前記特定の値以外の成分値のうちのブロック内の最終の成分値までの成分値の個数のフラグを保持し、最終の成分値以降の成分値に対応するフラグを保持しない。これにより、フラグバッファおよびデータバッファにおける1ブロックあたりの必要な記憶領域のサイズを削減し、フラグバッファおよびデータバッファを効率よく使用することができる。
すなわち、ブロック内の末尾には通常は通常ゼロの成分値が連続するので、ブロック末尾に連続するゼロの成分値と同数のフラグを保持する領域を節約することができ、フラグバッファおよびデータバッファの領域を効率よく利用することができる。
また、ブロック末尾に連続するゼロの成分値と同数のフラグの書込みおよび読出し回数を削減するので、消費電力を低減することができる。
ここで、前記特定の値はゼロであり、前記可変長復号化部は、さらに前記符号化データからの第1パラメータおよび第2パラメータのうち少なくとも1つを検出し、前記第1パラメータは、ブロック内の当該パラメータ以降の成分値が前記最終の成分値であることを示すEOB符号であり、前記第2パラメータは、ブロック内に含まれる前記特定の値以外の成分値の個数を示す第1の符号と、ブロックにおいて前記最終の成分値より前に含まれる前記特定の値の成分値の個数を表す第2符号とを含み、前記最終判定部は、前記可変長復号化部により検出された第1パラメータおよび第2パラメータの少なくとも1つに基づいて、復号された成分値が前記最終の成分値であるか否かを判定するようにしてもよい。この構成によれば、最終判定部は符号化データに含まれる第1パラメータ(EOB符号)または第2パラメータにより前記最終の成分値を検出するので、異なる規格に準拠して符号化された複数種類の符号化データに対応することができる。
ここで、前記可変長復号化装置は、さらに、外部から設定される任意の判定用データを記録し、当該判定用データを前記特定の値として前記データ判定部に供給する判定データ記憶部を備えていてもよい。この構成によれば、特定の値(判定用データ)は、任意に設定することが可能である。例えば、特定の値は、典型的には"0"であるが、"0"を表すコードであってもよいし、"0"以外の任意の値であってもよいし、"0"以外の任意の値を表すコードであってもよい。
ここで、前記判定データ記憶部に設定される判定用データは、前記符号化データに対応する符号化規格がMPEG2、H.264またはVC−1である場合、ゼロ値であってもよい。
ここで、前記フラグバッファに設定される各フラグは、データ判定部によって対応する成分値が前記特定の値であると判定された場合は"0"を、前記特定の値以外であると判定された場合は"1"を示す構成としてもよい。この構成によれば、フラグ"0"はブロック中の存在確率が高い成分値に対応するので、フラグバッファを予め0クリアしておけば"0"を設定する処理を削減し、さらに低消費電力を図ることができる。また、フラグが"1"の場合のみ、データバッファ制御部はデータバッファへの書込みおよび読出しの動作をすればよいので、フラグによりデータバッファへの書き込みおよび読み出しを容易に制御することができる。
ここで、前記符号化データに対応する符号化規格がMPEG2もしくはH.264、VC−1である場合、前記フラグバッファに設定される各フラグは、データ判定部によって対応する成分値がゼロであると判定された場合は"0"を、ゼロ以外であると判定された場合は"1"を示す構成としてもよい。
ここで、前記フラグバッファ制御部は、さらに、前記最終の成分値に対応するフラグの次のフラグとして"0"を前記フラグバッファに設定してもよい。この構成によれば、最終の成分値に後続するブロック末尾までの連続するゼロ係数に対応する複数のフラグ(従来技術におけるブロック末尾の複数のフラグ)を、1ビットのフラグで代表することができ、明示的にフラグのビット数を圧縮することができる。
ここで、前記最終判定部は、前記第1パラメータおよび第2パラメータのどちらを用いて前記最終の成分値の判定を行うかを選択するようにしてもよい。
ここで、前記最終判定部は、前記符号化データに対応する符号化規格がMPEGもしくはVC1である場合は前記第1パラメータを、符号化規格がH.264である場合は前記第2パラメータを選択するようにしてもよい。この構成によれば、符号化データの種類(どの規格に準拠して符号化されているか)に応じて、最終判定部の動作を切り換えることができる。
ここで、前記最終判定部は、復号された成分値が前記最終の成分値であると判定した場合に、前記フラグバッファ制御部に書き込み停止要求を通知し、前記フラグバッファ制御部は、前記最終判定部から出力される前記書き込み停止要求の通知を受けたとき、前記フラグバッファへのフラグの設定を停止するようにしてもよい。この構成によれば、前記最終の成分値より後の成分値に対応するフラグの設定を停止する処理を高速に行うことができる。
ここで、前記最終判定部は、さらに、前記選択部から出力された成分の個数が1ブロック内の前記最終の成分値までの個数に達したとき、前記フラグバッファ制御部に更新停止要求を通知し、前記フラグバッファ制御部は、前記最終判定部から読み出し停止要求が通知されたとき、当該ブロック内の前記最終の成分値より後の成分値の読み出しにおいて前記フラグバッファの読み出しポインタの更新を停止し、フラグとしてゼロをデータバッファ制御部に出力するようにしてもよい。この構成によれば、ブロック内の成分値の読み出し動作が、前記最終の成分値にまで完了したとき、前記最終の成分値より後の成分値から当該ブロックの末尾の成分値までフラグとして"0"を繰り返し出力する。これにより、フラグバッファおよびデータバッファの読み出し動作においても消費電力を低減することができる。
ここで、前記フラグバッファ制御部は前記ブロックに対応する符号化データの復号開始前または復号終了後に、フラグバッファの1ブロックに対応する領域をゼロに初期化してもよい。この構成によれば、フラグバッファを予め0クリアする初期化によって、ゼロの成分値毎に0を設定する処理を削減し、さらに低消費電力を図ることができる。
ここで、前記可変長復号装置は、さらに、前記データバッファの空き領域と前記フラグバッファの空き領域とを管理し、空き領域に応じて、前記可変長復号化部に対して復号停止要求または次ブロックの復号許可を出力する残量管理部を備える構成としてもよい。この構成によれば、前記フラグバッファは、前記最終の成分値の次の成分値からブロック末尾の成分値までの個数のフラグを保持しないので、その個数分の空き領域をフラグバッファおよびデータバッファに確保することができる。この空き領域を次ブロックのために有効に利用することができる。また、先行して次ブロックの可変長復号化処理を行うので、処理性能を向上させることができる。
ここで、前記残量管理部は、復号された成分が前記最終の成分値であると前記最終判定部によって判定されたとき、前記データバッファおよび前記フラグバッファに空き領域がある場合に、前記可変長復号化部に対して次ブロックの復号許可を出力するようにしてもよい。この構成によれば、上記の空き領域を次ブロックのために有効に利用することができる。また、先行して次ブロックの可変長復号化処理を行うので、処理性能を向上させることができる。
ここで、前記フラグバッファは、少なくとも64個のフラグを保持する領域を有する構成としてもよい。
ここで、前記データバッファ制御部は、前記ブロックに対応する符号化データの復号開始前もしくは復号終了後に、データバッファ内の1ブロックに対応する領域をゼロ値に初期化するようにしてもよい。
ここで、前記データバッファの1ブロックに対応する領域は、64個の成分値を保持可能な構成としてもよい。
ここで、前記バッファ残量管理部は、前記データバッファおよび前記フラグバッファの一方に空き領域がないとき、前記可変長復号化部に対して復号停止要求を出力するようにしてもよい。
また、本発明の他の可変長復号装置は、可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、前記符号化データから、ブロック内に含まれる非ゼロ係数の個数を示す第1の符号であるTotalCoeffと、ブロック内の最終の非ゼロ値係数より前に含まれるゼロ係数の個数を示す第2符号であるtotalzeroと、非ゼロ係数の値を示す第3符号であるLEVELと、前記LEVELの前のゼロ係数の連続個数を示す第4符号であるrun_beforeを検出および復号する可変長復号化部と、前記第1符号および前記第2符号に基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する最終判定部と、ブロック内の先頭の係数から、前記最終判定部に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持するフラグバッファと、復号された係数のうち、非ゼロ係数のみを保持するデータバッファと、復号された第1符号から第4符号に基づいて、ブロック内の先頭の係数から前記最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグを前記フラグバッファに設定し、前記最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、フラグバッファに設定されたフラグに基づいて、非ゼロ係数のみを前記データバッファに書き込む制御と、前記データバッファから非ゼロの係数を読み出す制御とを行うデータバッファ制御部と、データバッファから読み出された係数およびゼロのうち一方を選択する選択部とを備え、前記フラグバッファ制御部は、フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する。
また、本発明のさらに他の可変長復号装置は、可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、前記符号化データから、ブロック内に含まれる非ゼロ係数のうち最終の非ゼロ係数を示す符号であるEOBと、非ゼロ係数の値を示す符号であるLEVELと、非ゼロ係数の前に連続するゼロ係数の個数を示す符号であるRUNとを検出および復号する可変長復号化部と、前記EOBに基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する最終判定部と、ブロック内の先頭の係数から、前記最終判定部に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持するフラグバッファと、復号された係数のうち、非ゼロ係数のみを保持するデータバッファと、前記LEVELおよび前記RUNに基づいて、ブロック内の先頭の係数から前記最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグを前記フラグバッファに設定し、前記最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、フラグバッファに設定されたフラグに基づいて、非ゼロ係数のみを前記データバッファに書き込む制御と、前記データバッファから非ゼロの係数を読み出す制御とを行うデータバッファ制御部と、データバッファから読み出された係数およびゼロのうち一方を選択する選択部とを備え、前記フラグバッファ制御部は、フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する。
本発明の可変長復号化装置によれば、フラグバッファおよびデータバッファにおける1ブロックあたりの必要な記憶領域のサイズを削減し、フラグバッファおよびデータバッファを効率よく使用することができる。また、フラグの書込みおよび読出し回数を削減するので、消費電力を低減することができる。さらに、可変長復号の処理性能を向上させることができる。
図1は、本発明の実施の形態1における可変長復号化装置の構成を示す図である。 図2Aは、MPEG2でのブロック内の係数の配置を示す図である。 図2Bは、MPEG2でのブロック内の係数に対応するアドレスを示す図である。 図3は、従来技術における情報レジスタと、本実施形態におけるデータバッファおよびフラグバッファのデータ例を示す図である。 図4Aは、フラグバッファのアドレスであるFWPおよびFRPとの関係を示す図である。 図4Bは、FRPの更新停止および再開を制御する回路例を示す図である。 図5は、フラグバッファの空き領域を活用して先行して次ブロックの復号した場合のフラグバッファのデータ例を示す図である。 図6は、マクロブロック単位で復号化処理をした場合のフラグバッファのデータ例を示す図である。 図7は、次の世代のマクロブロックを先行して復号した場合のフラグバッファのデータ例を示す図である。 図8は、本発明の実施の形態3における可変長復号化装置の構成を示す図である。 図9は、4×4係数からなるブロックの一例を示す図である。 図10は、4×4ブロックをジグザグスキャンの逆順に並べたデータ例を示す図である。 図11は、復号結果の一例を示す図である。 図12は、4×4ブロックの復号処理を説明するための図である。 図13Aは、4×4ブロックの復号処理におけるフラグバッファ、FWPおよびFRPを示す図である。 図13Bは、FWPの更新および再開を制御する回路例を示す図である。 図14は、8×8係数からなるブロックの説明図である。 図15は、本発明の実施の形態5における可変長復号化装置の構成を示す図である。 図16は、フラグバッファのアドレスであるFWPおよびFRPとの関係を示す図である。 図17は、従来技術における代表的な画像圧縮処理フローを示す図である。 図18は、直交変換されたブロックの周波数成分を示す図である。 図19は、ジグザグスキャンを示す図である。 図20は、従来技術における代表的な画像復号化処理フローを示す図である。 図21は、従来技術における可変長復号化部の構成を示す図である。 図22は、従来技術におけるランレングス符号の復号回路を示す図である。 図23は、従来技術におけるH.264/AVCに対応したランレングス符号の復号回路を示す図である。
(実施の形態1)
以下、本発明の実施の形態1について、図面を参照しながら説明する。
図1は、本発明の実施の形態1における可変長復号化装置の構成を示す図である。なお、本実施の形態においては、1ブロックが8×8個で構成されている場合で且つ、MPEG2の符号化処理を行う場合について説明する。
図1において、可変長復号化装置は、可変長復号化部100、データ判定部101、判定データ記憶部102、データバッファ103、フラグバッファ104、データバッファ制御部105、最終有効データ判定部106、フラグバッファ制御部107、バッファ残量管理部108、選択部109及び後段処理部110を備える。
可変長復号化部100は、符号化データを成分値(すなわち係数)に復号する。
データ判定部101は、復号された成分値が特定の値であるか否かを判定する。ここで、特定の値は、典型的には"0"であるが、"0"を表すコードであってもよいし、"0"以外の任意の値であってもよいし、"0"以外の任意の値を表すコードであってもよい。
判定データ記憶部102は、特定の値を示す判定データを記憶し、データ判定部101に出力する。
データバッファ103は、復号された成分値のうち、データ判定部101によって特定の値でないと判定された成分値(例えば非ゼロ係数)のみを保持するデータバッファである。
最終有効データ判定部106は、復号された成分値が、ブロック内の特定の値以外の成分値のうちのブロック内の最終の成分値であるか否かを判定する。つまり、復号された成分値が、ブロック内の最後の非ゼロ係数であるか否かを判定する。
フラグバッファ104は、ブロックの先頭の成分値から、最終有効データ判定部106によって最終の成分値であると判定された成分値まで、のそれぞれに対応するフラグであって、対応する成分値が特定の値でないか特定の値であるかを示すフラグを保持するフラグバッファである。例えば、フラグ"0"は特定の値の成分値(ゼロ係数)に、フラグ"1"は、特定の値以外の成分値(非ゼロ係数)に対応する。
フラグバッファ制御部107は、データ判定部101による判定結果のうち、ブロックの先頭の成分値から最終有効データ判定部106によって最終の成分値であると判定された成分値までに対応する判定結果のそれぞれを、フラグとしてフラグバッファに設定する。さらに、フラグバッファ制御部107は、最終の成分値に対応するフラグの次のフラグとして"0"を設定してもよい。このフラグ"0"は、最終の成分値に後続するブロック末尾までの連続するゼロ係数に対応する複数のフラグの代表として設定される1ビットのフラグである。さらに、フラグバッファ制御部107は、フラグバッファ104にフラグを書き込むためのアドレスであるフラグバッファライトポインタFWPを保持するレジスタと、フラグバッファ104からフラグを読み出すためのアドレスであるフラグバッファリードポインタFRPを保持するレジスタとを有する。また、フラグバッファ制御部107は、最終の成分値であると判定された成分値に対応するデータバッファのアドレスである最終アドレスを保持するレジスタを有する。また、フラグバッファ制御部107は、フラグバッファ104に保持されたフラグおよび最終アドレスに基づいて選択部109の選択を制御する。
データバッファ制御部105は、フラグバッファ104に設定されたフラグに基づいて、データ判定部101によって特定の値でないと判定された成分値のみをデータバッファ103に書き込む制御と、データバッファ103から特定の値でない成分値を読み出す制御とを行う。この制御のために、データバッファ制御部105は、データバッファ103に特定値以外の成分値(非ゼロ係数)を書き込むためのアドレスであるデータバッファライトポインタDWPを保持するレジスタと、データバッファ103から非ゼロ係数を読み出すためのアドレスであるデータバッファリードポインタDRPを保持するレジスタとを有する。
バッファ残量管理部108はフラグバッファ104及びデータバッファ103の容量管理を行う。
選択部109は、データバッファ103から読み出された成分値および判定データ記憶部102に記憶された判定データ(例えばゼロ)のうち一方を選択して、選択結果を後段処理部110からの読み出し要求への応答として出力する。
後段処理部110は、選択部109からの復号された係数を後段処理する後段処理部である。
まず、可変長復号化部100に入力された符号化データは、可変長復号化処理をされ図19に示されるジグザグスキャン順でデータ判定部101に出力される。このとき、上記で示したように直交変換部により周波数領域に変換されているため出力される係数の多数がゼロ値である。図2Aは、MPEG2でのブロック内の係数の配置と係数の一例とを示す図である。図2Bは、MPEG2でのブロック内の係数に対応するアドレスの一例を示す図である。図2Aでは、丸印の12の値をもつ係数より後ろの係数が全てゼロ値になっている。
上記に示す特徴により、判定データ記憶部102にはゼロ値を設定する。前記データ判定部101に出力された成分値(つまり、復号化された係数であり、以下単に係数と呼ぶ。)はゼロ値と逐次比較され結果を前記フラグバッファ104に通知する。判定結果が設定値と等しければ、つまり係数がゼロ値であれば前記フラグバッファに"0"を格納し、ゼロ値でなければ"1"を格納する。
前記フラグバッファに格納される値が"1"である場合、前記フラグバッファより前記データバッファ制御部105に対して前記データバッファ103の書き込みポインタ位置(以下、DWP)の更新を通知し、その際の非ゼロ値を前記データバッファに格納する。上記の動作により前記データバッファには非ゼロ値のみが登録される。
上記処理は1ブロック単位、つまり8×8の64個の係数からなるブロック単位で行われる。MPEG2の符号化規格では図2A、図2Bで示すように、上記64個の係数のうちある係数以降は全てゼロ値であるという情報を別途保持している。これをEOB(End Of Block)と呼ぶ。前記EOBを可変長符号化処理中に検出した場合、前記最終有効データ判定部に対して出力する。前記最終有効データ判定部は前記EOBを用いて、前記フラグバッファ制御部に対してDWPの値を保持するとともに、DWPの更新を停止する制御を行う。
図3は、データバッファおよびフラグバッファの保持されたデータ(このデータは図2Aのブロックに対応する。)の一例を示す図である。同図では、従来技術の情報レジスタのデータ例も示している。同図のように、データバッファ103は、非ゼロ係数のみを格納する。フラグバッファ104は、ブロック内の先頭の係数から、最終有効データ判定部106に判定された最終の非ゼロ係数(同図では12の値をもつ係数)までのそれぞれの係数に対応するフラグを保持する。各フラグは、対応する係数の値がゼロであるか非ゼロであるかを示す。同図では、フラグが"1"のとき非ゼロであることを、"0"のときゼロであることを示す。さらに、フラグバッファ104は、最終の非ゼロ係数に対応するフラグの次のフラグとして"0"を保持する。最終の非ゼロ係数に対応するフラグの次のフラグ"0"は、46個のフラグを代表するフラグであり、言い換えれば、46個のフラグが1個のフラグに圧縮されている。
上記制御により通常は全64個分のフラグバッファの個数が必要であったものを、EOBを検出するまでの係数の個数分で対応することが可能となる。また、前記データバッファに関してもEOBを検出するまでの非ゼロ係数のみを格納すればよい。
次に、前記データバッファに登録された係数を前記後段処理部へ出力する。後段処理部より前記フラグバッファ制御部に読み出し要求がだされた場合、フラグバッファ制御部はフラグバッファに対して読み出しポインタ位置(以下、FRP)の更新を通知し、その際フラグバッファのFRP位置の値が"0"であった場合は、前記データバッファ制御部に対してデータバッファの読み出しポインタ位置(以下、DRP)の更新停止を要求し、判定データ記憶部に格納されているゼロ値を出力するとともに前記選択部の出力を判定データ記憶部の出力に切り替え、前記後段処理部にデータを出力する。FRP位置の値が"1"であった場合は、DRPを更新させデータバッファに格納されている係数を出力するとともに、前記選択部の出力をデータバッファの出力に切り替え、前記後段処理部にデータを出力する。
更に、前記後段処理部の読み出し要求は、前記最終有効データ判定部に対しても入力され読み出し回数をカウントする。読み出し回数と前記EOBの値もしくはFWPの値とを比較し等しい場合は、前記後段処理部の読み出し要求がある場合でも前記フラグバッファのFRPは更新せずにFRPは常に同じ位置を読み出す。上記処理は、例えば最終有効データ判定部106内に図4Bに示すような回路を備えることにより実現される。これにより、EOB以降のフラグバッファのWRP更新がなされていなかった部分を連続して読み出すことを可能にする。つまり、EOB以降のゼロ値は、フラグバッファに登録される係数1個分の情報に圧縮されたことと等価となり見かけ上フラグバッファを削減した効果を得られる。
図4Aは、フラグバッファ104のアドレスであるFWPおよびFRPとの関係を示す図である。同図のように、フラグバッファ制御部107は、FWPおよびFRPを更新しながらフラグをフラグバッファ104に設定する。さらに、フラグバッファ制御部107は、EOBが検出されたとき、最終の非ゼロ係数に対応するフラグの次のアドレスにFWPを更新し、圧縮されたフラグ"0"を設定する。
このように、EOB以降の係数がフラグバッファ上で圧縮された場合、通常64個分の領域を必要とするフラグバッファが64−N個分未使用になる。その際、前記バッファ残量管理部は、フラグバッファの残量を確認し前記可変長復号化部に対して次のブロックの復号化を要求する。上記処理により、通常フラグバッファが係数64個分を格納するまで次のブロックの処理を実施できなかったものを、前記後段処理部とは独立して先行的に処理することが可能となり、可変長復号化処理の処理性能向上の効果を得られる(図5)。上記処理を実現する場合、可変長復号化部は、EOB以降の係数の出力を行わない機能も有する。図5に、先行して次のブロックを処理した場合のフラグバッファ104のデータ例を示す。同図上段は、Y0ブロックの復号完了時にデータ例を示す。同図下段は、Y0ブロックの復号後に、次のY1ブロックと次の次のY2ブロックとを先行して復号しているデータ例を示す。
更に、ブロック単位ではなくブロックがY0、Y1、Y2、Y3、Cb、Crの6個で構成されたマクロブロック(以下、MB)単位で上記処理を実現する(図6、図7)。動画像はMBの塊を複数で構成される。つまり動画像全体の処理性能向上を実現する場合は、MB単位での処理性能を向上させることが必須となる。図6、図7では、図5で示すフラグバッファの有効利用をMB単位にまで発展させた場合である。EOBまでの係数が少ないブロック/マクロブロックが多く存在することが考えられる場合などフラグバッファの領域が確保できる可能な限り可変長復号化処理の先行処理を実現できる本実施の形態は、更に可変長復号化処理性能を向上させることが可能となる。
(実施の形態2)
以下、本発明の実施の形態2について図面を参照しながら説明する。本発明の実施の形態2の構成図は、本発明の実施の形態1と同じ図1を用いているため説明を省略する。
実施の形態2において、前記最終有効データ判定部に通知する情報がEOBでなくTotalCoeffとtotalzerosである点において実施の形態1と異なる可変長復号化装置であって、かかる構成によれば、TotalCoeffとtotalzerosを加算した値から、全ブロック数を減算することによって、EOBと同様に以降ゼロ値が連続する値を得ることが可能であり、実施の形態1と同様の効果を得られる。
(実施の形態3)
以下、本発明の実施の形態3について、図面を参照しながら説明する。
図8は、本発明の実施の形態3における可変長復号化装置の構成図である。なお、本実施の形態においては、1ブロックが4×4個で構成されている場合で且つ、H.264/AVCの符号化処理を行う場合について説明する。
図8において、可変長復号化装置は、可変長復号化部200、データバッファ203、フラグバッファ204、データバッファ制御部205、最終有効データ判定部206、フラグバッファ制御部207、バッファ残量管理部208、選択部209及び後段処理部210を備える。
可変長復号化部200は、符号化データから、ブロック内に含まれる非ゼロ係数の個数を示す第1の符号であるTotalCoeffと、ブロック内の最終の非ゼロ値係数より前に含まれるゼロ係数の個数を示す第2符号であるtotalzeroと、非ゼロ係数の値を示す第3符号であるLEVELと、LEVELの前のゼロ係数の連続個数を示す第4符号であるrun_beforeを検出および復号する。
データバッファ203は、復号された係数のうち、非ゼロ係数のみを保持する。
フラグバッファ204は、ブロック内の先頭の係数から、最終有効データ判定部206に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持する。
データバッファ制御部205は、フラグバッファ204に設定されたフラグに基づいて、非ゼロ係数のみをデータバッファ203に書き込む制御と、データバッファ203から非ゼロの係数を読み出す制御とを行う。
最終有効データ判定部206は、第1符号および第2符号に基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する。すなわち、最終有効データ判定部206はTotalCoeffとtotalzerosとを用いて1ブロック(4×4ブロック)の最終の非ゼロ係数の位置を検索し、フラグバッファ制御部207に通知する。
フラグバッファ制御部207は、復号された第1符号から第4符号に基づいて、ブロック内の先頭の係数から最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグをフラグバッファ204に設定し、また、最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持する。また、フラグバッファ制御部207は、フラグバッファ204に保持されたフラグおよび最終アドレスに基づいて選択部209の選択を制御する。
バッファ残量管理部208はフラグバッファ及びデータバッファの容量管理を行う。
選択部209は、データバッファ203から読み出された係数およびゼロのうち一方を選択し、選択結果を後段処理部110からの読み出し要求への応答として出力する。
後段処理部210は選択部209からの復号された係数を後段処理する。
まず、可変長復号化部200は、非ゼロ係数の個数を表すTotalCoeffと、非ゼロ係数値の大きさを表すlevelと、データスキャン方向において最後のlevelより前のゼロ係数の個数を表すtotalzerosと、データスキャン方向においてlevelの前のゼロ係数の連続個数を表すrun_beforeとを順次復号する。
図9に順次復号された例を示す。復号化処理ではジグザグスキャンの逆順にデータが復号される。図10は、図9の4×4ブロックデータをジグザグスキャンの逆順に並べたものである。図11は、図8で示した一例の復号例である。
復号化の手順としては、16個の係数のうちの非ゼロ係数(+23、−4、+11、+8、−3、+1、−1)の個数であるTotalCoeff=7が復号される。次に、非ゼロ係数の大きさを示すlevelが、逆ジグザグスキャン順に、−1→+1→−3→+8→+11→−4→+23と、順次復号される。次に、ジグザグスキャン順の最後のlevel=−1の前に存在するゼロ値の総個数totalzeros=5が復号される。最後にlelveの前に存在するゼロ値の個数run_beforeが逆ジグザグスキャン順に、1→2→1→1→0→0が順次復号される。
復号化データにおいて、
・level=−1の前に存在するゼロ値の個数は1である、
・level=+1の前に存在するゼロ値の個数は2である、
・level=−3の前に存在するゼロ値の個数は1である、
・level=+8の前に存在するゼロ値の個数は1である、
・level=+11の前に存在するゼロ値の個数は0(存在しない)である、
・level=−4の前に存在するゼロ値の個数は0である、
・level=+23の前に存在するゼロ値の個数は0である、
という結果が得られる。
この結果に基づいてrun_beforeは、逆ジグザグスキャン順に、1→2→1→1→0→0となる。
図12を用いて処理の流れを説明する。
まず、level値は非ゼロ値のみしか存在しないので、ゼロ値との比較の必要はなく連続でデータバッファに書き込む。
次に、TotalCoeff=7とtotalzeros=5の値が復号されるので上記2つの値を最終有効データ判定部に通知する。ブロックの構成数が16個であることがわかっているので、16−12=4がゼロ値の連続する回数である。H.264の場合は逆スキャン順でデータが復号されるのでフラグバッファの書き込みポインタFWPの更新を係数4つ分停止する。
係数5つ目は必ずlevel値であることがわかっているので、FWPを1つ進めた位置のフラグバッファの値は"1"を設定する。この"1"に対応するlevelが最初の係数である1である。
次に、run_beforeの値を使って(図13A、図13B参照)、フラグバッファのFWPをスキップし、スキップされた区間のフラグバッファには"0"を格納する。run_beforeは、データスキャン方向でLEVELの前のゼロ係数の連続個数を表すものである。つまり、FWPに"1"を格納した次のFWPが"1"になるのはrun_before分だけ進んだ先になるからである。
上記のように、最初のFWPの停止とrun_before値分のFWPのスキップを最終有効データ判定部とフラグバッファ制御部を用いることで実現が可能となり、実施の形態1と同様、符号化係数4つ分のフラグバッファの見かけ上削減が実現可能となる。
次に、係数の読み出しでは、実施の形態1とは逆となり、TotalCoeff=7とtotalzeros=5の値から算出されたFWPの更新停止期間係数4個分を読み出し開始時に停止させ、その後、連続してフラグバッファとデータバッファを用いて係数を読み出す。
更に、かかる構成によれば、H.264/AVCの符号化規格において、実施の形態1同様フラグバッファとデータバッファの効率化を実現でき、更に可変長復号化部の性能向上も実現できる。
(実施の形態4)
以下、本発明の実施の形態4について図面を参照しながら説明する。本発明の実施の形態4の構成図は、本発明の実施の形態3と同じ図2を用いているため説明を省略する。
実施の形態4において、構成する1ブロックが4×4でなく8×8である点が実施の形態3と異なる可変長復号化装置である。かかる構成によれば、図14で示すように8×8を構成するブロックは、可変長復号化処理時は4×4単位で処理されデータバッファに出力される際にスキャン順に出力され、ブロック構成を変更するため4×4単位で高周波成分がゼロ値であった場合には、8×8ブロック構成になってもゼロ値を多数含むため、実施の形態3と同様の効果を得られる。
(実施の形態5)
以下、本発明の実施の形態5について、図面を参照しながら説明する。
図15は請求項20に示すものであり、本発明の実施の形態5における可変長復号化装置の構成図である。なお、本実施の形態においては、1ブロックが8×8個で構成されている場合で且つ、MPEG1、MPEG2、MPEG4、VC−1の符号化処理を行う場合について説明する。
図15において、可変長復号化装置は、可変長復号化部300、データバッファ303、フラグバッファ304、データバッファ制御部305、最終有効データ判定部306、フラグバッファ制御部307、バッファ残量管理部308、選択部309および後段処理部310を備える。
可変長復号化部300は、符号化データから、ブロック内に含まれる非ゼロ係数のうち最終の非ゼロ係数を示す符号であるEOBと、非ゼロ係数の値を示す符号であるLEVELと、非ゼロ係数の前に連続するゼロ係数の個数を示す符号であるRUNとを検出および復号する。
最終有効データ判定部306は、EOBに基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する。
データバッファ303は、復号された係数のうち、非ゼロ係数のみを保持する。
フラグバッファ304は、ブロック内の先頭の係数から、最終有効データ判定部306に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持する。
フラグバッファ制御部307は、LEVELおよびRUNに基づいて、ブロック内の先頭の係数から最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグをフラグバッファ304に設定し、最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持する。また、フラグバッファ制御部307は、フラグバッファに保持されたフラグおよび最終アドレスに基づいて選択部309の選択を制御する。
データバッファ制御部305は、フラグバッファ304に設定されたフラグに基づいて、非ゼロ係数のみをデータバッファ303に書き込む制御と、データバッファ303から非ゼロの係数を読み出す制御とを行う。
バッファ残量管理部308はフラグバッファ及びデータバッファの容量管理を行う。
選択部309は、データバッファから読み出された係数およびゼロのうち一方を選択する。
後段処理部310は選択部309からの復号された係数を後段処理する。
実施の形態5において、可変長復号された係数を逐次判定値と比較し、比較結果をフラグバッファおよびデータバッファに格納するのではなく、連続するゼロ値の値によってフラグバッファを更新する点において実施の形態1と異なる可変長復号化装置である。
本実施の形態の可変長復号化部は、ゼロ値の連続する個数RUNと非ゼロ値LEVELを復号するものであり、上記RUNの値を前記フラグバッファ制御部に通知することで図16に示すようにフラグバッファのFWPをRUNの値分スキップさせ、スキップされた区間の符号化係数はゼロ値となり、その区間はフラグバッファを"0"を格納する。更に、スキップした先のフラグバッファに"1"を書き込み上記フラグバッファに対応するLEVEL値がデータバッファに格納される。
また、最終有効データの判定は、実施の形態1同様EOBを用いて行いEOBが検出された場合はFWPとFRPはゼロ値が連続する期間フラグバッファは同じ部分を参照し、フラグバッファの見かけ上の削減を実現する。
かかる構成によれば、符号化規格を限定した場合において、前記記載のデータ判定部や判定データ記憶部を使用せずに実施の形態1と同様の効果を実現することが可能である。
(実施の形態6)
実施の形態6に関しては、上記に示す実施の形態1から実施の形態5までに共通する部分に関することであるため詳細な説明は省略する。全実施の形態に記載されているフラグバッファは判定結果が判定値と等しい場合かもしくは、ゼロ値である場合、ないしは、run_before、RUN値によってポインタがスキップすることによるフラグへの"0"を格納する処理を割愛するために、1ブロックの読み出し終了時に対象のフラグバッファを全て"0"に更新する初期化処理を行うことも可能である。
かかる構成によれば、フラグバッファに"0"を格納する処理を省略することで更に可変長復号化処理の処理性能向上を実現できる。
本発明にかかる可変調復号化装置は、MPEG1、MPEG2、MPEG4、H.264/AVC、VC−1の動画像符号化規格の可変長復号化処理の面積削減と処理性能向上を可能とするため動画像符号化などの画像符号化の分野において有用である。
10 直交変換処理
11 量子化処理
12 可変長符号化処理
20 可変長復号処理
21 逆量子化処理
22 逆直交変換処理
100 可変長復号化部
101 データ判定部
102 判定データ記憶部
103 データバッファ
104 フラグバッファ
105 データバッファ制御部
106 最終有効データ判定部
107 フラグバッファ制御部
108 バッファ残量管理部
109 選択部
110 後段処理部
200 可変長復号化部
203 データバッファ
204 フラグバッファ
205 データバッファ制御部
206 最終有効データ判定部
207 フラグバッファ制御部
208 バッファ残量管理部
209 選択部
210 後段処理部
300 可変長復号化部
303 データバッファ
304 フラグバッファ
305 データバッファ制御部
306 最終有効データ判定部
307 フラグバッファ制御部
308 バッファ残量管理部
309 選択部
310 後段処理部
400 入力部
401 可変長復号部
402 書き込み制御部
403 データ選択部
404 読み出し制御部
405 データバッファ
406 後段処理部
500 入力部
501 可変長復号化手段
502 アドレス加算手段
503 書き込み制御手段
504 読み出し制御手段
505 データ選択手段
506 後段処理手段
507 出力手段
508 データバッファ
509 情報レジスタ

Claims (20)

  1. 可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、
    前記符号化データを前記成分値に復号する可変長復号化部と、
    復号された成分値が特定の値であるか否かを判定するデータ判定部と、
    復号された成分値のうち、前記データ判定部によって特定の値でないと判定された成分値のみを保持するデータバッファと、
    復号された成分値が、ブロック内の前記特定の値以外の成分値のうちのブロック内の最終の成分値であるか否かを判定する最終判定部と、
    ブロックの先頭の成分値から前記最終判定部によって前記最終の成分値であると判定された成分値までのそれぞれに対応するフラグであって、対応する成分値が前記特定の値でないか特定の値であるかを示すフラグを保持するフラグバッファと、
    前記データ判定部による判定結果のうち、ブロックの先頭の成分値から前記最終判定部によって前記最終の成分値であると判定された成分値までに対応する判定結果のそれぞれを、前記フラグとして前記フラグバッファに設定し、前記最終の成分値であると判定された成分値に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、
    フラグバッファに設定されたフラグに基づいて、前記データ判定部によって前記特定の値でないと判定された成分値のみを前記データバッファに書き込む制御と、前記データバッファから前記特定の値でない成分値を読み出す制御とを行うデータバッファ制御部と、
    データバッファから読み出された成分値およびゼロのうち一方を選択する選択部と
    を備え、
    前記フラグバッファ制御部は、前記フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する
    可変長復号化装置。
  2. 前記特定の値はゼロであり、
    前記可変長復号化部は、さらに前記符号化データからの第1パラメータおよび第2パラメータのうち少なくとも1つを検出し、
    前記第1パラメータは、ブロック内の当該パラメータ以降の成分値が前記最終の成分値であることを示すEOB符号であり、
    前記第2パラメータは、ブロック内に含まれる前記特定の値以外の成分値の個数を示す第1の符号と、ブロックにおいて前記最終の成分値より前に含まれる前記特定の値の成分値の個数を表す第2符号とを含み、
    前記最終判定部は、前記可変長復号化部により検出された第1パラメータおよび第2パラメータの少なくとも1つに基づいて、復号された成分値が前記最終の成分値であるか否かを判定する請求項1に記載の可変長復号化装置。
  3. さらに、外部から設定される任意の判定用データを記録し、当該判定用データを前記特定の値として前記データ判定部に供給する判定データ記憶部を備える請求項1に記載の可変長復号化装置。
  4. 前記判定データ記憶部に設定される判定用データは、前記符号化データに対応する符号化規格がMPEG2、H.264またはVC−1である場合、ゼロ値である請求項3に記載の可変長復号化装置。
  5. 前記フラグバッファに設定される各フラグは、データ判定部によって対応する成分値が前記特定の値であると判定された場合は"0"を、前記特定の値以外であると判定された場合は"1"を示す請求項1に記載の可変長復号化装置。
  6. 前記符号化データに対応する符号化規格がMPEG2もしくはH.264、VC−1である場合、前記フラグバッファに設定される各フラグは、データ判定部によって対応する成分値がゼロであると判定された場合は"0"を、ゼロ以外であると判定された場合は"1"を示す請求項2に記載の可変長復号化装置。
  7. 前記フラグバッファ制御部は、さらに、前記最終の成分値に対応するフラグの次のフラグとして"0"を前記フラグバッファに設定する請求項6に記載の可変長復号化装置。
  8. 前記最終判定部は、前記第1パラメータおよび第2パラメータのどちらを用いて前記最終の成分値の判定を行うかを選択する請求項2に記載の可変長復号化装置。
  9. 前記最終判定部は、前記符号化データに対応する符号化規格がMPEGもしくはVC−1である場合は前記第1パラメータを、符号化規格がH.264である場合は前記第2パラメータを選択する請求項8に記載の可変長復号化装置。
  10. 前記最終判定部は、復号された成分値が前記最終の成分値であると判定した場合に、前記フラグバッファ制御部に書き込み停止要求を通知し、
    前記フラグバッファ制御部は、前記最終判定部から出力される前記書き込み停止要求の通知を受けたとき、前記フラグバッファへのフラグの設定を停止する請求項1に記載の可変長復号化装置。
  11. 前記最終判定部は、さらに、前記選択部から出力された成分の個数が1ブロック内の前記最終の成分値までの個数に達したとき、前記フラグバッファ制御部に更新停止要求を通知し、
    前記フラグバッファ制御部は、前記最終判定部から読み出し停止要求が通知されたとき、当該ブロック内の前記最終の成分値より後の成分値の読み出しにおいて前記フラグバッファの読み出しポインタの更新を停止し、フラグとしてゼロをデータバッファ制御部に出力する請求項1に記載の可変長復号化装置。
  12. 前記フラグバッファ制御部は前記ブロックに対応する符号化データの復号開始前または復号終了後に、フラグバッファの1ブロックに対応する領域をゼロに初期化する請求項1に記載の可変長復号化装置。
  13. さらに、前記データバッファの空き領域と前記フラグバッファの空き領域とを管理し、空き領域に応じて、前記可変長復号化部に対して復号停止要求または次ブロックの復号許可を出力する残量管理部を備える請求項1に記載の可変長復号化装置。
  14. 前記残量管理部は、復号された成分が前記最終の成分値であると前記最終判定部によって判定されたとき、前記データバッファおよび前記フラグバッファに空き領域がある場合に、前記可変長復号化部に対して次ブロックの復号許可を出力する請求項13に記載の可変長復号化装置。
  15. 前記フラグバッファは、少なくとも64個のフラグを保持する領域を有する請求項13に記載の可変長復号化装置。
  16. 前記データバッファ制御部は、前記ブロックに対応する符号化データの復号開始前もしくは復号終了後に、データバッファ内の1ブロックに対応する領域をゼロ値に初期化する請求項1に記載の可変長復号化装置。
  17. 前記データバッファの1ブロックに対応する領域は、64個の成分値を保持可能である請求項15に記載の可変長復号化装置。
  18. 前記残量管理部は、前記データバッファおよび前記フラグバッファの一方に空き領域がないとき、前記可変長復号化部に対して復号停止要求を出力する請求項13に記載の可変長復号化装置。
  19. 可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、
    前記符号化データから、ブロック内に含まれる非ゼロ係数の個数を示す第1符号であるTotalCoeffと、ブロック内の最終の非ゼロ値係数より前に含まれるゼロ係数の個数を示す第2符号であるtotalzeroと、非ゼロ係数の値を示す第3符号であるLEVELと、前記LEVELの前のゼロ係数の連続個数を示す第4符号であるrun_beforeを検出および復号する可変長復号化部と、
    前記第1符号および前記第2符号に基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する最終判定部と、
    ブロック内の先頭の係数から、前記最終判定部に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持するフラグバッファと、
    復号された係数のうち、非ゼロ係数のみを保持するデータバッファと、
    復号された第1符号から第4符号に基づいて、ブロック内の先頭の係数から前記最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグを前記フラグバッファに設定し、前記最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、
    フラグバッファに設定されたフラグに基づいて、非ゼロ係数のみを前記データバッファに書き込む制御と、前記データバッファから非ゼロの係数を読み出す制御とを行うデータバッファ制御部と、
    データバッファから読み出された係数およびゼロのうち一方を選択する選択部と
    を備え、
    前記フラグバッファ制御部は、フラグバッファに保持されたフラグおよび前記最終アドレスとに基づいて前記選択部の選択を制御する
    可変長復号化装置。
  20. 可変長符号を含む符号化データを、ブロックを構成する複数の成分値に復号する可変長復号化装置であって、
    前記符号化データから、ブロック内に含まれる非ゼロ係数のうち最終の非ゼロ係数を示す符号であるEOBと、非ゼロ係数の値を示す符号であるLEVELと、非ゼロ係数の前に連続するゼロ係数の個数を示す符号であるRUNとを検出および復号する可変長復号化部と、
    前記EOBに基づいて、ブロック内の非ゼロ係数のうちの最終の非ゼロ係数を判定する最終判定部と、
    ブロック内の先頭の係数から、前記最終判定部に判定された最終の非ゼロ係数までのそれぞれの係数に対応するフラグであって、対応する係数の値がゼロであるか非ゼロであるかを示すフラグを保持するフラグバッファと、
    復号された係数のうち、非ゼロ係数のみを保持するデータバッファと、
    前記LEVELおよび前記RUNに基づいて、ブロック内の先頭の係数から前記最終の非ゼロ係数までのそれぞれの係数について、非ゼロであるかゼロであるかを示すフラグを前記フラグバッファに設定し、前記最終の非ゼロ係数に対応するデータバッファのアドレスである最終アドレスを保持するフラグバッファ制御部と、
    フラグバッファに設定されたフラグに基づいて、非ゼロ係数のみを前記データバッファに書き込む制御と、前記データバッファから非ゼロの係数を読み出す制御とを行うデータバッファ制御部と、
    データバッファから読み出された係数およびゼロのうち一方を選択する選択部と
    を備え、
    前記フラグバッファ制御部は、フラグバッファに保持されたフラグおよび前記最終アドレスに基づいて前記選択部の選択を制御する
    可変長復号化装置。
JP2011500365A 2009-02-23 2009-07-28 可変長復号化装置 Pending JPWO2010095181A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009040034 2009-02-23
JP2009040034 2009-02-23
PCT/JP2009/003542 WO2010095181A1 (ja) 2009-02-23 2009-07-28 可変長復号化装置

Publications (1)

Publication Number Publication Date
JPWO2010095181A1 true JPWO2010095181A1 (ja) 2012-08-16

Family

ID=42633484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011500365A Pending JPWO2010095181A1 (ja) 2009-02-23 2009-07-28 可変長復号化装置

Country Status (3)

Country Link
US (1) US20110291866A1 (ja)
JP (1) JPWO2010095181A1 (ja)
WO (1) WO2010095181A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8988444B2 (en) * 2011-12-16 2015-03-24 Institute For Information Industry System and method for configuring graphics register data and recording medium
AU2013254214C1 (en) 2012-04-23 2017-03-02 Sun Patent Trust Encoding method, decoding method, encoding apparatus, decoding apparatus, and encoding and decoding apparatus

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2512195B2 (ja) * 1990-04-05 1996-07-03 松下電器産業株式会社 符号化装置および復号化装置
US5280349A (en) * 1992-02-13 1994-01-18 Industrial Technology Research Institute HDTV decoder
JPH07327200A (ja) * 1994-05-31 1995-12-12 Mitsubishi Electric Corp 復号装置
KR0154010B1 (ko) * 1995-03-16 1998-11-16 배순훈 가변길이 복호화 장치
JPH11112933A (ja) * 1997-10-06 1999-04-23 Sharp Corp 可変長復号装置及び可変長符号化装置
US6414608B1 (en) * 1999-06-09 2002-07-02 Matsushita Electric Industrial Co., Ltd. Variable length code decoding device, digital broadcast receiving apparatus, and DVD reproducing apparatus
JP3990392B2 (ja) * 2004-08-31 2007-10-10 松下電器産業株式会社 可変長復号化装置、可変長復号化方法および撮像システム
JP2007329903A (ja) * 2006-05-11 2007-12-20 Matsushita Electric Ind Co Ltd 可変長復号化装置、可変長復号化方法および撮像システム

Also Published As

Publication number Publication date
WO2010095181A1 (ja) 2010-08-26
US20110291866A1 (en) 2011-12-01

Similar Documents

Publication Publication Date Title
CN101107861B (zh) 重叠平滑与环路内解块之分段处理
US7792385B2 (en) Scratch pad for storing intermediate loop filter data
JP2007300517A (ja) 動画像処理方法、動画像処理方法のプログラム、動画像処理方法のプログラムを記録した記録媒体及び動画像処理装置
JP5969914B2 (ja) 動画像圧縮伸張装置
JP2007150913A (ja) 画像符号化装置
US8204106B2 (en) Adaptive compression of video reference frames
US20130188729A1 (en) Method of determining binary codewords for transform coefficients
JP2006295796A (ja) 画像データ復号装置及び画像データ復号方法
JP5116704B2 (ja) 画像符号化装置及び画像符号化方法
JP4945513B2 (ja) 可変長復号装置およびそれを用いた動画復号装置
JP3940672B2 (ja) 画像処理装置及び画像処理方法
JP2010098352A (ja) 画像情報符号化装置
JP4644290B2 (ja) 高域係数用符号化ブロックパターン生成方法及び装置
WO2010095181A1 (ja) 可変長復号化装置
JP2007259323A (ja) 画像復号化装置
JP2002112268A (ja) 圧縮画像データ復号装置
JP7359653B2 (ja) 動画像符号化装置
JP4515870B2 (ja) 信号処理装置及び映像システム
JP2010268094A (ja) 画像復号化装置および画像復号化方法
US20120147972A1 (en) Image decoding apparatus, image decoding method, image encoding apparatus, image encoding method, and program
JP3861317B2 (ja) 可変長復号装置
JP4461859B2 (ja) ランレングス符号の復号装置
JP2010041115A (ja) 画像処理装置および画像処理方法
KR100478293B1 (ko) 비디오 신호 엔코딩/디코딩 방법
JP2007104155A (ja) 画像復号装置