JP2003273748A - 改善されたハフマンデコーディング方法及び装置 - Google Patents
改善されたハフマンデコーディング方法及び装置Info
- Publication number
- JP2003273748A JP2003273748A JP2003038864A JP2003038864A JP2003273748A JP 2003273748 A JP2003273748 A JP 2003273748A JP 2003038864 A JP2003038864 A JP 2003038864A JP 2003038864 A JP2003038864 A JP 2003038864A JP 2003273748 A JP2003273748 A JP 2003273748A
- Authority
- JP
- Japan
- Prior art keywords
- entry
- node
- value
- index
- accessed
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
装置を提供する。 【解決手段】 符号化されたビットストリームを受信
し、受信されたビットストリームの一部ビットよりなる
コードワードの各ビットに基づきインデックス情報を求
め、前記インデックス情報に対応するルックアップテー
ブルのエントリにアクセスし、アクセスされたエントリ
の内部値に基づき前記エントリが中間ノードに該当する
か、それとも端末ノードに該当するかを判断する。よっ
て、数値的な演算を通じてデコーディングに必要なメモ
リ容量を減らせると共に、検索速度を向上させられる。
Description
デコーディング方法及び装置に係り、特に、ハフマンコ
ーディングの基本原理である2進木から生成された一次
元ルックアップテーブルの効率良い構成と、プロセシン
グ効率を高めるための数値演算技法とを用いてハフマン
デコーディングを行うハフマンデコーディング方法及び
装置に関する。
り、従来の2進木を用いたハフマンデコーディング技法
は、最大検索時間及び平均検索時間の偏差の側面で極め
て効率良い方法として見なされてきている。しかし、既
存の2進木に基づく検索方法によれば、検索に必要な資
料構造を生成するために、連結リストに基づく2進木を
構成する複雑な過程を行わなければならず、且つ、2進
木検索においてノード間の移動のために行う比較及び分
岐構文はプロセッサーの動作中にパイプラインの流れを
妨げてハフマンデコーダの処理速度を落とす主な原因と
なっている。
マンデコーディング装置の構成及び動作と、その装置に
おいて行われる従来のハフマンデコーディング方法につ
いて説明する。
置の概略的なブロック図であって、入力バッファ11
0、サーチエンジン120、ハフマンルックアップテー
ブル130及び出力バッファ140を備えてなる。
れる既存の条件分岐構文に基づくハフマンデコーダのデ
コーディング方法を説明するためのフローチャートであ
る。
の構造を示し、ノード310、322、330、33
2、342、342、344、346、356は、次の
ノードに分岐される中間ノードであり、ノード320、
340、346、350、352、354、360、3
62は、実際の戻し値を有する端末ノードである。
コードブックを示している。
ンデコーディング方法によるハフマンテーブルのメモリ
構造を示している。図4A及び図4Bに示されたよう
に、従来のハフマンテーブルでは、3つのメモリ空間を
用いる。図4Aに示されたように、中間ノードの場合に
は割り当てられた3つのメモリ空間のうち中間のメモリ
空間にはヌル値が貯蔵され、左側のメモリ空間には子ノ
ードのうち左側ノードのアドレスが貯蔵され、右側のメ
モリ空間には子ノードのうち左側ノードのアドレスが貯
蔵される。また、図4Bに示されたように、端末ノード
の場合には、割り当てられた3つのメモリ空間のうち中
間のメモリ空間には該当ノードの内部値、すなわち実際
の戻し値が貯蔵され、左側及び右側のメモリ空間にはヌ
ル値が貯蔵される。
ローチャートとを結び付けて従来の技術による2進木構
造のハフマンテーブルを用いたハフマンデコーダのデコ
ーディング方法について説明する。
階であって、ハフマンデコーダに入力される符号化され
たビットストリームの符号に基づき図3に示されたハフ
マン木の根ノード、すなわち、中間ノード310に該当
するエントリにアクセスする。
て、ステップ210においてアクセスされたエントリに
該当するノードが中間ノードであるか、それとも端末ノ
ードであるかを判断する。
0においてアクセスされたエントリに該当するノードが
端末ノードであると判断された場合、端末ノードに割り
当てられた3つのメモリ空間のうち中間のメモリ空間に
貯蔵された値を実際に戻すデコーディングされたコード
ワード値として出力する。
0においてアクセスされたハフマン木のアドレスに該当
するノードが中間ノードであると判断された場合、ビッ
トストリームから入力された1ビットの値が’0’であ
る場合にはステップ250へ進み、’1’である場合に
はステップ260へ進む。
割り当てられた3つのメモリ空間のうち左側のメモリ空
間に貯蔵されたアドレスに該当するエントリにアクセス
し、ステップ220へ進む。
割り当てられた3つのメモリ空間のうち右側のメモリ空
間に貯蔵されたアドレスにアクセスし、ステップ220
へ進む。
ハフマンデコーディング方法により符号化された入力ビ
ットストリーム’1110100....’をデコーデ
ィングする過程について説明する。ステップ210はデ
コーディングの開始段階であって、ハフマン2進木のル
ートアドレスに該当する図5に示されたハフマンテーブ
ルのアドレス’1’に該当するエントリにアクセスす
る。
エントリのノードが中間ノードであるか、それとも端末
ノードであるかを判断する。図5を参照すれば、アドレ
ス’1’に該当するノードに該当する3つのメモリ空間
のうち中間のメモリ空間に貯蔵された値は’ヌル’であ
り、左側のメモリ空間には’4’が貯蔵されており、右
側のメモリ空間には’7’が貯蔵されている。従って、
ステップ220においては、アドレス’1’に該当する
ノードが図4Aに示された中間ノードであると判断し、
ステップ240へ進む。
ットストリーム’1110100’の符号化された最初
のコードワードの最初のビット’1’を入力され、入力
されるビットnew_digit()が’1’であるため、ステッ
プ260へ進む。
ス’1’の右側アドレス’2’、すなわち、現在ノード
の右側のメモリ空間に貯蔵されたアドレス’7’に該当
するエントリにアクセスし、ステップ220へ進む。
ブルのアドレス’7’に該当するノードが中間ノードで
あるか、それとも端末ノードであるかを判断する。図5
を参照すれば、アドレス’7’に該当するノードに該当
する3つのメモリ空間のうち中間のメモリ空間に貯蔵さ
れた値は’ヌル’であり、左側のメモリ空間には’1
0’が貯蔵されており、右側のメモリ空間には’13’
が貯蔵されている。従って、ステップ220においては
アドレス’7’に該当するノードが図4Aに示された中
間ノードであると判断し、ステップ240へ進む。
ットストリーム’1110100’の最初のコードワー
ドの2番目のビット’1’を入力され、入力されるビッ
トnew_digit()が’1’であるため、ステップ260へ
進む。
ス’7’の右側アドレス’8’、すなわち、現在ノード
の右側のメモリ空間に貯蔵されたアドレス’13’に該
当するエントリにアクセスし、ステップ220へ進む。
ブルのアドレス’13’に該当するノードが中間ノード
であるか、それとも端末ノードであるかを判断する。図
5を参照すれば、アドレス’1’に該当するノードに該
当する3つのメモリ空間のうち中間のメモリ空間に貯蔵
された値は’ヌル’であり、左側のメモリ空間には’2
2’が貯蔵されており、右側のメモリ空間には’25’
が貯蔵されている。従って、ステップ220において
は、アドレス’13’に該当するノードが図4Aに示さ
れた中間ノードであると判断し、ステップ240へ進
む。
ットストリーム’1110100’の最初のコードワー
ドの3番目のビット’1’を入力され、入力されるビッ
トnew_digit()が’1’であるため、ステップ260へ
進む。
ス’13’の右側アドレス’14’、すなわち現在ノー
ドの右側のメモリ空間に貯蔵されたアドレス’25’に
該当するエントリにアクセスし、ステップ220へ進
む。
ブルのアドレス’25’に該当するノードが中間ノード
であるか、それとも端末ノードであるかを判断する。図
5を参照すれば、アドレス’25’に該当するノードに
割当する3つのメモリ空間のうち中間のメモリ空間に貯
蔵された値は’4’であり、左側のメモリ空間には’ヌ
ル’が貯蔵されており、右側のメモリ空間には’ヌル’
が貯蔵されている。従って、ステップ220においては
アドレス25に該当するノードが図4Bに示された端末
ノードであると判断し、ステップ230へ進む。
5’に該当するノードに割り当てられた3つのメモリ空
間のうち中間のメモリ空間に貯蔵された値’4’をデコ
ーディングされたコードワード値として出力する。
110100’の最初のコードワード’111’に対す
るデコーディングされたコードワード’4’を求め、ビ
ットストリーム’1110100’の2番目のコードワ
ードに対するデコーディングを再開する。
4’を求める過程と同様に、ステップ210において
は、デコーディングの開始段階としてハフマン2進木の
ルートアドレスに該当するハフマンテーブルのアドレ
ス’1’に該当するエントリにアクセスし、ステップ2
20へ進む。
ハフマンテーブルのアドレス’1’に該当するノードが
中間ノードであるか、それとも端末ノードであるかを判
断し、アドレス’1’に該当するノードに該当する3つ
のメモリ空間のうち中間のメモリ空間に貯蔵された値
は’ヌル’であり、左側のメモリ空間には’4’が貯蔵
されており、右側のメモリ空間には’7’が貯蔵されて
いる。従って、ステップ220においてはアドレス’
1’に該当するノードが図4Aに示された中間ノードで
あると判断し、ステップ240へ進む。
たビットストリーム’1110100’の2番目のコー
ドワードの最初のビット’0’を入力され、入力された
ビットnew_digit()が’0’であるため、ステップ25
0へ進む。
ス’1’の左側アドレス’0’、すなわち、現在ノード
の左側のメモリ空間に貯蔵されたアドレス’4’に該当
するエントリにアクセスし、ステップ220へ進む。
ブルのアドレス’4’に該当するノードが中間ノードで
あるか、それとも端末ノードであるかを判断する。図5
を参照すれば、アドレス’4’に該当するノードの3つ
のメモリ空間のうち中間のメモリ空間に貯蔵された値
は’60’であり、左側のメモリ空間には’ヌル’値が
貯蔵されており、右側のメモリ空間には’ヌル’値が貯
蔵されている。従って、ステップ220においてはアド
レス’4’に該当するノードが図4Bに示された端末ノ
ードであると判断し、ステップ230へ進む。
4’に該当するノードに割り当てられた3つのメモリ空
間のうち中間のメモリ空間に貯蔵された値’60’をビ
ットストリーム’1110100’の2番目のコードワ
ード’0’に対するデコーディングされたコードワード
値として出力する。
に入力される符号化されたビットストリーム’1110
100’の3番目のコードワード’100’に対するデ
コーディングされたコードワード値’59’を出力し、
ビットストリーム’1110100....’に対する
デコーディングされたコードワード値’4,60,5
9....’値を求める。
ンデコーディング方法は、検索に必要な資料構造を生成
するために連結リストに基づく2進木を構成する複雑な
過程を行わなければならず、特に、2進木検索に当たっ
て、ノード間の移動のために行う比較及び分岐構文はプ
ロセッサーの動作中にパイプラインの流れを妨げて処理
速度の効率を落とし、従来のハフマンデコーディング方
法によるルックアップテーブルは各ノードごとに3つの
メモリ空間を用いるために、メモリ空間を過度に消費す
るといった問題点がある。
する技術的な課題は、従来のハフマンデコーディング過
程においてプロセシング効率を落とす’比較及び分岐’
命令を省いてハフマンデコーダの処理速度を高め、且
つ、要求されるメモリ空間を狭める改善されたハフマン
デコーディング方法を提供するところにある。
題は、従来のハフマンデコーディング過程においてプロ
セシング効率を落とす’比較及び分岐’命令を省いてハ
フマンデコーダの処理速度を高め、且つ、要求されるメ
モリ空間を狭める前記改善されたハフマンデコーディン
グ方法を行う改善されたハフマンデコーディングシステ
ムを提供するところにある。
に、本発明による改善されたハフマンデコーディング方
法は、(a)前記符号化されたビットストリームを受信
するステップと、(b)前記受信されたビットストリー
ムの一部ビットよりなるコードワードのうち最初のビッ
トからインデックス情報を求め、前記インデックス情報
に対応する前記ルックアップテーブルのエントリにアク
セスするステップと、(c)前記アクセスされたエント
リの内部値に基づき前記エントリの種類を判断するステ
ップと、を含むことを特徴とする。
マンデコーディング方法は、アクセスされたエントリの
内部値の符号に基づき前記エントリが中間ノードに該当
するか、それとも端末ノードに該当するかを判断するこ
とを特徴とする。
マンデコーディング方法は、前記アクセスされたエント
リが中間ノードであると判断される場合、前記現在エン
トリのインデックス値、前記アクセスされたエントリの
内部値、及び前記コードワードのうち2番目のビット値
に基づき、次にアクセスするエントリのインデックス値
を計算することを特徴とする。
よる改善されたハフマンデコーディング装置は、符号化
されたビットストリームをデコーディングするためのプ
ロセッサーと、前記プロセッサーに結合され、前記デコ
ーディングと関わるルックアップテーブルが貯蔵された
メモリと、を備え、前記ルックアップテーブルは前記2
進木のノードに対応し、内部値を有するエントリを備
え、前記エントリに該当する前記2進木のノードの種類
は前記エントリと関わって貯蔵された内部値に基づき決
定されることを特徴とする。
マンデコーディング装置は、エントリと関わって貯蔵さ
れた内部値は、前記エントリに該当するノードの種類に
よって符号を異にすることを特徴とする。
マンデコーディング装置は、前記エントリに該当するノ
ードが中間ノードである場合、前記エントリの内部値は
現在エントリに該当する中間ノードと次にアクセスする
ノードとの相対的な距離値であることを特徴とする。
発明による改善されたハフマンデコーディング方法につ
いて詳細に説明する。
デコーディング方法を実現するためのルックアップテー
ブルの再構成による効率良い一次元ルックアップテーブ
ルの構成過程を示している。
2進木のノードをグループ化し、表1に示されたコード
ワードの大きさ順に左側から右側へと一次元配列させる
ことによりなされる。図6に示されたルックアップテー
ブルの生成に際し、各ノードは中間ノードの場合には現
在ノードの位置を基準として次に移動するノードの相対
的な距離を内部値として貯蔵し、端末ノードの場合には
実際の戻し値を内部値として貯蔵する。
に、連結リストによる動的な資料構造の生成無しに、直
列配列された静的なルックアップテーブルの構成を有す
る。
テーブルの作成過程について詳細に説明する。
ら下位レイヤに、すなわち、レイヤ−0、レイヤ−1、
レイヤ−2、レイヤ−3、レイヤ−4、レイヤ−5の順
番にインデックス番号が付され、そして各レイヤ内にお
いては各ノードに対して順次的なインデックス番号が付
される。本発明による実施の形態においては、図6に示
されたように、兄弟ノードには隣接したインデックス番
号が付される。この実施の形態においては、同じレイヤ
内においては左側から右側へとインデックス番号が付さ
れるが、選択的に、同じレイヤ内においては右側から左
側へとインデックス番号が付されても良い。
7,8,9,10,12,13...が付された端末ノ
ードには、表1に示されたコードワードの大きさによっ
て左側から右側へと実際の戻し値’60’,’5
9’,’4’,’61’,’58’,’62’,’5
7’及び’63’が割り当てられる。
6,11,...が付された中間ノードには現在ノード
と次の移動するノードとの相対的な距離値が貯蔵され
る。この実施の形態においては、インデックス番号1,
2,3,5,6,11が付された中間ノードには現在ノ
ードのインデックス番号と子ノードのうち左側ノードの
インデックス番号との差分値、すなわち、’−1’,’
−2’,’−3’,’−3’,’−4’,’−1’が各
々貯蔵される。
法により構成された一次元ルックアップテーブルを示し
ている。再構成された一次元ルックアップテーブルは、
前記2進木の各ノードに付されたインデックス番号及び
インデックス番号を結び付けて貯蔵した各ノードの内部
値を含む。
ドの内部値は、中間ノードの場合には現在ノードと次の
移動するノードとの相対的な距離値、この実施の形態の
場合に現在ノードのインデックス番号と子ノードのうち
左側ノードのインデックス番号との差分値であるため
に、常に負の値を有する。これに対し、端末ノードの場
合には戻し値を貯蔵するために、正の値を有する。
場合、現在ノードと子ノードのうち左側ノードとのイン
デックス番号の差分値を有するが、選択的に、右側ノー
ドのインデックス番号との差分値を貯蔵するなど、他の
形の相対的な距離値を貯蔵するようにしても良い。
ルにおいて、’左側ノード:0’、’右側ノード:1’
で表わされた列は図8に示された最終的なルックアップ
テーブルには含まれず、テーブルを生成する中間過程を
表わす。これらは、検索過程で移動する検索アドレス値
を表わし、符号化されたビットストリームから読み込ま
れたビットデータと連動して各々の場合、次に移動する
検索段階のノードのインデックス番号を表示する。
ルの場合には、検索を行うためのルックアップテーブル
は各ノードに対して、各ノードに該当するデータ値、左
側または右側ノードに分岐時に移動するためのアドレス
値の3つの構成要素を有していなければならないため、
2進木の各々のノードに対して3つのメモリ空間を必要
とする。
なルックアップテーブルを示しており、中間ノードの場
合に現在ノードを基準として他の移動するノードの相対
的な距離値のみを有しており、端末ノードの場合に戻す
結果値、すなわち、戻し値のみを有する。また、これら
2値は図7の太線にて示されたように、常に排他的に発
せられるため、図8に示されたように、一次元空間上に
配列できる。従って、既存のルックアップテーブルに比
べてメモリの使用空間が1/3に狭まる。
元ルックアップテーブルを用いてハフマンデコーディン
グを行う方法を説明するためのフローチャートである。
ックアップテーブルを用いてデコーディングを開始する
段階であって、ハフマンデコーダに入力される符号化さ
れたビットストリームの所定のコードワードの最初のビ
ット値をインデックス情報として用いて 図8のルック
アップテーブルのエントリにアクセスする。
0においてアクセスされたエントリに該当する現在ノー
ドが中間ノードであるか、それとも端末ノードであるか
を判断する。この実施の形態においては、該当エントリ
の内部値が正の値であるか、それとも負の値であるかに
よってノードの種類を判別する。ステップ920におい
ては、該当エントリに貯蔵された内部値が正の値である
場合、現在ノードを端末ノードであると判断してステッ
プ930へ進み、前記内部値が負の値である場合、現在
ノードを中間ノードであると判断してステップ940へ
進む。
0において現在ノードを端末ノードであると判断した場
合、現在エントリの内部値を実際の戻し値として出力す
る。
0において現在ノードが中間ノードであると判断された
場合、下記式[数2]によって新しいインデックス値を
計算し、ルックアップテーブルにおいて計算されたイン
デックス値に該当するエントリにアクセスする。
ックス番号であり、data(index)は現在エントリに内部
値として貯蔵された現在ノードと次に移動するノードと
の相対的な距離であり、new_digit()は次のビット値を
意味する。)
距離値は現在ノードのインデックス番号と現在ノードの
子ノードのうち左側ノードのインデックス番号との差分
値である。
及び図9のフローチャートを結び付けて、ハフマンデコ
ーダに入力される符号化されたビットストリームのう
ち’1110100’をデコーディングする過程につい
て説明する。
階であって、ハフマンデコーダに入力される符号化され
たビットストリーム’1110100’の最初のコード
ワードの最初のビット’1’をインデックス情報として
用いて図8のルックアップテーブルのエントリにアクセ
スする。ここでは、所定の戻し値に対応するコードワー
ドがビットストリーム’1110100’の最初のビッ
トから始まると仮定する。
0においてアクセスされた現在エントリ、すなわち、図
8のルックアップテーブルのインデックス値’1’を有
するエントリに該当するノードの内部値の符号によって
現在ノードが中間ノードであるか、それとも端末ノード
であるかを判断する。この実施の形態においては、ステ
ップ920においてはインデックス値’1’を有するエ
ントリの内部値が負の値’−1’であるため、現在ノー
ドを中間ノードであると判断し、ステップ940へ進
む。
2]によって新しいインデックス値を計算し、計算され
たインデックス値に基づき新しいエントリにアクセス
し、ステップ920へ進む。この実施の形態において
は、data(index)はインデックス番号1−2の結果値で
あり、new_digit()はデコーディングしようとするビッ
トストリーム’1110100’の次のビット値’1’
であるため、新しいインデックス値は
デックス値’3’に該当するエントリにアクセスし、ス
テップ920へ進む。
0においてアクセスされた現在エントリ、すなわち、図
8のルックアップテーブルのインデックス値’3’に該
当するエントリのノードが中間ノードであるか、それと
も端末ノードであるかを判断する。ステップ920にお
いては、エントリの内部値’−3’が負の値であるた
め、現在ノードを中間ノードであると判断し、ステップ
940へ再び進む。
2]によって新しいインデックス値を計算する。new_di
git()はデコーディングしようとするビットストリー
ム’1110100’の最初のコードワードの2番目の
ビット値’1’であるため、新しいインデックス値は、
エントリにアクセスし、ステップ920へ進む。
0においてアクセスされた現在エントリ、すなわち、図
8のルックアップテーブルのインデックス7に該当する
エントリのノードが中間ノードであるか、それとも端末
ノードであるかを判断する。ステップ920において
は、現在エントリの内部値が正の値であるため、現在ノ
ードを端末ノードであると判断し、ステップ930へ進
む。
7に該当するエントリの内部値’4’を実際の戻し値、
すなわち、デコーディングされたコードワードとして出
力し、符号化されたビットストリーム’111010
0’のうち最初のビットセット、すなわち、コードワー
ド’111’に対するデコーディング段階を終え、2番
目のコードワードに対するデコーディングを再開する。
ーム’1110100’の2番目のコードワードの最初
のビット’0’をインデックス情報として用いて図8の
ルックアップテーブルのエントリにアクセスする。
0においてアクセスされたインデックス0に該当するエ
ントリの内部値が正の値であるため、現在ノードを端末
ノードであると判断し、ステップ930へ進む。
0に該当するエントリの内部値’60’をデコーディン
グされたコードワードとして出力し、符号化されたビッ
トストリーム’1110100’のうち2番目のコード
ワード’0’に対するデコーディング段階を終え、3番
目のコードワードに対するデコーディングを再開する。
ーム’1110100’の3番目のコードワードの最初
のビット’1’をインデックス情報として用いて図8の
ルックアップテーブルのエントリにアクセスする。
0においてアクセスされた現在エントリ、すなわち、イ
ンデックス1に該当するエントリの内部値’−1’が負
の値であるため、現在ノードを中間ノードであると判断
してステップ940へ進む。
2]によって新しいインデックス値を計算する。new_di
git()はデコーディングしようとするビットストリー
ム’1110100’の次のビット値’0’であるた
め、新しいインデックス値は、
エントリにアクセスし、ステップ920へ進む。
0においてアクセスされた現在エントリ、すなわち、図
8のルックアップテーブルのインデックス2に該当する
エントリのノードが中間ノードであるか、それとも端末
ノードであるかを判断する。この実施の形態において
は、現在エントリの内部値’−2’が負の値であるた
め、現在ノードを中間ノードであると判断してステップ
940へ進む。
2]によって新しいインデックス値を計算する。new_di
git()はデコーディングしようとするビットストリー
ム’1110100’の3番目のコードワードの2番目
のビット値が’0’であるため、前記式[数2]によれ
ば、新しいインデックス値は
エントリにアクセスし、ステップ920へ進む。
0においてアクセスされた現在エントリ、すなわち、図
8のルックアップテーブルのインデックス4に該当する
エントリのノードが中間ノードであるか、それとも端末
ノードであるかを判断する。ステップ920において
は、現在エントリの内部値’59’が正の値であるた
め、現在ノードを端末ノードであると判断し、ステップ
930へ進む。
の内部値’59’を符号化されたビットストリーム’1
110100’の3番目のコードワード’100’のデ
コーディングされたコードワードとして出力する。
トストリーム’1110100’の3つのコードワード
に対するデコーディングを行い、デコーディングされた
コードワード’4,60,59’を結果値として出力す
る。
ンデコーディング方法と、本発明による改善されたハフ
マンデコーディング方法とを比較すれば、本発明による
ハフマンデコーディング方法においては、符号化された
ビットストリームから入力された1ビットのデータを直
接的にルックアップテーブルのエントリへのアクセス、
すなわち、アドレス値の演算に適用することにより、既
存のハフマンデコーディング方法でノード間の移動のた
めに存在していた条件文が除去可能になり、一層向上さ
れたプロセシング効率が得られる。
ーディング方法による結果と、既存の順次的な検索方式
に基づくハフマンデコーディング方法の結果とを示して
いる。
(advanced audio coding)テスト
ファイルを試験すれば、ハフマンコードの種類によって
最小30%から最大777%の性能の向上がもたらされ
る。また、平均検索回数の側面でも、本発明によるハフ
マンデコーディング方法は、通常の順次的な検索方式の
ハフマンデコーダに比べて約75%の性能の向上を示し
ている。
MPEG−2 AACテストファイルを用いて測定を行
った結果を示している。
善されたハフマンデコーディング方法は、既存の順次的
な検索方式のハフマンデコーディング方法に比べて、フ
ァイルの種類によって最小24%から最高776%の検
索速度の向上をもたらす。
ことなく、本発明の思想内であれば、当業者による変形
が可能であるということは言うまでもない。
能な記録媒体にコンピュータにて読取り可能なコードと
して具現可能である。コンピュータにて読取り可能な記
録媒体はコンピュータシステムによって読取り可能なデ
ータが貯蔵されるあらゆる種類の記録装置を含む。コン
ピュータにて読取り可能な記録媒体の例としては、RO
M、RAM、CD−ROM、磁気テープ、ハードディス
ク、フロッピー(登録商標)ディスク、フラッシュメモ
リ、光データ貯蔵装置などがあり、またキャリアウェー
ブ(例えば、インターネットを介した伝送)の形で具現
されるものも含む。尚、コンピュータにて読取り可能な
記録媒体は、ネットワークに連結されたコンピュータシ
ステムに分散され、分散方式によりコンピュータにて読
取り可能なコードとして貯蔵されて実行できる。
たハフマンデコーディング方法及び装置によれば、従来
2進木検索に必要であった’比較及び分岐’演算を除く
ことにより検索速度を向上でき、且つ、ルックアップテ
ーブルの構成のためのメモリ空間も、既存の’比較及び
分岐’構文において用いられるテーブルの1/3だけで
も実現できる。
なブロック図である。
ハフマンデコーディング方法を説明するためのフローチ
ャートである。
進木構造を示す図面である。
られる各々のノードに対応するハフマンテーブルのメモ
リ空間を示す図面である。
られる各々のノードに対応するハフマンテーブルのメモ
リ空間を示す図面である。
れるハフマンテーブルである。
作成過程を示す図面である。
作成過程を示す表である。
る一次元ルックアップテーブルである。
ハフマンデコーディング方法を説明するためのフローチ
ャートである。
Claims (18)
- 【請求項1】 ルックアップテーブルを用いて符号化さ
れたビットストリームをデコーディングする方法であっ
て、 (a)前記符号化されたビットストリームを受信するス
テップと、 (b)前記受信されたビットストリームの一部ビットよ
りなるコードワードのうちの最初のビットからインデッ
クス情報を求め、前記インデックス情報に対応する前記
ルックアップテーブルのエントリにアクセスするステッ
プと、 (c)前記アクセスされたエントリの内部値に基づき前
記エントリの種類を判断するステップと、を含むことを
特徴とするデコーディング方法。 - 【請求項2】 前記ステップ(c)は、前記アクセスさ
れたエントリの内部値の符号に基づき前記エントリが中
間ノードに該当するか、それとも端末ノードに該当する
かを判断することを特徴とする請求項1に記載のデコー
ディング方法。 - 【請求項3】 (d)前記ステップ(c)において、前
記アクセスされたエントリが中間ノードであると判断さ
れる場合、前記現在エントリのインデックス値、前記ア
クセスされたエントリの内部値、及び前記コードワード
のうちの2番目のビット値に基づき、次にアクセスする
エントリのインデックス値を計算することを特徴とする
請求項1または2に記載のデコーディング方法。 - 【請求項4】 前記次にアクセスするエントリのインデ
ックス値は下記式[数1]により計算され、計算された
インデックス値を用いて対応する前記ルックアップテー
ブルのエントリにアクセスするステップをさらに含むこ
とを特徴とする請求項3に記載のデコーディング方法。 【数1】 ただし、式中、indexは現在エントリのインデックス番
号であり、data(index)は現在エントリの戻し値であ
り、new_digit()は前記コードワードのうちの次のビッ
ト値である。 - 【請求項5】 前記現在エントリの内部値は、現在ノー
ドと次に移動するノードとの相対的な距離値であること
を特徴とする請求項3または4に記載のデコーディング
方法。 - 【請求項6】 前記次にアクセスするエントリは、現在
エントリに該当するノードの子ノードのうち左側ノード
に該当するエントリであり、前記相対的な距離値は、現
在エントリのインデックス値と前記左側ノードに該当す
るエントリのインデックス値との差分値であることを特
徴とする請求項3または4に記載のデコーディング方
法。 - 【請求項7】 前記ステップ(c)において、前記アク
セスされたエントリのノードが中間ノードであると判断
される場合、前記アクセスされたエントリのインデック
ス値、前記内部値の絶対値、及び前記コードワードの次
のビット値の和値に基づき前記ルックアップテーブルの
エントリにアクセスするステップをさらに含むことを特
徴とする請求項3に記載のデコーディング方法。 - 【請求項8】 (e)前記ステップ(b)において、ア
クセスされた前記エントリが端末ノードであると判断さ
れる場合、前記ルックアップテーブルの内部値を前記符
号化されたビットストリームの一部ビットよりなるコー
ドワードのデコーディングされたコードワードとして出
力することを特徴とする請求項1または2に記載のデコ
ーディング方法。 - 【請求項9】 前記ステップ(c)は、(c1)前記計
算されたインデックスを用い、前記インデックスに対応
する前記ルックアップテーブルのエントリの内部値に基
づき前記アクセスされたエントリが中間ノードに該当す
るか、それとも端末ノードに該当するかを判断するステ
ップをさらに含むことを特徴とする請求項3に記載のデ
コーディング方法。 - 【請求項10】 前記ステップ(c)は、(c2)前記
エントリのノードが端末ノードであると判断される場
合、前記ルックアップテーブルの内部値を前記符号化さ
れたビットストリームの所定の符号化されたコードワー
ドのデコーディングされたコードワードとして出力する
ことを特徴とする請求項9に記載のデコーディング方
法。 - 【請求項11】 前記符号化されたビットストリーム
は、MPEG規格、JPEG規格及びH.26x規格の
うちのいずれか一つにより符号化されたことを特徴とす
る請求項1に記載のデコーディング方法。 - 【請求項12】 前記ルックアップテーブルは、2進木
から生成されたことを特徴とする請求項1に記載のデコ
ーディング方法。 - 【請求項13】 符号化されたビットストリームを2進
木検索によりデコーディングするためのデコーディング
装置であって、 前記符号化されたビットストリームをデコーディングす
るためのプロセッサーと、 前記プロセッサーに結合され、前記デコーディングと関
わるルックアップテーブルが貯蔵されたメモリと、を備
え、 前記ルックアップテーブルは前記2進木のノードに対応
し、内部値を有するエントリを備え、前記エントリに該
当する前記2進木のノードの種類は前記エントリと関わ
って貯蔵された内部値に基づき決定されることを特徴と
するデコーディング装置。 - 【請求項14】 前記エントリと関わって貯蔵された内
部値は、前記エントリに該当するノードの種類によって
符号を異にすることを特徴とする請求項13に記載のデ
コーディング装置。 - 【請求項15】 前記エントリに該当するノードが中間
ノードである場合、前記エントリの内部値は、現在エン
トリに該当する中間ノードと次にアクセスするノードと
の相対的な距離値であることを特徴とする請求項13ま
たは14に記載のデコーディング装置。 - 【請求項16】 前記現在エントリの内部値は、次にア
クセスするエントリは現在エントリに該当するノードの
子ノードのうち左側ノードに該当するエントリであり、
前記相対的な距離値は、現在エントリのインデックス値
と前記左側ノードに該当するエントリのインデックス値
との差分値であることを特徴とする請求項15に記載の
デコーディング装置。 - 【請求項17】 前記エントリが端末ノードである場
合、前記エントリの内部値は、前記ビットストリームの
所定のコードワードに対するデコーディングされたコー
ドワードであることを特徴とする請求項13または14
に記載のデコーディング装置。 - 【請求項18】 前記符号化されたビットストリーム
は、MPEG規格、JPEG及びH.26x規格のうち
のいずれか一つにより符号化されたことを特徴とする請
求項13に記載のデコーディング装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0010981A KR100484137B1 (ko) | 2002-02-28 | 2002-02-28 | 개선된 허프만 디코딩 방법 및 장치 |
KR2002-010981 | 2002-02-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003273748A true JP2003273748A (ja) | 2003-09-26 |
JP3714935B2 JP3714935B2 (ja) | 2005-11-09 |
Family
ID=36753915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003038864A Expired - Fee Related JP3714935B2 (ja) | 2002-02-28 | 2003-02-17 | 改善されたハフマンデコーディング方法及び装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6741191B2 (ja) |
EP (1) | EP1341314A3 (ja) |
JP (1) | JP3714935B2 (ja) |
KR (1) | KR100484137B1 (ja) |
CN (1) | CN1254921C (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7505904B2 (en) | 2004-12-20 | 2009-03-17 | Canon Kabushiki Kaisha | Database construction apparatus and method |
JPWO2017009996A1 (ja) * | 2015-07-16 | 2017-10-19 | 三菱電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100468742B1 (ko) * | 2002-06-26 | 2005-01-29 | 삼성전자주식회사 | 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법 |
US7358870B2 (en) | 2003-09-02 | 2008-04-15 | Nokia Corporation | Huffman coding and decoding based upon sectioning of a Huffman coding tree |
US6839005B1 (en) * | 2003-11-07 | 2005-01-04 | Broadcom Corporation | Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels |
KR100959532B1 (ko) * | 2003-12-18 | 2010-05-27 | 엘지전자 주식회사 | Cavlc 복호 방법 |
US6975253B1 (en) * | 2004-08-06 | 2005-12-13 | Analog Devices, Inc. | System and method for static Huffman decoding |
US20060190251A1 (en) * | 2005-02-24 | 2006-08-24 | Johannes Sandvall | Memory usage in a multiprocessor system |
WO2007011116A1 (en) * | 2005-07-20 | 2007-01-25 | Humax Co., Ltd. | Encoder and decoder |
KR100840757B1 (ko) | 2006-02-28 | 2008-06-23 | 노키아 코포레이션 | 허프만 부호화 및 복호화 |
CN101072034B (zh) * | 2007-06-12 | 2010-06-02 | 华为技术有限公司 | 一种变长解码方法及其装置 |
TW201143306A (en) * | 2010-05-19 | 2011-12-01 | Hon Hai Prec Ind Co Ltd | Method for storing information of nodes in a huffman tree and method for decoding data using an array of the huffman tree |
CN102938685A (zh) * | 2012-11-15 | 2013-02-20 | 大连理工大学 | 一种基于变长编码的无线传感器网络数据压缩方法 |
CN104283567B (zh) * | 2013-07-02 | 2018-07-03 | 北京四维图新科技股份有限公司 | 一种名称数据的压缩、解压缩方法及设备 |
US9086871B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Reordering the output of recirculated transactions within a pipeline |
CN104717499B (zh) * | 2015-03-31 | 2018-06-05 | 豪威科技(上海)有限公司 | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 |
CN107797541B (zh) * | 2016-08-29 | 2020-11-10 | 河北百亚信息科技有限公司 | 基于智能家居环境中ZigBee固件升级的镜像文件轻便解压算法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292114B1 (en) * | 1999-06-10 | 2001-09-18 | Intel Corporation | Efficient memory mapping of a huffman coded list suitable for bit-serial decoding |
EP1069691A1 (en) * | 1999-06-15 | 2001-01-17 | STMicroelectronics S.r.l. | Decoding method for a Huffman code |
US6307489B1 (en) * | 2000-03-15 | 2001-10-23 | Robert Allen Freking | Fast and small serial huffman decoder for decoding at an optimally high rate |
US6636167B1 (en) * | 2000-10-31 | 2003-10-21 | Intel Corporation | Method of generating Huffman code length information |
-
2002
- 2002-02-28 KR KR10-2002-0010981A patent/KR100484137B1/ko not_active IP Right Cessation
-
2003
- 2003-02-06 US US10/359,089 patent/US6741191B2/en not_active Expired - Lifetime
- 2003-02-17 JP JP2003038864A patent/JP3714935B2/ja not_active Expired - Fee Related
- 2003-02-28 EP EP20030251215 patent/EP1341314A3/en not_active Ceased
- 2003-02-28 CN CNB03106762XA patent/CN1254921C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7505904B2 (en) | 2004-12-20 | 2009-03-17 | Canon Kabushiki Kaisha | Database construction apparatus and method |
JPWO2017009996A1 (ja) * | 2015-07-16 | 2017-10-19 | 三菱電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP1341314A3 (en) | 2006-01-04 |
KR20030071327A (ko) | 2003-09-03 |
US20030174076A1 (en) | 2003-09-18 |
CN1441555A (zh) | 2003-09-10 |
CN1254921C (zh) | 2006-05-03 |
JP3714935B2 (ja) | 2005-11-09 |
US6741191B2 (en) | 2004-05-25 |
KR100484137B1 (ko) | 2005-04-18 |
EP1341314A2 (en) | 2003-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003273748A (ja) | 改善されたハフマンデコーディング方法及び装置 | |
US10666287B2 (en) | Coding method, decoding method, coder, and decoder | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
KR100527891B1 (ko) | 허프만 디코딩을 수행하는 방법 | |
JP3778087B2 (ja) | データ符号化装置及びデータ復号装置 | |
JPH07283739A (ja) | 短ブロックのデータを圧縮、伸長するための方法、及び装置 | |
CN110019865B (zh) | 海量图片处理方法、装置、电子设备及存储介质 | |
US20130019029A1 (en) | Lossless compression of a predictive data stream having mixed data types | |
US9665590B2 (en) | Bitmap compression for fast searches and updates | |
KR20220054651A (ko) | 다중 심볼 디코더 | |
US7348901B2 (en) | Method and system for decoding variable length encoded signals, computer program product therefor | |
US7205915B2 (en) | Method of decoding variable length prefix codes | |
Cannane et al. | General‐purpose compression for efficient retrieval | |
US20120319875A1 (en) | Method for storing node information of huffman tree and corresponding decoding method | |
Mansour | Efficient Huffman decoding with table lookup | |
CN104679775A (zh) | 一种基于Huffman表的数据处理方法 | |
CN116529705A (zh) | 利用计算机存储器中的值相似性的系统、方法和装置 | |
KR20230040702A (ko) | 극 부호를 이용하는 복호화를 위한 복호 위치 제어 정보 생성 방법 및 장치 | |
KR20030016859A (ko) | 허프만 부호의 복호화 방법 | |
CN107094022B (zh) | 一种用于VLSI设计的Huffman编码系统的实现方法 | |
JP3565147B2 (ja) | 復号装置 | |
JPH07303045A (ja) | ハフマン復号化装置 | |
Shieh et al. | A high-throughput memory-based VLC decoder with codeword boundary prediction | |
RU2321169C2 (ru) | Способ декодирования префиксных кодов переменной длины | |
KR20050037307A (ko) | N-트리 검색에 기초한 허프만 디코딩 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040622 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040922 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050405 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050701 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050726 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050823 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080902 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100902 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110902 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120902 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130902 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |