(57)【要約】【課題】符号化処理において、高速化や演算量の削減を行うことができる符号化装置、プログラム、およびデータ処理方法を提供する。【解決手段】レンジが所定の値を超えるまでレンジおよび下限値を順に左シフト演算し当該左シフト演算を行う前の下限値の値に応じた符号化を行う符号化部２７４，２７５にレンジ内のＭＳＢの最も近い第１の論理値を示すビット位置を特定するビット位置特定部２７４２と、そのビット位置を基にレンジが左シフト演算により所定の値を超える直前のシフト量を特定するシフト量特定部２７４３と、下限値のＭＳＢ側に付加され左シフト演算により下限値からビットデータが桁上げされる所定ビット長の拡張領域データに、シフト量を超える空き領域があるか否かを判断する判別部２７４４と、空き領域がない場合に、拡張領域データ内に左シフトにより格納されたデータの符号化データを生成する拡張データ符号化部２７４５とを設ける。【選択図】図７
2005184232.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成する符号化装置であって、
前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定手段と、
前記ビット位置特定手段で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定するシフト量特定手段と、
前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記シフト量特定手段が特定したシフト量を超える空き領域があるか否かを判断する判別手段と、
前記判別手段が前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する符号化手段と
を有する符号化装置。
【請求項２】
符号化対象の連続したビットデータが、前記第１のデータを固定に符号化処理できる特性をもつ文脈非依存型であるか否かを検出する検出手段と、
前記検出手段が、前記連続したビットデータが文脈非依存型であると検出した場合には、前記連続したビットデータを２進数表記のデータとし、当該２進数表記のデータと予め設定された前記第１のデータの積と、前記連続したビットデータのビットデータ長分だけ前記第２のデータを左シフト演算した値とを加算した値を、新たな前記第２のデータとする変換手段と
を有する請求項１に記載の符号化装置。
【請求項３】
第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成する符号化装置であって、
前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定手段と、
前記ビット位置特定手段で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定するシフト量特定手段と、
前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる拡張データに、予め設定したビット長のデータがあるか否かを判断する判断手段と、
前記判断手段で前記予め設定したビット長のデータがあると判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する符号化手段と
を有する符号化装置。
【請求項４】
複数の異なるサイズの動き補償ブロックを単位として、動き補償の対象となる画像データと、前記動き補償で参照される参照画像データの間の差分に基づいて動きベクトルを生成する動きベクトル生成手段と、
前記動き補償の対象となる画像データと、予測画像データとの差分に直交変換処理および量子化処理を順に施す第１の処理手段と、
前記第１の処理手段で生成したデータに、逆量子化処理および逆直交変換処理を順に施して参照データを生成する第２の処理手段と、
前記動きベクトルおよび前記参照画像データを基に前記予測画像データを生成する第３の処理手段と、
前記第１の処理手段で生成したデータ、および前記動きベクトルを符号化する符号化手段と、
を有する符号化装置であって、
前記符号化手段は、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成し、
前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定手段と、
前記ビット位置特定手段で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定するシフト量特定手段と、
前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記シフト量特定手段が特定したシフト量を超える空き領域があるか否かを判断する判別手段と、
前記判別手段が前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する符号化データ生成手段と、を含む
符号化装置。
【請求項５】
第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成するコンピュータが実行するプログラムであって、
前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する第１の手順と、
前記第１の手順で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定する第２の手順と、
前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記第２の手順で特定したシフト量を超える空き領域があるか否かを判断する第３の手順と、
前記第３の手順で前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する第４の手順と
をコンピュータに実行させるプログラム。
【請求項６】
前記第１の手順の前に、
文脈非依存型で前記第１のデータが固定となる、符号化対象の連続したビットデータを２進数表記のデータとし、当該２進数表記のデータと予め設定された前記第１のデータの積と、前記連続したビットデータのビットデータ長分だけ前記第２のデータを左シフト演算した値とを加算した値を、新たな前記第２のデータとする第５の手順を有する
請求項５に記載のプログラム。
【請求項７】
前記拡張データは、前記左シフト演算により桁上げされた最初の１ビット目の出力を抑制する値が設定され、
前記第４の手順では、前記拡張データを基に前記左シフト演算により入力された最初の１ビット目の出力を抑制する
請求項５に記載のプログラム。
【請求項８】
第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成するコンピュータが実行するプログラムであって、
前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する第１の手順と、
前記第１の手順で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定する第２の手順と、
前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる拡張データに、予め設定したビット長のデータがあるか否かを判断する第３の手順と、
前記第３の手順で前記予め設定したビット長のデータがあると判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する第４の手順と
をコンピュータに実行させるプログラム。
【請求項９】
第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成するデータ処理装置のデータ処理方法であって、
前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する第１の手順と、
前記第１の手順で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定する第２の手順と、
前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記第２の手順で特定したシフト量を超える空き領域があるか否かを判断する第３の手順と、
前記第３の手順で前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する第４の手順と
を有するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、画像データや音声データ等のデータを算術符号化等の符号化処理を行う符号化装置、プログラム、およびデータ処理方法に関する。
【背景技術】
【０００２】
近年、画像データをデジタルとして取り扱い、その際、効率の高い情報の伝送、蓄積を目的とし、画像情報特有の冗長性を利用して、離散コサイン変換等の直交変換と動き補償により圧縮するＭＰＥＧ（Moving Picture Experts Group）などの方式に準拠した装置が、放送局などの情報配信、及び一般家庭における情報受信の双方において普及しつつある。
【０００３】
このＭＰＥＧ方式に続いて、さらなる高圧縮率を実現するＪＶＴ（Joint Video Team）と呼ばれる符号化方式が提案されている（例えば、非特許文献１参照）。
ＪＶＴ方式では、構文要素（ＳＥ：Syntax Element）の符号化処理として、ＣＡＶＬＣ（Context Based Adaptive Variable Length Coding ）と、ＣＡＢＡＣ（Context Adaptive Binary Arithmetic Coding ）の２種類の符号化処理を規定している。
【非特許文献１】トーマス・ウィーガント，ゲーリー・Ｊ・サリバン，ギスレ・ビョンテガード，アジャイ・ルスラ（Thomas Wiegand, Gary J.Sullivan, Gisle Bjontegaard, and Ajay Luthra），ビデオコーディングスタンダードの概要（Overview of the H.264/AVC Video Coding Standard），「IEEEのビデオ技術用の処理回路およびシステム」（IEEE TRANSACTIONS CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY），（米国），，２００３年７月，
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、上述のような符号化処理では大量のデータが入力されて膨大な演算処理を行う必要があり、符号化処理の高速化や演算量の削減等が望まれている。
【０００５】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、符号化処理において、高速化や演算量の削減を行うことができる符号化装置、プログラム、およびデータ処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
前記目的を達成するために、本発明の第１の観点の符号化装置は、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成する符号化装置であって、前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定手段と、前記ビット位置特定手段で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定するシフト量特定手段と、前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記シフト量特定手段が特定したシフト量を超える空き領域があるか否かを判断する判別手段と、前記判別手段が前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する符号化手段とを有する。
【０００７】
本発明の第１の観点の符号化装置の作用は、以下のようになる。
ビット位置特定手段は、第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する。
シフト量特定手段は、ビット位置特定手段で特定したビット位置を基に、第１のデータが左シフト演算により所定の値を超える直前のシフト量を特定する。
判別手段は、第２のデータのＭＳＢ側に付加され左シフト演算により第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、シフト量特定手段が特定したシフト量を超える空き領域があるか否かを判断する。
符号化手段は、判別手段が空き領域がないと判断した場合に、拡張データ内に左シフト演算により格納されたデータの符号化データを生成する。
【０００８】
さらに、前記目的を達成するために、本発明の第２の観点の符号化装置は、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成する符号化装置であって、前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定手段と、前記ビット位置特定手段で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定するシフト量特定手段と、前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる拡張データに、予め設定したビット長のデータがあるか否かを判断する判断手段と、前記判断手段で前記予め設定したビット長のデータがあると判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する符号化手段とを有する。
【０００９】
さらに、前記目的を達成するために、本発明の第３の観点の符号化装置は、複数の異なるサイズの動き補償ブロックを単位として、動き補償の対象となる画像データと、前記動き補償で参照される参照画像データの間の差分に基づいて動きベクトルを生成する動きベクトル生成手段と、前記動き補償の対象となる画像データと、予測画像データとの差分に直交変換処理および量子化処理を順に施す第１の処理手段と、前記第１の処理手段で生成したデータに、逆量子化処理および逆直交変換処理を順に施して参照データを生成する第２の処理手段と、前記動きベクトルおよび前記参照画像データを基に前記予測画像データを生成する第３の処理手段と、前記第１の処理手段で生成したデータ、および前記動きベクトルを符号化する符号化手段と、を有する符号化装置であって、前記符号化手段は、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成し、前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定手段と、前記ビット位置特定手段で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定するシフト量特定手段と、前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記シフト量特定手段が特定したシフト量を超える空き領域があるか否かを判断する判別手段と、前記判別手段が前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する符号化データ生成手段と、を含む。
【００１０】
さらに、前記目的を達成するために、本発明の第４の観点のプログラムは、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成するコンピュータが実行するプログラムであって、前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する第１の手順と、前記第１の手順で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定する第２の手順と、前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記第２の手順で特定したシフト量を超える空き領域があるか否かを判断する第３の手順と、前記第３の手順で前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する第４の手順とをコンピュータに実行させる。
【００１１】
さらに、前記目的を達成するために、本発明の第５の観点のプログラムは、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成するコンピュータが実行するプログラムであって、前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する第１の手順と、前記第１の手順で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定する第２の手順と、前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる拡張データに、予め設定したビット長のデータがあるか否かを判断する第３の手順と、前記第３の手順で前記予め設定したビット長のデータがあると判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する第４の手順とをコンピュータに実行させる。
【００１２】
さらに、前記目的を達成するために、本発明の第６の観点のデータ処理方法は、第１のデータが所定の値を超えるまで、第１のデータおよび第２のデータを順に左シフト演算し、当該左シフト演算を行う前の第２のデータの値に応じた符号化データを生成するデータ処理装置のデータ処理方法であって、前記第１のデータ内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する第１の手順と、前記第１の手順で特定した前記ビット位置を基に、前記第１のデータが前記左シフト演算により前記所定の値を超える直前のシフト量を特定する第２の手順と、前記第２のデータのＭＳＢ側に付加され前記左シフト演算により前記第２のデータからビットデータが桁上げされる予め決められたビット長の拡張データに、前記第２の手順で特定したシフト量を超える空き領域があるか否かを判断する第３の手順と、前記第３の手順で前記空き領域がないと判断した場合に、前記拡張データ内に前記左シフト演算により格納されたデータの前記符号化データを生成する第４の手順とを有する。
【発明の効果】
【００１３】
本発明によれば、符号化処理において、高速化や演算量の削減を行うことができる符号化装置、プログラム、およびデータ処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態に係る符号化処理を採用したＪＶＴ方式の符号化装置について説明する。
【００１５】
図１は、本実施形態の通信システム１の概念図である。
図１に示すように、通信システム１は、送信側に設けられた符号化装置２と、受信側に設けられた復号装置３とを有する。
通信システム１では、送信側の符号化装置２において、離散コサイン変換やカルーネン・レーベ変換などの直交変換と動き補償によって圧縮したフレーム画像データ（ビットストリーム）を生成し、当該フレーム画像データを変調した後に、衛星放送波、ケーブルＴＶ網、電話回線網、携帯電話回線網などの伝送媒体を介して送信する。
受信側では、受信した画像信号を復調した後に、上記変調時の直交変換の逆変換と動き補償によって伸張したフレーム画像データを生成して利用する。
なお、上記伝送媒体は、光ディスク、磁気ディスクおよび半導体メモリなどの記録媒体であってもよい。
図１に示す復号装置３は符号化装置２の符号化に対応した復号を行い、従来と同じ構成を有している
【００１６】
以下、図１に示す符号化装置２について説明する。
図２は、図１に示す符号化装置２の全体構成図である。
図２に示すように、符号化装置（データ処理装置：コンピュータ）２は、例えば、Ａ／Ｄ変換回路２２、画面並べ替え回路２３、演算回路２４、直交変換回路２５、量子化回路２６、符号化回路（符号化装置とも言う）２７、バッファ２８、逆量子化回路２９、逆直交変換回路３０、レート制御回路３２、フレームメモリ３４、デブロックフィルタ３８、および動き予測・補償回路３９を主構成要素として有する。
【００１７】
以下、符号化装置２の構成要素について説明する。
Ａ／Ｄ変換回路２２は、入力されたアナログの輝度信号Ｙ、色差信号Ｃｂ，Ｃｒから構成される原画像信号Ｓ１０をデジタルのフレームデータＳ２２に変換し、これを画面並べ替え回路２３に出力する。
画面並べ替え回路２３は、Ａ／Ｄ変換回路２２から入力したフレームデータＳ２２を、そのピクチャタイプＩ，Ｐ，ＢからなるＧＯＰ（Group Of Pictures ）構造に応じて、符号化する順番に並べ替えたフレームデータＳ２３を演算回路２４、演算回路２４、レート制御回路３２および動き予測・補償回路３９に出力する。
【００１８】
演算回路２４は、フレームデータＳ２３内の処理対象の動き補償ブロックＭＣＢ（マクロブロックともいう）と、それに対応して動き予測・補償回路３９から入力した予測画像データＰＩの動き補償ブロックＭＣＢとの差分を示す画像データＳ２４を生成し、これを直交変換回路２５に出力する。
直交変換回路２５は、画像データＳ２４に離散コサイン変換やカルーネン・レーベ変換などの直交変換を施して画像データ（例えばＤＣＴ係数）Ｓ２５を生成し、これを量子化回路２６に出力する。
量子化回路２６は、レート制御回路３２から入力した量子化スケールで、画像データＳ２５を量子化して画像データＳ２６を生成し、これを符号化回路２７および逆量子化回路２９に出力する。
【００１９】
符号化回路２７は、画像データＳ２６、動きベクトル等を示す文脈エレメント（ＳＥ：Syntax Elemet ）に基づいて、可変長符号化処理あるいは算術符号化処理を行い、処理結果の画像データをバッファ２８に格納する。
このとき、符号化回路２７は、例えばインター予測符号化が行われた場合には、動き予測・補償回路３９から入力した動きベクトルＭＶを符号化してヘッダデータに格納する。
【００２０】
バッファ２８に格納された画像データは、変調等された後に送信される。
逆量子化回路２９は、他の動き補償ブロックＭＣＢから参照される参照画像データの動き補償ブロックＭＣＢの画像データＳ２６を逆量子化した信号を生成し、これを逆直交変換回路３０に出力する。
逆直交変換回路３０は、逆量子化回路２９から入力したデータに、直交変換回路２５における直交変換の逆変換を施して生成した画像データＳ３０をデブロックフィルタ３８を介してフレームメモリ３４に書き込む。
デブロックフィルタ３８は、画像データＳ３０のブロック歪みを除去した画像データを、フレームメモリ３４に出力する。
【００２１】
レート制御回路３２は、例えば、画面並べ替え回路２３から入力したフレームデータＳ２３を基に、画像中の複雑度が高い部分は細かく量子化し、画像中の複雑度が低い部分は粗く量子化するように量子化パラメータＱｐを生成する。
そして、レート制御回路３２は、上記生成した量子化パラメータＱｐ、並びにバッファ２８から読み出した画像データを基に量子化スケールを生成し、これを量子化回路２６に出力する。
また、レート制御回路３２は、上記生成した量子化パラメータＱｐを、動き予測・補償回路３９に出力する。
【００２２】
動き予測・補償回路３９は、符号化対象のフレームデータＳ２３およびフレームメモリ３４からの参照画像データＲＥＦを基に、参照画像データ内の探索範囲ＳＲを探索して、動き予測・補償処理を行って動き補償ブロックＭＣＢを単位として、動きベクトルＭＶを算出する。
【００２３】
この際、動き予測・補償回路３９は、Ｉピクチャ、Ｐピクチャ、Ｂピクチャを符号化する。ここでＩピクチャは、当該Ｉピクチャの情報だけから符号化し、フレーム間予測（インター予測符号化）を行わない画像データを示す。
Ｐピクチャは、表示順が前（過去）のＩピクチャまたはＰピクチャを基に予測を行って符号化される画像データを示す。
Ｂピクチャは、表示順が前（過去）および後（未来）のＩピクチャおよびＰピクチャを基に双方向予測によって符号化される画像データを示す。
【００２４】
動き予測ブロック（マクロブロックＭＢ）のブロックサイズには、１６×１６，８×１６，１６×８，８×８画素のサイズが規定され、また、８×８，４×８，８×４，および４×４画素のサイズが規定される。
動き予測・補償回路３９は、フレームデータＳ２３内の処理対象の動き補償ブロックＭＣＢとの差異が最も小さい動き補償ブロックＭＣＢの位置を参照画像データＲＥＦの探索範囲ＳＲ内で特定し、これらの位置関係に対応した動きベクトルＭＶを算出する。
また、動き予測・補償回路３９は、上記選択した動きベクトルＭＶを基に、動き補償ブロックＭＣＢについての予測画像データＰＩを生成する。
動き予測・補償回路３９は、上記選択した動きベクトルＭＶを符号化回路２７に出力し、上記生成した予測画像データＰＩを演算回路２４に出力する。
【００２５】
以下、符号化回路２７の符号化処理について詳細に説明する。
ＪＶＴ方式の符号化処理では、文脈エレメント（ＳＥ：Syntax Element ）の符号化方法として、ＣＡＶＬＣとＣＡＢＡＣの２種類が規定されている。ＣＡＢＡＣは、一般的にＣＡＶＬＣと比べてＳＥを高効率に圧縮する。
【００２６】
ＪＶＴで規定するＣＡＢＡＣでは、ＳＥをＶＬＣや固定長符号によりシンボル列に変換する。ここで変換されたシンボル列の各シンボルをbin （binary symbol ）という。
符号化処理では、bin を入力として、算術符号化処理（ＡＣ：Arithmetic Coding ）を行い、処理結果を基に出力ビットが決定しビットストリームに出力される。
【００２７】
図３は、算術符号化処理を説明するための図である。
算術符号化処理は、例えば符号化対象のデータ列、例えばシンボルや２値（０および１）の系列を出現確率に応じて、区間[０，１]に射影し、数直線上の確率空間を区間内の数でバイナリ表現して符号化する。
例えば算術符号化処理は、図３に示すように、０．００…以上、１．００…未満の区間を、符号化対象のデータ内の個々のデータの出現確率を基に区間を分割し、個々のデータを基に分割した区間を選択する再帰的処理を行い、符号化対象のデータに対応する区間を示すデータを符号とする。
【００２８】
以下、簡単な説明のため符号化対象のデータを２値とする。
算術符号化処理は、具体的には図３（ａ）に示すように、符号化対象のデータの内、出現確率が大きいデータをＭＰＳ（Most Probable Symbol）、出現確率が小さいデータをＬＰＳ（Least Probable Symbol ）とし、それぞれの出現確率ｐＭＰＳ、ｐＬＰＳに応じて所定の区間Ａを分割する。この際、現区間のサイズをレンジRange 、現区間の境界値、例えば下限値をLow とする。また、出現確率ｐＭＰＳは、１−ｐＬＰＳである。
【００２９】
初期状態では、図３（Ａ）に示すように、レンジRange ，ロウLow の値は、Ａ，０．００…である。
符号化対象のデータ列の最初のデータがＭＰＳの場合には、図３（Ａ）に示すように、区間Ａを出現確率ｐＭＰＳ，ｐＬＰＳに応じて分割し、分割された区間の内、図３（Ｂ）に示すようにＭＰＳに対応する区間を選択する。このときのレンジRange ，ロウlow の値は、ｐ０（＝ｐＭＰＳ），０．００…である。
【００３０】
次に、符号化対象のデータ列の内の２番目のデータがＭＰＳの場合には、図３（Ｂ）に示すように、区間を出現確率ｐＭＰＳ，ｐＬＰＳに応じて分割し、分割された区間の内、図３（Ｃ）に示すようにＭＰＳに対応する区間を選択する。このときのレンジRange ，ロウlow の値は、ｐ００（＝ｐ０×ｐＭＰＳ），０．００…である。
【００３１】
次に、符号化対象のデータ列の内の３番目のデータがＬＰＳの場合には、図３（Ｃ）に示すように、区間を出現確率ｐＭＰＳ，ｐＬＰＳに応じて分割し、分割された区間の内、図３（Ｄ）に示すようにＬＰＳに対応する区間を選択する。このときのレンジRange ，ロウlow の値は、ｐ００１（＝ｐ００×ｐＬＰＳ），ｐ００１（Low ＋ｐＭＰＳ）である。
つまり、上述した符号化処理においてＬＰＳの場合には、下限値Low の値にｐＭＰＳが加算されて、下限値Low が更新される。
【００３２】
また、符号化対象のデータ列のビット長が大きくなるに従いレンジRange が小さくなり、レンジRange を示すデータのビット数も多くなる。このため符号化処理の結果、確定したビットを出力することで、メモリの容量を削減する。
【００３３】
また、計算精度を保つために、図３（Ｅ）に示すように、レンジRange が所定値よりも大きくなるように拡大する正規化処理（リノーマライズ）を行う。例えば正規化処理は、レンジRange の値を２倍して、所定値よりも大きくなるように拡大する。
【００３４】
図４は、一般的な符号化処理における正規化処理を説明するための図である。
例えば、上述したように、符号化対象のデータ列を１ビット単位で符号化処理を行う毎に、図４に示すような正規化処理を行う。
具体的には、まず、レンジRange が予め設定された所定値よりも小さいか否が判別され（ＳＴ１）、所定値よりも小さい場合には、下限値Low の値の上位１ビットに応じた符号を出力した後（ＳＴ２）、レンジRange と下限値Low の値を左シフト演算することで２倍に拡大し（ＳＴ３，ＳＴ４）し、ステップＳＴ１の処理に戻る。
そして、ステップＳＴ１からＳＴ４の動作をレンジRange の値が所定値以上になるまで繰り返す。
一方、ステップＳＴ１において、レンジRange の値が所定値以上の場合には、正規化処理を終了する。
【００３５】
上述したように、符号化処理の正規化処理では、ビット毎にレンジRange が所定値であるか否を判別する必要があり、計算負荷が非常に高い。本発明に係る符号化回路２７では、上述したように下限値Low の上位１ビット毎に処理を行うのではなく、下限値Low の値をまとめて処理することで判別処理を削減し、演算速度を高速化する。以下、詳細に説明する。
【００３６】
図５は、図１に示した本発明の第１実施形態に係る符号化回路の機能ブロック図である。
本実施形態に係る符号化回路２７は、例えば図５に示すように、シンボル変換部（ＶＬＣ）２７１、切替部（検出部）２７２、コンテクスト（ＣＴＸ）２７３、文脈依存型符号化部２７４、文脈非依存型符号化部（Bypass）２７５、および終端処理部２７６を有する。
【００３７】
シンボル変換部（ＶＬＣ）２７１は、例えば、量子化回路２６や動き予測・補償回路３９から入力されたＳＥを、ＶＬＣや固定長符号によりシンボルbin （binary symbol ）の列（ビットデータ）に変換し、信号Ｓ２７１として出力する。
【００３８】
切替部２７２は、入力された信号Ｓ２７１であるシンボルbin を、文脈依存型符号化処理または文脈非依存型符号化処理のいずれかで処理するかを決定し、決定結果に応じて信号Ｓ２７１を文脈依存型符号化部２７４および文脈非依存型符号化部２７５のいずれかに出力する。
詳細には切替部２７２は、シンボルbin を文脈依存型符号化処理を行わせる場合には、信号Ｓ２７１をコンテクスト（ＣＴＸ）２７３および文脈依存型符号化部２７４に出力し、文脈非依存型符号化処理を行う場合には、信号Ｓ２７１を文脈非依存型符号化部２７５に出力する。
【００３９】
切替部２７２は、具体的には、生成確率分布が均等分布に近いシンボルbin の場合には、信号Ｓ２７１を文脈非依存型符号化部（Bypass）２７５に出力し、それ以外の確率分布が変化するシンボルbin の場合には文脈依存型符号化部２７４に信号Ｓ２７１を出力する。
【００４０】
文脈非依存型符号化処理（バイパス処理）が行われるシンボルbin は、例えば、動きベクトル成分の正負符号、ＤＣＴ（Discrete Cosine Transform ）係数の正負符号、動きベクトル成分やＤＣＴ係数の大きさを表現するシンボル列の一部等である。
具体的には、ＶＬＣ２７１は、動きベクトル成分やＤＣＴ係数が負符号の場合には１を、正符号の場合には０をシンボルbin として出力する。
【００４１】
また、ＶＬＣ２７１は、動きベクトル成分やＤＣＴ係数の大きさが規定の大きさを超える場合、具体的には、動きの激しい、つまり動きベクトルが大きく変動するコンテンツや、ビットレートが高い場合つまり大きなＤＣＴ係数が発生する場合等には、規定値を境界として接頭語Prefixと接尾語Suffixに分解する。
詳細には、ＶＬＣ２７１は、接頭語Prefixを、その大きさを基にUnary符号化処理し、切替部２７２は、その処理結果の各シンボルbin を文脈依存型符号化部２７４に出力する。
また、ＶＬＣ２７１は、接尾語Suffixは、その大きさを基にExponential Golomb符号化処理し、切替部２７２は、その処理結果の各シンボルbin を文脈非依存型符号化部２７５に出力する。
【００４２】
コンテクスト（ＣＴＸ）２７３は、例えば遷移状態を示すインデックスと、ＭＰＳの出現確率ｐＭＰＳとが関連付けられて記憶されている。
コンテクスト（ＣＴＸ）２７３のインデックスは、文脈依存型符号化部２７４の処理結果を示す信号Ｓ２７４１に基づいて更新される。具体的には、コンテクスト（ＣＴＸ）２７３は、例えば信号Ｓ２７４１を基に符号化した値が１の場合には、１の出現確率が増えるようにインデックスが更新され、例えば符号した値が０の場合には、０の出現確率が増えるようにインデックスを更新する。
こうすることにより、ＣＴＸ２７３には、入力されるＳＥに依存した出現確率に近づいていく。
【００４３】
文脈依存型符号化部２７４は、コンテクストＣＴＸ２７３によるインデックスと、符号化対象のシンボルbin を基に文脈依存型符号化処理を行い、出力結果を示す信号Ｓ２７４１をコンテクストＣＴＸ２７３に出力する。
また、文脈依存型符号化部２７４は、処理結果を示す信号Ｓ２７４を終端処理部２７６に出力する。
【００４４】
文脈非依存型符号化部（Bypass）２７５は、切替部２７２から出力された信号を基に、文脈非依存型の符号化処理を行い、処理結果を示す信号Ｓ２７５を終端処理部２７６に出力する。
終端処理部２７６は、信号Ｓ２７４または信号Ｓ２７５に応じた符号をビットストリームに出力する。
【００４５】
図６は、図２に示した符号化回路の符号化処理の全体の動作を示すフローチャートである。
ステップＳＴ１１において、ＶＬＣ２７１は、例えば量子化回路２６や動き予測・補償回路３９から入力されたＳＥを、ＶＬＣや固定長符号によりシンボルbin の列（ビットデータ）に変換し、信号Ｓ２７１として出力する（ＳＴ１２）。
【００４６】
ステップＳＴ１３において、切替部２７２は、信号Ｓ２７１であるシンボルbin を、文脈依存型符号化処理または文脈非依存型符号化処理のいずれかで処理するかを決定し、決定結果に応じて信号Ｓ２７１を文脈依存型符号化部２７４および文脈非依存型符号化部２７５のいずれかに出力する。
【００４７】
ステップＳＴ１３において、切替部２７２がシンボルbin が文脈依存型であると決定した場合には、文脈依存型符号化処理を行わせる（ＳＴ１４）。
具体的には、コンテクスト（ＣＴＸ）２７３は、文脈依存型符号化部２７４の処理結果を示す信号Ｓ２７４１に基づいてインデックスを更新し、各シンボルbin について出現確率を割り当てる。
文脈依存型符号化部２７４は、コンテクストＣＴＸ２７３によるインデックスと、符号化対象のシンボルbin を基に文脈依存型符号化処理を行い、出力結果を示す信号Ｓ２７４１をコンテクストＣＴＸ２７３に出力する。
【００４８】
一方、ステップＳＴ１３において、切替部２７２がシンボルbin が文脈非依存型であると決定した場合には、文脈非依存型符号処理を行わせる（ＳＴ１５）。
具体的には、文脈非依存型符号化部（Bypass）２７５は、切替部２７２から出力された信号を基に、文脈非依存型の符号化処理を行い、処理結果を示す信号Ｓ２７５を終端処理部２７６に出力する。
【００４９】
ステップＳＴ１６において、終端処理部２７６は、信号Ｓ２７４または信号Ｓ２７５に応じた符号を生成し、ビットストリームに出力する。
【００５０】
図７は、図５に示した符号化回路の機能ブロック図である。
文脈依存型符号化部２７４は、レンジRange が所定の値を超えるまで、レンジRange および下限値Low を順に左シフト演算し、当該左シフト演算を行う前のレンジRange の値に応じた符号化データを生成する。
【００５１】
文脈依存型符号化部２７４は、例えば図７に示すように、メモリＭＥＭ、分割部２７４０、および正規化部２７４１を有する。正規化部２７４１は、ビット位置特定部２７４２、シフト量特定部２７４３、判別部２７４４、および拡張データ符号化部２７４５を有する。
ビット位置特定部２７４２は本発明に係るビット位置特定手段に相当し、シフト量特定部２７４３は本発明に係るシフト量特定手段に相当し、判別部２７４４は本発明に係る判別手段に相当し、拡張データ符号化部２７４５は本発明に係る符号化手段に相当する。
【００５２】
分割部２７４０は、入力されたシンボルbin に基づいて、例えば図３に示すような算術符号化処理を行うために、区間をシンボルbin の生成確率に応じた割合で分割し、シンボルbin を基にその分割した区間を選択し、後述する区間のサイズを示すレンジRange および区間の下限値Low を更新する。
【００５３】
図８は、図７に示す符号化回路のレンジRange データを説明するための図である。図９は、図７に示す符号化回路の下限値Low データを説明するための図である。
本実施形態では、メモリＭＥＭは、レンジRange および下限値Low のデータを有する。
レンジRange は、上述した算術符号化処理における区間のサイズを示し、予め設定されたビット長のデータ領域、例えば図８に示すように１０ビット長のデータ領域を有する。
【００５４】
下限値Low は、上述した算術符号化処理における区間を示すデータであり、具体的には区間の下限値Low を示す。
本実施形態に係る下限値Low は、例えば図９に示すように、基本領域データLowB、および拡張領域データ（拡張データとも言う）LowEを有する。
基本領域データLowBは、一般的な下限値Low を示すデータであり、例えば図９に示すように１０ビット長のデータ領域を有する。
拡張領域データLowEは、下限値Low の基本領域データLowBの最上位ビット（ＭＳＢ：Most Significant bit）側に付加され、左シフト演算により下限値Low からビットデータが桁上げされるデータであり、決められたビット長、例えば図９に示すようにＮビット長のデータ領域を有する。
レンジRange は、本発明に係る第１のデータに相当し、下限値Low は、本発明に係る第２のデータに相当し、拡張領域データLowEは本発明に係る拡張データに相当する。
【００５５】
正規化部２７４１は、算術符号化処理における計算精度を保つために、少なくともレンジRange を所定値よりも大きくなるように拡大する正規化処理を行う。以下、正規化部２７４１内の各構成要素について説明する。
【００５６】
ビット位置特定部２７４２は、分割部２７４０による分割結果、メモリＭＥＭ内のレンジRange を基に、レンジRange のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する。
具体的には、ビット位置特定部２７４２は、例えば図８に示すようにレンジRange の値が”００００１＊＊＊＊＊”の場合には、ＭＳＢの最も近い第１の論理値、本実施形態では”１”を示すビット位置を特定する。
【００５７】
シフト量特定部２７４３は、ビット位置特定部２７４２で特定したビット位置を基に、レンジRange が左シフト演算により所定の値を超える直前のシフト量NumShiftを特定する。
具体的には、シフト量特定部２７４３は、図８に示すように、ビット位置特定部２７４２で特定したビット位置を基に、レンジRange が左シフト演算により所定の値、例えば０ｘ１００を超える直前のシフト量NumShiftを３と特定する。
【００５８】
シフト量NumShiftの特定の方法は、上述した形態に限られるものではない。
例えば、ビット位置特定部２７４２およびシフト量特定部２７４３は、数式（１）に示す演算を行い、演算結果によりシフト量NumShiftを特定してもよい。ここで、Range<<=1は、１ビット分左シフト演算を行うことを意味し、NumShift++は、１インクリメントすることを意味する。
【００５９】
（数１）
Int NumShift=0;
While(Range < 0x100){
Range<<=1;
NumShift++;
}
【００６０】
また、例えばビット位置特定部２７４２およびはシフト量特定部２７４３は、レンジRange のビット列の中で、一番左（ＭＳＢ）側に存在する”１”を最下位ビット（ＬＳＢ：Least Significant bit）から数えたビット位置Ｐ（＞＝１）に対して、NumShift＝９−Ｐを演算することで、シフト量NumShiftを特定してもよい。本発明に係る機能を、Ｐを求める命令を有するプロセッサで行う場合には、この方法を用いることで簡単にシフト量NumShiftを特定することができる。
【００６１】
判別部２７４４は、下限値Low のＭＳＢ側に付加され左シフト演算により下限値Low からビットデータが桁上げされる予め決められたビット長の拡張領域データLowEに、シフト量特定部２７４３が特定したシフト量を超える空き領域があるか否かを判断する。
判別部２７４４は、拡張領域データLowEに、シフト量特定部２７４３が特定したシフト量を超える空き領域があると判別した場合には、下限値Low およびレンジRange を左シフト演算する。具体的には、基本領域データLowB内のビットを、シフト量NumShiftだけ拡張領域LowE内に左シフト演算する。
【００６２】
拡張データ符号化部２７４５は、判別部２７４４が空き領域がないと判断した場合に、拡張領域データLowE内に左シフト演算により格納されたデータの符号化データを生成する。つまり、拡張データ符号化部２７４５は、拡張領域データLowE内にビットを蓄える余裕がなくなった場合に、符号化データを生成する。
【００６３】
以上、文脈依存型符号化部２７４の構成を説明したが、文脈非依存型符号化部（bypass）２７５も略同様な構成であり、上述したように下限値Low に拡張領域データLowEを設け、拡張領域データLowE内のデータをまとめて符号化処理を行う。
Bypass２７５と、文脈依存型符号化部２７４との相違点は、コンテクストＣＴＸを用いない点である。つまり、文脈依存型符号化処理の際には、出現確率が予め設定された固定値であり、レンジRange の値も固定である。
【００６４】
図１０は、図７に示した符号化回路の符号化処理の動作を説明するためのフローチャートである。
図１０を参照しながら、文脈依存型符号化部２７４および文脈非依存型符号化部２７５の動作を、正規化処理を中心に説明する。
まず、分割部２７４０により、例えば、図３に示すような算術符号化処理を行うために、入力されたシンボルbin に基づいて、区間をシンボルbin の生成確率に応じた割合で分割し、シンボルbin を基にその分割した区間を選択し、後述する区間のサイズを示すレンジRange および区間の下限値Low を更新する。
【００６５】
正規化部２７４１は、算術符号化処理における計算精度を保つために、少なくともレンジRange を所定値よりも大きくなるように拡大する正規化処理を行う。
具体的には、ステップＳＴ２１において、ビット位置特定部２７４２は、分割部２７４０による分割結果、メモリＭＥＭ内のレンジRange を基に、レンジRange のＭＳＢの最も近い、第１の論理値を示すビット位置を特定する。
【００６６】
ステップＳＴ２２において、シフト量特定部２７４３は、ビット位置特定部２７４２で特定したビット位置を基に、レンジRange が左シフト演算により所定の値を超える直前のシフト量NumShiftを特定する。
【００６７】
ステップＳＴ２３において、判別部２７４４は、下限値Low のＭＳＢ側に付加され左シフト演算により下限値Low からビットデータが桁上げされる予め決められたビット長の拡張領域データLowEに、シフト量特定部２７４３が特定したシフト量NumShiftを超える空き領域があるか否かを判断する。判別部２７４４は、拡張領域データLowEに、シフト量NumShiftを超える空き領域があると判別した場合には、下限値Low およびレンジRange を左シフト演算する。具体的には、基本領域データLowB内のビットを、シフト量NumShiftだけ拡張領域LowE内に左シフト演算する。
【００６８】
ステップＳＴ２４において、拡張データ符号化部２７４５は、判別部２７４４が空き領域がないと判断した場合に、拡張領域データLowE内に左シフト演算により格納されたデータの符号化データを生成する。
【００６９】
以上説明したように、本実施形態では、レンジRange が所定の値を超えるまで、レンジRange および下限値Low を順に左シフト演算し、当該左シフト演算を行う前の下限値Low の値に応じた符号化データを生成する符号化部２７４，２７５に，レンジRange 内のＭＳＢの最も近い、第１の論理値を示すビット位置を特定するビット位置特定部２７４２と、ビット位置特定部２７４２で特定したビット位置を基に、レンジRange が左シフト演算により所定の値を超える直前のシフト量NumShiftを特定するシフト量特定部２７４３と、下限値Low のＭＳＢ側に付加され左シフト演算により下限値Low からビットデータが桁上げされる予め決められたビット長の拡張領域データLowEに、シフト量特定部２７４３が特定したシフト量NumShiftを超える空き領域があるか否かを判断する判別部２７４４と、判別部２７４４が空き領域がないと判断した場合に、拡張領域データLowE内に左シフト演算により格納されたデータの符号化データを生成する拡張データ符号化部２７４５とを設けたので、符号化処理において、高速化や演算量の削減を行うことができる。
具体的には、一般的な符号化装置では１ビット単位で符号化処理を行うのに対し、本実施形態では、基本領域データLowBから左シフト演算により入力され、所定のビット長の拡張領域データLowEを設け、拡張領域データLowE内のデータをまとめて符号化するので、分岐処理や演算量を削減することができ、高速に符号化処理を行うことができる。
【００７０】
図１１は、図７に示した符号化回路の符号化処理の動作の一具体例を説明するためのフローチャートである。図１２は、図１１に示した符号化回路の正規化処理の具体例を説明するためのフローチャートである。図１１，１２を参照しながら、符号化回路の符号化処理の一具体例を文脈依存型符号化部２７４の処理を中心に簡単に説明する。
【００７１】
文脈依存型符号化部２７４は、指定されたコンテクストのインデックスctxIdxと、エンコードするシンボルbinValを入力として、符号化処理を行う。
codIRange ，codILow は、確率幅（レンジRange ），下限値Low を表す。これらの値は、いずれのコンテクスト/文脈非依存型ACについても共通で使われる。コンテクストCTX は、インデックスctxIdxによって管理され、各コンテクストにはMPS値と遷移状態番号を示すvalMPS，pStateIdx が割り当てられる。
【００７２】
ステップＳＴ１０１において、分割部２７４０は、codIRange の値をqCodIRangeIdx という値に量子化し、規定されたテーブル値rangeTabLPS を使って、LPS の確率幅 codIRangeLPS を求める。また、codIRange をMPS の確率幅に変更する。
【００７３】
ステップＳＴ１０２において、分割部２７４０は、入力シンボルbin がMPS か否かで処理を分岐する。シンボルがMPS の時は、規格で規定しているテーブル値transIdxMPS によって状態を遷移させ、pStateIdxを更新する（ＳＴ１０３）。
【００７４】
一方，ステップＳＴ１０において、入力シンボルbin がLPS のときは、codILow値、codIRange 値を更新する。
具体的には、codILowとcodIRangeを加算した値をcodILowに代入し、codIRangeにcodIrangeLSPを代入する（ＳＴ１０４）。
ステップＳＴ１０５において、pStateIdx が０でないか否が判別され、pStateIdx が０の場合にはvalMPSに１−valMPSを代入し（ＳＴ１０６）、ステップＳＴ１０７の処理に進む。ステップＳＴ１０５においてpStateIdx が０でない場合にもステップＳＴ１０７の処理に進む。
ステップＳＴ１０７において、pStateIdx を更新する。
ステップＳＴ１０８において、正規化部２７４１は、codIRangeの値が所定の値以上になるまで左シフト演算を行う正規化処理（Renormalize）を行う。codILowの値に応じて出力ビット(列)が決定される。
【００７５】
正規化処理は、図１２に示すように、ステップＳＴ１１１において、ビット位置特定部２７４２、およびシフト量特定部２７４３が、図９に示すようにcodIRange（レンジRange ）を基に左シフト量NumShiftを計算する。
ステップＳＴ１１２において、判別部２７４４は、拡張領域に余裕がある場合は、下限値Low を左シフト演算して、基本領域データLowBのビットを拡張領域データLowE内に移動する（ＳＴ１１３）。具体的には、下限値Low をシフト量NumShiftだけ左シフト演算し、レンジRange をシフト量NumShiftだけ左シフト演算し、拡張領域データLowE内に格納されたビット数NumExtBit にシフト量NumShiftを加算して更新する。
一方、ステップＳＴ１１２において、拡張領域データLowE内に空き領域がないと判断した場合には、拡張データ符号化部２７４５が、拡張領域データLowEを基に符号化データを生成し、ステップＳＴ１１２の処理に戻る。
【００７６】
以上説明したように、本実施形態に係る符号化回路は、１ビット単位ではなく、拡張領域データLowE内のデータを符号化するので高速に演算処理し、一般的な符号化装置が出力する符号データと同じ符号データを出力することができる。
【００７７】
本発明の第２実施形態に係る符号化回路は、図７に示す符号化回路と略同様な構成であり、メモリＭＥＭ、分割部２７４０、および正規化部２７４１を有し、正規化部２７４１は、ビット位置特定部２７４２、シフト量特定部２７４３、判別部２７４４、および拡張データ符号化部２７４５を有する。
相違点は、判別部２７４４と拡張データ符号化部２７４５の機能である。相違点のみ説明する。
【００７８】
判別部２７４４は、下限値Low のＭＳＢ側に付加され左シフト演算により下限値Low からビットデータが桁上げされる拡張領域データLowEに、予め設定したビット長のデータがあるか否かを判断する。
例えば、判別部２７４４は、拡張領域データLowEに、バイトの整数倍単位のビットデータが格納されているか否かを判断する。
【００７９】
拡張データ符号化部２７４５は、拡張領域データLowEに、予め設定したビット長のデータがあると判断した場合に、拡張領域データLowE内に左シフト演算により格納されたデータの符号化データを生成する。
【００８０】
以上の構成の動作を相違点のみ簡単に説明する。
判別部２７４４は、拡張領域データLowEに、バイトの整数倍単位のビットデータが格納されているか否かを判断し、拡張データ符号化部２７４５は、拡張領域データLowEに、予め設定したビット長のデータがあると判断した場合に、拡張領域データLowE内に左シフト演算により格納されたデータの符号化データを生成する。上記以外の場合には、基本領域データLowE内のビットを、シフト量NumShiftだけ拡張領域LowE内に左シフト演算する。
【００８１】
以上説明したように、本実施形態では、下限値Low のＭＳＢ側に付加され左シフト演算により下限値Low からビットデータが桁上げされる拡張領域データLowEに、予め設定したビット長のデータがあるか否かを判断する判別部２７４４と、拡張領域データLowEに、予め設定したビット長のデータがあると判断した場合に、拡張領域データLowE内に左シフト演算により格納されたデータの符号化データを生成する拡張データ符号化部２７４５とを設けたので、処理に最適なバイト単位で符号化することができ、より高速な演算処理を行うことができる。
また、出力ビット決定する場合には、符号化回路のキャリーオーバーを考慮して行う。
【００８２】
図１３は、図５に示した文脈非依存型符号化部の動作の一具体例を説明するための図である。
ステップＳＴ２０１において、文脈非依存型符号化部（バイパス：Bypass）２７５は、codILow（下限値Low ）を１ビット分、左シフト演算する。
ステップＳＴ２０２において、バイパス２７５は、シンボルbin （bin Val ）が０でない場合には、codILowにCodIRangeを加算してcodILowに代入し（ＳＴ２０３）、ステップＳＴ２０４に進む。一方、シンボルbin （bin Val ）が０の場合にもステップＳＴ２０４に進む。
【００８３】
ステップＳＴ２０４において、codILowが所定値、例えば0x400以上か否かが判別され、codILowが0x400以上の場合には、後述するPutBit(1)の処理を行い（ＳＴ２０５）、codILowから0x400を減算した値をcodILowに代入する。
【００８４】
一方、ステップＳＴ２０４において、codILowが0x400より小さい場合には、codILowが0x200より小さいか否かが判別され（ＳＴ２０７）、codILowが0x200より小さい場合には、後述するPutBit(0)の処理を行う（ＳＴ２０８）。一方、codILowが0x200以上の場合には、codILowから0x200を減算した値をcodILowに代入し、キャリーオーバー対策の変数であるbitOutstandingの値を１インクリメントする（ＳＴ２０９）。
【００８５】
図１４は、図１３に示した符号化処理のPutBit(Ｂ)の処理を説明するためのフローチャートである。図１４を参照しながら、バイパス２７５のステップＳＴ２０５、ＳＴ２０８におけるPutBit(Ｂ)の動作を説明する。
バイパス２７５は、ステップＳＴ２１０において、符号化ビットを出力する際に、最初のビットであるか否かが判別される。この判断には最初のビットを示すfirstbitFlagが用いられる。firstbitFlagが０以外の場合には、最初のビットであることを示し、firstbitFlagが０の場合には、最初のビット以外であることを示す。
詳細には、バイパス２７５は、ステップＳＴ２１０において、firstbitFlagが０以外の場合には、firstbitFlagに０を代入して最初のビットを出力しない。
一方、ステップＳＴ２１０において、バイパス２７５は、firstbitFlagが０の場合には、WriteBits(B,1)の処理を行う。ここでWriteBits(B,1)は、１ビット長の値Ｂを出力する処理である。
【００８６】
ステップＳＴ２１３において、バイパス２７５は、bitsOutstandingが０より大きいか否かを判別し、０よりも大きいと判別した場合には、WriteBits(1-B,1)の処理を行い、bitOutstandingから１減算しステップＳＴ２１３の処理に戻る。ここでWriteBits(1-B,1)の処理は、１ビット長のＢの補数を出力する処理である。
【００８７】
一方、ステップＳＴ２１３において、バイパス２７５は、bitOutstandingが０以下であると判別した場合には、一連の処理を中止する。
以上説明した動作を行うことで、バイパスは、キャリーオーバーを起こすことなく、符号化処理を行うことができる。
【００８８】
本発明の符号化回路の第３実施形態に係る文脈非依存型符号化部２７５は、文脈非依存型符号化処理において、レンジRange の値が正規化により変わらないという特性を考慮して、文脈非依存型の符号化処理を行う対象のシンボルbin が連続して入力された場合に、その符号化対象の連続したシンボルbin をまとめて符号化することにより演算を高速化する。
【００８９】
具体的には、エンコードしたいシンボル列をB = (b0 b1 b2 b3 … bn) とする。また、符号化順序はb0, b1 ,…, bn であるとする。
これら各bm(0<=m<=n)について、上述した実施形態の文脈非依存型符号化処理（Bypass）をLength(B)回だけ繰り返した結果は、数式（２）に示す演算を行った下限値Low と等しい。
【００９０】
（数２）
Low = Low<<Length(B) + Range*Value(B)
NumExtBits += Length(B)
【００９１】
以下、数式（２）の証明を以下に示す。
ある要素数N の配列 A= {A[0],A[1],…,A[N-1]}とB={B[0],B[1],…,B[N-1]} があるとする。A,Bは以下の漸化式で表現できるとする。
【００９２】
【数３】
2005184232.tif 000003
【００９３】
このとき、数式（３）のA[n]が、数式（４）で表現できることを数学的帰納法で証明する。
【００９４】
【数４】
2005184232.tif 000004
【００９５】
（Ａ）：数式（４）においてn = 0 のとき、両辺ともに、A[0] となる。
（Ｂ）：数式（４）においてn = k のとき、数式（５）が成り立つと仮定する。
【００９６】
【数５】
2005184232.tif 000005
【００９７】
このとき、数式（３）より、数式（５）を数式（６）の右辺のA[k]に代入する。
【００９８】
【数６】
2005184232.tif 000006
【００９９】
【数７】
2005184232.tif 000007
【０１００】
上記代入の結果、数式（７）となり、n = k + 1 においても数式（４）が成り立つことが示された。
（Ａ）および（Ｂ）より、いかなるｎについても数式（４）が成り立つことが証明された。（証明終）
【０１０１】
今、エンコードしたいシンボル列を B = (b0 b1 b2 b3 … bn) とする。また、符号化順序はb0, b1 ,…, bn であるとする。
シンボルbk をエンコードする直前のLow の値を A[k]、bk の値をb[k] とすると、bkを処理した後の Low の値、すなわちA[k+1]は、上記数式（４）より、数式（８）になる。
【０１０２】
【数８】
2005184232.tif 000008
【０１０３】
k=n のとき、数式（９）と置き換えると、Bを符号化したあとのLow の値は数式（１０）と同じである。
ここで、Length(S)は、シンボル列Ｓの長さ、Value(S)は、シンボル列Sを２進値と見た場合の値である。
具体的には、例えばシンボル列が｛０，１，０｝の場合には、Value(S)は０×２2 ＋１×２1 ＋０×２0 ＝２である。ビット長が長い場合も同様にシンボル列を２進数表記のデータとみなしてValue(S)を計算する。
【０１０４】
【数９】
2005184232.tif 000009
【０１０５】
（数式１０）
Low = Low<<Length(B) + Range*Value(B)
【０１０６】
以上の処理は、上述した正規化処理Renormalizeを行った結果に等しい。つまり、シンボル列の各binに対して逐一処理をせずに、一括してシンボル列を符号化することが可能になる。
【０１０７】
以下、本実施形態に係る文脈非依存型符号化部の具体的な構成について説明する。
図１５は、本発明の符号化回路の第３実施形態に係る文脈非依存型符号化部の機能ブロック図である。
本実施形態に係る文脈非依存型符号化部２７５は、例えば図１５に示すように、連続判断部２７５１、単処理部２７５２、連続処理部２７５３、および正規化部２７５４を有する。
連続判断部２７５１は、本発明に係る検出手段に相当する。単処理部２７５２は、第１実施形態に係る文脈非依存型符号化部２７５に相当する。正規化部２７５４は第１実施形態に係る正規化部２７４１に相当する。上記実施形態との相違点のみ説明する。
【０１０８】
連続判断部２７５１は、符号化対象の連続したビットデータが、レンジRange を固定に符号化処理できる特性をもつ文脈非依存型であるか否かを検出する。連続判断部２７５１は、連続していないと判断した場合には、単処理部２７５２に通常の文脈非依存型符号化処理を行わせる。
【０１０９】
連続処理部２７５３は、連続判断部２７５１が連続したビットデータが、文脈非依存型であると検出した場合には、その連続したビットデータをまとめて符号化処理し、処理結果を正規化部２７５４に出力する。
連続処理部２７５３は、詳細には、図１５に示すように、第１の変換部２７５３１、および第２の変換部２７５３２を有する。
第１の変換部２７５３１は本発明に係る変換手段に相当する。
【０１１０】
第１の変換部２７５３１は、連続判断部２７５１が連続したビットデータが、文脈非依存型であると検出した場合には、連続したビットデータを２進数表記のデータとし、当該２進数表記のデータと予め設定されたレンジRange の積と、連続したビットデータのビットデータ長分だけ下限値Low を左シフト演算した値とを加算した値を、新たな下限値Low とし、拡張領域データLowEのビットに、前記連続したビットデータのビット長を加算する。
【０１１１】
第２の変換部２７５３２は、拡張領域データのビット長に、連続したビットデータのビット長を加算して、拡張領域データのビット長を更新する。
【０１１２】
図１６は、図１５に示した符号化回路の文脈非依存型符号化部の動作を説明するための図である。図１６を参照しながら、文脈非依存型符号化部２７５の動作を、符号化対象の連続したビットデータが入力された場合の符号化処理を説明する。
ステップＳＴ３０１において、連続判断部２７５１は、符号化対象の連続したビットデータが、レンジRange を固定に符号化処理できる特性をもつ文脈非依存型であるか否かを検出する。
【０１１３】
ステップＳＴ３０２において、第１の変換部２７５３１は、連続判断部２７５１が連続したビットデータが、文脈非依存型であると検出した場合には、連続したビットデータを２進数表記のデータとし、当該２進数表記のデータと予め設定されたレンジRange の積と、連続したビットデータのビットデータ長分だけ下限値Low を左シフト演算した値とを加算した値を、新たな下限値Low とし、拡張領域データLowEのビットに、前記連続したビットデータのビット長を加算する。
第２の変換部２７５３２は、拡張領域データのビット長に、連続したビットデータのビット長を加算して、拡張領域データのビット長を更新する。
【０１１４】
ステップＳＴ３０３において、正規化部２７５４は、例えば図１２に示したように正規化部２７４１と同じ正規化処理を行う。
また、この際、図１２に示すNumExtBitsの初期値として、左シフト演算により桁上げされた最初の１ビット目の出力を抑制する値が設定され、拡張データLowEを基に左シフト演算により入力された最初の１ビット目の出力を抑制する。
具体的には、例えばNumExtBitsの初期値を−１に設定することで、図１４のステップＳＴ２１０に示す条件判断を省略することができ、高速に処理することができる。
【０１１５】
以上説明したように、本実施形態では、文脈非依存型符号化部２７５に、符号化対象の連続したビットデータが、レンジRange を固定に符号化処理できる特性をもつ文脈非依存型であるか否かを検出する連続判断部２７５１と、連続判断部２７５１が連続したビットデータが、文脈非依存型であると検出した場合には、連続したビットデータを２進数表記のデータとし、当該２進数表記のデータと予め設定されたレンジRange の積と、連続したビットデータのビットデータ長分だけ下限値Low を左シフト演算した値とを加算した値を、新たな下限値Low とし、拡張領域データLowEのビットに、前記連続したビットデータのビット長を加算する第１の変換部２７５３１と、拡張領域データのビット長に、連続したビットデータのビット長を加算して、拡張領域データのビット長を更新する第２の変換部２７５３２と、正規化部２７５４とを設けたので、従来のように、連続した文脈非依存型のビットデータを、一括して符号化することができ、演算速度が高速化する。
また、NumExtBitsの初期値を−１に設定することで、図１４のステップＳＴ２１０に示す条件判断を省略することができ、高速に処理することができる。
つまり、毎ビット出力で必要な判断分岐を削除することで、演算処理の高速化を行うことができる。
【０１１６】
なお、本発明は本実施形態に限られるものではなく、任意好適な改変が可能である。
本実施形態に係る符号化装置では、ハードウェアにより、本発明に係る機能を実現したが、この形態に限られるものではない。例えば、コンピュータ（データ処理装置）が上述した本発明に係る機能を有するプログラムを実行することにより、本発明に係る機能を実現してもよい。
【０１１７】
また、単処理部と連続処理部を設けた例を示したがこの形態に限られるものではない。例えば連続処理部だけでもよい。
また、上述した実施形態を組み合わせて実施してもよい。
また、本実施形態ではＣＡＢＡＣを例に説明したが、この形態に限られるものではない。
【図面の簡単な説明】
【０１１８】
【図１】本実施形態の通信システム１の概念図である。
【図２】図１に示す符号化装置２の全体構成図である。
【図３】算術符号化処理を説明するための図である。
【図４】一般的な符号化処理における正規化処理を説明するための図である。
【図５】図１に示した本発明の第１実施形態に係る符号化回路の機能ブロック図である。
【図６】図２に示した符号化回路の符号化処理の全体の動作を示すフローチャートである。
【図７】図５に示した符号化回路の機能ブロック図である。
【図８】図７に示す符号化回路のレンジRange データを説明するための図である。
【図９】図７に示す符号化回路の下限値Low データを説明するための図である。
【図１０】図７に示した符号化回路の符号化処理の動作を説明するためのフローチャートである。
【図１１】図７に示した符号化回路の符号化処理の動作の一具体例を説明するためのフローチャートである。
【図１２】図１１に示した符号化回路の正規化処理の具体例を説明するためのフローチャートである。
【図１３】図５に示した文脈非依存型符号化部の動作の一具体例を説明するための図である。
【図１４】図１３に示した符号化処理のPutBit(Ｂ)の処理を説明するためのフローチャートである。
【図１５】本発明の符号化回路の第３実施形態に係る文脈非依存型符号化部の機能ブロック図である。
【図１６】図１５に示した符号化回路の文脈非依存型符号化部の動作を説明するための図である。
【符号の説明】
【０１１９】
１…通信システム、２…符号化装置（データ処理装置：コンピュータ）、３…復号装置、２２…Ａ／Ｄ変換回路、２３…画面並べ替え回路、２４…演算回路、２５…直交変換回路、２６…量子化回路、２７…符号化回路、２８…バッファ、２９…逆量子化回路、３０…逆直交変換回路、３２…レート制御回路、３４…フレームメモリ、３８…デブロックフィルタ、３９…動き予測・補償回路、２７１…シンボル変換部（ＶＬＣ）、２７２…切替部（検出部）、２７３…コンテクスト（ＣＴＸ）、２７４…文脈依存型符号化部、２７５…文脈非依存型符号化部（バイパス：Bypass）、２７６…終端処理部、２７４０…分割部、２７４１…正規化部、２７４２…ビット位置特定部、２７４３…シフト量特定部、２７４４…判別部、２７４５…拡張データ符号化部、２７５１…連続判断部、２７５２…単処理部、２７５３…連続処理部、２７５４…正規化部、ＭＥＭ…メモリ、Range …レンジ、Low …下限値、LowB…基本領域データ、LowE…拡張領域データ（拡張データ）。
【図１】
2005184232.tif 000010
【図２】
2005184232.tif 000011
【図３】
2005184232.tif 000012
【図４】
2005184232.tif 000013
【図５】
2005184232.tif 000014
【図６】
2005184232.tif 000015
【図７】
2005184232.tif 000016
【図８】
2005184232.tif 000017
【図９】
2005184232.tif 000018
【図１０】
2005184232.tif 000019
【図１１】
2005184232.tif 000020
【図１２】
2005184232.tif 000021
【図１３】
2005184232.tif 000022
【図１４】
2005184232.tif 000023
【図１５】
2005184232.tif 000024
【図１６】
2005184232.tif 000025