可変長符号復号装置、復号システムおよび可変長符号復号方法
【課題】可変長符号の出現パターンに依存せずに復号処理性能を向上可能とする。
【解決手段】VLD装置3は、第1テーブル記憶部11と、第2テーブル記憶部12と、優先度判定部13と、係数バッファ14と、係数格納制御部15と、DCT係数記憶部16とを有する。第2テーブル記憶部12は、複数種類の可変長符号の組合せを、それに対応する複数種類のDCT係数のゼロ値情報の組合せに対応づけた第2のテーブルを記憶する。第2のテーブルにより、入力ビットストリーム中の最大2つの可変長符号を同時に復号可能であり、可変長符号のビットパターンに依存せずに、復号処理性能を向上できる。また、ブロック単位で復号するのに必要な可変長符号のみを合成テーブルに登録しておくため、合成テーブル内の可変長符号の登録数を削減できる。
【解決手段】VLD装置3は、第1テーブル記憶部11と、第2テーブル記憶部12と、優先度判定部13と、係数バッファ14と、係数格納制御部15と、DCT係数記憶部16とを有する。第2テーブル記憶部12は、複数種類の可変長符号の組合せを、それに対応する複数種類のDCT係数のゼロ値情報の組合せに対応づけた第2のテーブルを記憶する。第2のテーブルにより、入力ビットストリーム中の最大2つの可変長符号を同時に復号可能であり、可変長符号のビットパターンに依存せずに、復号処理性能を向上できる。また、ブロック単位で復号するのに必要な可変長符号のみを合成テーブルに登録しておくため、合成テーブル内の可変長符号の登録数を削減できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、可変長符号を復号する可変長符号復号装置、復号システムおよび可変長符号復号方法に関する。
【背景技術】
【0002】
H.264、VC−1、MPEG−4、MPEG−2およびJPEG等の画像の圧縮伸張規格はいずれも、可変長符号を用いており、復号システム内には、可変長符号復号装置が必要となる。ところが、可変長符号復号処理は、複数の可変長符号を並列して復号処理するのが難しく、復号システムの処理性能上のボトルネックとなりやすい部分である。
【0003】
従来、画面解像度が標準解像度(SD:Standard Definition)の場合は、1クロックサイクル当り1シンボルを復号できれば十分であるが、画面解像度が高精細(HD:High Definition)からスーパーハイビジョンへと大きくなるに従って、復号効率を上げる必要が生じ、1クロックサイクルごとに複数の可変長符号を復号する処理性能が要求されるようになってきた。
【0004】
同一のクロックサイクル内に複数の可変長符号を復号する処理が従来から提案されている(特許文献1,2参照)が、動作周波数の高速化が困難であったり、復号処理性能が可変長符号の出現パターンに依存するなどの問題があった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−158698号公報
【特許文献2】特開2008−227946号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本願発明の実施形態は、可変長符号の出現パターンに依存せずに復号処理性能を向上可能な可変長符号復号装置、復号システムおよび可変長符号復号方法を提供するものである。
【課題を解決するための手段】
【0007】
本実施形態によれば、複数の可変長符号からなる入力ビットストリームを、非ゼロ値と0個以上の連続したゼロ値の数を表すゼロ値情報とからなる復号データに復号する可変長符号復号装置において、
個々の前記可変長符号を、対応する復号データのゼロ値情報に対応づけた第1のテーブルを記憶する第1テーブル記憶部と、
複数種類の可変長符号の組合せを、それに対応する複数種類の復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶する第2テーブル記憶部と、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出す優先度判定部と、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、復号データを生成する復号部と、を備えることを特徴とする可変長符号復号装置が提供される。
【図面の簡単な説明】
【0008】
【図1】一実施形態に係る復号システムの概略構成を示すブロック図。
【図2】H.264におけるrunと可変長符号との対応関係を登録したテーブルの一例を示す図。
【図3】図2のテーブルに基づいて符号化された可変長符号を、元のDCT係数に変換する可変長符号復号処理を説明する図。
【図4】VLD装置3の内部構成の一例を示す図。
【図5】第1例に係る合成テーブルを示す図。
【図6】図5の合成テーブルを用いた場合と公知のテーブルを用いた場合とで、復号処理の処理性能を比較した図。
【図7】一実施形態に係るVLD装置3が行う復号処理の処理手順を示すフローチャート。
【図8】第2の例に係る合成テーブルを示す図。
【図9】図8の合成テーブルを用いた場合の復号処理の処理性能を、図5の合成テーブルまたは公知のテーブルを用いた場合とで比較した図。
【図10】第3の例に係る合成テーブルを示す図。
【図11】条件3を説明する図。
【図12】図10の合成テーブルを用いた場合の復号処理の処理性能を、図5の合成テーブル、図8の合成テーブル、または公知のテーブルを用いた場合とで比較した図。
【図13】第4例に係る合成テーブルを示す図。
【図14】図13の合成テーブルを用いた場合の復号処理の処理性能を、図10の合成テーブル、または公知のテーブルを用いた場合とで比較した図。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、本発明の実施形態を説明する。
【0010】
図1は一実施形態に係る復号システムの概略構成を示すブロック図である。図1の復号システム1は、入力ビットストリームを一時的に格納するFIFO装置2と、VLD(Variable Length Decoding、可変長符号復号)装置3と、IQ(Inverse Quantization、逆量子化)装置4と、IDCT(Inverse Discrete Cosine、逆離散コサイン変換)装置5と、MC(Motion Compensation、動き補償)装置6と、フレームメモリ7とを備えている。
【0011】
VLD装置3は、入力ビットストリームに含まれる可変長符号を復号して、例えばDCT(Discrete Cosine Transform)係数に変換する。IQ装置4は、DCT係数を逆量子化する。IDCT装置5は、逆量子化後のデータに対して逆離散コサイン変換を行って、周波数変換の情報から画素情報に変換する。MC装置6は、逆離散コサイン変換後のデータに対して動き補償を行って、復号データを生成する。生成された復号データは、フレームメモリ7に格納される。
【0012】
以下では、VLD装置3の内部構成および処理動作を中心に説明する。
【0013】
入力ビットストリームは、複数の可変長符号を含んでいる。可変長符号は、出現頻度の高い符号語ほど符号長は短い。入力ビットストリームは、不図示の符号化装置により符号化されたものであり、以下では一例として、H.264の規格で符号化された入力ビットストリームについて説明する。H.264の入力ビットストリームは、元の画像データに対して、動き補償、DCT(Discrete Cosine Transform)変換および量子化を行って符号化したものである。
【0014】
DCT変換では、元の画像データ中の画素信号を周波数成分に変換し、画面内の冗長情報を削減する。DCT変換により、DCT係数が生成される。DCT係数は、非ゼロ値または0個以上のゼロ値で構成される。「非ゼロ値の前の連続したゼロ値の個数」をrunと呼ぶ。H.264ではrun_beforeと呼ばれており、MPEG−2、MPEG−4およびJPEGなどでは単にrunと呼ぶが、本質的な違いはないため、以下では区別せずにrunという名称を用いる。
【0015】
DCT係数は可変長符号に変換される。図2はH.264におけるrunと可変長符号との対応関係を登録したテーブルの一例を示す図である。出現頻度の高い符号ほど符号長が短くなっており、runの数が大きくなるほど符号長が長くなっている。
【0016】
図3は、図2のテーブルに基づいて符号化された可変長符号を、元のDCT係数に変換する可変長符号復号処理を説明する図である。個々の可変長符号は、図2のテーブルに示すように、非ゼロ値または0個以上のゼロ値で構成されるDCT係数を符号化したものである。図3の例では、入力ビットストリームには、run=7の可変長符号「00001」と、run=0の可変長符号「111」と、run=2の可変長符号「101」とが含まれている。
【0017】
可変長符号復号処理では、入力ビットストリームに含まれる個々の可変長符号を、送信順序とは逆の順序に復号化する。図3の例では、まず、run=2の可変長符号「101」を復号して、非ゼロ値X4とゼロ値「00」からなる計3個のDCT係数に変換し、次に、run=0の可変長符号「111」を復号して、非ゼロ値X3からなる計1個のDCT係数に変換し、次に、run=7の可変長符号「00001」を復号して、非ゼロ値X2とゼロ値「0000000」からなる計8個のDCT係数に変換する。
【0018】
これらのDCT係数は、図3に示すように、4×4ブロックの各マス目にシグザグ状に配置される。DCT係数は、元画像を低周波数成分と高周波数成分に分解したものであり、DCT係数をブロック内でジグザグ状に配置することで、画質に大きな影響を与える低周波数成分のDCT係数をブロック内の一部分に集めることができる。
【0019】
その後、IQ装置4、IDCT装置5およびMC装置6は順に、ブロック単位で、DCT係数に対して、逆量子化、逆離散コサイン変換および動き補償を行って、元の画像データを復元する。復元された画像データは、フレームメモリ7に格納される。
【0020】
図4はVLD装置3の内部構成の一例を示す図である。図4のVLD装置3は、第1テーブル記憶部11と、第2テーブル記憶部12と、優先度判定部13と、係数バッファ14と、係数格納制御部(復号部)15と、DCT係数記憶部16とを有する。以下では、第1テーブル記憶部11と第2テーブル記憶部12とを統合した合成テーブル記憶部10を有する例を説明する。
【0021】
第1テーブル記憶部11は、可変長符号と、DCT係数のゼロ値情報とを対応づけた第1のテーブルを記憶する。第2テーブル記憶部12は、複数種類の可変長符号の組合せと、複数種類のDCT係数のゼロ値情報の組合せとを対応づけた第2のテーブルを記憶する。第1のテーブルと第2のテーブルの具体例については後述するが、本実施形態は、第1のテーブルと第2のテーブルを統合した合成テーブルを合成テーブル記憶部10に記憶している。
【0022】
優先度判定部13は、合成テーブル内の第1のテーブルに記憶されたゼロ値情報を読出すか、第2のテーブルに記憶されたゼロ値情報の組合せを読出すかを判定する。より具体的には、優先度判定部13は、入力ビットストリームに含まれる可変長符号およびその組合せが、合成テーブル内の第1および第2のテーブルの双方に含まれる場合は、第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出す。また、優先度判定部13は、入力ビットストリームに含まれる可変長符号およびその組合せが、第2のテーブルには記憶されておらず第1のテーブルに記憶されている場合は、第1のテーブルに記憶された該当するゼロ値情報を読出す。
【0023】
係数バッファ14は、優先度判定部13が第2のテーブルからゼロ値情報の組合せを優先して読出した場合に、対応する非ゼロ値を入力ビットストリーム中から取得して、一時的に記憶する。入力ビットストリームには、可変長符号のそれぞれに対応づけて、非ゼロ値が予め含まれている。係数バッファ14は必要に応じて、入力ビットストリーム中の非ゼロ値を取得して、一時的に格納する。
【0024】
ゼロ値情報のそれぞれに対応して可変長符号に非ゼロ値が存在するため、優先度判定部13がゼロ値情報の組合せを読出した場合は、複数種類の非ゼロ値が存在することになる。したがって、係数バッファ14を設けた理由は、それらすべての非ゼロ値の書き込みが完了するまで、一時的に保持しておく必要があるためである。
【0025】
係数格納制御部15は、入力ビットストリームに含まれる複数種類の可変長符号(例えば4×4個)を処理単位として、優先度判定部13が読出したゼロ値情報またはその組合せに基づいて、上述した図3に示す手順でDCT係数を生成する制御を行う。生成されたDCT係数はDCT係数記憶部16に記憶される。
【0026】
第2のテーブルの具体例として種々のものが考えられる。以下では、一例として4種類の例を説明する。以下に説明する各テーブルは、便宜上、第1のテーブルと第2のテーブルを一つにまとめた合成テーブルである。合成テーブル中の第1のテーブルはいずれも共通であり、第2のテーブルのみが異なっている。
【0027】
(合成テーブルの第1例)
図5は第1例に係る合成テーブルを示す図である。図5の合成テーブル中の第2のテーブルは、2つの可変長符号の組合せと、それに対応するゼロ値情報の組合せとを登録したものである。図5では、可変長符号をVLC code、それに対応するゼロ値情報をrunと表記している。例えば、runが(0)とは、連続する2つの非ゼロ値の間のゼロ値の数がゼロであることを意味する。例えば、runが(0,0)とは、連続する3つの非ゼロ値の間のそれぞれにゼロ値が存在しないことを示している。別の見方をすると、間にゼロ値の数がゼロの非ゼロ値が3つ連続して並んでいることを示している。また、runが(1,13)とは、連続する3つの非ゼロ値のうち、一方の連続する2つの非ゼロ値の間のゼロ値の数が1個で、もう一方の連続する2つの非ゼロ値の間のゼロ値の数が13個であることを示している。このように、図5のrunとは、連続する2つまたは3つの非ゼロ値の間にあるゼロ値の数を表している。
【0028】
図5の合成テーブルは、4×4ブロックを基準として、DCT係数への復号処理を行う場合に対応している。1つのブロックには、16個の処理単位が含まれており、各処理単位にはDCT係数の非ゼロ値またはゼロ値が入る。図5の合成テーブルは、最大2つの可変長符号の組合せをゼロ値情報の組合せに変換できるようにしたことを特徴としている。
【0029】
図5の合成テーブルを作成する条件は、非ゼロ値の数とゼロ値の数の合計値が1ブロック内の要素の総数である16個を超えないことであり、この条件を満たすデータのみが登録される。したがって、少なくとも2つの非ゼロ値の間のゼロ値の数が14を超えることはない。図5の合成テーブルでは、runの値の合計が14を超えるものをすべて除外し、合成テーブルの登録数を削減している。
【0030】
図5の合成テーブルは、1つの可変長符号に対応するゼロ値情報を示す第1のテーブルと、2つの可変長符号の組合せに対応するゼロ値情報を示す第2のテーブルとを含んでいる。例えば、入力ビットストリームが奇数個の可変長符号を含む場合は、入力ビットストリームの先頭から2個ずつの可変長符号に対して図5の合成テーブルを参照して復号処理を行うため、入力ビットストリームの最後に1つの可変長符号が残る。したがって、それに対応したゼロ値情報を第2のテーブルだけからは見つけ出すことができなくなるため、第1のテーブルも含めている。
【0031】
図6は、図5の合成テーブルを用いた場合と公知のテーブルを用いた場合とで、復号処理の性能を比較した図である。図6では、各可変長符号をゼロ値情報と対応づけた単一符号テーブルを用いて復号処理を行った場合と、特開2007−158698号公報に開示されたテーブルを用いて復号処理を行った場合と、特開2008−227946号公報に開示されたテーブルを用いて復号処理を行った場合とで、処理性能を比較している。図6は、各テーブルのみの性能であり、その他の構成の性能は含まれていない。
【0032】
特開2008−227946号公報に開示されたテーブルでは、可変長符号が特定のビットパターンのとき(例えば、0と1が交互に現れるとき)、復号処理に必要な処理サイクル数が11まで増加する。一方、図5の合成テーブルでは、可変長符号のビットパターンに依存せず、常に8つの処理サイクル数で復号処理を行うことができる。
【0033】
ただし、図5の合成テーブルは、登録数が多いことから合成テーブルのデータ容量が大きくなってしまう。したがって、この合成テーブルを半導体装置内に実装しようとすると、基板上の占有面積が大きくなってしまう。そこで、以下に説明する第2〜第4の例に係る合成テーブルでは、合成テーブルの縮小化を図っている。
【0034】
第2〜第4の例に係る合成テーブルについて説明する前に、これら第1〜第4の例に係る合成テーブルのいずれかを使用してDCT係数への復号処理を行う処理手順を、図7を用いてより詳細に説明する。
【0035】
図7は一実施形態に係るVLD装置3が行う復号処理のフローチャートである。まず、入力ビットストリームの先頭を取得する(S1)。図5の合成テーブルを用いる場合、VLD装置3は最大2つの可変長符号を同時に取得できるだけのビット数を、入力ビットストリームの残量を上限として取得することになる。なお、用いる合成テーブルにより、取得するビット数の上限は異なる。
【0036】
次に、取得した可変長符号またはその組合せが合成テーブル中に存在するか否かを検索する(S2)。ここでは、入力ビットストリームの先頭部分に含まれるビット列が、合成テーブル中の可変長符号に一致するか否かを検索し、一致した可変長符号を候補として抽出する。この抽出作業を、合成テーブルの全体に対して行う。合成テーブル中の第1テーブルには1つの可変長符号が記憶され、第2テーブルには最大2つの可変長符号の組合せが記憶されているため、場合によっては、入力ビットストリームの先頭部分に含まれるビット列と一致する可変長符号、またはその組合せが複数個検索される場合がある。もし、取得した可変長符号またはその組合せが合成テーブル中に存在しなければ、エラー処理を行う(S3)。
【0037】
取得した可変長符号またはその組合せが合成テーブルに存在する場合(S2,Yes)は、合成テーブル中に複数の候補が存在するか否かを判定する(S4)。複数の候補が存在する場合は、その中で最も符号数が多い可変長符号の組合せのゼロ値情報を選択する(S5)。
【0038】
図5の合成テーブルの場合は、入力ビットストリームから取得された2つの可変長符号の組合せに一致したゼロ値情報が第2のテーブルから読出される。なお、入力ビットストリームの可変長符号が奇数個の場合、すなわち、1つの可変長符号のみが取得された場合は、ゼロ値情報は第1のテーブルから読出される。
【0039】
上述したS5の処理が終了したか、または上述したS4で複数の候補が存在しないと判定された場合は、取得した可変長符号(またはその組合せ)の符号数を変数NUMに、総ビット長を変数BLとする(S6)。次に、取得した可変長符号(またはその組合せ)について、DCT係数への復号処理を行う(S7)。
【0040】
例えば、入力ビットストリームの先頭部分にビット列「111010」が含まれている場合は、図5の合成テーブルから(0,5)が抽出され、復号処理では、ゼロ値なしの非ゼロ値からなる1個のDCT係数と、ゼロ値からなる5個のDCT係数と、非ゼロ値からなる1個のDCT係数とに復号される。
【0041】
一つの可変長符号の復号処理が終わると、変数NUMを1だけ減らす(S8)。次に、変数NUMがゼロになったか否かを判定し(S9)、ゼロでなければS7以降の処理を繰り返す。変数NUMがゼロであれば入力ビットストリームの先頭位置を変数BLで示すビット長分だけシフトする(S10)。シフトした結果、入力ビットストリームの終端に達したか否かを判定する(S11)。入力ビットストリームの終端に達していなければS1に戻り、達した場合には処理を終了する。
【0042】
このように、第1例に係る合成テーブルは、入力ビットストリーム中の最大2つの可変長符号を同時に復号可能としており、可変長符号のビットパターンに依存せずに、復号処理性能を向上できる。また、ブロック単位を基に必要な可変長符号のみを合成テーブルに登録しておくため、合成テーブル内の可変長符号の登録数を削減できる。
【0043】
(合成テーブルの第2例)
図8は第2の例に係る合成テーブルを示す図である。図8の合成テーブルは、第1のテーブルと、最大4つまでの可変長符号の組合せとそれに対応するゼロ値情報を示す第2のテーブルとを含んでいる。図8の合成テーブルの第2のテーブルでは、データ量の増大を防止するために、以下の条件1,2を満たすデータのみを登録している。なお、条件1は第1例の合成テーブルと同じ条件である。条件1,2ともに、4×4処理単位を1ブロックとすることを想定している。
1:runの合計値(ゼロ値の数の総計)と非ゼロ値の数の総計が16を超えない。
【0044】
2:可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数の合計値が4以上になった場合は、それ以上には別の可変長符号を組み合わせない。
【0045】
条件2は、1ブロックの復号処理を4クロックサイクル以内で完了する方針で設けたものである。この方針を担保するために、1クロックサイクル以内に、非ゼロ値の数とゼロ値の数の合計値を4以上にする。逆に、1クロックサイクルで上述した合計値が4以上になった場合は、それ以上、合計値を大きくしない。
【0046】
このような観点で、条件2では、非ゼロ値の数とゼロ値の数の合計値が最大4になるまで、可変長符号の組合せ数を増やしていき、それ以上には別の可変長符号を組み合わせないようにして、可変長符号の組合せ数を削減している。
【0047】
図8の合成テーブルの場合、4×4ブロックを復号する際、入力ビットストリーム中の可変長符号のビットパターンに依存せずに、4クロックサイクルで復号処理を行うことができる。
【0048】
図9は、第2例の合成テーブルを用いた場合の復号処理の性能を、第1例の合成テーブルまたは公知のテーブルを用いた場合とで比較した図である。第2例の合成テーブルの場合は、符号語数と符号総ビット数が第1例の合成テーブルよりも削減されており、半導体装置上の占有面積も削減できる。また、符号語数と符号総ビット数を削減しても、復号処理に要するクロックサイクル数は第1例の合成テーブルから半減しており、復号処理の高速化が図れる。
【0049】
このように、第2例の合成テーブルは、最大4つの可変長符号を同時に復号可能としており、第1例の合成テーブルよりもさらに復号処理性能を向上できる。また、4×4ブロックを4クロックサイクルで復号できる限りは、合成テーブルのデータ量を抑制でき、小型化が実現できる。
【0050】
(合成テーブルの第3例)
図10は第3の例に係る合成テーブルを示す図である。図10の合成テーブル、第1のテーブルと、図8の合成テーブルと同様に最大4つまでの可変長符号の組合せとそれに対応するゼロ値情報を示す第2のテーブルとを含んでいる。図10の合成テーブルでは、上述した条件1と2に加えて、以下の条件3を満たすデータを登録している。
【0051】
3:非ゼロ値の数とゼロ値の数の合計値が8未満である。
【0052】
図11は条件3を説明する図である。図11は、先頭から3つの非ゼロ値が続いた後、最後のDCT係数までのゼロ値の数を種々変化させた例を示している。以降のゼロ値の数が1個から4個までは、条件2を担保するために、合成テーブルに含めておく。一方、以降のゼロ値の数が5個以上の場合は、このゼロ値に対応する可変長符号を次のクロックサイクルで復号処理しても、1クロックサイクルでrunを平均して4つ進めることができるため、合成テーブルから除外しても処理性能の低下を招かない。したがって、以降のゼロ値の数が5個以上の場合は、合成テーブルに含めなくてもよい。これが条件3である。この条件3を設けることで、図8の合成テーブルよりも、大幅に登録数を削減できる。
【0053】
図12は、第3例の合成テーブルを用いた場合の復号処理の性能を、第1例の合成テーブル、第2例の合成テーブル、または公知のテーブルを用いた場合とで比較した図である。第3例の合成テーブルの場合は、符号語数と符号総ビット数が第2例よりもさらに削減されており、半導体装置上の形成面積のさらなる削減が可能となる。
【0054】
このように、第3例の合成テーブルでは、第2例の合成テーブルと同様に、最大4つの可変長符号を同時に復号可能であることに加えて、非ゼロ値の数とゼロ値の数の合計値が8未満の場合、すなわち非ゼロ値とゼロ値の数の合計が2クロックサイクルで1ブロックの半分以上を占める場合は、対応する可変長符号を合成テーブルに含めないようにする。このため、第2例の合成テーブルよりも大幅に登録数を削減でき、合成テーブルの半導体装置上の占有面積を削減でき、小型化が図れる。
【0055】
上述した説明では、4×4ブロックを4クロックサイクル以内に処理する例を説明したが、別のクロックサイクルで処理することも可能である。例えば、4×4ブロックを2クロックサイクルで処理するには、1クロックサイクルでrunを8以上進められるような合成テーブルを作成すればよい。
【0056】
(合成テーブルの第4例)
第2例および第3例に係る合成テーブルでは、1クロックサイクル当り4つの可変長符号を復号する例を説明したが、以下に説明する第4例に係る合成テーブルは、1クロックサイクル当り2つの可変長符号を復号するものである。第4例に係る合成テーブルは、処理性能を落とす代わりに、さらなる合成テーブルのデータ量の削減化を図っている。
【0057】
図13は第4例に係る合成テーブルを示す図である。図13の合成テーブルは、第1のテーブルと、わずか2つの登録数を持つ第2のテーブルとを含んでいる。
【0058】
第4例に係る合成テーブルを作成する条件は、以下の通りである。
【0059】
1:runの合計値(ゼロ値の数の総計)と非ゼロ値の数の総計が16を超えない。
【0060】
2’:可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数の合計値は最大2までとする。
【0061】
3’:非ゼロ値の数とゼロ値の数の合計値が4未満である。
【0062】
条件2’は条件2をさらに厳しくしたものであり、条件3’は条件3をさらに厳しくしたものである。条件1、2’および3’を設けることで、第4例の第2のテーブルには、2種類の可変長符号に対応するrun(0,0)、(0,1)の2種類のみが登録されることになる。
【0063】
図14は、第4例の合成テーブルを用いた場合の復号処理の性能を、公知のテーブルを用いた場合とで比較した図である。第4例の合成テーブルは、第1のテーブルにわずか2つの可変長符号についての第2のテーブルを追加しただけであるが、図14ではH.264の規格による単一符号のテーブルと比べて2倍の復号処理性能を備えていることがわかる。
【0064】
このように、第4例の合成テーブルは、合成テーブルの変更を最小限に抑えながら、復号処理性能の向上効果が著しく大きいという特徴があり、実用性に優れている。
【0065】
上述した実施形態で説明した復号システム1およびVLD装置3の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、復号システム1およびVLD装置3の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【0066】
上述した実施形態では、4×4個の要素からなるブロックを単位として復号処理を行う例を説明したが、1ブロック内の要素の数には特に制限はない。要素の数を変えれば、条件1〜3の内容も変わり、第1〜第4の例に係る合成テーブルの登録内容も変化する。
【0067】
例えば、N×N個(Nは2以上の任意の整数)の要素からなるブロックを単位として復号処理を行う場合、合成テーブル内の第2テーブルは、複数種類の可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数との合計値がN×N個を超えない範囲の組合せを登録する。これが上述した条件1を一般化したものである。
【0068】
また、第1および第4の例に係る合成テーブルは、最大2つの可変長符号の組合せに対応しており、第2〜第3の例に係る合成テーブルは、最大4つの可変長符号の組合せに対応している。合成テーブルを、最大何個の可変長符号の組合せに対応させるかも、任意に調整可能であり、本実施形態は、k(kは2以上の整数)種類の可変長符号の組合せに対応した合成テーブルを設ける点に特徴がある。また、条件3は、一般化すると、最大k種類(kは2以上の整数)の可変長符号の組合せの中から、可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数との合計値が所定の閾値を超える該組合せを除外することを指している。
【0069】
また、復号システム1およびVLD装置3の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【0070】
本発明の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本発明の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【0071】
1 復号システム、2 FIFO装置、3 VLD装置、4 IQ装置、5 IDCT装置、6 MC装置、7 フレームメモリ、11 第1テーブル記憶部、12 第2テーブル記憶部、13 優先度判定部、14 係数バッファ、15 係数格納制御部、16 DCT係数記憶部
【技術分野】
【0001】
本発明の実施形態は、可変長符号を復号する可変長符号復号装置、復号システムおよび可変長符号復号方法に関する。
【背景技術】
【0002】
H.264、VC−1、MPEG−4、MPEG−2およびJPEG等の画像の圧縮伸張規格はいずれも、可変長符号を用いており、復号システム内には、可変長符号復号装置が必要となる。ところが、可変長符号復号処理は、複数の可変長符号を並列して復号処理するのが難しく、復号システムの処理性能上のボトルネックとなりやすい部分である。
【0003】
従来、画面解像度が標準解像度(SD:Standard Definition)の場合は、1クロックサイクル当り1シンボルを復号できれば十分であるが、画面解像度が高精細(HD:High Definition)からスーパーハイビジョンへと大きくなるに従って、復号効率を上げる必要が生じ、1クロックサイクルごとに複数の可変長符号を復号する処理性能が要求されるようになってきた。
【0004】
同一のクロックサイクル内に複数の可変長符号を復号する処理が従来から提案されている(特許文献1,2参照)が、動作周波数の高速化が困難であったり、復号処理性能が可変長符号の出現パターンに依存するなどの問題があった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−158698号公報
【特許文献2】特開2008−227946号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本願発明の実施形態は、可変長符号の出現パターンに依存せずに復号処理性能を向上可能な可変長符号復号装置、復号システムおよび可変長符号復号方法を提供するものである。
【課題を解決するための手段】
【0007】
本実施形態によれば、複数の可変長符号からなる入力ビットストリームを、非ゼロ値と0個以上の連続したゼロ値の数を表すゼロ値情報とからなる復号データに復号する可変長符号復号装置において、
個々の前記可変長符号を、対応する復号データのゼロ値情報に対応づけた第1のテーブルを記憶する第1テーブル記憶部と、
複数種類の可変長符号の組合せを、それに対応する複数種類の復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶する第2テーブル記憶部と、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出す優先度判定部と、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、復号データを生成する復号部と、を備えることを特徴とする可変長符号復号装置が提供される。
【図面の簡単な説明】
【0008】
【図1】一実施形態に係る復号システムの概略構成を示すブロック図。
【図2】H.264におけるrunと可変長符号との対応関係を登録したテーブルの一例を示す図。
【図3】図2のテーブルに基づいて符号化された可変長符号を、元のDCT係数に変換する可変長符号復号処理を説明する図。
【図4】VLD装置3の内部構成の一例を示す図。
【図5】第1例に係る合成テーブルを示す図。
【図6】図5の合成テーブルを用いた場合と公知のテーブルを用いた場合とで、復号処理の処理性能を比較した図。
【図7】一実施形態に係るVLD装置3が行う復号処理の処理手順を示すフローチャート。
【図8】第2の例に係る合成テーブルを示す図。
【図9】図8の合成テーブルを用いた場合の復号処理の処理性能を、図5の合成テーブルまたは公知のテーブルを用いた場合とで比較した図。
【図10】第3の例に係る合成テーブルを示す図。
【図11】条件3を説明する図。
【図12】図10の合成テーブルを用いた場合の復号処理の処理性能を、図5の合成テーブル、図8の合成テーブル、または公知のテーブルを用いた場合とで比較した図。
【図13】第4例に係る合成テーブルを示す図。
【図14】図13の合成テーブルを用いた場合の復号処理の処理性能を、図10の合成テーブル、または公知のテーブルを用いた場合とで比較した図。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、本発明の実施形態を説明する。
【0010】
図1は一実施形態に係る復号システムの概略構成を示すブロック図である。図1の復号システム1は、入力ビットストリームを一時的に格納するFIFO装置2と、VLD(Variable Length Decoding、可変長符号復号)装置3と、IQ(Inverse Quantization、逆量子化)装置4と、IDCT(Inverse Discrete Cosine、逆離散コサイン変換)装置5と、MC(Motion Compensation、動き補償)装置6と、フレームメモリ7とを備えている。
【0011】
VLD装置3は、入力ビットストリームに含まれる可変長符号を復号して、例えばDCT(Discrete Cosine Transform)係数に変換する。IQ装置4は、DCT係数を逆量子化する。IDCT装置5は、逆量子化後のデータに対して逆離散コサイン変換を行って、周波数変換の情報から画素情報に変換する。MC装置6は、逆離散コサイン変換後のデータに対して動き補償を行って、復号データを生成する。生成された復号データは、フレームメモリ7に格納される。
【0012】
以下では、VLD装置3の内部構成および処理動作を中心に説明する。
【0013】
入力ビットストリームは、複数の可変長符号を含んでいる。可変長符号は、出現頻度の高い符号語ほど符号長は短い。入力ビットストリームは、不図示の符号化装置により符号化されたものであり、以下では一例として、H.264の規格で符号化された入力ビットストリームについて説明する。H.264の入力ビットストリームは、元の画像データに対して、動き補償、DCT(Discrete Cosine Transform)変換および量子化を行って符号化したものである。
【0014】
DCT変換では、元の画像データ中の画素信号を周波数成分に変換し、画面内の冗長情報を削減する。DCT変換により、DCT係数が生成される。DCT係数は、非ゼロ値または0個以上のゼロ値で構成される。「非ゼロ値の前の連続したゼロ値の個数」をrunと呼ぶ。H.264ではrun_beforeと呼ばれており、MPEG−2、MPEG−4およびJPEGなどでは単にrunと呼ぶが、本質的な違いはないため、以下では区別せずにrunという名称を用いる。
【0015】
DCT係数は可変長符号に変換される。図2はH.264におけるrunと可変長符号との対応関係を登録したテーブルの一例を示す図である。出現頻度の高い符号ほど符号長が短くなっており、runの数が大きくなるほど符号長が長くなっている。
【0016】
図3は、図2のテーブルに基づいて符号化された可変長符号を、元のDCT係数に変換する可変長符号復号処理を説明する図である。個々の可変長符号は、図2のテーブルに示すように、非ゼロ値または0個以上のゼロ値で構成されるDCT係数を符号化したものである。図3の例では、入力ビットストリームには、run=7の可変長符号「00001」と、run=0の可変長符号「111」と、run=2の可変長符号「101」とが含まれている。
【0017】
可変長符号復号処理では、入力ビットストリームに含まれる個々の可変長符号を、送信順序とは逆の順序に復号化する。図3の例では、まず、run=2の可変長符号「101」を復号して、非ゼロ値X4とゼロ値「00」からなる計3個のDCT係数に変換し、次に、run=0の可変長符号「111」を復号して、非ゼロ値X3からなる計1個のDCT係数に変換し、次に、run=7の可変長符号「00001」を復号して、非ゼロ値X2とゼロ値「0000000」からなる計8個のDCT係数に変換する。
【0018】
これらのDCT係数は、図3に示すように、4×4ブロックの各マス目にシグザグ状に配置される。DCT係数は、元画像を低周波数成分と高周波数成分に分解したものであり、DCT係数をブロック内でジグザグ状に配置することで、画質に大きな影響を与える低周波数成分のDCT係数をブロック内の一部分に集めることができる。
【0019】
その後、IQ装置4、IDCT装置5およびMC装置6は順に、ブロック単位で、DCT係数に対して、逆量子化、逆離散コサイン変換および動き補償を行って、元の画像データを復元する。復元された画像データは、フレームメモリ7に格納される。
【0020】
図4はVLD装置3の内部構成の一例を示す図である。図4のVLD装置3は、第1テーブル記憶部11と、第2テーブル記憶部12と、優先度判定部13と、係数バッファ14と、係数格納制御部(復号部)15と、DCT係数記憶部16とを有する。以下では、第1テーブル記憶部11と第2テーブル記憶部12とを統合した合成テーブル記憶部10を有する例を説明する。
【0021】
第1テーブル記憶部11は、可変長符号と、DCT係数のゼロ値情報とを対応づけた第1のテーブルを記憶する。第2テーブル記憶部12は、複数種類の可変長符号の組合せと、複数種類のDCT係数のゼロ値情報の組合せとを対応づけた第2のテーブルを記憶する。第1のテーブルと第2のテーブルの具体例については後述するが、本実施形態は、第1のテーブルと第2のテーブルを統合した合成テーブルを合成テーブル記憶部10に記憶している。
【0022】
優先度判定部13は、合成テーブル内の第1のテーブルに記憶されたゼロ値情報を読出すか、第2のテーブルに記憶されたゼロ値情報の組合せを読出すかを判定する。より具体的には、優先度判定部13は、入力ビットストリームに含まれる可変長符号およびその組合せが、合成テーブル内の第1および第2のテーブルの双方に含まれる場合は、第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出す。また、優先度判定部13は、入力ビットストリームに含まれる可変長符号およびその組合せが、第2のテーブルには記憶されておらず第1のテーブルに記憶されている場合は、第1のテーブルに記憶された該当するゼロ値情報を読出す。
【0023】
係数バッファ14は、優先度判定部13が第2のテーブルからゼロ値情報の組合せを優先して読出した場合に、対応する非ゼロ値を入力ビットストリーム中から取得して、一時的に記憶する。入力ビットストリームには、可変長符号のそれぞれに対応づけて、非ゼロ値が予め含まれている。係数バッファ14は必要に応じて、入力ビットストリーム中の非ゼロ値を取得して、一時的に格納する。
【0024】
ゼロ値情報のそれぞれに対応して可変長符号に非ゼロ値が存在するため、優先度判定部13がゼロ値情報の組合せを読出した場合は、複数種類の非ゼロ値が存在することになる。したがって、係数バッファ14を設けた理由は、それらすべての非ゼロ値の書き込みが完了するまで、一時的に保持しておく必要があるためである。
【0025】
係数格納制御部15は、入力ビットストリームに含まれる複数種類の可変長符号(例えば4×4個)を処理単位として、優先度判定部13が読出したゼロ値情報またはその組合せに基づいて、上述した図3に示す手順でDCT係数を生成する制御を行う。生成されたDCT係数はDCT係数記憶部16に記憶される。
【0026】
第2のテーブルの具体例として種々のものが考えられる。以下では、一例として4種類の例を説明する。以下に説明する各テーブルは、便宜上、第1のテーブルと第2のテーブルを一つにまとめた合成テーブルである。合成テーブル中の第1のテーブルはいずれも共通であり、第2のテーブルのみが異なっている。
【0027】
(合成テーブルの第1例)
図5は第1例に係る合成テーブルを示す図である。図5の合成テーブル中の第2のテーブルは、2つの可変長符号の組合せと、それに対応するゼロ値情報の組合せとを登録したものである。図5では、可変長符号をVLC code、それに対応するゼロ値情報をrunと表記している。例えば、runが(0)とは、連続する2つの非ゼロ値の間のゼロ値の数がゼロであることを意味する。例えば、runが(0,0)とは、連続する3つの非ゼロ値の間のそれぞれにゼロ値が存在しないことを示している。別の見方をすると、間にゼロ値の数がゼロの非ゼロ値が3つ連続して並んでいることを示している。また、runが(1,13)とは、連続する3つの非ゼロ値のうち、一方の連続する2つの非ゼロ値の間のゼロ値の数が1個で、もう一方の連続する2つの非ゼロ値の間のゼロ値の数が13個であることを示している。このように、図5のrunとは、連続する2つまたは3つの非ゼロ値の間にあるゼロ値の数を表している。
【0028】
図5の合成テーブルは、4×4ブロックを基準として、DCT係数への復号処理を行う場合に対応している。1つのブロックには、16個の処理単位が含まれており、各処理単位にはDCT係数の非ゼロ値またはゼロ値が入る。図5の合成テーブルは、最大2つの可変長符号の組合せをゼロ値情報の組合せに変換できるようにしたことを特徴としている。
【0029】
図5の合成テーブルを作成する条件は、非ゼロ値の数とゼロ値の数の合計値が1ブロック内の要素の総数である16個を超えないことであり、この条件を満たすデータのみが登録される。したがって、少なくとも2つの非ゼロ値の間のゼロ値の数が14を超えることはない。図5の合成テーブルでは、runの値の合計が14を超えるものをすべて除外し、合成テーブルの登録数を削減している。
【0030】
図5の合成テーブルは、1つの可変長符号に対応するゼロ値情報を示す第1のテーブルと、2つの可変長符号の組合せに対応するゼロ値情報を示す第2のテーブルとを含んでいる。例えば、入力ビットストリームが奇数個の可変長符号を含む場合は、入力ビットストリームの先頭から2個ずつの可変長符号に対して図5の合成テーブルを参照して復号処理を行うため、入力ビットストリームの最後に1つの可変長符号が残る。したがって、それに対応したゼロ値情報を第2のテーブルだけからは見つけ出すことができなくなるため、第1のテーブルも含めている。
【0031】
図6は、図5の合成テーブルを用いた場合と公知のテーブルを用いた場合とで、復号処理の性能を比較した図である。図6では、各可変長符号をゼロ値情報と対応づけた単一符号テーブルを用いて復号処理を行った場合と、特開2007−158698号公報に開示されたテーブルを用いて復号処理を行った場合と、特開2008−227946号公報に開示されたテーブルを用いて復号処理を行った場合とで、処理性能を比較している。図6は、各テーブルのみの性能であり、その他の構成の性能は含まれていない。
【0032】
特開2008−227946号公報に開示されたテーブルでは、可変長符号が特定のビットパターンのとき(例えば、0と1が交互に現れるとき)、復号処理に必要な処理サイクル数が11まで増加する。一方、図5の合成テーブルでは、可変長符号のビットパターンに依存せず、常に8つの処理サイクル数で復号処理を行うことができる。
【0033】
ただし、図5の合成テーブルは、登録数が多いことから合成テーブルのデータ容量が大きくなってしまう。したがって、この合成テーブルを半導体装置内に実装しようとすると、基板上の占有面積が大きくなってしまう。そこで、以下に説明する第2〜第4の例に係る合成テーブルでは、合成テーブルの縮小化を図っている。
【0034】
第2〜第4の例に係る合成テーブルについて説明する前に、これら第1〜第4の例に係る合成テーブルのいずれかを使用してDCT係数への復号処理を行う処理手順を、図7を用いてより詳細に説明する。
【0035】
図7は一実施形態に係るVLD装置3が行う復号処理のフローチャートである。まず、入力ビットストリームの先頭を取得する(S1)。図5の合成テーブルを用いる場合、VLD装置3は最大2つの可変長符号を同時に取得できるだけのビット数を、入力ビットストリームの残量を上限として取得することになる。なお、用いる合成テーブルにより、取得するビット数の上限は異なる。
【0036】
次に、取得した可変長符号またはその組合せが合成テーブル中に存在するか否かを検索する(S2)。ここでは、入力ビットストリームの先頭部分に含まれるビット列が、合成テーブル中の可変長符号に一致するか否かを検索し、一致した可変長符号を候補として抽出する。この抽出作業を、合成テーブルの全体に対して行う。合成テーブル中の第1テーブルには1つの可変長符号が記憶され、第2テーブルには最大2つの可変長符号の組合せが記憶されているため、場合によっては、入力ビットストリームの先頭部分に含まれるビット列と一致する可変長符号、またはその組合せが複数個検索される場合がある。もし、取得した可変長符号またはその組合せが合成テーブル中に存在しなければ、エラー処理を行う(S3)。
【0037】
取得した可変長符号またはその組合せが合成テーブルに存在する場合(S2,Yes)は、合成テーブル中に複数の候補が存在するか否かを判定する(S4)。複数の候補が存在する場合は、その中で最も符号数が多い可変長符号の組合せのゼロ値情報を選択する(S5)。
【0038】
図5の合成テーブルの場合は、入力ビットストリームから取得された2つの可変長符号の組合せに一致したゼロ値情報が第2のテーブルから読出される。なお、入力ビットストリームの可変長符号が奇数個の場合、すなわち、1つの可変長符号のみが取得された場合は、ゼロ値情報は第1のテーブルから読出される。
【0039】
上述したS5の処理が終了したか、または上述したS4で複数の候補が存在しないと判定された場合は、取得した可変長符号(またはその組合せ)の符号数を変数NUMに、総ビット長を変数BLとする(S6)。次に、取得した可変長符号(またはその組合せ)について、DCT係数への復号処理を行う(S7)。
【0040】
例えば、入力ビットストリームの先頭部分にビット列「111010」が含まれている場合は、図5の合成テーブルから(0,5)が抽出され、復号処理では、ゼロ値なしの非ゼロ値からなる1個のDCT係数と、ゼロ値からなる5個のDCT係数と、非ゼロ値からなる1個のDCT係数とに復号される。
【0041】
一つの可変長符号の復号処理が終わると、変数NUMを1だけ減らす(S8)。次に、変数NUMがゼロになったか否かを判定し(S9)、ゼロでなければS7以降の処理を繰り返す。変数NUMがゼロであれば入力ビットストリームの先頭位置を変数BLで示すビット長分だけシフトする(S10)。シフトした結果、入力ビットストリームの終端に達したか否かを判定する(S11)。入力ビットストリームの終端に達していなければS1に戻り、達した場合には処理を終了する。
【0042】
このように、第1例に係る合成テーブルは、入力ビットストリーム中の最大2つの可変長符号を同時に復号可能としており、可変長符号のビットパターンに依存せずに、復号処理性能を向上できる。また、ブロック単位を基に必要な可変長符号のみを合成テーブルに登録しておくため、合成テーブル内の可変長符号の登録数を削減できる。
【0043】
(合成テーブルの第2例)
図8は第2の例に係る合成テーブルを示す図である。図8の合成テーブルは、第1のテーブルと、最大4つまでの可変長符号の組合せとそれに対応するゼロ値情報を示す第2のテーブルとを含んでいる。図8の合成テーブルの第2のテーブルでは、データ量の増大を防止するために、以下の条件1,2を満たすデータのみを登録している。なお、条件1は第1例の合成テーブルと同じ条件である。条件1,2ともに、4×4処理単位を1ブロックとすることを想定している。
1:runの合計値(ゼロ値の数の総計)と非ゼロ値の数の総計が16を超えない。
【0044】
2:可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数の合計値が4以上になった場合は、それ以上には別の可変長符号を組み合わせない。
【0045】
条件2は、1ブロックの復号処理を4クロックサイクル以内で完了する方針で設けたものである。この方針を担保するために、1クロックサイクル以内に、非ゼロ値の数とゼロ値の数の合計値を4以上にする。逆に、1クロックサイクルで上述した合計値が4以上になった場合は、それ以上、合計値を大きくしない。
【0046】
このような観点で、条件2では、非ゼロ値の数とゼロ値の数の合計値が最大4になるまで、可変長符号の組合せ数を増やしていき、それ以上には別の可変長符号を組み合わせないようにして、可変長符号の組合せ数を削減している。
【0047】
図8の合成テーブルの場合、4×4ブロックを復号する際、入力ビットストリーム中の可変長符号のビットパターンに依存せずに、4クロックサイクルで復号処理を行うことができる。
【0048】
図9は、第2例の合成テーブルを用いた場合の復号処理の性能を、第1例の合成テーブルまたは公知のテーブルを用いた場合とで比較した図である。第2例の合成テーブルの場合は、符号語数と符号総ビット数が第1例の合成テーブルよりも削減されており、半導体装置上の占有面積も削減できる。また、符号語数と符号総ビット数を削減しても、復号処理に要するクロックサイクル数は第1例の合成テーブルから半減しており、復号処理の高速化が図れる。
【0049】
このように、第2例の合成テーブルは、最大4つの可変長符号を同時に復号可能としており、第1例の合成テーブルよりもさらに復号処理性能を向上できる。また、4×4ブロックを4クロックサイクルで復号できる限りは、合成テーブルのデータ量を抑制でき、小型化が実現できる。
【0050】
(合成テーブルの第3例)
図10は第3の例に係る合成テーブルを示す図である。図10の合成テーブル、第1のテーブルと、図8の合成テーブルと同様に最大4つまでの可変長符号の組合せとそれに対応するゼロ値情報を示す第2のテーブルとを含んでいる。図10の合成テーブルでは、上述した条件1と2に加えて、以下の条件3を満たすデータを登録している。
【0051】
3:非ゼロ値の数とゼロ値の数の合計値が8未満である。
【0052】
図11は条件3を説明する図である。図11は、先頭から3つの非ゼロ値が続いた後、最後のDCT係数までのゼロ値の数を種々変化させた例を示している。以降のゼロ値の数が1個から4個までは、条件2を担保するために、合成テーブルに含めておく。一方、以降のゼロ値の数が5個以上の場合は、このゼロ値に対応する可変長符号を次のクロックサイクルで復号処理しても、1クロックサイクルでrunを平均して4つ進めることができるため、合成テーブルから除外しても処理性能の低下を招かない。したがって、以降のゼロ値の数が5個以上の場合は、合成テーブルに含めなくてもよい。これが条件3である。この条件3を設けることで、図8の合成テーブルよりも、大幅に登録数を削減できる。
【0053】
図12は、第3例の合成テーブルを用いた場合の復号処理の性能を、第1例の合成テーブル、第2例の合成テーブル、または公知のテーブルを用いた場合とで比較した図である。第3例の合成テーブルの場合は、符号語数と符号総ビット数が第2例よりもさらに削減されており、半導体装置上の形成面積のさらなる削減が可能となる。
【0054】
このように、第3例の合成テーブルでは、第2例の合成テーブルと同様に、最大4つの可変長符号を同時に復号可能であることに加えて、非ゼロ値の数とゼロ値の数の合計値が8未満の場合、すなわち非ゼロ値とゼロ値の数の合計が2クロックサイクルで1ブロックの半分以上を占める場合は、対応する可変長符号を合成テーブルに含めないようにする。このため、第2例の合成テーブルよりも大幅に登録数を削減でき、合成テーブルの半導体装置上の占有面積を削減でき、小型化が図れる。
【0055】
上述した説明では、4×4ブロックを4クロックサイクル以内に処理する例を説明したが、別のクロックサイクルで処理することも可能である。例えば、4×4ブロックを2クロックサイクルで処理するには、1クロックサイクルでrunを8以上進められるような合成テーブルを作成すればよい。
【0056】
(合成テーブルの第4例)
第2例および第3例に係る合成テーブルでは、1クロックサイクル当り4つの可変長符号を復号する例を説明したが、以下に説明する第4例に係る合成テーブルは、1クロックサイクル当り2つの可変長符号を復号するものである。第4例に係る合成テーブルは、処理性能を落とす代わりに、さらなる合成テーブルのデータ量の削減化を図っている。
【0057】
図13は第4例に係る合成テーブルを示す図である。図13の合成テーブルは、第1のテーブルと、わずか2つの登録数を持つ第2のテーブルとを含んでいる。
【0058】
第4例に係る合成テーブルを作成する条件は、以下の通りである。
【0059】
1:runの合計値(ゼロ値の数の総計)と非ゼロ値の数の総計が16を超えない。
【0060】
2’:可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数の合計値は最大2までとする。
【0061】
3’:非ゼロ値の数とゼロ値の数の合計値が4未満である。
【0062】
条件2’は条件2をさらに厳しくしたものであり、条件3’は条件3をさらに厳しくしたものである。条件1、2’および3’を設けることで、第4例の第2のテーブルには、2種類の可変長符号に対応するrun(0,0)、(0,1)の2種類のみが登録されることになる。
【0063】
図14は、第4例の合成テーブルを用いた場合の復号処理の性能を、公知のテーブルを用いた場合とで比較した図である。第4例の合成テーブルは、第1のテーブルにわずか2つの可変長符号についての第2のテーブルを追加しただけであるが、図14ではH.264の規格による単一符号のテーブルと比べて2倍の復号処理性能を備えていることがわかる。
【0064】
このように、第4例の合成テーブルは、合成テーブルの変更を最小限に抑えながら、復号処理性能の向上効果が著しく大きいという特徴があり、実用性に優れている。
【0065】
上述した実施形態で説明した復号システム1およびVLD装置3の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、復号システム1およびVLD装置3の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【0066】
上述した実施形態では、4×4個の要素からなるブロックを単位として復号処理を行う例を説明したが、1ブロック内の要素の数には特に制限はない。要素の数を変えれば、条件1〜3の内容も変わり、第1〜第4の例に係る合成テーブルの登録内容も変化する。
【0067】
例えば、N×N個(Nは2以上の任意の整数)の要素からなるブロックを単位として復号処理を行う場合、合成テーブル内の第2テーブルは、複数種類の可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数との合計値がN×N個を超えない範囲の組合せを登録する。これが上述した条件1を一般化したものである。
【0068】
また、第1および第4の例に係る合成テーブルは、最大2つの可変長符号の組合せに対応しており、第2〜第3の例に係る合成テーブルは、最大4つの可変長符号の組合せに対応している。合成テーブルを、最大何個の可変長符号の組合せに対応させるかも、任意に調整可能であり、本実施形態は、k(kは2以上の整数)種類の可変長符号の組合せに対応した合成テーブルを設ける点に特徴がある。また、条件3は、一般化すると、最大k種類(kは2以上の整数)の可変長符号の組合せの中から、可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数との合計値が所定の閾値を超える該組合せを除外することを指している。
【0069】
また、復号システム1およびVLD装置3の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【0070】
本発明の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本発明の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【0071】
1 復号システム、2 FIFO装置、3 VLD装置、4 IQ装置、5 IDCT装置、6 MC装置、7 フレームメモリ、11 第1テーブル記憶部、12 第2テーブル記憶部、13 優先度判定部、14 係数バッファ、15 係数格納制御部、16 DCT係数記憶部
【特許請求の範囲】
【請求項1】
複数の可変長符号からなる入力ビットストリームを、非ゼロ値と0個以上の連続したゼロ値の数を表すゼロ値情報とからなる復号データに復号する可変長符号復号装置において、
個々の前記可変長符号を、対応する復号データのゼロ値情報に対応づけた第1のテーブルを記憶する第1テーブル記憶部と、
複数種類の可変長符号の組合せを、それに対応する複数種類の復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶する第2テーブル記憶部と、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出す優先度判定部と、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、復号データを生成する復号部と、を備えることを特徴とする可変長符号復号装置。
【請求項2】
前記第2テーブル記憶部は、前記複数種類の可変長符号の組合せに対応する非ゼロ値とゼロ値の数との合計値が前記所定個数を超えない範囲で前記第2のテーブルを記憶し、前記複数種類の可変長符号の組合せに対応するゼロ値の総数が第1の閾値を超えた場合は、該組合せにさらに別個の可変長符号が組み合わされないように、前記第2のテーブルを記憶することを特徴とする請求項1に記載の可変長符号復号装置。
【請求項3】
前記第2テーブル記憶部は、最大k種類(kは2以上の整数)の前記可変長符号の組合せの中から、前記可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数との合計値が第2の閾値を超える該組合せを除外した前記第2のテーブルを記憶することを特徴とする請求項2に記載の可変長符号復号装置。
【請求項4】
前記入力ビットストリームは、個々の前記可変長符号に対応する非ゼロ値を含んでおり、
前記優先度判定部が前記第2のテーブルに記憶された該当するゼロ値情報の組合せを優先して読出した場合には、対応する前記非ゼロ値を一時的に記憶する一時記憶部を備え、
前記復号部は、前記優先度判定部が前記第2のテーブルから読出したゼロ値情報と、前記一時記憶部に記憶された前記非ゼロ値とに基づいて、前記復号データを生成することを特徴とする請求項1乃至3のいずれかに記載の可変長符号復号装置。
【請求項5】
動き補償され、DCT(Discrete Cosine Transform)変換され、かつ量子化された可変長符号を含む入力ビットストリームに対して可変長符号復号を行って、非ゼロ値と0個以上のゼロ値からなる復号データを生成する可変長符号復号装置と、
前記復号データに対して逆量子化を行う逆量子化装置と、
逆量子化されたデータに対して、逆離散コサイン変換を行うIDCT(Inverse Discrete Cosine)装置と、
逆離散コサイン変換後のデータに対して動き補償を行う動き補償装置と、を備え、
前記可変長符号復号装置は、
個々の前記可変長符号を、それに対応する前記復号データのゼロ値の数を表すゼロ値情報に対応づけた第1のテーブルを記憶する第1テーブル記憶部と、
複数種類の前記可変長符号の組合せを、それに対応する複数種類の前記復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶する第2テーブル記憶部と、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出す優先度判定部と、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、前記復号データを生成する復号部と、を備えることを特徴とする復号システム。
【請求項6】
可変長符号からなる入力ビットストリームを、非ゼロ値と0個以上のゼロ値からなる復号データに復号する可変長符号復号方法において、
個々の前記可変長符号を、それに対応する前記復号データのゼロ値の数を表すゼロ値情報に対応づけた第1のテーブルを記憶し、
複数種類の前記可変長符号の組合せを、それに対応する複数種類の前記復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶し、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出し、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、前記復号データを生成することを特徴とする可変長符号復号方法。
【請求項1】
複数の可変長符号からなる入力ビットストリームを、非ゼロ値と0個以上の連続したゼロ値の数を表すゼロ値情報とからなる復号データに復号する可変長符号復号装置において、
個々の前記可変長符号を、対応する復号データのゼロ値情報に対応づけた第1のテーブルを記憶する第1テーブル記憶部と、
複数種類の可変長符号の組合せを、それに対応する複数種類の復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶する第2テーブル記憶部と、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出す優先度判定部と、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、復号データを生成する復号部と、を備えることを特徴とする可変長符号復号装置。
【請求項2】
前記第2テーブル記憶部は、前記複数種類の可変長符号の組合せに対応する非ゼロ値とゼロ値の数との合計値が前記所定個数を超えない範囲で前記第2のテーブルを記憶し、前記複数種類の可変長符号の組合せに対応するゼロ値の総数が第1の閾値を超えた場合は、該組合せにさらに別個の可変長符号が組み合わされないように、前記第2のテーブルを記憶することを特徴とする請求項1に記載の可変長符号復号装置。
【請求項3】
前記第2テーブル記憶部は、最大k種類(kは2以上の整数)の前記可変長符号の組合せの中から、前記可変長符号の組合せに対応する非ゼロ値の数とゼロ値の数との合計値が第2の閾値を超える該組合せを除外した前記第2のテーブルを記憶することを特徴とする請求項2に記載の可変長符号復号装置。
【請求項4】
前記入力ビットストリームは、個々の前記可変長符号に対応する非ゼロ値を含んでおり、
前記優先度判定部が前記第2のテーブルに記憶された該当するゼロ値情報の組合せを優先して読出した場合には、対応する前記非ゼロ値を一時的に記憶する一時記憶部を備え、
前記復号部は、前記優先度判定部が前記第2のテーブルから読出したゼロ値情報と、前記一時記憶部に記憶された前記非ゼロ値とに基づいて、前記復号データを生成することを特徴とする請求項1乃至3のいずれかに記載の可変長符号復号装置。
【請求項5】
動き補償され、DCT(Discrete Cosine Transform)変換され、かつ量子化された可変長符号を含む入力ビットストリームに対して可変長符号復号を行って、非ゼロ値と0個以上のゼロ値からなる復号データを生成する可変長符号復号装置と、
前記復号データに対して逆量子化を行う逆量子化装置と、
逆量子化されたデータに対して、逆離散コサイン変換を行うIDCT(Inverse Discrete Cosine)装置と、
逆離散コサイン変換後のデータに対して動き補償を行う動き補償装置と、を備え、
前記可変長符号復号装置は、
個々の前記可変長符号を、それに対応する前記復号データのゼロ値の数を表すゼロ値情報に対応づけた第1のテーブルを記憶する第1テーブル記憶部と、
複数種類の前記可変長符号の組合せを、それに対応する複数種類の前記復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶する第2テーブル記憶部と、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出す優先度判定部と、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、前記復号データを生成する復号部と、を備えることを特徴とする復号システム。
【請求項6】
可変長符号からなる入力ビットストリームを、非ゼロ値と0個以上のゼロ値からなる復号データに復号する可変長符号復号方法において、
個々の前記可変長符号を、それに対応する前記復号データのゼロ値の数を表すゼロ値情報に対応づけた第1のテーブルを記憶し、
複数種類の前記可変長符号の組合せを、それに対応する複数種類の前記復号データそれぞれのゼロ値情報の組合せに対応づけた第2のテーブルを記憶し、
前記入力ビットストリームに含まれる可変長符号およびその組合せが、前記第1および第2のテーブルの双方に記憶されている場合は、前記第2のテーブルに記憶された、最も符号数の多い可変長符号の組合せに対応するゼロ値情報の組合せを優先して読出し、前記入力ビットストリームに含まれる可変長符号が前記第2のテーブルには記憶されておらず前記第1のテーブルに記憶されている場合は、前記第1のテーブルに記憶された該当するゼロ値情報を読出し、
前記入力ビットストリームに含まれる複数種類の可変長符号を処理単位として、前記優先度判定部が読出したゼロ値情報またはその組合せに基づいて、前記復号データを生成することを特徴とする可変長符号復号方法。
【図1】
【図3】
【図4】
【図7】
【図11】
【図2】
【図5】
【図6】
【図8】
【図9】
【図10】
【図12】
【図13】
【図14】
【図3】
【図4】
【図7】
【図11】
【図2】
【図5】
【図6】
【図8】
【図9】
【図10】
【図12】
【図13】
【図14】
【公開番号】特開2012−253420(P2012−253420A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−122278(P2011−122278)
【出願日】平成23年5月31日(2011.5.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願日】平成23年5月31日(2011.5.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]