JPH09307456A - 可変長符号復号装置及び方法 - Google Patents

可変長符号復号装置及び方法

Info

Publication number
JPH09307456A
JPH09307456A JP11462596A JP11462596A JPH09307456A JP H09307456 A JPH09307456 A JP H09307456A JP 11462596 A JP11462596 A JP 11462596A JP 11462596 A JP11462596 A JP 11462596A JP H09307456 A JPH09307456 A JP H09307456A
Authority
JP
Japan
Prior art keywords
length
bit pattern
variable
bit
run
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
JP11462596A
Other languages
English (en)
Inventor
Hideyo Tsuruta
英世 鶴田
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 Holdings Corp
Original Assignee
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP11462596A priority Critical patent/JPH09307456A/ja
Publication of JPH09307456A publication Critical patent/JPH09307456A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 本発明は、膨大な容量の可変長復号テーブル
を設ける必要がなく、回路規模及びコストの増大を抑え
て、汎用的なデータ処理装置での高速処理に好適な可変
長符号復号装置を提供することを目的とする。 【解決手段】 データRAM107は、可変長符号にお
いて先頭から同一論理値をもつビットの連続部分である
ランの次の前記論理値の反転値をもつビットに後続する
残りの部分を表すビットパタンと、ビットパタンに対応
する復号情報とを、可変長符号のラン長毎に予め記憶し
ている。プライオリティエンコーダ103及びバレルシ
フタ104は、前記ビット列中の可変長符号の前記ラン
長と前記ビットパタンとを検出する。制御部99は、検
出されたラン長及びビットパタンに対応する復号情報を
データRAM107から読み出す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、MPEGやJPEGなどに
基づいて圧縮されたデータを伸長する情報処理装置にお
いて、圧縮データに含まれるハフマン符号を復号する可
変長符号復号方法に関する。
【0002】
【従来の技術】近年、MPEGやJPEGなどの画像データ圧縮
伸長方法が画像データの蓄積や伝送によく利用されてい
る。これらの方法によれば、画像データは、複数画素か
ら成るブロック単位にDCT(離散余弦変換)、量子
化、可変長符号化などの処理を経て圧縮される。その結
果、圧縮されたデータは、ハフマン符号と呼ばれる多数
の可変長符号で構成される。また、圧縮されたデータ
は、可変長符号復号化、逆量子化、逆DCT(逆離散余
弦変換)などの処理を経て画像データに伸長される。
【0003】上記処理のうち可変長符号復号化では、圧
縮データからの個々の可変長符号の切り出しと、切り出
された可変長符号の復号とが繰り返し行われる。図7
は、第1の従来例における可変長符号復号装置の概略構
成を示すブロック図である。同図において、バレルシフ
タ142は、受信バッファから入力された圧縮データに
対して復号済みの可変長符号が含まれる部分をシフトア
ウトすることにより次に復号すべき新たな可変長符号を
出力する。ベースアドレスレジスタ143は、上位の制
御を行うコントローラ(図外)から入力されるベースア
ドレスを保持する。このベースアドレスは、何種類かあ
る可変長符号復号化テーブルの先頭アドレスである。加
算器144は、バレルシフタ142からの可変長符号と
ベースアドレスレジスタ143からのベースアドレスと
を加算し、可変長符号復号化テーブルのアドレスとして
出力する。可変長符号テーブル145は、加算器144
から与えられるアドレスに対応してテーブル内容を復号
値として出力する。これと同時に可変長符号のバレルシ
フタにシフト量を与えるため符号長を出力する。出力レ
ジスタ146は、可変長符号テーブル145の出力を復
号結果としてワークRAM(図外)に出力する。
【0004】図8は、上記可変長符号テーブル145の
内容を示す図である。テーブルが大きいので、同図では
テーブルの先頭部分のみを示している。このテーブル
は、可変長符号に対応する復号値を保持してある。実際
にはテーブルは、可変長符号にベースアドレスが加算さ
れた結果がアドレスとして指定され、対応する復号値を
出力する。
【0005】図9は、第2の従来例における可変長符号
復号装置の主要部の構成を示すブロック図である(特開
平6-44039に開示されている)。この可変長符号復号装
置は、バレルシフタ720と、ビットマスクシフタ72
1、プライオリティエンコーダ722、マルチプレクサ
723、加算器724、マルチプレクサ725、ベース
アドレスレジスタ726、可変長符号テーブル727、
出力レジスタ728を有する。この構成は、第1の従来
例に比べて、主として可変長符号テーブル727が2段
階の1次テーブルと2次テーブルとに分割されている点
と、ビットマスクシフタ721とプライオリティエンコ
ーダ722とが追加された点とが異なっている。これ以
外の同じ名称の構成要素は同様であるので説明を省略
し、異なる点のみ説明する。
【0006】可変長符号テーブル727は、1つの可変
長符号について順次参照される1次テーブルと2次テー
ブルとを有する。1次テーブル、2次テーブルの具体例
をそれぞれ表1と表2に掲げる。表2は表1に対応する
2次テーブルの一部である。
【0007】
【表1】
【0008】
【表2】 表1の1次テーブルにおいて「RUNのエンコード値」
は、プライオリティエンコーダ722の出力に対応す
る。「シフト量」は、可変長符号の先頭から連続するラ
ン長毎に分けられた各グループにおいて、一つのグルー
プ内の全ての可変長符号に共通な先頭部分のビット数を
表す。「2次評価ビット数」は、符号語を前記シフト量
分だけ左シフトした後に残った符号語の内、次に評価さ
れるビット数を表す。「ベースアドレス」は、二次テー
ブルの参照用のベースアドレスである。
【0009】表2の2次テーブルにおいて「ベース」は
1次テーブルから得られた値であり、「オフセットアド
レス」は、2次評価ビット数に基づいてビットマスクシ
フタ721により出力されるオフセットアドレスであ
る。プライオリティエンコーダ722は、バレルシフタ
720により左詰めされた可変長符号が入力され、可変
長符号の先頭から連続する"0"のラン長を出力する。こ
のラン長は、ベースアドレスとともに加算されて1次テ
ーブルのアドレスとして利用される。
【0010】ビットマスクシフタ721は、バレルシフ
タの出力を、評価ビット数に基づいてシフトしてビット
マスクすることにより可変長符号のラン長に後続する部
分のみを切り出して右詰めして出力する。この出力は2
次テーブルのオフセットアドレスとして利用される。第
2の従来例の可変長符号復号装置における復号動作をス
テップ1〜5に分けて以下に簡単に説明する。 ・ステップ1 バレルシフタ720に入力された可変長符号データビッ
ト列は、バレルシフタ720の処理データ幅の左端に、
次に復号すべき可変長符号語の先頭が合うように左シフ
トされる。 ・ステップ2 プライオリティエンコーダ722は、バレルシフタ72
0から入力される可変長符号語の先頭から連続するビッ
ト'0'または'1'の数をランとして出力する。 ・ステップ3 プライオリティエンコーダ722からランとして出力さ
れた数は、マルチプレクサ723、加算器724を介し
てそのまま可変長符号テーブル727にアドレスとして
入力される。このアドレスに従って1次テーブルから、
そのランのグループのベースアドレス,シフト量,2次
評価ビット数が読み出される。 ・ステップ4 シフト量と2次評価ビット数に基づいてビットマスクシ
フタ721において入力可変長符号を評価して得られる
符号列と、ベースアドレスとが加算される。この加算結
果は2次テーブル参照用のアドレスとして出力される。 ・ステップ5 前記アドレスにより2次復号化テーブルを参照し、復号
化値を得る。
【0011】以上のステップ1から5により一つの符号
語が復号される。このようにして、第2の従来例におい
ては、グループ内の全ての可変長符号に共通な先頭部分
を全て削除し、2次評価ビット数を最小にすることによ
り2次テーブルのサイズを小さくすることができる。
【0012】
【発明が解決しようとする課題】しかしながら、上記第
1の従来例の構成によれば、可変長符号復号テーブルの
容量が膨大になるという問題があった。また、第2の従
来例の構成によれば、テーブル容量が減少している反
面、ビットマスクシフタのような特殊な回路を内蔵する
ため、回路規模とコストが増大するという問題があっ
た。また、二段階のテーブル参照を要するため、処理速
度を高速化が困難であるという問題があった。また、ソ
フトウェア処理に適さないため、ハフマン符号毎に最適
化した復号アルゴリズムを実装するのが困難であるとい
う問題もある。
【0013】このような課題に鑑み本発明は、膨大な容
量の可変長復号テーブルを設ける必要がなく、回路規模
及びコストの増大を抑えて、汎用的なデータ処理装置で
の高速処理に好適な可変長符号復号装置を提供すること
を目的とする。
【0014】
【課題を解決するための手段】上記課題を解決するため
本発明は、複数の可変長符号からなるビット列が入力さ
れ、個々の可変長符号を復号する可変長符号復号装置で
あって、可変長符号において先頭から同一論理値をもつ
ビットの連続部分であるランの次の前記論理値の反転値
をもつビットに後続する残りの部分を表すビットパタン
と、ビットパタンに対応する復号情報とを、可変長符号
のラン長毎に予め記憶しているテーブル手段と、前記ビ
ット列中の可変長符号の前記ラン長と、前記ビットパタ
ンとを検出する検出手段と、検出された前記ラン長及び
前記ビットパタンに対応する復号情報をテーブル手段か
ら読み出すテーブル参照手段とを備える。
【0015】また、前記テーブル手段はラン長毎の部分
テーブルからなり、各部分テーブルは、全ての可変長符
号語のうち、又は同一ラン長を持つ可変長符号語のうち
最大のビットパタン長をLとすると2のL乗の行数を有
し、ビットパタンの末尾に少なくとも0個のビットが付
加されて語長Lに拡張された拡張ビットパタンを行番号
とし、各行は行番号のビットパタン部分に対応する復号
情報を保持し、前記テーブル参照手段は、検出手段によ
り検出されたビットパタンの末尾に少なくとも0個の付
加ビットを与えることにより、当該ビットパタンの語長
を最大ビットパタン長に拡張する拡張手段と、検出され
たラン長に対応する部分テーブル中から、拡張されたビ
ットパタンを行番号として復号情報を読み出す読出手段
とを備えるようにしてもよい。
【0016】さらに、前記検出手段は、前記ビット列中
の未復号の可変長符号を含むデータを第1レジスタに格
納し、第1レジスタ中の可変長符号の先頭を示す情報を
第2レジスタに格納するレジスタ設定手段と、第1レジ
スタの出力データにおいて、第2レジスタが示す位置か
ら連続する同一論理値をもつビットのラン長を数えるプ
リオリティエンコーダとを有する構成としてもよい。
【0017】また、本発明は、可変長符号において先頭
から同一論理値をもつビットの連続部分であるランの次
の前記論理値の反転値をもつビットに後続する残りの部
分を表すビットパタンと、ビットパタンに対応する復号
情報とを、可変長符号の先頭から連続する"1"又は"0"の
ラン長毎に予め記憶しているテーブルと、プライオリテ
ィエンコーダとを有するプロセッサにおいて、圧縮画像
データに含まれる個々の可変長符号を復号する可変長符
号復号方法であって、圧縮画像データの一部を第1レジ
スタに取り出すステップと、第1レジスタ中の可変長符
号の先頭ビット位置を第2レジスタに格納するステップ
と、プライオリティエンコーダを用いて第2レジスタが
示す位置から前記同一論理値をもつビットの連続部分の
次の前記論理値の反転値を持つビット位置を求めること
により前記ラン長を求めるステップと、ランに後続する
前記ビットパタンを検出するステップと、検出されたラ
ン長及びビットパタンに対応する復号情報を前記テーブ
ルから読み出すテーブル参照ステップとからなる。
【0018】ここで、前記テーブルはラン長毎の部分テ
ーブルを有し、各部分テーブルは可変長符号語のうち最
大のビットパタン長をLとすると2のL乗の行数を有し、
ビットパタンの末尾に少なくとも0個のビットが付加さ
れて語長Lに拡張された拡張ビットパタンを行番号と
し、各行は行番号のビットパタン部分に対応する復号情
報を保持し、前記テーブル参照ステップは、検出手段に
より検出されたビットパタンの末尾に少なくとも0個の
付加ビットを与えることにより、当該ビットパタンの語
長を最大ビットパタン長に拡張して拡張ビットパタンを
生成するサブステップと、検出されたラン長に対応する
部分テーブルから、生成された拡張ビットパタンを行番
号として復号情報を読み出すサブステップとを有するよ
うにしてもよい。
【0019】
【発明の実施の形態】以下、本発明の可変長符号復号装
置の実施の一形態を説明する。図1は、可変長符号復号
装置のハードウェア構成の主要部を示すブロック図であ
る。同図の可変長符号復号装置は、制御部99、レジス
タファイル100、選択器101、プライオリティエン
コーダ103、バレルシフタ104、ALU105、選
択器106、データRAM107を備える。このハード
ウェア構成は、一般的な汎用マイクロコンピュータ中の
データパス部にプライオリティエンコーダ103とバレ
ルシフタ104とを付加した構成であり、最大32ビッ
ト単位でデータを処理するものとする。また、本発明の
可変長符号復号方法は、その処理内容を記述したプログ
ラム中の命令を同図のハードウェアにより実行していく
ことにより実現される。このプログラムは、前記マイク
ロコンピュータ中の図示していないROM等のメモリに格
納される。以下、同図に示される可変長符号復号装置の
各構成要素を前記プログラムにより実現される機能とと
もに説明する。
【0020】制御部99は、前記プログラム中の個々の
命令の実行制御を行うことにより、可変長符号復号処理
を制御する。レジスタファイル100は、作業用のデー
タまたはアドレスを一時的に格納するレジスタを複数本
内蔵する。レジスタには、復号対象の可変長符号データ
ビット列が順次格納されるレジスタDvlc(vlcはvariable
length codeの略)と、レジスタDvlc中の復号済みの可
変長符号語の末尾の位置、又は次に復号すべき可変長符
号語において先頭から連続する'0'ランの次のビット'1'
の位置を指し示すポインタが格納されるレジスタDpos(p
osはpositionの略)と、レジスタDposの控えとして上記
末尾の位置を指し示すポインタを保持するレジスタDpo
s'とを含む。レジスタDpos、Dpos’中の下位5ビットが
このポインタである。
【0021】レジスタDvlcおよびレジスタDposの説明図
を図4に示す。同図において、ビットの重みの順位はは
リトルエンディアンであるものとし、処理単位の一語3
2ビット中の各ビットのビット位置を、第31ビットか
ら第0ビットと表現する。従って一語32ビット中のMS
Bは第31ビットであり、LSBは第0ビットである。同図
のレジスタDvlcは、第20ビット以下に次に復号すべき
可変長符号が格納されている例を示している。図中「実
行前のDpos」、「実行後のDpos」は、プライオリティエ
ンコーダ103の探索動作の実行前後を意味する。実行
前のDposレジスタは第21ビットを指している。この位
置は復号済みの可変長符号の末尾の位置であり、(探索
開始ビット位置+1)である。実行後のDposレジスタは
第9ビットを指している。この位置は次に復号すべき可
変長符号において先頭から連続する'0'ランの次のビッ
ト'1'の位置であり、探索終了ビット位置である。ただ
し、第31ビットが探索開始位置である場合には、Dpos
=0としている。
【0022】選択器101は、前記汎用マイクロプロセ
ッサの命令中で指定される即値とレジスタファイル10
0中の一つのレジスタの出力とのいずれかを選択し、シ
フト量の指定としてバレルシフタ104に出力する。選
択器102は、レジスタファイル100中の一つのレジ
スタの出力と前記汎用マイクロプロセッサの命令中で指
定される即値とのいずれかから選択し、ALUの一つの
入力を与える。
【0023】プライオリティエンコーダ103は、図4
に示したようにレジスタDclvのデータにおいて、(レジ
スタDpos−1)で指定されるビット位置を探索開始ビッ
ト位置として、これより右の位置に最初に存在するDpos
中のビット'1'を探索して、それが初めて見つかった位
置を探索終了ビット位置とし、探索結果を5ビットに符
号化して出力する。探索開始時、Dposの下位5ビット以
外のビットは無視される。探索が失敗した場合、その旨
を示す状態フラグが特定のレジスタ中にセットされ、Dp
osには0が格納される。この場合、さらに(実行前のDpo
sの値−実行後のDposの値−1)として探索開始ビット
位置からの連続するビット'0'のラン長が求められる。
探索に失敗した場合、続く32ビットのビット列をDvlc
に読み込まれ、同じくプライオリティエンコーダにより
探索処理を実行する。状態フラグがセットされている場
合、(実行前のDposの値−実行後のDposの値−1+3
2)がラン長となる。まだビット'1'が見つからなけれ
ば、同様にこれらの処理を繰り返す。
【0024】バレルシフタ104は、レジスタファイル
100中の一つのレジスタの出力を選択器101からの
5ビットの出力で指定されるシフト量だけ右または左へ
論理シフトする。このバレルシフタ104は、第2の従
来例のバレルシフタのようなシフトレジスタではなく、
組み合わせ回路で構成される。ALU105は、レジス
タファイル100中の一つのレジスタの出力と選択器1
02の出力との間で算術論理演算を行う。具体的には、
プライオリティエンコーダ103の実行前のレジスタDp
osが示す(探索開始ビット位置+1)と、実行後のレジ
スタDposが示すとの差分(ラン長R)を求める演算や、
レジスタファイル100中の一つのレジスタで指定され
るベースアドレスと可変長符号に基づくオフセットアド
レスとを加算してデータRAM107中のテーブルアド
レス求める演算などを行う。
【0025】選択器106は、プライオリティエンコー
ダ103の出力とバレルシフタ104の出力とALU1
05の出力のいずれか一つを選択する。データRAM1
07は、復号の対象となる圧縮データであるビットスト
リーム及び復号表が予め格納され、復号済みの符号情報
が順次格納され、他に作業用の一時記憶領域も有する。
【0026】データRAM107内に格納される上記の
復号表は、可変長符号の先頭から連続する"1"又は"0"の
ラン長R毎に、可変長符号の取り得る全てのビットパタ
ンに対応させて復号情報を記憶する。ここでビットパタ
ンとは、可変長符号の先頭から連続する"1"又は"0"の複
数ビットの次の"0"又は"1"のビットに後続する部分をい
う。復号情報とは、JPEG及びMPEG標準の規定されている
ラン/サイズNNNN/SSSSを含む情報である。
【0027】復号表中のラン長R毎の部分を部分テーブ
ルと呼ぶ。各部分テーブルは、可変長符号語のうちの最
大のビットパタン長をLとすると、2のL乗の行数を有す
る。各行は、ビットパタンの末尾に少なくとも0個のビ
ットが付加されて語長Lに拡張された拡張ビットパタン
を行番号としている。これにより、最大ビットパタン長
Lより短いビットパタンには複数の拡張ビットパタンが
対応することになるが、部分テーブルはこの複数の拡張
ビットパタン全てに復号情報を記憶している。つまり、
部分テーブルの(拡張ビットパタン)番目の行に復号情
報が記憶される。これは、復号表に多少の冗長性を持た
せることによって復号表の取り扱いを容易にするためで
ある。
【0028】最大ビットパタン長Lは、(1)部分テーブル
毎に異なる値、または(2)全部分テーブルで共通の値と
している。(1)の場合では、各部分テーブル毎に、同一
ラン長Rをもつ全ての可変長符号語のうちの最大のビッ
トパタンのビット長がLとなる。この場合、ラン長R毎に
最大ビットパタン長Lが1つずつ定まる。また(2)の場合
では、ラン長Rとは無関係に全ての可変長符号語のうち
の最大のビットパタンのビット長がLとなる。(2)の場合
は、(1)の場合に比べて復号表の冗長性が増えるが、ビ
ットパタンから拡張ビットパタンへの拡張処理を画一的
に単純化できる。
【0029】上記復号表の前提となるハフマン符号の具
体例を表3に示す。
【0030】
【表3】 この表3は、JPEG標準中に例示されているハフマン符号
の一部であり、JPEG標準中に記載されている表K.5よ
り、先行するビット'1'のラン長Rが8ビットである符号
語の部分を抜粋したものである。同表中、左端の欄のラ
ン/サイズは上記の復号情報である。
【0031】図5は、表3に対応するデータRAM10
7内の復号表を示す図であり、ラン長Rが8ビットであ
る可変長符号のみの部分テーブルを記載している。同図
中の復号表の左側には、行番号を2進数で記してある。
復号表全体は、JPEGの場合、本実施例の復号表はR=0か
らR=15までのラン長R毎の16種類の部分テーブルからな
る。同図では、最大ビットパタン長L=6であり、全ての
ラン長Rに対して共通にしている。各部分テーブルは、
符号長nとラン/サイズNNNN/SSSSとを復号情報として含
む。
【0032】同図の復号表において符号長とラン/サイ
ズの欄は各1バイト長である。表中の各行は拡張ビット
パタンの順に並べられる。この表の(拡張ビットパタ
ン)番目の行に、対応する復号情報が格納される。但
し、本実施例では、プライオリティエンコーダ103が
ビット'1'しか探索できないことと、JPEGのハフマン符
号語は主に先頭からビット'1'が連続することを鑑み、
可変長符号をあらかじめ反転してある。
【0033】同図では、可変長復号時にRに対応するLを
求める手間と時間を削減するため、各Rの最大のビット
パタン長のうち最大値を最大ビットパタン長Lとして共
通化してある。これは、JPEGで使うハフマン符号がユー
ザー定義可能であるため、多様なハフマン符号の取り扱
いを容易にすることにも寄与する。この例の場合、最大
ビットパタン長L=6である。例えば111111110111(0000
00001000の反転)という符号については、ビットパタン
が000であって拡張ビットパタンが000XXXになり、図5
に示すR=8の表の第000000行から第000111行に復号情報
として符号長n=12とラン/サイズNNNN/SSSS=7/2とが
格納される。
【0034】図2は、図1のハードウェア構成における
可変長符号復号方法の処理手順を示すフローチャートで
ある。このフローチャートでは、JPEG(国際標準ISO/IE
C 10918)方式の伸長処理における可変長符号の復号を
行う場合の処理を示している。この場合、復号の対象と
なる可変長符号は、JPEG標準中に例示されているハフマ
ン符号であり、既に説明した表3にその一部が示されて
いる。また、データRAM107は、JPEGの場合にはR
=0からR=15までの16種類の復号テーブルからなる復号
表を格納する。表3に対する復号表の一部分(R=8の部
分テーブル)は、既に説明した図5に示した。
【0035】以下、111111110111 000‥‥なるビットス
トリーム(ビット列)を先頭より復号する場合の具体例
と共にフローチャートの処理を説明する。まず、制御部
99は、(探索開始ビット位置+1)をレジスタDposに
設定して、データRAM107中のビットストリームの
読み出しアドレスをアドレス用レジスタに初期設定する
(ステップ200)。具体例では、ビットストリームの
先頭から復号されるのでレジスタDpos=0に設定され、
探索開始ビット位置は第31ビットになる。
【0036】さらに、制御部99は、読み出しアドレス
で指定されるビットストリーム中の32ビットデータを
データRAM107から読み出してレジスタDvlcに格納
し、読み出しアドレスを次の32ビットデータのアドレ
スに更新する(ステップ201)。具体例では、レジス
タDvlcの内容は、111111110111 000‥‥となる。次に、
制御部99は、このレジスタDvlc中の32ビットデータ
を全ビットを反転させる(ステップ202)。具体例で
は、レジスタDvlcの内容は、000000001000 111‥‥とな
る。
【0037】さらに、プライオリティエンコーダ103
は、Dvlc中のビット'1'をDposが指すビット位置より右
向きに探索し、探索終了ビット位置を出力する。制御部
99は、探索終了ビット位置をレジスタDposに格納する
(ステップ203)。具体例では、レジスタDposの内容
は‥‥010111となり、レジスタDvlcの第23ビットを指
す。もし、探索に失敗していれば、ステップ201に戻
る(ステップ204)。
【0038】次に、ALU105は、(探索開始ビット
位置+1)つまりレジスタDpos’の内容と探索終了ビッ
ト位置(実行後のDpos)との差から可変長符号内のラン
長Rを求める(ステップ205)。具体例では、R=8と
なる。さらに、制御部99は、バレルシフタ104を用
いて、探索終了ビット位置の一つ右のビット位置より右
のLビットを拡張ビットパタンとして抽出する(ステッ
プ206)。この例では最大ビットパタン長Lは、全て
のラン長に共通にしているので、ビットパタンから拡張
ビットパタンへの拡張は、実際には単純なLビット分の
抽出という処理だけで実現される。具体例では、L=6で
あり、拡張ビットパタン=000111となる。
【0039】次に、制御部99は、ラン長Rに対応する
部分テーブルの(拡張ビットパタン番目)の行より、復
号情報を抽出する。具体的には、ラン長Rに対応する部
分テーブルの先頭アドレスと拡張ビットパタンとをAL
U105に加算させて得られるアドレスのデータを、デ
ータRAM107から読み出す(ステップ207)。具
体例では、図5の復号表から復号情報としてn=12,NNN
N/SSSS=7/2が読み出される。
【0040】さらに、制御部99は、最後の可変長符号
まで復号し終えた場合、及び必要量だけ復号し終えた場
合には復号処理を終了し(ステップ208)、そうでな
けれ探索開始ビット位置(Dpos’−1)から復号情報中
のnを減じ、次の探索開始ビット位置としてレジスタDpo
s及びDpos'を更新し(ステップ209)、ステップ20
1に戻る。具体例では、Dpos=20となる。
【0041】以上の処理により、JPEG方式における可変
長符号が1つずつ復号情報に復号される。各復号情報は
さらに、さらに公知技術である逆量子化、逆DCTなど
の処理を経て画像データに復元される。続いて、本発明
の可変長符号複号方法をMPEG1ビデオ(以下、MPEGと略
す)(国際標準ISO/IEC 11172-2)に適用した場合を説
明する。
【0042】図3は、図1に示したハードウェア構成に
おける可変長符号復号方法をMPEG1ビデオ方式の伸長処
理に適用した場合の処理手順を表すフローチャートであ
る。なお、ITU-T H.261用のハフマン符号はMPEGのハフ
マン符号の部分集合となっているので、H.261の復号処
理にも同図の処理手順が適用できる。まず、MPEG標準中
に例示されているハフマン符号の一部を表4に示す。
【0043】
【表4】 この表4は、MPEG標準中に記載されている表B.5cより、
先行するビット'0'のラン長Rが2ビットである符号語の
部分を抜粋したものである。同表中、中央欄のランと右
端の欄のレベルは符号語に対する情報記号である。図6
は、表4に対する復号表を示す説明図である。同図は、
ラン長Rが2ビットである符号語のみに関する。同図中
の復号表の左側に、行番号を2進数で記してある。MPEG
の場合、本実施例の復号表はラン長R=0からR=11まで
の12種類の部分テーブルに分けられる。各Rに対する部
分テーブルは、ランとレベルとを符号情報として含む。
MPEGのハフマン符号では、R毎に符号長nがほとんど一意
に対応するので、同図の復号表には符号長nの情報を載
せないで、前記プログラム中にラン長Rに対応するnを決
定する処理を追加することとする。
【0044】表5に、MPEGのハフマン符号におけるRとL
とnの関係を示す。
【0045】
【表5】 この表5からわかるようにラン長R=0,1,2に対して
は、最大ビット長L、符号長nはそれぞれ2通りに分けら
れるので、これらの場合には、先行するビット'0'に続
くビット'1'に続く2ビットを条件判断することにより
場合分けする処理ルーチンを前記プログラム中に設け、
さらに各場合毎に異なる部分テーブルを設けている。な
お、処理ルーチンはラン長R毎に設けるものとする。
【0046】図6(a)、(b)は、R=2の可変長符号
を上記の場合分毎に異なる部分テーブルを示す。同図
(a)はL=3,n=6の場合の可変長符号に対応し、同図
(b)はL=6,n=9の場合の可変長符号に対応する。ラ
ンとレベルの欄は各1バイト長である。表中の各行は、
拡張ビットパタン長の順に復号情報を並べてある。例え
ば、001010という可変長符号に対しては、図6(a)に
示す第010行目のラン=0とレベル=3とからなる復号情
報を格納している。
【0047】図3のフローチャートにおいて、図6に示
された復号表を用いて可変長復号処理を行う場合の処理
手順を説明する。以下、001001010‥‥なるビットスト
リーム(ビット列)を先頭から復号する場合の具体例と
共に説明する。まず、制御部99は、MPEGの復号処理単
位は64個の係数からなる1ブロックであるため、復号の
結果得られる64個の係数の格納先である結果出力用メモ
リ領域をデータRAM107中に確保し、更に、復号さ
れる係数の多くが0であるため、前記結果出力用メモリ
領域を全て0で初期化しておく(ステップ300)。
【0048】次に、制御部99は、(探索開始ビット位
置+1)をレジスタDposに設定する。ビットストリーム
の読み出しアドレスも初期設定する(ステップ30
1)。具体例で、Dposの値は0となる。さらに、制御部
99は、ループカウンタを0に設定する(ステップ30
2)。このループカウンタは、レジスタファイル100
中の一つのレジスタに置かれる。ループカウントの(カ
ウント値)番目の係数は、前記結果出力用メモリ領域の
先頭から(カウント値)番目の位置に格納されるとす
る。
【0049】次に、制御部99は、データRAM107
中のビットストリームから初期設定された読み出しアド
レスで指定される32ビットを読み出し、レジスタファ
イル100中のレジスタDvlcに格納し、ビットストリー
ムの読み出しアドレスを32ビット分次のドレスに更新
する(ステップ303)。具体例で、Dvlcの内容は、00
1001010‥‥となる。
【0050】さらに、制御部99は、プライオリティエ
ンコーダ103によりDvlc中のビット'1'をDposが指す
ビット位置より右向きに探索させ、探索終了ビット位置
をDposに書き込む(ステップ304)。具体例で、Dpos
の値は29となる。このとき、ビット探索に成功すればス
テップ306に進み、失敗すればステップ303に戻る
(ステップ305)。具体例では成功する。
【0051】次に、制御部99は、ALU105によ
り、探索開始ビット位置と探索終了ビット位置の差から
ラン長Rを求める(ステップ306)。具体例では、ラ
ン長R=2となる。さらに、制御部99は、ラン長Rに対
応する上記の処理ルーチンに分岐し、ラン長Rに対する
L、nを場合分けする。具体的には、ラン長毎の処理ルー
チンへの分岐先アドレスを、特定のベースアドレスにR
の整数倍を加算した値として計算し、このアドレスへ多
方向分岐する。Rに乗じる整数は、分岐後の各Rに対応す
る処理ルーチンのコードサイズの最大値である。各Rに
対応する処理ルーチンは、このようにして計算される分
岐先のアドレスにあらかじめ配置される。ラン長R=3か
らR=11の場合には、分岐した時点でRに対応するLとnの
値が一意に定まり、R=0からR=2の場合にはさらにビッ
トパタンの左端の2ビットをチェックすることによりL
とnの値が定められる(ステップ307)。具体例で
は、R=2であるので更にbitpatの左端の2ビットをチェ
ックすることによりL=6,n=9であることを判断する。
【0052】次に、制御部99は、バレルシフタ104
を用いて、探索終了ビット位置の一つ右のビット位置よ
り右のLビットを拡張ビットパタンとして抽出する(ス
テップ308)。具体例では、拡張ビットパタン=0010
10となる。さらに、制御部99は、ラン長R(またはRと
Lとn)に対応する部分テーブルの(拡張ビットパタン番
目)の行より、復号情報を抽出する。具体的には、ラン
長Rに対応する部分テーブルの先頭アドレスと拡張ビッ
トパタンとをALU105に加算させて得られるアドレ
スのデータを、データRAM107から読み出す(ステ
ップ309)。具体例では、図6(b)の部分テーブル
からラン=1,レベル=3という復号情報が得られる。
【0053】次に、制御部99は、ALU105によ
り、ループカウンタのカウント値をラン分進める(ステ
ップ310)。結果出力用メモリ領域は全て0で初期化
されているので、ラン分進めるということは、ラン分の
0の係数を結果出力用メモリ領域に出力することと等し
い。具体例では、カウント値を1進める。さらに、制御
部99は、カウント値に対応するスキャン順を、表6に
示されるジグザグスキャン表から検索し、ジグザグスキ
ャン順をラスタスキャン順に変換したアドレスを求める
(ステップ311)。
【0054】表6においてA欄は、表7に示された数字
に対応し、1ブロック(8×8行列)中の位置を表す添え
字を表す。B欄は、表8に示された数字に対応し、1ブロ
ック(8×8行列)中の位置を表す添え字を表す。
【0055】
【表6】
【0056】
【表7】
【0057】
【表8】 次に、制御部99は、部分テーブルから得られたレベル
をステップ311で検索されたアドレスに格納し(ステ
ップ312)、さらに、ALU105により、ループカ
ウンタのカウント値を1進める(ステップ313)。さ
らに、64係数分復号したか、最終の符号語の復号を検出
したら終了し、さもなければ次へ進む(ステップ31
4)。途中で最終の符号語を検出したらそれ以降の係数
は0となることが標準で規定されている。既に全ての係
数が0で初期化されているので、いつ終端を検出しても
直ちに終了して良い。
【0058】次に制御部99は、探索開始ビット位置
(Dpos’−1)より符号長nを減じ、次の探索開始ビット
位置としてレジスタDpos及びDpos'を更新し(ステップ
315)、ステップ304に進む。具体例では、Dpos=
23となる。なお、実施の形態では、プライオリティエン
コーダ103により可変長符号のラン長を求めている
が、プログラムによりALU105等を用いて実現する
もできる。また、バレルシフタ104を用いて拡張ビッ
トパタンの切り出しているが、これもプログラムにより
ALU105等を用いて実現するもできる。これらをプ
ログラムにより実現する場合には、処理速度が犠牲にな
るが、一般的なマイクロコンピュータにも容易に適用で
きるという利点がある。
【0059】また、復号表中の各部分テーブルは、2の
L乗の行数を持つので、最大ビットパタン長Lを各ラン長
毎に定めた場合(上記(1)の場合)と、全てのラン長で
共通にする場合(上記(2)の場合)と復号表の容量が異
なるが、データRAMの余裕や、静止画か動画かの違い
などにより使い分けるようにすればよい。
【0060】
【発明の効果】本発明の可変長符号復号装置は、可変長
符号において先頭から同一論理値をもつビットの連続部
分であるランの次の前記論理値の反転値をもつビットに
後続する残りの部分を表すビットパタンと、ビットパタ
ンに対応する復号情報とを、可変長符号のラン長毎に予
め記憶しているテーブル手段と、前記ビット列中の可変
長符号の前記ラン長と、前記ビットパタンとを検出する
検出手段と、検出された前記ラン長及び前記ビットパタ
ンに対応する復号情報をテーブル手段から読み出すテー
ブル参照手段とを備える。この構成よれば、膨大な容量
の可変長復号テーブルを設ける必要がなく、回路規模及
びコストの増大を抑えて、汎用的なデータ処理装置での
高速処理に好適するという効果がある。
【0061】また、前記テーブル手段は、ラン長毎の部
分テーブルからなり、各部分テーブルは、全ての可変長
符号語のうち、又は同一ラン長を持つ可変長符号語のう
ち最大のビットパタン長をLとすると2のL乗の行数を有
するよう構成される。この構成によれば、拡張手段によ
りビットパタンを拡張する処理が、画一的に行えるた
め、より高速処理が可能になる。テーブル手段は、全て
の部分テーブルが2のL乗の行数を持つので冗長さがあ
るものの、テーブル取り扱いが簡単なのでユーザ定義さ
れたテーブルに対しても柔軟に対応することができる。
【0062】また、各部分テーブルが、同一ラン長を持
つ可変長符号語のうち最大のビットパタン長をLとし、
部分テーブル毎に異なるLに対して2のL乗の行数を有す
る構成によれば、テーブル手段の容量をさらに削減する
ことができる。さらに、前記検出手段が、レジスタ設定
手段と、プリオリティエンコーダとを有する構成によれ
ば、ビットパタンの切り出しを高速に行うことができ
る。
【0063】本発明の可変長符号復号方法は、圧縮画像
データの一部を第1レジスタに取り出すステップと、第
1レジスタ中の可変長符号の先頭ビット位置を第2レジ
スタに格納するステップと、プライオリティエンコーダ
を用いて第2レジスタが示す位置から前記同一論理値を
もつビットの連続部分の次の前記論理値の反転値を持つ
ビット位置を求めることにより前記ラン長を求めるステ
ップと、ランに後続する前記ビットパタンを検出するス
テップと、検出されたラン長及びビットパタンに対応す
る復号情報を前記テーブルから読み出すテーブル参照ス
テップとからなる。この方法よれば、膨大な容量の可変
長復号テーブルを設ける必要がなく、汎用的なデータ処
理装置での高速処理に好適するという効果がある。
【0064】また、前記テーブル参照ステップは、検出
手段により検出されたビットパタンの末尾に少なくとも
0個の付加ビットを与えることにより、当該ビットパタ
ンの語長を最大ビットパタン長に拡張して拡張ビットパ
タンを生成するサブステップと、検出されたラン長に対
応する部分テーブルから、生成された拡張ビットパタン
を行番号として復号情報を読み出すサブステップとを有
する。この方法によれば、ビットパタンを拡張すること
により画一的な取り扱いができ、より高速な処理が可能
になる。
【図面の簡単な説明】
【図1】実施の形態における可変長符号復号装置のハー
ドウェア構成の主要部を示すブロック図である。
【図2】図1のハードウェア構成における可変長符号復
号方法をJPEG方式の伸長処理に適用した場合の処理手順
を示すフローチャートである。
【図3】図1に示したハードウェア構成における可変長
符号復号方法をMPEG1ビデオ方式の伸長処理に適用した
場合の処理手順を表すフローチャートである。
【図4】レジスタDvlcおよびレジスタDposの説明図であ
る。
【図5】JPEGに応用する場合の復号表(一部)の説明図
である。
【図6】MPEGやH.261に応用する場合の復号表(一部)
の説明図である。
【図7】第1の従来例の可変長符号復号装置の構成を示
すブロック図である。
【図8】第1の従来例の可変長符号テーブルの内容を示
す図である。
【図9】第2の従来例の可変長符号復号装置の構成を示
すブロック図である。
【符号の説明】
99 制御部 100 レジスタファイル 101、102、106 選択器 103 プライオリティエンコーダ 104 バレルシフタ 105 ALU 107 データRAM

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 複数の可変長符号からなるビット列が入
    力され、個々の可変長符号を復号する可変長符号復号装
    置であって、 可変長符号において先頭から同一論理値をもつビットの
    連続部分であるランの次の前記論理値の反転値をもつビ
    ットに後続する残りの部分を表すビットパタンと、ビッ
    トパタンに対応する復号情報とを、可変長符号のラン長
    毎に予め記憶しているテーブル手段と、 前記ビット列中の可変長符号の前記ラン長と、前記ビッ
    トパタンとを検出する検出手段と、 検出された前記ラン長及び前記ビットパタンに対応する
    復号情報を前記テーブル手段から読み出すテーブル参照
    手段とを備えることを特徴とする可変長符号復号装置。
  2. 【請求項2】 前記テーブル手段は、ラン長毎の部分テ
    ーブルからなり、 各部分テーブルは、全ての可変長符号語のうち最大のビ
    ットパタン長をLとすると2のL乗の行数を有し、ビット
    パタンの末尾に少なくとも0個のビットが付加されて語
    長Lに拡張された拡張ビットパタンを行番号とし、 各行は、行番号のビットパタン部分に対応する復号情報
    を保持し、 前記テーブル参照手段は、 検出手段により検出されたビットパタンの末尾に少なく
    とも0個の付加ビットを与えることにより、当該ビット
    パタンの語長を最大ビットパタン長に拡張する拡張手段
    と、 検出されたラン長に対応する部分テーブルから、拡張さ
    れたビットパタンを行番号として復号情報を読み出す読
    出手段とを備えることを特徴とする請求項1記載の可変
    長符号復号装置。
  3. 【請求項3】 前記テーブル手段は、ラン長毎の部分テ
    ーブルを有し、 各部分テーブルは、同一ラン長をもつ可変長符号語のう
    ち最大のビットパタン長をLとすると2のL乗の行数を有
    し、ビットパタンの末尾に少なくとも0個のビットが付
    加されて語長Lに拡張された拡張ビットパタンを行番号
    とし、 各行は、行番号のビットパタン部分に対応する復号情報
    を保持し、 前記テーブル参照手段は、 検出手段により検出されたビットパタンの末尾に少なく
    とも0個の付加ビットを与えることにより、当該ビット
    パタンの語長を最大ビットパタン長に拡張する拡張手段
    と、 検出されたラン長に対応する部分テーブルから、拡張さ
    れたビットパタンを行番号として復号情報を読み出す読
    出手段とを備えることを特徴とする請求項1記載の可変
    長符号復号装置。
  4. 【請求項4】 前記検出手段は、 前記ビット列中の未復号の可変長符号を含むデータを第
    1レジスタに格納し、第1レジスタ中の可変長符号の先
    頭を示す情報を第2レジスタに格納するレジスタ設定手
    段と第1レジスタの出力データにおいて、第2レジスタ
    が示す位置から連続する同一論理値をもつビットのラン
    長を数えるプリオリティエンコーダと、 を有することを特徴とする請求項1から3記載の何れか
    の可変長符号復号装置。
  5. 【請求項5】 可変長符号において先頭から同一論理値
    をもつビットの連続部分であるランの次の前記論理値の
    反転値をもつビットに後続する残りの部分を表すビット
    パタンと、ビットパタンに対応する復号情報とを、可変
    長符号の先頭から連続する"1"又は"0"のラン長毎に予め
    記憶しているテーブルと、プライオリティエンコーダと
    を有するプロセッサにおいて、圧縮画像データに含まれ
    る個々の可変長符号を復号する可変長符号復号方法であ
    って、 圧縮画像データの一部を第1レジスタに取り出すステッ
    プと、 第1レジスタ中の可変長符号の先頭ビット位置を第2レ
    ジスタに格納するステップと、 プライオリティエンコーダを用いて第2レジスタが示す
    位置から前記同一論理値をもつビットの連続部分の次の
    前記論理値の反転値を持つビット位置を求めることによ
    り前記ラン長を求めるステップと、 ランに後続する前記ビットパタンを検出するステップ
    と、 検出されたラン長及びビットパタンに対応する復号情報
    を前記テーブルから読み出すテーブル参照ステップと、 を有することを特徴とする可変長符号復号方法。
  6. 【請求項6】 前記テーブルは、ラン長毎の部分テーブ
    ルを有し、 各部分テーブルは、可変長符号語のうち最大のビットパ
    タン長をLとすると2のL乗の行数を有し、ビットパタン
    の末尾に少なくとも0個のビットが付加されて語長Lに
    拡張された拡張ビットパタンを行番号とし、 各行は、行番号のビットパタン部分に対応する復号情報
    を保持し、 前記テーブル参照ステップは、 検出手段により検出されたビットパタンの末尾に少なく
    とも0個の付加ビットを与えることにより、当該ビット
    パタンの語長を最大ビットパタン長に拡張して拡張ビッ
    トパタンを生成するサブステップと、 検出されたラン長に対応する部分テーブルから、生成さ
    れた拡張ビットパタンを行番号として復号情報を読み出
    すサブステップとを有することを特徴とする請求項5記
    載の可変長符号復号方法。
JP11462596A 1996-05-09 1996-05-09 可変長符号復号装置及び方法 Pending JPH09307456A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11462596A JPH09307456A (ja) 1996-05-09 1996-05-09 可変長符号復号装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11462596A JPH09307456A (ja) 1996-05-09 1996-05-09 可変長符号復号装置及び方法

Publications (1)

Publication Number Publication Date
JPH09307456A true JPH09307456A (ja) 1997-11-28

Family

ID=14642546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11462596A Pending JPH09307456A (ja) 1996-05-09 1996-05-09 可変長符号復号装置及び方法

Country Status (1)

Country Link
JP (1) JPH09307456A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6144322A (en) * 1998-08-10 2000-11-07 Mitsubishi Denki Kabushiki Kaisha Variable length code processor with encoding and/or decoding
JP2002057587A (ja) * 2000-08-10 2002-02-22 Sony Corp プロセッサ及びそれを用いた復号装置
US6756381B2 (en) 2002-02-21 2004-06-29 Supergen, Inc. Compositions and formulations of 9-nitrocamptothecin polymorphs and methods of use thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6144322A (en) * 1998-08-10 2000-11-07 Mitsubishi Denki Kabushiki Kaisha Variable length code processor with encoding and/or decoding
JP2002057587A (ja) * 2000-08-10 2002-02-22 Sony Corp プロセッサ及びそれを用いた復号装置
US6756381B2 (en) 2002-02-21 2004-06-29 Supergen, Inc. Compositions and formulations of 9-nitrocamptothecin polymorphs and methods of use thereof

Similar Documents

Publication Publication Date Title
US6643408B2 (en) Image coding and decoding apparatus, method of image coding and decoding, and recording medium for recording program for image coding and decoding
KR100950607B1 (ko) 허프만 코딩
JP2006211621A (ja) データ圧縮装置、及びデータ復元装置
US7343542B2 (en) Methods and apparatuses for variable length encoding
JP2010136417A (ja) データ圧縮装置、及びデータ復元装置
JPWO2009022531A1 (ja) データ圧縮伸張方法
JP3076201B2 (ja) 画像データ伸張方式
US6529554B1 (en) Low branch-mispredict technique for MPEG run length encoding
US7256719B2 (en) Digital data decompression implemented in a field programmable array device
US6980138B2 (en) Method and a system for variable-length decoding, and a device for the localization of codewords
JPH09307456A (ja) 可変長符号復号装置及び方法
JP2008278075A (ja) 可変長符号復号化装置
JP4013680B2 (ja) 復号装置および復号方法
US6781528B1 (en) Vector handling capable processor and run length encoding
GB2310345A (en) Data coder/decoder for compression
US6144321A (en) Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images
JP3417684B2 (ja) 画像処理装置
US6133859A (en) Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images
JP2003174365A (ja) 復号化装置及びその方法
JPH10215366A (ja) 圧縮画像データの抽出方法およびその装置
JPH0884260A (ja) 2次元画像データの圧縮方式および伸長方式
JP2818323B2 (ja) 二値画像データ切出し方式
US7893851B2 (en) Encoding apparatus, method, and processor
JP4095454B2 (ja) データ復号装置及びデータ復号方法
JP3145510B2 (ja) 圧縮符号の復号化方法及び装置