JP4466382B2 - 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置 - Google Patents
符号語抽出装置とその方法、復号化装置、ならびに画像再生装置 Download PDFInfo
- Publication number
- JP4466382B2 JP4466382B2 JP2005010098A JP2005010098A JP4466382B2 JP 4466382 B2 JP4466382 B2 JP 4466382B2 JP 2005010098 A JP2005010098 A JP 2005010098A JP 2005010098 A JP2005010098 A JP 2005010098A JP 4466382 B2 JP4466382 B2 JP 4466382B2
- Authority
- JP
- Japan
- Prior art keywords
- codeword
- unit
- data
- length
- data stream
- 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.)
- Active
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
図21に示すように、可変長符号化データストリームを先頭ビットから1ビットずつ順に調べていくことにより、これに含まれる符号語を抽出することが可能である。図21に示す2進ツリーでは、‘0’,‘1’,‘1’というビット列が1つの符号語‘011’を構成しており、これが‘4’というデータに復号される。
バレルシフタは、可変長符号化データストリームの先頭ビットから所定ビット長分のデータをテーブルマッチング器に入力する。テーブルマッチング器は、可変長符号の符号語とその符号長とを対応付けたテーブルを有しており、バレルシフタからの入力データとテーブル中の各符号語とを比較する。比較の結果、入力データと一致する符号語がテーブルから見つかった場合、テーブルマッチング器は、その符号長の情報をバレルシフタにフィードバックする。バレルシフタは、フィードバックされた符号長の情報に基づいて、入力される可変長符号化データストリームをビットシフトさせ、次の符号語の先頭ビットから所定ビット長分のデータをテーブルマッチング器に入力する。以上の動作を繰り返すことにより、可変長符号化データストリーム中から1つずつ符号語を抽出することができる。
MPEG2(motion picture experts group 2)で用いられる可変長符号は、符号化データストリームの先頭のビットパターンを調べることによって、符号長を求めることができる。例えば図24に示すように、符号語の先頭に‘00000000001’というビットパターンがある場合、その符号長は15ビットになる。
このような符号の性質を利用すると、簡易な回路構成で復号化処理を行うことが可能である。しかしながら、この方式は特定の可変長符号のみに適用可能であり、他の符号化方式には全く応用できないため、汎用性に欠けるという問題がある。
上記符号語をロードされた上記一致検出部では、上記データストリームシフト部において抽出されるデータブロック中の少なくとも先頭のデータを含んだ一連のデータと当該記憶部に記憶される符号語とが比較される。そして、この比較において一致する符号語が検出された場合、検出された符号語のデータ長に応じて上記データストリームシフト部の抽出位置をシフトさせる第1の信号が上記一致検出部から出力される。
上記データストリームシフト部では、この第1の信号に応じて、上記データブロックの抽出位置が上記データストリームの末尾側にシフトされ、このシフトされた位置において新たなデータブロックが抽出される。
上記符号語ロード部は、対応付けられた可変長符号のビットの数が等しい複数の符号語の中から、ランレングスが短い符号語をランレングスが長い符号語より優先して選択し、上記一致検出部の記憶部にロードしてもよい。
また、上記符号語ロード部は、上記ランレングスの長さが同じ場合、対応付けられた可変長符号のビットの数が等しい複数の符号語の中から、レベルが小さい符号語をレベルが大きい符号語より優先して選択し、上記一致検出部の記憶部にロードしてもよい。
また、上記複数の一致検出部は、第1の一致検出部と、複数の第2の一致検出部とを含んでも良い。この場合、上記符号語ロード部は、上記データストリームからの符号語の抽出を開始する際に、上記順序において最も優先順位が高い少なくとも1つの符号語を上記第1の一致検出部の記憶部にロードしても良い。そして、上記データストリームシフト部において新たなデータブロックが抽出された場合、上記符号語ロード部は、上記複数の第2の一致検出部から順番に1つの一致検出部を選択するとともに、上記所定の複数の符号語から上記順序に従って順番に少なくとも1つの符号語を選択し、当該選択した一致検出部の記憶部に当該選択した符号語をロードしても良い。
図1に示す画像再生装置は、データストリームバッファ1と、可変長復号化部2と、逆量子化部3と、逆DCT部4と、演算部5と、動き補償予測部6と、フレームメモリ7と、ディスプレイ部8とを有する。
なお、可変長復号化部2は、本発明の復号化部の一実施形態である。
また、可変長復号化部2は、量子化DCT係数の他にも、例えば量子化テーブルや動きベクトルなどをデータストリームから復号化する。
デジタル放送のチューナや光ディスク等の記録媒体から入力される可変長符号化データストリームは、データストリームバッファ1に一時格納される。可変長復号化部2は、データストリームバッファ1に格納されるデータストリームを随時読み出して復号化する。
図2に示す可変長復号化部2は、符号語抽出部21と、ラン/レベル変換部22とを有する。
ラン/レベル変換部22は、本発明の情報再生部の一実施形態である。
図3に示す符号語抽出部21は、データストリームシフト部201と、符号語ロード部202と、一致検出部U0,U1,U2と、メモリ204と、論理和回路OR1,OR2と、フリップフロップFF1,FF2とを有する。
データストリームシフト部201は、本発明のデータストリームシフト部の一実施形態である。
符号語ロード部202は、本発明の符号語ロード部の一実施形態である。
一致検出部U0は、本発明の第1の一致検出部の一実施形態である。
一致検出部U1,U2は、本発明の第2の一致検出部の一実施形態である。
データストリームシフト部201は、データストリームバッファ1に格納されるデータストリームの先頭から16ビットのデータS_BSを抽出し、一致検出部U0,U1,U2に入力する。また、一致検出部U0,U1,U2において検出される符号語の符号長を示す信号S_BLに応じて、データブロックの抽出位置をデータストリームの末尾側にシフトさせる。
例えば、データストリームシフト部201は、一致検出部U0によって符号語D3が検出された場合、この検出された符号語D3のデータ長分だけ、データS_BSの抽出位置をデータストリームの末尾方向にシフトする。これにより、データストリームシフト部201は、次に一致検出部U0〜U2へ供給するデータS_BSとして、先頭部分に符号語D4を含んだ16ビットのデータをデータストリームから抽出する。
以降の説明では、一例として、データストリームの先頭側に符号語の最上位ビットがあるものとする(図5(A))。
一致検出部U0,U1,U2において符号語が検出されると、その符号長を示す信号S_BLが制御部2011に入力される。制御部2011は、この信号S_BLに基づいて、一致検出部U0,U1,U2が検出した一連の符号語の符号長を積算する。
制御部2011で積算された符号長は、ビットシフト部2012に入力される。ビットシフト部2012は、フリップフロップFF4およびFF5に格納される32ビットのデータの先頭から、制御部2011で算出された積算値に相当するビット長だけ末尾側にシフトした位置より16ビットのデータS_BSを抽出する。ビットシフト部2012で抽出された16ビットのデータS_BSは、次に抽出すべき符号語を含むデータストリームの先頭部分のデータとして、一致検出部U0,U1,U2に供給される。
符号長の積算値が16ビットに達すると、制御部2011は、フリップフロップFF4に格納される後半の16ビットのデータを、フリップフロップFF5にシフトさせる。そして、この16ビットデータの次に処理すべき16ビットのデータを、データストリームバッファ1からフリップフロップFF5にロードする。また、符号長の現在の積算値から16ビットを減算する。これにより、フリップフロップFF4,FF5に新たに設定された32ビットのデータの先頭から、新たな積算値によって示されるビット長だけ末尾側にシフトした位置は、次に抽出すべき符号語の先頭の位置と等しくなる。
一致検出部Un(nは、整数0、1、2のうちの任意の1つを示す)は、符号語ロード部202から供給される16の符号語を記憶するための記憶部を有する。一致検出部Unは、データストリームシフト部201において抽出される16ビットのデータS_BS中の少なくとも先頭のデータを含んだ一連のデータと、この記憶部に記憶される16の符号語とを比較する。比較結果、一致する符号語を検出した場合、一致検出部Unは、検出した符号語S_CWoとその符号長を示す信号S_BLo(以降、符号長S_BLoと表記する)を出力する。
図6に示す一致検出部Unは、フリップフロップFF6−0〜FF6−15と、一致検出回路E0〜E15と、論理和回路OR3およびOR4とを有する。
フリップフロップFF6−0〜FF6−15は、本発明の記憶部の一実施形態である。
図7の例に示す符号語データは、符号語の本体を示すデータとその符号長を示すデータを含んでいる。すなわち、符号語データのビット長は全体で20ビットであり、そのうち下位の16ビットのデータが符号語を表し、上位6ビットのデータがその符号語の符号長を表す。符号語は、下位16ビットの中の最下位側に詰めて配置されており、この16ビット中の符号語でないビットは‘0’で埋められている。
図8に示す一致検出回路Emは、ビットシフト部2031と、シフト量演算部2032と、比較部2033と、論理積回路AND1,AND2とを有する。
図10の例において、16ビットのデータS_BSは
‘0001101101011100’
である。また、符号語データCWiの上位4ビットは
‘0110’
であり、10進数の‘6’に等しい。この場合、ビットシフト部2031では、データS_BSを10ビット(=16ビット−4ビット)だけ下位側にビットシフトする操作が行われる。この操作により得られるデータは、図10に示すように、元のデータS_BSの上位6ビット
‘000110’
を最下位側に詰めて配置したものとなる。
従って、データS_BSの先頭部分に、符号語データCWiの符号語と等しいデータが存在する場合、ビットシフト部2031においてビットシフトされた16ビットのデータは、符号語データCWiの下位16ビットのデータと一致する。従って、この場合、比較部2033は‘1’を出力する。他方、データS_BSの先頭部分に、符号語データCWiの符号語と等しいデータが存在しない場合、比較部2033は‘0’を出力する。
以上が、一致検出回路Emの説明である。
論理和回路OR3は、一致検出回路E0〜E15から出力される符号長BLo同士の論理和を演算し、演算結果を4ビットの符号長S_BLoとして出力する。16の一致検出回路E0〜E15の1つが有効な符号長BLoを出力し、残りの一致検出回路が全ビット‘0’の符号長BLoを出力する場合、符号長S_BLoは、この有効な符号長BLoと等しくなる。他方、16の一致検出回路E0〜E15が何れも全ビット‘0’の符号長BLoを出力する場合、符号長S_BLoも全ビット‘0’になる。
図11に示す例において、データS_BSの先頭には‘1000010101…’というビット列が含まれている。一致検出回路E0〜E15では、このデータS_BSの先頭部分と2ビットの符号語‘01’、3ビットの符号語‘101’、4ビットの符号語‘1101’、…、4ビットの符号語‘0000’、5ビットの符号語‘10000’、7ビットの符号語‘0000000’とがそれぞれ比較される。比較の結果、5ビットの符号語‘10000’のみがデータS_BSの先頭と一致するため、一致検出部Unは符号語S_CWoとして‘0000000000010000’を出力し、符号長S_BLoとして‘0101’(十進数で‘5’)を出力する。
論理和回路OR1は、上述した一致検出部U0,U1,U2から出力される符号長S_BLo同士の論理和を演算し、演算結果をフリップフロップFF1に入力する。
フリップフロップFF1は、論理和回路OR1から出力される4ビットの演算結果を図示しないクロック信号CLKに同期してラッチし、符号長の信号S_BL(以降、符号長S_BLと表記する)として出力する。
3つの一致検出部U0,U1,U2の1つが有効な符号長S_BLoを出力し、残りの一致検出部が全ビット‘0’の符号長S_BLoを出力する場合、符号長S_BLは、この有効な符号長S_BLoと等しくなる。他方、3つの一致検出部U0,U1,U2が何れも全ビット‘0’の符号長S_BLoを出力する場合、符号長S_BLも全ビット‘0’になる。
すなわち、一致検出部U0,U1,U2の何れか1つにおいてデータS_BSの先頭部と一致する符号語が検出された場合に、その符号長を示す4ビットの信号S_BLがフリップフロップFF1にラッチされる。他方、3つの一致検出部U0,U1,U2の何れにおいてもデータS_BSの先頭部と一致する符号語が検出されない場合には、フリップフロップFF1には全ビット‘0’の無効な信号S_BLがラッチされる。
論理和回路OR2は、上述した一致検出部U0,U1,U2から出力される符号語S_CWo同士の論理和を演算し、演算結果をフリップフロップFF2に入力する。
フリップフロップFF2は、論理和回路OR2から出力される16ビットの演算結果を図示しないクロック信号CLKに同期してラッチし、符号語S_CWとして出力する。
3つの一致検出部U0,U1,U2の1つが有効な符号語S_CWoを出力し、残りの一致検出部が全ビット‘0’の符号語S_CWoを出力する場合、符号語S_CWは、この有効な符号語S_CWoと等しくなる。他方、3つの一致検出部U0,U1,U2が何れも全ビット‘0’の符号語S_CWoを出力する場合、符号語S_CWも全ビット‘0’になる。
すなわち、3つの一致検出部U0,U1,U2の何れか1つにおいてデータS_BSの先頭部と一致する符号語が検出された場合、その符号語S_CWがフリップフロップFF2にラッチされる。他方、3つの一致検出部U0,U1,U2の何れにおいてもデータS_BSの先頭部と一致する符号語が検出されない場合、全ビット‘0’の無効な符号語S_CWがフリップフロップFF2にラッチされる。
符号語ロード部202は、データストリームシフト部201において新たな16ビットのデータS_BSが抽出された場合、3つの一致検出部U0,U1,U2から順番に1つの一致検出部を選択するとともに、データストリームの可変長符号化に用いられる所定の複数の符号語(以降、符号語テーブルと呼ぶ)から順番に16個の符号語の組(以降、符号語セットと呼ぶ)を選択する。そして、選択した一致検出部の記憶部(フリップフロップFF6−0〜FF6−15)に選択した符号語セットをロードする。
従って、符号語ロード部202は、対応付けられた情報語の数が少ない(すなわちランレングスが短い)符号語を、この数が多い(すなわちランレングスが長い)符号語より優先して符号語テーブルから選択し、一致検出部U0,U1,U2の記憶部にロードする。
例えば、データストリームシフト部201において新しいデータS_BSが抽出された場合、次にデータS_BSが抽出されるまでの間、符号語ロード部202は、一致検出部U0,U1,U2,U1,U2,U1…の順番でこれらを活性化する。
上述したように、一致検出部U0の記憶部には、ランレングスの最も短い符号語セットが格納され、一致検出部U1,U2の記憶部には、ランレングスの短い順に交互に符号語セットがロードされる。そのため、3つの一致検出部を‘U0,U1,U2,U1,U2,U1…’の順番で活性化させた場合、ランレングスの短い符号語セットから順番にデータS_BSとの比較が行われる。
この場合、32個の記憶領域には、アドレス‘00h’,‘01h’,‘02h’,…の順にランレングスの短い符号語が格納され、アドレス‘00h’の記憶領域に最もランレングスの短い符号語が格納される。また、同一ランレングスの符号語を格納する記憶領域について比較すると、アドレス値の小さい記憶領域にはアドレス値の大きい記憶領域に比べて符号長の短い符号語が格納される。
すなわち、選択部2023は、データストリームから符号語の抽出を開始する際、まず始めに一致検出部U0を選択し、その記憶部に最もランレングスの短い符号語セットをロードする。以降は、データストリームシフト部201において新たなデータS_BSが抽出されるたびに、一致検出部U1,U2,U1,U2,…の順で交互に一方の一致検出部を選択し、その記憶部にテーブル記憶部2022からランレングスの短い順に読み出される符号語セットをロードする。
以降、制御部2024は、データストリームシフト部201において新たなデータS_BSが抽出されるたびに、アドレス‘01h’,‘02h’,…の順でテーブル記憶部2022から符号語セットを読み出し、これを‘U1,U2,U1,U2,…’の順で交互に選択した一致検出部にロードする。
すなわち、制御部2024は、データストリームシフト部201において新たなデータS_BSが抽出されると、データストリームシフト部201において次のデータS_BSが抽出されるまで、‘U0,U1,U2,U1,U2,…’の順で3つの一致検出部を活性化させる。
なお、この場合、制御部2024は、データストリームシフト部201において新たなデータS_BSが抽出されるか否かの判断を、論理和回路OR1より出力される信号S_Mに基づいて行う。すなわち、信号S_Mの全ビットが‘0’の場合、現在活性化中の一致検出部において一致する符号語が検出されていないため、新たなデータS_BSは抽出されないと判断する。信号S_Mに‘1’のビットが存在する場合、現在活性化中の一致検出部において一致する符号語が検出されているため、新たなデータS_BSが抽出されると判断する。
制御部2024は、一致検出部の活性化処理と符号語データのロード処理を並列に実行する。例えば、一致検出部U1を活性化して検出動作を実行させるとき、これと並行して、次に活性化する予定の一致検出部U2に符号語データをロードする。
以降、符号語ロード部202は、再びステップST5およびST6に戻って、上述した処理を反復する。すなわち、データS_BSの先頭部分と一致する符号語が検出されるまで、一致検出部U1,U2の記憶部に対して交互に符号語セットをロードし、検出動作を実行させる。
図13(A)は、符号語抽出部21の動作タイミングの基準となるクロック信号CLKを示す。
図13(B)は、符号語抽出部の動作状態を示す。
図13(C)は、不図示のシステム制御部から符号語抽出部21に対して符号抽出動作の開始を指示するスタート信号S_startを示す。
図13(D)は、符号語抽出部21から不図示のシステム制御部に対して符号語抽出動作の終了を通知するエンド信号S_endを示す。
図13(E)は、一致検出動作の結果を通知する信号S_mを示す。信号S_mは、論理和回路OR1の出力信号S_Mの全ビットが‘0’の場合に‘1’となり、それ以外の場合に‘0’となる信号である。この信号S_mは、一致検出部U0〜U2において一致する符号語が検出された場合に‘0’、検出されない場合に‘1’となる。
図13(F)は、アドレスデコーダ2021から出力されるアドレスデータS_ADRを示す。
図13(G)は、テーブル記憶部2022から読み出される符号語セットS_CWSを示す。
図13(H)は、一致検出部U0の記憶部に格納される符号語セットを示す。
図13(I)は、一致検出部U1の記憶部に格納される符号語セットを示す。
図13(J)は、一致検出部U2の記憶部に格納される符号語セットを示す。
なお、図13(H)〜(J)において太い線で示される枠は、活性化されている一致検出部を示す。
符号語抽出部21は、4つの状態IDL,S0,S1,S2を有する。
状態IDLは、符号語抽出動作を開始する前の待ち状態である。不図示のシステム制御部から‘1’のスタート信号S_startが入力されると、符号語抽出部21は、状態IDLから状態S0へ遷移する。
状態S0は、一致検出部U0の記憶部にランレングスが最短の符号語セットをロードする状態である。符号語抽出部21は、クロック信号CKLの1サイクルで状態S0から状態S1へ遷移する。
状態S1は、一致検出部U0において検出動作が行われる状態である。信号S_mが‘0’の場合、符号語抽出部21は状態S1にとどまる。信号S_mが‘1’の場合、符号語抽出部21は状態S1から状態S2へ遷移する。エンド信号S_endが‘1’の場合、符号語抽出部21は状態S1から状態IDLへ戻る。
状態S2は、一致検出部U1またはU2において交互に検出動作が行われる状態である。信号S_mが‘1’の場合、符号語抽出部21は状態S2にとどまる。信号S_mが‘0’の場合、符号語抽出部21は状態S2から状態S1へ遷移する。エンド信号S_endが‘1’の場合、符号語抽出部21は状態S2から状態IDLへ戻る。
小さい値から順番に、
‘00h’,‘01h’,‘02h’,‘03h’,‘04h’,…;
というアドレスデータS_ADRがテーブル記憶部2022に入力されると、テーブル記憶部2022は、
‘#0’,‘#1’,‘#2’,‘#3’,‘#4’,…;
という符号語セットS_CWSを順次出力する。この符号語セットS_CWSは、
‘U0’,‘U1’,‘U2’,‘U1’,‘U2’,…;
という順番で一致検出部の記憶部にロードされる。
符号語セット‘#0’は、符号語テーブルの中で最もランレングスが短く、番号が大きくなるほどランレングスが長くなる。
クロックサイクルc0において、符号語抽出部21は状態IDLにある。状態IDLにおいて、制御部2024は、アドレス‘00h’のデータをフリップフロップFF3にロードする。
クロックサイクルc0においてスタート信号S_startが‘1’に設定されると、クロックサイクルc1において符号語抽出部21は状態IDLから状態S0へ遷移する。
状態S0において、制御部2024は、アドレス‘01h’のデータをフリップフロップFF3にロードする。また、テーブル記憶部2022は、アドレス‘00h’の記憶領域から符号語セット‘#0’を出力する。
クロックサイクルc2において、符号語抽出部21は、状態S0から状態S1へ遷移する。
符号語ロード部202は、前のクロックサイクルc1においてテーブル記憶部2022から出力される符号語セット‘#0’を、一致検出部U0の記憶部にロードする。また、符号語ロード部202は、状態S1において、一致検出部U0を活性化する。
活性化された一致検出部U0は、検出動作を実行する。その結果、一致する符号語‘CW0’が検出されるため、信号S_mは‘0’になる。
信号S_mが‘0’になると、制御部2024は、次のサイクルにおける符号語セット‘#1’の読み出しに備えて、アドレス‘01h’のデータをフリップフロップFF3にロードする。
また、テーブル記憶部2022は、前のクロックサイクルc1においてフリップフロップFF3にロードされたデータに応じて、符号語セット‘#1’を出力する。
前のクロックサイクルc2において信号S_mが‘0’であるため、クロックサイクルc3において符号語抽出部21は状態S1にとどまる。
符号語ロード部202は、前のクロックサイクルc2においてテーブル記憶部2022から出力される符号語セット‘#1’を、一致検出部U1の記憶部にロードする。また、符号語ロード部202は、状態S1において、一致検出部U0を活性化する。
活性化された一致検出部U0は、検出動作を実行する。その結果、一致する符号語が検出されないため、信号S_mは‘1’になる。
信号S_mが‘1’になると、制御部2024は、次のサイクルにおける符号語セット‘#2’の読み出しに備えて、アドレス‘02h’のデータをフリップフロップFF3にロードする。
また、テーブル記憶部2022は、前のクロックサイクルc2においてフリップフロップFF3にロードされたデータに応じて、符号語セット‘#1’を出力する。
前のクロックサイクルc3において信号S_mが‘1’になるため、クロックサイクルc4において符号語抽出部21は状態S1から状態S2に遷移する。
符号語ロード部202は、前のクロックサイクルc3においてテーブル記憶部2022から出力される符号語セット‘#1’を、一致検出部U1の記憶部にロードする。また、符号語ロード部202は、状態S2において、一致検出部U1を活性化する。
活性化された一致検出部U1は、検出動作を実行する。その結果、一致する符号語‘CW1’が検出されるため、信号S_mは‘0’になる。
信号S_mが‘0’になると、制御部2024は、次のサイクルにおける符号語セット‘#1’の読み出しに備えて、アドレス‘01h’のデータをフリップフロップFF3にロードする。
また、テーブル記憶部2022は、前のクロックサイクルc4においてフリップフロップFF3にロードされたデータに応じて、符号語セット‘#2’を出力する。
前のクロックサイクルc4において信号S_mが‘0’であるため、クロックサイクルc5において符号語抽出部21は状態S2から状態S1に遷移する。
符号語ロード部202は、前のクロックサイクルc4においてテーブル記憶部2022から出力される符号語セット‘#2’を、一致検出部U2の記憶部にロードする。また、符号語ロード部202は、状態S1において、一致検出部U0を活性化する。
活性化された一致検出部U0は、検出動作を実行する。その結果、一致する符号語が検出されないため、信号S_mは‘1’になる。
信号S_mが‘1’になると、制御部2024は、次のサイクルにおける符号語セット‘#2’の読み出しに備えて、アドレス‘02h’のデータをフリップフロップFF3にロードする。
また、テーブル記憶部2022は、前のクロックサイクルc4においてフリップフロップFF3にロードされたデータに応じて、符号語セット‘#1’を出力する。
前のクロックサイクルc5において信号S_mが‘1’であるため、クロックサイクルc6において符号語抽出部21は状態S1から状態S2に遷移する。
符号語ロード部202は、前のクロックサイクルc5においてテーブル記憶部2022から出力される符号語セット‘#1’を、一致検出部U1の記憶部にロードする。また、符号語ロード部202は、状態S2において、一致検出部U1を活性化する。
活性化された一致検出部U1は、検出動作を実行する。その結果、一致する符号語が検出されないため、信号S_mは‘1’のまま保持される。
信号S_mが‘1’になると、制御部2024は、次のサイクルにおける符号語セット‘#3’の読み出しに備えて、アドレス‘03h’のデータをフリップフロップFF3にロードする。
また、テーブル記憶部2022は、前のクロックサイクルc5においてフリップフロップFF3にロードされたデータに応じて、符号語セット‘#2’を出力する。
前のクロックサイクルc6において信号S_mが‘1’であるため、クロックサイクルc7において符号語抽出部21は状態S2にとどまる。
符号語ロード部202は、前のクロックサイクルc6においてテーブル記憶部2022から出力される符号語セット‘#2’を、一致検出部U2の記憶部にロードする。また、符号語ロード部202は、状態S2において、前サイクルと異なる一致検出部U2を活性化する。
活性化された一致検出部U2は、検出動作を実行する。その結果、一致する符号語‘CW2’が検出されるため、信号S_mは‘0’になる。
信号S_mが‘0’になると、制御部2024は、次のサイクルにおける符号語セット‘#1’の読み出しに備えて、アドレス‘01h’のデータをフリップフロップFF3にロードする。
また、テーブル記憶部2022は、前のクロックサイクルc4においてフリップフロップFF3にロードされたデータに応じて、符号語セット‘#3’を出力する。
符号語ロード部202は、前サイクルにおいてテーブル記憶部2022から出力される符号語セットを、図15に示す対応関係を有する一致検出部へロードする。
また、符号語ロード部202は、状態S1において一致検出部U0を活性化する。状態S2においては、前サイクルで活性化したユニットが一致検出部U1であれば一致検出部U2を活性化し、前サイクルで活性化したユニットが一致検出部U2であれば一致検出部U1を活性化する。
活性化した一致検出部において一致する符号語が検出された場合(S_m==‘0’)、制御部2024は、次のサイクルで符号語セット‘#1’がテーブル記憶部2022から出力されるように、フリップフロップFF3へデータをロードする。他方、一致する符号語が検出されない場合(S_m==‘1’)、制御部2024は、前サイクルにおいてフリップフロップFF3にロードされたデータに対応する符号語セットの次にランレングスの長い符号語セットが次のサイクルで出力されるように、フリップフロップFF3へデータをロードする。
テーブル記憶部2022は、前サイクルにおいてフリップフロップFF3にロードされたデータに応じた符号語セットを出力する。
このように、図3に示す符号抽出装置では、複数の一致検出部に対する符号語のロードを繰り返しながら各一致検出部において符号語の検出動作が行われるため、符号語テーブルの全体を格納する記憶装置や、全ての符号語とデータストリームとの一致を検出する大規模な回路を必要としない。また、一致検出部において、複数の符号語とデータストリームとの一致検出を並列に実行することも可能である。従って、図3に示す符号抽出装置21によれば、回路規模の増大を抑えつつ高速に可変長符号化データストリームから符号語を抽出することができる。
従来の符号語抽出方法では、例えば符号語の先頭の数ビットが特定のビット列を持つ場合にその符号語の符号長が決まるといった、特定の可変長符号の性質を利用して符号語の抽出を行うものがある。そのような方法では、可変長符号化の方式や符号語テーブルに変更が生じた場合、全く使用することができなくなる。
これに対し、図3に示す符号抽出装置21によれば、データストリームから抽出した固定長のデータS_BSと予め与えられる符号語とを直接比較することによって符号語抽出が行われる。そのため、最長の符号長がデータS_BSのデータ長より短い限り、どのような可変長符号にも対応可能である。例えば符号語の規則性がない可変長符号であっても、符号語抽出が可能である。
符号語のランレングスが‘0’の場合、この符号語には非ゼロの量子化係数が1つだけ対応付けられている。これに対し、符号語のランレングスが1の場合、この符号語には、値がゼロの量子化係数と非ゼロの量子化係数とが対応付けられており、合計2つの量子化係数が1つの符号語に対応付けられている。そのため、1サイクルで1つの符号語をデータストリームから抽出するということは、1サイクルで1つ以上の量子化係数を生成することを意味する。
例えばMPEG2のデータストリームを処理する場合、可変長復号化の後段に続く逆量子化部3や逆DCT部4では、通常1マクロブロックあたり、量子化係数の数である384サイクルを必要とする。従って、仮に可変長復号化部2で1サイクルあたり1つ以上の量子化係数の処理を行っても、後段のユニットにおける処理がネックとなり、全体の処理速度は高速化されない。
言い換えると、1サイクルで1つ以上の量子化係数を生成し得る従来の符号語抽出方式は、後段の処理を考慮した場合、不必要に高速である。
これに対し、図3に示す符号語抽出部21では、ランレングスが‘0’の符号語については、一致検出部U0において1サイクルの処理で検出し、ランレングスが‘1’以上の符号語については、一致検出部U1,U2を交互に動作させることにより数サイクルで検出することができる。従って、図3に示す符号語抽出部21を設けた可変長復号化部2によれば、量子化係数を必要以上に高速に生成することなく、要求された適切な速度で生成することが可能になるため、従来のように大規模な回路を設けることなく、効率的に可変長復号化を行うことができる。
すなわち、図3に示す符号語抽出部21によれば、一致検出部U0,U1,U2において並列に一致検出を行う符号語の数を加減することにより、回路規模と処理速度のトレードオフを図りつつ、両者を適切に設定することが可能である。
図16は、符号語テーブルの一例を示す第1の図である。
図17は、一致検出部U0,U1,U2に内蔵する一致検出回路の数と、特定の符号語の検出に必要なサイクル数との関係の一例を示す図である。
例えばデータストリームの先頭に符号語‘00000000010001’が存在する場合、パターンAの構成では、2サイクル目に一致検出部U1で一致が検出される。パターンBの構成では、3サイクル目に一致検出部U2で一致が検出される。パターンCの構成では、4サイクル目に一致検出部U1で一致が検出される。
このように、一致検出部において並列に検出する符号語の数を増やすことによって、符号語抽出処理の速度を向上させることができるが、その反面、回路規模が大きくなる。逆に、一致検出部において並列に検出する符号語の数を減らすことによって、回路規模を小さくすることができるが、その反面、検出に到るまでの処理サイクルが長くなる。
例えばハードディスクを内蔵したDVDレコーダーなどの場合、高レートの可変長符号化データストリームを復号化する必要がある。このような場合は、一致検出部において並列に検出する符号語の数を増やして、符号語抽出処理の速度の向上を図ることが好ましい。他方、一方、画素数の少ない低レートのデータストリームを復号化する携帯電話などの携帯機器の場合、一致検出部において並列に検出する符号語の数を減らすことによって、回路規模を小さくすることが好ましい。
このように、図3に示す符号語抽出部21によれば、適用される装置の要求に合わせて、回路規模と処理速度を適切に設定することが可能である。
もし、一致検出部U0へロードした最もランレングスの短い符号語セットが別の符号語セットに書き換えられてしまうと、1つの符号語の検出を終えて次の符号語の検出を始める際に、一致検出部U0へこの符号語セットを再びロードしなくてはならず、このロードを行うための余分な処理サイクルが発生してしまう。
これに対し、図3に示す符号語抽出部21のように、最もランレングスの短い符号語セットを常に一致検出部U0の記憶部に記憶させたままにすることで、上述した余分な処理サイクルの発生を防止できるため、処理速度の高速化を図ることができる。
図18において点線で囲った符号語‘010’のランレングスは‘1’、レベルは‘1’である。この符号語からは、ゼロの量子化係数と非ゼロの量子化係数がそれぞれ1つずつ復号化される。従って、平均として1サイクルに1つの量子化係数を復号化する場合、この符号語は最大2サイクルで処理すれば良い。
ところが、3つの一致検出部U0,U1,U2にそれぞれ16個の一致検出回路を設けた構成でこの符号語を処理する場合、図18で示すように3サイクルかかってしまう。
通常、可変長符号では、発生頻度の高い情報語に対して短い符号長の符号語を割り当てるため、3ビットの符号語‘010’は、比較的発生頻度が高いと推測される。もし、データストリームにこの符号語が多く含まれていると、2つの量子化係数を復号化するために3サイクルを使ってしまうため、平均として1サイクルに1つの量子化係数を復号化できなくなる。その結果、1フレームの画像データを規定時間内に処理できなくなってしまう。
従って、図3に示す符号語抽出部21によれば、回路構成を全く変えることなく、テーブル内における符号語の並び替え(具体的にはテーブル記憶部2022における符号語の格納順序の変更)を行うだけで、非常に容易に処理性能の改善を図ることが可能である。
図20に示す符号語抽出部21Aは、図3に示す符号語抽出部21と同様の構成を有するとともに、順序決定部205を有する。ただし、符号語ロード部202は、符号語ロード部202Aに置き換えられる。
例えば動画像のデータストリームを扱う場合、シーンの切り替わりがない限り、前フレームと現フレームとの画像周波数成分の相関は強いと考えられる。従って、図20に示す符号語抽出部21Aをそのようなデータストリームの処理に適用した場合、例えばフレームごとに符号語の発生頻度を計測し、その計測結果に応じて符号語の優先順位を決定することが可能である。これにより、次のフレームのデコードを行う前に、発生頻度の計測結果に応じて符号語テーブルの並び替えを行うことが可能になり、符号語抽出処理の高速化を図ることが可能となる。
なお、複数の一致検出部において並列に検出動作を行う場合、処理の開始直後においては、一部の一致検出部に有効な符号語がロードされていない状態となるため、正常な検出動作が行われない。そのため、各一致検出部は、記憶部に有効な符号語がロードされていない初期の状態において、検出結果の出力(S_BLo,S_CWo)を未検出状態(全ビット‘0’)に設定することが好ましい。これにより、有効な符号語がロードされていない一致検出部が存在する場合でも、正しい検出結果が得られる。
Claims (15)
- 可変長符号化されたデータストリームから符号語を抽出する符号語抽出装置であって、
上記データストリームの先頭から第1のデータ長のデータブロックを抽出し、入力される第1の信号に応じて当該抽出位置を上記データストリームの末尾側にシフトさせるデータストリームシフト部と、
少なくとも1つの符号語を記憶可能な記憶部をそれぞれ有し、上記データストリームシフト部において抽出されるデータブロック中の少なくとも先頭のデータを含んだ一連のデータと当該記憶部に記憶される符号語とを比較し、当該比較において一致する符号語を検出した場合、当該検出した符号語のデータ長に応じて上記抽出位置をシフトさせる上記第1の信号を出力し、該第1の信号を出力した後に新たに抽出したデータブロックの一致検出を行う、複数の一致検出部と、
上記データストリームからの符号語の抽出を開始する際に、対応付けられた可変長符号のビットの数が少ない符号語を当該対応付けられた可変長符号のビットの数が多い符号語より優先する所定の順序において最も優先順位が高い少なくとも1つの符号語を上記複数の一致検出部の第1の一致検出部の記憶部にロードし、上記データストリームシフト部において新たなデータブロックが抽出された場合、上記複数の一致検出部の複数の第2の一致検出部において順番に1つの一致検出部を選択するとともに、複数の上記符号語から上記所定の順序に従って順番に少なくとも1つの符号語を選択し、当該選択した第2の一致検出部の記憶部に当該選択した符号語をロードする、符号語ロード部と、
を有する符号語抽出装置。 - 上記符号語ロード部は、対応付けられた可変長符号のビットの数が等しい複数の符号語の中から、ランレングスが短い符号語をランレングスが長い符号語より優先して選択し、上記一致検出部の記憶部にロードする、
請求項1に記載の符号語抽出装置。 - 上記符号語ロード部は、上記ランレングスの長さが同じ場合、対応付けられた可変長符号のビットの数が等しい複数の符号語の中から、レベルが小さい符号語をレベルが大きい符号語より優先して選択し、上記一致検出部の記憶部にロードする、
請求項2に記載の符号語抽出装置。 - 上記複数の一致検出部において一致が検出された一連の符号語に基づいて、上記一致検出部に上記符号語をロードする順序を決定する順序決定部を有し、
上記符号語ロード部は、上記順序決定部において決定された順序に従って、上記複数の符号語から順番に少なくとも1つの符号語を選択し、上記一致検出部の記憶部にロードする、
請求項1に記載の符号語抽出装置。 - 上記順序決定部は、上記複数の一致検出部において一致が検出された一連の符号語に重複して含まれる同一符号語の数を計数し、当該計数結果に応じて上記順序を決定する、
請求項4に記載の符号語抽出装置。 - 可変長符号化されたデータストリームを復号化する復号化装置であって、
上記データストリームから符号語を抽出する符号語抽出部と、
上記符号語抽出部において抽出される符号語に基づいて、可変長符号化された情報を再生する情報再生部とを有し、
上記符号抽出部は、
上記データストリームの先頭から第1のデータ長のデータブロックを抽出し、入力される第1の信号に応じて当該抽出位置を上記データストリームの末尾側にシフトさせるデータストリームシフト部と、
少なくとも1つの符号語を記憶可能な記憶部をそれぞれ有し、上記データストリームシフト部において抽出されるデータブロック中の少なくとも先頭のデータを含んだ一連のデータと当該記憶部に記憶される符号語とを比較し、当該比較において一致する符号語を検出した場合、当該検出した符号語のデータ長に応じて上記抽出位置をシフトさせる上記第1の信号を出力し、該第1の信号を出力した後に新たに抽出したデータブロックの一致検出を行う、複数の一致検出部と、
対応付けられた可変長符号のビットの数が少ない符号語を当該対応付けられた可変長符号のビットの数が多い符号語より優先する所定の順序において最も優先順位が高い少なくとも1つの符号語を上記複数の一致検出部の第1の一致検出部の記憶部にロードし、上記データストリームシフト部において新たなデータブロックが抽出された場合、上記複数の一致検出部の複数の第2の一致検出部において順番に1つの一致検出部を選択するとともに、複数の上記符号語から上記所定の順序に従って順番に少なくとも1つの符号語を選択し、当該選択した一致検出部の記憶部に当該選択した符号語をロードする、符号語ロード部とを含む、
復号化装置。 - 上記符号語ロード部は、対応付けられた可変長符号のビットの数が等しい複数の符号語の中から、ランレングスが短い符号語をラレングスが長い符号語より優先して選択し、上記一致検出部の記憶部にロードする、
請求項6に記載の復号化装置。 - 上記複数の一致検出部において一致が検出された一連の符号語に基づいて、上記一致検出部に上記符号語をロードする順序を決定する順序決定部を有し、
上記符号語ロード部は、上記順序決定部において決定された順序に従って、上記複数の符号語から順番に少なくとも1つの符号語を選択し、上記一致検出部の記憶部にロードする、
請求項6に記載の復号化装置。 - 上記順序決定部は、上記複数の一致検出部において一致が検出された一連の符号語に重複して含まれる同一符号語の数を計数し、当該計数結果に応じて上記順序を決定する、
請求項8に記載の復号化装置。 - 可変長符号化された画像のデータストリームを復号化する復号化部を有し、当該復号化部において復号化される画像の情報に基づいて画像を再生する画像再生装置であって、
上記復号化部は、
上記データストリームから符号語を抽出する符号語抽出部と、
上記符号語抽出部において抽出される符号語に基づいて、可変長符号化された画像の情報を再生する情報再生部とを有し、
上記符号抽出部は、
上記データストリームの先頭から第1のデータ長のデータブロックを抽出し、入力される第1の信号に応じて当該抽出位置を上記データストリームの末尾側にシフトさせるデータストリームシフト部と、
少なくとも1つの符号語を記憶可能な記憶部をそれぞれ有し、上記データストリームシフト部において抽出されるデータブロック中の少なくとも先頭のデータを含んだ一連のデータと当該記憶部に記憶される符号語とを比較し、当該比較において一致する符号語を検出した場合、当該検出した符号語のデータ長に応じて上記抽出位置をシフトさせる上記第1の信号を出力し、該第1の信号を出力した後に新たに抽出したデータブロックの一致検出を行う、複数の一致検出部と、
対応付けられた可変長符号のビットの数が少ない符号語を当該対応付けられた可変長符号のビットの数が多い符号語より優先する所定の順序において最も優先順位が高い少なくとも1つの符号語を上記一致検出部の第1の一致検出部の記憶部にロードし、上記データストリームシフト部において新たなデータブロックが抽出された場合、上記複数の一致検出部の複数の第2の一致検出部において順番に1つの一致検出部を選択するとともに、複数の上記符号語から上記所定の順序に従って順番に少なくとも1つの符号語を選択し、当該選択した一致検出部の記憶部に当該選択した符号語をロードする、符号語ロード部とを含む、
画像再生装置。 - 上記符号語ロード部は、対応付けられた可変長符号のビットの数が等しい複数の符号語の中から、ランレングスが短い符号語をランレングスが長い符号語より優先して選択し、上記一致検出部の記憶部にロードする、
請求項10に記載の画像再生装置。 - 上記複数の一致検出部において一致が検出された一連の符号語に基づいて、上記一致検出部に上記符号語をロードする順序を決定する順序決定部を有し、
上記符号語ロード部は、上記順序決定部において決定された順序に従って、上記複数の符号語から順番に少なくとも1つの符号語を選択し、上記一致検出部の記憶部にロードする、
請求項10に記載の画像再生装置。 - 上記順序決定部は、上記複数の一致検出部において一致が検出された一連の符号語に重複して含まれる同一符号語の数を計数し、当該計数結果に応じて上記順序を決定する、
請求項12に記載の画像再生装置。 - 可変長符号化されたデータストリームから符号語を抽出する符号語抽出方法であって、
上記データストリームからの符号語の抽出を開始する際に、上記符号語に対応するデータテーブルを第1の記憶部から複数の第2の記憶部にロードする第1の工程と、
対応付けられた可変長符号のビットの数が少ない符号語を当該対応付けられた可変長符号のビットの数が多い符号語より優先する所定の順序において最も優先順位が高い符号語を一致検出部の第1の一致検出部の第3の記憶部にロードし、新たなデータブロックが抽出される場合、上記所定の順序に従って優先順位が高い順序で上記複数の第2の記憶部の1つを選択するとともに、当該選択した上記データテーブルのデータを上記一致検出部の複数の第2の一致検出部の第4の記憶部に順番にロードする第2の工程と、
上記第2の工程において抽出されるデータブロック中の上記優先順位が最も高いデータと、上記第1の工程において上記第1の記憶部からロードされた上記データテーブルのデータと比較し一致検出を行う第3の工程と、
上記第2の工程において、新たなデータブロックが抽出される場合、当該抽出されるデータブロック中の少なくとも先頭のデータを含んだ一連のデータと、上記第1の工程において上記複数の第2の記憶部からロードされた上記データテーブルのデータとを上記複数の第2の一致検出部で順番に比較し、当該比較において一致する符号語を検出する第4の工程と、
を有し、
上記第4の工程において一致する符号語が検出された場合、当該検出された符号語のデータ長に応じて、上記第1の工程における上記データブロックの抽出位置を上記データストリームの末尾側にシフトさせて、上記第1の工程から上記第4の工程を繰り返す、
符号語抽出方法。 - 上記第4の工程において、上記符号語のデータ長が等しい場合、上記データブロックの一連のデータと上記データテーブルのデータと比較する上記順番は、ランレングスが短い符号語をランレングスが長い符号語より優先する
請求項14に記載の符号語抽出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005010098A JP4466382B2 (ja) | 2005-01-18 | 2005-01-18 | 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005010098A JP4466382B2 (ja) | 2005-01-18 | 2005-01-18 | 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006203301A JP2006203301A (ja) | 2006-08-03 |
JP4466382B2 true JP4466382B2 (ja) | 2010-05-26 |
Family
ID=36960935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005010098A Active JP4466382B2 (ja) | 2005-01-18 | 2005-01-18 | 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4466382B2 (ja) |
-
2005
- 2005-01-18 JP JP2005010098A patent/JP4466382B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2006203301A (ja) | 2006-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7119723B1 (en) | Decoding variable length codes while using optimal resources | |
US6014095A (en) | Variable length encoding system | |
KR100748485B1 (ko) | 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법 | |
KR100924907B1 (ko) | 가변 길이 코딩된 비트스트림 디코딩 방법 및 장치와 기록 캐리어 | |
US7343542B2 (en) | Methods and apparatuses for variable length encoding | |
WO2006070925A1 (en) | Device and data method for selective compression and decompression and data format for compressed data | |
US6809665B2 (en) | Apparatus and method for decoding variable length code | |
US6546053B1 (en) | System and method for decoding signal and method of generating lookup table for using in signal decoding process | |
JPH1065549A (ja) | 可変長符号化データ値の長さを決定する装置、可変長符号化データ値のデータストリームを復号化する装置および可変長符号化データ値の長さを決定する方法 | |
CZ288596A3 (en) | Method of encoding color values in a picture and apparatus for making the same | |
US5696506A (en) | Apparatus for variable-length decoding image signals using a run equivalent signal | |
US7728745B2 (en) | Variable length code decoding apparatus and method with variation in timing of extracting bit string to be decoded depending on code word | |
KR19980702418A (ko) | 가변 길이 디코더 | |
US8228214B2 (en) | Variable-length code decoding apparatus and method | |
JP4466382B2 (ja) | 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置 | |
US6563442B1 (en) | Multiple symbol length lookup table | |
US6781528B1 (en) | Vector handling capable processor and run length encoding | |
JP2002026737A (ja) | データ復号化装置とその方法 | |
US6707398B1 (en) | Methods and apparatuses for packing bitstreams | |
KR0152035B1 (ko) | 가변장복호화방법 및 그 장치 | |
JP2934603B2 (ja) | 可変長さコードの復号化方法及びその装置 | |
US6707397B1 (en) | Methods and apparatus for variable length codeword concatenation | |
KR0184405B1 (ko) | 가변길이 부호화 방법 및 장치 | |
JP3093485B2 (ja) | 復号装置 | |
JPH1131973A (ja) | 符号化装置、符号化方法、復号化装置、復号化方法、伝送媒体、および、情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070724 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091001 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091006 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091127 |
|
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: 20100202 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100215 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |