JPH11266162A - 符号化方法、符号化装置、圧縮/伸長システム、fsmコ―ダ―及びコ―ダ― - Google Patents

符号化方法、符号化装置、圧縮/伸長システム、fsmコ―ダ―及びコ―ダ―

Info

Publication number
JPH11266162A
JPH11266162A JP10371852A JP37185298A JPH11266162A JP H11266162 A JPH11266162 A JP H11266162A JP 10371852 A JP10371852 A JP 10371852A JP 37185298 A JP37185298 A JP 37185298A JP H11266162 A JPH11266162 A JP H11266162A
Authority
JP
Japan
Prior art keywords
state
bit
value
probability estimation
fsm
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
Application number
JP10371852A
Other languages
English (en)
Other versions
JP3748003B2 (ja
Inventor
Edward L Schwartz
エル シュワルツ エドワード
Michael Gormish
ゴーミッシュ マイケル
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.)
Ricoh Co Ltd
Original Assignee
Ricoh 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JPH11266162A publication Critical patent/JPH11266162A/ja
Application granted granted Critical
Publication of JP3748003B2 publication Critical patent/JP3748003B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • 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
    • H03M7/4006Conversion to or from arithmetic code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

(57)【要約】 【課題】 改良したFSMコーダと、それを利用するア
ッシュ/伸長システムを提供する。 【解決手段】 FSMコーダー103は、文脈モデル1
02より受け取った各ビット毎に一対の端点を持つ2部
分区間を有する区間を指定し、入力ビットが優勢状態で
あるか否かに基づいて一方の部分区間を選択し、その端
点間で一致するビット群の、その最上位ビットから、一
致しない最初のビットまでに存在するビット(一致しな
い最初のビットは含まない)に対応した0個以上のビッ
トを出力する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データの符号化及
び復号化の分野に係り、特に、有限状態マシン(FS
M)を利用するデータの符号化及び復号化に関する。
【0002】
【従来の技術】データ圧縮は、大量データの記憶及び伝
送のために極めて有用な手段である。例えば、文書のフ
ァクシミリ送信のような画像伝送に要する時間は、圧縮
を利用して、その画像の再生に必要なビット数を減らす
と、著しく短縮される。
【0003】入力したファイルもしくはデータセット
が、デシジョン(decision)モデルの管理下で一連のデ
シジョンに変換される圧縮システムがある。各デシジョ
ンは、それに関連した尤度を持ち、この尤度に基づいて
一つの出力コードが生成されて圧縮ファイルに追加され
る。これらの符号化システムを実現するために、圧縮シ
ステムは3つの要素、すなわちデシジョン・モデル、確
率推定方法及びビットストリーム・ジェネレータを有す
る。デシジョン・モデルは、入力データを受け取ってデ
シジョンの集合へ変換し、圧縮システムはそのデシジョ
ンの集合を利用してデータを符号化する。デシジョン・
モデルは、一般に文脈モデルと呼ばれる。確率推定方法
は、各デシジョンの尤度の確率推定値を発生する手順で
ある。ビットストリーム・ジェネレータは、最終的なビ
ットストリーム符号化を行って出力コードを生成するも
ので、この出力コードが圧縮データセットもしくは圧縮
ファイルである。デシジョン・モデル、ビットストリー
ム・ジェネレータの一方でも両方でも有効に圧縮を行う
ことができる。
【0004】バイナリ・コーダーは、データを一連のバ
イナリ・デシジョンとして符号化するタイプの符号化復
号化システムである。
【0005】有限状態マシン(FSM)コーダーは、当
該技術分野において周知のバイナリ・エントロピーコー
ダーである。FSMコーダーは、ロスレスの多重文脈バ
イナリ・エントロピーコーダーである。ビット生成(ビ
ットと既知又は推定の確率値を与えられてビットストリ
ームを生成する)と、確率推定(同じ文脈の過去のデー
タに基づき確率値を推定する)の両方に有限状態マシン
(FSM)が利用される。FSMコーダーは、符号化時
には、一連のビットと、それに関連した文脈とを受け取
って、それらビットを可能な限り少ないデータで表現す
る符号化ビットストリームを発生する。FSMコーダー
は、復号化時には、符号化ビットストリームと文脈の系
列を受け取り、元のビット系列を再生する。FSMコー
ダーの一例は、米国特許第5,272,478(発明の名称:Met
hod and Apparatus for EntropyEncoding、1993年12月2
1日発行)に述べられている。また、米国特許第5,475,3
88号(発明の名称:Method and Apparatus for Using F
inite State Machinesto Perform Channel Modulation
and Error Correction and Entropy Coding、1995年12
月12日発行)も参照されたい。
【0006】バイナリ・エントロピーコーダーは、画像
圧縮システムのロスレス符号化復号化部として利用でき
る。これらシステムは、50%超の確率のシンボルの符
号化を可能とし、かつ、被圧縮データのビット毎に独立
した文脈変化(確率推定値の変化)を許容することによ
って、最大限の圧縮が可能である。他のバイナリ・エン
トロピーコーダーとして、IBM社のQコーダー、IB
M社/三菱社のQMコーダー、米国特許第5,381,145号
(発明の名称:Method and Apparatus forParallel Enc
oding and Decoding of Data、1995年1月10日発行)及
び米国特許第5,583,500号(発明の名称:Method and Ap
paratus for Parallel Encodingand Decoding of Dat
a、1996年1月10日発行)に述べられているABSコー
ダーがある。
【0007】FSMコーダーは、ソフトウェアにより比
較的高速、簡易に実装できる。FSMコーダーは、現
在、本発明の譲受法人によって標準化提案がなされてい
る可逆ウェーブレット・ベースの画像圧縮システムに採
用されている。
【0008】
【発明が解決しようとする課題】本発明の目的は、FS
Mを利用する符号化方法、符号化装置又は符号化復号化
装置(コーダー)の性能を向上させること、また、ハー
ドウェアによる実装に好適なFSMコーダーを提供する
こと、ソフトウェアによる実装に好適な構成のFSMコ
ーダーを提供すること、ハードウェアとソフトウェアの
組合せによる実装に好適な構成なFSMコーダーを提供
すること等である。これらの目的、その他の目的につい
ては以下の説明によって明確になろう。
【0009】
【課題を解決するための手段】上記目的を達成するため
の本発明は、以下に列挙した方法、装置及びシステムを
包含する。
【0010】[1] 有限状態マシン(以下、FSM)
の状態に基づいて、端点を持つ一対の部分区間よりなる
区間を生成するステップ、入力ビットが優勢状態である
か否かに基づいて、前記一対の部分区間のうちの一方の
部分区間を選択するステップ、前記一方の部分区間の端
点間で一致するビット群の、その最上位のビットから、
前記一方の部分区間の端点間で一致しない最初のビット
までに存在するビット(一致しない最初のビットは含ま
ない)に対応した0個以上のビットを出力するステップ
からなることを特徴とする符号化方法。
【0011】[2] 前記[1]において、前記区間を
生成するステップが、前記区間を前記一対の部分区間へ
分割する値を選ぶステップを含むことを特徴とする符号
化方法。
【0012】[3] 前記[1]において、前記一対の
部分区間のうちの第1の部分区間が優勢シンボルに関連
付けられ、前記一対の部分区間のうちの第2の部分区間
が劣勢シンボルに関連付けられることを特徴とする符号
化方法。
【0013】[4] FSMの状態に基づいて、端点を
有する一対の部分区間からなる区間を生成する手段、入
力ビットが優勢状態であるか否かに基づいて、前記一対
の部分区間のうちの一方の部分区間を選択する手段、前
記一方の部分区間の端点間で一致するビット群の、その
最上位のビットから、前記一方の部分区間の端点間で一
致しない最初のビットまでに存在するビット(一致しな
い最初のビットは含まない)に対応した0個以上のビッ
トを出力する手段からなることを特徴とする符号化装
置。
【0014】[5] 前記[4]において、前記区間を
生成する手段が、前記区間を前記一対の部分区間へ分割
する値を選ぶ手段を含むことを特徴とする符号化装置。
【0015】[6] 前記[4]において、前記一対の
部分区間のうちの第1の部分区間が優勢シンボルに関連
付けられ、前記一対の部分区間のうちの第2の部分区間
が劣勢シンボルに関連付けられることを特徴とする符号
化装置。
【0016】[7] FSMの状態に基づいて、端点を
有する一対の部分区間からなる区間を生成する第1のロ
ジック部、入力ビットが優勢状態であるか否かに基づい
て前記一対の部分区間のうちの一方の部分区間を選択
し、前記一方の部分区間の端点間で一致するビット群
の、その最上位のビットから、前記一方の部分区間の端
点間で一致しない最初のビットまでに存在するビット
(一致しない最初のビットは含まない)に対応した0個
以上のビットを出力する第2のロジック部からなること
を特徴とする符号化装置。
【0017】[8] 前記[7]において、前記第1ロ
ジック部が、前記区間を前記一対の部分区間へ分割する
値を選ぶことを特徴とする符号化装置。
【0018】[9] 前記[7]において、前記一対の
部分区間のうちの第1の部分区間が優勢シンボルに関連
付けられ、前記一対の部分区間のうちの第2の部分区間
が劣勢シンボルに関連付けられることを特徴とする符号
化装置。
【0019】[10] 前記[9]において、前記一対
の部分区間のいずれの部分区間が優勢シンボルに関連付
けられるか指示するための指示情報が前記第2ロジック
部へ与えられることを特徴とする符号化装置。
【0020】[11] 前記[10]において、前記指
示情報が信号からなることを特徴とする符号化装置。
【0021】[12] 複数のビットの各ビット毎に、
それぞれが一対の端点を持つ2つの部分区間を有する区
間を指定するステップ、前記各ビット毎に、前記2つの
部分区間のどちらの部分区間が優勢シンボルに関連付け
られているか、及び、前記各ビットが優勢シンボルと同
一であるか否かに基づいて、前記区間の前記2つの部分
区間のうちの一方の部分区間を選択するステップ、及び
各区間毎に、前記選択された一方の部分区間の一対の端
点間で一致するビット群の、その最上位ビットから、前
記一方の部分区間の端点間で一致しない最初のビットま
でに存在するビット(一致しない最初のビットは含まな
い)に対応した0個以上のビットを出力するステップか
らなることを特徴とする複数ビットを符号化するための
符号化方法。
【0022】[13] 前記[12]において、前記2
つの部分区間のどちらの部分区間が優勢シンボルに関連
付けられているかが、生成された信号によって指示され
ることを特徴とする符号化方法。
【0023】[14] 前記[12]において、前記各
ビットを優勢シンボルの指示と比較するステップ、及び
前記各ビットが前記優勢シンボル指示と一致したとき
に、符号化できる見込みがある旨の指示(以下、lik
ely指示)をアサートするステップをさらに含むこと
を特徴とする符号化方法。
【0024】[15] 前記[12]において、第1の
テーブルより第1の分割インデックス値を取得するステ
ップ、及び前記第1の分割インデックス値を利用して第
2のテーブルより第2の分割インデックス値を取得する
ステップをさらに含むことを特徴とする符号化方法。
【0025】[16] 前記[15]において、前記分
割インデックス値がFSM状態及び第1の値に基づいて
取得されることを特徴とする符号化方法。
【0026】[17] 前記[16]において、確率ク
ラスに基づいてマスクを生成するステップ、前記FSM
状態に基づいてテーブルより第2の値を取得するステッ
プ、前記マスクと前記第2の値のANDをとって結果を
生成するステップ、及び前記結果に基づいて前記第1の
値を生成するステップをさらに含むことを特徴とする符
号化方法。
【0027】[18] 前記[17]において、前記第
1の値を生成するステップが前記結果中の1をカウント
してカウント値を生成し、このカウント値が前記第1の
値となることを特徴とする符号化方法。
【0028】[19] 前記[12]において、一致し
ないビットを最上位ビット位置まで左シフトし、下位ビ
ットに、部分区間の端点が下側端点ならば0のビット
を、上側端点ならば1のビットをそれぞれ充填するステ
ップをさらに含むことを特徴とする符号化方法。
【0029】[20] 文脈モデル、及び前記文脈モデ
ルと結合され、前記文脈モデルより受け取ったビットを
符号化するFSMコーダーからなり、前記FSMコーダ
ーが、複数のビットのうちの各ビット毎に、それぞれが
一対の端点を持つ2つの部分区間を有する区間を指定
し、入力ビットが優勢状態であるか否かに基づいて前記
一対の部分区間のうちの一方の部分区間を選択し、前記
一方の部分区間の端点間で一致するビット群の、その最
上位ビットから、前記一方の部分区間の端点間で一致し
ない最初のビットまでに存在するビット(一致しない最
初のビットは含まない)に対応した0個以上のビットを
出力することによってビットを符号化することを特徴と
する圧縮/伸長システム。
【0030】[21] 前記[20]において、前記文
脈モデルと結合された可逆ウェーブレット変換部をさら
に含むことを特徴とする圧縮/伸長システム。
【0031】[22] 前記[20]において、前記F
SMコーダーと結合され、符号化データ及び信号を出力
するヘッダ処理部をさらに含むことを特徴とする圧縮/
伸長システム。
【0032】[23] 前記[20]において、前記F
SMコーダーが、統合型のFSM符号化/復号化テーブ
ルと、独立した確率推定ルックアップテーブル及びビッ
ト生成ルックアップテーブルを含むことを特徴とする圧
縮/伸長システム。
【0033】[24] 前記[20]において、前記F
SMコーダーが、確率推定とビット生成の両方を行うた
めの単一のルックアップテーブルを含むことを特徴とす
る圧縮/伸長システム。
【0034】[25] 前記[20]において、前記F
SMコーダーが、前記区間を前記一対の部分区間に分割
する値を選択する第1のロジック部を含むことを特徴と
する圧縮/伸長システム。
【0035】[26] 前記[20]において、前記一
対の部分区間のうちの第1の部分区間が優勢シンボルに
関連付けられ、前記一対の部分区間のうちの第2の部分
区間が劣勢シンボルに関連付けられることを特徴とする
圧縮/伸長システム。
【0036】[27] 前記[26]において、前記F
SMコーダーが、前記一対の部分区間のどちらの部分区
間が優勢シンボルに関連付けられているか指示する指示
情報を含むことを特徴とする圧縮/伸長システム。
【0037】[28] 前記[27]において、前記指
示情報が信号からなることを特徴とする圧縮/伸長シス
テム。
【0038】[29] 前記[20]において、前記F
SMコーダーが、多重文脈確率推定を行う第1の部分、
確率推定状態をその記述情報へ変換し、likely指
示に応じて、符号化されていないビットを生成する変換
部、前記変換部より与えられる各確率推定値に応じて0
個以上の符号語を生成し、かつ、符号化データストリー
ムに応じて前記likely指示を生成するビット生成
ルックアップテーブルを含む、符号化されていないビッ
トと符号化されたビットの間の変換のためのビット生成
部、及び前記ビット生成ルックアップテーブルより符号
語を受け取るように接続され、符号化時に符号化データ
出力を発生するため可変長の符号語を結合してバイト群
にするパック部からなることを特徴とする圧縮/伸長シ
ステム。
【0039】[30] 前記[29]において、前記ビ
ット生成LUTが冗長エントリーを含まないことを特徴
とする圧縮/伸長システム。
【0040】[31] 前記[29]において、前記符
号化データストリームのバイト群の可変長シフト操作を
行って可変長符号語にするアンパック部をさらに含むこ
とを特徴とする圧縮/伸長システム。
【0041】[32] 前記[29]において、確率状
態に応じた確率クラスを生成する確率クラス部、優勢シ
ンボル(以下、MPS)が発生して確率状態の更新が必
要なときの次の確率推定状態を生成するMPS確率状態
部、劣勢シンボル(以下、LPS)が発生して確率状態
の更新が必要なときの次の確率推定状態を生成するLP
S確率状態部、MPSを切り替える必要があるときに切
り替え指示を発生する切り替え部、及び確率状態が第1
の所定値以下のときに更新指示を発生する更新部をさら
に含むことを特徴とする圧縮/伸長システム。
【0042】[33] 前記[32]において、前記M
PS確率状態部が、現在の確率推定状態を、現在の確率
状態の値に基づいたある値域内の整数だけインクリメン
ト又はデクリメントすることによって次の確率推定状態
を生成することを特徴とする圧縮/伸長システム。
【0043】[34] 前記[32]において、前記切
り替え指示が信号からなることを特徴とする圧縮/伸長
システム。
【0044】[35] 前記[32]において、確率状
態が第1の所定値以下であるか第2の所定値と等しいと
きに前記切り替え指示がアサートされることを特徴とす
る圧縮/伸長システム。
【0045】[36] 前記[32]において、前記更
新指示が信号からなることを特徴とする圧縮/伸長シス
テム。
【0046】[37] 前記[29]において、前記ビ
ット生成部が、符号化されていないビットと符号化され
たビットとの間の変換を行うためのビット生成ロジック
からなることを特徴とする圧縮/伸長システム。
【0047】[38] 前記[37]において、前記ビ
ット生成ロジックが、前記符号語を与える第1の出力
と、前記符号語のサイズを指示する第2の出力を有する
ことを特徴とする圧縮/伸長システム。
【0048】[39] 前記[37]において、前記ビ
ット生成ロジックが、前記区間を定義する次のスタート
値及び次のストップ値を発生することを特徴とする圧縮
/伸長システム。
【0049】[40] 前記[39]において、前記ビ
ット生成ロジックが発生した前記スタート値及び前記ス
トップ値を受け取るように接続されたスタートレジスタ
及びストップレジスタをさらに含み、前記スタートレジ
スタ及び前記ストップレジスタが前記ビット生成ロジッ
クの入力にも接続されることを特徴とする圧縮/伸長シ
ステム。
【0050】[41] 前記[29]において、前記ビ
ット生成部が、符号化の終わりでフラッシングのための
符号語を生成することを特徴とする圧縮/伸長システ
ム。
【0051】[42] 前記[29]において、前記ビ
ット生成部が、そのフラッシングのためのフラッシュ指
示を通知されると、所定の符号語を出力するための符号
語を生成するフラッシュロジックをさらに含むことを特
徴とする圧縮/伸長システム。
【0052】[43] 前記[42]において、前記フ
ラッシュ指示がフラッシュ信号からなることを特徴とす
る圧縮/伸長システム。
【0053】[44] 前記[42]において、符号化
データを表す符号語及びフラッシングのための所定の符
号語を受け取るように接続されたマルチプレクサをさら
に含み、該マルチプレクサがその入力の一つを前記ビッ
ト生成部の出力として選択するため前記フラッシュ指示
を受け取るように接続されることを特徴とする圧縮/伸
長システム。
【0054】[45] 前記[29]において、確率推
定値及びFSM状態に応じて、第1の分割値と、MPS
が発生し確率推定状態の更新が必要な場合の次の確率推
定状態と、LPSが発生し確率推定状態の更新が必要な
場合の次の確率推定状態とを生成する状態展開部、前記
第1の分割値と入力コードストリームを比較して第2の
分割値を出力するコンパレータ、前記コンパレータ及び
前記状態展開部と接続され、likely指示を発生す
るlikelyロジック、前記次の確率推定状態及び前
記likely指示を受け取るように接続され、前記l
ikely指示に基づいて前記次の確率推定状態の一方
を出力するマルチプレクサ、及び前記第1の分割値、前
記likely指示及び区間指示に応じて、符号語を生
成する符号語生成部をさらに含むことを特徴とする圧縮
/伸長システム。
【0055】[46] 前記[45]において、前記区
間指示が、前記区間の始まりと終わりをそれぞれ示すス
タート値とストップ値からなることを特徴とする圧縮/
伸長システム。
【0056】[47] 前記[45]において、前記状
態展開部が、確率推定値に応じたマスク値を発生する第
1の部分、前記FSM状態に応じた値を発生する第2の
部分、前記第1の部分の出力と前記第2の部分の出力の
論理積演算を行うように接続されたゲートロジック、前
記ゲートロジックの出力を受け取り、該出力に応じた選
択信号を発生するように接続された第3の部分、前記選
択信号及び前記FSM状態に応じて、MPSが発生して
更新が必要な場合のための次の確率推定状態を生成する
次状態MPS部、前記選択信号及び前記FSM状態に応
じて、LPSが発生して更新が必要な場合のための次の
確率推定状態を生成する次状態LPS部、前記選択信号
及び前記FSM状態に応じて、どちらの部分区間がMP
Sの発生に関連付けられるかの指示を発生する第4の部
分、及び前記選択信号及び前記FSM状態に応じて前記
第2の分割値を生成する第5の部分からなることを特徴
とする圧縮/伸長システム。
【0057】[48] 多重文脈確率推定を行う第1の
部分、確率推定状態をその記述情報へ変換し、like
ly指示に応じて、符号化されていないビットを生成す
る変換部、前記変換部より与えられる各確率推定値に応
じて0個以上の符号語を生成し、かつ、符号化データス
トリームに応じて前記likely指示を生成するビッ
ト生成ルックアップテーブルを含む、符号化されていな
いビットと符号化されたビットの間の変換のためのビッ
ト生成部、前記ビット生成ルックアップテーブルより符
号語を受け取るように接続され、符号化時に符号化デー
タ出力を発生するため可変長の符号語を結合してバイト
群にするパック部からなることを特徴とするFSMコー
ダー。
【0058】[49] 前記[48]において、前記ビ
ット生成ルックアップテーブルが冗長エントリーを含ま
ないことを特徴とするFSMコーダー。
【0059】[50] 前記[48]において、前記符
号化データストリームのバイト群の可変長シフト操作を
行って可変長符号語にするアンパック部をさらに含むこ
とを特徴とするFSMコーダー。
【0060】[51] 前記[48]において、確率状
態に応じた確率クラスを生成する確率クラス部、MPS
が発生して確率状態の更新が必要なときの次の確率推定
状態を生成するMPS確率状態部、LPSが発生して確
率状態の更新が必要なときの次の確率推定状態を生成す
るLPS確率状態部、MPSを切り替える必要があると
きに切り替え指示を発生する切り替え部、及び確率状態
が第1の所定値以下のときに更新指示を発生する更新部
をさらに含むことを特徴とするFSMコーダー。
【0061】[52] 前記[51]において、前記M
PS確率状態部が、現在の確率推定状態を、現在の確率
状態の値に基づいたある値域内の整数だけインクリメン
ト又はデクリメントすることによって、次の確率推定状
態を生成することを特徴とするFSMコーダー。
【0062】[53] 前記[51]において、前記切
り替え指示が信号からなることを特徴とするFSMコー
ダー。
【0063】[54] 前記[51]において、確率状
態が第1の所定値以下であるか第2の所定値と等しいと
きに前記切り替え指示がアサートされることを特徴とす
るFSMコーダー。
【0064】[55] 前記[51]において、前記更
新指示が信号からなることを特徴とするFSMコーダ
ー。
【0065】[56] 前記[48]において、前記ビ
ット生成部が、符号化されていないビットと符号化され
たビットとの間の変換を行うためのビット生成ロジック
からなることを特徴とするFSMコーダー。
【0066】[57] 前記[56]において、前記ビ
ット生成ロジックが、符号語を与える第1の出力と、前
記符号語のサイズを指示する第2の出力を有することを
特徴とするFSMコーダー。
【0067】[58] 前記[56]において、前記ビ
ット生成ロジックが、前記区間を定義する次のスタート
値及び次のストップ値を発生することを特徴とするFS
Mコーダー。
【0068】[59] 前記[58]において、前記ビ
ット生成ロジックが発生した前記スタート値及び前記ス
トップ値をそれぞれ受け取るように接続されたスタート
レジスタ及びストップレジスタをさらに含み、前記スタ
ートレジスタ及び前記ストップレジスタが前記ビット生
成ロジックの入力にも接続されることを特徴とするFS
Mコーダー。
【0069】[60] 前記[48]において、前記ビ
ット生成部が、符号化の終わりでフラッシングのための
符号語を生成することを特徴とするFSMコーダー。
【0070】[61] 前記[48]において、前記ビ
ット生成部が、そのフラッシングのためのフラッシュ指
示を通知されると、所定の符号語を出力するための符号
語を生成するフラッシュロジックをさらに含むことを特
徴とするFSMコーダー。
【0071】[62] 前記[61]において、前記フ
ラッシュ指示がフラッシュ信号からなることを特徴とす
るFSMコーダー。
【0072】[63] 前記[61]において、符号化
データを表す符号語及びフラッシングのための所定の符
号語を受け取るように接続されたマルチプレクサをさら
に含み、該マルチプレクサがその入力の一つを前記ビッ
ト生成部の出力として選択するため前記フラッシュ指示
を受け取るように接続されることを特徴とするFSMコ
ーダー。
【0073】[64] 前記[48]において、確率推
定値及び前記FSM状態に応じて、第1の分割値と、M
PSが発生し確率推定状態の更新が必要な場合の次の確
率推定状態と、LPSが発生し確率推定状態の更新が必
要な場合の次の確率推定状態とを生成する状態展開部、
前記第1の分割値と入力コードストリームを比較して第
2の分割値を出力するコンパレータ、前記コンパレータ
及び状態展開部と接続され、likely指示を発生す
るlikelyロジック、前記次の確率推定状態及び前
記likely指示を受け取るように接続され、前記l
ikely指示に基づいて前記次の確率推定状態の一方
を出力するマルチプレクサ、及び前記第1の分割値、前
記likely指示及び区間指示に応じて、符号語を生
成する符号語生成部をさらに含むことを特徴とするFS
Mコーダー。
【0074】[65] 前記[64]において、前記区
間指示が、前記区間の始まりと終わりをそれぞれ示すス
タート値とストップからなることを特徴とするFSMコ
ーダー。
【0075】[66] 前記[64]において、前記状
態展開部が、確率推定値に応じたマスク値を発生する第
1の部分、前記FSM状態に応じた値を発生する第2の
部分、前記第1の部分と前記第2の部分の出力の論理積
演算を行うように接続されたゲートロジック、前記ゲー
トロジックの出力を受け取り、該出力に応じた選択信号
を発生するように接続された第3の部分、前記選択信号
及び前記FSM状態に応じて、MPSが発生して更新が
必要な場合のための次の確率推定状態を生成する次状態
MPS部、前記選択信号及び前記FSM状態に応じて、
LPSが発生して更新が必要な場合のための次の確率推
定状態を生成する次状態LPS部、前記選択信号及び前
記FSM状態に応じて、どちらの部分区間がMPSの発
生に関連付けられるかの指示を発生する第4の部分、及
び前記選択信号及び前記FSM状態に応じて前記第2の
分割値を生成する第5の部分からなることを特徴とする
FSMコーダー。
【0076】[67] 情報を処理するためのコーダー
であって、文脈に応じた確率推定値を生成する確率推定
テーブル、前記確率推定テーブルと接続され、前記確率
推定値に応じた少なくとも一つの指示を生成し、また、
MPSの発生に関連した1組の出力及びLPSの発生に
関連した1組の出力を発生するエントロピー符号化復号
化テーブル、ただし、前記各組の出力は符号語、前記符
号語のサイズ指示及び次のエントロピー符号化復号化状
態を含む、及び前記エントロピー符号化復号化テーブル
と接続され、かつ当該コーダーに入力した符号化データ
及び符号化されていないデータを受け取るように接続さ
れ、復号化時に少なくとも一つの信号及び前記符号化デ
ータに応じてビットストリームを出力し、符号化時に前
記符号化されていないデータの各ビットに応じて、前記
MPSに関連した一組の出力又は前記LPSに関連した
一組の出力を当該コーダーの出力として選択するための
指示を出力するロジックからなることを特徴とするコー
ダー。
【0077】[68] 前記[67]において、前記確
率推定テーブルが、MPSが発生して確率推定状態の更
新を行う必要がある場合に次の確率推定状態として用い
るための第1の次の確率推定状態と、LPSが発生して
前記確率推定状態の更新を行う必要がある場合に次の確
率推定状態として用いるための第2の次の確率推定状態
を出力することを特徴とするコーダー。
【0078】[69] 前記[67]において、文脈に
応じて、確率推定状態を前記確率推定テーブル及び前記
ロジックに供給するように接続された文脈メモリをさら
に含むことを特徴とするコーダー。
【0079】[70] 前記[69]において、前記文
脈メモリが、各文脈に応じてMPSの指示を前記ロジッ
クに対し出力することを特徴とするコーダー。
【0080】[71] 文脈に応じて、確率推定ルック
アップテーブルより確率推定値を生成させるステップ、
前記確率推定値及びFSMの状態に応じて、MPSとL
PSのための符号語、該符号語のサイズ指示及び次のF
SM状態指示をエントロピー符号化復号化ルックアップ
テーブルより出力させるステップ、likely指示が
アサートされているかデアサートされているかによっ
て、前記のMPSに関連した符号語、符号語のサイズ指
示及び次のFSM状態指示、又は、前記のLPSに関連
した符号語、符号語のサイズ指示及び次のFSM状態指
示を選択するステップ、及び前記の選択された符号語及
びサイズ指示を出力するステップからなることを特徴と
する符号化方法。
【0081】[72] 前記[71]において、MPS
が発生して確率推定状態の更新が必要な場合の次の確率
推定状態を示す第1の指示を出力するステップ、及びL
PSが発生して確率推定状態の更新が必要な場合の次の
確率推定状態を示す第2の指示とMPSの切り替え指示
を発生するステップをさらに含むことを特徴とする符号
化方法。
【0082】[73] 前記[72]において、前記の
次の確率推定状態の第1及び第2の指示が前記確率推定
ルックアップテーブルより出力されることを特徴とする
符号化方法。
【0083】[74] 前記[72]において、入力ビ
ットがMPSであるかLPSであるかと、現在の確率推
定状態とに基づいて、前記の次の確率推定状態の第1の
指示、前記の確率推定状態の第2の指示及び現在の確率
推定状態のうちの一つを選択するステップをさらに含む
ことを特徴とする符号化方法。
【0084】[75] 前記[74]において、前記の
選択するステップが、MPSが発生し、かつ、現在の確
率推定状態が所定の状態以下であるときに前記の次の確
率推定状態の第1の指示を選択するステップ、LPSが
発生し、かつ、現在の確率推定状態が前記所定状態以下
であるときに前記の次の確率推定状態の第2の指示を選
択するステップ、MPSが発生し、かつ、現在の確率推
定状態が前記所定状態より大きく、かつ、1個以上のビ
ットが出力されるときに前記の次の確率推定状態の第1
の指示を選択するステップ、LPSが発生し、かつ、現
在の確率推定状態が前記所定状態より大きく、かつ、1
個以上のビットが出力されるときに前記の次の確率推定
状態の第2の指示を選択するステップ、及び現在の確率
推定状態が前記所定状態より大きく、かつ、ビットが出
力されないときに現在の確率推定状態を選択するステッ
プからなることを特徴とする符号化方法。
【0085】[76] 前記[71]において、前記の
確率推定値を生成するステップが、文脈を用いて文脈メ
モリをアドレス指定するステップ、現在の確率推定状態
と前記文脈に対するMPSの指示を取り出すステップ、
前記の現在の確率推定状態を確率推定値へ変換するステ
ップ、及び前記確率推定値を出力するステップからなる
ことを特徴とする符号化方法。
【0086】[77] 前記[76]において、前記確
率推定値が確率クラスからなることを特徴とする符号化
方法。
【0087】[78] 前記[71]において、符号化
対象のビットとMPSとの比較に基づいて前記like
ly指示を生成するステップをさらに含むことを特徴と
する符号化方法。
【0088】[79] 前記[71]において、次のM
PS値を決定するステップ、及び次の確率推定状態値を
選択するステップをさらに含むことを特徴とする符号化
方法。
【0089】[80] 文脈を用いて文脈メモリをアド
レス指定するステップ、現在の確率推定状態と前記文脈
に対するMPSの指示を取り出すステップ、前記の現在
の確率推定状態を確率推定値へ変換するステップ、前記
確率推定値を出力するステップ、MPSが発生し、か
つ、確率推定状態の更新が必要なときに次の確率推定状
態を出力するステップ、LPSが発生し、かつ、確率推
定状態の更新が必要であるときに次の確率推定状態とM
PSの切り替え指示を出力するステップ、前記確率推定
値及びFSMの状態に応じて、MPSとLPSのため
の、符号語、該符号語のサイズ指示及び次のFSM状態
指示をエントロピー符号化復号化ルックアップテーブル
より出力させるステップ、符号化対象のビットとMPS
との比較に基づいてlikely指示を生成するステッ
プ、前記likely指示がアサートされているかデア
サートされているかによって、前記のMPSに関連した
符号語、符号語のサイズ指示及び次のFSM状態指示、
又は、前記のLPSに関連した符号語、符号語のサイズ
指示及び次のFSM状態指示をそれぞれ選択するステッ
プ、次のMPS値を決定するステップ、及び次の確率推
定状態値を選択するステップからなることを特徴とする
符号化方法。
【0090】[81] 情報の符号化及び復号化のため
のコーダであって、確率推定状態に応じて、少なくとも
一つの信号と、MPSの発生に関連した1組の出力と、
LPSの発生に関連した1組の出力とを発生する確率推
定及びFSMビット生成のための統合型テーブル、ただ
し、前記各組の出力は符号語とそのサイズ指示及び次の
エントロピー符号化復号化状態を含む、前記統合型テー
ブルと接続され、かつ当該コーダーに入力した符号化デ
ータ及び符号化されていないデータを受け取るように接
続され、復号化時に前記の少なくとも一つの信号及び前
記符号化データに応じてビットストリームを出力し、符
号化時に前記符号化されていないデータの各ビットに応
じて、前記のMPSに関連した一組の出力又は前記のL
PSに関連した一組の出力を当該コーダーの出力として
選択するための指示を出力するビットロジックからなる
ことを特徴とするコーダー。
【0091】
【発明の実施の形態】以下の説明において、信号名、ビ
ット数など、様々な具体例が示される。しかし、当業者
には、そのような具体例によらずに本発明を実施し得る
ことは明白であろう。他方、本発明をいたずらに難解に
しないため、周知の構造やびデバイスはブロック図とし
て表し、詳しくは示さない。
【0092】以下の詳細説明には、コンピュータメモリ
内のデータビットに対する操作のアルゴリズム及び記号
表現によって表された部分がある。このようなアルゴリ
ズムの記述及び表現は、データ処理技術分野の当業者に
よって、その研究の内容を他の当業者に対し最も効率的
に伝えるために用いられる手段である。あるアルゴリズ
ムがあり、それが概して期待した結果に至る自己矛盾の
ないステップ系列だと考えられるとする。これらのステ
ップは、物理量を物理的に処理する必要があるものであ
る。必ずという訳ではないが、これらの物理量は記憶、
転送、結合、比較、その他の処理が可能な電気的または
磁気的信号の形をとるのが普通である。これらの信号を
ビット、値、要素、記号、文字、用語、数値等で表わす
のが、主に慣用上の理由から、便利な場合があることが
分かっている。
【0093】しかしながら、このような用語や同様の用
語は、適切な物理量と関係付けられるべきであり、ま
た、これら物理量につけた便宜上のラベルに過ぎないと
いうことに留意すべきである。以下の説明から明らかな
ように、特に断わらない限り、「処理」「演算」「計
算」「判定」「表示」等々の用語を用いて論じること
は、コンピュータシステムのレジスタ及びメモリの内部
の物理的(電子的)な量として表現されたデータを処理
して、コンピュータシステムのメモリまたはレジスタ、
同様の情報記憶装置、情報伝送装置あるいは表示装置の
内部の同様に物理量として表現された他のデータへ変換
する、コンピュータシステムあるいは同様の電子演算装
置の作用及びプロセスを指すものである。
【0094】また、後述のように、本発明は、本明細書
において述べる操作を実行するための装置にも関係する
ものである。この装置は、希望する目的に専用に作って
もよいし、あるいは、汎用コンピュータを内蔵のコンピ
ュータ・プログラムにより選択的に駆動または再構成し
たものでもよい。このようなコンピュータ・プログラム
は、コンピュータが読み取り可能な、どのような種類の
記憶媒体に格納してもよい。例えば、これに限定される
ものではないが、フロッピーディスク、光ディスク、C
D−ROM、光磁気ディスクなどの任意の種類のディス
ク、リードオンリーメモリ(ROM)、ランダムアクセ
スメモリ(RAM)、EPROM、EEPROM、磁気
カード又は光カードなど、電子的命令の格納に適した、
コンピュータのシステムバスに接続された任意種類の媒
体でよい。本明細書に提示したアルゴリズムは、本質的
に、いかなる特定のコンピュータ、その他の装置とも関
わりがない。様々な汎用マシンを、本明細書に述べたと
ころに従ったプログラムに利用してもよいが、必要な方
法のステップの実行用に、より特化した装置を作るほう
が好都合であるかもしれない。これら多様なマシンに要
求される構造は以下の説明から明らかになろう。さら
に、いかなる特定のプログラミング言語とも関連付ける
ことなく本発明を説明する。本明細書における説明から
理解されるように、様々なプログラミング言語を用いて
本発明の内容を実現できる。
【0095】本発明は、性能を向上するように設計され
たFSMコーダーとFSMベースのコーダーシステムを
提供する。ハードウェアに好適な構成、ソフトウェアに
好適な構成、又は、ハードウェアとソフトウェアの組合
せに好適な構成がある。
【0096】本発明のFSMコーダーは、可逆ウェーブ
レットによる圧縮を利用したシステムのエントロピーコ
ーダーとして用いることができる。
【0097】図1は、本発明の圧縮/伸長システムの一
実施例のブロック図である。図1において、画像データ
105は、可逆ウェーブレット変換部101に入力さ
れ、又は可逆ウェーブレット変換部101より出力され
る。この可逆ウェーブレット変換部101は、順変換部
と逆変換部からなる。可逆ウェーブレット変換部101
は、文脈モデル102と結合される。文脈モデル102
はFSMコーダー103とも結合され、FSMコーダー
103はヘッダ処理部104とも結合される。ヘッダ処
理部104は、符号化データ及び信号108を生成し又
は受け取る。一実施例では、符号化データ及び信号10
8は、タグ付きのコードストリームからなる。このよう
に、文脈モデル102とのインターフェースに加えて、
FSMコーダー103の符号化データが、ヘッダ処理部
104に生成/利用されるタグ付きコードストリームに
含まれている。
【0098】図1に示すFSMコーダー・ベースのシス
テムの基本動作は、次のとおりである。符号化時におい
ては、入力データである画像データ105が、可逆ウェ
ーブレット変換部101の可逆ウェーブレット順変換部
によって、係数の系列に変換される。各係数は複数ビッ
ト長である。可逆ウェーブレット変換部101から出力
された係数のビットは、文脈モデル102によって文脈
ビンに分類される。各文脈ビン毎に1つの確率推定値が
格納されており、これはFSMコーダー103の内部の
確率推定マシン(PEM)によって生成される。一実施
例では、この確率推定値はカウンタの値と同様の1つの
状態である。一実施例では、この状態の1つのビット
は、その文脈で0又は1のほうが発生する可能性が高い
かどうかを表す。これは優勢シンボル又はMPSと呼ば
れる。その他のビットは、MPSの(劣勢シンボル(L
PS)に対する)約50%から約100%までのスキュ
ー(PSTATE)を表す、すなわち、MPSが(LP
Sと比べて)どのくらい発生する可能性が高いかを表し
ている。
【0099】後述の状態マシン更新規則は、現在の状態
と0又は1の発生を仮定したときに、PSTATEと、
その文脈ビンで発生する可能性が高いビットを更新する
ために何をすべきかを規定する。一実施例では、この更
新規則は、MPSとPSTATEを管理するために1文
脈あたり10ビットだけ規定する。一般に更新規則は、
MPSが生じた時にPSTATEをある量増加させ、L
PS(劣勢シンボル)が生じた時にPSTATEをある
量減少させる。一実施例では、スキューは16個の確率
クラス(PCLASS)に分割される。各PCLASS
は、一つの確率範囲として用いられる。
【0100】FSMコーダー103は、各PCLASS
毎にビットを符号化する有限状態マシン(FSM)を含
んでいる。確率が50%を越えるビットを符号化するた
めに、ビットが全く出力されず、情報がFSMの状態に
一時的に格納されることがある。このエントロピーコー
ダーの状態によって、まだ出力されていないビットを復
号化器が正しく認識できるようにするためには、どんな
ビットパターンを次に出力すればよいか指示される。
【0101】図2は、2値画像データ115を処理する
ためのFSMコーダー・ベースの圧縮/伸長システムの
別の実施例を示すブロック図である。図2において、1
12は文脈モデル、113はFSMコーダー(エントロ
ピーコーダー)、114はヘッダ処理部(オプション)
であり、それぞれ図1中の同一名称の部分に対応するも
のである。118は符号化データ及び信号である。ここ
で、2値画像の画素は符号化済みの近傍画素の2進値に
基づいて1024文脈中の1つの文脈に分類される。こ
れはJPIG標準と同様である。そのような近傍画素に
基づく2つの文脈例も図2に示されている。
【0102】可逆ウェーブレット・ベースの圧縮/伸長
システムと2値画像圧縮/伸長システムに関連して本発
明システムを説明したが、本発明は、ウェーブレット・
ベースでない他のシステムにも適用可能である。また、
画像データに関連して図1及び図2を説明したが、画像
以外の種類のデータや情報、例えば音声やテキスト、コ
ンピュータの実行ファイルやデータファイルなども処理
可能である。
【0103】[ルックアップテーブル(LUT)ベース
のFSMコーダー]本発明は、大部分が1つ又はそれ以
上のルックアップテーブル(LUT)として実装された
ソフトウェアのFSMコーダーを提供する。この本発明
のFSMコーダーは、例えば、符号化対象ビット用のア
ドレス入力、エントロピーコーダー状態用のアドレス入
力、及び/又は、PCLASSもしくはPSTATEの
ためのアドレス入力を持つ複数のLUTを使用する。一
実施例では、PCLASSは、あるバイナリ・デシジョ
ンに対する実際の確率推定値が含まれる一つのクラスで
あり、ある確率範囲として用いられる。一実施例では、
PSTATEは、バイナリ・デシジョンの確率推定状態
である。PCLASSとPSTATEは、バイナリ・デ
シジョン以外のものの確率に対応させてもよい。一実施
例では、符号化対象ビット用アドレス入力は1ビットか
らなり、エントロピーコーダー状態は6ビットからな
り、PCLASSは4ビットからなり、PSTATEは
9ビットからなる。このようなアドレッシング方法によ
れば、全体のアドレスサイズは11ビット又は16ビッ
トであり、2K又は64KのLUTエントリーを必要と
する。FSMコーダーの復号化部のソフトウェアによる
実装の中には、(符号化対象ビットに代えて)符号化さ
れたデータをLUTの入力として用いるものもある。こ
の符号化データは例えば8ビット長である。このように
すると、LUTの入力アドレスのサイズは18ビット又
は23ビットに増加し、256K又は8MのLUTエン
トリーを必要とする。
【0104】本発明の一実施例では、前述の符号化器用
テーブル程度のサイズの単一のテーブルが、符号化と復
号化の両方に利用される。すなわち、復号化と符号化の
ためにテーブルを別々に用意する必要はない。復号化器
用の大きなLUTをなくせば、コストはかなり削減され
る。
【0105】図3は、統合型のFSM符号化/復号化テ
ーブルを持ち、独立した確率推定LUTとビット生成L
UTを使うFSMコーダー(符号化器/復号化器)のブ
ロック図である。図3において、文脈(contex
t)メモリ201は、確率推定(probabilit
y estimation)テーブル202、マルチプ
レクサ(MUX)203、確率推定(probabil
ity estimation)ロジック205、及び
ビット(bit)ロジック204と結合されている。確
率推定テーブル202はMUX203及び確率推定ロジ
ック205、並びにエントロピー符号化復号化(ent
ropy coding)テーブル206にも結合され
ている。確率推定ロジック205は、MUX203、ビ
ットロジック204及びMUX209にも結合されてい
る。エントロピー符号化復号化テーブル206は、エン
トロピー符号化復号化状態(entropy codi
ngstate)ストレージ207、ビットロジック2
04及びMUX208,209,210に結合されてい
る。MUX208,209,210はビットロジック2
04にも結合されている。MUX210はエントロピー
符号化復号化状態ストレージ207にも結合されてい
る。
【0106】符号化時の動作は以下のとおりである。L
UTの値や確率推定ロジックの動作などの詳細について
は、後に詳しく述べる。ビット幅を示すが、それは例に
過ぎない。ソフトウェアでは、ビット幅は8ビットの倍
数又はソフトウェアを実行するコンピュータのワード・
サイズの倍数に切り上げられるのが一般的である。
【0107】まず、context(文脈ビン)211
を用いて文脈メモリ201をアドレス指定する。con
text211に応じて、文脈メモリ201は、確率推
定状態PSTATEであるpstate214とMPS
であるmps215を出力する。アドレスのビット数
(及びメモリロケーション数)はアプリケーション次第
である。一実施例では、540個のメモリロケーション
が使用され、文脈メモリ201はpstate214と
して9ビット、mps215として1ビットを出力す
る。図2に示す10ビットの2値テンプレートは、10
24個のメモリロケーションを必要とする。
【0108】pstate214が入力されると、確率
推定テーブル202(一実施例ではLUT)はいくつか
の出力を発生する。確率推定テーブル202は確率推定
値pclass219を出力する。確率推定テーブル2
02は、MPSが発生し、かつ、PSTATEの更新が
必要なときには次の確率推定状態PSTATEも出力す
る。確率推定テーブル202は、LPSが発生し、か
つ、PSTATEの更新が必要なときには、次のPST
ATEと、MPSを(0から1へ、又は1から0へ)切
り替えるべきか否か(switch指示218として表
されている)も出力する。一実施例では、この切り替え
(switch)指示218は1ビットの信号である。
MPSが発生した時に出力される次の確率推定状態と、
LPSが発生した時に出力される次の確率推定状態は、
ここでは、それぞれmps_pstate216とlp
s_pstate217と呼ばれる。
【0109】mps_pstate216とlps_p
state217は、pstate214とともにMU
X203に入力する。確率推定ロジック205は、MU
X203に入力した確率推定状態の中から、次の確率推
定状態next_pstate213を選び出す選択指
示(例えば信号(信号群))220を出力する。一実施
例では、pstate214が214以下の場合に、選
択指示220は、入力ビットがMPSであるかLPSで
あるかによってmps_pstate216又はlps
_pstate217をそれぞれ選択し、pstate
214が214より大きく、かつビットが出力される場
合には、選択指示220は、入力ビットがMPSである
かLPSであるかによってmps_pstate216
又はlps_pstate217をそれぞれ選択する。
他方、pstate214が214より大きく、かつビ
ットが全く出力されない(符号化時)か消費されない
(復号化時)場合には、選択指示220はpstate
214をnext_pstate213として選択す
る。
【0110】エントロピー符号化復号化テーブル206
は、pclass219と、エントロピー符号化復号化
状態ストレージ207から出るFSM状態(FSM_s
tate)236を受け取るように結合されている。一
実施例では、エントロピー符号化復号化状態ストレージ
207はレジスタ、その他の一時的なバッファ、キュー
又は記憶機構からなる。エントロピー符号化復号化テー
ブル206は、ビット生成LUTとして働く。最初は、
エントロピー符号化復号化状態は0である。エントロピ
ー符号化復号化テーブル206は、符号語(例えばビッ
トパターン、トークン、シンボルなど)のcw(符号
語)_mps227とcw_lps228を、符号化デ
ータストリームとして出力する。cw_mps227と
cw_lps228は、符号化器にMPSが入力された
ときと、LPSが入力されたときとにそれぞれ出力され
る符号語である。一実施例では、cw_mps227と
cw_lps228は8ビットの符号語である。
【0111】また、エントロピー符号化復号化テーブル
206は、その入力に応じて、出力ビット数の指示も出
力する。すなわち、エントロピー符号化復号化テーブル
206は、符号語のサイズ、すなわち実際のビットパタ
ーンからなるcw_mps227及びcw_lps22
8のビット数をそれぞれ示すsize_mps230及
びsize_lps231を出力する。一実施例では、
size_mps230とsize_lps231はそ
れぞれ4ビットからなる。エントロピー符号化復号化テ
ーブル206の出力には、state_mps233と
state_lps234もあり、これらは、MPS又
はLPSが出力される場合の次のエントロピーコーダー
状態をそれぞれ示す。一実施例では、state_mp
s233とstate_lps234はいずれも6ビッ
トからなる。
【0112】ビットロジック204は、符号化対象ビッ
ト(bit_in)222をmps215と比較し、そ
れらが同一のときには、確からしい旨のlikely指
示(例えば信号(群))223を発生する。他方、同一
でないときには、likely指示223はアサートさ
れない。
【0113】likely指示223が真であるとき
(すなわち、アサートされたとき)には、MUX20
8,209,210より、cw_mps227、siz
e_mps230及びstate_mps233が、出
力ビットストリーム(coded_data_out2
29)、出力サイズ(size232)、及び、(エン
トロピー符号化復号化状態ストレージ207に格納され
る)次のFSM状態next_FSM_state23
5として、それぞれ出力される。likely指示22
3が真でないときには、cw_lps228、size
_lps231及びstate_lps234がMUX
208,209,210よりそれぞれ出力される。
【0114】確率推定ロジック205は、次のMPSの
指示であるnext_mps212を決定し、また、次
のPSTATEの指示であるnext_pstate2
13を、現在の確率推定状態pstate214にする
か、更新後の値であるpstate_mps216とp
state_lps217の一方にするか制御する。一
実施例では、LPSが発生し、かつ、PSTATEが4
以下であるか262であるときに、確率推定ロジック2
05はnext_mps212を切り替えるべきと判断
する。next_pstate213の選択制御のため
に、MUX203の選択入力に対する選択指示220を
発生するロジックも含まれている。
【0115】next_mps212とnext_ps
tate213は、context211に基づいたア
ドレスによってアドレス指定された文脈メモリ201の
ロケーションに書き込まれる。一実施例では、このアド
レスはcontext211であり、書き込まれるデー
タはnext_mps212とnext_pstate
213である。
【0116】このようにして、確率推定とFSMビット
生成のテーブルが分離したLUTベースのコーダーは符
号化を行う。
【0117】このLUTベースのコーダーは、同様の方
法で復号化を行う。復号化を開始するため、文脈メモリ
201がcontext211によってアドレス指定さ
れる。context211に応じて、文脈メモリ20
1はpstate214とmps215を出力する。前
述のように、アドレスのビット数(及びメモリロケーシ
ョン数)はアプリケーション次第である。一実施例で
は、文脈メモリ201は、pstate214として9
ビットを、mps215として1ビットを、出力する。
【0118】pstate214に応じて、確率推定テ
ーブル202は確率推定値pclass219を出力す
る。一実施例では、pclass219は4ビットから
なる。確率推定テーブル202は、MPSが発生し、か
つPSTATEの更新が必要であるときには、次のPS
TATEを出力する。この場合、次のPSTATEはm
ps_pstate216である。一実施例では、PS
TATEの更新が必要となるのは、pstate214
が214以下であるか、pstate214が214よ
り大きく、かつビットが消費される場合である。一実施
例では、mps_pstate216は9ビットであ
る。また、確率推定テーブル202は、LPSが発生
し、かつPSTATEの更新が必要なときには、次のP
STATEと、MPSの(0から1へ、又は1から0へ
の)切り替え指示を出力する。この場合、次のPSTA
TEはlps_pstate217によって指示され、
MPSを切り替えるか否かはswitch指示(例えば
信号(群))218によって指示される。一実施例で
は、lps_pstate217とswitch指示2
18は、それぞれ9ビットと1ビットである。
【0119】エントロピー符号化復号化テーブル206
は、pclass219と、(エントロピー符号化復号
化状態ストレージ207からの)FSM_state2
36を受け取るように結合されている。これらの入力に
応じて、エントロピー符号化復号化テーブル(ビット生
成LUT)206は、実際のビットパターン(例えば符
号語、トークン、シンボルなど)からなるcw_mps
227とcw_lps228の実際のビット数、並び
に、符号語のcw_mps227とcw_lps228
のそれぞれのサイズであるsize_mps230とs
ize_lps228を出力する。cw_mps227
とcw_lps228は、復号化時には利用されないの
で、符号化専用の態様では発生する必要はない。一実施
例では、これらのサイズ指示はそれぞれ4ビットである
が、符号語は8ビット長である。エントロピー符号化復
号化テーブル206は、次のエントロピーコーダー状態
としてstate_mps233とstate_lps
234も出力する。一実施例では、これら次のエントロ
ピーコーダー状態は6ビットからなる。なお、エントロ
ピーコーダー状態は最初は0である。
【0120】この復号化プロセスにおいて、エントロピ
ー符号化復号化テーブル206は、符号化ストリーム中
のMPSビットパターンとLPSビットパターンの間隔
を示す分割値(split値)226も出力する。一実
施例では、split値226は8ビットのデータから
なる。エントロピー符号化復号化テーブル206は、s
plit値226の「00000000」側のビットパ
ターンがMPSを表すか否かを示すfps指示又は値2
25も出力する。一実施例では、fps値225は1ビ
ット値である。split値226とfps値225の
利用方法については後に詳述する。
【0121】ビットロジック204は、fps値225
及びsplit値226並びにmps215及びdat
a_in221を受け取るように接続されている。これ
ら入力に応じて、ビットロジック204は、ビットスト
リームdata_in221の8ビットをsplit値
226と比較し、図20に示す真理値表に従ってlik
ely指示(信号(信号群))223を発生する。
【0122】likely指示223が真ならば、st
ate_mps233がnext__FSM_stat
e235としてMUX210より出力され、エントロピ
ー符号化復号化状態ストレージ207に格納される。ま
た、likely指示223が真ならば、size_m
ps230がMUX209より出力され、復号化に使用
済みでもう必要でない符号化データのビット数を指定す
る。これによって、data_in221をシフト入力
するシフトレジスタ(煩雑化を避けるため図示されてい
ない)の制御が可能になる。他方、likely指示2
23が真でなければ、size_lps231とsta
te_lps234がMUX209,210よりそれぞ
れ出力される。なお、data_out229は、復号
化時には利用されない(すなわち「何でも構わな
い」)。
【0123】また、復号化時に、確率推定ロジック20
5は次のMPS値を決定し、それをnext_mps2
12として出力する。一実施例では、next_mps
212は1ビット値である。一実施例では、このMPS
値は、LPSが発生し、かつ、PSTATEが4以下で
あるか262であるときに切り替えられる。確率推定ロ
ジック205はまた、次のPSTATEが、pstat
e214で示される現在のPSTATEであるか、mp
s_pstate216又はlps_pstate21
7で示される更新されたPSTATE値の一方であるか
制御する。確率推定ロジック205は、この選択を、M
UX203に対する選択指示(例えば信号(信号群))
220を用いて制御する。MUX203の出力がnex
t_pstate213である。
【0124】next_mps212とnext_ps
tate213は共に、context211によりア
ドレス指定された文脈メモリ201のロケーションに書
き込まれる。
【0125】文脈メモリ201は、符号化でも復号化で
も入力は同じであることに注意されたい。また、復号化
動作又は符号化動作を有効にするためのイネーブル・ロ
ジックは示さていないが、当業者には明白であろう。
【0126】なお、図3のコーダーは、本明細書におい
て説明した他のコーダーと同様に、2つの独立したデー
タ入力を有し、その一つは符号化データ用、もう一つは
符号化されていないデータ用のものである。一実施例で
は、コーダーは、これら2種類のデータを同じ入力又は
ポートで受け取り、コーダーの関連部分すなわち選択ロ
ジックにどちらの種類のデータを現在受け取っているか
知らせるための周知のロジック及び/又は1つ以上の符
号化/復号化制御信号を用いる。このような入力構造
を、本明細書に述べるどの実施例にも採用できる。
【0127】図4は、単一のLUTで確率推定とビット
生成の両方を行う構成のFSMコーダーを示す。単一の
LUTを使うことにより、ソフトウェアによる実装に使
われる操作(命令)が減るが、LUTは大きくなる。
【0128】符号化時の動作は以下のとおりである。ま
ず、context211を用いて文脈メモリ201を
アドレス指定する。context211に応じて、文
脈メモリ201はpstate214とmps215を
出力する。アドレスのビット数(及びメモリロケーショ
ン数)はアプリケーション次第である。一実施例では、
540個のメモリロケーションが使用され、文脈メモリ
201はpstate214として9ビット、mps2
15として1ビットを出力する。
【0129】pstate214が入力されると、確率
推定及びビット生成のための統合型テーブル(comb
ined memory)301は、MPSが発生し、
かつ、PSTATEの更新が必要なときには次の確率推
定状態PSTATEを出力する。一実施例では、PST
ATEの更新が必要となるのは、pstate214が
214以下の時、又は、pstate214が214よ
り大きく、かつビットが出力される(符号化の場合)か
消費される(復号化の場合)場合である。一実施例で
は、mps_pstate216は9ビットである。統
合型テーブル301は、LPSが発生し、かつPSTA
TEの更新が必要なときには、次のPSTATEと、M
PSの(0から1へ、又は1から0への)切り替え指示
すなわちswitch指示218も出力する。一実施例
では、switch指示218は1ビット信号である。
MPSが発生した時の次の確率推定状態とLPSが発生
した時の次の確率推定状態は、それぞれmps_pst
ate216とlps_pstate217である。m
ps_pstate216とlps_pstate21
7は、pstate214と共にMUX203に入力す
る。確率推定ロジック205は、MUX203に入力さ
れた確率推定状態から、次の確率推定状態であるnex
t_pstate213を選ぶ選択指示(例えば信号
(信号群))220を出力する。
【0130】統合型テーブル301は、エントロピー符
号化復号化状態ストレージ207からFSM状態すなわ
ちFSM_state236を受け取るように接続され
ている。一実施例では、エントロピー符号化復号化状態
ストレージ207は、レジスタ、一時的なバッファ、キ
ュー又はその他の記憶機構からなる。統合型テーブル3
01は、ビット生成LUTとして働く。最初は、エント
ロピー符号化復号化状態は0であり、統合型テーブル3
01は、符号語(ビットパターン)であるcw_mps
227とcw_lps228を符号化データストリーム
として出力する。一実施例では、cw_mps227と
cw_lps228は8ビットの符号語である。統合型
テーブル301は、出力ビット数指示も出力する。すな
わち、統合型テーブル301は、符号語のサイズ、つま
り実際のビットパターンからなるcw_mps227と
cw_lps228のビット数をそれぞれ示すsize
_mps230とsize_lps231を出力する。
一実施例では、size_mps230とsize_l
ps231はそれぞれ4ビットからなる。統合型テーブ
ル301の出力には、state_mps233とst
ate_lps234もあり、これらは、MPS又はL
PSが出力される場合の次のエントロピーコーダー状態
をそれぞれ示す。一実施例では、state_mps2
33とstate_lps234はいずれも6ビットか
らなる。
【0131】ビットロジック204は、符号化対象ビッ
トであるbit_in222をmps215と比較し、
それらが同一のときにlikely指示223をアサー
トする(likely指示223は真である)。他方、
同一でないときにはlikely指示223はアサート
されない(likely指示は真でない)。
【0132】likely指示223が真のときには
(アサートされているときには)、MUX208,20
9,210より、cw_mps227、size_mp
s230及びstate_mps233がそれぞれ出力
ビットストリームdata_out229、size指
示232及び(エントロピー符号化復号化状態ストレー
ジ207に格納される)next_FSM_state
235に出力される。likely指示223が真でな
いときには、cw_lps228、size_lps2
31及びstate_lps234がMUX208,2
09,210よりそれぞれ出力される。
【0133】確率推定ロジック205は、next_m
ps212を決定し、また、次のPSTATEすなわち
next_pstate213を、pstate214
により示される現在のPSTATEにするか、更新後の
値であるmps_pstate216又はlps_ps
tate217にするか制御する。この制御は、MUX
203に対する選択指示220を発生することによって
行われることは、前述の通りである。
【0134】next_mps212とnext_ps
tate213は、context211によってアド
レス指定された文脈メモリ201のロケーションに書き
込まれる。すなわち、アドレスはcontext211
からなり、書き込まれるデータはnext_mps21
2とnext_pstate213からなる。
【0135】図4のコーダーの復号化動作も同様であ
る。まず、context211によって文脈メモリ2
01をアドレス指定する。context211に応じ
て、文脈メモリ201はpstate214とmps2
15を出力する。アドレスのビット数(及びメモリロケ
ーション数)はアプリケーション次第である。一実施例
では、文脈メモリ201はpstate214として9
ビット、mps215として1ビットを出力する。
【0136】pstate214が入力されると、統合
型テーブル301は、MPSが発生し、かつPSTAT
Eの更新が必要であるときには、次の確率推定状態PS
TATEを出力する。統合型テーブル301は、LPS
が発生し、かつPSTATEの更新が必要なときには、
次のPSTATEと、MPSの(0から1へ、又は1か
ら0への)切り替え指示すなわちswitch指示21
8を出力する。一実施例では、switch指示218
は1ビットの信号である。MPSが発生した時とLPS
が発生した時の次の確率推定状態はそれぞれmps_p
state216とlps_pstate217であ
る。mps_pstate216とlps_pstat
e217は、pstate214と共にMUX203に
入力する。確率推定ロジック205は、MUX203に
入力した確率推定状態より、次の確率推定状態next
_pstate213を選択するための選択指示220
を出力する。
【0137】(エントロピー符号化復号化状態ストレー
ジ207から出力される)FSM_state236も
統合型テーブル(LUT)301に入力される。一実施
例では、エントロピー符号化復号化状態ストレージ20
7は、レジスタ、一時的なバッファ、キュー又はその他
の記憶機構からなる。統合型テーブル301はビット生
成LUTとして働く。最初は、エントロピー符号化復号
化状態は0である。統合型テーブル301は、符号語
(ビットパターン、トークン、シンボルなど)であるc
w_mps227とcw_lps228を出力し、これ
らはlikely指示223がアサートされているか否
かに応じて符号化データストリームとなる。一実施例で
は、cw_mps227とcw_lps228は8ビッ
トの符号語である。復号化器専用の実施例ではcw_l
ps227とcw_lps228は必要でない。統合型
テーブル301は、出力ビット数の指示も出力する。す
なわち、統合型テーブル301は、符号語のサイズ、つ
まり実際のビットパターンからなるcw_mps227
とcw_lps228のビット数をそれぞれ示すsiz
e_mps230とsize_lps231も出力す
る。一実施例では、size_mps230とsize
_lps231は4ビットからなる。統合型テーブル3
01の出力には、state_mps233とstat
e_lps234もあり、これらはMPS又はLPSが
出力される場合の次のエントロピーコーダー状態をそれ
ぞれ示す。一実施例では、state_mps233と
state_lps234は6ビットからなる。
【0138】図4のビットロジック204の動作は、s
plit値226とfps値225を利用して復号化を
実行することも含めて、図3に関連して述べたものと同
様である。
【0139】likely指示223が真のときには、
MUX210よりstate_mps233がnext
_FSM_state235として出力され、エントロ
ピー符号化復号化状態ストレージ207に格納される。
また、likely指示223が真のときに、復号化に
使用済みでもう必要でない符号化データのビット数を指
定するため、size_mps230がMUX209よ
り出力される。これにより、data_in221をシ
フト入力するシフトレジスタ(煩雑化を避けるため図示
されていない)の制御が可能になる。他方、likel
y指示223が真でなければ、size_lps231
とstate_lps234がMUX209,210よ
りそれぞれ出力される。なお、復号化時は、data_
out229は利用されない(すなわち「何でも構わな
い」)。
【0140】確率推定ロジック205は、next_m
ps212を決定し、また、次のPSTATEすなわち
next_pstate213を、現在のPSTATE
すなわちpstate214にするか、更新後の値であ
るmps_pstate216又はlps_pstat
e217にするか制御する。この制御は、MUX203
に対する選択指示220を発生することによって行われ
ることは、前述の通りである。
【0141】next_mps212とnext_ps
tate213は、context211によってアド
レス指定された文脈メモリ201のロケーションに書き
込まれる。すなわち、アドレスはcontext211
からなり、書き込まれるデータはnext_mps21
2とnext_pstate213からなる。
【0142】図21に、さまざまなLUTのサイズをま
とめて示す。図21の表を見ると、復号化のための分割
点(split points)を持つ単一の符号化/復号化テーブ
ルを用いると、コードストリームを入力として利用する
復号化専用テーブルを用いるよりも、かなりのコスト削
減になることが分かる。図21の表において、「分離」
とラベル付けされたLUTは「確率推定専用」LUTを
必要とするが、「統合」とラベル付けされたLUTは
「確率推定専用」LUTを必要としない。
【0143】[ロジック・ベースのFSMコーダー]本
発明の一実施例によれば、FSMコーダーはハードウェ
アにより実装される。以下の説明で、そのような実施例
を少なくとも一つ述べる。説明の一部は、代表的なハー
ドウェア記述言語Verilogによって記述される。
【0144】本発明のFSMコーダーは、ハードウェア
コストが減少する。一実施例では、エントロピーコーダ
ー(ビット生成)ルックアップテーブルのサイズがかな
り縮小され、ある実施例では、冗長なエントリーが使わ
れないほぼ最小サイズまで縮小される。ロジックで、全
ての必要情報を冗長性のないLUTエントリーより生成
する。符号語のビットパターンと長さを、そのLUTで
生成する必要はない。それらは、ロジックで生成される
からである。
【0145】図5は、本発明のFSMコーダーの一実施
例のブロック図である。確率状態展開部(pem_ex
pand部)401は多重文脈確率推定部(pem_c
ode部)402及びビット生成部(bit_gene
rate部)403に接続されている。pem_cod
e部402は、bit_generate部403にも
接続されている。パック部(pack部)404とアン
パック部(unpack部)405もbit_gene
rate部403に接続されている。
【0146】pem_code部402は、文脈メモリ
を内蔵し、多重文脈確率推定を行う。pem_expa
nd部401は、pstate214のようなPSTA
TEを、そのPSTATEを記述する情報に変換する。
bit_generate部403は、pclass2
19のようなPCLASSに応じて、符号化されていな
いビットと符号化されたビットの間の変換を行う。pa
ck部404は、符号化時に、可変長符号語群を結合し
てバイト群にする。他方、unpack部405は、復
号化時に、符号化データストリームのバイト群の可変長
シフト操作を行う。
【0147】このFSMコーダー400に対する入力は
以下のとおりである。 bit_in222 pem_code部402への入力で、符号化期間に符
号化対象のビットを表す。 data_in221 unpack部405への入力で、符号化データ(復号
化期間のビットストリーム)を表す。一実施例ではデー
タは1バイトずつ入力されるが、これ以外のサイズでデ
ータ入力をしてもよい。 context211 文脈ビン(文脈メモリのアドレス)で、pem_cod
e部402に入力される。 clock410 システムクロックで、pem_code部402、pa
ck部404、bit_generate部403、u
npack部405に入力される。一実施例では、この
clock入力410はFSMコーダーのイネーブル信
号として利用される。 enable414 pem_code部402、bit_generate
部403、pack部404及びunpack部405
に受け取られるように結合される制御指示(例えば信号
(信号群))で、現クロックサイクルでの1ビットの符
号化又は復号化を有効にする。 encode415 符号化又は復号化を選択する制御指示(例えば信号(信
号群))。 flush413 符号化の最後でのフラッシングを有効にする制御指示
(例えば信号(信号群))。flush信号413はb
it_generate部403の内容を強制出力させ
る。フラッシングは符号化の最後に行われる操作で、c
odestream419へまだ出力されてない情報が
あれば、それが全て出力される。bit_genera
te部403がフラッシングを完了すると、pack部
404に対するbg_done_flush信号416
がアサートされる。bg_done_flush信号4
16及びflush信号413に応じて、pack部4
04はそれ自体のフラッシングをする。フラッシングを
完了すると、pack部404はdone_flush
信号424をアサートする。 reset411 pem_code部402、pack部404、bit
_generate部403及びunpack部405
の内部の全ての記憶要素(例えばフリップフロップ)に
対する非同期初期化指示(例えば信号(信号群))。r
eset411がデアサートされると、pem_cod
e部402内の文脈メモリなどの内部メモリはクリアさ
れる。
【0148】このFSMコーダー400の出力は次のと
おりである。 data_out229 符号化時の符号化データ(ビットストリーム)。一実施
例ではデータは1バイトずつ出力されるが、これ以外の
サイズでデータを出力してもよい。 data_out_ready423 現クロックサイクルのdata_out229が有効で
あることを示す制御指示(例えば信号(信号群))。 bit_out224 復号化されたビット。 reset_done421 リセットが完了したことを示す制御指示(例えば信号
(信号群))。一実施例では、reset_done4
21は、reset411をデアサートした後に全内部
メモリがクリアされたことを示す。 done_flush424 flush信号413をアサートした後にフラッシング
が完了したことを示す制御指示(例えば信号(信号
群))。
【0149】pem_expand部401は、con
text211に応じpem_code部402より出
力されるpstate214に応じて、pclass2
19を発生する。pem_expand部401は、M
PSが発生したときの次のPSTATEの指示すなわち
mps_pstate216と、LPSが発生したとき
の次のPSTATEの指示すなわちlps_pstat
e217も発生する(MPSを切り替える必要がある場
合)。mps_pstate216とlps_psta
te217は共に、PSTATEの更新が必要な時に用
いられるPSTATEを表す。pem_expand部
401は、MPSの(0から1へ、又は1から0への)
切り替えを指示するswitch指示218も発生す
る。
【0150】pem_expand部401は、upt
ate指示412によって、PSTATEの更新が必要
か否かの指示も行う。一実施例では、update指示
(例えば信号(信号群))412がアサートされると、
MPS値の如何にかかわらずPSTATEが更新され
る。他方、update指示412がアサートされない
(すなわち、真でない)場合、更新が行われるのは、符
号語を発生もしくは利用するときに、符号語のサイズが
0より大きいとき、又は出力のサイズが0未満であると
きのみである。出力のサイズは出力符号語のサイズによ
って表され、この出力符号語のサイズはbit_gen
erate部403より出るsize指示418によっ
て示される。
【0151】bit_generate部403は、p
class219に応じてビット生成を行い、また、符
号化対象のビットであるbit_in222がMPS
(例えば図6のMPS520)と同じであるか否かを指
示する。この比較はpem_code部402内で行わ
れるが、これについては図6で詳しく述べる(例えば、
コンパレータ512)。bit_in222がMPSと
同じならば、likely指示223がアサートされ
る。この場合、likely指示223は、符号化でき
る見込みがあることを示し、pem_code部402
に入力される。pem_code部402は、like
ly指示223に応じて、likely指示223が真
ならばbit_out224をMPSにし、likel
y指示223が真でなければ、その反対にする。
【0152】pem_code部402は、その入力信
号に基づいて、次のPSTATEであるpstate2
14を発生し、また、復号化時には復号化ビットをbi
t_out224として出力する。しかし、符号化時に
は、bit_out224は無視され、encode_
likely指示422がアサートされ、これはbit
_generate部403に受け取られる。復号化時
には、encode指示415はアサートされず、un
pack部405はデータバイトを可変長の符号語にア
ンパックする。この可変長符号語はcodestrea
m419としてbit_generate部403へ出
力される。また、unpack部405は、現在の入力
データであるdata_in221が消費されたことを
示すdata_in_next信号420を出力して、
次のデータビットを要求する。
【0153】codestream419及びpcla
ss219に応じて、bit_generate部40
3はcodeword417とsize指示418を発
生する。codeword417とsize指示418
に応じて、pack部404は可変長の符号語群を結合
しバイト群にする。
【0154】一実施例では、符号化と復号化を同一にす
るように文脈モデルを更新するためにbit_out信
号224が利用される。pack部404は、復号化時
には利用されない。これら各部については、より詳細に
後述する。図5に示した構成のVerilog記述例を
図22及び図23に示す。
【0155】[多重文脈確率推定]文脈メモリを内蔵し
多重文脈確率推定を行うpem_code部402の一
実施例のブロック図を図6に示す。
【0156】図6において、メモリイネーブル(mem
ory_enable)ロジック502は更新(upd
ata)指示412、size指示418及びイネーブ
ル(enable)指示414を受け取るように接続さ
れている。これらの入力に応じてmemory_ena
bleロジック502は出力を発生し、この出力はOR
ゲート505の一方の入力に結合される。リセット(r
eset)指示411はリセット(reset)カウン
タ503とリセット完了(reset_done)ロジ
ック504の入力に結合される。resetカウンタ5
03の出力は、reset_doneロジック504の
もう一つの入力と、MUX507の一方の入力に結合さ
れる。reset_doneロジック504の出力は、
MUX507,508,509及びORゲート505の
否定入力に結合される選択信号である。reset_d
oneロジック504の出力はまた、リセット完了(r
eset_done)指示421として送出される。O
Rゲート505の出力は文脈メモリ501の書き込みイ
ネーブル入力(WE)に結合される。
【0157】MUX507,508,509は2入力の
マルチプレクサである。MUX507の他方の入力は、
context211と結合されている。MUX508
は、初期PSTATEとMUX506の出力を受け取る
ように接続されている。一実施例では、初期PSTAT
Eは262である。これ以外の初期PSTATEを用い
ることもできる。初期PSTATEは適応化の高速化を
考慮して選ぶ。高速適応化に関する詳細は、「 Method
and Apparatus for Encoding and DecodingData」なる
発明の名称で1996年12月17日に出願され、本発
明の譲受法人に譲渡され、かつ、ここに援用されるとこ
ろの米国特許出願第08/768,237号を参照され
たい。
【0158】MUX506の各入力は、mps_pst
ate216とlps_pstate217を受け取る
ように接続され、それら入力の一方が、MUX506の
選択入力に結合されたlikely指示223に応じて
選択される。MUX509の各入力は、初期化値(例え
ば、一実施例では0)と、MPS更新(MPS_upd
ate)ロジック510の出力を受け取るように接続さ
れている。MPS_updateロジック510の各入
力は、likely指示223、switch指示21
8、及び文脈メモリ501から出力されるMPS520
を受け取るように接続されている。各MUX507,5
08,509の出力は文脈メモリ501の入力に接続さ
れている。
【0159】文脈メモリ501から出力されるMPS5
20は、コンパレータ511の一方の入力とコンパレー
タ512の一方の入力に結合される。コンパレータ51
1の他方の入力はlikely指示223であり、コン
パレータ512の他方の入力はbit_in222であ
る。煩雑化を避けるため示されていないが、クロック
(clock)410は全てのレジスタとカウンタに結
合されている。
【0160】reset指示411はresetカウン
タ503を0にクリアする。reset指示411がデ
アサートされた後、resetカウンタ503は文脈メ
モリ501の各文脈メモリロケーションのアドレスを生
成し、初期PSTATEと初期MPSが各文脈メモリロ
ケーションに書き込まれる。これら初期値の書き込み
は、reset_doneロジック504から出力され
るreset_done信号421に関連し、MUX5
07,508,509を利用して行われる。reset
_done信号421は、MUX507,508,50
9の選択信号として働き、MUX507でresetカ
ウンタ503から出る文脈メモリアドレスを、MUX5
08で初期PSTATEを、MUX509で初期MPS
を、それぞれ選択する。一実施例では、初期PSTAT
E値の262と初期MPS値の0が文脈メモリ501の
メモリロケーションに書き込まれる。全てのメモリロケ
ーションの初期化後、reset_doneロジック5
04はreset_done信号421をアサートす
る。
【0161】符号化時には、文脈メモリ501は、その
書き込みイネーブル(WE)入力がアサートされた時に
書き込まれる。文脈メモリ501のWE入力は、ORゲ
ート505の出力が高電位の時にアサートされる。OR
ゲート505の出力が高電位になるのは、reset_
doneロジック504の出力が低電位の時、すなわち
リセットが完了した時、あるいは、memory_en
ableロジック502の出力が低電位の時である。
【0162】文脈メモリ501への書き込み時に、リセ
ット状態でなければ、context211による文脈
メモリアドレスがMUX507を介して、次の確率推定
状態がMUX508を介して、MPSがMUX509を
介して、それぞれ与えられる。MUX508の入力はM
UX506の出力であるが、この出力はmps_pst
ate216かlps_pstate217であり、そ
のいずれか一方がlikely指示223に基づいて選
ばれる。MPS_updateロジック510より与え
られるMPS値は、switch指示218がアサート
されていて、かつ、LPSが発生した場合にはMPS値
の補数である。
【0163】文脈メモリ501に書き込まれるデータ
は、likely指示223により選ばれたPSTAT
Eと、MPSであるが、このMPSはlikely指示
223が0でswitch指示218が1の時に変更さ
れる。一実施例では、MUX506は、likely指
示223が真ならばmps_pstate216を出力
し、そうでなければ、lps_pstate217を出
力する。MPS_updateロジック510の出力
は、switch指示218と、likely指示22
3を否定したものとのANDをとった結果を、MPSと
XORしたものである。
【0164】文脈メモリ501の出力はpstate2
14とMPS520である。符号化の場合、符号化対象
のビット(bit_in222)がコンパレータ512
によってMPS520と比較され、encode_li
kely指示422が生成される。一実施例では、en
code_likely指示422は、MPS520と
bit_in222とのXNORをとることによって生
成されるが、このMPS520は文脈メモリ501のエ
ントリーの1ビットで表される。なお、encode_
likely指示422をlikely指示223へフ
ィードバックするためのロジック(不図示)が用いられ
る。これについては後に詳しく述べる。復号化の場合、
likely指示223がコンパレータ511によって
MPS520と比較されることにより復号化ビット(b
it_out224)が生成される。一実施例では、b
it_out224は、MPS520とlikely指
示223のXNORをとることにより生成される。この
XNORをとることは、MPS520とlikely指
示223のマッチングをとることと等価である。
【0165】図6においては、メモリは一つだけ使用さ
れており、このメモリは一つの文脈に関する情報を出力
する。速度を上げるため、並列メモリを使用してもよ
い。既に復号化されたビットは次のビットのための文脈
をもたらすことが多い。このような文脈モデルへのフィ
ードバックは、ここではビット−文脈遅延と呼ぶが、速
度を低下させることがある。速度を上げるための一つの
方法は、前ビットの両方の値のために使われる文脈ビン
に対応した複数のメモリ出力を用意することである。メ
モリアクセスを、前ビットの生成と並行して(パイプラ
イン化して)行ってもよい。その2つの文脈ビンのうち
の適切な文脈ビンを、前ビットが分かった時に選択すれ
ばよい。選択操作は一般にメモリアクセスよりずっと高
速である。複数の出力を持つ一つのメモリを使用しても
よいし、複数のメモリを使用してもよい。
【0166】メモリアクセスをパイプライン化した場
合、同じメモリロケーションが連続的に(すなわち、あ
る最少数の連続したクロックサイクル間に)2度アクセ
スされた時に古い情報を利用してはならない。あるメモ
リロケーションが読み出されたならば、そのメモリロケ
ーションは、更新値がメモリに書き戻されるまでは再び
読み出してはならない。後続の読み出しでは、メモリを
読み出すのではなく、既にメモりの外部にある値を使用
して処理を施さなければならない。図6に示した構成の
Verilog記述例を図24及び図25に示す。
【0167】[確率状態展開]図7は、pstate2
14を当該PSTATEを記述する情報に変換し、それ
を出力するpem_expand部401の一実施例の
ブロック図である。
【0168】図7において、確率状態展開(pem_e
xpand)部401は、確率クラス部(pclass
部)601、MPS確率状態部(mps_pstate
部)602、LPS確率状態部(lps_pstate
部)603、切り替え部(switch部)604及び
更新部(update部)605からなり、これら各部
はpstate214を受け取るように接続され、それ
に対応した出力を発生する。
【0169】pclass部601は、pstate2
14に応じてpclass219を発生する。一実施例
では、この確率推定値は4ビット値である。一実施例で
は、pstate214は0から268まで変化する
が、0から15までの範囲のpclassに変換され
る。この機能を遂行するためのコードの例を後に示す。
【0170】mps_pstate部602は(pst
ate214に応じて)mps_pstate216を
発生するが、このmps_pstate216は、MP
Sが発生し、かつ、PSTATEが更新されるときの次
のPSTATEである。一実施例では、mps_pst
ate216は9ビットからなる。一実施例では、mp
s_state216は、pstate214を、その
値に基づいた0から5までの整数だけ増加させたもの
か、11だけ減少させたものである。
【0171】lps_pstate部603は(pst
ate214に応じて)lps_pstate217を
発生するが、このlps_pstate217はLPS
が発生し、かつ、PSTATEが更新されるときの次の
PSTATEである。一実施例では、lps_psta
te217は9ビットからなる。一実施例では、lps
_pstate217は、pstate214を、その
値に基づいた整数1,3又は5だけ増加させたものか、
−1から1246までの範囲内のある整数だけ減少させ
たものである。
【0172】switch部604は、MPSを切り替
える必要があるときにswitch指示218をアサー
トする。一実施例では、pstate214が4以下の
とき、又は262に等しいときにswitch指示21
8がアサートされ、それ以外ではswitch指示21
8がデアサートされる。switch指示218は、発
生しそうもないビットが発生したときに、文脈メモリ5
01のような文脈メモリに格納されているMPSの変更
を指示する。一実施例では、switch指示218は
1本の信号である。
【0173】一実施例では、update部605は、
pstate214が214以下のときにupdate
指示412をアサートする。なお、214以下の確率状
態は、良好な確率推定のためにビット毎の更新が必要と
される低スキューの確率状態(50%付近)として扱わ
れる。214を越える確率状態は高スキューの確率状態
として扱われ、少数の確率状態を利用して良好な確率推
定を行うのにMPS毎の更新を必要としない。他の実施
例では、214以外の確率状態が使用され、その選定は
スキューと、確率推定がビット毎の更新を必要とするも
のであるか否かということに基づいてなされる。これは
特定データ向けに選定されることになろう。upsat
e指示412は、符号化データが全く生成/消費されな
いときでも文脈メモリの更新を指示する。一実施例で
は、update指示412は1本の信号である。確率
推定はビット毎に更新される。もう一つの実施例では、
確率推定は、ビットが出力(又は消費)される時に必ず
更新される。図7に示した構成のVerilog記述例
を図26乃至図29に示す。このVerilog記述
に、本発明の確率推定規則の一例が記述されている。
【0174】[ビット生成]図8は、符号化されていな
いビットと符号化されたビットとの間の変換を行うbi
t_generate部403の一実施例のブロック図
である。その機能の大部分は、ビット生成(bit_g
enerate)ロジック701によって遂行される。
【0175】図8において、bit_generate
ロジック701はlikely_in指示709、pc
lass219、encode指示(例えば信号(信号
群))415、codestream419、並びに、
レジスタ702,703,704の出力すなわちfsm
_state、スタート(start)値及びストップ
(stop)値を受け取るように接続されている。レジ
スタ702−704はそれぞれクロック410と結合さ
れている。
【0176】fsm_stateレジスタ702は、F
SMの内部状態である。一実施例では、fsm_sta
teレジスタ702は、6ビットのレジスタであり、r
eset411がアサートされた時に所定の状態に設定
される。一実施例では、この所定状態は0である。fs
m_stateレジスタ702は、enable指示4
14がアサートされている時にクロックサイクルで更新
される。
【0177】スタート(start)レジスタ703
は、codestream419に出力可能な最小の有
効値を保持している。一実施例では、startレジス
タ703は8ビットのレジスタである。startレジ
スタ703は、reset411がアサートされた時に
所定値に設定され、enable指示414がアサート
された時にクロックサイクルで更新される。一実施例で
は、前記所定値は0である。
【0178】ストップ(stop)レジスタ704は、
codestream419に出力可能な最大の有効値
を保持する。一実施例では、stopレジスタ704は
8ビットのレジスタである。stopレジスタ704
は、reset411がアサートされた時に所定値に設
定され、enable指示414がアサートされた時に
クロックサイクルで更新される。一実施例では、sto
pレジスタ704は、リセット時に11111111
(2進)に設定される。
【0179】これらの入力に応じて、bit_gene
rateロジック701はlikely_out指示7
20、sz指示710、cw指示711、次のストップ
値であるnext_stop値712、次のスタート値
であるnext_start値713及びnext_s
tate714を発生する。
【0180】sz指示710はMUX705の一方の入
力に結合されている。MUX705の他方の入力は、f
lush_sz指示(例えば信号(信号群))715と
結合されている。同様に、MUX706は一方の入力に
cw指示711を受け取り、他方の入力にフラッシュ
(fulsh)ロジック707からのflush_cw
716を受け取る。
【0181】一実施例では、bit_generate
部403は符号化の最後でフラッシングのための符号語
を生成する。フラッシュ(flush)信号413は、
MUX705,706の選択入力に結合されている。ビ
ット生成部すなわちbit_generate部403
がフラッシング中ではなく、したがってflush信号
413がアサートされていない時には、MUX705,
706はsz指示710をsize指示418として、
cw指示711をcodeword417として、それ
ぞれ出力する。他方、bit_generate部40
3がフラッシング中でflush信号413がアサート
されている時には、flush_cw指示716によっ
て表される所定の符号語がMUX706よりcodew
ord417として出力されるとともに、flush_
sz指示715により与えられたサイズ指示がsize
指示418として出力される。なお、bit_gene
rateロジック701とflushロジック707に
ついては、より詳細に後述する。
【0182】図9は、bit_generateロジッ
ク701の一実施例のブロック図である。図9におい
て、bit_generateロジック701は状態展
開部(state_expand部)801、コンパレ
ータ802、likelyロジック803、マルチプレ
クサ804及び符号語生成部(codeword_ge
nerate部)805から構成されている。stat
e_expand部801は、レジスタ702からのf
sm_stateとpclass219を受け取るよう
に接続されている。これらの入力に応じて、state
_expand部801は、第1優勢シンボル(fp
s)指示(例えば信号(信号群))821、split
8値822を、MPSが発生した時又はLPSが発生し
た時の次の確率状態とともに発生する。これらの次の確
率状態をそれぞれnext_state_mps81
0、next_state_lps811と呼ぶ。st
ate_expand部801の一実施例を、図10に
関連し、より詳しく説明する。
【0183】コンパレータ802は、split8値8
22とcodestream419を受け取るように接
続されており、それら入力に応じてtop_split
信号823を発生する。一実施例では、codestr
eam419がsplit8値822より大きいときに
top_split信号823はアサートされる(例え
ば1になる)。codestream419がspli
t8値822より小さいときには、top_split
信号823はアサートされない(例えば0である)。
【0184】likelyロジック803は、like
ly_in指示(例えば信号(信号群))709、en
code指示415、top_split信号823、
及びfps指示821を受け取るように接続されてい
る。これら入力に応じて、likelyロジック803
は図3及び図4のbitロジックと同様に動作し、li
kely_out指示720を発生する。このleke
ly_out指示720は、likely指示223と
実質的に等しい。encode指示415が1のときに
は、likely_out指示720の出力はlike
ly_in指示709であるが、encode指示41
5が0のときには、likely_out指示720の
出力はfps信号821とtop_split信号82
3とのXORである。likely_out指示720
は、MUX804の選択入力並びにcodeword_
generate部805の入力に結合される。
【0185】MUX804は、next_state_
mps指示810とnext_state_lps指示
811を受け取るように接続されている。一実施例で
は、next_state指示714は、likely
_out指示720がアサートされたときにはnext
_state_mps指示810であり、そうでないと
きにはnext_state_lps指示811がne
xt_state指示714として出力される。
【0186】codeword_generate部8
05は、fps指示821、split8値822、レ
ジスタ703からのスタート値(start)、及びレ
ジスタ704からのストップ値を受け取るように接続さ
れている。これらの入力に応じて、codeword_
generate部805はsz指示710、cw(c
odeword)指示711、next_start値
713及びnext_stop値712を発生する。こ
の符号語生成ブロックすなわちcodeword_ge
nerate部805について、図14に関連し、より
詳しく説明する。
【0187】なお、state_expand部801
とcodeword_generate(cw_ge
n)部805は、ハードウェア・コストを減らすため、
ロジックを用いて図3のエントロピー符号化復号化テー
ブルと同様の出力を発生するのである。
【0188】[状態展開部]図10は、状態展開部(s
tate_expand部)801の一実施例のブロッ
ク図である。state_expand部801は、多
段階ルックアップを利用することにより、冗長なLUT
エントリーを除去してハードウェア・コストを減らす。
【0189】図10において、pclass219はマ
スク生成(mask_generate)部901の入
力に結合されている。mask_generate部9
01の出力はANDゲート903の一方の入力に接続さ
れている。レジスタ702からのfsm_state
は、advance部902の一方の入力、次状態MP
S部(next_state_mps部)905、次状
態LPS部(next_state_lps部)90
6、第1優勢シンボル部(fps部)907、分割部
(split部)908の一方の入力に結合されてい
る。advance部902の出力は、ANDゲート9
03の他方の入力に結合されている。ANDゲート90
3の出力は、bits_on部904に接続されてい
る。bits_on部904の出力は、next_st
ate_mps部905、next_state_lp
s部906、fps部907、及び、split部90
8の他方の入力に結合されている。
【0190】これら入力に応じて、next_stat
e_mps部905はnext_state_mps8
10を発生し、next_state_lps部906
はnext_state_lps811を発生し、ま
た、fps部はfps信号821を発生する。また、s
plit部908は、その入力に応じて、split8
値822を発生する。split部908にsplit
5部909が含まれている。このsplit5部909
は、split部908の入力を受け取るように接続さ
れており、この入力に応じて分割値のsplit5信号
911を発生する。split5信号911はspli
t5_to_split8部910の入力に結合され、
このsplit5_to_split8部910は分割
値のsplit8値822を発生する。
【0191】LUTの第1段階は、advance部9
02によって行われる。一実施例では、advance
部902は、各FSM(エントロピーコーダー)状態に
つき1エントリーを有し、レジスタ702からのFSM
状態を受け取って、そのエントリーを出力する。一実施
例では、advance部902は図30に示すadv
ance.hex表のような61エントリーを有する
(左から右への順)。
【0192】一実施例では、各エントリーは15ビット
の16進数値である。各ビット位置がPCLASS 1
からPCLASS 15に対応する(PCLASS 0に
対応するビットはない)。あるビットは、あるPCLA
SSが前のPCLASSと同じものに符号化されるか異
なったものに符号化されるかを示す(すなわち、そのL
UT情報が連続したPCLASSで同じであるか異なる
かを示す)。例えば、状態0は、7ECD(16進)す
なわち1111110(2進)というエントリーを有す
る。右側(LSB)から数えて、ビット位置2,5,6
及び9に0がある。これは、PCLASS 2がPCL
ASS 1と同じであることを意味する。同様に、PC
LASS 4,PCLASS 5及びPCLASS 6が
同じであり、また、PCLASS 8とPCLASS 9
が同じである。1つの状態だけは全てのPCLASSに
わたって同一である(advance=0000(16
進))が、それ以外の状態は少数の異なったPCLAS
Sがある。多数のPCLASSでLUT情報が同じ場合
には、next_state_mps部905、nex
t_state_lps部906、fps部907及び
split部909を実現するためのロジックを縮減で
きる。
【0193】mask__generate部901
は、pclass219に応じたマスクを発生する。一
実施例では、このマスクは、PCLASS 0に対して
は000000000000000(2進)、PCLA
SS 1に対しては000000000000001
(2進)、PCLASS 2に対しては0000000
00000011(2進)、等々である。このマスク
は、ANDゲート903によって、advance部9
02の出力とANDをとられる。
【0194】bits_on部904は、ANDゲート
903から出力される1のビットを合計し、sel値9
12を発生する。sel値912は第2段階のLUTの
ためのインデックスとして利用される。
【0195】next_state_mps部905、
next_state_lps部906及びfps部9
07は、その対応値のルックアップを行う。
【0196】一実施例では、next_state_m
ps部905は、図31に示すnext_m.hex表
の如きエントリー(16進表示)を持つLUTを含んで
いる。next_m.hex表の各行は1つのFSM状
態(FSM状態0から始まる)に対応している。なお、
同表の第2列は第1列の後に続くものである。
【0197】これら61の状態のそれぞれについて、s
el値912のとり得る最大8つの値としての8エント
リーがある。ある状態に対し発生するsel値912の
値が8つより少ない場合(多くのPCLASSで同じ情
報を使うため)、「何でも構わない」値は「xx」で示
されている。状態0に対し発生するsel値の値は8つ
より多く、次のMPS状態のための最初の8エントリー
は上記表に示されているが、残りのエントリーはそれぞ
れ6、10、1B、38(16進)である。
【0198】next_state_lps部906の
一実施例は、図32に示すnext_l.hex表の如
きエントリー(16進表示)を有するLUTを含んでい
る。このnext_l.hex表の各行は1つのFSM
状態に対応する。また、その第2列は第1列の後に続く
ものである。
【0199】これら61状態のそれぞれについて、se
l値912のとり得る最大8つの値としての8エントリ
ーがある。ある状態に対して発生するsel値912の
値が8つより少ない場合、「何でも構わない」値は「x
x」で示されている。状態0に対して発生するsel値
の値は8つより多く、次のMPS状態のための最初の8
エントリーは上記表に示されているが、残りのエントリ
ーは全て0である。
【0200】一実施例では、fps部907は、図33
に示すfirst.hex表の如きエントリーを有する
LUTを含んでいる。first.hex表の第2列は
第1列の後に続くものである。前述のように、各行は1
つの異なったFSM状態に対応する。
【0201】これら61状態のそれぞれについて、se
l値912のとり得る最大8つの値としての8エントリ
ーがある。ある状態に対して発生するsel値912の
値が8つより少ない場合、「何でも構わない」値は「x
x」で示されている。状態0に対して発生するsel値
の値は8つより多く、次のMPS状態のための最初の8
エントリーは上記表に示されており、残りのエントリー
は全て1である。
【0202】split5部909は、ルックアップを
行って5ビットの分割(split)インデックスを発
生し、このインデックスはsplit8_to_spl
it8部910によって拡張されて適切な8ビットの分
割(split)値、すなわちsplit8値822が
生成される。split5部909は、図34に示すs
plit.hex表の如き5ビットのエントリー(16
進表示)を有するLUTを含んでいる。このspli
t.hex表の第2列は、第1列に続くものである。
【0203】これら61状態のそれぞれについて、se
l値912のとり得る最大8つの値としての8エントリ
ーがある。ある状態に対して発生するsel値912の
値が8つより少ない場合、「何でも構わない」値は「x
x」で示されている。状態0に対して発生するsel値
912の値は8つより多く、次のMPS状態のための最
初の8エントリーは上記リストに示されているが、残り
のエントリーはそれぞれ1C,1D,1E及び1E(1
6進)である。
【0204】5ビットの分割インデックスは、spli
t8_to_split8部910により8ビットのs
plit値に変換される。split5_to_spl
it8部910は、図35に示すsplit58.he
xリストの如きLUT(そのエントリーは16進表示)
を用いる。例えば、状態が0、sel値が0の場合、最
初の分割インデックスは05(16進)であり、これは
80(16進)なる値に対応する。05(16進)値
は、前記の図34のsplit.hex表の左上の値に
見られる。値80(16進)は図35のsplit5
8.hexリストの05(16進)位置(すなわち、こ
のリストの先頭から6番目の位置、ただし「xx」は0
0(16進)位置)より得られる。
【0205】next_state_mps部905、
next_state_lps部906、fps部90
7、及びsplit5部909を実現する場合に、レジ
スタ702からのfsm_stateとsel値912
が共に動作開始時に有効であると仮定してもよい。この
場合、各部は単一の出力を発生する。そうではなく、各
部で2段階の手順を使えば、速度を上げることができ
る。まず、fsm_stateを用いて、sel値91
2のとり得る全ての値に対する出力を決定する。次に、
sel値912を利用し、その正しいと見込まれる出力
を選択して出力に出す。fsm_stateはsel値
912より先に有効になるため、このようにすれば高速
化が可能である。
【0206】以下の例によって、FSMコーダーの一実
施例の動作を説明する。図36乃至図38に結果をまと
めて示す。まず、コーダーは、全ての文脈に対しPST
ATE 262で始動し、その際、PCLASS=0、
MPS=0、FSM状態=0である。FSMコーダーの
入力に文脈6と入力ビット0が与えられる。(この例に
おける文脈とビットは任意に選んだものである) PC
LASS 0は、sel値912が0であることを意味
する。sel値912が0、FSM状態が0の場合、5
ビットの分割(split)インデックス値が得られ
る。なお、この値は図34のsplit.hex表から
得られる。この表の各行は一つのFSM状態に対応する
(最初の行がFSM状態0に対応)。図35のspli
t58.hexリストを用い、この5ビットの分割イン
デックスは分割(split)値、80(16進)に変
換される。したがって、0からFFまでの区間が80
(16進)で分割される結果、一方の区間は0から7F
までとされ、もう一方の区間は80FからFFまでとさ
れる。fps信号は、0〜FFの区間と80〜FFの区
間のどちらをMPSの発生に関連付けるか指示する。ど
ちらをMPSに関連付けるか判定するため、fps信号
が評価される。この場合、fps信号は0である。その
判定のために図33のfirst.hex表を参照して
0のFSM状態に対応した第1行を調べ、同表の第1行
と0のsel値912、すなわち当該行の第1ビットの
第1ビット位置を選択させる。この場合、fps信号は
0であるので、MPSは上側の区間80〜FFと関連付
けられる。この入力ビットは可能性の高い状態である
(すなわち、入力ビットはMPSと同じである)ので、
80からFFまでの区間が評価される。この区間の上限
FFと下限80の最上位ビットを比較すると、最初のビ
ットはいずれの場合も1である。よって、1のビットが
出力される。
【0207】pstateが214以上であり、かつ出
力があるので、PSTATEが更新される。更新結果は
表の現在内容に基づいて決まり、状態263へ更新され
る。FSM状態については、図31のnext_m.h
ex表の第1行(FSM状態=0)の第1位置(sel
値912=0)に00(16進)があるから、FSM状
態0のままである。
【0208】次に、区間から出力されずに残っているビ
ットをシフトすることにより、区間が変更され新しい区
間が作られる。例えば、符号語出力の結果、出力されな
かった下側区間端点を表すビット全部が左へシフトさ
れ、また、最下位ビットに0のビットがシフト入力され
る。最初の0のビットが出力済みで7つの0のビットが
残っているから、この下位7ビット全部が左へ1ビット
位置だけシフトされ、また、0がLSBに加えられる。
同様に、区間の上側端点7Fに関して、残っているビッ
ト1111111が全て左へ1ビット位置だけシフトさ
れ、また、別の1のビットが区間の最下位ビットに加え
られる。その結果、00からFFまでの新しい区間が得
られる(状態0は、その区間が00からFFまでである
ことを意味する)。
【0209】次に入力される文脈とビットはそれぞれ6
と0であり、PSTATEは263である。PSTAT
Eが263ということは、PCLASSが2であること
に相当する。PCLASSが2であることに対応して、
mask_generate部901はマスク値000
000000000011を出力する。FSM状態が0
であることに対応して、advance部902はFS
M状態0に対応するエントリーの7ECD(16進)す
なわち111111011001101(2進)を出力
する。mask_generate部901の出力とa
dvance部902の出力とのANDをとった結果
は、000000000000001である。この値に
対し、bits_on部904は、1というsel値9
12を発生する。このように、FSM状態が0、sel
値912が1であると、図34のsplit.hex表
からsplitインデックス0Cが得られる。このsp
litインデックスは8ビットの分割(split)値
A0に対応する。したがって、2つの区間は、00から
9Fまでの区間とA0からFFまでの区間となる。
【0210】FSM状態が0、sel値912が1であ
るので、図33のfirst.hex表の第1行の第2
位置によってfps信号821が1であることが分か
る。fps信号821が1であるので、優勢なケースに
関連付けられる区間は00からBFまでの区間である。
この区間が評価対象に選ばれるのは、入力ビットがMP
Sと同じである(つまり優勢状態である)からである。
この区間の始端(00)の最上位ビットは終端(A0)
の最上位ビットと一致しないので、出力されるビットが
なく、システムは、図31のnext_m.hex表に
よって示される新たなFSM状態(行0(FSM状態=
0)の第2位置(sel値912=1)に示される状態
3)へ遷移するが、PSTATEはそのままである。な
お、ビットが出力されないため、区間端点へのビットの
シフト入力は行われない。
【0211】次の入力は、6という文脈ビットと、0の
入力ビットである。これら入力に基づいて、60(16
進)というsplit値が発生する。このsplit値
が前に選択された00からBFまでの区間に適用され
る。したがって、00から9Fまでの区間は、00から
5Fまでと、60から9Fまでとに分割される。fps
信号は、0から5Fまでの第1区間の第1部分が優勢な
区間であることを指示する。入力ビットとしてMPSが
受け取られているので、この0から5Fまでの第1区間
が評価される。この場合、区間端点の0と5Fの第1ビ
ットは一致し、したがって出力される。このビットを出
力した後、区間値の残りのビットは左へシフトされ、下
側区間に0が加えられ(端点00を生成する)、また、
上側区間に1が加えられ(端点BFを生成する)、かく
して、新たな区間は0からBFまでの区間となる。
【0212】このような入力データの処理は図36乃至
図38に示すように継続する。しかし、文脈が6で入力
ビットが1の時に、興味深い事例が生じる。この場合、
区間は0からC7までの範囲で、split値はC0
(図35のsplit58.hex表より)である。f
ps信号に基づいて、優勢区間はC0からC7までとな
る。この場合、この区間の始端と終端の上位5ビット1
1000(2進)は一致し、出力されることになろう。
この5ビットの出力後、スタート区間とストップ区間の
残りビットが左にシフトされ、その際に下側区間の下位
ビットに0が充填され、また上側区間の下位ビットに1
が充填される。その結果、0からFFまでの新たな区間
が得られる。
【0213】fps値とsplit値を用いる符号化器
の実施例を説明したが、符号化器を同様の指示を利用し
てソフトウェアにより実装することもできる。ハードウ
ェアでは、fps信号とのXOR演算の実行はかなり容
易であるが、ソフトウェアによる場合、コンピュータの
アーキテクチャによっては面倒な点がある。それは、あ
る数がもう一つの数以上であるか否かの判定の結果が、
アクセスの容易でないステータスビットにセットされる
ためである。あるビットとステータスビットとのXOR
をとる操作すなわち比較操作をするには、ステータスビ
ットが1か0かで異なったロケーションに分岐する分岐
操作を行ってから、ステータスビット表示を表す1又は
0が格納されている各ロケーションのレジスタをアクセ
スしなければならない。そのようなソフトウェアの擬似
コードの一例を図39に示すが、これは非常に効率のわ
るい実装である。
【0214】ソフトウェアでは、これらの面倒を解決す
るため、fpsが0の場合用と1の場合用の2つのsp
lit値を生成してもよい。1のfps信号が発生する
割合が非常に高いため、XOR演算結果を求めるのに比
較を1回行うだけでよいだろう(ハードウェアによる実
装では2回の比較が必要)。しかし、その1回の比較で
必要な結果が得られない場合には、別に2回の比較が必
要になり(比較演算の回数がハードウェアでの2回より
多い)、入力とMPSとの間の最終比較を行って、それ
らが一致するか(優勢であるか)判定する。このような
ソフトウェアの擬似コードの一例を図40に示す。ただ
し、2つの分割値(split値)、すなわちfps指
示=1用のsplit値(split8_fps1)
と、fps指示=0用のsplit値(split8_
fps0)を用いている。
【0215】[フラッシング]フラッシュ(flus
h)ロジック707については、いくつかの構成が可能
である。図12は、0111(2進)なる値を用いて1
サイクルでフラッシングするためのflushロジック
707の一実施例のブロック図である。あるいは、もっ
と長い値、例えば10000000(2進)を用いるこ
とも可能である。図12において、遅延素子1101が
flush信号413を受け取ってdone_flus
h指示416を出力するように接続されている。一実施
例では、フラッシングに1サイクルかかる。また、この
場合、flush_sz指示715は4に設定され、f
lush_cw指示716は4ビットの0111に設定
される。また、startレジスタ703からのスター
ト値とstopレジスタ704からのストップ値は利用
されない。
【0216】最小のビット数でフラッシングするため
に、図13に示すように、スタート値及びストップ値に
よりフラッシングに用いられる符号語を決定してもよ
い。図13において、generate_codewo
rd_for_flush部1201が、レジスタ70
3から出力されるスタート値と、レジスタ704から出
力されるストップ値とを受け取るように接続されてい
る。これら出力に応じて、generate_code
word_for_flush部1201は、flus
h_sz指示715とflush_cw指示716を出
力する。また、遅延要素1202が、flush信号4
13を受け取ってdone_flush指示416を出
力するように接続されている。generate_co
deword_for_flush部1201の動作
は、図41に示す擬似コードのとおりである。
【0217】もう一つの実施例では、8ビットをPCL
ASS 0で符号化することによってフラッシングが行
われる。そのためにFSMコーダー内に何もロジックを
設ける必要がない。文脈モデル/確率推定/システムの
制御部がフラッシングを遂行する。図9、図10及び図
11に示した構成のためのVerilog記述例を図4
2乃至図45に示す。
【0218】[1のビットの個数測定]図10のbit
s_on部904は、加算器のツリーを用いて1のビッ
トの個数を求める。そのVerilog記述例を図46
に示す。
【0219】[符号語生成]図14は、ビット生成(b
it_generate)ロジック701の符号語生成
部すなわちgenerate_codeword(cw
_gen)部805の一実施例のブロック図である。前
述のように、generate_codeword部8
05は、符号語を生成するが、この機能をLUTによる
のではなくロジックによって遂行することによりハード
ウェアを節減する。
【0220】図14において、generate_co
deword部805はMUX1301を有し、このM
UX1301はstartレジスタ703から出力され
るスタート値とsplit8値822を受け取るように
接続されている。減算器1309は、split8値8
22から1を引き算する。MUX1302は、その第1
の入力で減算器1309の出力を受け取り、その第2の
入力でstopレジスタ704から出力されるストップ
値を受け取るように接続されている。MUX1301,
1302の出力はコンパレータ1303より出力される
選択信号によって選択される。このコンパレータ130
3は、likely指示720とfps信号821を受
け取るように接続されており、その二つの入力が等しい
ときに選択信号をアサートすることによって、MUX1
301よりスタート値を出力させるように選択し、ま
た、split8値822から1を差し引いた値をMU
X1302より出力させるように選択する。
【0221】MUX1301の出力は、XORゲート1
304の一方の入力、符号語(codeword)シフ
タ1306及びスタート(start)シフタ1307
に接続されている。MUX1302の出力は、XORゲ
ート1304の他方の入力、及びストップ(stop)
シフタ1308の一方の入力に接続されている。XOR
ゲート1304の出力はプライオリティエンコーダ(p
riority encoder)1305の入力に接
続されている。このプライオリティエンコーダ1305
の出力が、generate_codeword部80
5より出力されるsz指示(例えば信号(信号群))7
10である。このsz指示710は、codeword
シフタ1306、startシフタ1307及びsto
pシフタ1308の他方の入力にも結合されている。c
odeword(cw)シフタ1306、startシ
フタ1307、stopシフタ1308の出力がそれぞ
れcw(codeword)指示711、次スタート値
(next_start値)713、及び次ストップ値
(next_stop値)712である。
【0222】スタート値とストップ値の間の現在の有効
区間は、split8値822によって指定される値で
分割される。コンパレータ1303は、likely_
out指示720とfps信号821との間の比較を行
い、新しい区間(新しいスタート値とストップ値)を作
成するためにスタート値かストップ値をsplit8値
822で指示される分割値によって置き換えるか判断す
る。一実施例では、ストップ値が置き換えられるときに
は、分割値から1を差し引いた値によって置き換えられ
る。新しいスタート値とストップ値がXORゲート13
04によって排他的OR(XOR)をとられることによ
り、一致するビットの位置が検出される。MSBから始
めて一致するビットの個数がプライオリティエンコーダ
1305により求められ、符号語のサイズ(sz指示7
10)として出力される。この符号語のサイズによりシ
フタ1306,1307,1308を制御する。新たな
スタート値とストップ値の一致ビットが、cwシフタ1
306によりcw指示711として出力される。一致し
ないビットは、startシフタ1307及びstop
シフタ1308により、next_start値713
及びnext_stop値712としてそれぞれ出力さ
れる。startシフタ1307は、区間の下側端点の
LBS(s)に0を充填する。stopシフタ1708
は区間の上側端点のLSB(s)に1を充填する。これ
を行うためにシフト操作とOR演算を必要とする実施例
もある(図47及び図48に示すVerilog記述例
を参照)。
【0223】なお、他の実施例では、これら三つのシフ
タの二つ又は全部を統合すしてもよい。また、cwシフ
タ1306で、新しいスタート値に代えて新しいストッ
プ値を入力として利用してもよい。図14に示した構成
のVerilog HD記述例を、図47及び図48に
示す。
【0224】図49に、61個のFSM状態を表す有効
なスタート値とストップ値のペアをまとめて示す。これ
らのスタート値とストップ値のペアだけが、ハードウェ
アの動作で生成される。
【0225】[ビットパッキング]図15は、コーダー
400のパック(pack)部404の一実施例のブロ
ック図である。pack部404は、符号化時に、可変
長の符号語群を結合してバイト群にする。クロック信号
とイネーブル信号は、煩雑さを避けるため図示されてい
ない。
【0226】図15において、codeword417
は、ORゲート1402の一方の入力に結合され、シフ
タ1401の出力とORがとられる。このOR演算の結
果はバッファレジスタ1403に格納される。バッファ
レジスタ(bbuf)1403は、ビット群を、それら
がバイトに組み立てられ出力されるまで保持する。一実
施例では、バッファレジスタ1403は16ビットのバ
ッファである。入力データを受け取った時に、バッファ
レジスタ1403内に現在入っているデータがシフタ1
401によりシフトされることにより、その新たなデー
タのための空きが作られ、そして、その新たなデータが
追加される。復号化動作の終わりでフラッシングをする
ため、バッファレジスタ1403に現在入っている任意
のデータが1バイトになるようシフトされる。バッファ
レジスタ1403の出力データはシフタ1405の入力
に与えられる。シフタ1405は、カウント(coun
t)レジスタ1406の値に従ってバッファレジスタ1
403の内容を桁揃えしてデータ出力data_out
229を発生する。例えば、バッファレジスタ1403
に9ビット(ビット8〜ビット0)があり、count
レジスタ1406のカウント値が9でビット8〜ビット
1を出力する場合、シフタ1405は、その8ビットを
data_out229のビット7〜ビット0に桁揃え
する。バッフアレジスタ1403のビット0は、次のバ
イトを出力できるようになるまで保持される。
【0227】別の方法として、シフタを二つ用いるので
はなく、シフタを一つだけ用いることもできる。この単
一のシフタは、バッファレジスタ1403に対する出力
データの桁揃えを行う。バッファレジスタ1403は、
1バイト出力されるたびに8ビットだけシフトできる二
つの8ビットレジスタとして構成される。そのような構
成の一例を図16に示す。
【0228】バッファレジスタ1403は、size指
示418及びenable指示414を受け取るように
接続されたイネーブル(enable)ロジック140
8の出力に応答してデータを格納する。enableロ
ジック1408が、そのイネーブル出力をアサートする
のは、enable指示414がアサートされていてs
ize指示418が0より大きい時である。enabl
eロジック1408のイネーブル出力は、ビットが送出
されたことを知らせるためにusedレジスタ1409
の入力に接続される。
【0229】バッファレジスタ1403の出力は、シフ
ト後のデータと結合するためシフタ1401へフィード
バックされる。
【0230】countレジスタ(bcnt)1406
は、バッファレジスタ1403内の出力待ちのビットを
常時把握している。countレジスタ1406は、入
力データのサイズから、data_in_ready信
号1428がアサートされているか否かによって決まる
特定の値を差し引いた値だけインクリメントされる。d
ata_in_ready信号1428がアサートされ
ているときには、countレジスタ1406のカウン
ト値は入力データのサイズから8を引いた値だけインク
リメントされるが、アサートされていないときには、カ
ウント値は入力データのサイズだけ(すなわち0を引い
た値)インクリメントされる。カウント(count)
ロジック1404(size指示418、data_o
ut_ready信号423のフィードバック、cou
ntレジスタ1406からのフィードバック、flus
hロジック1410の出力を受け取るように接続されて
いる)は、data_in_ready信号1428を
アサートする働きをする。一実施例では、countレ
ジスタ1406は4ビットのカウンタからなる。
【0231】readyロジック1407は、coun
tレジスタ1406の出力が8以上になったことを観測
した時にdata_out_ready信号423をア
サートする。このアサート時に、countロジック1
404はcountレジスタ1406のカウント値を8
だけデクリメントする。
【0232】フラッシュ(flush)ロジック141
0は、符号化の最後に、まだバッファされているデータ
をフラッシングするため、つまり全部出力させるために
利用される。一実施例では、flushロジック141
0は、flush信号413及びdone_flush
信号416に応じて、countロジック1404及び
シフタ1401をフラッシングさせる。flushロジ
ック416は、usedレジスタ1409の出力及びc
ountレジスタ1406の出力も受け取るように接続
されている。usedレジスタ(bused)1409
は、何かデータが入力された時に1に設定される。一実
施例では、usedレジスタ1409は1ビットのレジ
スタである。usedレジスタ1409は、データが入
力されていないためフラッシングが不要であることを指
示するものである。flushロジック1410がフラ
ッシング動作を実行するのは、flush信号413が
アサートされていて、countレジスタ1406の値
が0より大きく、かつ、usedレジスタ1409の値
が0より大きいときである。したがって、usedレジ
スタ1409がデータが入力されていないことを指示し
ているときには、flushロジック1410はフラッ
シングが済んでいる旨を指示する。フラッシングを行う
ために、data_out_ready信号423がア
サートされていないときにバッファレジスタ1403の
内容がシフタ1401によりMSBへ移動させられ、ま
た、countレジスタ1406の内容が、data_
out_ready信号423がアサートされているな
らば0に、アサートされていなければ8にそれぞれ設定
される。フラッシングは当該技術分野で周知である。
【0233】このようなフラッシングの完了後、flu
shロジック1410はdone_flush信号42
4をアサートする。つまり、flush信号413がア
サートされていて、countレジスタ1406の値が
0であるかusedレジスタ1409の値が0であると
きに、done_flush信号424がアサートされ
る。
【0234】FSMコーダーがリセットされるときに、
バッファレジスタ1403、countレジスタ140
6及びusedレジスタ1409は初期化される。一実
施例では、これらレジスタは0に初期化される。図15
に示した構成のVerilog記述例を図50及び図5
1に示す。
【0235】[ビット・アンパッキング]図17は、復
号化時に、復号化データストリームのバイトの可変長シ
フトを行って可変長符号語にするアンパック(unpa
ck)部405の一実施例のブロック図である。clo
ck410、reset信号411及びenable信
号414は、煩雑化を避けるため図示されていない。
【0236】図17において、data_in221は
バッファレジスタ1501及びシフタ1504の入力に
結合されている。バッファレジスタ(ubuf)150
1は、先行の符号化データをあるビット数だけ保持す
る。一実施例では、バッファレジスタ1501は8ビッ
トのレジスタであり、先行の8ビット分の符号化データ
を保持する。
【0237】バッファレジスタ1501の出力はシフタ
1502の入力に接続され、このシフタ1502は、c
ountレジスタ1506の出力に応じて、データをO
Rゲート1503の一方の入力へシフトする。ORゲー
ト1503の他方の入力はシフタ1504の出力と接続
され、このシフタ1504はdata_in221を、
countレジスタ1506より出力されるcount
1509に応じてシフトする。ORゲート1503の出
力がdata_out1520であるが、これはcod
estream419である。
【0238】countレジスタ1506は、coun
tロジック1505の出力に応じてcount1509
を出力する。countロジック1505は、coun
tレジスタ1506からフィードバックされるcoun
t1509、size指示418及びコンパレータ15
07の出力に応じて、出力を発生する。コンパレータ1
507の他方の入力はcount1509と結合され
る。コンパレータ1507の出力、すなわちwnext
信号1510はnextレジスタ1508の入力に結合
される。nextレジスタ1508の出力がnext_
byte信号(=data_in_next信号)42
0である。
【0239】countレジスタ(ucnt)1506
は、復号化器によって消費されなかったバッファレジス
タ1501内のビットの数を保持する。countレジ
スタ1506は、size指示418により指示され
た、復号化器により消費された符号語のサイズだけ、c
ountロジック1505を介しデクリメントされる。
countレジスタ1506の値が現在要求されている
符号語のサイズ以下である時に、data_in221
がバッファレジスタ1501に格納され、countレ
ジスタ1506が8だけインクリメントされ、またwn
ext信号1510がアサートされる。
【0240】count1509(countレジスタ
1506)に等しいビット数だけバッファレジスタ15
01より取り込み、かつ、8からcount1509に
等しいビット数を差し引いたビット数だけdata_i
n221より取り込むことによって、正しく整列された
コードストリームdata_out1520が生成され
る。
【0241】コンパレータ1507は、count15
09がsize指示418以下であるか判定するコンパ
レータである。count1509がsize指示41
8以下ならば、wnext信号1510がアサートされ
る。wnext信号1510がアサートされると、ne
xtレジスタ(next)1508はnext_byt
e指示420を発生し、符号化データストリームの次の
バイトをdata_in221に与えるよう指示する。
一実施例では、nextレジスタ1508は1ビットの
レジスタである。すなわち、2バイトのうちの最初の1
バイトが消費された時に、next_byte指示42
0がdata_in221の次バイトを入力するよう指
示する。
【0242】FSMコーダーがリセットされると、バッ
ファレジスタ1501、countレジスタ1506、
nextレジスタ1508はすべて初期化される。一実
施例では、これらレジスタはすべて0に初期化される。
なお、これらレジスタ1501,1506,1508を
他の種類の記憶装置としてもよい。図17に示した構成
のVerilog記述例を図52及び図53に示す。
【0243】[FSMコーダーの制御]図18は、符号
化のための制御フローチャートである。図19は復号化
のための対応フローチャートである。この制御はハード
ウェア、ソフトウェア、又は、それらの組合せによる処
理ロジックによって遂行される。一実施例では、処理ロ
ジックは命令を実行する1つ以上のプロセッサを持つコ
ンピュータからなる。
【0244】図18において、符号化用制御フローチャ
ートの最初で、処理ロジックはリセットを行う(処理ブ
ロック1601)。リセットを行ってから、処理ロジッ
クは、符号化のためのビットと文脈が用意できているか
調べる(処理ブロック1602)。符号化のためのビッ
トと文脈が用意できていないならば、処理ロジックは処
理ブロック1603に進み、enable指示(例えば
信号(群))をアサートしないで処理ブロック1602
の最初に処理を戻す。ビットと文脈が用意されたなら
ば、処理ブロック1604へ進み、処理ロジックはその
ビットを符号化するためenable指示をアサートす
る。
【0245】enable指示をアサートした後、処理
ロジックはデータ出力の用意ができているか調べる(処
理ブロック1605)。データ出力の用意ができたなら
ば、処理ロジックは処理ブロック1606でその出力デ
ータを処理し、そして処理ブロック1607に進む。上
記処理は、例えば、データを記憶装置や、通信路、ディ
スプレイ、処理部、データを利用するその他のものへ転
送することなどである。処理ロジックはデータを出力す
る準備ができていないと判断したときには、処理ブロッ
ク1607に進み、符号化するデータがまだあるか調べ
る。符号化するデータがまだあるならば、処理ブロック
1602に戻るが、そうでなければ処理ブロック160
8に進む。
【0246】処理ブロック1608で、処理ロジックは
flush指示(例えば信号(群))をアサートする。
その後、処理ロジックはデータを出力できるか調べる
(処理ブロック1609)。データを出力できるなら
ば、処理ロジックは処理ブロック1610に進み、出力
データを処理し、そして処理ブロック1611に進む。
データを出力できる状態でないときにも同様に、処理ブ
ロック1611に進む。処理ブロック1611におい
て、処理ロジックはフラッシングが済んだか調べる。フ
ラッシングがまだ完了していないならば、処理ロジック
は処理ブロック1608に戻る。フラッシングが完了し
たならば、符号化用制御フローは終了する。
【0247】図19を参照する。復号化用制御フローは
処理ブロック1701より始まり、処理ロジックはFS
Mコーダーをリセットする。FSMコーダーをリセット
した後、処理ロジックは、文脈の用意ができていて、か
つコーダーが復号化準備ができているか調べる(処理ブ
ロック1702)。同期システムは常に準備が整ってい
るが、非同期システムは数ビットの復号化データを要求
し、かつ/又は、符号化データの入力を待つ。文脈の用
意ができていないか、コーダーが復号化の準備ができて
いないときには、処理ブロック1703に進み、処理ロ
ジックはenable指示をアサートせずに処理ブロッ
ク1702の最初に戻る。他方、文脈の用意ができ、か
つ、復号化器の復号化準備が整ったならば、処理ブロッ
ク1704に進み、処理ロジックはenable指示を
アサートして、そのビットの復号化を開始させる。en
able指示をアサートした後、処理ロジックは出力ビ
ットを処理する(処理ブロック1705)。この処理
は、例えば、復号化データを、それを利用する記憶装
置、処理装置などへ転送することなどである。出力ビッ
トを処理した後、処理ロジックはさらに符号化データが
必要か調べる(処理ブロック1706)。さらに符号化
データが必要ならば、処理ロジックは、さらに符号化デ
ータを復号化器に供給し(処理ブロック1707)、そ
して処理ブロック1708に進む。他方、もう符号化デ
ータが必要でなければ、直ちに処理ブロック1708に
進む。処理ブロック1708において、処理ロジックは
復号化するデータがまだあるか調べる。復号化するデー
タが残っているときには、処理ロジックは処理ブロック
1702に戻る。復号化するデータがもうなければ、復
号化用制御フローは終了する。
【0248】以上の動作を詳細に表すVerilog記
述例を図54乃至図57に示す。なお、このVeril
og記述には、シミュレーションのための固有の初期化
も含まれている。
【0249】[並列処理とパイプライン処理]本発明
は、並列処理とパイプライン処理を用いて実施すること
もできる。そのいずれでも、最高クロック速度を上げ、
かつ、毎クロックサイクルに1ビットより多くの符号化
復号化が可能になる。しかしながら、フィードバックル
ープ内のロジック量のせいで、パイプライン処理及び並
列処理を行うことは難しい。次文脈より前の全てのビッ
トに対し、文脈メモリとFSM状態、並びにstart
レジスタとstopレジスタを更新しなければならな
い。復号化の場合、多くの文脈モデルが次文脈の前の復
号化済みビットを受け取って別のフィードバックループ
を作らなければならない。これらのフィードバックルー
プは、いくつかの操作をシーケンシャルに行う必要があ
るため、並列処理が難しくなる。
【0250】一実施例では、前述のハードウェアの設計
は1サイクルあたり1ビットを処理する。他の圧縮用途
では、画像の各画素毎に、多ビットを符号化しなければ
ならず、したがって多くのクロックサイクル数を要す
る。1画素あたりの実際のクロックサイクル数は、画像
の深さと内容によって左右される。1クロックサイクル
あたりの処理ビット数が1ビットより多いこと、かつ/
又は、クロックレートが画素クロックに比べ十分に高速
であることが望ましい。
【0251】本発明は、真の並列処理をするFSMコー
ダーを提供できる。例えば、2ビット(と関連した文
脈)を1サイクルで符号化できる。かかる場合、文脈モ
デルは2つの文脈を並列に生成する。ビットストリー
ム、文脈メモリとFSM状態、startレジスタとs
topレジスタは、あたかも2ビットが順に符号化され
るかのように更新される。ビット生成ロジックは、2つ
のPCLASSを処理するように変更するとよい。そう
するには、ハードウェアのかなりの複雑化を避けられな
いであろう。例えば、符号語生成部は、2つのspli
t値を処理して開始及び停止の両方を行い、また、最高
16ビットまでの符号語を生成する必要があろう。2ビ
ット以上の同時処理は、特殊ケースだけを処理するので
あれば単純化できるだろう。その特殊ケースが適用でき
ない場合には、通常の一度に1ビットの動作モードが用
いられることになろう。次にいくつか例を示す。
【0252】・1ビットを任意のPCLASSで符号化
し、かつ、1ビットをPCLAS0だけで符号化する。 ・2ビットを共にPCLASS 0で符号化する。 ・4ビットをすべてPCLASS 0で符号化する。 ・FSM状態 0で開始する時のみ、2ビットを任意の
PCLASSで符号化する。
【0253】真の並列処理のためのハードウェアコス
ト、又は、文脈モデルが文脈を並列に生成できないこと
により、真の並列処理の魅力が損なわれる恐れがある。
【0254】真の並列処理に代わる一方法は、符号化ビ
ットストリームの別個の部分を別個のFSMコーダーに
よって処理させる方法である。特に魅力的な選択肢は、
単一の物理FSMコーダーを、いつくかの独立した仮想
FSMコーダーとして動作するようにパイプライン化す
る方法である。パイプライン化の余地がなくなったなら
ば、それらFSMコーダー(又は、そのパイプライン化
できない部分)を並列動作できるように再構成してよ
い。ビットストリームを並列符号化する部分に分割する
方法はいろいろある。すなわち、 ・映像の場合、別々のフレームを並列に符号化できる。 ・画像をタイルに分割し、別々のタイルを並列に符号化
できる。 ・画像が複数の成分(RGB,CMYK,YUVなど)
を有する場合、別々の成分を並列に符号化できる。 ・一つのタイル又は成分中にFSMコーダーがリセット
される部分(ここではエントリーポイントと呼ぶ)が存
在することがある。別々のエントリーポイントから始ま
る符号化データ・セグメントを並列に符号化できる。ウ
ェーブレット係数の場合、図11に示すような特別な桁
揃えを用いると具合がよい。係数は同じサイズの4つの
グループに分割される(DS1,SD1,DD1の各帯
域はそれぞれ全係数の4分の1であるから)。(サイズ
が等しいということは係数の個数が等しいということで
あるが、各グループ内の総ビット数すなわちバイナリデ
シジョンの総数は異なることがある) レベル1以外の
レベルは、正規化型又はピラミッド型に桁揃えしてよ
い。並列符号化しか望まないのであれば、文脈を並列に
生成できる。並列に復号化するためには、まだ復号化さ
れていないデータを文脈モデルが要求することは許され
ない。図11の桁揃えの場合、レベル1の係数を親によ
って条件付けすることなく符号化する必要があろう。
【0255】高度な並列処理を実現するために、上に述
べたデータ分割方法のいくつかを同時に用いてもよい。
しかし残念ながら、これらの方法は全て高速化の自由度
をやや制限してしまう。単一タイル、単一成分で、(そ
のタイルの符号化データの先頭以外に)エントリーポイ
ントがない単一の画像は、並列に符号化できない。
【0256】FSMコーダーをパイプライン・ステージ
に分解可能な箇所はいくつかある。例えば ・文脈モデルとFSMコーダーの間 ・文脈モデルの後 ・確率状態展開の後 ・sel値の生成の後 ・状態展開の後 である。
【0257】複数の独立したFSMコーダーが用いられ
る場合、有効なウェーブレット・コードストリームを生
成するために符号化データの並べ替えが行われる。符号
化時に、各コーダーの出力は別々にバッファリングされ
る。それらのバッファリング内容は、符号化終了後にコ
ードストリームの適切な位置に出力される。復号化する
際には、各コーダーがコードストリームの別々の部分を
アクセスする。
【0258】以上の説明を読めば、当該技術分野の当業
者には本発明の多くの変更例や変形例が明白になろう。
よって、本発明は前述の各実施例のみに限定されるもの
ではない。
【0259】
【発明の効果】以上の説明から明らかなように、本発明
によれば、FSMを利用した高性能なする符号化方法及
び符号化装置を実現できる。ハードウェア、ソフトウエ
ア、又は、ハードウェアとソフトウェアの組合せによる
高性能なFSMコーダーを実現できる。FSMコーダー
のハードウェアコストを削減できる。FSMコーダーの
大部分を1つ又はそれ以上のルックアップテーブル(L
UT)を用いて実現できる。FSMコーダー・ベースの
高性能な圧縮/伸長システムを実現できる、等々の多く
の効果を得られる。
【図面の簡単な説明】
【図1】本発明の圧縮/伸長システムの一実施例のブロ
ック図である。
【図2】本発明の圧縮/伸長システムの他の実施例を示
すブロック図である。
【図3】統合型のFSM符号化/復号化テーブルを有
し、別々の確率推定テーブルとビット生成ルックアップ
テーブルを利用するFSMコーダーの一実施例のブロッ
ク図である。
【図4】単一のLUTで確率推定とビット生成を行うF
SMコーダーの一実施例を示すブロック図である。
【図5】本発明のFSMコーダーの一実施例のブロック
図である。
【図6】多重文脈確率推定部の一実施例のブロック図で
ある。
【図7】確率状態展開部の一実施例のブロック図であ
る。
【図8】ビット生成部の一実施例のブロック図である。
【図9】ビット生成ロジックの一実施例を示すブロック
図である。
【図10】状態展開部の一実施例のブロック図である。
【図11】ウェーブレット係数の代表的な桁揃えを示
す。
【図12】1サイクルでフラッシングを行うためのフラ
ッシュ・ロジックの一実施例のブロック図である。
【図13】現在区間で決定された符号語を1サイクルで
フラッシングするためのフラッシュ・ロジックのブロッ
ク図を示す。
【図14】ビット生成ロジックの符号語生成部の一実施
例のブロック図である。
【図15】パック部の一実施例のブロック図である。
【図16】パック部の他の実施例を説明するためのブロ
ック図である。
【図17】アンパック部の一実施例のブロック図であ
る。
【図18】符号化のための制御フローチャートである。
【図19】復号化のための制御フローチャートである。
【図20】復号化時のlikely指示生成の真理値表
を示す図である。
【図21】様々なLUTのサイズをまとめて示す図であ
る。
【図22】図5に示した構成のVerilog記述例を
示す図である。
【図23】図22のVerilog記述の続きを示す図
である。
【図24】図6に示した構成のVerilog記述例を
示す図である。
【図25】図24のVerilog記述の続きを示す図
である。
【図26】図7に示した構成のVerilog記述例を
示す図である。
【図27】図26のVerilog記述の続きを示す図
である。
【図28】図27のVerilog記述の続きを示す図
である。
【図29】図28のVerilog記述の続きを示す図
である。
【図30】advance.hex表を示す図である。
【図31】next_m.hex表を示す図である。
【図32】next_l.hex表を示す図である。
【図33】first.hex表を示す図である。
【図34】split.hex表を示す図である。
【図35】split58.hexリストを示す図であ
る。
【図36】動作説明のためのデータ例を示す図である。
【図37】図36のデータ例の続きを示す図である。
【図38】図37のデータ例の続きを示す図である。
【図39】擬似コードを示す図である。
【図40】擬似コードを示す図である。
【図41】擬似コードを示す図である。
【図42】図9乃至図12に示した構成のVerilo
g記述例を示す図である。
【図43】図42のVerilog記述の続きを示す図
である。
【図44】図43のVerilog記述の続きを示す図
である。
【図45】図44のVerilog記述の続きを示す図
である。
【図46】1のビットの個数を求めるためのVeril
og記述例を示す図である。
【図47】図14に示した構成のVerilog記述例
を示す図である。
【図48】図47のVerilog記述の続きを示す図
である。
【図49】有効なスタート値とストップ値のペアを示す
図である。
【図50】図15に示した構成のVerilog記述例
を示す図である。
【図51】図50のVerilog記述の続きを示す図
である。
【図52】図17に示す構成のVerilog記述例を
示す図である。
【図53】図52のVerilog記述の続きを示す図
である。
【図54】図18及び図19に関連して説明した動作を
Verilog記述例を示す図である。
【図55】図54のVerilog記述の続きを示す図
である。
【図56】図55のVerilog記述の続きを示す図
である。
【図57】図56のVerilog記述の続きを示す図
である。
【符号の説明】
101 可逆ウェーブレット変換部 102 文脈モデル 103 FSMコーダー 104 ヘッダ処理部 112 文脈モデル 113 FSMコーダー 114 ヘッダ処理部 201 文脈メモリ 202 確率推定テーブル 203 マルチプレクサ(MUX) 204 ビット(bit)ロジック 205 確率推定ロジック 206 エントロピー符号化復号化テーブル 207 エントロピー符号化復号化状態ストレージ 208,209,210 マルチプレクサ(MUX) 301 統合型テーブル 401 確率状態展開部 402 多重文脈確率推定部 403 ビット生成部 404 パック部 405 アンパック部 501 文脈メモリ 502 メモリイネーブルロジック 503 リセットカウンタ 504 リセット完了ロジック 505 ORゲート 506〜509 マルチプレクサ(MUX) 510 MPS更新ロジック 511,512 コンパレータ 601 確率クラス部 602 MPS確率状態部 603 LPS確率状態部 604 切り替え部 605 更新部 701 ビット生成部 702,703,704 レジスタ 705,706 マルチプレクサ(MUX) 707 フラッシュロジック 801 状態展開部 802 コンパレータ 803 likelyロジック 804 マルチプレクサ(MUX) 805 符号語生成部 901 マスク生成部 903 ANDゲート 905 次状態MPS部 906 次状態LPS部 907 第1優勢シンボル部 908 分割部 1301,1302 マルチプレクサ(MUX) 1303 コンパレータ 1304 XORゲート 1305 プライオリティエンコーダ 1306 符号語シフタ 1307 スタートシフタ 1308 ストップシフタ 1309 減算器 1410 フラッシュロジック

Claims (81)

    【特許請求の範囲】
  1. 【請求項1】 有限状態マシン(以下、FSM)の状態
    に基づいて、端点を持つ一対の部分区間よりなる区間を
    生成するステップ、 入力ビットが優勢状態であるか否かに基づいて、前記一
    対の部分区間のうちの一方の部分区間を選択するステッ
    プ、及び前記一方の部分区間の端点間で一致するビット
    群の、その最上位のビットから、前記一方の部分区間の
    端点間で一致しない最初のビットまでに存在するビット
    (一致しない最初のビットは含まない)に対応した0個
    以上のビットを出力するステップからなることを特徴と
    する符号化方法。
  2. 【請求項2】 前記区間を生成するステップが、前記区
    間を前記一対の部分区間へ分割する値を選ぶステップを
    含むことを特徴とする請求項1記載の符号化方法。
  3. 【請求項3】 前記一対の部分区間のうちの第1の部分
    区間が優勢シンボルに関連付けられ、前記一対の部分区
    間のうちの第2の部分区間が劣勢シンボルに関連付けら
    れることを特徴とする請求項1記載の符号化方法。
  4. 【請求項4】 FSMの状態に基づいて、端点を有する
    一対の部分区間からなる区間を生成する手段、 入力ビットが優勢状態であるか否かに基づいて、前記一
    対の部分区間のうちの一方の部分区間を選択する手段、
    及び前記一方の部分区間の端点間で一致するビット群
    の、その最上位のビットから、前記一方の部分区間の端
    点間で一致しない最初のビットまでに存在するビット
    (一致しない最初のビットは含まない)に対応した0個
    以上のビットを出力する手段からなることを特徴とする
    符号化装置。
  5. 【請求項5】 前記区間を生成する手段が、前記区間を
    前記一対の部分区間へ分割する値を選ぶ手段を含むこと
    を特徴とする請求項4記載の符号化装置。
  6. 【請求項6】 前記一対の部分区間のうちの第1の部分
    区間が優勢シンボルに関連付けられ、前記一対の部分区
    間のうちの第2の部分区間が劣勢シンボルに関連付けら
    れることを特徴とする請求項4記載の符号化装置。
  7. 【請求項7】 FSMの状態に基づいて、端点を有する
    一対の部分区間からなる区間を生成する第1のロジック
    部、及び入力ビットが優勢状態であるか否かに基づいて
    前記一対の部分区間のうちの一方の部分区間を選択し、
    前記一方の部分区間の端点間で一致するビット群の、そ
    の最上位のビットから、前記一方の部分区間の端点間で
    一致しない最初のビットまでに存在するビット(一致し
    ない最初のビットは含まない)に対応した0個以上のビ
    ットを出力する第2のロジック部からなることを特徴と
    する符号化装置。
  8. 【請求項8】 前記第1ロジック部が、前記区間を前記
    一対の部分区間へ分割する値を選ぶことを特徴とする請
    求項7記載の符号化装置。
  9. 【請求項9】 前記一対の部分区間のうちの第1の部分
    区間が優勢シンボルに関連付けられ、前記一対の部分区
    間のうちの第2の部分区間が劣勢シンボルに関連付けら
    れることを特徴とする請求項7記載の符号化装置。
  10. 【請求項10】 前記一対の部分区間のいずれの部分区
    間が優勢シンボルに関連付けられるか指示するための指
    示情報が前記第2ロジック部へ与えられることを特徴と
    する請求項9記載の符号化装置。
  11. 【請求項11】 前記指示情報が信号からなることを特
    徴とする請求項10記載の符号化装置。
  12. 【請求項12】 複数のビットの各ビット毎に、それぞ
    れが一対の端点を持つ2つの部分区間を有する区間を指
    定するステップ、 前記各ビット毎に、前記2つの部分区間のどちらの部分
    区間が優勢シンボルに関連付けられているか、及び、前
    記各ビットが優勢シンボルと同一であるか否かに基づい
    て、前記区間の前記2つの部分区間のうちの一方の部分
    区間を選択するステップ、及び各区間毎に、前記選択さ
    れた一方の部分区間の一対の端点間で一致するビット群
    の、その最上位ビットから、前記一方の部分区間の端点
    間で一致しない最初のビットまでに存在するビット(一
    致しない最初のビットは含まない)に対応した0個以上
    のビットを出力するステップからなることを特徴とする
    複数ビットを符号化するための符号化方法。
  13. 【請求項13】 前記2つの部分区間のどちらの部分区
    間が優勢シンボルに関連付けられているかが、生成され
    た信号によって指示されることを特徴とする請求項12
    記載の符号化方法。
  14. 【請求項14】 前記各ビットを優勢シンボルの指示と
    比較するステップ、及び前記各ビットが前記優勢シンボ
    ル指示と一致したときに、符号化できる見込みがある旨
    の指示(以下、likely指示)をアサートするステ
    ップをさらに含むことを特徴とする請求項12記載の符
    号化方法。
  15. 【請求項15】 第1のテーブルより第1の分割インデ
    ックス値を取得するステップ、及び前記第1の分割イン
    デックス値を利用して第2のテーブルより第2の分割イ
    ンデックス値を取得するステップをさらに含むことを特
    徴とする請求項12記載の符号化方法。
  16. 【請求項16】 前記分割インデックス値がFSM状態
    及び第1の値に基づいて取得されることを特徴とする請
    求項15記載の符号化方法。
  17. 【請求項17】 確率クラスに基づいてマスクを生成す
    るステップ、 前記FSM状態に基づいてテーブルより第2の値を取得
    するステップ、 前記マスクと前記第2の値のANDをとって結果を生成
    するステップ、及び前記結果に基づいて前記第1の値を
    生成するステップをさらに含むことを特徴とする請求項
    16記載の複数ビットの符号化方法。
  18. 【請求項18】 前記第1の値を生成するステップが前
    記結果中の1をカウントしてカウント値を生成し、この
    カウント値が前記第1の値となることを特徴とする請求
    項17記載の符号化方法。
  19. 【請求項19】 一致しないビットを最上位ビット位置
    まで左シフトし、下位ビットに、部分区間の端点が下側
    端点ならば0のビットを、上側端点ならば1のビットを
    それぞれ充填するステップをさらに含むことを特徴とす
    る請求項12記載の符号化方法。
  20. 【請求項20】 文脈モデル、及び前記文脈モデルと結
    合され、前記文脈モデルより受け取ったビットを符号化
    するFSMコーダーからなり、 前記FSMコーダーが、複数のビットのうちの各ビット
    毎に、それぞれが一対の端点を持つ2つの部分区間を有
    する区間を指定し、入力ビットが優勢状態であるか否か
    に基づいて前記一対の部分区間のうちの一方の部分区間
    を選択し、前記一方の部分区間の端点間で一致するビッ
    ト群の、その最上位ビットから、前記一方の部分区間の
    端点間で一致しない最初のビットまでに存在するビット
    (一致しない最初のビットは含まない)に対応した0個
    以上のビットを出力することによってビットを符号化す
    ることを特徴とする圧縮/伸長システム。
  21. 【請求項21】 前記文脈モデルと結合された可逆ウェ
    ーブレット変換部をさらに含むことを特徴とする請求項
    20記載の圧縮/伸長システム。
  22. 【請求項22】 前記FSMコーダーと結合され、符号
    化データ及び信号を出力するヘッダ処理部をさらに含む
    ことを特徴とする請求項20記載の圧縮/伸長システ
    ム。
  23. 【請求項23】 前記FSMコーダーが、統合型のFS
    M符号化/復号化テーブルと、独立した確率推定ルック
    アップテーブル及びビット生成ルックアップテーブルを
    含むことを特徴とする請求項20記載の圧縮/伸長シス
    テム。
  24. 【請求項24】 前記FSMコーダーが、確率推定とビ
    ット生成の両方を行うための単一のルックアップテーブ
    ルを含むことを特徴とする請求項20記載の圧縮/伸長
    システム。
  25. 【請求項25】 前記FSMコーダーが、前記区間を前
    記一対の部分区間に分割する値を選択する第1のロジッ
    ク部を含むことを特徴とする請求項20記載の圧縮/伸
    長システム。
  26. 【請求項26】 前記一対の部分区間のうちの第1の部
    分区間が優勢シンボルに関連付けられ、前記一対の部分
    区間のうちの第2の部分区間が劣勢シンボルに関連付け
    られることを特徴とする請求項20記載の圧縮/伸長シ
    ステム。
  27. 【請求項27】 前記FSMコーダーが、前記一対の部
    分区間のどちらの部分区間が優勢シンボルに関連付けら
    れているか指示する指示情報を含むことを特徴とする請
    求項26記載の圧縮/伸長システム。
  28. 【請求項28】 前記指示情報が信号からなることを特
    徴とする請求項27記載の圧縮/伸長システム。
  29. 【請求項29】 前記FSMコーダーが、 多重文脈確率推定を行う第1の部分、 確率推定状態をその記述情報へ変換し、likely指
    示に応じて、符号化されていないビットを生成する変換
    部、 前記変換部より与えられる各確率推定値に応じて0個以
    上の符号語を生成し、かつ、符号化データストリームに
    応じて前記likely指示を生成するビット生成ルッ
    クアップテーブルを含む、符号化されていないビットと
    符号化されたビットの間の変換のためのビット生成部、
    及び前記ビット生成ルックアップテーブルより符号語を
    受け取るように接続され、符号化時に符号化データ出力
    を発生するため可変長の符号語を結合してバイト群にす
    るパック部からなることを特徴とする請求項20記載の
    圧縮/伸長システム。
  30. 【請求項30】 前記ビット生成LUTが冗長エントリ
    ーを含まないことを特徴とする請求項29記載の圧縮/
    伸長システム。
  31. 【請求項31】 前記符号化データストリームのバイト
    群の可変長シフト操作を行って可変長符号語にするアン
    パック部をさらに含むことを特徴とする請求項29記載
    の圧縮/伸長システム。
  32. 【請求項32】 確率状態に応じた確率クラスを生成す
    る確率クラス部、 優勢シンボル(以下、MPS)が発生して確率状態の更
    新が必要なときの次の確率推定状態を生成するMPS確
    率状態部、 劣勢シンボル(以下、LPS)が発生して確率状態の更
    新が必要なときの次の確率推定状態を生成するLPS確
    率状態部、 MPSを切り替える必要があるときに切り替え指示を発
    生する切り替え部、及び確率状態が第1の所定値以下の
    ときに更新指示を発生する更新部をさらに含むことを特
    徴とする請求項29記載の圧縮/伸長システム。
  33. 【請求項33】 前記MPS確率状態部が、現在の確率
    推定状態を、現在の確率状態の値に基づいたある値域内
    の整数だけインクリメント又はデクリメントすることに
    よって次の確率推定状態を生成することを特徴とする請
    求項32記載の圧縮/伸長システム。
  34. 【請求項34】 前記切り替え指示が信号からなること
    を特徴とする請求項32記載の圧縮/伸長システム。
  35. 【請求項35】 確率状態が第1の所定値以下であるか
    第2の所定値と等しいときに前記切り替え指示がアサー
    トされることを特徴とする請求項32記載の圧縮/伸長
    システム。
  36. 【請求項36】 前記更新指示が信号からなることを特
    徴とする請求項32記載の圧縮/伸長システム。
  37. 【請求項37】 前記ビット生成部が、符号化されてい
    ないビットと符号化されたビットとの間の変換を行うた
    めのビット生成ロジックからなることを特徴とする請求
    項29記載の圧縮/伸長システム。
  38. 【請求項38】 前記ビット生成ロジックが、前記符号
    語を与える第1の出力と、前記符号語のサイズを指示す
    る第2の出力を有することを特徴とする請求項37記載
    の圧縮/伸長システム。
  39. 【請求項39】 前記ビット生成ロジックが、前記区間
    を定義する次のスタート値及び次のストップ値を発生す
    ることを特徴とする請求項37記載の圧縮/伸長システ
    ム。
  40. 【請求項40】 前記ビット生成ロジックが発生した前
    記スタート値及び前記ストップ値を受け取るように接続
    されたスタートレジスタ及びストップレジスタをさらに
    含み、前記スタートレジスタ及び前記ストップレジスタ
    が前記ビット生成ロジックの入力にも接続されることを
    特徴とする請求項39記載の圧縮/伸長システム。
  41. 【請求項41】 前記ビット生成部が、符号化の終わり
    でフラッシングのための符号語を生成することを特徴と
    する請求項29記載の圧縮/伸長システム。
  42. 【請求項42】 前記ビット生成部が、そのフラッシン
    グのためのフラッシュ指示を通知されると、所定の符号
    語を出力するための符号語を生成するフラッシュロジッ
    クをさらに含むことを特徴とする請求項29記載の圧縮
    /伸長システム。
  43. 【請求項43】 前記フラッシュ指示がフラッシュ信号
    からなることを特徴とする請求項42記載の圧縮/伸長
    システム。
  44. 【請求項44】 符号化データを表す符号語及びフラッ
    シングのための所定の符号語を受け取るように接続され
    たマルチプレクサをさらに含み、該マルチプレクサがそ
    の入力の一つを前記ビット生成部の出力として選択する
    ため前記フラッシュ指示を受け取るように接続されるこ
    とを特徴とする請求項42記載の圧縮/伸長システム。
  45. 【請求項45】 確率推定値及びFSM状態に応じて、
    第1の分割値と、MPSが発生し確率推定状態の更新が
    必要な場合の次の確率推定状態と、LPSが発生し確率
    推定状態の更新が必要な場合の次の確率推定状態とを生
    成する状態展開部、 前記第1の分割値と入力コードストリームを比較して第
    2の分割値を出力するコンパレータ、 前記コンパレータ及び前記状態展開部と接続され、li
    kely指示を発生するlikelyロジック、 前記次の確率推定状態及び前記likely指示を受け
    取るように接続され、前記likely指示に基づいて
    前記次の確率推定状態の一方を出力するマルチプレク
    サ、及び前記第1の分割値、前記likely指示及び
    区間指示に応じて、符号語を生成する符号語生成部をさ
    らに含むことを特徴とする請求項29記載の圧縮/伸長
    システム。
  46. 【請求項46】 前記区間指示が、前記区間の始まりと
    終わりをそれぞれ示すスタート値とストップ値からなる
    ことを特徴とする請求項45記載の圧縮/伸長システ
    ム。
  47. 【請求項47】 前記状態展開部が、 確率推定値に応じたマスク値を発生する第1の部分、 前記FSM状態に応じた値を発生する第2の部分、 前記第1の部分の出力と前記第2の部分の出力の論理積
    演算を行うように接続されたゲートロジック、 前記ゲートロジックの出力を受け取り、該出力に応じた
    選択信号を発生するように接続された第3の部分、 前記選択信号及び前記FSM状態に応じて、MPSが発
    生して更新が必要な場合のための次の確率推定状態を生
    成する次状態MPS部、 前記選択信号及び前記FSM状態に応じて、LPSが発
    生して更新が必要な場合のための次の確率推定状態を生
    成する次状態LPS部、 前記選択信号及び前記FSM状態に応じて、どちらの部
    分区間がMPSの発生に関連付けられるかの指示を発生
    する第4の部分、及び前記選択信号及び前記FSM状態
    に応じて前記第2の分割値を生成する第5の部分からな
    ることを特徴とする請求項45記載の圧縮/伸長システ
    ム。
  48. 【請求項48】 多重文脈確率推定を行う第1の部分、 確率推定状態をその記述情報へ変換し、likely指
    示に応じて、符号化されていないビットを生成する変換
    部、 前記変換部より与えられる各確率推定値に応じて0個以
    上の符号語を生成し、かつ、符号化データストリームに
    応じて前記likely指示を生成するビット生成ルッ
    クアップテーブルを含む、符号化されていないビットと
    符号化されたビットの間の変換のためのビット生成部、
    及び前記ビット生成ルックアップテーブルより符号語を
    受け取るように接続され、符号化時に符号化データ出力
    を発生するため可変長の符号語を結合してバイト群にす
    るパック部からなることを特徴とするFSMコーダー。
  49. 【請求項49】 前記ビット生成ルックアップテーブル
    が冗長エントリーを含まないことを特徴とする請求項4
    8記載のFSMコーダー。
  50. 【請求項50】 前記符号化データストリームのバイト
    群の可変長シフト操作を行って可変長符号語にするアン
    パック部をさらに含むことを特徴とする請求項48記載
    のFSMコーダー。
  51. 【請求項51】 確率状態に応じた確率クラスを生成す
    る確率クラス部、MPSが発生して確率状態の更新が必
    要なときの次の確率推定状態を生成するMPS確率状態
    部、 LPSが発生して確率状態の更新が必要なときの次の確
    率推定状態を生成するLPS確率状態部、 MPSを切り替える必要があるときに切り替え指示を発
    生する切り替え部、及び確率状態が第1の所定値以下の
    ときに更新指示を発生する更新部をさらに含むことを特
    徴とする請求項48記載のFSMコーダー。
  52. 【請求項52】 前記MPS確率状態部が、現在の確率
    推定状態を、現在の確率状態の値に基づいたある値域内
    の整数だけインクリメント又はデクリメントすることに
    よって、次の確率推定状態を生成することを特徴とする
    請求項51記載のFSMコーダー。
  53. 【請求項53】 前記切り替え指示が信号からなること
    を特徴とする請求項51記載のFSMコーダー。
  54. 【請求項54】 確率状態が第1の所定値以下であるか
    第2の所定値と等しいときに前記切り替え指示がアサー
    トされることを特徴とする請求項51記載のFSMコー
    ダー。
  55. 【請求項55】 前記更新指示が信号からなることを特
    徴とする請求項51記載のFSMコーダー。
  56. 【請求項56】 前記ビット生成部が、符号化されてい
    ないビットと符号化されたビットとの間の変換を行うた
    めのビット生成ロジックからなることを特徴とする請求
    項48記載のFSMコーダー。
  57. 【請求項57】 前記ビット生成ロジックが、符号語を
    与える第1の出力と、前記符号語のサイズを指示する第
    2の出力を有することを特徴とする請求項56記載のF
    SMコーダー。
  58. 【請求項58】 前記ビット生成ロジックが、前記区間
    を定義する次のスタート値及び次のストップ値を発生す
    ることを特徴とする請求項56記載のFSMコーダー。
  59. 【請求項59】 前記ビット生成ロジックが発生した前
    記スタート値及び前記ストップ値をそれぞれ受け取るよ
    うに接続されたスタートレジスタ及びストップレジスタ
    をさらに含み、前記スタートレジスタ及び前記ストップ
    レジスタが前記ビット生成ロジックの入力にも接続され
    ることを特徴とする請求項58記載のFSMコーダー。
  60. 【請求項60】 前記ビット生成部が、符号化の終わり
    でフラッシングのための符号語を生成することを特徴と
    する請求項48記載のFSMコーダー。
  61. 【請求項61】 前記ビット生成部が、そのフラッシン
    グのためのフラッシュ指示を通知されると、所定の符号
    語を出力するための符号語を生成するフラッシュロジッ
    クをさらに含むことを特徴とする請求項48記載のFS
    Mコーダー。
  62. 【請求項62】 前記フラッシュ指示がフラッシュ信号
    からなることを特徴とする請求項61記載のFSMコー
    ダー。
  63. 【請求項63】 符号化データを表す符号語及びフラッ
    シングのための所定の符号語を受け取るように接続され
    たマルチプレクサをさらに含み、該マルチプレクサがそ
    の入力の一つを前記ビット生成部の出力として選択する
    ため前記フラッシュ指示を受け取るように接続されるこ
    とを特徴とする請求項61記載のFSMコーダー。
  64. 【請求項64】 確率推定値及び前記FSM状態に応じ
    て、第1の分割値と、MPSが発生し確率推定状態の更
    新が必要な場合の次の確率推定状態と、LPSが発生し
    確率推定状態の更新が必要な場合の次の確率推定状態と
    を生成する状態展開部、 前記第1の分割値と入力コードストリームを比較して第
    2の分割値を出力するコンパレータ、 前記コンパレータ及び状態展開部と接続され、like
    ly指示を発生するlikelyロジック、 前記次の確率推定状態及び前記likely指示を受け
    取るように接続され、前記likely指示に基づいて
    前記次の確率推定状態の一方を出力するマルチプレク
    サ、及び前記第1の分割値、前記likely指示及び
    区間指示に応じて、符号語を生成する符号語生成部をさ
    らに含むことを特徴とする請求項48記載のFSMコー
    ダー。
  65. 【請求項65】 前記区間指示が、前記区間の始まりと
    終わりをそれぞれ示すスタート値とストップからなるこ
    とを特徴とする請求項64記載のFSMコーダー。
  66. 【請求項66】 前記状態展開部が、 確率推定値に応じたマスク値を発生する第1の部分、 前記FSM状態に応じた値を発生する第2の部分、 前記第1の部分と前記第2の部分の出力の論理積演算を
    行うように接続されたゲートロジック、 前記ゲートロジックの出力を受け取り、該出力に応じた
    選択信号を発生するように接続された第3の部分、 前記選択信号及び前記FSM状態に応じて、MPSが発
    生して更新が必要な場合のための次の確率推定状態を生
    成する次状態MPS部、 前記選択信号及び前記FSM状態に応じて、LPSが発
    生して更新が必要な場合のための次の確率推定状態を生
    成する次状態LPS部、 前記選択信号及び前記FSM状態に応じて、どちらの部
    分区間がMPSの発生に関連付けられるかの指示を発生
    する第4の部分、及び前記選択信号及び前記FSM状態
    に応じて前記第2の分割値を生成する第5の部分からな
    ることを特徴とする請求項64記載のFSMコーダー。
  67. 【請求項67】 情報を処理するためのコーダーであっ
    て、 文脈に応じた確率推定値を生成する確率推定テーブル、 前記確率推定テーブルと接続され、前記確率推定値に応
    じた少なくとも一つの指示を生成し、また、MPSの発
    生に関連した1組の出力及びLPSの発生に関連した1
    組の出力を発生するエントロピー符号化復号化テーブ
    ル、ただし、前記各組の出力は符号語、前記符号語のサ
    イズ指示及び次のエントロピー符号化復号化状態を含
    む、及び前記エントロピー符号化復号化テーブルと接続
    され、かつ当該コーダーに入力した符号化データ及び符
    号化されていないデータを受け取るように接続され、復
    号化時に少なくとも一つの信号及び前記符号化データに
    応じてビットストリームを出力し、符号化時に前記符号
    化されていないデータの各ビットに応じて、前記MPS
    に関連した一組の出力又は前記LPSに関連した一組の
    出力を当該コーダーの出力として選択するための指示を
    出力するロジックからなることを特徴とするコーダー。
  68. 【請求項68】 前記確率推定テーブルが、MPSが発
    生して確率推定状態の更新を行う必要がある場合に次の
    確率推定状態として用いるための第1の次の確率推定状
    態と、LPSが発生して前記確率推定状態の更新を行う
    必要がある場合に次の確率推定状態として用いるための
    第2の次の確率推定状態を出力することを特徴とする請
    求項67記載のコーダー。
  69. 【請求項69】 文脈に応じて、確率推定状態を前記確
    率推定テーブル及び前記ロジックに供給するように接続
    された文脈メモリをさらに含むことを特徴とする請求項
    67記載のコーダー。
  70. 【請求項70】 前記文脈メモリが、各文脈に応じてM
    PSの指示を前記ロジックに対し出力することを特徴と
    する請求項69記載のコーダー。
  71. 【請求項71】 文脈に応じて、確率推定ルックアップ
    テーブルより確率推定値を生成させるステップ、 前記確率推定値及びFSMの状態に応じて、MPSとL
    PSのための符号語、該符号語のサイズ指示及び次のF
    SM状態指示をエントロピー符号化復号化ルックアップ
    テーブルより出力させるステップ、 likely指示がアサートされているかデアサートさ
    れているかによって、前記のMPSに関連した符号語、
    符号語のサイズ指示及び次のFSM状態指示、又は、前
    記のLPSに関連した符号語、符号語のサイズ指示及び
    次のFSM状態指示を選択するステップ、及び前記の選
    択された符号語及びサイズ指示を出力するステップから
    なることを特徴とする符号化方法。
  72. 【請求項72】 MPSが発生して確率推定状態の更新
    が必要な場合の次の確率推定状態を示す第1の指示を出
    力するステップ、及びLPSが発生して確率推定状態の
    更新が必要な場合の次の確率推定状態を示す第2の指示
    とMPSの切り替え指示を発生するステップをさらに含
    むことを特徴とする請求項71記載の符号化方法。
  73. 【請求項73】 前記の次の確率推定状態の第1及び第
    2の指示が前記確率推定ルックアップテーブルより出力
    されることを特徴とする請求項72記載の符号化方法。
  74. 【請求項74】 入力ビットがMPSであるかLPSで
    あるかと、現在の確率推定状態とに基づいて、前記の次
    の確率推定状態の第1の指示、前記の確率推定状態の第
    2の指示及び現在の確率推定状態のうちの一つを選択す
    るステップをさらに含むことを特徴とする請求項72記
    載の符号化方法。
  75. 【請求項75】 前記の選択するステップが、 MPSが発生し、かつ、現在の確率推定状態が所定の状
    態以下であるときに前記の次の確率推定状態の第1の指
    示を選択するステップ、 LPSが発生し、かつ、現在の確率推定状態が前記所定
    状態以下であるときに前記の次の確率推定状態の第2の
    指示を選択するステップ、 MPSが発生し、かつ、現在の確率推定状態が前記所定
    状態より大きく、かつ、1個以上のビットが出力される
    ときに前記の次の確率推定状態の第1の指示を選択する
    ステップ、 LPSが発生し、かつ、現在の確率推定状態が前記所定
    状態より大きく、かつ、1個以上のビットが出力される
    ときに前記の次の確率推定状態の第2の指示を選択する
    ステップ、及び現在の確率推定状態が前記所定状態より
    大きく、かつ、ビットが出力されないときに現在の確率
    推定状態を選択するステップからなることを特徴とする
    請求項74記載の符号化方法。
  76. 【請求項76】 前記の確率推定値を生成するステップ
    が、 文脈を用いて文脈メモリをアドレス指定するステップ、 現在の確率推定状態と前記文脈に対するMPSの指示を
    取り出すステップ、 前記の現在の確率推定状態を確率推定値へ変換するステ
    ップ、及び前記確率推定値を出力するステップからなる
    ことを特徴とする請求項71記載の符号化方法。
  77. 【請求項77】 前記確率推定値が確率クラスからなる
    ことを特徴とする請求項76記載の符号化方法。
  78. 【請求項78】 符号化対象のビットとMPSとの比較
    に基づいて前記likely指示を生成するステップを
    さらに含むことを特徴とする請求項71記載の符号化方
    法。
  79. 【請求項79】 次のMPS値を決定するステップ、及
    び次の確率推定状態値を選択するステップをさらに含む
    ことを特徴とする請求項71記載の符号化方法。
  80. 【請求項80】 文脈を用いて文脈メモリをアドレス指
    定するステップ、 現在の確率推定状態と前記文脈に対するMPSの指示を
    取り出すステップ、 前記の現在の確率推定状態を確率推定値へ変換するステ
    ップ、 前記確率推定値を出力するステップ、 MPSが発生し、かつ、確率推定状態の更新が必要なと
    きに次の確率推定状態を出力するステップ、 LPSが発生し、かつ、確率推定状態の更新が必要であ
    るときに次の確率推定状態とMPSの切り替え指示を出
    力するステップ、 前記確率推定値及びFSMの状態に応じて、MPSとL
    PSのための、符号語、該符号語のサイズ指示及び次の
    FSM状態指示をエントロピー符号化復号化ルックアッ
    プテーブルより出力させるステップ、 符号化対象のビットとMPSとの比較に基づいてlik
    ely指示を生成するステップ、 前記likely指示がアサートされているかデアサー
    トされているかによって、前記のMPSに関連した符号
    語、符号語のサイズ指示及び次のFSM状態指示、又
    は、前記のLPSに関連した符号語、符号語のサイズ指
    示及び次のFSM状態指示をそれぞれ選択するステッ
    プ、 次のMPS値を決定するステップ、及び次の確率推定状
    態値を選択するステップからなることを特徴とする符号
    化方法。
  81. 【請求項81】 情報の符号化及び復号化のためのコー
    ダであって、 確率推定状態に応じて、少なくとも一つの信号と、MP
    Sの発生に関連した1組の出力と、LPSの発生に関連
    した1組の出力とを発生する確率推定及びFSMビット
    生成のための統合型テーブル、ただし、前記各組の出力
    は符号語とそのサイズ指示及び次のエントロピー符号化
    復号化状態を含む、 前記統合型テーブルと接続され、かつ当該コーダーに入
    力した符号化データ及び符号化されていないデータを受
    け取るように接続され、復号化時に前記の少なくとも一
    つの信号及び前記符号化データに応じてビットストリー
    ムを出力し、符号化時に前記符号化されていないデータ
    の各ビットに応じて、前記のMPSに関連した一組の出
    力又は前記のLPSに関連した一組の出力を当該コーダ
    ーの出力として選択するための指示を出力するビットロ
    ジックからなることを特徴とするコーダー。
JP37185298A 1998-01-05 1998-12-28 符号化方法及び圧縮/伸長システム Expired - Fee Related JP3748003B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/003,076 US6094151A (en) 1998-01-05 1998-01-05 Apparatus and method for finite state machine coding of information selecting most probable state subintervals
US09/003076 1998-01-05

Publications (2)

Publication Number Publication Date
JPH11266162A true JPH11266162A (ja) 1999-09-28
JP3748003B2 JP3748003B2 (ja) 2006-02-22

Family

ID=21704006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP37185298A Expired - Fee Related JP3748003B2 (ja) 1998-01-05 1998-12-28 符号化方法及び圧縮/伸長システム

Country Status (5)

Country Link
US (1) US6094151A (ja)
JP (1) JP3748003B2 (ja)
DE (1) DE19900150B4 (ja)
GB (1) GB2333000B (ja)
HK (1) HK1020303A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6792150B1 (en) 1999-11-02 2004-09-14 Ricoh Company, Ltd. Method, apparatus and computer program product for image data compression and decompression capable of high-speed processing
CN111884659A (zh) * 2020-07-28 2020-11-03 广州智品网络科技有限公司 一种fst数据的压缩方法和装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998040796A1 (de) * 1997-03-11 1998-09-17 Siemens Aktiengesellschaft Verfahren zur rechnergestützten fehleranalyse von sensoren und/oder aktoren in einem technischen system
JP3814456B2 (ja) * 2000-02-07 2006-08-30 キヤノン株式会社 画像処理装置及びその方法
US6424444B1 (en) * 2001-01-29 2002-07-23 Stratalight Communications, Inc. Transmission and reception of duobinary multilevel pulse-amplitude-modulated optical signals using finite-state machine-based encoder
US8265920B1 (en) 2004-07-30 2012-09-11 Synopsys, Inc. Determining large-scale finite state machines using constraint relaxation
US7684627B2 (en) * 2004-09-29 2010-03-23 Intel Corporation Techniques for image decompression
JP4618676B2 (ja) 2005-04-28 2011-01-26 株式会社リコー 構造化文書符号の転送方法、画像処理システム、サーバ装置、プログラム及び情報記録媒体
US8421655B2 (en) 2010-04-23 2013-04-16 Certicom Corp. Apparatus for parallel entropy encoding and decoding
US8416104B2 (en) 2010-04-23 2013-04-09 Certicom Corp. Method and apparatus for entropy decoding
WO2013074088A1 (en) * 2011-11-15 2013-05-23 Intel Corporation Video encoder with 2-bin per clock cabac encoding
US11061993B2 (en) 2012-08-15 2021-07-13 Modal Technology Corporation Apparatus for performing modal interval calculations based on decoration configuration
JP6290886B2 (ja) 2012-08-15 2018-03-07 サンフィッシュ スタジオ エルエルシーSunfish Studio,Llc 装飾構成に基づくモーダル区間計算
EP2858323A1 (en) * 2013-10-01 2015-04-08 Enyx SA A method and a device for decoding data streams in reconfigurable platforms
CN112669396B (zh) * 2020-12-18 2023-09-12 深圳智慧林网络科技有限公司 图像无损压缩方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933883A (en) * 1985-12-04 1990-06-12 International Business Machines Corporation Probability adaptation for arithmetic coders
US4792954A (en) * 1986-10-31 1988-12-20 International Business Machines Corporation Concurrent detection of errors in arithmetic data compression coding
US5475388A (en) * 1992-08-17 1995-12-12 Ricoh Corporation Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
JP2836467B2 (ja) * 1993-12-16 1998-12-14 日本電気株式会社 2値シンボルの符号化・復号化回路
US5710562A (en) * 1995-08-31 1998-01-20 Ricoh Company Ltd. Method and apparatus for compressing arbitrary data
EP0797348A3 (en) * 1996-03-22 1999-01-20 Hewlett-Packard Company A one dimensional context model for entropy encoding digital halftone images with arithmetic coding

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6792150B1 (en) 1999-11-02 2004-09-14 Ricoh Company, Ltd. Method, apparatus and computer program product for image data compression and decompression capable of high-speed processing
US7020341B2 (en) 1999-11-02 2006-03-28 Ricoh Company, Ltd. Method, apparatus and computer program product for image data compression and decompression capable of high-speed processing
CN111884659A (zh) * 2020-07-28 2020-11-03 广州智品网络科技有限公司 一种fst数据的压缩方法和装置
CN111884659B (zh) * 2020-07-28 2021-09-10 广州智品网络科技有限公司 一种fst数据的压缩方法和装置

Also Published As

Publication number Publication date
HK1020303A1 (en) 2000-04-07
GB2333000B (en) 2000-04-19
DE19900150B4 (de) 2005-12-22
DE19900150A1 (de) 1999-07-08
JP3748003B2 (ja) 2006-02-22
GB2333000A (en) 1999-07-07
GB9824435D0 (en) 1999-01-06
GB2333000A8 (en) 1999-12-30
US6094151A (en) 2000-07-25

Similar Documents

Publication Publication Date Title
JP3272580B2 (ja) 符号化方法、符号化装置、符号化器、コーディング装置、復号方法、復号装置、復号器、エントロピー復号器、及び初期化方法
JP3459030B2 (ja) 符号化システム
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US4905297A (en) Arithmetic coding encoder and decoder system
JP3136796B2 (ja) 可変長符号デコーダ
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US7262722B1 (en) Hardware-based CABAC decoder with parallel binary arithmetic decoding
US5717394A (en) Method and apparatus for encoding and decoding data
KR100748485B1 (ko) 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법
JPH11266162A (ja) 符号化方法、符号化装置、圧縮/伸長システム、fsmコ―ダ―及びコ―ダ―
US6043765A (en) Method and apparatus for performing a parallel speculative Huffman decoding using both partial and full decoders
JPH0744462B2 (ja) 圧縮符号化方法及び復号方法
WO1996031008A1 (en) Syntax based arithmetic coding circuit
GB2306279A (en) Apparatus for decoding data
Nikara et al. Multiple-symbol parallel decoding for variable length codes
JP3457269B2 (ja) 算術符号化・復号化方法および算術符号化・復号化装置
EP0260461B1 (en) Arithmetic coding encoding and decoding method
WO2007102518A1 (ja) 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体
JP3230933B2 (ja) データ伸長装置、データ伸長方法、デコーディング装置、デコーディング方法、エンコーディング装置、及びエントロピー・デコーダ
US7728744B2 (en) Variable length decoder system and method
Ramesh Kumar et al. Two-symbol FPGA architecture for fast arithmetic encoding in JPEG 2000
Rhu et al. Optimization of arithmetic coding for JPEG2000
US6496602B2 (en) Sorting device of variable-length code
JPH07249995A (ja) データ符号化装置
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050830

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051031

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: 20051122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051122

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081209

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091209

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131209

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees