可変長復号装置
【課題】本発明は、H.264復号処理におけるRun_before復号処理にかかるサイクル数を短縮することを目的とする。
【解決手段】上記課題を解決するために本発明における可変長符号装置では、Run_before復号処理おいて参照する復号ルックアップテーブルの最適化を行うことにより、ルックアップテーブルへのアクセス回数を減らし、これまで最大14サイクルかかっていた復号処理サイクルを1サイクルに短縮することを可能とする。
【解決手段】上記課題を解決するために本発明における可変長符号装置では、Run_before復号処理おいて参照する復号ルックアップテーブルの最適化を行うことにより、ルックアップテーブルへのアクセス回数を減らし、これまで最大14サイクルかかっていた復号処理サイクルを1サイクルに短縮することを可能とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、可変長復号装置に関わり、特に、H.264可変長符号化ストリームの復号処理における処理サイクル数の短縮に関するものである。
【背景技術】
【0002】
H.264符号化方式には、適応可変調符号化(CAVLC)と算術符号化(CABAC)の2つのエントロピー符号化が採用されており、これらエントロピー符号化により生成された符号化ストリームの復号プロセスについては、ISO/IEC14496-10規格に記載がある。本発明はこのうちCAVLCに関係するものであり、ここでは、従来のCAVLCの復号プロセスについて説明する。
CAVLCとは、context-based adaptive variable length codingの略であり、入力される符号化ストリーム中の符号化コードと、復号プロセスで得られる復号シンボルを使い参照する復号テーブルの参照先アドレスを適応的に変化させて、符号化ストリーム中の符号化コードを復号していくものである。
【0003】
図3Aは、従来の可変長復号装置の一例の構成を示すブロック図である。図3Aを用いて、従来の可変長復号装置における復号プロセスを説明する。300は従来の可変長復号装置、101〜104および305は復号部、106はレベル係数部、308は結合部である。
5つの復号部101〜104、および305は、前段に位置する復号部から順に以下の復号を行う。即ち、復号部101は入力された符号化ストリームのCoeff_token係数のシンボルを復号し、復号部102はTrailing_ones係数シンボルを復号し、復号部103はレベル係数シンボルを復号し、復号部104はTotal_zeros係数シンボルを復号し、復号部305はラン係数のシンボルを復号する。各復号部は、前段の復号プロセスが完了すると、その復号シンボルを使って復号処理が開始できるようになっている。
一連の復号処理は、サブマクロブロック(SMB)と呼ばれる4画素×4画素のブロック単位で行われる。そして、復号部101と復号部102は、それぞれ、上記Coeff_token係数とTotal_zeros係数を1SMBあたりに1回、復号処理する。また復号部103、104および305は、それぞれ、Trailing_ones係数、レベル係数、ラン係数について、入力符号化ストリームに応じ、繰り返し、シンボルの復号処理を行う。従って、1SMBの復号処理を行うには、複数回にわたり復号テーブルにアクセスしなければならない。
【0004】
図3Aの可変長復号装置300において、符号化ストリームは復号部(Coeff_token復号部)101に入力する。復号部101は、これから復号を開始するSMB内にあるレベル係数の数を示すシンボルTotal_coeffのシンボルの復号処理を実行する。図3BにCoeff_token復号部101の内部機能構成を示す。
Coeff_token復号部101は、符号化ストリームをバッファリングしておくためのストリーム記憶手段120と、シフトレジスタなどで構成されるストリーム供給手段121、ISO/IEC14496-10規格のJVT−G0501に記載があるCoeff_token復号テーブル122、および、復号シンボルを一時記憶するためのTotal_coeff記憶手段123からなる。
【0005】
Coeff_token復号部101の処理動作を、図3BのCoeff_token復号部101を用いて説明する。
図3Bにおいて、ストリーム記憶手段120は、符号化ストリームをバッファリングする。ストリーム供給手段121は、ストリーム記憶手段120から、復号する符号化ストリームを取り込み、Coeff_token復号テーブル122に出力する。
Coeff_token復号テーブル122は、入力されたストリームを、先頭ビットから順々にマッチングし、一致すると、対応付けされた値がシンボルとしてTotal_coeffとなる。復号されたTotal_coeffは、SMB内のレベル係数の総数を示すもので、後段の復号部で必要なシンボルである。このため、Total_coeff記憶手段123に出力され、Total_coeff記憶手段123はこのシンボルを記憶する。またこの時、Coeff_token復号テーブル122は、一致した符号化コードのビット長を、消費ビットとして、ストリーム供給手段121に出力(フィードバック)する。
ストリーム供給手段121は、フィードバックされる消費ビット長分、次のストリームの読み出し位置をシフトさせ、符号化ストリームを次の符号化コードの先頭から読み出せるようにしている。
ストリーム供給手段121で、消費ビット長分ストリームがシフトすると、Coeff_token復号部101の処理が完了したとして、Trailing_ones復号部102に処理が移行する。
【0006】
Trailing_ones復号部102は、上記Total_coeff記憶手段123に一時記憶されたTotal_coeffが示すレベル係数において係数“1”の符号に関するシンボルを復号する復号部で、上記Coeff_token復号部101と同様、復号テーブルを使った処理が行われる。
【0007】
次に、レベル復号部103の処理動作を、図3Cに示すレベル復号部の内部機能ブロック図を用いて説明する。
レベル復号部103は、レベル係数に関する復号処理であり、H.264符号化方式における符号なしゴロム復号にあたる。ここでは、符号なしゴロム復号の一般的な復号方法について説明する。
【0008】
レベル復号部103は、前述したCoeff_token復号部101と共通のストリーム記憶手段120とストリーム供給手段121を備え、そのほかにプレフィックス復号部130、プレフィックス記憶手段131、サフィックス復号手段133およびレベルコード演算手段132、消費ビット選択手段134を備える。
図3Bと同様に、ストリーム記憶手段120は、符号化ストリームをバッファリングする。ストリーム供給手段121は、ストリーム記憶手段120から、復号する符号化ストリームを取り込み、プレフィックス復号部130とサフィックス復号手段133に出力する。
ストリーム供給手段121からストリーム記憶手段120の符号化ストリームが供給されると、はじめにプレフィックス処理を行う。プレフィックス復号部130は、供給されたストリームを復号テーブルであらかじめ用意されているプレフィックス値に対応したビット列と照合し、プレフィックス値と完全に一致したストリームのビット長を求める。一致したプレフィックス値は、プレフィックス記憶手段131に一時記憶されると共に、ビット長の情報は、消費ビット選択手段134を経由しストリーム供給手段121出力される。
ストリーム供給手段121は、消費ビット選択手段134から入力されてくるビット長分、符号化ストリームをシフトさせ、次のサイクルからサフィックスに対応する符号化コードの復号をスタートさせる。通常は、外部から入力するタイミング信号に基づいて、プレフィックス復号手段130が終了した次のサイクルから、サフィックス復号手段133が有効になるように制御を切り替えている。
一方、サフィックス復号手段133は、プレフィックス記憶手段131に記憶されたプレフィックス値をもとに、供給されてくる符号化ストリームの有効ビットを認識し処理を行う。また、レベルコード演算手段132は、プレフィックス記憶手段131に格納されているプレフィックス復号シンボルと、サフィックス復号手段133で復号された復号シンボルを使い、所定の演算処理を行い、レベル係数を復号結果として出力する。同時にサフィックス復号手段133は、消費したビット長を消費ビット選択手段134に出力する。
消費ビット選択手段134は、上記タイミング信号に従い、有効中の復号手段がプレフィックス復号手段130なのか、サフィックス復号手段133なのかに判断し、入力される消費ビットをストリーム供給手段121へ出力する。1シンボルの復号で、ストリーム供給手段121は、プレフィックスの復号とサフィックスの復号の2回ストリームを読み出さなければならないため、2サイクル必要となる。また、レベル復号部の繰り返し処理は、レベル係数の数に一致し、1SMBあたりの最大復号シンボル数は15係数であるため、レベル復号部103で想定される処理サイクル数は最大30サイクルとなる。なお、符号なしゴロム復号方法については、プレフィックスとサフィックスを同時処理させ、サイクルを短くするための提案もいくつか出ており、一例としては、特許文献1などがある。
【0009】
次に、Total_zeros復号部104の処理動作を、図3Dに示すTotal_zeros復号部の内部機能ブロック図を用いて説明する。復号されるシンボルのTotal_zerosは、4×4のSMBを高周波成分側から逆スキャンした際にもっとも高周波成分側に位置する有意係数からDC成分までの1次元配列において存在するゼロ係数の数を表すものである。図3Dに示すように、上記Coeff_token復号部101と同様に、ストリーム記憶手段120から符号化ストリームをストリーム供給手段121に取り込み、ISO/IEC14496-10規格のJVT−G0501に記載があるTotal_zeros復号テーブル140とのマッチングにより、Total_zerosと一致した符号化ストリームのビット長を求める。
【0010】
Total_zerosは、Total_zeros記憶手段141に一時記憶され、ビット長は先に説明した各復号部101〜103と共通のストリーム供給手段121へ送られる。ストリーム供給手段121はTotal_zeros復号テーブル140から受け取った消費ビット長分、次のストリームの読み出し位置をシフトさせることにより、次の復号部であるRun_before復号部305では符号化コードの先頭から始まる符号化ストリームを入力できるようになる。
つまり、ストリーム供給手段121が、ストリームを消費ビット数分シフトすると、Total_zeros復号部104の処理は完了となり、Run_before復号部305に処理が移る。1SMBあたりに行うTotal_zeros復号部104の処理が1回であることから、Total_zeros復号部104での処理サイクル回数は1サイクルとなる。
【0011】
最後に、Run_before復号部305について説明する。図3Aの可変長復号装置300から最終的に出力される伸張ストリームは、4×4のSMBを高周波成分側から逆スキャンして並べた一次係数列である。
16個の係数列の並びは、入力符号化ストリームにより変動し、先にレベル復号部103にて復号されたシンボルのレベル係数は、この係数列を構成する非ゼロ係数に該当する。例えば、レベル復号部103にて復号されたレベル係数のシンボル数が16個未満のときには、ゼロ係数がこのレベル係数との間に挿入されることになる。つまり、Run_before復号部305は、先にレベル復号部103で復号されたレベル係数とTotal_zeros復号部104で復号されたゼロ係数を配列するためのシンボルを復号し、一次係数列にする際にゼロ係数の挿入位置とその挿入数に関するシンボルとなる。このシンボルを使い結合部308でレベル係数とゼロ係数の配列をおこない最終的な伸張ストリームが出力されることになる。
【0012】
Run_before復号部305の内部機能ブロック図を図3Eに示す。Run_before復号部305は、ストリーム記憶手段120、ストリーム供給手段121、アドレス生成手段150、ISO/IEC14496-10規格のJVT−G0501に記載があるRun_before復号テーブル151、およびZeros記憶手段152からなる。
アドレス生成手段150は、ストリーム記憶手段120からストリーム供給手段121に取り込まれた符号化ストリームと、Zeros記憶手段152から入力されるZeros_leftとに基づいて、Run_before復号テーブル151の参照アドレスを決定する。Run_before復号テーブル151は、ゼロ係数の挿入の有無と挿入時の個数を示すシンボルとなるRun_beforeを復号し、Run_before積算手段153および結合部308に出力する。またRun_before復号テーブル151は、消費ビット数をストリーム供給手段121を介してスタート記憶手段120に出力し、スタート記憶手段120に記憶させる。同様に、Run_before積算手段153は、入力されたシンボルRun_beforeを積算し、Zeros記憶手段152に出力し、Zeros記憶手段152のデータを更新する(詳細は後述する)。
【0013】
Run_before復号処理は、アドレス生成手段150に入力されるZeros_leftが更新されゼロになるまで繰り返される。
即ち、Run_before復号部305は、Run_before復号テーブル151にアクセスし、1シンボルずつ復号されるたびに、消費したビット長がRun_before復号テーブル151からストリーム供給手段121に送られ、ストリーム供給手段121にて消費ビット長分、次のストリームの読み出し位置がシフトするようになっている。
また、復号開始時は、Total_zeros復号部104で復号されたシンボルTotal_zerosがZeros_leftの初期値となりRun_before復号テーブル151の参照アドレスを確定する。また、2回目以降は、シンボルを繰り返して復号する際には、復号したシンボルRun_beforeをRun_before積算手段153で累積加算したシンボルZerosを、Zeros記憶手段152に記憶されているシンボルZeros_leftから減算し、減算結果に置き換えて更新したシンボルZeros_leftを使い、Run_before復号テーブル151の参照アドレスを適応的に変えていく。
【0014】
従来のRun_before復号テーブル151の一例を図4に示す。図4を用いて、従来例として、具体的に入力符号化ストリームを“10010000・・・”、Total_zeros=“7”とした場合の復号処理について説明する。
上述のように、復号開始時は、Total_zerosの値がZeros_leftの初期値になる。そして、ストリーム供給手段121から供給されるビット列の先頭が“100・・”である。このことから、図4のRun_before復号テーブルで復号される最初のシンボルRun_before(0)の値は“3”となる。一方、復号結果のRun_before(0)値は、Run_before積算手段153にも出力され、累積加算されたZerosが後段のZeros記憶手段152に出力される。Zeros記憶手段152は、入力されたZerosをTotal_zerosの値から減算し、この減算結果(=“7”−“3”)をあらたなZeros_leftとして記憶する。Zeros_left≠”0”であることから2回目の復号処理が始まる。
引き続き行われる2番目のシンボルRun_before(1)の復号は、Zeros_left=“4”、ストリーム供給手段121で消費ビット分シフトされ“10”からビット列がはじまることから、Run_before(1)=“1”となる。また、同時にZeros記憶手段152のZeros_leftは“3”(=“4”−“1”)に更新される。
以下同様、3番目のRun_before(2)の値の復号については、Zeros_left=“3”、ストリーム供給手段121で消費ビット分シフトされ“00”からビット列がはじまることから、Run_before(2)=“3”となる。また、Zeros記憶手段152のZeros_leftは“0”(=“3”−“3”)となる。上記一連の処理を繰り返し、Zeros_leftが“0”になると同時にRun_beforeに関する復号が完了する。
上記例では、Zeros_left が“0”になるまでに3つのシンボルRun_before(0)、Run_before(1)、Run_before(2)が復号され、Run_before復号テーブル151に3回のサイクルかかったことを意味する。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2007−60199号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
上述した説明のように、4×4のSMBの伸張処理では、5つの復号部において若しくは5つの復号プロセスを経て、必要なシンボルを復号する。このときの各復号部若しくは各復号プロセスに必要な処理サイクル数は、Coeff_token復号部101、および、Total_zeros復号部104で1サイクルずつ、それ以外の復号部においては、入力符号化ストリームによって変動するものの、テーブルアクセス回数から換算した最大のサイクル数は、Trailing_ones復号部102で3サイクル、レベル復号部103で30サイクル、Run_before復号部305で14サイクルとなる。
従って、従来の構成では、1SMBの符号化ストリームを復号処理するには最大で約50サイクル必要であることになる。特に、従来のRun_before復号部305の処理においては、レベル係数とゼロ係数が隣接するかどうかを、Run_beforeの復号結果をもとに、高周波成分側にあるレベル係数から1レベル係数ずつ順にチェックしていかねばならず、レベル係数が連続し、ゼロ係数が隣接しない場合であっても、「レベル係数の隣にゼロ係数はない」ということをシンボルとして復号しなければならない。このため、Run_before復号テーブル151へのアクセス回数がレベル係数の数だけ発生し、サイクル数が長くなるという問題があった。
そこで、本発明は、Run_before復号部305における、上記問題を解決し、1SMBあたりの処理に要するサイクル数を低減することを目的とする。具体的には、H.264可変長復号処理のRun_before復号処理おいて、非ゼロ係数(レベル係数)とゼロ係数との並び関係を示すラン係数に加え、単位ブロック中にあるゼロ係数の総数(Total_Zeros)からラン係数を減算したZerosシンボルと、連続してならぶレベル係数の数を示すSkipシンボルを出力するルックアップテーブルを使い、復号処理を行い、1SMBあたりのサイクル数を短くすることを目的とする。
【課題を解決するための手段】
【0017】
上記の課題を解決するために、本発明の可変長符号装置は、符号化ストリームを入力し、Coeff_token係数のシンボルを復号するCoeff_token復号部と、Trailing_ones係数シンボルを復号するTrailing_ones復号部と、レベル係数シンボルを復号するレベル復号部と、Total_zeros係数シンボルを復号するTotal_zeros復号部と、前記レベル係数とゼロ係数が隣接するかどうかの判断を、高周波成分側にあるレベル係数から順にRun_beforeを復号することなく前記ゼロ係数が配列される位置とその配列個数が特定できるように復号ルックアップテーブルの最適化を行うRun_before復号部と、レベル係数部と、結合情報記憶部と、結合部を有したことを特徴とし、処理にかかるサイクル数を短縮するものである。
【0018】
上記の課題を解決するために、本発明の可変長符号装置は、H.264可変長復号装置の復号処理において、参照する復号テーブルへのアクセス回数を減らし、単位ブロックあたりの復号処理サイクル数を短縮することを特徴とする。
H.264可変長復号処理のRun_before復号処理おいて、非ゼロ係数(レベル係数)とゼロ係数との並び関係を示すラン係数に加え、単位ブロック中にあるゼロ係数の総数(Total_Zeros)からラン係数を減算したZerosシンボルと、連続して並ぶレベル係数の数を示すSkipシンボルを出力する復号ルックアップテーブルを使い、復号処理を行うことを特徴とする。
【0019】
H.264可変長復号処理のRun_before復号処理おいて、復号されるTotal_zerosに応じ、適応的に処理サイクル数を減らし、復号ルックアップテーブルへのアクセス回数を減らし消費電力を下げることを特徴とした可変長復号装置。
【発明の効果】
【0020】
本発明によれば、H.264可変長復号処理のRun_before復号処理おいて、復号ルックアップテーブルの最適化を行うことにより、ルックアップテーブルへのアクセス回数を減らしこれまで最大14サイクルかかっていた復号処理サイクルを1サイクルに短縮することができる。
【図面の簡単な説明】
【0021】
【図1】本発明における可変長復号装置の一実施例の構成を示すブロック図である。
【図2】本発明の可変長復号装置のRun_before復号部の一実施例の内部機能ブロックを示す図である。
【図3A】従来の可変長復号装置の一実施例の構成を示すブロック図である。
【図3B】従来のCoeff_token復号部の内部機能構成を示すブロック図である。
【図3C】従来のレベル復号部の内部機能ブロック図である。
【図3D】従来のTotal_zeros復号部の内部機能ブロック図である。
【図3E】従来のRun_before復号部の内部機能ブロック図である。
【図4】従来のRun_before復号テーブルである。
【図5A】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5B】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5C】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5D】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5E】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5F】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5G】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5H】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5I】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5J】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5K】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5L】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5M】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5N】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5O】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5P】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5Q】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5R】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5S】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5T】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5U】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5V】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5W】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5X】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【発明を実施するための形態】
【0022】
以下に本発明の一実施形態を図面等を用いて説明する。なお、以下の説明は、本発明の一実施形態を説明するためのものであり、本願発明の範囲を制限するものではない。従って、当業者であればこれらの各要素若しくは全要素をこれと均等なものに置換した実施形態を採用することが可能であり、これらの実施形態も本願発明の範囲に含まれる。
また、本書では、既に説明した図3A〜図3E、および図4を含め、以降の各図の説明において、共通な機能を有する構成要素には同一の参照番号を付し、説明を省略する。
【0023】
図1は、本発明における可変長復号装置の一実施例の構成を示すブロック図である。図1を用いて、本発明の可変長復号装置における復号プロセスの一実施例を説明する。100は本発明の可変長復号装置、105は復号部(Run_before復号部)、107は結合情報記憶部、108は結合部である。図1の可変長復号装置100は、従来の可変長復号装置300と比較し(図3A参照)、復号部305の替わりに復号部105を設け、結合部308の替わりに結合部108を設け、復号部105と結合部108の間に結合情報記憶部107を設けたものである。
【0024】
5つの復号部101〜105は、上位に位置する復号部から順に、Coeff_token係数、Trailing_ones係数、レベル係数、Total_zeros係数、ラン係数の各シンボルを復号する。各復号部101〜105は、上位の復号プロセスが完了すると、その復号シンボルを使って復号処理が開始できるようになっている点は、従来の復号プロセスと変わらず、復号部101〜104、レベル係数記憶部106に関しては、従来の図3Aの可変長復号装置300のものと、構成および機能とも全く同じである。従ってここでは、従来と異なるRun_before復号部105と、結合記憶部107および結合部108について説明する。
【0025】
はじめに、図2を用いて、本発明におけるRun_before復号部105の構成および動作について説明する。図2は、本発明の可変長復号装置のRun_before復号部105の一実施例の内部機能ブロックを示す図である。251はRun_before復号ルックアップテーブル、252はZeros_left選択手段、253はZeros_left記憶手段である。図2のRun_before復号部105は、従来のRun_before復号部305と比較し(図3E参照)、ISO/IEC14496-10規格のJVT−G0501に記載があるRun_before復号テーブル151の替わりにRun_before復号ルックアップテーブル251を設け、Zeros_left選択手段152の替わりにZeros_left選択手段252を設け、Zeros_left積算手段153の替わりにZeros_left記憶手段253を設けたものである。
【0026】
図2の実施例において、ストリーム記憶手段120、ストリーム供給手段121、および、アドレス生成手段150については従来と変わらない。そして、Zeros_left選択手段252、Run_before復号ルックアップテーブル251、およびZeros_left記憶手段253が、本発明の特徴となる部分である。
ストリーム記憶手段120からストリーム供給手段121に取り込んだ符号化ストリーム、および、Zeros_left選択手段252に記憶されているZeros_leftが、アドレス生成手段150に入力され、Run_before復号ルックアップテーブル251の参照アドレスを生成する。
Run_before復号ルックアップテーブル251は、従来の復号テーブルとインタフェースは変わらず、Zeros_leftに応じてRun_beforeの復号テーブルが変わる点は同じである。ただし、本発明のRun_before復号ルックアップテーブル251は、従来の復号テーブルを、最適化し、符号化ストリームとのマッチングを行う際に、符号化ストリームの先頭から連続して並ぶ“1”のビット列に着目し、全ビットサーチを行う。この結果、従来のRun_before復号テーブル151と異なり、Run_before値に加え、一致コードに対応付けられた、レベル係数とゼロ係数の並びを示すSkip値、および、新zeos_leftを同時に復号結果として出力することができる。
【0027】
図5A〜図5Xを用いて、本発明の復号ルックアップテーブルの一実施例を説明する。図5A〜図5Xは、本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
図5A〜図5X、復号ルックアップテーブル入力されるZeros_leftに応じて分類し、Zeros_left=1からZeros_left=14までの14種類のテーブルを持つ。また、1サイクルで参照する符号ストリームの最大ビット幅は、符号化ストリームの先頭から25ビットであり、この25ビットにおける“1”、“0”の並びに対応付けられた次の3つのシンボル、Skip、Run_before、Next_Zeros_leftがアクセスのたびに同時に出力される。
ここで、Skipとは復号されたレベル係数が複数ある場合に、これらレベル係数が連続した係数列になるかどうかを意味するシンボルであり、Skip=“0”の時は、レベル係数は連続して並ばず、このとき同時に復号されたRun_beforeが示す数だけゼロ係数がこの間挿入されることを意味する。
また、復号シンボルのNext_Zeros_leftは、Run_beforeの復号において、次のサイクルが必要かを判断するためのシンボルであり、Zeros_leftから、Run_beforeを減算した値があらかじめ、Next_Zeros_leftに割り当てられており、Next_Zeros_left=“0”となるまでRun_before復号処理が繰り返される。
【0028】
一方、Next_Zeros_left≠“0”の場合には、Run_before復号ルックアップテーブル251は、Zeros_left記憶手段253に、上記Next_Zeros_left値を出力し、Zeros_left記憶手段253は、入力された上記Next_Zeros_left値を記憶する。また同時に、Run_before復号ルックアップテーブル251は、Run_before復号ルックアップテーブル251で消費したビット長を、ストリーム供給手段121に出力する。そして、消費ビット長分、読み出し位置がシフトした次の符号化ストリームが、ストリーム供給手段121から供給される際に、Zeros_left記憶手段253に記憶された上記Next_Zeros_left値は、Zeros_left選択手段252を経由し、新たなZeros_leftとして出力される。
Run_before復号処理により復号されたSkip、Run_before、Next_Zeros_leftのシンボルは、後段の結合情報記憶部107に記憶される。
最後に、結合部108は、上記結合情報記憶部107の結果と照らし合わせて、レベル係数記憶部106に記憶されているレベル係数に、ゼロ係数を挿入し一次元の係数列に結合した伸張ストリームを出力する。
【0029】
以下、上記実施例を、従来復号テーブルを使ったRun_before復号処理に比べて、Run_before復号処理の処理リサイクル数を比較してみる。
4×4のSMBにおいて、すでにレベル係数復号部103で復号されたレベル係数が15ヶあり、Total_zeros=“1”で、入力符号化ストリームが“11111111111110・・・・”というケースを説明する。
従来技術で説明したように、復号開始時には、Total_zerosの値がZeros_leftの初期値になっている。そして、ストリーム供給手段121から供給されるビット列の先頭が“1・・”であることから、図4のRun_before復号テーブルで復号される最初のシンボルRun_before(0)の値は“0”となる。
【0030】
一方、復号結果のRun_before(0)値は、Run_before積算手段153にも送られ、累積加算されたZerosが後段のZeros記憶手段152に渡される。Zeros記憶手段152は、入力されたZerosをTotal_zerosの値から減算し、この減算結果(=“1”−“0”)をあらたなZeros_leftとして記憶する。Zeros_left≠“0”であることから2回目の復号処理が始まる。引き続き行われる2番目のシンボルRun_before(1)の復号は、Zeros_left=“1”、ストリーム供給手段121で消費ビット分シフトされ再び“1・・”からはじまることから、Run_before(1)=“0”となる。また、同時にZeros記憶手段152のZeros_leftは、“1”(=“1”−“0”)に更新される。
【0031】
入力符号化ストリームにおいて、以降も“1”が“111111111110・・・・”と11ヶ続くため、同様にRun_before(2)=“0”、Run_before(3)=“0”、Run_before(4)=“0”、・・・・Run_before(12)=“0”、となり13回、復号テーブルにアクセスした後、入力符号化ストリームの先頭ビットが“0・・・”となり、Run_before(13)=“1”となり、Run_before積算手段153に送られ、累積加算されたZerosが“1”と変わって、後段のZeros記憶手段152に渡される。Zeros記憶手段152は、入力されたZerosをTotal_zerosの値から減算し、この結果、Zeros_left=“0”(=“1”−“1”)となり、Run_beforeの復号処理が終了する。この間、14ケの復号シンボル(Run_before(0)〜Run_before(13))を復号し、結果的に復号までに14サイクル要する。
【0032】
一方、本発明における復号ルックアップテーブルを使った場合、Zeros_left=1からZeros_left=14まである4種類のテーブルのうち、Zeros_left=1の復号ルックアップテーブルを参照することになる。この結果、符号ストリームを先頭ビットからパターン検索し、全ビットパターンがマッチする符号列“11111111111110・・・・”を1サイクルで見つけ出し、Skip=“13”、Run_before=“1”、Next_Zeros_left=“0”を復号する。Next_Zeros_left=“0”であることから、Run_before復号処理は終了する。また、このシンボルを用い、結合部4は、Skipシンボルと同数(=13ヶ)、レベル係数が連続した後に、Run_beforeシンボルと同数(=0ヶ)、ゼロ系数が挿入された係数列に結合が可能となる。
【0033】
以上説明したように、上記実施例によれば、H.264可変長復号処理のRun_before復号処理おいて、復号ルックアップテーブルの最適化を行うことにより、ルックアップテーブルへのアクセス回数を減らしこれまで最大14サイクルかかっていた復号処理サイクルを1サイクルに短縮することができる。
【符号の説明】
【0034】
101〜105:復号部、 106:レベル係数部、 107:結合記憶部、 108:結合部、 120:ストリーム記憶手段、 121:ストリーム供給手段、 122:Coeff_token復号テーブル、 123:Total_coeff記憶手段、 300:従来の可変長復号装置、 305:復号部、 308:結合部、 130:プレフィックス復号部、 131:プレフィックス記憶手段、 132:レベルコード演算手段、 133:サフィックス復号手段、 134:消費ビット選択手段、 150:アドレス生成手段、 151:Run_before復号テーブル、 152:Zeros記憶手段、 153:Run_before積算手段、 251:Run_before復号ルックアップテーブル、 252:Zeros_left選択手段、 253:Zeros_left記憶手段。
【技術分野】
【0001】
本発明は、可変長復号装置に関わり、特に、H.264可変長符号化ストリームの復号処理における処理サイクル数の短縮に関するものである。
【背景技術】
【0002】
H.264符号化方式には、適応可変調符号化(CAVLC)と算術符号化(CABAC)の2つのエントロピー符号化が採用されており、これらエントロピー符号化により生成された符号化ストリームの復号プロセスについては、ISO/IEC14496-10規格に記載がある。本発明はこのうちCAVLCに関係するものであり、ここでは、従来のCAVLCの復号プロセスについて説明する。
CAVLCとは、context-based adaptive variable length codingの略であり、入力される符号化ストリーム中の符号化コードと、復号プロセスで得られる復号シンボルを使い参照する復号テーブルの参照先アドレスを適応的に変化させて、符号化ストリーム中の符号化コードを復号していくものである。
【0003】
図3Aは、従来の可変長復号装置の一例の構成を示すブロック図である。図3Aを用いて、従来の可変長復号装置における復号プロセスを説明する。300は従来の可変長復号装置、101〜104および305は復号部、106はレベル係数部、308は結合部である。
5つの復号部101〜104、および305は、前段に位置する復号部から順に以下の復号を行う。即ち、復号部101は入力された符号化ストリームのCoeff_token係数のシンボルを復号し、復号部102はTrailing_ones係数シンボルを復号し、復号部103はレベル係数シンボルを復号し、復号部104はTotal_zeros係数シンボルを復号し、復号部305はラン係数のシンボルを復号する。各復号部は、前段の復号プロセスが完了すると、その復号シンボルを使って復号処理が開始できるようになっている。
一連の復号処理は、サブマクロブロック(SMB)と呼ばれる4画素×4画素のブロック単位で行われる。そして、復号部101と復号部102は、それぞれ、上記Coeff_token係数とTotal_zeros係数を1SMBあたりに1回、復号処理する。また復号部103、104および305は、それぞれ、Trailing_ones係数、レベル係数、ラン係数について、入力符号化ストリームに応じ、繰り返し、シンボルの復号処理を行う。従って、1SMBの復号処理を行うには、複数回にわたり復号テーブルにアクセスしなければならない。
【0004】
図3Aの可変長復号装置300において、符号化ストリームは復号部(Coeff_token復号部)101に入力する。復号部101は、これから復号を開始するSMB内にあるレベル係数の数を示すシンボルTotal_coeffのシンボルの復号処理を実行する。図3BにCoeff_token復号部101の内部機能構成を示す。
Coeff_token復号部101は、符号化ストリームをバッファリングしておくためのストリーム記憶手段120と、シフトレジスタなどで構成されるストリーム供給手段121、ISO/IEC14496-10規格のJVT−G0501に記載があるCoeff_token復号テーブル122、および、復号シンボルを一時記憶するためのTotal_coeff記憶手段123からなる。
【0005】
Coeff_token復号部101の処理動作を、図3BのCoeff_token復号部101を用いて説明する。
図3Bにおいて、ストリーム記憶手段120は、符号化ストリームをバッファリングする。ストリーム供給手段121は、ストリーム記憶手段120から、復号する符号化ストリームを取り込み、Coeff_token復号テーブル122に出力する。
Coeff_token復号テーブル122は、入力されたストリームを、先頭ビットから順々にマッチングし、一致すると、対応付けされた値がシンボルとしてTotal_coeffとなる。復号されたTotal_coeffは、SMB内のレベル係数の総数を示すもので、後段の復号部で必要なシンボルである。このため、Total_coeff記憶手段123に出力され、Total_coeff記憶手段123はこのシンボルを記憶する。またこの時、Coeff_token復号テーブル122は、一致した符号化コードのビット長を、消費ビットとして、ストリーム供給手段121に出力(フィードバック)する。
ストリーム供給手段121は、フィードバックされる消費ビット長分、次のストリームの読み出し位置をシフトさせ、符号化ストリームを次の符号化コードの先頭から読み出せるようにしている。
ストリーム供給手段121で、消費ビット長分ストリームがシフトすると、Coeff_token復号部101の処理が完了したとして、Trailing_ones復号部102に処理が移行する。
【0006】
Trailing_ones復号部102は、上記Total_coeff記憶手段123に一時記憶されたTotal_coeffが示すレベル係数において係数“1”の符号に関するシンボルを復号する復号部で、上記Coeff_token復号部101と同様、復号テーブルを使った処理が行われる。
【0007】
次に、レベル復号部103の処理動作を、図3Cに示すレベル復号部の内部機能ブロック図を用いて説明する。
レベル復号部103は、レベル係数に関する復号処理であり、H.264符号化方式における符号なしゴロム復号にあたる。ここでは、符号なしゴロム復号の一般的な復号方法について説明する。
【0008】
レベル復号部103は、前述したCoeff_token復号部101と共通のストリーム記憶手段120とストリーム供給手段121を備え、そのほかにプレフィックス復号部130、プレフィックス記憶手段131、サフィックス復号手段133およびレベルコード演算手段132、消費ビット選択手段134を備える。
図3Bと同様に、ストリーム記憶手段120は、符号化ストリームをバッファリングする。ストリーム供給手段121は、ストリーム記憶手段120から、復号する符号化ストリームを取り込み、プレフィックス復号部130とサフィックス復号手段133に出力する。
ストリーム供給手段121からストリーム記憶手段120の符号化ストリームが供給されると、はじめにプレフィックス処理を行う。プレフィックス復号部130は、供給されたストリームを復号テーブルであらかじめ用意されているプレフィックス値に対応したビット列と照合し、プレフィックス値と完全に一致したストリームのビット長を求める。一致したプレフィックス値は、プレフィックス記憶手段131に一時記憶されると共に、ビット長の情報は、消費ビット選択手段134を経由しストリーム供給手段121出力される。
ストリーム供給手段121は、消費ビット選択手段134から入力されてくるビット長分、符号化ストリームをシフトさせ、次のサイクルからサフィックスに対応する符号化コードの復号をスタートさせる。通常は、外部から入力するタイミング信号に基づいて、プレフィックス復号手段130が終了した次のサイクルから、サフィックス復号手段133が有効になるように制御を切り替えている。
一方、サフィックス復号手段133は、プレフィックス記憶手段131に記憶されたプレフィックス値をもとに、供給されてくる符号化ストリームの有効ビットを認識し処理を行う。また、レベルコード演算手段132は、プレフィックス記憶手段131に格納されているプレフィックス復号シンボルと、サフィックス復号手段133で復号された復号シンボルを使い、所定の演算処理を行い、レベル係数を復号結果として出力する。同時にサフィックス復号手段133は、消費したビット長を消費ビット選択手段134に出力する。
消費ビット選択手段134は、上記タイミング信号に従い、有効中の復号手段がプレフィックス復号手段130なのか、サフィックス復号手段133なのかに判断し、入力される消費ビットをストリーム供給手段121へ出力する。1シンボルの復号で、ストリーム供給手段121は、プレフィックスの復号とサフィックスの復号の2回ストリームを読み出さなければならないため、2サイクル必要となる。また、レベル復号部の繰り返し処理は、レベル係数の数に一致し、1SMBあたりの最大復号シンボル数は15係数であるため、レベル復号部103で想定される処理サイクル数は最大30サイクルとなる。なお、符号なしゴロム復号方法については、プレフィックスとサフィックスを同時処理させ、サイクルを短くするための提案もいくつか出ており、一例としては、特許文献1などがある。
【0009】
次に、Total_zeros復号部104の処理動作を、図3Dに示すTotal_zeros復号部の内部機能ブロック図を用いて説明する。復号されるシンボルのTotal_zerosは、4×4のSMBを高周波成分側から逆スキャンした際にもっとも高周波成分側に位置する有意係数からDC成分までの1次元配列において存在するゼロ係数の数を表すものである。図3Dに示すように、上記Coeff_token復号部101と同様に、ストリーム記憶手段120から符号化ストリームをストリーム供給手段121に取り込み、ISO/IEC14496-10規格のJVT−G0501に記載があるTotal_zeros復号テーブル140とのマッチングにより、Total_zerosと一致した符号化ストリームのビット長を求める。
【0010】
Total_zerosは、Total_zeros記憶手段141に一時記憶され、ビット長は先に説明した各復号部101〜103と共通のストリーム供給手段121へ送られる。ストリーム供給手段121はTotal_zeros復号テーブル140から受け取った消費ビット長分、次のストリームの読み出し位置をシフトさせることにより、次の復号部であるRun_before復号部305では符号化コードの先頭から始まる符号化ストリームを入力できるようになる。
つまり、ストリーム供給手段121が、ストリームを消費ビット数分シフトすると、Total_zeros復号部104の処理は完了となり、Run_before復号部305に処理が移る。1SMBあたりに行うTotal_zeros復号部104の処理が1回であることから、Total_zeros復号部104での処理サイクル回数は1サイクルとなる。
【0011】
最後に、Run_before復号部305について説明する。図3Aの可変長復号装置300から最終的に出力される伸張ストリームは、4×4のSMBを高周波成分側から逆スキャンして並べた一次係数列である。
16個の係数列の並びは、入力符号化ストリームにより変動し、先にレベル復号部103にて復号されたシンボルのレベル係数は、この係数列を構成する非ゼロ係数に該当する。例えば、レベル復号部103にて復号されたレベル係数のシンボル数が16個未満のときには、ゼロ係数がこのレベル係数との間に挿入されることになる。つまり、Run_before復号部305は、先にレベル復号部103で復号されたレベル係数とTotal_zeros復号部104で復号されたゼロ係数を配列するためのシンボルを復号し、一次係数列にする際にゼロ係数の挿入位置とその挿入数に関するシンボルとなる。このシンボルを使い結合部308でレベル係数とゼロ係数の配列をおこない最終的な伸張ストリームが出力されることになる。
【0012】
Run_before復号部305の内部機能ブロック図を図3Eに示す。Run_before復号部305は、ストリーム記憶手段120、ストリーム供給手段121、アドレス生成手段150、ISO/IEC14496-10規格のJVT−G0501に記載があるRun_before復号テーブル151、およびZeros記憶手段152からなる。
アドレス生成手段150は、ストリーム記憶手段120からストリーム供給手段121に取り込まれた符号化ストリームと、Zeros記憶手段152から入力されるZeros_leftとに基づいて、Run_before復号テーブル151の参照アドレスを決定する。Run_before復号テーブル151は、ゼロ係数の挿入の有無と挿入時の個数を示すシンボルとなるRun_beforeを復号し、Run_before積算手段153および結合部308に出力する。またRun_before復号テーブル151は、消費ビット数をストリーム供給手段121を介してスタート記憶手段120に出力し、スタート記憶手段120に記憶させる。同様に、Run_before積算手段153は、入力されたシンボルRun_beforeを積算し、Zeros記憶手段152に出力し、Zeros記憶手段152のデータを更新する(詳細は後述する)。
【0013】
Run_before復号処理は、アドレス生成手段150に入力されるZeros_leftが更新されゼロになるまで繰り返される。
即ち、Run_before復号部305は、Run_before復号テーブル151にアクセスし、1シンボルずつ復号されるたびに、消費したビット長がRun_before復号テーブル151からストリーム供給手段121に送られ、ストリーム供給手段121にて消費ビット長分、次のストリームの読み出し位置がシフトするようになっている。
また、復号開始時は、Total_zeros復号部104で復号されたシンボルTotal_zerosがZeros_leftの初期値となりRun_before復号テーブル151の参照アドレスを確定する。また、2回目以降は、シンボルを繰り返して復号する際には、復号したシンボルRun_beforeをRun_before積算手段153で累積加算したシンボルZerosを、Zeros記憶手段152に記憶されているシンボルZeros_leftから減算し、減算結果に置き換えて更新したシンボルZeros_leftを使い、Run_before復号テーブル151の参照アドレスを適応的に変えていく。
【0014】
従来のRun_before復号テーブル151の一例を図4に示す。図4を用いて、従来例として、具体的に入力符号化ストリームを“10010000・・・”、Total_zeros=“7”とした場合の復号処理について説明する。
上述のように、復号開始時は、Total_zerosの値がZeros_leftの初期値になる。そして、ストリーム供給手段121から供給されるビット列の先頭が“100・・”である。このことから、図4のRun_before復号テーブルで復号される最初のシンボルRun_before(0)の値は“3”となる。一方、復号結果のRun_before(0)値は、Run_before積算手段153にも出力され、累積加算されたZerosが後段のZeros記憶手段152に出力される。Zeros記憶手段152は、入力されたZerosをTotal_zerosの値から減算し、この減算結果(=“7”−“3”)をあらたなZeros_leftとして記憶する。Zeros_left≠”0”であることから2回目の復号処理が始まる。
引き続き行われる2番目のシンボルRun_before(1)の復号は、Zeros_left=“4”、ストリーム供給手段121で消費ビット分シフトされ“10”からビット列がはじまることから、Run_before(1)=“1”となる。また、同時にZeros記憶手段152のZeros_leftは“3”(=“4”−“1”)に更新される。
以下同様、3番目のRun_before(2)の値の復号については、Zeros_left=“3”、ストリーム供給手段121で消費ビット分シフトされ“00”からビット列がはじまることから、Run_before(2)=“3”となる。また、Zeros記憶手段152のZeros_leftは“0”(=“3”−“3”)となる。上記一連の処理を繰り返し、Zeros_leftが“0”になると同時にRun_beforeに関する復号が完了する。
上記例では、Zeros_left が“0”になるまでに3つのシンボルRun_before(0)、Run_before(1)、Run_before(2)が復号され、Run_before復号テーブル151に3回のサイクルかかったことを意味する。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2007−60199号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
上述した説明のように、4×4のSMBの伸張処理では、5つの復号部において若しくは5つの復号プロセスを経て、必要なシンボルを復号する。このときの各復号部若しくは各復号プロセスに必要な処理サイクル数は、Coeff_token復号部101、および、Total_zeros復号部104で1サイクルずつ、それ以外の復号部においては、入力符号化ストリームによって変動するものの、テーブルアクセス回数から換算した最大のサイクル数は、Trailing_ones復号部102で3サイクル、レベル復号部103で30サイクル、Run_before復号部305で14サイクルとなる。
従って、従来の構成では、1SMBの符号化ストリームを復号処理するには最大で約50サイクル必要であることになる。特に、従来のRun_before復号部305の処理においては、レベル係数とゼロ係数が隣接するかどうかを、Run_beforeの復号結果をもとに、高周波成分側にあるレベル係数から1レベル係数ずつ順にチェックしていかねばならず、レベル係数が連続し、ゼロ係数が隣接しない場合であっても、「レベル係数の隣にゼロ係数はない」ということをシンボルとして復号しなければならない。このため、Run_before復号テーブル151へのアクセス回数がレベル係数の数だけ発生し、サイクル数が長くなるという問題があった。
そこで、本発明は、Run_before復号部305における、上記問題を解決し、1SMBあたりの処理に要するサイクル数を低減することを目的とする。具体的には、H.264可変長復号処理のRun_before復号処理おいて、非ゼロ係数(レベル係数)とゼロ係数との並び関係を示すラン係数に加え、単位ブロック中にあるゼロ係数の総数(Total_Zeros)からラン係数を減算したZerosシンボルと、連続してならぶレベル係数の数を示すSkipシンボルを出力するルックアップテーブルを使い、復号処理を行い、1SMBあたりのサイクル数を短くすることを目的とする。
【課題を解決するための手段】
【0017】
上記の課題を解決するために、本発明の可変長符号装置は、符号化ストリームを入力し、Coeff_token係数のシンボルを復号するCoeff_token復号部と、Trailing_ones係数シンボルを復号するTrailing_ones復号部と、レベル係数シンボルを復号するレベル復号部と、Total_zeros係数シンボルを復号するTotal_zeros復号部と、前記レベル係数とゼロ係数が隣接するかどうかの判断を、高周波成分側にあるレベル係数から順にRun_beforeを復号することなく前記ゼロ係数が配列される位置とその配列個数が特定できるように復号ルックアップテーブルの最適化を行うRun_before復号部と、レベル係数部と、結合情報記憶部と、結合部を有したことを特徴とし、処理にかかるサイクル数を短縮するものである。
【0018】
上記の課題を解決するために、本発明の可変長符号装置は、H.264可変長復号装置の復号処理において、参照する復号テーブルへのアクセス回数を減らし、単位ブロックあたりの復号処理サイクル数を短縮することを特徴とする。
H.264可変長復号処理のRun_before復号処理おいて、非ゼロ係数(レベル係数)とゼロ係数との並び関係を示すラン係数に加え、単位ブロック中にあるゼロ係数の総数(Total_Zeros)からラン係数を減算したZerosシンボルと、連続して並ぶレベル係数の数を示すSkipシンボルを出力する復号ルックアップテーブルを使い、復号処理を行うことを特徴とする。
【0019】
H.264可変長復号処理のRun_before復号処理おいて、復号されるTotal_zerosに応じ、適応的に処理サイクル数を減らし、復号ルックアップテーブルへのアクセス回数を減らし消費電力を下げることを特徴とした可変長復号装置。
【発明の効果】
【0020】
本発明によれば、H.264可変長復号処理のRun_before復号処理おいて、復号ルックアップテーブルの最適化を行うことにより、ルックアップテーブルへのアクセス回数を減らしこれまで最大14サイクルかかっていた復号処理サイクルを1サイクルに短縮することができる。
【図面の簡単な説明】
【0021】
【図1】本発明における可変長復号装置の一実施例の構成を示すブロック図である。
【図2】本発明の可変長復号装置のRun_before復号部の一実施例の内部機能ブロックを示す図である。
【図3A】従来の可変長復号装置の一実施例の構成を示すブロック図である。
【図3B】従来のCoeff_token復号部の内部機能構成を示すブロック図である。
【図3C】従来のレベル復号部の内部機能ブロック図である。
【図3D】従来のTotal_zeros復号部の内部機能ブロック図である。
【図3E】従来のRun_before復号部の内部機能ブロック図である。
【図4】従来のRun_before復号テーブルである。
【図5A】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5B】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5C】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5D】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5E】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5F】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5G】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5H】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5I】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5J】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5K】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5L】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5M】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5N】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5O】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5P】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5Q】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5R】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5S】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5T】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5U】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5V】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5W】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【図5X】本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
【発明を実施するための形態】
【0022】
以下に本発明の一実施形態を図面等を用いて説明する。なお、以下の説明は、本発明の一実施形態を説明するためのものであり、本願発明の範囲を制限するものではない。従って、当業者であればこれらの各要素若しくは全要素をこれと均等なものに置換した実施形態を採用することが可能であり、これらの実施形態も本願発明の範囲に含まれる。
また、本書では、既に説明した図3A〜図3E、および図4を含め、以降の各図の説明において、共通な機能を有する構成要素には同一の参照番号を付し、説明を省略する。
【0023】
図1は、本発明における可変長復号装置の一実施例の構成を示すブロック図である。図1を用いて、本発明の可変長復号装置における復号プロセスの一実施例を説明する。100は本発明の可変長復号装置、105は復号部(Run_before復号部)、107は結合情報記憶部、108は結合部である。図1の可変長復号装置100は、従来の可変長復号装置300と比較し(図3A参照)、復号部305の替わりに復号部105を設け、結合部308の替わりに結合部108を設け、復号部105と結合部108の間に結合情報記憶部107を設けたものである。
【0024】
5つの復号部101〜105は、上位に位置する復号部から順に、Coeff_token係数、Trailing_ones係数、レベル係数、Total_zeros係数、ラン係数の各シンボルを復号する。各復号部101〜105は、上位の復号プロセスが完了すると、その復号シンボルを使って復号処理が開始できるようになっている点は、従来の復号プロセスと変わらず、復号部101〜104、レベル係数記憶部106に関しては、従来の図3Aの可変長復号装置300のものと、構成および機能とも全く同じである。従ってここでは、従来と異なるRun_before復号部105と、結合記憶部107および結合部108について説明する。
【0025】
はじめに、図2を用いて、本発明におけるRun_before復号部105の構成および動作について説明する。図2は、本発明の可変長復号装置のRun_before復号部105の一実施例の内部機能ブロックを示す図である。251はRun_before復号ルックアップテーブル、252はZeros_left選択手段、253はZeros_left記憶手段である。図2のRun_before復号部105は、従来のRun_before復号部305と比較し(図3E参照)、ISO/IEC14496-10規格のJVT−G0501に記載があるRun_before復号テーブル151の替わりにRun_before復号ルックアップテーブル251を設け、Zeros_left選択手段152の替わりにZeros_left選択手段252を設け、Zeros_left積算手段153の替わりにZeros_left記憶手段253を設けたものである。
【0026】
図2の実施例において、ストリーム記憶手段120、ストリーム供給手段121、および、アドレス生成手段150については従来と変わらない。そして、Zeros_left選択手段252、Run_before復号ルックアップテーブル251、およびZeros_left記憶手段253が、本発明の特徴となる部分である。
ストリーム記憶手段120からストリーム供給手段121に取り込んだ符号化ストリーム、および、Zeros_left選択手段252に記憶されているZeros_leftが、アドレス生成手段150に入力され、Run_before復号ルックアップテーブル251の参照アドレスを生成する。
Run_before復号ルックアップテーブル251は、従来の復号テーブルとインタフェースは変わらず、Zeros_leftに応じてRun_beforeの復号テーブルが変わる点は同じである。ただし、本発明のRun_before復号ルックアップテーブル251は、従来の復号テーブルを、最適化し、符号化ストリームとのマッチングを行う際に、符号化ストリームの先頭から連続して並ぶ“1”のビット列に着目し、全ビットサーチを行う。この結果、従来のRun_before復号テーブル151と異なり、Run_before値に加え、一致コードに対応付けられた、レベル係数とゼロ係数の並びを示すSkip値、および、新zeos_leftを同時に復号結果として出力することができる。
【0027】
図5A〜図5Xを用いて、本発明の復号ルックアップテーブルの一実施例を説明する。図5A〜図5Xは、本発明の可変長復号装置における復号ルックアップテーブルの一実施例を示す図である。
図5A〜図5X、復号ルックアップテーブル入力されるZeros_leftに応じて分類し、Zeros_left=1からZeros_left=14までの14種類のテーブルを持つ。また、1サイクルで参照する符号ストリームの最大ビット幅は、符号化ストリームの先頭から25ビットであり、この25ビットにおける“1”、“0”の並びに対応付けられた次の3つのシンボル、Skip、Run_before、Next_Zeros_leftがアクセスのたびに同時に出力される。
ここで、Skipとは復号されたレベル係数が複数ある場合に、これらレベル係数が連続した係数列になるかどうかを意味するシンボルであり、Skip=“0”の時は、レベル係数は連続して並ばず、このとき同時に復号されたRun_beforeが示す数だけゼロ係数がこの間挿入されることを意味する。
また、復号シンボルのNext_Zeros_leftは、Run_beforeの復号において、次のサイクルが必要かを判断するためのシンボルであり、Zeros_leftから、Run_beforeを減算した値があらかじめ、Next_Zeros_leftに割り当てられており、Next_Zeros_left=“0”となるまでRun_before復号処理が繰り返される。
【0028】
一方、Next_Zeros_left≠“0”の場合には、Run_before復号ルックアップテーブル251は、Zeros_left記憶手段253に、上記Next_Zeros_left値を出力し、Zeros_left記憶手段253は、入力された上記Next_Zeros_left値を記憶する。また同時に、Run_before復号ルックアップテーブル251は、Run_before復号ルックアップテーブル251で消費したビット長を、ストリーム供給手段121に出力する。そして、消費ビット長分、読み出し位置がシフトした次の符号化ストリームが、ストリーム供給手段121から供給される際に、Zeros_left記憶手段253に記憶された上記Next_Zeros_left値は、Zeros_left選択手段252を経由し、新たなZeros_leftとして出力される。
Run_before復号処理により復号されたSkip、Run_before、Next_Zeros_leftのシンボルは、後段の結合情報記憶部107に記憶される。
最後に、結合部108は、上記結合情報記憶部107の結果と照らし合わせて、レベル係数記憶部106に記憶されているレベル係数に、ゼロ係数を挿入し一次元の係数列に結合した伸張ストリームを出力する。
【0029】
以下、上記実施例を、従来復号テーブルを使ったRun_before復号処理に比べて、Run_before復号処理の処理リサイクル数を比較してみる。
4×4のSMBにおいて、すでにレベル係数復号部103で復号されたレベル係数が15ヶあり、Total_zeros=“1”で、入力符号化ストリームが“11111111111110・・・・”というケースを説明する。
従来技術で説明したように、復号開始時には、Total_zerosの値がZeros_leftの初期値になっている。そして、ストリーム供給手段121から供給されるビット列の先頭が“1・・”であることから、図4のRun_before復号テーブルで復号される最初のシンボルRun_before(0)の値は“0”となる。
【0030】
一方、復号結果のRun_before(0)値は、Run_before積算手段153にも送られ、累積加算されたZerosが後段のZeros記憶手段152に渡される。Zeros記憶手段152は、入力されたZerosをTotal_zerosの値から減算し、この減算結果(=“1”−“0”)をあらたなZeros_leftとして記憶する。Zeros_left≠“0”であることから2回目の復号処理が始まる。引き続き行われる2番目のシンボルRun_before(1)の復号は、Zeros_left=“1”、ストリーム供給手段121で消費ビット分シフトされ再び“1・・”からはじまることから、Run_before(1)=“0”となる。また、同時にZeros記憶手段152のZeros_leftは、“1”(=“1”−“0”)に更新される。
【0031】
入力符号化ストリームにおいて、以降も“1”が“111111111110・・・・”と11ヶ続くため、同様にRun_before(2)=“0”、Run_before(3)=“0”、Run_before(4)=“0”、・・・・Run_before(12)=“0”、となり13回、復号テーブルにアクセスした後、入力符号化ストリームの先頭ビットが“0・・・”となり、Run_before(13)=“1”となり、Run_before積算手段153に送られ、累積加算されたZerosが“1”と変わって、後段のZeros記憶手段152に渡される。Zeros記憶手段152は、入力されたZerosをTotal_zerosの値から減算し、この結果、Zeros_left=“0”(=“1”−“1”)となり、Run_beforeの復号処理が終了する。この間、14ケの復号シンボル(Run_before(0)〜Run_before(13))を復号し、結果的に復号までに14サイクル要する。
【0032】
一方、本発明における復号ルックアップテーブルを使った場合、Zeros_left=1からZeros_left=14まである4種類のテーブルのうち、Zeros_left=1の復号ルックアップテーブルを参照することになる。この結果、符号ストリームを先頭ビットからパターン検索し、全ビットパターンがマッチする符号列“11111111111110・・・・”を1サイクルで見つけ出し、Skip=“13”、Run_before=“1”、Next_Zeros_left=“0”を復号する。Next_Zeros_left=“0”であることから、Run_before復号処理は終了する。また、このシンボルを用い、結合部4は、Skipシンボルと同数(=13ヶ)、レベル係数が連続した後に、Run_beforeシンボルと同数(=0ヶ)、ゼロ系数が挿入された係数列に結合が可能となる。
【0033】
以上説明したように、上記実施例によれば、H.264可変長復号処理のRun_before復号処理おいて、復号ルックアップテーブルの最適化を行うことにより、ルックアップテーブルへのアクセス回数を減らしこれまで最大14サイクルかかっていた復号処理サイクルを1サイクルに短縮することができる。
【符号の説明】
【0034】
101〜105:復号部、 106:レベル係数部、 107:結合記憶部、 108:結合部、 120:ストリーム記憶手段、 121:ストリーム供給手段、 122:Coeff_token復号テーブル、 123:Total_coeff記憶手段、 300:従来の可変長復号装置、 305:復号部、 308:結合部、 130:プレフィックス復号部、 131:プレフィックス記憶手段、 132:レベルコード演算手段、 133:サフィックス復号手段、 134:消費ビット選択手段、 150:アドレス生成手段、 151:Run_before復号テーブル、 152:Zeros記憶手段、 153:Run_before積算手段、 251:Run_before復号ルックアップテーブル、 252:Zeros_left選択手段、 253:Zeros_left記憶手段。
【特許請求の範囲】
【請求項1】
符号化ストリームを入力し、Coeff_token復号部と、Trailing_ones復号部と、レベル復号部と、Total_zeros復号部と、前記レベル係数とゼロ係数が隣接するかどうかの判断を、高周波成分側にあるレベル係数から順にRun_beforeを復号することなく前記ゼロ係数が配列される位置とその配列個数が特定できるように復号ルックアップテーブルの最適化を行うRun_before復号部と、レベル係数部と、結合情報記憶部と、結合部を有したことを特徴とする可変長復号装置。
【請求項1】
符号化ストリームを入力し、Coeff_token復号部と、Trailing_ones復号部と、レベル復号部と、Total_zeros復号部と、前記レベル係数とゼロ係数が隣接するかどうかの判断を、高周波成分側にあるレベル係数から順にRun_beforeを復号することなく前記ゼロ係数が配列される位置とその配列個数が特定できるように復号ルックアップテーブルの最適化を行うRun_before復号部と、レベル係数部と、結合情報記憶部と、結合部を有したことを特徴とする可変長復号装置。
【図1】
【図2】
【図3A】
【図3B】
【図3C】
【図3D】
【図3E】
【図4】
【図5A】
【図5B】
【図5C】
【図5D】
【図5E】
【図5F】
【図5G】
【図5H】
【図5I】
【図5J】
【図5K】
【図5L】
【図5M】
【図5N】
【図5O】
【図5P】
【図5Q】
【図5R】
【図5S】
【図5T】
【図5U】
【図5V】
【図5W】
【図5X】
【図2】
【図3A】
【図3B】
【図3C】
【図3D】
【図3E】
【図4】
【図5A】
【図5B】
【図5C】
【図5D】
【図5E】
【図5F】
【図5G】
【図5H】
【図5I】
【図5J】
【図5K】
【図5L】
【図5M】
【図5N】
【図5O】
【図5P】
【図5Q】
【図5R】
【図5S】
【図5T】
【図5U】
【図5V】
【図5W】
【図5X】
【公開番号】特開2011−188431(P2011−188431A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願番号】特願2010−54446(P2010−54446)
【出願日】平成22年3月11日(2010.3.11)
【出願人】(000001122)株式会社日立国際電気 (5,007)
【Fターム(参考)】
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願日】平成22年3月11日(2010.3.11)
【出願人】(000001122)株式会社日立国際電気 (5,007)
【Fターム(参考)】
[ Back to top ]