(57)【要約】【課題】大容量のメモリを使わずに一括して高速に正規化処理を行う正規化処理装置の提供を目的とする。【解決手段】領域のサイズが設定値以上となるのに必要なシフト量を算出するシフト量算出手段１０１と、シフト量に基づいて領域のサイズ及び領域の下端値にシフト処理を施すシフト手段１０２と、未出力ビット数及び領域の下端値を用いて出力ビット列のプレフィックスを算出するプレフィックス生成手段１０４と、領域の下端値を用いて出力ビット列のサフィックスを算出するサフィックス生成手段１０５と、未出力ビット数及び領域の下端値及びシフト量を用いて未出力ビット数を算出する未出力ビット算出手段１０３と、シフト量及び未出力ビット数を用いて、プレフィックスとサフィックスを結合して出力するビット列結合手段１０６とを備える。【選択図】図１
2008113375.tif 000002
【特許請求の範囲】
【請求項１】
算術符号化処理において現行シンボルの出現値により選択される数直線上の領域のサイズ、領域の下端値、及び未出力ビット数を入力し正規化処理を行う正規化処理装置であって、
前記領域のサイズが設定値以上となるのに必要なシフト量を算出するシフト量算出手段と、
前記シフト量に基づいて前記領域のサイズ及び前記領域の下端値にシフト処理を施すシフト手段と、
前記未出力ビット数及び前記領域の下端値を用いて出力ビット列のプレフィックスを算出するプレフィックス生成手段と、
前記領域の下端値を用いて出力ビット列のサフィックスを算出するサフィックス生成手段と、
前記未出力ビット数及び前記領域の下端値及び前記シフト量を用いて未出力ビット数を算出する未出力ビット算出手段と、
前記シフト量及び前記未出力ビット数を用いて、前記プレフィックスとサフィックスを結合して出力するビット列結合手段とを備えることを特徴とする正規化処理装置。
【請求項２】
出力ビットが最初の出力ビットか否かを示す先頭ビットフラグを更に入力し、前記未出力ビット算出手段は、前記領域の下端値及び前記シフト量から前記先頭ビットフラグを算出することを特徴とする請求項１に記載の正規化処理装置。
【請求項３】
前記シフト量算出手段は、前記領域のサイズを２進数で表現した際に値が１となる最もＭＳＢに近いビットの位置を算出するデコード手段を有することを特徴とする請求項１又は請求項２に記載の正規化処理装置。
【請求項４】
前記未出力ビット生成手段は、前記領域の下端値を２進数で表現した際に値が０となる最もＬＳＢに近いビットの位置を算出するデコード手段を有することを特徴とする請求項１〜３のいずれか１項に記載の正規化処理装置。
【請求項５】
前記プレフィックス生成手段は、前記領域の下端値の最上位ビットと、それに続く未出力ビット数分のビットをプレフィックスとして算出することを特徴とする請求項１〜４のいずれか１項に記載の正規化処理装置。
【請求項６】
前記サフィックス生成手段は、前記領域の下端値のビット列の一部をサフィックスとして出力することを特徴とする請求項１〜５のいずれか１項に記載の正規化処理装置。
【請求項７】
前記ビット列結合手段は、前記未出力ビット数を用いて算出されたプレフィックス長を用いて前記プレフィックスとサフィックスを結合することを特徴とする請求項１〜６のいずれか１項に記載の正規化処理装置。
【請求項８】
前記シフト量及び前記未出力ビット数を用いて出力ビット数を算出する算出手段を更に備え、
前記ビット列結合手段は、前記プレフィックスとサフィックスが結合されたビット列から、前記出力ビット数分を出力することを特徴とする請求項１〜７のいずれか１項に記載の正規化処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は算術符号化における正規化処理装置に関するものである。
【背景技術】
【０００２】
近年、動画像の圧縮符号化方式として「H.264」と呼ばれる方式が規格化された。このH.264符号化方式では、MPEG2およびMPEG4などの従来の圧縮符号化方式に比べて、多くの演算量が要求されるが、より高い符号化効率が実現されることが知られている。このH.264符号化方式では可変長符号化方式として、コンテキスト適応型算術符号化（CABAC）方式が定義されている（非特許文献１参照）。
【０００３】
算術符号化ではシンボル系列を数直線状で0.0から1.0までの間にマッピングし、その座標を2進表示したものを符号語として符号化する。
【０００４】
シンボルとして「1」が出現する確率を「r」、「0」が出現する確率を「1-r」とし、第I時点でのシンボル系列の数直線上での範囲をcodlRangeその範囲の最小の座標をcodlLowとする。出現したシンボルが「0」のときはcodlRange,codlLowは以下のように更新される。
codlRange = (1-r)* codlRange
codlLow= codlLow +r* codlRange
【０００５】
一方、出現したシンボルが１のときはcodlRange,codlLowは以下のように更新される。
codlRange = r* codlRange
codlLow= codlLow
【０００６】
ここでマッピングが順次繰り返されるにつれ、範囲codlRangeは次第に小さくなっていくので、演算の精度を保つために正規化処理が必要になる。
【０００７】
CABAC方式における正規化処理のフローを図２に示す。数直線上での範囲codlRange, その範囲の最小の座標codlLow, 未出力ビット数bitsOutStanding, 出力ビットがスライスの最初の出力ビットか否かを示すfirstBitFlagが入力される。
【０００８】
そして、正規化処理が行われ後に数直線上での範囲codlRange、その範囲の最小の座標codlLow、未出力ビット数bitsOutStanding、出力ビットがスライスの最初の出力ビットか否かを示すfirstBitFlag及び、符号化ビット列が出力される。
【０００９】
ステップＳ２０１においてcodlRangeが0x100よりも小さいか否かを判定する。0x100よりも小さい場合には正規化処理を終了する。0x100以上である場合にはステップＳ２０２に進む。
【００１０】
ステップＳ２０２においてcodlLowが0x100よりも小さいか否かを判定する。0x100よりも小さい場合にはステップＳ２０４に進み、後述の関数PutBit(0)を実行しステップＳ２０８に進む。0x100以上である場合にはステップＳ２０３に進み、codlLowが0x200以上であるか否かを判定する。
【００１１】
codlLowが0x200よりも小さい場合にはステップＳ２０５に進み、codlLowから0x100を減算する。
【００１２】
また、bitsOutStandingをインクリメントし、ステップＳ２０８に進む。ステップＳ２０３において、codlLowが0x200以上である場合にはステップＳ２０６に進み、codlLowから0x200を減算し、ステップＳ２０７に進む。
【００１３】
続いてステップＳ２０７において後述の関数PutBit(1)を実行しステップＳ２０８に進む。ステップＳ２０８では、codlRange,codlLowを1ビット左シフトすることで２倍に拡大し、ステップＳ２０１に戻る。
【００１４】
続いて、関数PutBit(B)の内容について図３を用いて説明する。引数Bは0か1の値をとる。ステップＳ３０１において、firstBitFlagが0であるか否かを判定する。0である場合にはステップＳ３０２に進み、firstBitFlagを0にしてステップＳ３０４に進む。0でない場合にはステップＳ３０３に進み、1ビットBを出力しステップＳ３０４に進む。
【００１５】
ステップＳ３０４においてbitsOutStandingが0より大きいか否かを判定する。0以下である場合には処理を終了する。0より大きい場合にはステップＳ３０５に進み、1-Bの値を1ビット出力し、bitsOutStandingをデクリメントしてステップＳ３０４に戻る。
【００１６】
従来の正規化処理装置の一例を図１０に示す。記憶手段１００１は信号codlRange, codlLow, bitsOutStanding, firstBitFlag, 及び出力ビット列を記憶しておくレジスタアレイである。判定器１００２は記憶手段１００１に記録されたcodlRangeの値を0x100と比較する判定器である。
【００１７】
判定機１００２はcodlRangeの値が0x100以上であれば出力器１００４に記憶手段１００１の内容を転送し、codlRangeの値が0x100より小さければビット列算出器１００３に記憶手段１００１の内容を転送する。
【００１８】
ビット列算出器１００３は図２のフローチャートのステップＳ２０２からＳ２０８までの処理を行う回路である。ビット列算出器１００３で算出されたcodlRange, codlLow, bitsOutStanding, firstBitFlag 及び出力ビット列は記憶手段１００１に転送され、その結果記憶手段１００１の内容が更新される。
【００１９】
出力器１００４は判定器１００２から転送されてきたcodlRange, codlLow, bitsOutStanding, firstBitFlag 及び出力ビット列を外部に出力する回路である。
【００２０】
【非特許文献１】ITU-T  H.264 Advanced video coding for generic audiovisual services
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、上記従来の正規化処理においては、ビット列算出器１００３においてcodlRangeを２倍するごとに記憶手段１００１にcodlRangeの値を戻し、判定器１００２にて終了判定をする必要があった。そのため、一括して正規化を行えず符号化・復号化処理を高速に実行できないという問題があった。
【００２２】
例えばcodlRangeの値が1であった場合には、記憶手段１００１の内容の更新および判定器１００２での終了判定を８回繰り替えすので、一回の判定処理に1サイクルかかる回路であっても、正規化処理全体では８サイクルも要してしまっていた。
【００２３】
一方、すべてのcodlRange, codlLow, firstBitFlag, bitsOutStandingに対応する出力値をテーブルとして予め用意する場合も考えられる。この場合、大容量のメモリが必要となってしまいコストがかかるという問題があった。
【００２４】
そこで本発明は大容量のメモリを使わずに一括して高速に正規化処理を行う手段を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の正規化処理装置は、算術符号化処理において現行シンボルの出現値により選択される数直線上の領域のサイズ、領域の下端値、及び未出力ビット数を入力し正規化処理を行う正規化処理装置であって、前記領域のサイズが設定値以上となるのに必要なシフト量を算出するシフト量算出手段と、前記シフト量に基づいて前記領域のサイズ及び前記領域の下端値にシフト処理を施すシフト手段と、前記未出力ビット数及び前記領域の下端値を用いて出力ビット列のプレフィックスを算出するプレフィックス生成手段と、前記領域の下端値を用いて出力ビット列のサフィックスを算出するサフィックス生成手段と、前記未出力ビット数及び前記領域の下端値及び前記シフト量を用いて未出力ビット数を算出する未出力ビット算出手段と、前記シフト量及び前記未出力ビット数を用いて、前記プレフィックスとサフィックスを結合して出力するビット列結合手段とを備えることを特徴とする。
【発明の効果】
【００２６】
本発明によれば、領域のサイズから算出したシフト量と、領域の下端値および未出力ビット数を用いて算出した出力ビット列のプレフィックスとサフィックスとから、正規化処理後の領域のサイズおよび領域の下端値および未出力ビット数、出力ビット列を一括して算出することが可能である。その結果、大容量のメモリを使わずに、高速に正規化処理を行うことが可能になる。
【発明を実施するための最良の形態】
【００２７】
図１は本発明の実施形態の構成を示した図である。図１において本発明にかかわる正規化処理装置１０７はシフト量算出手段１０１、シフト手段１０２、未出力ビット算出手段１０３、プレフィックス生成手段１０４、サフィックス生成手段１０５、及びビット列結合手段１０６を備える。
【００２８】
正規化処理装置１０７には数直線上での範囲として９ビットの信号codlRange, その範囲の最小の座標として１０ビットの信号codlLow, 未出力ビット数として十分に大きなビット数の信号bitsOutStanding, 出力ビットがスライスの最初の出力ビットか否かを示す1ビットの信号firstBitFlagが入力される。
【００２９】
シフト量算出手段１０１は、codlRangeの値をデコードし、シフト量Nを算出する回路である。ここでシフト量とは、図２のフローチャートにおいて、ステップＳ２０８でのシフトを行う回数を表す値である。
【００３０】
シフト手段１０２は、シフト量算出手段１０１で算出されたシフト量だけcodlRangeおよびcodlLowを左シフトして出力するバレルシフタ回路である。
【００３１】
未出力ビット算出手段１０３はcodlLow, firstBitFlag, bitsOutStanding, 前記シフト量からbitsOutStanding, firstBitFlag を算出して出力する回路である。
【００３２】
プレフィックス生成手段１０４はbitsOutStanding、codlLow、firstBitFlagから出力ビット列のプレフィックスを算出する回路である。
【００３３】
サフィックス生成手段１０５はcodlLowから出力ビット列のサフィックスを算出する回路である。
【００３４】
ビット列結合手段１０６はプレフィックス生成手段１０４で算出されたプレフィックスおよびサフィックス生成手段１０５で算出されたサフィックスを結合してビット列を生成し、出力する回路である。
【００３５】
次にcodlRangeおよびシフト量Nの算出について説明する。図２のステップＳ２０１でcodlRangeの値が0x100以上と判定されるまで、codlRangeの値を左シフトするので、codlRangeを２進数で表現した際に値が１となるビットの最大ビット位置をXとすると、シフト量は以下の式で表される。
N=Max(8-X,0)
【００３６】
例えば図５のように、codlRange= 0b000001010の時は、値が１となる最大ビット位置はＬＳＢから数えて３ビット目であるため、X=3,N=5となる。
【００３７】
図４にシフト量算出手段１０１の構成を示す。図４において４０１はcodlRangeからXを算出するビット位置デコーダ（以下、単にデコーダとも称す）である。デコーダ４０１で算出されたXの値は減算器４０２へ入力され、8-Xの値が算出される。
【００３８】
さらに8-Xの値は比較器４０３へ入力される。比較器４０３において0と比較され、大きいほうの値がシフト量Nとして出力される。このシフト量Nはシフト手段１０２へ入力される。シフト手段１０２においてcodlRangeはNビット左シフトされ、出力される。
【００３９】
次にcodlLowの算出について説明する。図２のステップＳ２０２からステップＳ２０８により、一回のループ内でのcodlLowへの処理は以下のように表される。
if codlLow < 0x100 then 
codlLow = codlLow<<1
else if codlLow < 0x200 then
codlLow = (codlLow-0x100) <<1
else
codlLow = (codlLow-0x200) << 1
【００４０】
ここでcodlLow[9:8]の2ビットに着目すると、この2ビットのとりうる値は00, 01, 10, 11の4種類が存在する。codlLow[9:8]の2ビットの値を現在の状態とし、codlLow[7:7]の値を遷移条件と考えると、codlLowの変化の様子は図５の状態遷移図で表される。
【００４１】
状態遷移図において状態５０１はcodlLow[9:8]が10の値をとる状態を表している。状態５０２はcodlLow[9:8]が11の値をとる状態を表している。同様に状態５０３はcodlLow[9:8]が01の値をとる状態を表し, 状態５０４はcodlLow[9:8]が00の値をとる状態を表す。
【００４２】
５０５は終了状態を表す。また内部変数Kは初期値が0であり、一回遷移するたびに１ずつインクリメントされる変数である。Kがシフト量Nに到達した場合には、直ちに状態５０５へ進み、処理を終了する。
【００４３】
また、シフト量Nが0の場合にも直ちに状態５０５へ進み、処理を終了する。現在の状態が状態５０１であるときは、codlLow >=0x200であるためPutBit(1)が実行される。また、codlLow= codlLow-0x200 << 1により、codlLow[9:9]を1から0に変更して1ビット左シフトが行われる。
【００４４】
これにより、現在のcodlLow[7:7]の値が1ならば状態５０３へ進む。またcodlLow[7:7]の値が0ならば状態５０４に進む。現在の状態が状態５０２であるときは、codlLow >=0x200であるためPutBit(1)が実行される。また、codlLow= codlLow-0x200 << 1により、codlLow[9:9]を1から0に変更して1ビット左シフトが行われる。
【００４５】
これにより、現在のcodlLow[7:7]の値が1ならば状態５０２へ進む。またcodlLow[7:7]の値が0ならば状態５０１に進む。現在の状態が状態５０３であるときは、 0x100 <=codlLow <0x200であるためbitsOutStanding がインクリメントされる。また、codlLow= codlLow-0x100 << 1により、codlLow[8:8]を1から0に変更して1ビット左シフトが行われる。
【００４６】
これにより、現在のcodlLow[7:7]の値が1ならば状態５０３へ進む。またcodlLow[7:7]の値が0ならば状態５０４に進む。現在の状態が状態５０４であるときは、 0x100 > codlLow であるためPutBit(0) が実行される。
【００４７】
また、codlLow= codlLow << 1により、1ビット左シフトが行われる。これにより、現在のcodlLow[7:7]の値が1ならば状態５０３へ進む。またcodlLow[7:7]の値が0ならば状態５０４に進む。
【００４８】
この状態遷移図より、状態５０１、５０２、５０３、５０４において現在のcodlLow[7:7]の値は遷移後のcodlLow[8:8]の値と必ず同じになることが分かる。
【００４９】
また、遷移後のcodlLow[7:0]の値は現在のcodlLow[6:0]を1ビット左シフトしたものと同じである。
【００５０】
一方、いったん状態５０３、および５０４に遷移すると、状態５０１、および５０２に戻ることはないことから、最終的にcodlLow[9:9]が1であるのはcodlLow[9:9-N]のすべてのビットが1である場合のみであることが分かる。
【００５１】
図６にシフト手段１０２の構成を示す。６０１はcodlRangeの値をNビット左シフトするためのバレルシフタである。６０２はcodlLowの値をNビット左シフトするためのバレルシフタである。６０３はバレルシフタ６０２からの出力の上位ビットN+1ビットから、codlLow[9:9]を算出するためのデコーダ回路である。
【００５２】
デコーダ６０３での処理は、バレルシフタ６０２からの出力の上位N+1ビットの各ビットの論理積をとって出力することにより可能である。
【００５３】
６０４はバレルシフタ６０２の下位9ビットと、デコーダ６０３からの出力を結合し、codlLowとして出力する回路である。
【００５４】
次にbitsOutStandingの算出について説明する。また、図３のフローチャートから、bitsOutStandingはPutBit関数により0にクリアされる。そのため、codlLow[9:9-N]の下位ビットから数えて連続する1の個数を未出力ビット加算数MとするとbitsOutStandingの出力値は以下で与えられる。
if N==M+1 then
bitsOutStanding = bitsOutStanding + M
else if N = 0 then
bitsOutStanding = bitsOutStanding
else if N = M then
bitsOutStanding = 0
else
bitsOutStanding = M
【００５５】
また図３のフローチャートから、firstBitFlagはPutBit関数により0にクリアされるので、firstBitFlagとして1が出力されるのは、入力のfirstBitFlag の値が1で、かつPutBit関数が一度も実行されない場合である。PutBit関数が一度も呼ばれないのは、図５の状態遷移図で、codlLow[9:8]が常に01である場合である。即ち、codlLow[9:9-N] = 0b01111..1の場合あるいはシフト量Nが0の場合である場合である。firstBitFlagの出力は以下の式で表される。
if N = 0 then
firstBitFlag = firstBitFlag
else if N = M+1 then
firstBitFlag = firstBitFlag
else
firstBitFlag = 0
【００５６】
これにより、codlLowの値から未出力ビット加算数Mを算出すれば, bitsOutStanding およびfirstBitFlagを直ちに求めることができる。
【００５７】
未出力ビット算出手段１０３の構成を図７に示す。７０１はcodlLow,およびシフト量Nから未出力ビット加算数Mを算出するビット数デコーダ回路である。７０２はbitsOutStanding , firstBitFlag およびシフト量N, 未出力ビット加算数Mの値から式を計算してbitsOutStandingおよびfirstBitFlagを出力する回路である出力算出器である。
【００５８】
続いて出力ビット列の算出について説明する。まずcodlLowの値を図７のように表現する。ＭＳＢからみて連続する1の個数をP0, t続いて連続する0の個数をQ0、続いて連続する1の個数をP1、さらに続いて連続する0の個数をQ1のように定義する。
【００５９】
例えばcodlLowの値が0b1110001001の場合には、P0=3, Q0=3, P1=1, Q1=2, P2=1, Q2=0で表される。また、codlLowの値が0b0000011010の場合にはP0=0, Q0=5, P1=2, Q1=1, P2=1, Q2=1で表される。
【００６０】
ここで、図５の状態遷移図より以下のことが分かる．遷移の数がシフト量Nを超えない範囲でPutBit(1)がP0回実行される。続いて、遷移の数がシフト量Nを超えない範囲でPutBit(0)がQ0-1回実行される。続いて、遷移の数がシフト量Nを超えない範囲でbitsOutStandingがP1回インクリメントされる。
【００６１】
以下、遷移の数がシフト量Nを超えない範囲で0が現われるたびにPutBit(0)が実行され、1が現われるたびにbitsOutStandingへのインクリメントが行われる。例えば、N=7、codlLow=0b1110001001の場合には、正規化中に実行される処理を並べると以下のようになる。
PutBit(1), PutBit(1), PutBit(1), PutBit(0), PutBit(0), bitsOutStanding++, PutBit(0)
【００６２】
この場合に出力のビット列は図３のフローチャートより以下のようになる。
入力firstbitFlagが0ならば、1ビット1が出力される。
0 が入力bitsOutStandingビット分だけ出力される。
1が2ビット出力される。
0 が2ビット出力される。
bitsOutStandingが1になる。
0が1ビット出力され、続いて1が1ビット出力される。
例えば、入力firstBitFlagが0、bitsOutStandingが3の場合には,出力ビット列は以下のようになる。
1,0,0,0,1,1,0,0,0,1
【００６３】
ここで、最初の4ビットについては入力のbitsOutStandingおよびfirstBitFlagに依存して出力が変化する。この部分をプレフィックスとよび、残りの部分をサフィックスと呼ぶ。
【００６４】
プレフィックスは以下のように算出する。firstbitFlagが1の時はcodlLow[9:9]の値を反転したものを入力bitsOutStandingビットつなげたものとする。firstBitFlagが0のときはcodlLow[9:9]の値1ビットと、 codlLow[9:9]の値を反転したものを入力bitsOutStandingビット分とをつなげたものとする。
【００６５】
プレフィックス生成手段１０４ではfirstBitFlag , codlLowを入力し、以下の値を出力する。
【００６６】
図８にプレフィックス算出手段１０４の構成を示す。８０１はcodlLowの最上位ビットとfirstBitFlagの排他的論理和をとるためのXOR回路である。８０２はcodlLowの最上位ビットの反転値を得るためのNOT回路である。
【００６７】
８０３はXOR回路８０１で出力されたビットとNOT回路８０２により出力されたビットを入力し、プレフィックスの最上位ビットをXOR回路８０１から出力されたビットとする結合回路である。結合回路８０３は、さらに、それ以外のビットをNOT回路８０２から出力されたビットにして出力する。
【００６８】
また８０４はfirstBitFlagおよびbitsOutStandingの値を加算し、プレフィックス長Lengthとして出力する回路（加算器）である。
【００６９】
サフィックスは、入力codlLowから最上位ビットを取り除いたものとする。本実施形態ではサフィックス生成手段１０５は１ビットの左シフタ回路で構成する。
【００７０】
続いてビット列結合手段１０６での動作を説明する。図９にビット列結合手段の構成を示す。９０１はプレフィックス生成手段１０４で算出されたプレフィックスおよびプレフィックス長Lengthおよびサフィックス生成手段１０５で算出されたサフィックスを入力して、プレフィックスの後にサフィックスを結合する結合回路（結合器）である。
【００７１】
９０２は結合回路９０１から出力されたビット列および、プレフィックス長Lengthおよびシフト量算出手段１０１で算出されたシフト量Nおよび未出力ビット算出手段１０３で算出された未出力ビット加算数Mを入力しビット列の一部のビットを切り出して出力する回路である。出力するビット数BitNumは以下の式により算出する。
if N=M+1 or N == 0 then 
BitNum = 0
else if N = M then
BitNum = Length + N-1
else
BitNum = Length + N-M-1
【００７２】
この式に基づいて出力ビット数を算出し、ビット列から上位BitNumビット分を出力する。上述したそれぞれの処理はいずれもデコーダ、シフタ、加減算回路、選択回路などの簡単な組み合わせ回路で1サイクルで実現することが可能である。
【００７３】
以上説明してきたように本発明は、codlRangeおよびcodlLow, bitsOutStandingおよびfirstBitFlagからシフト量N、未出力ビット加算数M、プレフィックス、サフィックスを算出する。これにより、繰り返し処理を行わずにcodlRangeおよびcodlLow, bitsOutStandingおよびfirstBitFlagおよび出力ビット列を算出することが出来る。即ち、算術符号化における正規化処理を一括して高速に行うことが可能になる。
【００７４】
なお、本実施形態ではfirstBitFlagを正規化装置に入力する例を示した。ここで、firstBitFlagが1となるのはスライスの先頭の場合のみであるのでfirstBitFlagを入力せずに0として扱って出力ビット列を算出し、スライスの先頭のビットを正規化装置外部の手段によって変更する構成にしても良い。
【００７５】
また、本実施形態では未出力ビット算出手段１０３で算出された未出力ビット加算数とシフト量算出手段１０１で算出されたシフト量から出力ビット数を算出する手段をビット列結合手段の内部に設ける例を示した。ここで、出力ビット数の算出は別の所で行ってもかまわない。例えば出力ビット数の算出を未出力ビット算出手段内部で行い、その値に基づいてビット列結合手段からビット列を出力する構成にしてもかまわない。
【００７６】
また、本実施形態ではプレフィックス生成手段１０４で算出されたプレフィックス長を用いてビット列結合手段１０６でプレフィックスとサフィックスを結合する例を示したが、プレフィックス長の算出は別の所で行ってもかまわない。例えば、プレフィックス長の算出はビット列結合手段内部で行う構成にしてもよい。
【００７７】
また、本実施形態ではサフィックス生成手段１０５は1ビットのシフタを用いて構成したが、ビット切り出し回路など、別の回路を用いて構成してもかまわない。
【００７８】
なお、本発明は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を用いても良い。この場合には記憶媒体をシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによって本発明の目的が達成される。
【００７９】
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８０】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００８１】
また、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（基本システム或いはオペレーティングシステム）等が実際の処理の一部又は全部を行う場合も含まれることは言うまでもない。
【００８２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。この場合には、書き込まれたプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行ってもよい。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施の形態に係る正規化処理装置の構成を示す図である。
【図２】CABAC方式における正規化処理を示すフローチャートである。
【図３】CABAC方式における正規化処理を示すフローチャートである。
【図４】本発明の実施の形態に係るシフト量算出手段の構成を示す図である。
【図５】本発明の実施の形態に係るcodlLowの変化の様子を示す状態遷移図である。
【図６】本発明の実施の形態に係るシフト手段の構成を示す図である。
【図７】本発明の実施の形態に係る未出力ビット算出手段の構成を示す図である。
【図８】本発明の実施の形態に係るプレフィックス算出手段の構成を示す図である。
【図９】本発明の実施の形態に係るビット列結合手段の構成を示す図である。
【図１０】従来の正規化処理装置の構成を示す図である。
【符号の説明】
【００８４】
１０１  シフト量算出手段
１０２  シフト手段
１０３  未出力ビット算出手段
１０４  プレフィックス生成手段
１０５  サフィックス生成手段
１０６  ビット列結合手段
１０７  正規化処理装置
４０１  ビット位置デコーダ
４０２  減算器
４０３  比較器
６０１  バレルシフタ
６０２  バレルシフタ
６０３  デコーダ
６０４  結合器
７０１  ビット数デコーダ
７０２  出力算出器
８０１  ＸＯＲ回路
８０２  ＮＯＴ回路
８０３  結合器
８０４  加算器
９０１  結合器
９０２  出力制御器
１００１  記憶手段
１００２  判定器
１００３  ビット列算出器
１００４  出力器
【図１】
2008113375.tif 000003
【図２】
2008113375.tif 000004
【図３】
2008113375.tif 000005
【図４】
2008113375.tif 000006
【図５】
2008113375.tif 000007
【図６】
2008113375.tif 000008
【図７】
2008113375.tif 000009
【図８】
2008113375.tif 000010
【図９】
2008113375.tif 000011
【図１０】
2008113375.tif 000012