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

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

Info

Publication number
JPWO2007108395A1
JPWO2007108395A1 JP2008506268A JP2008506268A JPWO2007108395A1 JP WO2007108395 A1 JPWO2007108395 A1 JP WO2007108395A1 JP 2008506268 A JP2008506268 A JP 2008506268A JP 2008506268 A JP2008506268 A JP 2008506268A JP WO2007108395 A1 JPWO2007108395 A1 JP WO2007108395A1
Authority
JP
Japan
Prior art keywords
prefix
codeword
length
word length
decoding
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.)
Withdrawn
Application number
JP2008506268A
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2007108395A1 publication Critical patent/JPWO2007108395A1/ja
Withdrawn 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本発明の目的は、プリフィックスに関する情報をコンパクトに格納し、種々の方式の可変長符号に対応可能な復号装置を提供することである。復号装置は、プリフィックス共通部、その語長、プリフィックス個別部、その語長、サフィックスの語長及び入力ビット列を格納するレジスタファイル101と、プリフィックス共通部及び個別部から生成されたプリフィックスから入力ビット列に含まれるプリフィックスを判定するビットマッチング部102と、判定されたプリフィックスに対応するプリフィックス共通部、個別部及びサフィックスの各語長を用いて入力ビット列に含まれる符号語の語長を計算する符号語長計算部103と、対応するサフィックス及び符号語の各語長を用いてシンボルテーブル107のインデックスを計算するインデックス計算部104と、を有する。

Description

本発明は圧縮符号化された信号の復号技術に係り、特に可変長符号の復号装置及び方法に関する。
画像や音楽を圧縮するために可変長符号化が広く使用されている。可変長符号化は出現確率の高いシンボルに短い符号語を優先的に割り当てる符号化方法である。可変長符号化には符号語の平均語長を小さくできるという特徴がある。このような可変長符号化により符号化された情報を復号する方法は、次の4つに分類することができる:(a)シンプル・テーブル・ルックアップ法;(b)リーディング・サイン・カウント法;(c)バイナリ・ツリー法;(d)プリフィックス・グルーピング法。なお、これらは一般的な復号方法の名称ではないが、本明細書ではこれらの名称を使う。以下、簡単に説明する。
(a) シンプル・テーブル・ルックアップ法は最も単純な方法である。最も長い符号語の語長をNビットとし、入力ビット列の先頭からNビットを取り出し、そのNビットをインデックスとして2N個の要素をもつテーブルから要素を取り出す。テーブルから取り出された要素が符号語に対応するシンボルである。テーブルのサイズが大きいという欠点がある。
(b) リーディング・サイン・カウント法は入力ビット列の先頭側の連続する1や0(signビット)の数をもとにして符号語のグループを解読する。入力ビット列の先頭にあるsignビットに続くM個のビットを取り出し、それを使って符号語を解読する。Mは4とか5などで、符号語の構成によって変化する。ただし、M個のうち一部だけしか意味をもたない場合が多い。テーブルの中には少なからず無駄なデータがある。(a)のシンプル・テーブル・ルックアップ法よりもテーブルは小さいが、符号語の構成によっては2種類のテーブル(符号長、シンボル)が必要になることもある。ソフトウェアの可変長復号器はほとんどこの方法を用いている。
(c) バイナリ・ツリー法は、1ビットずつ、符号語を表すバイナリ・ツリーをたどる復号方法である。ツリーのリーフに達したら、テーブル参照などでシンボルをデコードする。他の復号方法に比べてスループットが低い(1ビット/サイクル)という欠点があるが、ハードウェア実装には向いている。
(d) プリフィックス・グルーピング法は、「符号語はプリフィックスとサフィックスに分かれる」という事実にもとづいた復号方法である。入力ビット列を全ての符号語のプリフィックスと比較し、どのプリフィックスかを調べる。プリフィックスと符号長とが一対一に対応しているので、プリフィックスを特定できたら符号長も自動的にわかる。入力ビット列のプリフィックスがわかったら、入力ビット列からサフィックスを取り出す。プリフィックスとサフィックスを特定できたら、それらからテーブル参照のためのオフセットが得られる。そのオフセットを使ってテーブルをサーチし、符号語に対応するシンボルを取り出す。このプリフィックス・グルーピング法に関しては、特許文献1および2、非特許文献1および2がある。
プリフィックス・グルーピング法は、(b)のリーディング・サイン・カウント法よりもテーブルサイズは小さく、テーブルサイズはほぼシンボルの数に等しい。入力ビット列とプリフィックスの比較処理と、プリフィックスとサフィックスからオフセットを計算する処理とをソフトウェアで実行するのが通常困難なので、この方法はハードウェア実装向きである。
特開平7−235878号公報 特表2002−516501号公報 Bai-Jue Shieh et al., "A New Approach of Group-Based VLC codec System with Full Table Programmability," IEEE Transactions on Circuits and Systems for Video Technology, Vol.11, No.2, Feb. 2001. Cheng-Teh Hsieh et al., "A Concurrent Memory-efficient VLC Decoder for MPEG Applications," IEEE Transactions on Consumer Electronics, Vol.42, Aug. 1996.
上記の特許文献、非特許文献の全記載は、引用をもって本書に繰り込み記載されているものとみなす。
以下、本発明による関連技術の分析を示す。
しかしながら、上記プリフィックス・グルーピング法は、シンボルを格納するテーブルの他に、(1)プリフィックス、(2)プリフィックスを含む符号語の語長、および、(3)プリフィックスに対応するサフィックスの語長を格納するためのテーブルが必要である。したがって、プリフィックス・グルーピング法はシンボルを格納するテーブルサイズが非常に小さいという特長をもつ反面、プリフィックスの種類が多いときには上記(1)、(2)および(3)を格納するテーブルのサイズが大きくなってしまうという課題がある。
さらに、上記プリフィックス・グルーピング法は、通常、ハードウェアで実装されるので種々の方式に適用できないという課題もある。符号化方式によって可変長符号の構成が異なるため、様々な方式に使える効率の良い汎用的な可変長符号復号器を作ることは一般的に困難である。例えば、特許文献2に開示された可変長符号復号器は、プリフィックス・グルーピング法を使ったメモリ使用量が少ない効率の良い復号器であるが、MPEG-2の符号化方式に強く依存している。したがって、この復号器の原理を他の符号化方式に適用することは可能であるものの新たに復号器を設計する必要がある。
そこで、本発明の目的は、プリフィックスに関する情報をコンパクトに格納するための可変長符号の復号装置および復号方法を提供することにある。
さらに、本発明の他の目的は、さまざまな方式の可変長符号に対応可能な可変長符号の復号方法および装置を提供することにある。
さらに、他の目的は、明細書及びクレームの全開示事項から、明らかとなる。
本発明の第1の側面によれば、可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する復号装置であって、復号に使用される複数のプリフィックスに共通するプリフィックス共通部と、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部と、可変長符号の未知符号語を含む入力ビット列と、を格納する記憶手段と、前記記憶手段に格納された各プリフィックス共通部および当該プリフィックス共通部に対応する複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが前記記憶手段に格納された入力ビット列に含まれるか否かを判定するプリフィックス識別手段と、を有することを特徴とする。
本発明の第2の側面によれば、可変長符号化された符号語を復号値テーブルを用いて復号する復号装置であって、復号に使用される複数の符号語およびそれらの語長と、可変長符号の未知符号語を含む入力ビット列と、を格納する記憶手段と、前記複数の符号語およびそれらの語長を用いて、前記複数の符号語のうち、どの符号語が前記入力ビット列に含まれるか否かを判定する識別手段と、前記判定結果に基づいて、前記入力ビット列に含まれる未知符号語の語長を計算する語長計算手段と、前記判定結果に基づいて、前記復号値テーブルを参照するためのインデックスを計算するインデックス計算手段と、前記前記入力ビット列に含まれる未知符号語の語長およびインデックスを生成するように、前記識別手段、前記語長計算手段および前記インデックス計算手段を制御する制御手段と、を有することを特徴とする。
本発明の第3の側面によれば、可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する可変長符号の復号方法が提供される。この復号方法は、復号に使用される複数のプリフィックスに共通するプリフィックス共通部を記憶手段に格納し、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部を前記記憶手段に格納し、可変長符号の未知符号語を含む入力ビット列を前記記憶手段に格納し、前記記憶手段に格納された各プリフィックス共通部および当該プリフィックス共通部に対応する複数のプリフィックス個別部から複数のプリフィックスを生成し、前記複数のプリフィックスのうちの1つのプリフィックスが前記入力ビット列に含まれるか否かを判定する、各ステップを有することを特徴とする。
本発明の第4の側面によれば、第1及び第2の側面にかかる復号装置を作動するためのプログラム並びに第3の側面に係る上記復号方法を実施するためのコンピュータに命令するプログラム(プロダクト)が提供される。プログラムは、第3の側面の復号方法の各ステップを実行する処理ステップを有すること、あるいは、第2の側面の復号装置の各手段を作動させることを特徴とする。
本発明の一実施形態によれば、可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する復号装置であって、復号に使用される複数のプリフィックスに共通するプリフィックス共通部およびその語長と、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部およびその語長と、複数の符号語の各々において前記プリフィックスを除いたサフィックスの語長と、可変長符号の未知符号語を含む入力ビット列と、を格納する記憶手段と、前記プリフィックス共通部および複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが前記入力ビット列に含まれるか否かを判定するプリフィックス識別手段と、前記判定結果に基づいて特定される、前記プリフィックス共通部の語長、前記プリフィックス個別部の語長、および前記サフィックスの語長を用いて、前記入力ビット列に含まれる未知符号語の語長を計算する語長計算手段と、前記判定結果に基づいて特定されるサフィックスの語長および前記未知符号語の語長を用いて復号用テーブルのインデックスを計算するインデックス計算手段と、前記入力ビット列に含まれる未知符号語の語長および復号用テーブルのインデックスを生成するための命令に従って、前記プリフィックス識別手段、前記語長計算手段および前記インデックス計算手段を制御する制御手段と、を有することを特徴とする。
上記復号装置はプログラム制御プロセッサ上に実装可能であり、その場合、前記記憶手段はレジスタファイルであり、前記制御手段は、復号プログラムの前記命令に従って、前記プリフィックス識別手段、前記語長計算手段および前記インデックス計算手段を制御し、前記計算された未知符号語の語長および復号用テーブルのインデックスを前記レジスタファイルに格納する命令デコーダである。
上記一実施形態による可変長符号復号装置は、可変長符号化された符号語に含まれるプリフィックスを使って可変長符号を復号する可変長符号復号器として動作可能なプロセッサ(図2の参照番号100)であって、次のように構成することができる。
レジスタファイル(図2の参照番号101)に、複数のプリフィックスに共通のビット列(共通部)、前記の共通部の語長、前記の共通部以外の各プリフィックスのビット列(個別部)、前記の個別部の語長、プリフィックスを除いた符号語のビット列(サフィックス)の語長、可変長符号の符号語を含む入力ビット列、符号語に対応するシンボルを格納したテーブルのインデックス、および、復号した符号語の語長を格納するための記憶領域あるいはレジスタを用意し、プリフィックス共通部およびその語長、プリフィックス個別部およびその語長、サフィックスの語長、および、可変長符号の符号語を含む入力ビット列をそれぞれ格納する。
プリフィックス識別手段(図2のビットマッチング部102)は、前記プリフィックス共通部および複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが入力ビット列に含まれるか否かを判定する。語長計算手段(図2の符号語長計算部103)は、判定結果に基づいて特定されるプリフィックス共通部の語長、プリフィックス個別部の語長およびサフィックスの語長を用いて、入力ビット列に含まれる未知符号語の語長を計算する。インデックス計算手段(図2のインデックス計算部104)は、判定結果に基づいて特定されるサフィックスの語長および未知符号語の語長を用いて復号用テーブルのインデックスを計算する。
さらに、制御手段(図2の命令デコーダ105、およびプログラムメモリ109)は、プロセッサへ与えられた命令に応答して、識別手段とインデックス計算手段と語長計算手段とを動作させ、インデックス計算手段が計算したインデックスおよび語長計算手段が計算した符号語の語長をレジスタファイルへ格納する。
(1)本発明の第1の効果はプリフィックスを格納しておく記憶領域のサイズを小さくできることである。
従来は、N個のプリフィックスをそのままメモリやレジスタなどの記憶手段へ格納していた。プリフィックスの長さは1ビットから数10ビットまで、プリフィックスの数Nは10個未満から30個程度までと、さまざまである。例えば、ビデオ符号化方式MPEG-2 のイントラAC係数の符号化に使用される可変長符号に含まれるプリフィックスは23個であり、プリフィックスの語長は2ビットから12ビットまでである。ただし、プリフィックスの切り出し方によってプリフィックスの種類や語長は多少変化する。また、従来は、プリフィックスをそのまま格納するので、仮に16ビット幅のレジスタを使うとすると、 23個のプリフィックスを格納するのに23×2=46バイト分のレジスタが必要となる。
これに対して、本発明によれば、プリフィックスを共通部と個別部に分けて格納する。
したがって、例えば23個のプリフィックスの場合には、8個、8個、7個の3つのグループに分け、3つのグループに対して3個の共通部と23個のプリフィックスに対応する個別部とを格納する。この場合、共通部と個別部とをそれぞれ8ビット幅のレジスタに格納できるので、合計で3+23=26バイト分のレジスタが必要になる。従来は46バイト分のレジスタが必要であったのであるから、本発明によりプリフィックスを格納するレジスタのサイズは半分になる。
他の例として音楽符号化方式MPEG-2 AAC(advanced audio coding)のscalefactor用の可変長符号について考える。scalefactor用の可変長符号に含まれるプリフィックスは37個である。プリフィックスの語長は2ビット〜18ビットまでである。仮に24ビット幅のレジスタをつかうとすると、従来では37個のプリフィックスを格納するのに37×3=111バイト分のレジスタが必要である。
これに対して、本発明によれば、37個のプリフィックスを8個、8個、8個、8個、5個の5つのグループに分け、5つの共通部と、37個のプリフィックスに対応する個別部とを格納する。共通部を16ビットレジスタで、個別部を8ビットレジスタでそれぞれ格納すると、5×2+37=47バイト分のレジスタが必要である。この例においても、本発明によれば、従来の約半分の容量でプリフィックスを格納することができる。
(2)本発明の第2の効果はさまざまな符号化方式の可変長符号を高速に復号できることである。すなわち、プロセッサへ与えられた命令に応答して、識別手段、インデックス計算手段および語長計算手段を動作させ、インデックスおよび未知符号語の語長を計算することができ、プリフィックスの個数が多くなってもそれらを複数グループに分割し同様の処理を繰り返すことで、種々の符号化方式に対しても柔軟に対応することができる。また、プロセッサ内のレジスタファイルに従来より容量が少ないデータをロードすることで高速な復号処理が可能となる。
(A)は符号語をプリフィックスとサフィックスとに分けた符号語の模式図であり、(B)は本発明による可変長符号の復号方法で用いられるプリフィックスの共通部および個別部を示す模式図である。 本発明の一実施形態による可変長符号の復号装置を示す機能的ブロック図である。 図2の復号装置に用いられるレジスタファイル101にプリフィックスに関する情報と入力ビット列とを格納したようすを示す模式図である。 ビットマッチング部102により生成された8個のプリフィックスを示す模式図である。 復号値インデックスsymbol_indexを求める手順を示す説明図である。 本発明の一実施例による復号方法を示すフローチャートである。
符号の説明
100 プロセッサ
101 レジスタファイル
102 ビットマッチング部
103 符号語長計算部
104 インデックス計算部
105 命令デコーダ
106 入出力部
107 シンボルテーブル
108 復号値メモリ
109 プログラムメモリ
図1(A)は符号語をプリフィックスとサフィックスとに分けた符号語の模式図であり、図1(B)は本発明による可変長符号の復号方法で用いられるプリフィックスの共通部および個別部を示す模式図である。
図1(A)に示すように、符号語をプリフィックス(prefix)10とサフィックス(suffix)11とに分ける。言い換えれば、符号語からプリフィックス10を取り除いたビット列がサフィックス11である。
そしてプリフィックス10に関して、図1(B)に示すように、複数のプリフィックス10に共通なビット列を共通部12とし、共通部12をプリフィックス10から取り除いたビット列を個別部13とする。図1(B)では1個の共通部prefix_commonとn個のプリフィックス個別部prefix_part[0]-prefix_part[n-1]とを示している。
共通部12と任意の1つの個別部13とを用いてn個のプリフィックスのなかの任意のプリフィックスを構成することができる。たとえば、prefix_commonとprefix_part[i]とを連結すればi番目のプリフィックスが得られる。
可変長符号には符号語の語長が長くなるにつれて符号語の先頭に同じようなビット列を含む符号語の数が増えるという性質がある。これは可変長符号の一般的な性質である。本発明は、この性質を利用してプリフィックスを共通部12と個別部13とに分けることで、プリフィックスの格納容量を縮小する。
なお、複数のプリフィックスを2以上のグループに分割し、それぞれのグループのプリフィックスについて上述した共通部12および個別部13を生成してもよい。プリフィックスの数をN個、グループの数をM個とすると、N個のプリフィクスについて、M個の共通部12とN個の個別部13が得られる。このようにプリフィックスを複数のグループへ分割する場合もプリフィックスの格納容量を縮小することができる。
以下、説明を簡単にするために、あくまでも一例として、表1に示す8種類の符号語があり、それぞれに対応する復号値(シンボル)が存在するものとする。
Figure 2007108395
表1の例を用いて、まず符号語とプリフィックスとの関係について説明した後、どのようにしてプリフィックスを用いて符号語を復号できるのか、について簡単に説明する。
1.符号語とプリフィックとの関係
表1に示す8種類の符号語は、表2に示すような5種類のプリフィックスに分類される。
Figure 2007108395
表1から表2を得るためには、次のステップa)〜d)の方法を用いることができる。
a)同じ語長をもつ符号語ごとに符号語をグループに分ける。
b)各符号語グループにおいて、符号語を2進数として昇順に並べる。
c)各符号語グループの隣り合う二つの符号語の組合せ全てについて、2つの符号語の2進数としての差が1でないならば、それらを別々の符号語グループとする処理を行なう。
この処理によって符号語グループはさらにいくつかに分かれる。
d)各符号語グループに属する符号語に共通するビット列をプリフィックスとする。これにより各符号語グループに一つのプリフィックスが決まる。
表2から分かるように、同じ符号語グループに属する符号語は同じ語長で、かつ、同じプリフィックスを有する。
2.プリフィックスを用いた符号語の復号
上述したように、プリフィックスと符号語の語長との間には一対一の関係がある。この関係を使って未知の符号語を特定することができる。すなわち、未知符号語のプリフィックスを調べ、プリフィックスから未知符号語の語長がわかる。続いて未知符号語からプリフィックスを取り除いてサフィックスを取り出し、サフィックスから未知符号語を特定できる。
また、符号語の種類が増えてもプリフィックスの種類はそれほど増加しないという性質がある。したがって、全ての符号語を未知符号語とマッチングするよりもプリフィックスを未知符号語とマッチングする方がマッチングの回数が少なく高速マッチングが可能となる。
また、プリフィックスを使って未知符号語を特定するので、符号語に対応する復号値(シンボル)を格納するシンボルテーブルのサイズを非常に小さくすることができる。なぜなら、シンボルテーブルから未知符号語に対応するシンボルを取り出す際には未知符号語はどの符号語であるかが特定されているので、各符号語に対応する一つのシンボルをシンボルテーブルに格納しておけば良いからである。
3.プリフィックス共通部/個別部
既に述べたように、可変長符号は符号語の語長が長くなるにつれて、符号語の先頭に同じようなビット列を含む符号語の数が増えるという性質がある。この性質を利用して、図1(B)に示すように、プリフィックス10を共通部12と個別部13とに分けることで、プリフィックスを特定する情報を小さくすることができる。
プリフィックス共通部12は、複数のプリフィックスに共通なビット列である。表2を みると分かるように、全てのプリフィックスの左側の4ビットが一致している。実際には表2の5個のプリフィックスの左側の5ビットが共通ではあるが、左側5ビットを共通部としてしまうと符号語“0101 0”の個別部が無くなってしまうので、プリフィックスの左側4ビットを採用する。こうして、表2の5個のプリフィックスに共通な左側の4ビット“0101"を共通部12とする。表2のプリフィックスを共通部12と個別部13に分類し、プリフィックス情報としてまとめた結果を表3に示す。
Figure 2007108395
後述するように、このプリフィックス関連情報を用いて未知の符号語を含む入力ビット列から可変長符号の符号語を復号する。本発明の実施形態による復号方法で使用されるプリフィックス関連情報は次に示す(1)-(5)であり、(6)は復号されるべき入力ビット列である。ただし、表3の例ではn=8である。
(1) 複数のプリフィックスに共通のビット列(共通部)prefix_common
(2) 共通部の語長clen
(3) 共通部以外の各プリフィックスのビット列(個別部)prefix_part[i], i=0,1,…n-1 (4) 各個別部の語長plen[i], i=0,1,…n-1
(5) 符号語からプリフィックスを取り除いた残りのビット列(サフィックス)の語長 slen[i], i=0,1,…n-1
(6) 未知の符号語を含む入力ビット列input_bits
4.復号装置の構成
図2は本発明の一実施形態による可変長符号の復号装置を示す機能的ブロック図である。本実施形態による復号装置はプログラム制御プロセッサ100により実現することができ、プロセッサ100内のレジスタファイル101を用い、ビットマッチング部102、符号語長計算部103およびインデックス計算部104により、復号値インデックスsymbol_indexを高速計算することができる。ビットマッチング部102、符号語長計算部103およびインデックス計算部104は命令デコーダ105からの制御信号により制御される。また、プロセッサ100は、命令デコーダ105からの制御信号に従って、レジスタファイル101に格納すべきプリフィックス関連情報および入力ビット列を入出力部106を通して入力し格納する。本実施形態における復号装置の一構成例は次の通りである。
レジスタファイル101は16本の64ビットレジスタを有し、可変長符号の符号語を復号するために必要なプリフィックス関連情報および入力ビット列、すなわち、
(1) 複数のプリフィックスに共通のビット列(共通部)prefix_common
(2) 共通部の語長clen
(3) 共通部以外の各プリフィックスのビット列(個別部)prefix_part[i], i=0,1,…n-1 (4) 各個別部の語長plen[i], i=0,1,…n-1
(5) 符号語からプリフィックスを取り除いた残りのビット列(サフィックス)の語長 slen[i], i=0,1,…n-1
(6) 未知の符号語を含む入力ビット列input_bits
を格納する。
ビットマッチング部102は、レジスタファイル101から上記4種類のプリフィックス関連情報(1)-(4)および入力ビット列(6)を受けとり、プリフィックス関連情報(1)−(4)を用いてプリフィックスを生成する。生成したプリフィックスから入力ビット列(6)に一致するプリフィックスを探索し、一致したプリフィックスの番号matched_indexを符号語長計算部103およびインデックス計算部104へ出力する。
符号語長計算部103は、レジスタファイル101からプリフィックス関連情報(2)の各共通部の語長clen、(4)の各個別部の語長plen[i]、および、(5)のサフィックス語長slen[i]を受けとり、ビットマッチング部102が出力した一致したプリフィックスの番号matched_indexを使って符号語の語長codeword_lengthを計算する。その計算結果である符号語長codeword_lengthはレジスタファイル101に格納される。
インデックス計算部104は、レジスタファイル101からプリフィックス関連情報 (5)のサフィックス語長slen[i]を受け取り、ビットマッチング部102が出力した一致したプリフィックスの番号matched_indexを使って復号値インデックスsymbol_indexを計算してレジスタファイル101に格納する。復号値インデックスsymbol_indexは、符号語に対応するシンボル(符号語の復号値)を格納したシンボルテーブル107におけるシンボルの位置(インデックス)である。したがって、命令デコーダ105からの制御信号により、復号値インデックスsymbol_indexを用いてシンボルテーブル107を参照し、シンボルテーブル107から得られた復号値を復号値メモリ108に保存することができる。
命令デコーダ105は、プログラムメモリ109から読み出されたプログラムの命令をデコードする。具体的には、命令デコーダ105は、プログラムメモリ109から読み出された可変長符号を復号する命令に応答して、ビットマッチング部102、符号語長計算部103およびインデックス計算部104を動作させ、符号語長計算部103の計算結果である符号語の語長codeword_lengthとインデックス計算部104の計算結果である復号値インデックスsymbol_indexとをレジスタファイル101に格納する。
本実施形態による可変長符号の復号装置では、ビットマッチング部102、符号語長計算部103、インデックス計算部104、命令デコーダ105、および、入出力部106がそれぞれ機能回路として構成されていても良いし、プロセッサ上で復号プログラムを実行することにより同じ機能のプロセスを実現しても良い。したがって、図2のブロック図は機能的な表現として理解されるべきである。
5.動作
本発明によればプリフィックスを使って未知の符号語を復号する。符号語の復号は、命令デコーダ105がビットマッチング命令をデコードし、ビットマッチング部102、符号語長計算部103およびインデックス計算部104の動作を制御することで実行される。具体的には、命令デコーダ105がビットマッチング命令をデコードすると、ビットマッチング命令によって指定されたオペランドを使ってビットマッチング部102、符号語長計算部103およびインデックス計算部104を動作させる。
このような符号語の復号を行うには、まずプリフィックス関連情報および入力ビット列をレジスタファイル101に格納する必要がある。以下、プリフィックス関連情報の格納およびそれを用いた復号動作を詳細に説明する。
5.1)プリフィックス関連情報の格納
まずレジスタファイル101に格納されるべき情報の一例は次の通りである。
(1) 複数のプリフィックスに共通のビット列(共通部)prefix_common(符号無し24ビット整数)
(2) 共通部の語長clen(符号無し8ビット整数)
(3) 共通部以外の各プリフィックスのビット列(個別部)prefix_part[i], i=0,1,…7(符号無し8ビット整数)
(4) 各個別部の語長plen[i], i=0,1,…7(符号無し4ビット整数)
(5) 符号語からプリフィックスを取り除いた残りのビット列(サフィックス)の語長 slen[i], i=0,1,…7(符号無し4ビット整数)
(6) 未知の符号語を含む入力ビット列input_bits(符号無し32ビット整数)
図3は、図2の復号装置に用いられるレジスタファイル101にプリフィックスに関する情報と入力ビット列とを格納したようすを示す模式図である。ここでは、レジスタファイル101にある5本の64ビットレジスタXs、Xp、Xc,XdおよびXiに、プリフィックス関連情報および入力ビット列を格納し、また1本の64ビットレジスタXn(図示せず)を取り出された復号値を格納するために使用する。
具体的には、図3に示すように、レジスタXcには、プリフィックス共通部prefix_common とプリフィックス共通部の語長clenとが格納され、レジスタXpにはプリフィックス個別部prefix_part[i] (i=0,1,…7)が格納され、レジスタXsには、プリフィックス個別部の語長plen[i]およびサフィックスの語長slen[i] (i=0,1,…7)が格納され、レジスタXiには入力ビット列input_bitsが格納される。一つの64ビットレジスタに格納できるプリフィックス個別部prefix_part[i]は8種類である。なお、0bは二進数であることを表し、xは使用されないビットを表す。xの実際の値は0である。
表3によれば5種類のプリフィックス関連情報があるが、プリフィックス個別部prefix_part[i]、プリフィックス個別部の語長plen[i]およびサフィックスの語長slen[i]のそれぞれの値は表4に示すように定める。表3にはプリフィックスが5種類しかないので、存在しない3個の個別プリフィックスprefix_part[5]、prefix_part[6]およびprefix_part[7] については、それらが確かに存在しないことを示すために、対応するプリフィックス個別部の語長plenとサフィックスの語長slenとを0に設定する。
Figure 2007108395
5.2)ビットマッチング命令
まず、命令デコーダ105は、ビットマッチング命令をデコードし、そのビットマッチング命令によって指定されたオペランドを使ってビットマッチング部102、符号語長計算部103およびインデックス計算部104を動作させる。ビットマッチング命令の動作を以下に示す。
a1)ビットマッチング部102、符号語長計算部103およびインデックス計算部104は、レジスタファイル101から64ビットレジスタXs、Xp、Xc,XdおよびXiの内容を受けとる。レジスタXs、Xp、Xcにはプリフィックスとサフィックスに関する情報が図3に示すように格納されている。レジスタXiには未知の符号語を含む入力ビット列が格納されている。レジスタXdの上位側には未知符号語に対応するインデックスの初期値が格納されている。
a2)ビットマッチング部102は、プリフィックス共通部prefix_common、プリフィックス共通部の語長clen、プリフィックス個別部prefix_part[i]、および、プリフィックス個別部の語長plen[i](i=0,1,…7)を使って8個のプリフィックスを生成する(詳しくは後述する。図3参照)。
a3)さらに、ビットマッチング部102は、8個のプリフィックスを入力ビット列とマッチングし、入力ビット列に適合するプリフィックスの番号matched_indexを符号語長計算部103およびインデックス計算部104へ出力する。
a4)符号語長計算部103は、マッチングしたプリフィックスの番号matched_indexと、プリフィックス共通部prefix_commonの語長clen、プリフィックス個別部の語長plen[i]、および、サフィックスの語長slen[i]を使って未知符号語の語長codeword_lengthを計算し、計算された未知符号語の語長codeword_lengthを64ビットレジスタXdの下位へ代入する。
a5)インデックス計算部104は、マッチングしたプリフィックスの番号matched_index、サフィックスの語長slen[i]、および、未知符号語の語長codeword_lengthを使ってシンボルテーブル107における復号値のインデックスsymbol_indexを計算し、計算したインデックスsymbol_indexを64ビットレジスタXdの上位へ代入する。
このビットマッチング命令を使うことにより、シンボルテーブル107における未知符号語に対する復号値の位置(インデックス) symbol_indexと、未知符号語の語長codeword_lengthとがわかる。したがって、ビットマッチング命令の実行後に、インデックスsymbol_indexを使ってシンボルテーブル107から復号値を得ることができる。続いて、レジスタXiに格納された入力ビット列input_bitsから今回復号された符号語分だけを取り除き、新たなビット列をレジスタXiに補充する。
このような処理を繰り返すことで、レジスタXiに格納された入力ビット列input_bitsから未知符号語を順次切り出しながら、シンボルテーブル107を参照し、得られた復号値を復号値メモリ108に順次格納することができる。
以下、ビットマッチング部102によるプリフィックスの生成およびマッチング処理、符号語長計算部103による未知符号語の語長計算、インデックス計算部104によるシンボルインデックス計算についてそれぞれ詳述する。
5.3)プリフィックスの生成
図4は、ビットマッチング部102により生成された8個のプリフィックスを示す模式図である。以下、ビットマッチング部102がプリフィックス共通部とプリフィックス個別部とからプリフィックスを生成する手順を例示する。
b1)まず、ビットマッチング部102はレジスタXcからプリフィックス共通部prefix_common(24ビット)とプリフィックス共通部の語長clen(8ビット)とを取り出す。
b2)ビットマッチング部102はプリフィックス共通部prefix_commonの左側からclenビットのビット列を取り出し、それを改めてプリフィックス共通部prefix_commonとする。
b3)ビットマッチング部102はレジスタXpから各8ビットのプリフィックス個別部prefix_part[i], i=0,1,…7を取り出す。
b4)ビットマッチング部102は、i=0,1,…7について、プリフィックス個別部prefix_part[i]の左側からplen[i]ビットのビット列を取り出し、それを改めてプリフィックス個別部prefix_part[i]とする。
b5)ビットマッチング部102は、i=0,1,…7について、plen[i]ビットの長さに切り出したプリフィックス個別部prefix_part[i]の左側にclenビットの長さに切り出したプリフィックス共通部prefix_commonを連結する。
以上b1)〜b5)の手順によって、ビットマッチング部102は図4に示す8個のプリフィックス(prefix_common + prefix_part[i])を生成する。
5.4)マッチング
ビットマッチング部102は、生成された8個のプリフィックスと入力ビット列input_bitsの先頭部分とのマッチングを行い、どのプリフィックスが入力ビット列に一致するかを調べる。マッチングの手順を以下に示す。
c1)ビットマッチング部102は、各プリフィックス(i=0,1,…7)について、入力ビット列の左側から(clen+plen[i])ビットを取り出す。
c2)ビットマッチング部102は、取り出した(clen+plen[i])ビット列とi番目のプリフィックスとの排他的論理話(XOR)を求め、XORの結果からマッチングの適否を判定する。ここでは、XORの結果が“0”ならば当該i番目のプリフィックスが入力ビットに適合すると判断する。
c3)適合するプリフィックスが存在すれば、ビットマッチング部102は入力ビット列に適合したプリフィックスの番号iをmatched_indexに代入する。
c4)適合するプリフィックスが存在しなければ、ビットマッチング部102はmatched_indexへ範囲外の数値(ここではi=0〜7であるから、この範囲外の数値、たとえば“8”)を代入する。
こうして適合したプリフィックスの番号iをmatched_indexとして符号語長計算部103およびインデックス計算部104へ出力する。
5.5)符号語の語長
符号語長計算部103は、ビットマッチング部102から得られた適合プリフィックスの番号matched_indexを用いて、入力ビット列に含まれる未知符号語の語長codeword_lengthを以下のようにして計算する。
d1)符号語長計算部103は、レジスタXsから、matched_indexに対応するプリフィックス個別部の語長plen[matched_index]およびサフィックスの語長slen[matched_index]を取り出す。
d2)符号語長計算部103は、レジスタXcからプリフィックス共通部の語長clenを取り出す。
d3)matched_indexが8未満ならば(すなわち、適合するプリフィックスが存在した場合)、符号語長計算部103は、プリフィックス共通部の語長clen、プリフィックス個別部の語長plen[matched_index]およびサフィックスの語長slen[matched_index]の和を計算し、未知符号語の語長codeword_lengthを求める。ただし、matched_indexが8以上ならば、適合するプリフィックスが存在しなかったのであるから、符号語長計算部103はcodeword_lengthへ0を代入する。
こうして得られた未知符号語の語長codeword_lengthは、レジスタファイル101に格納され、またインデックス計算部104へ出力される。
5.6)復号値インデックス計算
上述したように、シンボルテーブル107には、たとえば表1のような符号語に対する復号値が格納されている。シンボルテーブル107において、復号値が格納されている位置がインデックスsymbol_indexによって特定される。インデックス計算部104はこの復号値インデックスsymbol_indexを以下のようにして求める。
図5は復号値インデックスsymbol_indexを求める手順を示す説明図である。ここで、matched_indexは入力ビット列に適合したプリフィックスの番号、codeword_lengthは入力ビット列に含まれる未知符号語の語長である。
e1)インデックス計算部104はレジスタXdからインデックスの初期値 symbol_index を取り出す。
e2)インデックス計算部104はレジスタXsからサフィックスslen[i], i=0,1,…7を取り出す。
e3)インデックス計算部104は、i=0,1,…,(matched_index-1)について、“1”を slen[i]ビット左シフトした値(1<<slen[i])をsymbol_indexへ加算する。つまり、(1<<slen[0])、(1<<slen[1])、・・・(1<<slen[matched_index-1])をsymbol_indexへ順次加算する。
e4)matched_indexが8未満ならば(すなわち、適合するプリフィックスが存在した場合)、インデックス計算部104は入力ビット列からサフィックスに該当するビット列を取り出し、そのビット列をsymbol_indexへ加算する。入力ビット列の左側のcodeword_lengthビットが未知符号語であり、未知符号語の中の右側のslen[matched_index]ビットがサフィックスである。
5.7)可変長符号の復号
上記5.2)で説明したビットマッチング命令を用いた可変長符号の復号手順について図面を参照しながら説明する。
図6は、本発明の一実施例による復号方法を示すフローチャートである。このフローに従って作成されたプログラムは、図1に示すプロセッサ100上で実行される。ここでは、図3に示すレジスタファイル101を用いた復号手順を説明する。
ステップS201:まず、次のレジスタに対して復号処理に必要なデータを設定する。
レジスタXcの下位側(Xcの31-8ビット目)にプリフィックス共通部prefix_commonを代入する。レジスタXcの下位8ビット(Xcの7-0ビット目)にプリフィックス共通部の語長clenを代入する。レジスタXp(Xpの63-0ビット目)へ8個のプリフィックス個別部prefix_part[i] (i=0,1,…7)を代入する。レジスタXsの上位側(Xsの63-32ビット目)にプリフィックス個別部の語長plen[i] (i=0,1,…7)を代入する。レジスタXsの下位側(Xsの31-0ビット目)にサフィックスの語長slen[i] (i=0,1,…7)を代入する。
レジスタXiの上位側(Xiの63-32ビット目)に入力ビット列input_bitsを代入する。
ステップS202:続いて、復号値のインデックスsymbol_indexの初期値として0を、未知符号語の語長codeword_lengthの初期値として0を、それぞれ代入する。なお、図3に示すように、レジスタXdの上位(Xdの63-32ビット目)にインデックスsymbol_indexを、レジスタXdの下位(Xdの7-0ビット目)に未知符号語の語長長codeword_lengthを、それぞれ配置する。言い換えればレジスタXdを0に初期化する。
ステップS203:ビットマッチング命令を用いて8個のプリフィックスと入力ビット列とのマッチングを行なう。ビットマッチング命令は、上述したように、レジスタXc、XpおよびXsから8個のプリフィックスを生成し、レジスタXiの入力ビット列に適合するプリフィックスをサーチする。さらに、入力ビット列の未知符号語の語長codeword_lengthを計算し、シンボルテーブル107における復号値の位置を表すインデックスsymbol_indexを計算する。インデックスsymbol_indexはレジスタXdの上位側(Xdの63-32ビット目)へ代入される。未知符号語に適合するプリフィックスが存在するならば、未知符号語の語長codeword_lengthはレジスタXdの下位(Xdの7-0ビット目)へ代入される。
ステップS204:続いて、ビットマッチング命令が計算したインデックスsymbol_indexを用いてシンボルテーブル107が参照され、復号値が取り出される。取り出された復号値はレジスタXn(図示せず)の下位側(Xnの31-0ビット目)へ格納される。
ステップS205:レジスタXnに格納された復号値は、入出力部106を通して復号値メモリ108へ転送され保存される。
ステップS206:未知符号語の語長codeword_lengthが0より大きいならば、レジスタXiの入力ビット列から復号された符号語を除去し、新たな入力ビット列を補充する。
ステップS207:復号値が復号処理の終了を意味するならば(ステップS207のYES)、復号処理を終了する。また、未知符号語の語長codeword_lengthが0以下である場合は符号語が復号されなかったことを表すので復号処理を終了する。復号すべきビット列が存在する場合は(ステップS207のNO)、ステップS202へ戻り、終了するまでステップS202〜S207が繰り返され、入力ビット列が順次復号される。
6.応用例/変形例
図1に示すプロセッサ100の構成要素は既に説明した内容から逸脱しない範囲で種々の応用が可能である。以下では具体的な適用例あるいは変形例について述べる。
6.1)上述した実施例では8個のプリフィックスを例示したが、一般に、符号語に対応するプリフィックスの種類は8個より多い。8個以上のプリフィックスをもつ符号語を復号する場合には、プリフィックスを8個ずつ分けて未知符号語とマッチングする方法をとればよい。例えば、図6のステップS203において、プリフィックスの種類が23個であれば、8個、8個、7個にわけてマッチングを行なう。つまり、上述したビットマッチング命令を3回実行することによって23個のプリフィックスを未知符号語とマッチングすることができる。このように制御することで、プリフィックスの種類が任意の個数であっても同様に処理することができる。
6.2)逆に、種類が比較的少ない符号語を復号する場合には、プリフィックスを使わずに符号語そのものを使って未知符号語とのマッチングを行なうこともできる。符号語そのものを使ってマッチングを行なう場合、サフィックスの語長を0とみなしてビットマッチング命令を使う。ただし、一般にはプリフィックスを使う方がマッチングの回数が少なくなる。
6.3)符号語のプリフィックスの最大語長が8ビット以下であることも考えられる。
そのようなプリフィックスを使って符号語を復号する場合には、プリフィックス共通部の語長を0とみなしてビットマッチング命令を使う。プリフィックス共通部の語長を0とみなすので、プリフィックス共通部をレジスタファイル101へ格納するための処理を省略できる。
6.4)上記実施例では、ビットマッチング命令は8個のプリフィックスを未知符号語とマッチングするが、一度にマッチングするプリフィックスの数を増やせば、ビットマッチング命令を実行する回数を減らすことができる。他方、一度にマッチングするプリフィックスの数を減らせば、回路規模を縮小でき高速動作や低消費電力などにつながる。したがって、使用者の要求に応じて、一度にマッチングするプリフィックスの数を変更してもよい。
6.5)上記実施例では、プロセッサ100のレジスタファイル101は16本の64ビットレジスタをもつが、既に述べたように、この構成は一つの例であり、ビットマッチング命令が動作する範囲で変更可能である。例えば、8ビットレジスタ128本、16ビットレジスタ64本、32ビットレジスタ32本、などの構成が考えられる。
6.6)上記実施例では、図3に示すように、符号語を復号するために必要な情報(プリフィックスに関する情報、サフィックスの語長、入力ビット列など)をレジスタファイル101へ格納しているが、この格納方法も一つの例であり、ビットマッチング命令が動作する範囲で変更可能である。例えば、これらの情報をレジスタファイル101の中のどのレジスタに格納するか、そのレジスタのどの位置に格納するか、各情報のサイズを何ビットにするか、などについては変更可能である。
本発明は可変長符号化を使って符号化された情報一般を復号する装置に適用できる。例えば、可変長符号を使って符号化された画像や音楽などの情報を復号する復号器に適用可能である。
本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。

Claims (11)

  1. 可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する復号装置において、
    復号に使用される複数のプリフィックスに共通するプリフィックス共通部と、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部と、可変長符号の未知符号語を含む入力ビット列と、を格納する記憶手段と、
    前記記憶手段に格納された各プリフィックス共通部および当該プリフィックス共通部に対応する複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが前記記憶手段に格納された入力ビット列に含まれるか否かを判定するプリフィックス識別手段と、
    を有することを特徴とする可変長符号の復号装置。
  2. 可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する復号装置において、
    復号に使用される複数のプリフィックスに共通するプリフィックス共通部およびその語長と、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部およびその語長と、複数の符号語の各々において前記プリフィックスを除いたサフィックスの語長と、可変長符号の未知符号語を含む入力ビット列と、を格納する記憶手段と、
    前記プリフィックス共通部および複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが前記入力ビット列に含まれるか否かを判定するプリフィックス識別手段と、
    前記判定結果に基づいて特定される、前記プリフィックス共通部の語長、前記プリフィックス個別部の語長および前記サフィックスの語長を用いて、前記入力ビット列に含まれる未知符号語の語長を計算する語長計算手段と、
    前記判定結果に基づいて特定されるサフィックスの語長および前記未知符号語の語長を用いて復号用テーブルのインデックスを計算するインデックス計算手段と、
    前記入力ビット列に含まれる未知符号語の語長および復号用テーブルのインデックスを生成するための命令に従って、前記プリフィックス識別手段、前記語長計算手段および前記インデックス計算手段を制御する制御手段と、
    を有することを特徴とする可変長符号の復号装置。
  3. 請求項2に記載の復号装置を実装するプログラム制御プロセッサにおいて、
    前記記憶手段はレジスタファイルであり、
    前記制御手段は、復号プログラムの前記命令に従って、前記プリフィックス識別手段、前記語長計算手段および前記インデックス計算手段を制御し、前記計算された未知符号語の語長および復号用テーブルのインデックスを前記レジスタファイルに格納する命令デコーダである、
    ことを特徴とするプログラム制御プロセッサ。
  4. 可変長符号化された符号語を復号値テーブルを用いて復号する復号装置において、
    復号に使用される複数の符号語およびそれらの語長と、可変長符号の未知符号語を含む入力ビット列と、を格納する記憶手段と、
    前記複数の符号語およびそれらの語長を用いて、前記複数の符号語のうち、どの符号語が前記入力ビット列に含まれるか否かを判定する識別手段と、
    前記判定結果に基づいて、前記入力ビット列に含まれる未知符号語の語長を計算する語長計算手段と、
    前記判定結果に基づいて、前記復号値テーブルを参照するためのインデックスを計算するインデックス計算手段と、
    前記前記入力ビット列に含まれる未知符号語の語長およびインデックスを生成するように、前記識別手段、前記語長計算手段および前記インデックス計算手段を制御する制御手段と、
    を有することを特徴とする可変長符号の復号装置。
  5. 請求項4に記載の復号装置を実装するプログラム制御プロセッサにおいて、
    前記記憶手段はレジスタファイルであり、
    前記制御手段は、復号プログラムの前記命令に従って、前記識別手段、前記語長計算手段および前記インデックス計算手段を制御し、前記計算された未知符号語の語長およびインデックスを前記レジスタファイルに格納する命令デコーダである、
    ことを特徴とするプログラム制御プロセッサ。
  6. 可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する方法において、
    復号に使用される複数のプリフィックスに共通するプリフィックス共通部を記憶手段に格納し、
    各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部を前記記憶手段に格納し、
    可変長符号の未知符号語を含む入力ビット列を前記記憶手段に格納し、
    前記記憶手段に格納された各プリフィックス共通部および当該プリフィックス共通部に対応する複数のプリフィックス個別部から複数のプリフィックスを生成し、
    前記複数のプリフィックスのうちの1つのプリフィックスが前記入力ビット列に含まれるか否かを判定する、
    ことを特徴とする可変長符号の復号方法。
  7. 可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する方法において、
    復号に使用される複数のプリフィックスに共通するプリフィックス共通部およびその語長と、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部およびその語長と、複数の符号語の各々において前記プリフィックスを除いたサフィックスの語長と、可変長符号の未知符号語を含む入力ビット列と、を記憶手段に格納し、
    前記プリフィックス共通部および複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが前記入力ビット列に含まれるか否かを判定し、
    前記判定結果に基づいて特定される、前記プリフィックス共通部の語長、前記プリフィックス個別部の語長および前記サフィックスの語長を用いて、前記入力ビット列に含まれる未知符号語の語長を計算し、
    前記判定結果に基づいて特定されるサフィックスの語長および前記未知符号語の語長を用いて復号用テーブルのインデックスを計算し、
    前記インデックスを用いて前記復号用テーブルを参照し復号値を取り出す、
    ことを特徴とする可変長符号の復号方法。
  8. 可変長符号化された符号語を復号値テーブルを用いて復号する方法において、
    復号に使用される複数の符号語およびそれらの語長と、可変長符号の未知符号語を含む入力ビット列と、を格納するステップと、
    前記複数の符号語およびそれらの語長を用いて、前記複数の符号語のうち、どの符号語が前記入力ビット列に含まれるか否かを判定するステップと、
    前記判定結果に基づいて、前記入力ビット列に含まれる未知符号語の語長を計算するステップと、
    前記判定結果に基づいて、前記復号値テーブルを参照するためのインデックスを計算するステップと、
    前記インデックスを用いて前記復号用テーブルを参照し復号値を取り出すステップと、 を含むことを特徴とする可変長符号の復号方法。
  9. 可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する復号装置を構成するコンピュータに、
    復号に使用される複数のプリフィックスに共通するプリフィックス共通部を記憶手段に格納する処理と、
    各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部を前記記憶手段に格納する処理と、
    可変長符号の未知符号語を含む入力ビット列を前記記憶手段に格納する処理と、
    前記記憶手段に格納された各プリフィックス共通部および当該プリフィックス共通部に対応する複数のプリフィックス個別部から複数のプリフィックスを生成する処理と、
    前記複数のプリフィックスのうちの1つのプリフィックスが前記入力ビット列に含まれるか否かを判定する処理と、
    を実行させる可変長符号の復号プログラム。
  10. 可変長符号化された符号語に含まれるプリフィックスを用いて符号語を復号する復号装置を構成するコンピュータに、
    復号に使用される複数のプリフィックスに共通するプリフィックス共通部およびその語長と、各プリフィックスにおいて前記プリフィックス共通部以外のプリフィックス個別部およびその語長と、複数の符号語の各々において前記プリフィックスを除いたサフィックスの語長と、可変長符号の未知符号語を含む入力ビット列と、を記憶手段に格納する処理と、
    前記プリフィックス共通部および複数のプリフィックス個別部から生成された複数のプリフィックスのうち、どのプリフィックスが前記入力ビット列に含まれるか否かを判定する処理と、
    前記判定結果に基づいて特定される、前記プリフィックス共通部の語長、前記プリフィックス個別部の語長、および前記サフィックスの語長を用いて、前記入力ビット列に含まれる未知符号語の語長を計算する処理と、
    前記判定結果に基づいて特定されるサフィックスの語長および前記未知符号語の語長を用いて復号用テーブルのインデックスを計算する処理と、
    前記インデックスを用いて前記復号用テーブルを参照し復号値を取り出す処理と、
    を実行させる可変長符号の復号プログラム。
  11. 可変長符号化された符号語を復号値テーブルを用いて復号する復号装置を構成するコンピュータに、
    復号に使用される複数の符号語およびそれらの語長と、可変長符号の未知符号語を含む入力ビット列と、を格納する処理と、
    前記複数の符号語およびそれらの語長を用いて、前記複数の符号語のうち、どの符号語が前記入力ビット列に含まれるか否かを判定する処理と、
    前記判定結果に基づいて、前記入力ビット列に含まれる未知符号語の語長を計算する処理と、
    前記判定結果に基づいて、前記復号値テーブルを参照するためのインデックスを計算する処理と、
    前記インデックスを用いて前記復号用テーブルを参照し復号値を取り出す処理と、
    を実行させる可変長符号の復号プログラム。
JP2008506268A 2006-03-23 2007-03-15 可変長符号の復号装置および復号方法 Withdrawn JPWO2007108395A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006079978 2006-03-23
JP2006079978 2006-03-23
PCT/JP2007/055221 WO2007108395A1 (ja) 2006-03-23 2007-03-15 可変長符号の復号装置および復号方法

Publications (1)

Publication Number Publication Date
JPWO2007108395A1 true JPWO2007108395A1 (ja) 2009-08-06

Family

ID=38522425

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008506268A Withdrawn JPWO2007108395A1 (ja) 2006-03-23 2007-03-15 可変長符号の復号装置および復号方法

Country Status (3)

Country Link
US (1) US7924179B2 (ja)
JP (1) JPWO2007108395A1 (ja)
WO (1) WO2007108395A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2112764A1 (en) * 2008-04-25 2009-10-28 Thomson Licensing Method for encoding a sequence of integers, storage device and signal carrying an encoded integer sequence and method for decoding a sequence of integers
JP5524072B2 (ja) * 2008-10-10 2014-06-18 株式会社東芝 動画像符号化装置
US9626184B2 (en) * 2013-06-28 2017-04-18 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters
JP5872513B2 (ja) 2013-09-17 2016-03-01 株式会社東芝 符号化装置、復号化装置およびデータ処理システム
CN109614148B (zh) * 2018-12-11 2020-10-02 中科驭数(北京)科技有限公司 数据逻辑运算方法、监测方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07235878A (ja) 1993-12-28 1995-09-05 Matsushita Electric Ind Co Ltd 可変長復号化器
US5604499A (en) * 1993-12-28 1997-02-18 Matsushita Electric Industrial Co., Ltd. Variable-length decoding apparatus
US6246347B1 (en) * 1997-10-27 2001-06-12 Philips Electronics North America Corporation Controller for a variable length decoder
US6704361B2 (en) 1998-05-18 2004-03-09 Sony Corporation Variable length decoder for decoding digitally encoded video signals
US6934338B1 (en) * 1998-05-18 2005-08-23 Sony Corporation Variable length decoder for decoding digitally encoded video signals
JP3533339B2 (ja) 1999-04-16 2004-05-31 シャープ株式会社 復号化装置および復号化方法、並びに、プログラム記録媒体
JP3720035B2 (ja) 2003-09-22 2005-11-24 株式会社東芝 可変長符号復号化装置および可変長符号復号化方法

Also Published As

Publication number Publication date
US20100225508A1 (en) 2010-09-09
US7924179B2 (en) 2011-04-12
WO2007108395A1 (ja) 2007-09-27

Similar Documents

Publication Publication Date Title
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
WO2019153700A1 (zh) 编解码方法、装置及编解码设备
US7233266B2 (en) Data compression/decompression device and data compression/decompression method
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
JP2019054532A (ja) Vlsiでの効率的なハフマン符号化を行う装置および方法
JPH07283739A (ja) 短ブロックのデータを圧縮、伸長するための方法、及び装置
US8400335B2 (en) Using variable length code tables to compress an input data stream to a compressed output data stream
JPH1188192A (ja) データ圧縮方法及び装置
JP2007043595A (ja) 可変長符号復号化方法および装置ならびにデータ伸長装置
CN111274816B (zh) 一种基于神经网络的命名实体识别方法和车机
JPWO2007108395A1 (ja) 可変長符号の復号装置および復号方法
US20190052284A1 (en) Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method
JP5656593B2 (ja) 符号化データを復号する装置及び方法
JP6003059B2 (ja) 画像処理装置および画像処理方法、ならびに、画像形成装置
US7068192B1 (en) System and method for encoding and decoding variable-length data
US7002494B2 (en) Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels
JP4930435B2 (ja) 可変長符号復号装置、可変長符号復号方法およびプログラム
KR20220054651A (ko) 다중 심볼 디코더
Goel A compression algorithm for DNA that uses ASCII values
JP2000201080A (ja) 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
Selva et al. SRComp: short read sequence compression using burstsort and Elias omega coding
Zavadskyi Binary-coded ternary number representation in natural language text compression
JP6135788B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JPWO2002101935A1 (ja) 復号化装置、復号化方法、ルックアップテーブルおよび復号化プログラム
US6765513B2 (en) Decoding bit streams compressed with compression techniques employing variable length codes

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100601