(57)【要約】【課題】Ｈ．２６４／ＡＶＣにおいてシンタックス要素を符号化するために必要となる、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を、小規模な集積回路によって高速に実現する。【解決手段】Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長がバスのビット長を超えない時は、符号化されたデータの全てを１回でバスに出力する。符号化されたデータのデータ長がバスのビット長の２×Ｋ−１倍を超え２×Ｋ倍を超えない時は、第１の部分を１回または複数回に分割してバスに出力し、第２の部分と第３の部分を１回または複数回に分割してバスに出力する。符号化されたデータのデータ長がバスのビット長の２×Ｋ倍を超え２×Ｋ＋１倍を超えない時は、第１の部分を１回または複数回に分割してバスに出力し、第１のバス幅未満のデータと第２のデータ及び第３のバス幅の整数倍を超えているデータを出力し、第３の部分を１回または複数回に分割してバスに出力する。【選択図】図５
2007295157.tif 000002
【特許請求の範囲】
【請求項１】
元のデータを符号化する符号化部と、
前記符号化部によって符号化されたデータのデータ長を判断するデータ長判断部と、
前記データ長判断部の判断結果に基づいて前記符号化されたデータを所定のビット長に分割する分割部と、
前記分割されたデータをバスに出力する出力部と、
を有するデータ符号化装置。
【請求項２】
前記符号化されたデータは第１のサブデータと第２のサブデータと第３のサブデータから構成され、
前記第１のサブデータと第３のサブデータとはそのデータ長が同じビット長である、
請求項１に記載のデータ符号化装置。
【請求項３】
前記符号化されたデータのデータ長が前記所定のビット長を超えない時は、前記符号化されたデータの全てを１回で前記バスに出力し、
Ｋを１つの自然数とする時、
前記符号化されたデータのデータ長が、前記所定のビット長の「２×Ｋ−１」倍を超え「２×Ｋ」倍を超えない時は、前記第１のサブデータを１回または複数回に分割して前記バスに出力した後に、前記第２のサブデータと第３のサブデータを１回または複数回に分割して前記バスに出力し、
前記符号化されたデータのデータ長が、前記所定のビット長の「２×Ｋ」倍を超え「２×Ｋ＋１」倍を超えない時は、前記第１のサブデータを１回または複数回に分割して前記バスに出力し、前記第１のサブデータの前記所定のビット長未満の部分と前記第２のサブデータ及び前記第３のサブデータの前記所定のビット長の整数倍を超えている部分を前記バスに出力した後に、前記第３のサブデータを１回または複数回に分割して前記バスに出力する、
請求項２に記載のデータ符号化装置。
【請求項４】
前記符号化は指数Ｇｏｌｏｍｂ符号化であり、
前記第１のサブデータは先行ゼロ部であり、
前記第３のサブデータはＩＮＦＯ部であり、
前記第２のサブデータは前記先行ゼロ部と前記ＩＮＦＯ部との分離部である、
請求項３に記載のデータ符号化装置。
【請求項５】
前記所定のビット長は前記バスのビット長に等しい、
請求項１から請求項４のいずれか１項に記載のデータ符号化装置。
【請求項６】
前記所定のビット長を記憶するレジスタを備えた、
請求項１から請求項５のいずれか１項に記載のデータ符号化装置。
【請求項７】
元のデータを符号化する符号化手順と、
前記符号化手順によって符号化されたデータのデータ長を判断するデータ長判断手順と、
前記データ長判断手順の判断結果に基づいて前記符号化されたデータを所定のビット長に分割する分割手順と、
前記分割されたデータをバスに出力する出力手順と、
を有するデータ符号化方法。
【請求項８】
コンピュータによって実行可能なプログラムであって、
元のデータを符号化する符号化ステップと、
前記符号化ステップによって符号化されたデータのデータ長を判断するデータ長判断ステップと、
前記データ長判断ステップの判断結果に基づいて前記符号化されたデータを所定のビット長に分割する分割ステップと、
前記分割されたデータをバスに出力する出力ステップと、
を有するデータ符号化プログラム。
【請求項９】
コンピュータによって読み取り可能な情報記録媒体であって、
請求項８に記載のデータ符号化プログラムを記録した情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願に係る発明（以後、「本発明」という）は、入力されたデータを所定の方式に従って符号化し、符号化されたデータを所定のビット長のバスに出力する、データ符号化装置、データ符号化方法、データ符号化プログラム及びデータ符号化プログラムを記録した情報記録媒体に関するものである。
【背景技術】
【０００２】
新しい動画符号化方式としてＨ．２６４が提案されている。Ｈ．２６４は、ＩＴＵ−ＴのＶｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によって策定された動画圧縮ための規格で、ＩＳＯ／ＩＥＣ  ＪＴＣ  １のＭｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐが、ＭＰＥＧ−４  Ｐａｒｔ  １０  Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）として標準化していた規格と統合され、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣや、Ｈ．２６４／ＡＶＣと呼ばれることもある。
【０００３】
この方式では、従来の圧縮技術に加えて、サブマクロブロック分割、イントラ予測、デブロッキング・フィルタ等、新しい技術を利用することによって圧縮性能を向上させており、従来方式であるＭＰＥＧ−２等と比較して２倍以上の圧縮効率を実現すると言われている。
【０００４】
このような高圧縮性能によって、携帯電話等の用途向け低ビットレートから、ＨＤＴＶクラスの高ビットレートに至るまで、幅広い利用が期待されている。
【０００５】
Ｈ．２６４／ＡＶＣでは、シンタックス要素を符号化するための符号化方式の１つとして、指数Ｇｏｌｏｍｂ符号（Ｅｘｐ−Ｇｏｌｏｍｂ  ｃｏｄｅｓ：Ｅｘｐｏｎｅｎｔｉａｌ  Ｇｏｌｏｍｂ  ｃｏｄｅｓ）や、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  ＶＬＣ）や、ＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）等を使用することが規定されている。
【０００６】
従来の、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を行うＥｘｐ−Ｇｏｌｏｍｂ符号化装置の一例である、Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置８００のブロック構成図を図６に示す。
【０００７】
符号化の対象データとなるシンタックス要素データ８１０がＥｘｐ−Ｇｏｌｏｍｂ符号化装置８００に入力されると、このシンタックス要素データ８１０は、最初に入力制御部８０１に入力される。
【０００８】
入力制御部８０１では、このシンタックス要素データ８１０のデータタイプに基づいて、ｃｏｄｅＮｕｍ（符号番号）を生成するための方式が決定される。
【０００９】
ｃｏｄｅＮｕｍを生成する方式には、Ｕｎｓｉｇｎｅｄ、Ｓｉｇｎｅｄ、Ｍａｐｐｅｄや、その他の方式があるが、ここでは、Ｕｎｓｉｇｎｅｄ、Ｓｉｇｎｅｄ、Ｍａｐｐｅｄの３タイプとして説明する。また、このｃｏｄｅＮｕｍを生成する方式も、それぞれの仕様に基づいて決定されるもので、本発明の本質とは直接関係しないので、詳細な説明は省略する。
【００１０】
入力制御部８０１で、シンタックス要素データ８１０のデータタイプに基づいてｃｏｄｅＮｕｍ（符号番号）を生成するための方式が決定されると、そのシンタックス要素データ８１０は、ｃｏｄｅＮｕｍ生成部８０２に送られる。ｃｏｄｅＮｕｍ生成部は、Ｕｎｓｉｇｎｅｄ、Ｓｉｇｎｅｄ、Ｍａｐｐｅｄの、それぞれの方式でｃｏｄｅＮｕｍを生成するための部分に分かれており、これらをＵｎｓｉｇｎｅｄ部８２１、Ｓｉｇｎｅｄ部８２２、Ｍａｐｐｅｄ部８２３と呼ぶ。各シンタックス要素データ８１０は、決定された方式に対応して、それぞれの方式でｃｏｄｅＮｕｍを生成するための部分に送られる。
【００１１】
ｃｏｄｅＮｕｍ生成部８０２でｃｏｄｅＮｕｍが生成されると、そのｃｏｄｅＮｕｍは、符号生成部８０３に送られる。この符号生成部８０３が、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を実行する中心である。
【００１２】
Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータは、一旦中間バッファ８０４へ送られて蓄積され、必要に応じて、また各種のタイミングに同期して、出力信号生成部８０５へ送られ、出力信号生成部８０５で出力形式に変換されてデータバス８０６に出力される。
【００１３】
Ｅｘｐ−Ｇｏｌｏｍｂ符号は可逆圧縮符号の一種で、符号化されたデータは、先行ゼロ部と、ＩＮＦＯ部と、先行ゼロ部とＩＮＦＯ部とを分離する分離部との、３つの部分から構成される。
【００１４】
上記ｃｏｄｅＮｕｍに、１を加えた値の２を低とする対数値を求め、その整数部をＭとすると、先行ゼロ部はＭ個の「０」から構成される。
【００１５】
分離部は、常に１つの「１」で構成される。
【００１６】
ＩＮＦＯ部は、上記ｃｏｄｅＮｕｍに１を加えた値を２進数で表現した時の、最上位の１を除いたビット列で構成される。これはまた、ｃｏｄｅＮｕｍに１を加えた値から２のＭ乗を引いた値を、Ｍ桁の２進数で表現した時のビット列ということもできる。
【００１７】
このようにすると、先行ゼロ部とＩＮＦＯ部とは、必ず同じビット長になることが分る。
【００１８】
一例として、シンタックス要素タイプがＵｎｓｉｇｎｅｄ（符号なし整数）であるシンタックス要素データ８１０として、値「２１」が入力されたと仮定し、このシンタックス要素データ８１０が、Ｅｘｐ−Ｇｏｌｏｍｂ符号化される様子を、図７に示す。
【００１９】
このシンタックス要素データ８１０は、そのデータタイプがＵｎｓｉｇｎｅｄであるから、ｃｏｄｅＮｕｍは入力された値と同じ「２１」になる。
【００２０】
この２１に１を加えた値の２を低とする対数値を求め、その整数部を取り出すと「４」であるから、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの先行ゼロ部は４桁の０、すなわち、「００００」になる。
【００２１】
ｃｏｄｅＮｕｍに１を加えた値は「２２」で、この値を２進数で表現すると「１０１１０」であるから、ＩＮＦＯ部はこの最上位の１を除いた「０１１０」になる。
【００２２】
また、２２から２の４乗を引くと６であり、これを４桁の２進数で表すと、同じ「０１１０」になる。
【００２３】
従って、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータは、「００００１０１１０」になる。
【００２４】
このようにして、最大３２ビットの数値データに対して指数Ｇｏｌｏｍｂ符号化を行うと仮定すると、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータは最大６５ビットになる可能性がある。
【００２５】
従って、中間バッファ８０４のバッファサイズは６５ビット分が必要になる。そして、データバス８０６のバス幅を３２ビットと仮定し、６５ビットのＥｘｐ−Ｇｏｌｏｍｂ符号化されたデータをこのバス幅３２ビットに合わせて出力すると仮定すると、出力信号生成部８０５は、６５ビット分のシフトレジスタ等が必要になる。
【００２６】
このようにして、Ｇｏｌｏｍｂ符号化されたデータを出力する例が、下記特許文献１に記載されている。
【特許文献１】特開２００４−１０４１５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
しかしながら、上記従来のＥｘｐ−Ｇｏｌｏｍｂ符号化装置では、３２ビットの入力データをＥｘｐ−Ｇｏｌｏｍｂ符号化して３２ビットのバスに出力するのに、６５ビット分の中間バッファとシフトレジスタ等が必要になり、集積回路化するにも回路構成が複雑かつ大規模なものとならざるをえず、簡単かつ小規模な集積回路として実現することはできなかった。
【課題を解決するための手段】
【００２８】
本発明は、上記のような課題を解決するために行われたもので、Ｈ．２６４／ＡＶＣにおいてシンタックス要素を符号化するために必要となる、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を、簡単かつ小規模な集積回路によって実現することを可能とするものである。
【００２９】
そのために、具体的には以下のような構成を採用する。
【００３０】
請求項１に記載のデータ符号化装置では、元のデータを符号化する符号化部と、符号化部によって符号化されたデータのデータ長を判断するデータ長判断部と、データ長判断部の判断結果に基づいて符号化されたデータを所定のビット長に分割する分割部と、分割されたデータをバスに出力する出力部とを有する。
【００３１】
このような構成によって、Ｈ．２６４／ＡＶＣ等においてシンタックス要素等を符号化するために必要となる符号化を、簡単かつ小規模な集積回路によって実現するとともに、効率的かつ高速にバス出力することが可能になる。
【００３２】
請求項２に記載のデータ符号化装置では、符号化されたデータは第１のサブデータと第２のサブデータと第３のサブデータから構成され、第１のサブデータと第３のサブデータとはそのデータ長が同じビット長である。
【００３３】
このような構成によって、特にその符号化されたデータが第１のサブデータと第２のサブデータと第３のサブデータからなり、第１のサブデータと第３のサブデータとのデータ長が同じビット長であるような場合において、より有効に符号化を簡単かつ小規模な集積回路によって実現するとともに、より効率的かつ高速にバス出力することが可能になる。
【００３４】
請求項３に記載のデータ符号化装置では、符号化されたデータのデータ長が所定のビット長を超えない時は、符号化されたデータの全てを１回でバスに出力し、Ｋを１つの自然数とする時、符号化されたデータのデータ長が、所定のビット長の「２×Ｋ−１」倍を超え「２×Ｋ」倍を超えない時は、第１のサブデータを１回または複数回に分割してバスに出力した後に、第２のサブデータと第３のサブデータを１回または複数回に分割してバスに出力し、符号化されたデータのデータ長が、所定のビット長の「２×Ｋ」倍を超え「２×Ｋ＋１」倍を超えない時は、第１のサブデータを１回または複数回に分割してバスに出力し、第１のサブデータの所定のビット長未満の部分と第２のサブデータ及び第３のサブデータの所定のビット長の整数倍を超えている部分をバスに出力した後に、第３のサブデータを１回または複数回に分割してバスに出力する。
【００３５】
このような構成によって、より具体的な構成を使用して、符号化を簡単かつ小規模な集積回路によって実現するとともに、効率的かつ高速にバス出力することが可能になる。
【００３６】
請求項４に記載のデータ符号化装置では、符号化は指数Ｇｏｌｏｍｂ符号化であり、第１のサブデータは先行ゼロ部であり、第３のサブデータはＩＮＦＯ部であり、第２のサブデータは先行ゼロ部とＩＮＦＯ部との分離部である。
【００３７】
このような構成によって、符号化がＧｏｌｏｍｂ符号化である時にも、より有効に符号化を簡単かつ小規模な集積回路によって実現するとともに、より効率的かつ高速にＧｏｌｏｍｂ符号化されたデータをバス出力することが可能になる。
【００３８】
請求項５に記載のデータ符号化装置では、所定のビット長はバスのビット長に等しい。
【００３９】
このような構成によって、与えられた所定のバス幅にあわせて、符号化データを分割し、より効率的かつ高速にバス出力することが可能になる。
【００４０】
請求項６に記載のデータ符号化装置では、所定のビット長を記憶するレジスタを備えている。
【００４１】
このような構成によって、分割するべきビット長を記憶し、この記憶しているビット長を利用して効率的かつ高速に符号化データを分割し、より効率的かつ高速にバス出力することができると同時に、分割するべきビット長を必要に応じてフレキシブルに変更することも可能になる。
【００４２】
請求項７に記載のデータ符号化方法では、元のデータを符号化する符号化手順と、符号化手順によって符号化されたデータのデータ長を判断するデータ長判断手順と、データ長判断手順の判断結果に基づいて符号化されたデータを所定のビット長に分割する分割手順と、分割されたデータをバスに出力する出力手順とを有する。
【００４３】
このような構成によって、Ｈ．２６４／ＡＶＣ等においてシンタックス要素等を符号化するために必要となる符号化を、簡単かつ小規模な集積回路によって実現するとともに、効率的かつ高速にバス出力する方法を実行することが可能になる。
【００４４】
請求項８に記載のデータ符号化プログラムは、コンピュータによって実行可能なプログラムであって、元のデータを符号化する符号化ステップと、符号化ステップによって符号化されたデータのデータ長を判断するデータ長判断ステップと、データ長判断ステップの判断結果に基づいて符号化されたデータを所定のビット長に分割する分割ステップと、分割されたデータをバスに出力する出力ステップとを有する。
【００４５】
このような構成によって、上記のようなデータ符号化装置とデータ符号化方法とを、コンピュータとそのコンピュータによって実行されるプログラムを使用して、具体的に実現し、実行することが可能になる。
【００４６】
請求項９に記載の発明は、コンピュータによって読み取り可能な情報記録媒体であって、請求項８に記載のデータ符号化プログラムを記録した情報記録媒体である。
【００４７】
このような構成によって、上記本発明のデータ符号化プログラムを記録媒体に記録し、保存し、使用し、コンピュータによって読み出して実行することが可能になる。
【発明の効果】
【００４８】
本発明では、Ｈ．２６４／ＡＶＣにおいてシンタックス要素を符号化するために必要となる、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を、簡単かつ小規模な集積回路によって効率的かつ高速に実現することが可能になる。
【発明を実施するための最良の形態】
【００４９】
（実施の形態）
以下に、本発明の実施の形態について、図面を参照しながら説明する。
【００５０】
図１は、本発明の実施の形態の１つである、Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置の全体概要図である。このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、主にＥｘｐ−Ｇｏｌｏｍｂ符号生成部１０２と、出力制御部１０４と、メモリ部１０３とから構成される。Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置１００はその他の部分も含んでいるが、本発明の本質と直接関係しないので省略をしている。
【００５１】
このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、プロセッサ２０１と接続されており、プロセッサ２０１からデータ２１１とコマンド２１２とを受け取る。
【００５２】
例えば、このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００が携帯電話に使われていたとすると、プロセッサ２０１は携帯電話全体を制御するＣＰＵであることもあるし、携帯電話の画像処理を制御するＣＰＵであることもあるし、携帯電話の通信を制御するＣＰＵであることもある。あるいは、例えば、このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００がテレビ受信機に使われていたとすると、プロセッサ２０１はテレビ受信機全体を制御するＣＰＵであることもあるし、テレビ受信機の画像処理を制御するＣＰＵであることもあるし、テレビ受信機の放送電波受信を制御するＣＰＵであることもある。このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、例えば上記のような携帯電話、テレビ受信機に使われることがあり、あるいはまた、ＤＶＤ（デジタル・バーサタイル・ディスク）のような映像記録再生装置に使われることもあるし、ＰＣ（パーソナル・コンピュータ）やＰＤＡ（携帯情報端末装置）等に使われることもあるし、ＦＡＸやコピー機を始めとする各種の事務用電気・電子機器に使われることもあるし、各種の家庭用電気・電子機器に使われることもあるし、その他のあらゆる電気・電子機器に使われることもある。本明細書において説明するのは、その中のごく一部の例にすぎず、本発明が本明細書で説明する例に限定されるものではない（本明細書中の全ての説明において同様）。
【００５３】
このような、あらゆる電気・電子機器において、Ｅｘｐ−Ｇｏｌｏｍｂ符号は使われる可能性があり、Ｅｘｐ−Ｇｏｌｏｍｂ符号が使われる可能性がある限りにおいて、このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００は使われる可能性がある。
【００５４】
また、プロセッサ２０１は、必ずしも独立した１つのＣＰＵまたはＭＰＵであるとは限らず、１つのＬＳＩやゲートアレー等の一部であるＣＰＵコア等であっても構わないし、必ずしも汎用的なＣＰＵ等ではなく、特定の目的に使用されるＤＳＰ等であっても構わない。
【００５５】
このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、このプロセッサ２０１から、データ２１１とコマンド２１２とを受け取る。このデータ２１１はＥｘｐ−Ｇｏｌｏｍｂ符号化の対象となるデータやその他のデータであり、コマンド２１２は、例えば「データ２１１をＥｘｐ−Ｇｏｌｏｍｂ符号に変換せよ」というコマンドであり、それ以外の各種コマンドであることもある。
【００５６】
Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、受け取ったデータ２１１を、コマンド２１２に従って、その内部のＥｘｐ−Ｇｏｌｏｍｂ符号生成部１０２と、出力制御部１０４と、メモリ部１０３とを使って、Ｅｘｐ−Ｇｏｌｏｍｂ符号化する。そして、Ｅｘｐ−Ｇｏｌｏｍｂ符号化したデータを、データバス３０１に出力する。これらの処理を、簡単かつ小規模な集積回路によって実現することが本発明の目的であり、その特徴である。
【００５７】
本実施の形態のＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００をより詳細に説明するため、本実施の形態のＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００のブロック構成図を図２に示す。
【００５８】
上記のとおり、Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、データ２１１とコマンド２１２とを受け取る。このデータ２１１は、例えば、Ｈ．２６４／ＡＶＣにおけるシンタックス要素データである。
【００５９】
また、やはり上記のとおり、このＥｘｐ−Ｇｏｌｏｍｂ符号化装置１００は、主にＥｘｐ−Ｇｏｌｏｍｂ符号生成部１０２と、出力制御部１０４と、メモリ部１０３とから構成される。Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置１００はその他の部分も含んでいるが、本発明の本質と直接関係しないので省略をしている。
【００６０】
Ｅｘｐ−Ｇｏｌｏｍｂ符号化を実行する中心的な役割を担うのは、Ｅｘｐ−Ｇｏｌｏｍｂ符号生成部１０２である。このＥｘｐ−Ｇｏｌｏｍｂ符号生成部１０２は、入力制御部１２１と、ｃｏｄｅＮｕｍ生成部１２２と、符号生成部１２３とから、主に構成される。Ｅｘｐ−Ｇｏｌｏｍｂ符号生成部１０２はその他の部分も含んでいるが、本発明の本質と直接関係しないので省略をしている。
【００６１】
Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置１００に入力されたデータ２１１とコマンド２１２とをまず受け取るのはこのＥｘｐ−Ｇｏｌｏｍｂ符号生成部１０２であり、その中でも特に、入力制御部１２１である。入力制御部１２１は、この入力されたデータ２１１とコマンド２１２とを受け取り、データ２１１のデータタイプに基づいて、ｃｏｄｅＮｕｍ（符号番号）を生成するための方式を決定する。このｃｏｄｅＮｕｍを生成するための方式には、Ｕｎｓｉｇｎｅｄ、Ｓｉｇｎｅｄ、Ｍａｐｐｅｄがある。ｃｏｄｅＮｕｍを生成するための方式には、これら以外の方式もあるが、必ずしも本発明の本質とは直接関わらないので省略をする。
【００６２】
そして、入力制御部１２１は、入力されたコマンド２１２に従って、データ２１１をＥｘｐ−Ｇｏｌｏｍｂ符号化するための前提準備として、ｃｏｄｅＮｕｍ生成部１２２へ送ってｃｏｄｅＮｕｍを生成する。この時に、ｃｏｄｅＮｕｍを生成するための決定した方式に基づいて、ｃｏｄｅＮｕｍ生成部１２２に含まれる、Ｕｎｓｉｇｎｅｄ部１２４、Ｓｉｇｎｅｄ部１２５、Ｍａｐｐｅｄ部１２６の、それぞれのデータタイプに従ったｃｏｄｅＮｕｍを生成するための部分に振り分けて、データ２１１を送り出す。
【００６３】
ｃｏｄｅＮｕｍ生成部１２２の、Ｕｎｓｉｇｎｅｄ部１２４、Ｓｉｇｎｅｄ部１２５、Ｍａｐｐｅｄ部１２６のそれぞれの部分では、送られてきたデータ２１１を受け取り、それぞれの方式に従って、ｃｏｄｅＮｕｍを生成する。ｃｏｄｅＮｕｍは非負の整数値であり、ｃｏｄｅＮｕｍがＥｘｐ−Ｇｏｌｏｍｂ符号化の対象となるデータになる。ｃｏｄｅＮｕｍの生成方法に関しては、それぞれのＥｘｐ−Ｇｏｌｏｍｂ符号化の対象となるシンタックス要素の種別によって定まり、Ｕｎｓｉｇｎｅｄ、Ｓｉｇｎｅｄ、Ｍａｐｐｅｄ、その他があることは上記のとおりであるが、本発明の本質と直接関係しないのでこれ以上詳細な説明は省略する。さらに、本明細書の説明では、ｃｏｄｅＮｕｍは３２ビットのデータであると仮定する。上記のとおり、本発明がこの例に限定されるものではない。
【００６４】
このようにして、ｃｏｄｅＮｕｍ生成部１２２において、Ｕｎｓｉｇｎｅｄ、Ｓｉｇｎｅｄ、Ｍａｐｐｅｄの、それぞれのデータタイプに従って生成されたｃｏｄｅＮｕｍは、符号生成部１２３へ送られる。そして、符号生成部１２３で、ｃｏｄｅＮｕｍからＥｘｐ−Ｇｏｌｏｍｂ符号への符号化が実行される。上記説明した従来技術における符号生成部８０３と同様に、この符号生成部１２３が、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を実行する中心である。
【００６５】
符号生成部１２３におけるＥｘｐ−Ｇｏｌｏｍｂ符号化の手順と、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータは、上記説明した従来技術における符号生成部８０３と同様である。Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータは、先行ゼロ部と、ＩＮＦＯ部と、先行ゼロ部とＩＮＦＯ部とを分離する分離部との、３つの部分から構成される。上記ｃｏｄｅＮｕｍに、１を加えた値の２を低とする対数値を求め、その整数部をＭとすると、先行ゼロ部はＭ個の「０」から構成される。分離部は、常に１つの「１」で構成される。ＩＮＦＯ部は、上記ｃｏｄｅＮｕｍに１を加えた値を２進数で表現した時の、最上位の１を除いたビット列で構成される。これはまた、ｃｏｄｅＮｕｍに１を加えた値から２のＭ乗を引いた値を、Ｍ桁の２進数で表現した時のビット列ということもできる。このようにして、最大３２ビットの数値データに対して指数Ｇｏｌｏｍｂ符号化を行うと仮定すると、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータは最大６５ビットになる可能性がある。
【００６６】
しかしながら、本実施の形態では、この最大６５ビットになる可能性があるＥｘｐ−Ｇｏｌｏｍｂ符号を全て生成するのでなく、ＩＮＦＯ部だけを生成し、このＩＮＦＯ部だけをメモリ部１０３の中間バッファ１３１へ送り出す。
【００６７】
そして、この最大６５ビット長になるＥｘｐ−Ｇｏｌｏｍｂ符号のデータ長を、出力制御部１０４の分割判断部１４１に送る。
【００６８】
出力制御部１０４の分割判断部１４１は、このＥｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長をみながら、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの分割方法を判断し、メモリ部１０３の中間バッファ１３１と出力信号生成部１３２とを制御して、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータを、３２ビット長のデータバス３０１に出力する。
【００６９】
この時の分割サイズは、例えばデータバス３０１のビット長である３２ビットとすることができる。これによって、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータをデータバスのバス幅にあわせて分割し、より効率的かつ高速にバス出力することが可能になる。但し、この分割サイズをデータバス３０１のビット長に合わせるのは１つの例であり、本発明がこの例に限られるものではない。
【００７０】
この時また、この分割サイズを例えば分割判断部１４１が保有するレジスタに記憶し、保存しておくことができる。これによって、記憶・保存しているビット長を読み出して効率的かつ高速に符号化データを分割し、より効率的かつ高速にバス出力することができると同時に、レジスタの内容を変更することによって、分割するべきビット長を必要に応じてフレキシブルに変更することも可能になる。
【００７１】
次に、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長がバスのビット長を超えない時と、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、上記バスのビット長の「２×Ｋ−１」倍を超え、「２×Ｋ」倍を超えない時と、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、上記バスのビット長の「２×Ｋ」倍を超え、「２×Ｋ＋１」倍を超えない時とに区分して、出力制御部１０４の分割判断部１４１が実行する分割方法の判断と、メモリ部１０３の中間バッファ１３１と出力信号生成部１３２とを制御して、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータを、３２ビット長のデータバス３０１に出力する時の制御方法を説明する。
【００７２】
まず最初に、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長がデータバス３０１のビット長を超えない時について説明をする。これは、言い替えるとＥｘｐ−Ｇｏｌｏｍｂ符号の先行ゼロ部と分離部とＩＮＦＯ部との合計がデータバス３０１のビット長である３２を超えない時であり、ＩＮＦＯ部のデータ長が１５ビットを超えない時である。
【００７３】
この時のデータ構造と出力方法の概要を図３に示す。
【００７４】
この時には、分割判断部１４１は、全てのＥｘｐ−Ｇｏｌｏｍｂ符号を一度にデータバス３０１に出力が可能であり、全てのＥｘｐ−Ｇｏｌｏｍｂ符号を一度にデータバス３０１に出力すると判断する。そして、中間バッファ１３１に対しては、全てのＩＮＦＯ部のデータを一度に出力信号生成部１３２へ送るように指示をする。これによって、ビット長Ｎ（但し、Ｎは０よりも大きく１５以下の整数である）のＩＮＦＯ部が、そのまま出力信号生成部１３２へ送られる。
【００７５】
出力信号生成部１３２に対しては、中間バッファ１３１から送られた全てのＩＮＦＯ部のデータを受け取り、それと同じビット長Ｎの先行ゼロ部と、１ビットの「１」からなる分離部とを付加して、Ｅｘｐ−Ｇｏｌｏｍｂ符号を生成し、そのＥｘｐ−Ｇｏｌｏｍｂ符号を一度にデータバス３０１に出力するように、指示が行われる。
【００７６】
出力信号生成部１３２は、この指示に従い、中間バッファ１３１から送られた全てのＩＮＦＯ部のデータを受け取り、それと同じビット長Ｎの先行ゼロ部と、１ビットの「１」からなる分離部とを付加して、Ｅｘｐ−Ｇｏｌｏｍｂ符号を生成し、そのＥｘｐ−Ｇｏｌｏｍｂ符号を一度にデータバス３０１に出力する。上記のとおり、この場合のＥｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長は、２×Ｎ＋１ビット長であり、このビット長は３２以下であるから、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータを一度にデータバス３０１に出力することが可能である。
【００７７】
次に、Ｋをある自然数とする時、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、データバス３０１のビット長３２の「２×Ｋ−１」倍を超え、「２×Ｋ」倍を超えない時について、説明をする。
【００７８】
上記のとおり本実施の形態では、ｃｏｄｅＮｕｍの最大ビット長を３２ビットと仮定し、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの最大ビット長を６５ビットと仮定しているので、上記条件においてＫ≧２となる、すなわち、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、データバス３０１のビット長３２の（２×２−１＝３）倍を超えることは起こりえない。従って、本実施の形態においてこの条件に該当するのは、Ｋ＝１、すなわち、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、データバス３０１のビット長３２の（２×１−１＝１）倍を超え、（２×１＝２）倍を超えない時だけになる。
【００７９】
具体的には、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、３２ビット以上で６３ビット以下の時であり、言い替えると、ＩＮＦＯ部のデータ長が１６ビット以上で３１ビット以下の時が該当する。
【００８０】
この時のデータ構造と出力方法の概要を図４に示す。
【００８１】
この時には、分割判断部１４１は、まず最初に、中間バッファ１３１に対して、ＩＮＦＯ部を出力信号生成部１３２に送ることを待機させる。
【００８２】
そして、この中間バッファ１３１がＩＮＦＯ部を出力信号生成部１３２に送ることを待機している間に、出力信号生成部１３２に対して、ＩＮＦＯ部のビット長Ｎ（但し、Ｎは１６以上で３１以下の自然数である）に相当するビット長の先行ゼロ部を、何回かに分割してデータバス３０２に出力するように指示をする。本実施の形態では、上記のとおり、ＩＮＦＯ部のビット長Ｎは１６以上で３１以下の自然数であると仮定しているので、１回でこの先行ゼロ部をデータバス３０２に出力することができる。
【００８３】
この先行ゼロ部の出力が終わると、次に、分割判断部１４１は、中間バッファ１３１に対して、ＩＮＦＯ部を出力信号生成部１３２に送るように指示をする。この指示に従って、中間バッファ１３１は、ＩＮＦＯ部を出力信号生成部１３２に送る。上記のとおり、このＩＮＦＯ部のデータ長Ｎは、１６ビット以上で３１ビット以下である。
【００８４】
そして、分割判断部１４１は、出力信号生成部１３２に対して、中間バッファ１３１から送られたＩＮＦＯ部を受け取り、このＩＮＦＯ部の前に分離部を付加し、これを何回かに分割してデータバス３０２に出力するように指示をする。
【００８５】
本実施の形態では、上記のとおり、ＩＮＦＯ部のデータ長Ｎは１６ビット以上で３１ビット以下であるから、ＩＮＦＯ部の前に分離部を付加した部分のデータ長は１７ビット以上で３２ビット以下であり、１回でこのＩＮＦＯ部に分離部を付加した部分をデータバス３０２に出力することができる。
【００８６】
最後に、Ｋをある自然数とする時、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、データバス３０１のビット長３２の「２×Ｋ」倍を超え、「２×Ｋ＋１」倍を超えない時について、説明をする。
【００８７】
上記のとおり本実施の形態では、ｃｏｄｅＮｕｍの最大ビット長を３２ビットと仮定し、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの最大ビット長を６５ビットと仮定しているので、上記条件においてＫ≧２となる、すなわち、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、データバス３０１のビット長３２の（２×２＝４）倍を超えることは起こりえない。従って、本実施の形態においてこの条件に該当するのは、Ｋ＝１、すなわち、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、データバス３０１のビット長３２の（２×１＝２）倍を超え、（２×１＋１＝３）倍を超えない時だけになる。
【００８８】
具体的には、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が、６４ビット以上で９５ビット以下の時であり、言い替えると、ＩＮＦＯ部のデータ長が３２ビット以上で４７ビット以下の時が該当する。また、上記のとおり、本実施の形態では、ｃｏｄｅＮｕｍの最大ビット長を３２ビットと仮定し、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの最大データ長は６５ビットと仮定しているので、この条件に該当するのは、ＩＮＦＯ部のデータ長が３２ビットで、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータのデータ長が６５ビットの時だけになる。
【００８９】
この時のデータ構造と出力方法の概要を図５に示す。
【００９０】
この時もまた、分割判断部１４１は、まず最初に、中間バッファ１３１に対して、ＩＮＦＯ部を出力信号生成部１３２に送ることを待機させる。
【００９１】
そして、この中間バッファ１３１がＩＮＦＯ部を出力信号生成部１３２に送ることを待機している間に、出力信号生成部１３２に対して、ＩＮＦＯ部のビット長Ｎに相当するビット長の先行ゼロ部を、何回かに分割してデータバス３０２に出力し、先行ゼロ部にバス幅未満の大きさの端数に相当するデータがある時には、それはそのまま残すように指示をする。本実施の形態では、上記のとおり、ＩＮＦＯ部のビット長Ｎは３２だけであると仮定しているので、１回でこの先行ゼロ部の全てをデータバス３０２に出力することができ、先行ゼロ部にバス幅未満の大きさの端数に相当するデータは残らない。
【００９２】
この先行ゼロ部の出力が終わると、次に、分割判断部１４１は、中間バッファ１３１に対して、ＩＮＦＯ部を出力信号生成部１３２に送るように指示をする。この指示に従って、中間バッファ１３１は、ＩＮＦＯ部を出力信号生成部１３２に送る。上記のとおり、このＩＮＦＯ部のデータ長Ｎもまた、３２ビットのみである。
【００９３】
そして、分割判断部１４１は、出力信号生成部１３２に対して、中間バッファ１３１から送られたＩＮＦＯ部を受け取り、先行ゼロ部のバス幅未満の端数に相当するデータの残りがある場合にはこの先行ゼロ部の残りと、その後ろに分離部である１ビットの「１」を付加し、さらにその後にＩＮＦＯ部のデータバス幅３２の整数倍を超えている部分を付加したものを、何回かに分割してデータバス３０２に出力するように指示をする。
【００９４】
本実施の形態では、上記のとおり、先行ゼロ部のバス幅未満の端数に相当するデータの残り部分は存在しない。また、ＩＮＦＯ部のデータ長Ｎは３２ビットであるから、ＩＮＦＯ部のデータバス３０２のバス幅３２の整数倍を超えている部分も存在しない。
【００９５】
従って、次に、分離部の１ビットの「１」だけがデータバス３０２に出力される。
【００９６】
そして次に、ＩＮＦＯ部の残り部分であるデータバス３０２のバス幅３２の整数倍の部分を、このバス幅３２ずつの大きさに分割し、データバス３０２に出力するように指示をする。
【００９７】
出力信号生成部１３２は、この指示に従って、ＩＮＦＯ部の残り部分、すなわち、中間バッファ１３１から受け取ったＩＮＦＯ部の全てを、データバス３０２のバス幅３２ずつに分割しながら、データバス３０２に出力する。本実施の形態では、ＩＮＦＯ部のデータ長は３２ビットであると仮定しているので、中間バッファ１３１から受け取ったＩＮＦＯ部の全てを、データバス３０２に１回で出力することができる。
【００９８】
このようにすることで、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの最大ビット長は６５ビットであるが、メモリ部１０３の内部に６５ビット長のバッファメモリやシフトレジスタ等を持つ必要が無く、Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置全体の回路規模を削減することが可能になる。
【００９９】
また、データバス３０２に対して、３２ビット長単位で出力可能であるので、後段の回路における処理も、他の符号化結果と共用のものを使用することができる。
【０１００】
なお、本実施の形態では、ＩＮＦＯ部のデータの最大長を３２ビット、Ｅｘｐ−Ｇｏｌｏｍｂ符号化されたデータの最大長を６５ビットと仮定して説明をしたが、このデータサイズよりも大きなデータサイズの時にも上記説明は同様に適用できるので、詳細な説明は省略をする。
【０１０１】
また、本実施の形態のＧｏｌｏｍｂ符号化装置１００が実行するのは、本発明のＧｏｌｏｍｂ符号化方法の１つの実施の形態であり、このＧｏｌｏｍｂ符号化装置１００は、図示しないが、マイクロコンピュータを始めとするコンピュータによって実現されることがあり、このコンピュータを制御してＧｏｌｏｍｂ符号化を実行させるのは、本発明のＧｏｌｏｍｂ符号化プログラムの１つの実施の形態である。また、この本発明のＧｏｌｏｍｂ符号化プログラムの１つの実施の形態であるプログラムはコンピュータ読み取り可能な情報記録媒体に記録され、この情報記録媒体は、本発明のＧｏｌｏｍｂ符号化プログラムを記録した情報記録媒体の１つの実施の形態である。
【産業上の利用可能性】
【０１０２】
本発明では、Ｈ．２６４／ＡＶＣにおいてシンタックス要素を符号化するために必要となる、Ｅｘｐ−Ｇｏｌｏｍｂ符号化を、簡単かつ小規模な集積回路によって実現することが可能になり、その産業上の利用可能性は極めて大きい。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施の形態の１つであるＥｘｐ−Ｇｏｌｏｍｂ符号化装置の全体概要図
【図２】本発明の実施の形態のＥｘｐ−Ｇｏｌｏｍｂ符号化装置のブロック構成図
【図３】ＩＮＦＯ部のデータ長が１５ビットを超えない時のデータ構造と出力方法の概要を示す図
【図４】ＩＮＦＯ部のデータ長が１６ビット以上で３１ビット以下の時のデータ構造と出力方法の概要を示す図
【図５】ＩＮＦＯ部のデータ長が３２ビットの時のデータ構造と出力方法の概要を示す図
【図６】従来のＥｘｐ−Ｇｏｌｏｍｂ符号化装置のブロック構成図
【図７】シンタックス要素データがＥｘｐ−Ｇｏｌｏｍｂ符号化される様子を示す図
【符号の説明】
【０１０４】
１００，８００    Ｅｘｐ−Ｇｏｌｏｍｂ符号化装置
１０２    Ｅｘｐ−Ｇｏｌｏｍｂ符号生成部
１０３    メモリ部
１０４    出力制御部
１２１，８０１    入力制御部
１２２，８０２    ｃｏｄｅＮｕｍ生成部
１２３，８０３    符号生成部
１２４，８２１    Ｕｎｓｉｇｎｅｄ部
１２５，８２２    Ｓｉｇｎｅｄ部
１２６，８２３    Ｍａｐｐｅｄ部
１３１，８０４    中間バッファ
１３２，８０５    出力信号生成部
１４１    分割判断部
２０１    プロセッサ
２１１    データ
２１２    コマンド
３０１，８０６    データバス
８１０    シンタックス要素データ
【図１】
2007295157.tif 000003
【図２】
2007295157.tif 000004
【図３】
2007295157.tif 000005
【図４】
2007295157.tif 000006
【図５】
2007295157.tif 000007
【図６】
2007295157.tif 000008
【図７】
2007295157.tif 000009