JP5083579B2 - 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム - Google Patents

復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム Download PDF

Info

Publication number
JP5083579B2
JP5083579B2 JP2010517811A JP2010517811A JP5083579B2 JP 5083579 B2 JP5083579 B2 JP 5083579B2 JP 2010517811 A JP2010517811 A JP 2010517811A JP 2010517811 A JP2010517811 A JP 2010517811A JP 5083579 B2 JP5083579 B2 JP 5083579B2
Authority
JP
Japan
Prior art keywords
prefix
length
decoding
address
suffix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010517811A
Other languages
English (en)
Other versions
JPWO2009157250A1 (ja
Inventor
希実 石原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010517811A priority Critical patent/JP5083579B2/ja
Publication of JPWO2009157250A1 publication Critical patent/JPWO2009157250A1/ja
Application granted granted Critical
Publication of JP5083579B2 publication Critical patent/JP5083579B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラムに関し、特に、H.264などの規定に基づいて符号化されたデータの復号を行うものであって、可変長符号を復号する復号処理装置などに関する。
一般に、画像およびオーディオの圧縮符号化装置では、入力される時間領域の信号を直交変換、たとえば、離散コサイン変換(DCT:Discrete Cosine Transform)により周波数領域の係数に変換して量子化した後、符号を割り当てる。この符号の割り当てでは、圧縮効率向上のため、発生頻度の確率に応じて符号長を変化させる可変長符号化を施すことが多い。
可変長符号化の例としては、H.264/AVC(MPEG−4AVC:Moving Picture Expert Group4 Part10 Advanced Video Coding)方式で用いられるCAVLC(Context−based Adaptive Variable Length Code:コンテキスト適応型可変長符号化方式)などが挙げられる。
CAVLCでは、量子化されたDCT係数を4×4ブロックごとに符号化を行い符号化ビットストリームを生成する。この符号化されたデータ列である符号化ビットストリームの復号を行う場合には、以下に示す4つの処理に分けて行うことができる。
1番目の処理では、4×4ブロックに出現する0でない係数の数(TC:Total Coefficient)と、4×4ブロックに出現する連続する±1の数(T1s:Trailing ones)を求める処理を行う。
2番目の処理では、0でない係数の値(レベル値)を求める処理を行う。
3番目の処理では、連続する0の係数の数(ラン)の総和を求める処理を行う。
4番目の処理では、自身のランを復号する際に残っているラン数を求める処理を行う。
これら4つの処理の中で、計算に時間がかかる処理は1番目の段階である、TCとT1sを求める処理である。
このようなCAVLCによる復号演算処理手法の関連技術として、例えば以下に示す特許文献1などが挙げられる。
特許文献1では、図41及び図42に示すようなテーブルを用いてTCとT1sを求める処理を行う。図41は、H.264のNumVLC0テーブルである。NumVLC0テーブルはTCと、T1sとをキーとして、符号が割り振られている。また、図42は、特許文献1に開示の、図41のテーブルに基づいて構築されたテーブルである。
特許文献1に開示された復号演算処理手法では、CAVLCで符号化されたTC、T1sを復号する際に、連続する0の数(プリフィックス長)とその後に続くバイナリコード(サフィックス)により内容が特定される、図42に示したテーブルを使用する。図42に示すテーブルの内容は、TC、T1sをペアとしたものである。
復号の際には、復号処理を行うコンピュータは、まずプリフィックス長を求める。次に、プリフィックスに続くサフィックスを求め、プリフィックス長とサフィックスを用いてテーブルを参照し、TC、T1sを求める。
この一連の処理においては、プリフィックス長やサフィックスを求めるために、ビットストリームから指定したビット幅のデータを切り出す操作(アンパッキング処理)が必要となる。アンパッキング処理を行う装置の一例が、特許文献2に記載されている。
図47は、特許文献2に開示された関連技術のプロセッサ1031に処理装置1032を組み込んだ構成を示す図である。
このプロセッサ1031は、5段のパイプラインを有し、命令を取り込むIFステージ,この命令をデコードし、コアレジスタ(Core Reg)からデータを取り出すREGステージ、数値演算ユニット(ALU)によるEXEステージ、バス(BUS)を解してメモリ1033との間でデータを入出力するMEMステージ、コアレジスタ(Core Reg)にデータを書き戻すWBステージにより構成される。
これにより命令、及びデータを順次転送して数値演算ユニット(ALU)により処理するようになされている。
また、プロセッサ1031は、REGステージにそれぞれ専用レジスタ(Reg)1034、EXEステージに演算器1035を設け、これら専用レジスタ(Reg)1034、演算器1035による処理装置1032が追加されるようになされている。
また、この追加の構成に対応して、プロセッサ1031は、専用レジスタ(Reg)1034から指定したビット幅のデータを切り出すアンパッキング命令が追加される。
また、特許文献3では、CAVLC部内のCAVLC処理部は、ストリームデータを格納したMビットバッファを有するデータアクセス回路に対して、所定の要求ビット数を付加したgetリクエストを発行し、データアクセス回路からデータを取得した上で「0係数」の個数を検出する。そして、CAVLC処理部は、不要なビットについては、ungetリクエストによりデータアクセス回路に返却する。
同様に、CAVLC処理部は、ストリームデータを格納したMビットバッファを有するデータアクセス回路に対して、所定の要求ビット数を付加したgetリクエストを発行し、データ取得回路からデータを取得した上で「0係数」の連続個数を検出する。そして、不要なビットについては、ungetリクエストによりデータアクセス回路に返却する(特許文献3の段落番号0108〜0114)。
このように、CAVLC処理部は、データアクセス回路のストリームデータから「0係数」の個数や「0係数」の連続個数を検出する毎に逐次データを取得し、返却するという前記「データの切り出し」処理を行う。
特開2007−49670号公報 特許第3772976号 特開2007−304797号公報
しかしながら、関連技術としての特許文献2に開示された処理装置においては、次のような課題がある。
すなわち、第1の課題は、アンパッキング命令で指定するビットの切り出し幅を決めるために、複数サイクル数が必要となるということである。
この問題が発生する原因は、ビットの切り出し幅がビットストリーム内のビットパターンに依存するために、ビットストリームからデータを読み出して、ビットパターンを調べなければならないことに起因する。
また、特許文献1によるCAVLCにおける復号処理を、特許文献2のプロセッサで処理を行おうとすると、以下の第2の課題が生じる。
すなわち、第2の課題は、復号結果を得るためのテーブル参照に必要なアドレス計算に、多くのサイクル数が必要となるということである。
この問題が発生する原因は、復号結果を得るためのテーブル参照に必要なアドレスを求めるために、まず、プリフィックス長からローインデックスを、サフィックスからはコラムインデックスを計算し、さらに、ローインデックスとコラムインデックスからテーブルを参照する復号用アドレスを計算しなければならないことに起因する。
第1及び第2の課題を、図48を用いて説明する。図48は、特許文献2に開示の処理装置に基づいて作成した、TC、T1sを復号する処理を示したタイムチャートである。
まず、第1クロックから第5クロックにかけては、プロセッサはローインデックスとサフィックス長を求める処理を行う。
具体的には、プロセッサがメモリからデータをロードし、プリフィックス長を計算し、求めたプリフィックス長からローインデックステーブルとサフィックス長テーブルを参照するアドレスを求め、ローインデックスとサフィックス長をテーブル参照により求める。
次に、第6クロックから第8クロックにかけては、プロセッサはサフィックスを上記読み出したデータから切り出し、コラムインデックスを求める処理を行う。具体的には、ALUが上記読み出したデータの、プリフィックス部をマスクして消去し、データをシフトしてサフィックスのみを取り出し、コラムインデックスを計算する。
第9クロックから第10クロックにかけては、プロセッサはTCとT1sの復号を行う。具体的には、数値演算ユニット(ALU)が上記までの処理で求めたローインデックスとコラムインデックスから復号用アドレスを計算し、そのアドレスを用いたロード処理によりTCとT1sを求める。
最後に、第11クロックから第13クロックにかけて、プロセッサは、図47の専用レジスタ(Reg)1034を更新する処理を行う。
具体的には、数値演算ユニット(ALU)がプリフィックス長とサフィックス長を加算して更新するビット量を計算し、ビット読み出し命令によって、専用レジスタ(Reg)1034を更新する。
このように、特許文献2に開示の処理装置においては、全サイクル数の半分以上が、プリフィックス長の計算やアドレスの計算などにかかってしまう。
また、特許文献3でもCAVLC処理部がデータの切り出しを逐次行う必要があったため、前記同様の課題が生じる。
本発明の目的は、CAVLCのTC、T1sの符号化に代表される可変長符号の復号に必要なサイクル数を低減可能ならしめる復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラムを提供することにある。
上記目的を達成するため、本発明の復号処理装置は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置であって、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第1の制御手段と、前記第1の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第1の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第2の制御手段と、を含み、前記第2の制御手段が、前記復号用アドレスを生成する処理と、前記第1の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを行うことを特徴としている。
本発明のプロセッサは、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置を搭載したパイプライン処理を実行可能なプロセッサであって、プロセッサパイプライン処理におけるレジスタステージにおいて、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第1の制御手段と、前記プロセッサパイプライン処理における実行ステージにおいて、前記第1の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第1の制御手段に対し前記可変長符号ビットストリームを更新する制御情報を生成する第2の制御手段と、を含み、前記第2の制御手段が、前記復号用アドレスを生成する処理と、前記第1の制御手段の前記可変長符号ビットストリームを更新する処理とを行うことを特徴としている。
本発明の復号処理方法は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理方法であって、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第1の制御をし、続いて、前記ビットストリーム一時保持部から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第2の制御をし、前記第2の制御をする際に、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを行うことを特徴としている。
本発明の復号処理プログラムは、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行うコンピュータが諸機能を実現可能な復号処理プログラムであって、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第1の制御機能と、前記ビットストリーム一時保持部に保持された前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する制御情報を生成する第2の制御機能と、を含む機能を前記コンピュータに実現させ、前記第2の制御機能では、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを行う機能を前記コンピュータに実現させることを特徴としている。
本発明によれば、プリフィックスとサフィックスとに基づいた復号用アドレスの生成処理と、可変長符号ビットストリームの更新処理とを行うことにより、次の復号に備えることができ、可変長符号の復号に必要なサイクル数を低減できる。
以下、本発明の実施形態の一例について、図面を参照して具体的に説明する。
〔第1の実施の形態〕
(プロセッサの全体構成)
先ず、本実施形態の係る復号処理装置を備えたプロセッサの具体的構成について、全体構成から説明し、続いて各部の詳細構成について説明することとする。図1は、本発明における第1実施形態に係る復号処理装置を備えたプロセッサの全体の概略構成の一例を示すブロック図である。
図1に示す本実施形態のプロセッサシステム1は、メモリ10と、メモリ10とバスBusを介して接続されたプロセッサ20とを有する。
本実施形態におけるプロセッサ20は、図47に示すプロセッサから処理装置1032に代えて、ビット格納器52、制御情報・ローインデックス生成器53、復号用アドレス生成器54を有する復号処理装置50(可変長符号復号装置)を備えている。
復号処理装置50は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号するものである。
この復号処理装置50は、プロセッサパイプライン処理におけるREGステージにおいてビットストリームを格納し、このビットストリームを読み進める機能を持つビット格納器52と、プロセッサパイプライン処理におけるEXEステージにてローインデックス及びビット格納器52がバッファを制御するための情報を生成する制御情報・ローインデックス生成器53と、制御情報・ローインデックス生成器53から情報を受け取って、アドレスを生成する復号用アドレス生成器54と、を含む構成としている。
プロセッサ20は、復号処理装置50を搭載してパイプライン処理を実行可能なものであり、この構成では5段のパイプラインを有し、命令をIFユニット21に取り込むIFステージ、この命令をデコードし、コアレジスタ(Core Reg)22からデータを取り出すREGステージ、数値演算ユニット(ALU)23によるEXEステージ、バス(BUS)を介してメモリ10との間でデータを入出力するMEMステージ、コアレジスタ(Core Reg)22にデータを書き戻すWBステージでの処理をそれぞれ実行する。
ここで、前記IFステージは、Instruction Fetchステージ(インストラクションフェッチステージ)の略称であり、前記IFステージでは、IFユニット(命令メモリ)21が、メモリ10から命令を取り込む処理を行う。
前記REGステージは、Registerステージ(レジスタステージ)の略称であり、前記REGステージでは、数値演算ユニット(ALU)23が、コアレジスタ(Core Reg)22からデータを取り出す処理を行う。
前記EXEステージは、Executionステージ(実行ステージ)の略称であり、前記EXEステージでは、数値演算ユニット(ALU)23が演算処理を行う。
前記MEMステージは、Memoryステージ(メモリステージ)の略称であり、前記MEMステージでは、Load/Store Unit24が、バス(BUS)を介してメモリ10との間でデータを入出力する処理を行う。
前記WBステージは、Write Backステージ(ライトバックステージ)の略称であり、前記WBステージでは、コアレジスタ(Core Reg)22がデータを格納する処理を行う。
以上の各ステージに命令、及びデータを順次転送して、数値演算ユニット(ALU)23による処理が実行される。
さらに、プロセッサ20は、各ステージの境界毎にプロセッサパイプラインレジスタ31A、31B、31C、31Dをそれぞれ有する。
(ビット格納器の詳細構成)
図2を用いて、図1に示すビット格納器52について詳細を説明する。
ビット格納器52は、ビットバッファコントローラ61と、ビットバッファコントローラ61により制御されるビットバッファ62とを有している。
ビットバッファコントローラ61は、IFステージから受け渡される入力信号INST_CNTLにより動作する。
INST_CNTLがビットバッファ62の初期化を示す命令である場合、ビットバッファコントローラ61は、前記命令内に示されたアドレスを用いて、メモリ10からデータを読み込み、その読み込んだデータをビットバッファ62に格納する。
さらに、ビットバッファコントローラ61は、メモリ10から読んだデータ分だけ命令内で示されたアドレスを進め、そのアドレスまで読み進めたビットストリーム(データ)をビットバッファ62に格納する。
INST_CNTLが可変長符号の復号処理を行う命令である場合、ビットバッファコントローラ61は、ビットバッファ62から読み出したデータREG_DATAを出力すると同時に、そのデータREG_DATAに出力ビット幅BIT_WIDTHを付加して出力する。
また、ビットバッファコントローラ61は、制御情報・ローインデックス生成器53内のテーブルを選択するSEL_TAB信号を出力する。この出力SEL_TABには、INST_CNTLの復号処理命令にて指定されたレジスタから読み出された値が用いられる。
ビットバッファコントローラ61は、ビットバッファ62を更新する命令INST_UPDを受け取ると、INST_UPDにて指定されたビット数だけ、ビットバッファ62内に格納されているビットストリームのデータをシフトさせることにより、ビットバッファ62内に格納されるビットストリームのデータを更新する。
ビットバッファコントローラ61がビットバッファ62からデータを読み出す際、ビットバッファコントローラ61が、ビットバッファ62に格納されたデータのビット数が少ないと判断した場合、ビットバッファコントローラ61は、前記少ないと判断したビット数のデータをビットバッファ62に補充することにより、ビットの補充処理を行う。
ここで、ビット数が少ないと判断する場合とは、ビットバッファ62に書き込むデータのビット数が読み出すデータのビット数より少ない場合をいう。その判断条件は、特定期間におけるビットバッファ62のデータの格納ビット数が、ビットバッファ62の格納可能容量の例えば3分の1以下にすることが好ましい。
より具体的には、例えば96ビット等のビットバッファに対して例えば32ビット以下等となる場合にビット補充を行う。
ビットバッファコントローラ61がビット補充処理を行うことにより、ビットバッファ62からのデータ(可変長ビットストリーム)の読み出し処理が停止することを防止し、復号処理における高速化に寄与できる。
ビット補充処理を行う際、ビットバッファコントローラ61は初期化を行う命令を実行した際に保持したアドレスを用いて命令MEM_LOADを発行し、メモリ10から新しいビットデータを取得する。メモリ10から読み出されたビットデータは、図2に示すMEM_STとしてビットバッファ62に入力して、そのビットバッファ62に格納される。
(制御情報・ローインデックス生成器の詳細構成)
図3に、図1の制御情報・ローインデックス生成器53の詳細な構成を示す。
制御情報・ローインデックス生成器53は図3に示すように、4段のパイプライン構成となっており、ビットバッファ62から読み出したデータREG_DATAのプリフィックス長を計数するプリフィックス計数器71と、前記計数したプリフィックス長から後述のテーブルを参照するためのアドレスを生成するプリフィックスアドレス生成器72と、ローインデックスを格納した複数のテーブルからなるローインデックステーブル(第1テーブル)群73と、サフィックス長を格納した複数のテーブルからなるサフィックス長テーブル(第2テーブル)群74と、ローインデックステーブル群73のうちの選択されたテーブルからプリフィックスアドレスに基づいて対応するローインデックスを取得する取得部77と、サフィックス長テーブル群74のうちの選択されたテーブルからプリフィックスアドレスに基づいて対応するサフィックス長を取得する取得部78と、プリフィックス長と取得部78にて取得されたサフィックス長を加算する加算器76と、プリフィックス長とサフィックス長とビットバッファ62から読み出したデータREG_DATAと、入力したBIT_WIDTHから制御情報の一例である図2に示すビットバッファ62を更新する命令を生成する更新命令生成器75とを有している。なお、ローインデックステーブル(第1テーブル)群73とサフィックス長テーブル(第2テーブル)群74とは記憶部に記憶されており、前記取得部77と78は、前記記憶部にそれぞれアクセスすることにより、前記ローインデックステーブル(第1テーブル)群73からの前記ローインデックスと前記サフィックス長テーブル(第2テーブル)群74からの前記サフィックス長をそれぞれ取得する。制御情報・ローインデックス生成器53は、制御情報とローインデックスとを生成する。
さらに、制御情報・ローインデックス生成器53は、各パイプラインステージの境界毎にパイプラインレジスタ81A、81B、81Cをそれぞれ有する。
図3の装置の動作について説明する。
制御情報・ローインデックス生成器53において、1段目のパイプラインステージにおいて、ビットバッファ62から読み出されたデータREG_DATAがプリフィックス計数器71に入力すると、プリフィックス計数器71は、前記REG_DATAのプリフィックス長を計数する。プリフィックス計数器71は、前記計数したREG_DATAのプリフィックス長をパイプラインレジスタ81Aに出力する。
2段目のパイプラインステージにおいて、制御情報・ローインデックス生成器53は次の動作を行う。すなわち、計数したプリフィックス長がパイプラインレジスタ81Aを介してプリフィックスアドレス生成器72に入力すると、プリフィックス生成器72は、前記計数されたプリフックス長に基づいて、ローインデックステーブル群73及びサフィックス長テーブル群74を参照するアドレスを計算する。プリフィックス生成器72は、前記アドレスをパイプラインレジスタ81Bに出力する。
3段目のパイプラインステージにおいて、制御情報・ローインデックス生成器53は次の動作を行う。すなわち、前記計算されたアドレスの情報がパイプラインレジスタ81Bを介して取得部77と取得部78とに入力すると、前記取得部77は、ビットバッファコントローラ61からのテーブル選択信号SEL_TABと前記アドレスとに基づいて、ローインデックステーブル群73にアクセスしてローインデックスを得る。同様に、前記取得部78は、ビットバッファコントローラ61からのテーブル選択信号SEL_TABと前記アドレスとに基づいて、サフィックス長テーブル群74にアクセスしてサフィックス長を得る。
前記取得部77は、前記取得したローインデックスをパイプラインレジスタ81Cに通してROW_INDEXとして出力する。
4段目のパイプラインステージにおいて、制御情報・ローインデックス生成器53は次の動作を行う。すなわち、加算器76は、前記プリフィックス計数器71が計数したプリフィックス長と、前記取得部78が取得したサフィックス長とを得て、前記プリフィックス長と前記サフィックス長とを加算して、復号する符号の符号長COD_WIDTHを得る。
次に、制御情報・ローインデックス生成器53は次の動作を行う。すなわち、更新命令生成器75は、前記取得部78が取得したサフィックス長と、前記プリフィックス計数器71が計数したプリフィックス長と、前記ビットバッファ62から読み出されたデータREG_DATAと、前記ビットバッファコントローラ61から出力された出力ビット幅BIT_WIDTHとを得て、これらの情報に基づいて、図2のビットバッファ62を更新する命令INST_UPDを生成する。
ローインデックステーブル群73の内容は、命令UPD_ROWにより更新される。命令UPD_ROWが実行されると、REGステージにおいて、コアレジスタ(Core Reg)の中から命令内で指定したレジスタのデータが読み出され、テーブルを更新する内容と、更新するテーブル、及び更新する位置を示すアドレスのデータが得られる。
続くEXEステージにおいて命令UPD_ROWに基づいて、REGステージで読み出したデータを用いてローインデックステーブルを更新する。
また、サフィックス長テーブル群74は、命令UPD_SUFに基づいて、前記ローインデックステーブル群73と同様の方法で更新される。
(復号用アドレス生成器の詳細構成)
図4に、図1の復号用アドレス生成器54の詳細を示す。
図4に示す復号用アドレス生成器54は、REG_DATA、COD_WIDTH、BIT_WIDTHを入力として、REG_DATAのビットを調整してコラムインデックスを生成するビット調整・コラムインデックス生成器91と、生成されたコラムインデックスと入力したROW_INDEXを加算する加算器92とから構成され、復号用アドレスADDRESSを生成して出力する。
ここで、ビット調整・コラムインデックス生成器91は、図5のフローチャートに記載された処理を行う。
ビット調整・コラムインデックス生成器91は、まず図5のステップS101において、COD_WIDTH(プリフィックス長とサフィックス長とを加算したもの)とBIT_WIDTH(ビットバッファから出力される可変長符号ビットストリームのビット数)の差分を求める(差分算出ステップないしは差分算出機能)。
ここでは結果をXとする。
次に、ビット調整・コラムインデックス生成器91は、ステップS102において、REG_DATAをXだけ右シフトする(プリフィックス及びサフィックスデータ抽出ステップないしはプリフィックス及びサフィックスデータ抽出機能)。
ここで、結果をSH_DATAとする。これにより、ビット調整を行うことができる。
最後に、ビット調整・コラムインデックス生成器91は、ステップS103において、SH_DATAからコラムインデックスCOL_INDEXを求めて出力する(コラムインデックス算出ステップないしはコラムインデックス算出機能)。
ビット調整・コラムインデックス生成器91は、ビット調整を行い、これに加えて、ビット調整・コラムインデックス生成器91は、コラムインデックスを生成する。
ここで、本実施の形態のビット格納器52は、「第1の制御手段」の一例ということもできる。さらに、本実施の形態の制御情報・ローインデックス生成器53と復号用アドレス生成器54と生成器用パイプラインレジスタ55とにより、「第2の制御手段51」の一例を構成することもできる。
また、本実施の形態のビットバッファ62は、「ビットストリーム一時保持部」の一例ということもできる。さらに、本実施の形態のビットバッファコントローラ61は、「ビット制御部」の一例ということもできる。
さらに、本実施の形態の制御情報・ローインデックス生成器53は、「第1の生成制御部」の一例ということもできる。また、本実施の形態の復号用アドレス生成器54は、「第2の生成制御部」の一例ということもできる。
さらにまた、本実施の形態の取得部77及び取得部78により、「テーブル情報取得部」の一例を構成することもできる。さらに、本実施の形態の更新命令生成器75は、「更新命令生成部」の一例ということもできる。また、本実施の形態のプリフィックス計数器71は、「プリフィックス計数部」の一例ということもできる。さらに、本実施の形態のプリフィックスアドレス生成器72は、「プリフィックスアドレス計算部」の一例ということもできる。
さらに、本実施の形態のビット調整・コラムインデックス生成器91は、「コラムインデックス生成部」の一例ということもできる。また、本実施の形態の加算器92は、「加算部」の一例ということもできる。
この「第1の制御手段」は、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御することができる。
また、「第2の制御手段」は、前記プロセッサパイプライン処理における実行ステージにおいて、前記第1の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第1の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給することができる。この場合、前記第2の制御手段が、前記復号用アドレスを生成する処理と、前記第1の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを行うことができる。
さらに、前記第2の制御手段は、前記復号用アドレスを生成する処理と、前記第1の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを同時に行うことが好ましい。
その理由は、各処理を同時に行うことにより、各処理を逐次的に行う場合に比してサイクル数が低減し、処理速度の向上が図れるからである。
ここで、複数の処理を「同時に行う」とは、複数の処理を並列的に行う場合を含む。さらに、複数の処理を「同時に行う」場合には、コンピュータの処理ライクに「擬似的に並行して行う」場合を含むことができる。
また、複数の処理を同時に行う場合に限らず、複数の処理が同時にスタートし、各処理終了のタイミングがそれぞれ異なるようしてもよい。
さらには、各処理の各スタートのタイミングがそれぞれ異なり、各処理の各終了のタイミングがそれぞれ異なる場合であってもよい。
さらにまた、各処理は逐次実行であってもよい。
以降、本明細書における「同時に行う」ことが可能な制御では、いま述べた種々の形態の制御手法を包含することもできるものとする。
このようにして、先ず、プロセッサのビット格納器52が前記可変長符号ビットストリームの一部を保持する処理を行う。
そして、プロセッサの制御情報・ローインデックス生成器53(第1の生成制御部)が、前記プロセッサパイプライン処理における実行ステージにおいて、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを、ローインデックステーブルを参照することにより生成するとともに、プリフィックス長に対応したサフィックス長をサフィックス長テーブルを参照することにより生成する。
さらに、プロセッサの制御情報・ローインデックス生成器53が、前記プロセッサパイプライン処理における実行ステージにおいて、これらを生成した後に前記制御情報の一例であるビット格納器52内の可変長符号ビットストリームを更新する更新命令を生成する。
次に、プロセッサの復号用アドレス生成器54(第2の生成制御部)が、前記プロセッサパイプライン処理における実行ステージにおいて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する。
ここで、前記制御情報・ローインデックス生成器53は、前記ローインデックスと前記サフィックス長の生成後に、前記第2の生成制御部における復号用アドレスを生成する処理と、前記第1の制御手段における前記可変長符号ビットストリームを更新する処理とを同時に(単位クロック期間に並行して)実行させることができる。
また、前記制御情報・ローインデックス生成器53内では、前記プリフィックス長に応じたプリフィックスアドレスとローインデックスとを格納した第1テーブル(ローインデックステーブル)と、前記プリフィックス長に応じたプリフィックスアドレスとサフィックス長とを格納した第2テーブル(サフィックス長テーブル)と、を有することができる。
この場合、前記制御情報・ローインデックス生成器53内ではプリフィックス計数器71が、プロセッサパイプライン処理における実行ステージ内であって、インデックス生成パイプライン処理における第1ステージにて、前記第1の制御手段から読み出された前記可変長符号ビットストリームの前記プリフィックス長を計数する。
そして、前記制御情報・ローインデックス生成器53内ではプリフィックスアドレス生成器72が、前記インデックス生成パイプライン処理における第2ステージにて、前記プリフィックス計数部にて計数した前記プリフィックス長から前記第1テーブル、前記第2テーブルを参照するためのプリフィックスアドレスを計算する。
さらに、前記制御情報・ローインデックス生成器53内では取得部77、78が、前記インデックス生成パイプライン処理における第3ステージにて、前記プリフィックスアドレス計算部にて求めた前記プリフィックスアドレスを用いて、前記第1テーブルと前記第2テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得する。
また、前記制御情報・ローインデックス生成器53内では更新命令生成器75が前記インデックス生成パイプライン処理における第4ステージにて、前記取得部77、78にて取得された前記サフィックス長と前記プリフィックス計数部にて計数した前記プリフィックス長とビットバッファ62から読み出したデータREG_DATAと前記ビットバッファコントローラ61から出力された出力ビット幅BIT_WIDTHに基づいて、前記更新する制御情報である更新命令を生成する。
さらに、復号用アドレス生成器54のビット調整・コラムインデックス生成器91は、前記サフィックス長に基づいて前記コラムインデックスを生成し、加算器92は、前記コラムインデックスと前記ローインデックスとを加算して復号用アドレスとする。
ここで、前記「第1の制御手段」は、前記可変長符号ビットストリームを一時保持するビットストリーム一時保持部と、前記ビットストリーム一時保持部における前記可変長符号ビットストリームを入出力制御するビット制御部と、を含むことができる。
この場合、前記ビット制御部が、前記ビットストリーム一時保持部にて保持した前記可変長符号ビットストリームから予め決められたビット数のビットデータを読み出し、読み出し後の残りビット数が少ない場合に、新たなデータを保持した前記可変長符号ビットストリームの一部の末尾に連接して格納するビット補充機能と、前記更新する制御情報である更新命令に基づいて保持した前記可変長符号ビットストリームを更新する処理を行う更新処理機能と、を有することができる。
さらに、前記第1テーブル及び前記第2テーブルは、コンテキスト適応型可変長符号化方式における復号用NumVLCテーブルの種類に応じた複数のテーブルを各々有することができる。
この場合、前記第1の制御手段が、前記種類を選択するテーブル選択制御情報を生成して前記第1の生成制御部(制御情報・ローインデックス生成器)に対して供給することができる。また、前記テーブル情報取得部が、前記テーブル選択制御情報に基づいて、前記第1のテーブルにおける前記複数のテーブルの中からいずれか一つを選択するとともに、前記第2のテーブルにおける前記複数のテーブルの中からいずれか一つを選択することができる。
以上のように本実施の形態によれば、プリフィックスに基づいた復号用アドレスの生成処理と、ビット格納制御手段の更新処理とを同時に行え、次の復号に備えることができ、可変長符号の復号に必要なサイクル数を低減できる。
より具体的には、第1の効果は、プリフィックス長、サフィックス長、ビットバッファ62から読み出したデータREG_DATAに基づいたビットバッファの更新を復号用アドレスの生成と同時に行え、次の復号に備えることができることである。
その理由は、本発明の可変長復号装置内に、プリフィックス長とサフィックス長とビットバッファ62から読み出したデータREG_DATAからビットバッファを更新する命令を生成する更新命令装置を設けたことにより、プリフィックス長、サフィックス長が判明した後、ビットバッファの更新を復号用アドレス生成と同時に行うことができるためである。
第2の効果は、可変長符号の復号に必要なサイクル数を低減でき、復号処理速度の高速化を図ることができる。
その理由は、ビットストリームのビットパターンを自動で調べてプリフィックス長、サフィックス、復号用アドレスを求める回路を設けたことにより、データの読み出しのビットパターンの調査に必要なサイクル数が低減されるからである。
すなわち、ビットストリーム内のビットパターンによって、アンパッキング命令で指定するビット幅を自動的に決定し、符号コードを復号するためのテーブル参照で使用するアドレスを生成できる。
このように、ビットストリームのプリフィックスを計数し、プリフィックスをキーとしたローインデックステーブル及びサフィックス長テーブルからそれぞれローインデックス、サフィックス長を読み出し、プリフィックス長とサフィックス長とビットバッファ62から読み出したデータREG_DATAを元にビットストリームからサフィックスを切り出し、コラムインデックスを求め、ローインデックスとコラムインデックスを加算して出力することにより、復号用アドレスを得る。同時に、プリフィックス長とサフィックス長を元に、ビットストリームを格納したビットバッファを更新でき、復号処理速度の高速化を図ることができる。
[第2の実施の形態]
次に、本発明にかかる第2の実施の形態について、図6及び図7に基づいて説明する。以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図6は、本発明の第2の実施の形態による制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
上述の第1の実施の形態では、制御情報・ローインデックス生成器は、複数のテーブルからなるローインデックステーブル群、サフィックス長テーブル群を有する構成としたが、本実施の形態における制御情報・ローインデックス生成器では、単一のローインデックステーブル及び単一のサフィックス長テーブルを有する構成としている。
具体的には、本実施の形態の制御情報・ローインデックス生成器153は、図6に示すように、単一のローインデックステーブル173と、単一のサフィックス長テーブル174と、これらの各テーブルからデータを取得する取得部177、178とを含む構成としている。
これに伴い、制御情報・ローインデックス生成器153では、テーブル選択信号SEL_TABは不要となり、前記第1の実施の形態の制御情報・ローインデックス生成器53からテーブル選択信号SEL_TABが削除された構成となっている。
図7に、制御情報・ローインデックス生成器に伴って変更されるビット格納器のブロック図を示す。
第2の実施形態によるビット格納器152は、第1の実施形態と同様の入出力から、テーブル選択信号SEL_TABが削除された構成となっている。すなわち、ビットバッファコントローラ161は、テーブル選択信号を出力しない構成となる。
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、そのプログラム(ソフトウエアプログラム)をコンピュータに実行させてもよい。
[第3の実施の形態]
次に、本発明にかかる第3の実施の形態について、図8乃至図23に基づいて説明する。ここでは前記第1の実施形態のさらに詳細な具体例を第3の実施形態として説明する。
ビット格納器52を構成するビットバッファ62は、例えば96ビット等のレジスタにて構成される。
また、ビット格納器52における入力INST_CNTLは、例えば16ビットを入力することができるように構成される。
図8に示すように、入力INST_UPDは、6ビット、入力MEM_STは、32ビット、出力REG_DATAは、32ビット、出力SEL_TABは、2ビット、出力BIT_WIDTHは、6ビット、出力MEM_LOADは、40ビットで構成される。
メモリから読み出されたビットストリームは、ビットバッファ62の左端がビットストリームの先頭となるように格納される。
ここで、出力SEL_TABに関して、SEL_TABの値、0、1、2はそれぞれローインデックス及びサフィックス長テーブルの0番目、1番目、2番目のテーブルを選択するものとする。
(INST_UPDについて)
INST_UPD(ビットバッファの更新命令)の本実施の形態における内容を図11に記載の例を用いて説明する。
INST_UPDは、図11に記載のとおり、先頭1ビットを制御情報として使用し、先頭1ビットを除いた5ビットを更新するビット数データとして使用する。
ビットバッファコントローラは、制御情報が1のときにビットバッファの更新を行い、0のときには何も行わない。
図11の例では、制御情報が1のため、ビットバッファの更新が行われ、後続のビット数更新データに示されたビット数である7ビット分、ビットバッファが左シフトにより更新される。
(INST_CNTLについて)
プロセッサからの命令INST_CNTLについて本実施の形態における構成例を図13に示す。
図12に示されたDEC_CODE命令、図13に示されたINITIALIZE命令は16ビット幅の命令である。
DEC_CODE命令(復号開始命令)は、8ビットのオペランドコードOPCODE、生成されたアドレスを格納するレジスタ番号を指定する3ビットのREGNUM1と、SEL_TABに出力する値を格納したレジスタを指定する3ビットのREGNUM2と、2ビットの0とから構成される。
この命令は、前記の可変長復号処理を開始する命令であり、この命令によってビットバッファコントローラ61は、ビットバッファ62から32ビットのデータをロードしてREG_DATAに出力し、読み出したビット数すなわち32をBIT_WIDTHに出力し、さらに、REGNUM2で指定されたレジスタから読み出した値をSEL_TABに出力する。
また、命令実行の結果について、REGNUM1で指定したレジスタに結果のアドレスが格納されて返される。
INITIALIZE命令(初期化命令)は、8ビットのオペランドコードOPCODE、メモリアドレスが格納されたレジスタ番号を指定する3ビットのREGNUMと5ビットの0から構成され、復号処理装置を初期化する操作を行う。
INITIALIZE命令が発行されると、メモリのREGNUMで指定されたレジスタが格納するアドレスからデータを96ビット分ロードし、ビットバッファ62にデータを格納する。
また、REGNUMで指定したレジスタが持つアドレスを96ビット分だけ進めたアドレスを、ビットバッファコントローラ61が保持する。
(ビット補充処理について)
また、ビットバッファ62の本実施の形態におけるビット補充方法について説明する。
本実施の形態においては、DEC_CODE命令を受け取り、ビットバッファ62から32ビットのデータを読み出した後、ビットバッファ62に格納されているビット数から32ビットを引いたビット数が32ビットを下回った場合に、ビットバッファコントローラ61はビット補充処理を行う。
ビット補充処理は、ビットバッファコントローラ61が保持するアドレスを用いてビット補充命令MEM_LOADを発することにより行う。
図14にMEM_LOAD命令(ビット補充命令)の概要を示す。
MEM_LOADは、ロード命令であることを示す8ビットのオペランドコードOPCODEと、ビットバッファ62が保持するアドレスを示すADDRESSフィールドを持つ。
また、メモリから読み出した32ビットのデータは入力MEM_STを通じてビットバッファコントローラに受け渡される。
ビットバッファコントローラ61は、このMEM_LOAD命令を用いて32ビットのデータをロードし、ロードした分だけビットバッファコントローラ61が保持するアドレスを進める。
さらに、ビットバッファコントローラ61は、入力MEM_STから得たデータを、ビットバッファ62が保持するデータの末尾に追加する。
従って、例えば図15に示すB1、B2、B3、B4のように、ビット補充が行われる。
(制御情報・ローインデックス生成器について)
制御情報・ローインデックス生成器53は、図9に示すように、プリフィックス計数器71の出力は4ビット、プリフィックスアドレス生成器72の出力は32ビットである。
ローインデックステーブル群73は、テーブル0、テーブル1、テーブル2の3つのテーブルを持ち、出力は例えば32ビットである。
サフィックス長テーブル群74は、テーブル0、テーブル1、テーブル2の3つのテーブルをもち、出力は例えば3ビットである。
制御情報・ローインデックス生成器53の出力COD_WIDTHは、6ビットである。
プリフィックス計数器71の概要について図16を用いて説明する。図16に示したコードは、ビットバッファ62から読み出され、プリフィックス計数器に入力されたデータである。
今、図16に示したコードはプリフィックスとして5個の連続する0を持っている。
本実施の形態におけるプリフィックス計数器71は、この連続する0の数を数え、プリフィックス長を5として出力する。
ここで、本実施の形態においては連続する0をプリフィックスとしたが、連続する1をプリフィックスとしても差し支えない。
ローインデックステーブル群73とサフィックス長テーブル群74内のテーブルについて、本実施の形態における構成方法を図17および図18に示したテーブル0の構成を例として説明する。
図17のローインデックステーブル0と図18のサフィックス長テーブル0は、図40のテーブルに基づいて構成されており、ローインデックステーブルでは、0から14のプリフィックス長とローインデックスが、サフィックス長テーブルでは、0から14のプリフィックス長とサフィックス長が対応付けられている。
ここで、本実施の形態におけるローインデックステーブル郡73及びサフィックス長テーブル郡74のテーブル1、テーブル2については、H.264のNumVLC1テーブル(例えば図43、図44)、NumVLC2テーブル(例えば図45、図46)から、NumVLC0テーブルと同様の方法で構築されるものとする。
本実施の形態においては、これら3つのテーブルを必要に応じて、適宜切り替えて使用するものとする。これは、H.264のCAVLCがNumVLCテーブルを適宜選択して復号を進めるためである。
また、ローインデックステーブル群73及びサフィックス長テーブル群73を更新するUPD_ROW命令(ローインデックステーブルの更新命令)、UPD_SUF命令(サフィックス長テーブルの更新命令)について図19及び図20を用いて説明する。
UPD_ROW命令及びUPD_SUF命令は、それぞれ、32ビットの命令であり、それぞれ、オペランドを示す8ビットのOPCODEとテーブルの更新する位置を示すアドレスを格納したレジスタを指定するREGNUM1、更新する内容を格納したレジスタを示すREGNUM2、テーブルを選択する内容を格納したレジスタを示すREGNUM3フィールドを有する。
また、テーブルを参照するアドレスを生成するプリフィックスアドレス生成器72について、アドレスの生成方法を説明する。
図17及び図18に示したとおり、テーブルのアドレスはプリフィックス長に対応しており、プリフィックスが1増加すれば、アドレスは4増加するようになっている。
よって、本実施の形態のプリフィックスアドレス生成器は入力したプリフィックス長を2ビット左シフトすることによって、アドレスを生成する。
(復号用アドレス生成器について)
復号用アドレス生成器54の本実施の形態における構成を述べる。
ビット調整・コラムインデックス生成器91は、図10に示すように、32ビットの出力であり、出力されたコラムインデックスは入力ROW_INDEXと加算され、32ビットの復号用アドレスとして出力される。
次に、本実施の形態におけるビット調整・コラムインデックス生成器91について図5を用いて動作を説明する。
まず、図5のステップS101において、ビット調整・コラムインデックス生成器91は、入力されたBIT_WIDTHとCOD_WIDTHの差分をとり、結果をXとする(差分算出ステップないしは差分算出機能)。
続く、ステップS102において、ビット調整・コラムインデックス生成器91は、入力されたREG_DATAをXだけ右シフトし、結果をSH_DATAとする(プリフィックス及びサフィックスデータ抽出ステップないしはプリフィックス及びサフィックスデータ抽出機能)。
最後に、ステップS103においてビット調整・コラムインデックス生成器91は、コラムインデックスCOL_INDEXを計算する。ここで、本実施の形態ではSH_DATAを、2ビット左シフトすることにより32ビットのアドレスに変換する。
ビット調整・コラムインデックス生成器91は、このアドレスをコラムインデックスCOL_INDEXとして出力する(コラムインデックス算出ステップないしはコラムインデックス算出機能)。
(プログラム例について)
本実施の形態における復号処理装置のプログラム例を図21及び図22に示す。図21は、CAVLCのTC、T1sを復号するための処理手順の一例を示すフローチャートである。図22は、CAVLCのTC、T1sを復号するアセンブラコードの例である。
図21に示すように、先ず、プロセッサは、NumVLCの種類に応じた複数種のローインデックステーブルの中からいずれか一つのローインデックステーブルを選択し、選択されたローインデックステーブルを更新する処理を行う(ステップS210)。
続いて、プロセッサは、NumVLCの種類に応じた複数種のサフィックス長テーブルの中からいずれか一つのサフィックス長テーブルを選択し、選択されたサフィックス長テーブルを更新する処理を行う(ステップS220)。
さらに、プロセッサは、可変長符号復号装置(復号処理装置)を初期化する処理を行う(ステップS230)。
次に、プロセッサは、全ての4×4ブロックの復号処理が完了したか否かを判定する処理を行う(ステップS240)。
プロセッサは、この判定処理の結果が「Yes」の場合には、処理を終了する。一方、プロセッサは、この判定処理の結果が「No」の場合には、次のステップS250に処理を進める。
すなわち、プロセッサは、1つの4×4ブロックにおけるTC、T1sを復号する処理を行う(ステップS250)。
そして、プロセッサは、1つの4×4ブロックにおけるその他の復号処理を行う(ステップS260)。プロセッサは、この1つの4×4ブロックにおける復号処理が完了すると、ステップS240に戻り、他の4×4ブロックにおける復号処理を行うために、ステップS240〜ステップS260を繰り返す。
以下、以上のべた図21に示すフローチャートのより具体的な処理手順について、図22に示すプログラムコード例を参照して説明する。
まず図22で使用する命令について説明する。
プログラム1行目の「Load dp3++,r0;」は、プロセッサが、アドレスが格納されたレジスタdp3を利用してメモリにアクセスしてデータを取得し、取得したデータをレジスタr0に格納し、さらに、レジスタdp3に格納されたアドレスを4バイト分進める命令である。
また、Loop r3は、プロセッサが、レジスタr3に格納された値だけ、Loop命令から繰り返し終端までに記述された処理を繰り返す命令である。
なお、繰り返し終端は、命令Loop endで記述される。
本例の前提として、r2には、プロセッサが、テーブルを選択する値を格納する。
レジスタr3には、プロセッサが、繰り返しの回数、すなわち、4×4ブロックの数を格納する。
レジスタdp1には、プロセッサが、可変長符号ビットストリームの先頭アドレスを格納する。
レジスタdp3には、プロセッサが、ローインデックステーブルの更新内容を示すメモリ内のデータのアドレスを格納する。
レジスタdp4には、プロセッサが、ローインデックステーブルの更新する位置を示すデータのアドレスを格納する。
レジスタdp5には、プロセッサが、サフィックステーブルの更新内容を示すデータのアドレスを格納する。
レジスタdp6には、プロセッサが、サフィックステーブルの更新する位置を示すデータのアドレスを格納する。
プログラムの内容を説明する。
はじめに、プロセッサがローインデックステーブルの更新を行う(ステップS210)。更新の第1、2命令、すなわち、図22のプログラム1、2行目では、プロセッサがローインデックステーブルの内容と、更新する位置を示すアドレスをメモリから読み込む(ステップS211、S212)。
3行目の命令では、プロセッサがUPD_ROW命令を用いて、ローインデックスを更新する(ステップS213)。
4、5行目の命令では、プロセッサが、次のローインデックステーブルの内容と、更新する位置を示すアドレスをメモリから読み込む(ステップS214、S215)。
プロセッサがこれらの処理を繰り返し、ローインデックステーブルの更新が終わると、次は、プロセッサがサフィックス長テーブルの更新を同様の処理手順で行う(ステップS220)。
すなわち、プログラム6、7行目では、プロセッサが、サフィックス長テーブルの内容と、更新する位置を示すアドレスをメモリから読み込む(ステップS221、S222)。
8行目の命令では、プロセッサが、UPD_SUF命令を用いて、サフィックス長を更新する(ステップS223)。
9、10行目の命令では、プロセッサが、次のサフィックス長テーブルの内容と、更新する位置を示すアドレスをメモリから読み込む(ステップS224、S225)。
サフィックステーブルの更新が終わると、プロセッサはINITIALIZE命令で復号処理装置を初期化する(ステップS230)。
初期化後、プロセッサは復号を開始する。
復号処理ではまず、プロセッサが、プログラム12行目で示されたLoop命令を使って、Loop以下の命令をレジスタr3に格納された値だけ、すなわち、4×4ブロックの数だけ繰り返すことを宣言する(ステップS240)。
次の命令では、プロセッサが、可変長符号を復号する命令を実行し、復号用アドレスを計算して結果をレジスタdp2に格納する(ステップS251)。
さらに、プロセッサが、レジスタdp2に格納されたアドレスを用いてデータをロードし、TCとT1sをメモリから得て、レジスタr0に格納する(ステップS252)。
その後、プロセッサが、H.264におけるその他復号処理を行って(ステップS260)、15行目に示されたLoop end命令によって、繰り返し処理を終了する。
このとき、プロセッサが、r3に示す値だけ繰り返し処理が行われていると判断した場合には、プロセッサはLoopを抜けて、次の処理に移る。また、プロセッサが、r2に示す値だけ繰り返し処理が行われていないと判断した場合には、プロセッサはLoop先頭に戻って、繰り返して処理を行う。
(動作について)
次に、図23のタイミングチャートを用いて、DEC_CODE命令による本発明の可変長符号の復号処理装置の動作を説明する。図23は、クロック信号に同期して動作する可変長符号の復号処理装置の、各クロックにおける各部の出力を示す。
まず、第1クロック(第1の期間)においては、プロセッサが可変長符号ビットストリームの復号開始命令DEC_CODEを実行する(ステップS11)(復号開始命令実行処理ステップないしは復号開始命令実行処理機能)。
第2クロック(第2の期間)において、ビット格納器52のビットバッファコントローラ61は、IFステージから命令INST_CNTLを受け取り、ビット読み出し処理を行い、ビットバッファ62からREG_DATAに出力する(ステップS12)(可変長符号ビットストリーム出力処理ステップないしは可変長符号ビットストリーム出力処理機能)。
第3クロック(第3の期間)においては、制御情報・ローインデックス生成器53のプリフィックス計数器71がREG_DATAに含まれるプリフィックスを計数する(ステップS13)(プリフィックス計数ステップないしはプリフィックス計数機能)。
第4クロック(第4の期間)においては、制御情報・ローインデックス生成器53のプリフィックスアドレス生成器72が、プリフィックス長を入力として、ローインデックステーブル群73、サフィックス長テーブル群74を参照するアドレスを生成する(ステップS14)(プリフィックスアドレス生成ステップないしはプリフィックスアドレス生成機能)。
第5クロック(第5の期間)においては、プリフィックスアドレス生成器72により計算されたアドレスとテーブルを選択する信号(テーブル選択信号)を入力として、制御情報・ローインデックス生成器53の取得部77が選択されたローインデックステーブルを参照し、プリフィックスアドレスに対応するローインデックスを取得する(ローインデックス取得ステップないしはローインデックス取得機能)。
また、同時に、制御情報・ローインデックス生成器53の取得部78が選択されたサフィックス長テーブルを参照し、プリフィックスアドレスに対応するサフィックス長を取得する(サフィックス長取得ステップないしはサフィックス長取得機能)。
つまり、制御情報・ローインデックス生成器53の取得部77、78が、ローインデックスとサフィックス長とを同時に(単位クロック期間に並行して)取得する(ステップS15)(テーブル情報取得ステップないしはテーブル情報取得機能)。
第6クロック(第6の期間)においては、制御情報・ローインデックス生成器53の更新命令生成器75が、プリフィックス長とサフィックス長とREG_DATA、及びビットバッファコントローラ61から出力された出力ビット幅を受け取り、ビットバッファ62のデータを更新する更新命令を生成する(ステップS16)(ビットバッファの更新命令生成ステップないしはビットバッファの更新命令生成機能)。
第7クロック(第7の期間)においては、ビットバッファコントローラ61が、更新命令生成器75から生成された更新命令を入力としてビットバッファ62に対する更新処理を行い、ビットバッファ62のデータが更新される(ビットバッファの更新処理ステップないしはビットバッファの更新処理機能)。
同時に、復号用アドレス生成器54がコラムインデックスを生成し、生成したコラムインデックスをローインデックスと加算して出力する(ステップS17)(コラムインデックスローインデックス加算ステップ又は復号用アドレス算出ステップ、ないしはコラムインデックスローインデックス加算機能又は復号用アドレス算出機能)。
このように、制御情報・ローインデックス生成器53により、復号用アドレスを生成する処理と、ビットバッファ62に保持される可変長符号ビットストリームを更新する処理とを同時に(単位クロック期間に並行して)行うことができる。
第8クロック(第8の期間)において、プロセッサは、復号用アドレス生成器54が生成した復号用アドレスを入力として復号用テーブルの参照を行い、可変長符号化されたTCとT1sが復号される(ステップS18)(TC・T1s復号処理ステップないしはTC・T1s復号処理機能)。
ここで、以上のステップS13ないしステップS17により、「前記制御情報・復号用アドレス生成制御ステップ」を構成することができる。また、以上のステップS13ないしステップS16により、「前記制御情報・ローインデックス生成ステップ」を構成することができる。さらに、ステップS17により、「復号用アドレス生成(出力)ステップ」を構成することができる。また、ステップS12により、「ビット格納処理ステップ」を構成することができる。
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、そのプログラムをコンピュータに実行させてもよい。
[第4の実施の形態]
次に、本発明にかかる第4の実施の形態について、図24乃至図30に基づいて説明する。ここでは前記第2の実施形態のさらに詳細な具体例を第4の実施形態として説明する。また、第1の実施の形態と同様の構成の箇所については、説明を省略する。
本実施の形態の制御情報・ローインデックス生成器153では、図24に示すように、ローインデックステーブル173は1つのテーブルからなる。同様に、サフィックス長テーブル174は1つのテーブルからなる。
この変更により、テーブルを選択する信号SEL_TABは不要となる。
また、図25に示すように、ビット格納器152におけるビットバッファコントローラ161の出力にもテーブルを選択する信号SEL_TABは不要となる。
ここで、本実施の形態において定義されるDEC_CODE命令を図26に示す。
本実施の形態のDEC_CODE命令では、前記第3の実施の形態におけるDEC_CODE命令の構成からテーブルを選択する信号を含んだレジスタを指定する部分REG_NUM2が消去され、代わりに0値が格納される構成となっている。
さらに、第2の実施の形態において定義されるUPD_ROW及びUPD_SUF命令を図27および図28に示す。
本実施の形態のUPD_ROW及びUPD_SUF命令は、16ビットの命令であり、8ビットのオペランドOPCODEと、テーブルの更新する位置を示すアドレスを格納したレジスタを指定するREGNUM1と、更新する内容を格納したレジスタを示すREGNUM2と、2ビットの0と、から構成される。
(プログラム例)
本実施の形態における復号処理装置のプログラム例を図29及び図30に示す。図29は、CAVLCのTC、T1sを復号するための処理手順の一例を示すフローチャートである。図30は、CAVLCのTC、T1sを復号するアセンブラコードの例である。
本プログラムと第3の実施の形態で示したプログラムの違いは、複数種のローインデックステーブルの中からいずれか一つのローインデックステーブルを選択する必要がない点である。また、複数種のサフィックス長テーブルの中からいずれか一つのサフィックス長テーブルを選択する必要がない点である。
図29に示すように、先ず、プロセッサは、ローインデックステーブルを更新する処理を行う(ステップS310)。
続いて、プロセッサは、サフィックス長テーブルを更新する処理を行う(ステップS320)。
さらに、プロセッサは、可変長符号復号装置(復号処理装置)を初期化する処理を行う(ステップS330)。
次に、プロセッサは、全ての4×4ブロックの復号処理が完了したか否かを判定する処理を行う(ステップS340)。
プロセッサは、この判定処理の結果が「Yes」の場合には、処理を終了する。一方、プロセッサは、この判定処理の結果が「No」の場合には、次のステップS350に処理を進める。
すなわち、プロセッサは、1つの4×4ブロックにおけるTC、T1sを復号する処理を行う(ステップS350)。
そして、プロセッサは、1つの4×4ブロックにおけるその他の復号処理を行う(ステップS360)。プロセッサは、この1つの4×4ブロックにおける復号処理が完了すると、ステップS340に戻り、他の4×4ブロックにおける復号処理を行うために、ステップS340〜ステップS360を繰り返す。
以下、以上のべた図29に示すフローチャートのより具体的な処理手順について、図30に示すプログラムコード例を参照して説明する。
本例では前提として、レジスタr3には、プロセッサが、繰り返しの回数、すなわち、4×4ブロックの数を格納する。
レジスタdp1には、プロセッサが、可変長符号ビットストリームの先頭アドレスを格納する。
レジスタdp3には、プロセッサが、ローインデックステーブルの更新内容を示すメモリ内のデータのアドレスを格納する。
レジスタdp4には、プロセッサが、ローインデックステーブルの更新する位置を示すデータのアドレスを格納する。
レジスタdp5には、プロセッサが、サフィックステーブルの更新内容を示すデータのアドレスを格納する。
レジスタdp6には、プロセッサが、サフィックステーブルの更新する位置を示すデータのアドレスを格納する。
本プログラムと第3の実施の形態で示したプログラムの違いについて説明する。
まず、ローインデックステーブル、サフィックス長テーブルを更新するUPD_ROW、及びUPD_SUF命令について、命令で指定するレジスタは更新する位置と更新に使用する値を格納したレジスタ2つとなっている(ステップS313、ステップS323)。
また、復号命令DEC_CODEについても同様に、第3の実施の形態のDEC_CODE命令からテーブルを選択する信号を除いたものとなっている(ステップS351)。
他のステップS311、S312、S314、S315、S321、S322、S324、S325、S330、S340、S352、S360は、前記第3の実施の形態におけるS211、S212、S214、S215、S221、S222、S224、S225、S230、S240、S252、S260と同様となっている。
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、そのプログラムをコンピュータに実行させてもよい。
[その他の各種変形例]
また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。
ここで、その他の実施の形態について説明する。
(変形例1)
まず、プリフィックスの計数について、第3、第4実施の形態では制御情報・ローインデックス生成器内にプリフィックス計数器を設け、それを用いて計数を行っていたが、ビットバッファコントローラがこれを行うこともできる。
すなわち、図31に示すように、ビット格納器252のビットバッファコントローラ261は、ビット補充機能、更新処理機能に加え、プリフィックス計数機能(プリフィックス計数部)を有している。
この場合、ビットバッファ262に格納されているビットデータのプリフィックスを、あらかじめビットバッファコントローラ261が計数しておき、復号処理命令の実行によりビットデータがビットバッファ262から読み出されると同時に計数したプリフィックス長(例えば4bit)を出力する。
この構成では、図32に示すように、制御情報・ローインデックス生成器253ではプリフィックス計数器は不要となる。
また、制御情報・ローインデックス生成器253では、3段のパイプライン構成で済み、生成器用パイプラインレジスタ281B、281Cのみの構成でよい。
その他の構成であるプリフィックスアドレス生成器272、ローインデックステーブル群273、サフィックス長テーブル群274と、取得部277、取得部278、加算器276、更新命令生成器275は、前記実施の形態と同一となっている。
(変形例2)
さらに、計数したプリフィックス長をそのまま用いて、テーブル参照を行うこともできる。この構成の場合、図33に示すように、制御情報・ローインデックス生成器353では、プリフィックスアドレス生成器は不要となる。
制御情報・ローインデックス生成器353の取得部377は、ローインデックステーブル群373のうちの選択されたテーブルからプリフィックス長に基づいて対応するローインデックスを取得する。
また、制御情報・ローインデックス生成器353の取得部378は、サフィックス長テーブル群374のうちの選択されたテーブルからプリフィックス長に基づいて対応するサフィックス長を取得する。
その他の構成である加算器376、更新命令生成器375は、前記実施の形態と同一となっている。
また、この場合、図34に示すように、プリフィックスアドレス生成のための期間(図22のステップS14)も不要となり、前記第3の実施の形態におけるS11、S12、S13、S15、S16、S17、S18と同様のS21、S22、S23、S25、S26、S27、S28の7クロック分で済む。
(変形例3)
さらに、復号用アドレス生成器で行っていた、復号用のアドレス生成を、制御情報・ローインデックス生成器の4段目のパイプラインステージ、すなわち、更新命令の生成と同時に行うことも可能である。
この場合、図35に示すように、復号用アドレス生成器453を制御情報・ローインデックス生成器453内に搭載することができる。
その他の構成であるプリフィックス計数器471、プリフィックスアドレス生成器472、ローインデックステーブル群473、サフィックス長テーブル群474、取得部477、取得部478、加算器476、更新命令生成器475、生成器用パイプラインレジスタ481A、481B、481Cは、前記実施の形態と同一となっている。
(変形例4)
上述のような構成を有する復号処理装置における各部の処理は、方法としても実現可能であり、復号処理方法としての各種の処理手順について、図36を参照しつつ説明する。図36は、本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。
本実施の形態に係る復号処理方法は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理をコンピュータ(例えばプロセッサなど)が行うものを対象とするものである。
この復号処理方法では、例えば、上述の実施の形態の図22におけるステップS251の詳細処理手順の一例ということもできる。
この復号処理方法は、基本的手順として、先ず、コンピュータが、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第1の制御をする(例えば図36に示すステップS401のビット格納制御ステップなど)。
すなわち、コンピュータが、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持する処理を行う。
次に、コンピュータが、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第1の生成制御を行う(例えば図36に示すステップS402の制御情報・ローインデックス生成ステップなど)。
続いて、コンピュータが、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第2の生成制御を行う(例えば図36に示すステップS403の復号用アドレス生成ステップなど)。
ここで、前記制御情報・ローインデックス生成ステップでは(第1の生成制御をする際には)、前記ローインデックスと前記サフィックス長の生成後に、前記第2の生成制御における復号用アドレスを生成する処理と、前記第1の制御における前記可変長符号ビットストリームを更新する処理とを同時に(単位クロック期間に並行して)実行させることができる。
<制御情報・ローインデックス生成ステップ>
図36に示す制御情報・ローインデックス生成ステップS402の詳細処理手順の一例を図37に示す。図37は、本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。
まず、前記プリフィックス長に応じたローインデックスを格納した第1テーブルと、前記プリフィックス長に応じたサフィックス長を格納した第2テーブルと、を設けておく。
そして、コンピュータが、前前記可変長符号ビットストリームの前記プリフィックス長を計数する(ステップS501)(プリフィックス計数ステップないしはプリフィックス計数機能)。
続いて、コンピュータが、前ステップS501の前記プリフィックス計数ステップにて計数した前記プリフィックス長から前記第1テーブル、前記第2テーブルを参照するためのプリフィックスアドレスを計算する(ステップS502)(プリフィックスアドレス計算ステップないしはプリフィックスアドレス計算機能)。
次いで、コンピュータが、前ステップS502の前記プリフィックスアドレス計算ステップにて求めた前記プリフィックスアドレスを用いて、前記第1テーブルと前記第2テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得する(ステップS503)(テーブル情報取得ステップないしはテーブル情報取得機能)。
さらに、コンピュータが、前ステップS503の前記テーブル情報取得ステップにて取得された前記サフィックス長とステップS501の前記プリフィックス計数ステップにて計数した前記プリフィックス長とREG_DATAとに基づいて、ビット格納制御手段の前記可変長符号ビットストリームを更新する制御情報である更新命令を生成する(ステップS504)(更新命令生成ステップないしは更新命令生成機能)。
<復号用アドレス生成ステップ>
図36に示す復号用アドレス生成ステップS403詳細処理手順の一例を図38を示す。図38は、本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。
先ず、コンピュータが、前前記プリフィックス長、前記サフィックス長、ビット格納制御手段の前記可変長符号ビットストリームのビット数及びそのビットストリームに基づいて、前記復号用アドレスを求めるためのコラムインデックスを生成する(ステップS601)(コラムインデックス生成ステップないしはコラムインデックス生成機能)。
この具体的例は、前記実施の形態の図5に示す処理を行う。
そして、コンピュータが、前ステップS601でのコラムインデックスと、ステップS503での前記ローインデックスとを加算し、復号用アドレスを生成する(ステップS602)(コラムインデックスローインデックス加算ステップないしはコラムインデックスローインデックス加算機能)。
一方、コンピュータが、これらのステップS601、ステップS602と並行して(同時に)、ステップS504での更新命令に基づいて、ビット格納制御手段の前記可変長符号ビットストリームを更新する処理を実行する(ステップS603)(ビット格納更新処理ステップないしはビット格納更新処理機能)。
ここで、以上のステップS402とステップS403とにより、「第2の制御ステップ」を構成できる。
この「第2の制御ステップ」では、コンピュータが、前記ビットストリーム一時保持部から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第2の制御をすることができる。
また、前記第2の制御をする際に、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを同時に行うことができる。
(変形例5)
また、上述の実施の形態では、復号処理装置をプロセッサに搭載した構成例を示したが、図39に示すように、復号処理装置単独による構成も可能である。
すなわち、復号処理装置550は、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第1の制御手段(例えば図39に示す符号552のビット格納器など)と、前記第1の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第1の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第2の制御手段(例えば図39に示す符号551など)とを含む構成としている。
この第2の制御手段551が、前記復号用アドレスを生成する処理と、前記第1の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを同時に(例えば単位クロック期間に並行して)行うことができる。
このような構成の復号処理装置では、プリフィックスとサフィックスとに基づいた復号用アドレスの生成処理と、第1の制御手段の更新処理とを同時に行え、次の復号に備えることができ、可変長符号の復号に必要なサイクル数を低減できる。
また、第2の制御手段551は、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する処理動作を制御する制御情報・ローインデックス生成器553(第1の生成制御部)と、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する処理動作を制御する復号用アドレス生成器554(第2の生成制御部)とを含む構成としている。
この場合、前記制御情報・ローインデックス生成器553が、前記ローインデックスと前記サフィックス長の生成後に、前記復号用アドレスを生成する処理と、前記第1の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを同時に(例えば単位クロック期間に並行して)行うことができる。
(変形例6)
さらに、上述の実施の形態における復号処理装置とプロセッサとを分けて構成することもできる。
この場合、図40に示すように、プロセッサ620におけるプロセッサ制御部625が、復号開始命令(DEC_CODE)生成機能625a、ビットバッファの更新命令(INST_UPD)生成機能625b、ビット補充命令(MEM_LOAD)生成機能625c、ローインデックステーブルの更新命令(UPD_ROW)生成機能625d、サフィックス長テーブルの更新命令(UPD_SUF)生成機能625e、初期化命令(INITIALIZE)生成機能、などを有することもできる。
復号処理装置650は、前記実施の形態と同様に、ビット格納器652(第1の制御手段)、制御情報・ローインデックス生成器653(第1の生成制御部)、復号用アドレス生成器654(第2の生成制御部)を有することができる。制御情報・ローインデックス生成器653及び復号用アドレス生成器654により第2の制御手段651を構成できる。復号処理装置650は、プロセッサ620の復号開始命令(DEC_CODE)がビット格納器652に入力することによって復号処理が開始される。また、プロセッサ620の他の各種命令に基づいて復号処理装置650が各種処理を実行する場合についても、前記実施の形態と同様に処理を行うことができる。
ここで、例えば図39に示すブロック図における一部の各ブロックは、コンピュータが適宜なメモリに格納された各種プログラムを実行することにより、該プログラムにより機能化された状態を示すソフトウエアモジュール構成であってもよい。
すなわち、物理的構成は例えば一又は複数のCPU(或いは一又は複数のCPUと一又は複数のメモリ)等ではあるが、CPUにプログラムを実行させることによりソフトウェア上で図39に示す構成を実現するようにしてもよい。
以上に示した各部(手段)の説明は、プログラムにより機能化されたコンピュータをプログラムの機能と共に説明したものと解釈することも出来るし、また、固有のハードウェアにより恒久的に機能化された複数の電子回路ブロックからなる装置を説明したものとも解釈することが出来る。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現でき、いずれかに限定されるものではない。
また、各部は、通信可能な専用のコンピュータからなる装置としてそれぞれ構成し、これらの各装置によりシステムを構成してもよい。逆に、各部を単一の装置として構成したシステムであってもよい。
さらに、各部を回路として構成する場合には、半導体集積回路、光集積回路あるいはそれらの組み合わせなど種々の集積回路にて構成してよい。
本発明の一実施形態に係るプロセッサにおいては、ビットストリームの一部を保持し、それを制御する手段を有するビット格納器と、ビットストリームを入力として、ビットストリームのプリフィックスに応じて、可変長符号の復号に必要なテーブル参照に用いるアドレス、すなわちローインデックスと、プリフィックス長に対応したサフィックス長を生成し、また、前記ビット格納器を制御する情報を生成する手段を有する制御情報・ローインデックス生成器と、プリフィックス長とサフィックスから復号に必要なテーブルを参照するアドレスを生成する手段を有する復号用アドレス生成器を備えることができる。
前記のビット格納器は、保持したビットストリームからあらかじめ決められたビット数のビットデータを読み出し、読み出した後の残りビット数が少ない場合、メモリから新たにデータを読み出し、保持したビットストリームの一部の末尾に連接して格納する手段と、前記ビット格納器を制御する情報に基づいて、保持したビットストリームを更新する手段とを有するように構成してよい。
前記の制御情報・ローインデックス生成器は、プリフィックス長に対応した、可変長符号の復号に必要なテーブル参照に用いるアドレス、すなわちローインデックスを格納したテーブルと、プリフィックス長に対応したサフィックス長を格納したテーブルとを有し、前記ビット格納器から読み出されたビットストリームのプリフィックスを計数する手段と、計数したプリフィックスから前記テーブルのアドレスを計算する手段と、前記プリフィックス長から求めたアドレスを用いて、前記ローインデックスを格納したテーブルと、前記サフィックス長を格納したテーブルを参照して、ローインデックスとサフィックス長を得る手段と、プリフィックス長及びサフィックス長から前記ビット格納器を更新する制御情報を生成する手段を有するように構成してよい。
前記復号用アドレス生成器は、前記ビット格納器から読み出されたデータのサフィックスを求め、前記サフィックスから計算される可変長符号の復号に必要なテーブル参照に用いるアドレス、すなわちコラムインデックスを計算する手段と、ローインデックスとコラムインデックスを加算する手段を有するように構成してよい。
またさらに、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。
すなわち、上記実施の形態では、1つのプロセッサに復号処理装置が1つ備える場合を示したが、本発明は、これらの個数を制限するものではない。例えば、複数のプロセッサで1つの復号処理装置を処理する構成や、一つのプロセッサで複数の復号処理装置を処理する構成であってもよい。
さらには、1つのプロセッサの場合、パイプラインプロセッサを用いたが、複数のプロセッサの場合、パイプラインプロセッサ以外のプロセッサを用いても良い。
また、パイプラインプロセッサは、並列処理の無い場合、並列度kの並列処理の有る場合(スーパースケーラ)のいずれであってもよい。
また、上記実施の形態では4×4ブロックサイズを単位として復号処理を行う場合を例に説明したが、他の種々のブロックサイズを単位として復号処理を行う場合であってもよい。
例えば、H.264で用いられる2×2サイズのブロックであってもよい。2×2サイズのブロックの復号処理では、2×2サイズ用のNumVLCテーブルを用いて復号を行うことと、ブロック係数の復号に必要な繰り返し回数以外は、4×4サイズのブロックの復号処理と同等の処理となる。
さらに、符号化処理がCAVLC方式に従うならば、ブロックサイズにかかわりなく、上記実施の形態の手法を用いることができる。
また、上述のようなプロセッサが搭載されるデコーダを含む電子機器としては、HDDレコーダやDVDプレーヤのようなデジタル方式の動画再生装置、その他の各種通信装置などが挙げられる。また、デスクトップ、ラップトップコンピュータ、その他無線・有線通信機能を有する情報機器、情報家電機器(テレビ・携帯音楽プレーヤ・ゲーム機)、またはこれに類するコンピュータなどいかなるコンピュータに搭載する場合でもよく、移動式・固定式を問わない。
各種通信装置としては、パーソナルコンピュータに限らず、各種サーバ、EWS(エンジニアリングワークステーション)、中型コンピュータ、メインフレーム、携帯型情報端末、各種モバイル端末、PDA、携帯電話機、ウエアラブル情報端末、種々のテレビ・DVDレコーダ・各種音響機器、各種情報通信機能を搭載した家電機器、ネットワーク機能を有するゲーム機器等としても構わない。
(復号処理プログラム)
また、前述した実施形態の機能を実現する本発明の復号処理プログラムは、前述した各実施の形態における各種ブロック図などに示された処理部(処理手段)、機能などに対応したプログラムや、フローチャートなどに示された処理手順、処理手段、機能などに対応したプログラムや、各種テーブルを利用するプログラムなどにおいて各々処理される各処理プログラム、本明細書で全般的に記述される方法(ステップ)、説明された処理、データの全体もしくは各部を含む。
具体的には、本発明の一実施形態における復号処理プログラムは、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行うコンピュータが諸機能を実現可能なものである。
この復号処理プログラムは、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第1の制御機能と、前記ビットストリーム一時保持部に保持された前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する制御情報を生成する第2の制御機能(制御情報・復号用アドレス生成制御機能)と、を含む機能を前記コンピュータに実現させることができる。
この場合、前記第2の制御機能(制御情報・復号用アドレス生成制御機能)では、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを同時に又は逐次的に行う機能を前記コンピュータに実現させることができる。
また、この復号処理プログラムは、前記制御情報・復号用アドレス生成制御機能では、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する制御情報・ローインデックス生成機能(第1の生成制御機能)と、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する処理動作を制御する復号用アドレス生成機能(第2の生成制御機能)とを含む機能を前記コンピュータに実現させることができる。
この場合、前記制御情報・ローインデックス生成機能(第1の生成制御機能)では、前記ローインデックスと前記サフィックス長の生成後に、前記復号用アドレスを出力する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを同時又は逐次的に行う制御機能を前記コンピュータに実現させることができる。
さらに、この復号処理プログラムでは、前記プリフィックス長に応じたローインデックスを格納した第1テーブルと、前記プリフィックス長に応じたサフィックス長を格納した第2テーブルと、を設けておくことができる。
この場合、この復号処理プログラムでは、前記制御情報・ローインデックス生成機能(第1の生成制御機能)において、前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数機能と、前記プリフィックス計数機能にて計数した前記プリフィックス長から前記第1テーブル、前記第2テーブルを参照するためのプリフィックスアドレスを計算するプリフィックスアドレス計算機能と、前記プリフィックスアドレス計算機能にて求めた前記プリフィックスアドレスを用いて、前記第1テーブルと前記第2テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得機能と、前記テーブル情報取得機能にて取得された前記サフィックス長と前記プリフィックス計数機能にて計数した前記プリフィックス長とに基づいて、前記更新する制御情報である更新命令を生成する更新命令生成機能とを含む機能を前記コンピュータに実現させることができる。
プログラムは、高水準プロシージャ型またはオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイラ型またはインタープリタ型言語であってもよく、プログラムの形態を問わない。
プログラムを供給する手法としては、電気通信回線(有線、無線を問わない)によってコンピュータと通信可能に接続された外部の機器から前記電気通信回線を通じて提供することも可能である。
本発明の復号処理プログラムによれば、当該復号処理プログラムを格納するROM等の記憶媒体から、当該復号処理プログラムをコンピュータ(CPU)に読み込んで実行させれば、或いは、当該復号処理プログラムを、通信手段を介してコンピュータにダウンロードさせた後に実行させれば、上述した本発明に係る装置を比較的簡単に実現できる。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用される。
また、プログラムは、一次複製品、二次複製品などの複製段階については問はない。プログラムの供給方法として通信回線を利用して行なう場合であれば通信回線が伝送媒体となって本発明が利用されることになる。さらに、装置における従属請求項は、方法、プログラムにおいて従属請求項に対応した構成にすることも可能である。
(情報記録媒体)
また、上述のプログラムを、情報記録媒体に記録した構成であってもよい。情報記録媒体には、上述のプログラムを含むアプリケーションプログラムが格納されており、コンピュータが当該情報記録媒体からアプリケーションプログラムを読み出し、当該アプリケーションプログラムをハードディスクにインストールすることが可能である。これにより、上述のプログラムは、磁気記録媒体、光記録媒体あるいはROMなどの情報記録媒体に記録してプログラムを提供することができる。そのようなプログラムが記録された情報記録媒体を、コンピュータにおいて使用することは、好都合な情報処理装置を構成する。
プログラムを供給するための情報記録媒体としては、例えばROM、RAM、フラッシュメモリやSRAM等の半導体メモリ並びに集積回路、あるいはそれらを含むUSBメモリやメモリカード、光ディスク、光磁気ディスク、磁気記録媒体等を用いてよく、さらに、フレキシブルディスク、CD−ROM、CD―R、CD―RW、FD、DVDROM、HDDVD(HDDVD−R−SL<1層>、 HDDVD−R−DL<2層>、HDDVD−RW−SL、HDDVD−RW−DL、HDDVD−RAM−SL)、DVD±R−SL、DVD±R−DL、DVD±RW−SL、DVD±RW−DL、DVD−RAM、Blu−Ray Disk<登録商標>(BD−RーSL、BD−R−DL、BD−RE−SL、BD−RE−DL)、MO、ZIP、磁気カード、磁気テープ、SDカード、メモリスティック、不揮発性メモリカード、ICカード、等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置、等に記録して構成して用いてよい。
さらに「情報記録媒体」は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの(伝送媒体ないしは伝送波)、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。
また、上述の実施の形態のプロセッサ、復号処理装置をシステムとして構成してもよい。この「システム」を、他の「システム」と統合したシステムとして、これら全体を本発明の「システム」として構成することも一向に構わない。
その場合における「システム」とは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない。このような場合、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
さらに、本明細書において、フローチャートに示されるステップは、記載された手順に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。また、実装では、プログラム手順(ステップ)が実行される順序を変更することができる。さらに、実装の必要に応じて、本明細書で説明した特定の手順(ステップ)を、組み合わされた手順(ステップ)として実装、除去、追加、または再配置することができる。
さらに、装置の各手段、各機能、各ステップの手順の機能などのプログラムの機能を、専用のハードウェア(例えば専用の半導体回路等)によりその機能を達成してもよく、プログラムの全機能のうち一部の機能をハードウェアで処理し、全機能のうちさらに他の機能をソフトウェアで処理するようにしてもよい。専用のハードウェアの場合、各部を集積回路例えばLSIにて形成されてもよい。これらは個別に1チップ化されても良いし、一部または全部を含むように1チップ化されても良い。また、LSIには、他の機能ブロックが含まれていても良い。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
さらに、前記復号用アドレスを出力する処理と、前記ビット格納制御手段の前記可変長符号ビットストリームを更新する処理とを同時に行うように制御する手法は、必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、方法にかかる発明も、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。この場合、方法を実現するための一例として復号処理装置、プロセッサなども含めることができる。
ところで、このような復号処理装置、プロセッサは、単独で存在する場合もあるし、ある機器(例えば復号処理装置を含むプロセッサがデコーダや電子機器の機能として組み込まれているなど)に組み込まれた状態で利用されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものである。従って、ソフトウェアであったりハードウェアであったりするなど、適宜、変更可能である。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用されるといわざるをえない。
さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合であってもよく、一部を記憶媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。本発明をソフトウェアで実現する場合、ハードウェアやオペレーティングシステムを利用する構成とすることも可能であるし、これらと切り離して実現することもできる。
また、発明の範囲は、図示例に限定されないものとする。
さらに、上記各実施の形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。つまり、上述の各実施の形態同士、あるいはそれらのいずれかと各変形例のいずれかとの組み合わせによる例をも含む。この場合において、本実施形態において特に記載しなくとも、各実施の形態及びそれらの変形例に開示した各構成から自明な作用効果については、当然のことながら実施の形態の作用効果として含めることができる。逆に、本実施の形態に記載されたすべての作用効果を奏することのできる構成が、本発明の本質的特徴部分の必須構成要件であるとは限らない。また、実施の形態に示される全構成要件から幾つかの構成要件が削除された構成による実施の形態並びにその構成に基づく技術的範囲も発明になりうる。
そして、各実施の形態及びそれらの変形例を含むこれまでの記述は、本発明の理解を容易にするために、本発明の多様な実施の形態のうちの一例の開示、すなわち、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、例証するものであり、制限するものではなく、適宜変形及び/又は変更が可能である。本発明は、その技術思想、またはその主要な特徴に基づいて、様々な形で実施することができ、各実施の形態及びその変形例によって本発明の技術的範囲が限定的に解釈されてはならないものである。
従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。
この出願は2008年6月23日に出願された日本出願特願2008−163161を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、復号処理装置全般に適用可能であり、より詳細には、デジタル方式の動画再生装置などのプロセッサといった用途に適用できる。
本発明の第1の実施の形態における復号処理装置を備えたプロセッサの全体構成の一例を示すブロック図である。 本発明の第1の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。 本発明の第1の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。 本発明の第1の実施の形態の復号処理装置におけるアドレス生成器の詳細構成の一例を示すブロック図である。 本発明の第1の実施の形態の復号処理装置におけるビット調整・コラムインデックス生成器の処理動作の一例を示すフローチャートである。 本発明の第2の実施の形態の復号処理装置における制御情報・ローインデックス生成器の一例を示すブロック図である。 本発明の第2の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。 本発明の第3の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。 本発明の第3の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。 本発明の第3の実施の形態の復号処理装置におけるアドレス生成器の詳細構成の一例を示すブロック図である。 本発明の第3の実施の形態の復号処理装置におけるINST_UPD(更新命令)の内容の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置における追加される命令の一つであるDEC_CODEの内容の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置における追加される命令の一つであるINITIALIZEの内容の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるMEM_LOADの内容の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるビットバッファのビット補充処理の概要の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるプリフィックス計数器の処理概要の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるローインデックステーブルの一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるサフィックス長テーブルの一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるローインデックステーブルを更新する命令の内容の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置におけるサフィックス長テーブルを更新する命令の内容の一例を示す説明図である。 本発明の第3の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示すフローチャートである。 本発明の第3の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示す説明図である。 本発明の第3の実施形態の復号処理装置における動作の詳細手順の一例を示すタイミングチャートである。 本発明の第3の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。 本発明の第3の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。 本発明の第4の実施の形態の復号処理装置における追加される命令の一例を示す説明図である。 本発明の第4の実施の形態の復号処理装置におけるローインデックステーブルを更新する命令の内容の一例を示す説明図である。 本発明の第4の実施の形態の復号処理装置におけるサフィックス長テーブルを更新する命令の内容の一例を示す説明図である。 本発明の第4の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示す説明図である。 本発明の第4の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示す説明図である。 本発明のその他の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。 本発明のその他の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。 本発明のその他の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。 本発明のその他の実施の形態の復号処理装置における動作の詳細手順の一例を示すタイミングチャートである。 本発明のその他の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。 本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。 本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。 本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。 本発明のその他の実施の形態の復号処理装置の構成の一例を示すブロック図である。 本発明のその他の実施の形態の復号処理装置を備えたプロセッサの構成の一例を示すブロック図である。 H.264のNumVLC0テーブルの一例を示す説明図である。 関連技術のTC、T1sを復号する際に使用されるテーブルの一例を示す説明図である。 H.264のNumVLC1テーブルの一例を示す説明図である。 関連技術のTC、T1sを復号する際に使用されるテーブルの一例を示す説明図である。 H.264のNumVLC2テーブルの一例を示す説明図である。 関連技術のTC、T1sを復号する際に使用されるテーブルの一例を示す説明図である。 関連技術の処理装置を備えたプロセッサの構成の一例を示すブロック図である。 関連技術の処理装置を備えたプロセッサを用いた場合に、TC、T1sの復号処理の一例を示すタイミングチャートである。
10 メモリ
20 プロセッサ
50 復号処理装置
51 第2の制御手段
52 ビット格納器(第1の制御手段)
53 制御情報・ローインデックス生成器(第1の生成制御部)
54 復号用アドレス生成器(第2の生成制御部)
55 生成器用パイプラインレジスタ
61 ビットバッファコントローラ(ビット制御部)
62 ビットバッファ(ビットストリーム一時格納部)
71 プリフィックス計数器(プリフィックス計数部)
72 プリフィックスアドレス生成器(プリフィックスアドレス計算部)
73 ローインデックステーブル(第1テーブル)群
74 サフィックス長テーブル(第2テーブル)群
75 更新命令生成器(更新命令生成部)
76 加算器(加算部)
77、78 取得部(テーブル情報取得部)
91 ビット調整・コラムインデックス生成器(コラムインデックス生成部)
92 加算器(加算部)

Claims (10)

  1. 少なくともプリフィックスと前記プリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置であって、
    前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第1の制御手段と、
    前記第1の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第1の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第2の制御手段と、
    を含み、
    前記第2の制御手段は、
    前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第1の生成制御部と、
    前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第2の生成制御部と、
    を含み、
    前記第1の生成制御部が、
    前記ローインデックスと前記サフィックス長の生成後に、前記第2の生成制御部における復号用アドレスを生成する処理と、前記第1の制御手段における前記可変長符号ビットストリームを更新する処理とを実行することを特徴とする復号処理装置。
  2. 請求項に記載の復号処理装置において、
    前記第1の生成制御部は、
    前記プリフィックス長に応じたローインデックスを格納した第1テーブルと、
    前記プリフィックス長に応じたサフィックス長を格納した第2テーブルと、
    前記プリフィックス長を用いて、前記第1テーブルと前記第2テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得部と、
    を含み、
    前記テーブル情報取得部が、前記ローインデックスと前記サフィクス長を取得することを特徴とする復号処理装置。
  3. 請求項に記載の復号処理装置において、
    前記第1の生成制御部は、
    前記プリフィックス長に応じたローインデックスを格納した第1テーブルと、
    前記プリフィックス長に応じたサフィックス長を格納した第2テーブルと、
    前記第1の制御手段から読み出された前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数部と、
    前記プリフィックス計数部にて計数した前記プリフィックス長から前記第1テーブル、前記第2テーブルを参照するためのプリフィックスアドレスを計算するプリフィックスアドレス計算部と、
    前記プリフィックスアドレス計算部にて求めた前記プリフィックスアドレスを用いて、前記第1テーブルと前記第2テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得部と、
    前記テーブル情報取得部にて取得された前記サフィックス長と、前記プリフィックス計数部にて計数した前記プリフィックス長と、前記第1の制御手段から読み出された前記可変長符号ビットストリームとに基づいて、前記更新する制御情報である更新命令を生成する更新命令生成部と、
    を含むことを特徴とする復号処理装置。
  4. 請求項に記載の復号処理装置において、
    前記第2の生成制御部は、
    前記サフィックス長に基づいて前記コラムインデックスを生成するコラムインデックス生成部と、
    前記コラムインデックスと前記ローインデックスとを加算する加算部と、
    を含むことを特徴とする復号処理装置。
  5. 請求項に記載の復号処理装置において、
    前記第1テーブル及び前記第2テーブルは、
    コンテキスト適応型可変長符号化方式における復号用NumVLCテーブルの種類に応じた複数のテーブルを各々有し、
    前記第1の制御手段が、
    前記種類を選択するテーブル選択制御情報を生成して前記第1の生成制御部に対して供給し、
    前記テーブル情報取得部が、
    前記テーブル選択制御情報に基づいて、前記第1のテーブルにおける前記複数のテーブルの中からいずれか一つを選択するとともに、前記第2のテーブルにおける前記複数のテーブルの中からいずれか一つを選択することを特徴とする復号処理装置。
  6. 少なくともプリフィックスと前記プリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置を搭載したパイプライン処理を実行可能なプロセッサであって、
    プロセッサパイプライン処理におけるレジスタステージにおいて、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第1の制御手段と、
    前記プロセッサパイプライン処理における実行ステージにおいて、前記第1の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第1の制御手段に対し前記可変長符号ビットストリームを更新する制御情報を生成する第2の制御手段と、
    を含み、
    前記第2の制御手段が、
    前記プロセッサパイプライン処理における実行ステージにおいて、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第1の生成制御部と、
    前記プロセッサパイプライン処理における実行ステージにおいて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第2の生成制御部と、
    を含み、
    前記第1の生成制御部が、
    前記ローインデックスと前記サフィックス長の生成後に、前記第2の生成制御部における復号用アドレスを生成する処理と、前記第1の制御手段における前記可変長符号ビットストリームを更新する処理とを実行することを特徴とするプロセッサ。
  7. 請求項に記載のプロセッサにおいて、
    前記第1の生成制御部は、
    前記プリフィックス長に応じたローインデックスを格納した第1テーブルと、
    前記プリフィックス長に応じたサフィックス長を格納した第2テーブルと、
    プロセッサパイプライン処理における実行ステージ内であって、インデックス生成パイプライン処理における第1ステージにて、前記第1の制御手段から読み出された前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数部と、
    前記インデックス生成パイプライン処理における第2ステージにて、前記プリフィックス計数部にて計数した前記プリフィックス長から前記第1テーブル、前記第2テーブルを参照するためのプリフィックスアドレスを計算するプリフィックスアドレス計算部と、
    前記インデックス生成パイプライン処理における第3ステージにて、前記プリフィックスアドレス計算部にて求めた前記プリフィックスアドレスを用いて、前記第1テーブルと前記第2テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得部と、
    前記インデックス生成パイプライン処理における第4ステージにて、前記テーブル情報取得部にて取得された前記サフィックス長と前記プリフィックス計数部にて計数した前記プリフィックス長と、前記第1の制御手段から読み出された前記可変長符号ビットストリームとに基づいて、前記更新する制御情報である更新命令を生成する更新命令生成部と、
    を含むことを特徴とするプロセッサ。
  8. 少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理方法であって、
    前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第1の制御をし、
    続いて、前記ビットストリーム一時保持部から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第2の制御をし、
    前記第2の制御をする際に、
    前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第1の生成制御をし、
    続いて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第2の生成制御をし、
    前記第1の生成制御をする際に、
    前記ローインデックスと前記サフィックス長の生成後に、前記第2の生成制御における復号用アドレスを生成する処理と、前記第1の制御における前記可変長符号ビットストリームを更新する処理とを実行させることを特徴とする復号処理方法。
  9. 請求項に記載の復号処理方法において、
    前記プリフィックス長に応じたローインデックスを格納した第1テーブルと、前記プリフィックス長に応じたサフィックス長を格納した第2テーブルと、を設け、
    前記第1の生成制御をする際に、
    前記可変長符号ビットストリームの前記プリフィックス長を計数し、
    続いて、計数した前記プリフィックス長から前記第1テーブル、前記第2テーブルを参照するためのプリフィックスアドレスを計算し、
    次に、計算した前記プリフィックスアドレスを用いて前記第1テーブルと前記第2テーブルとを各々参照して対応する前記ローインデックスと前記サフィックス長を取得し、
    しかる後、取得した前記サフィックス長と計数した前記プリフィックス長とに基づいて前記更新する制御情報である更新命令を生成することを特徴とする復号処理方法。
  10. 少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行うコンピュータが諸機能を実現可能な復号処理プログラムであって、
    前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第1の制御機能と、
    前記ビットストリーム一時保持部に保持された前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する制御情報を生成する第2の制御機能と、
    を含む機能を前記コンピュータに実行させ、
    前記第2の制御をする際に、
    前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第1の生成制御をし、続いて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第2の生成制御を前記コンピュータに実行させ、
    前記第1の生成制御をする際に、
    前記ローインデックスと前記サフィックス長の生成後に、前記第2の生成制御における復号用アドレスを生成する処理と、前記第1の制御における前記可変長符号ビットストリームを更新する処理とを前記コンピュータに実行させることを特徴とする復号処理プログラム。
JP2010517811A 2008-06-23 2009-04-20 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム Expired - Fee Related JP5083579B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010517811A JP5083579B2 (ja) 2008-06-23 2009-04-20 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008163161 2008-06-23
JP2008163161 2008-06-23
JP2010517811A JP5083579B2 (ja) 2008-06-23 2009-04-20 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム
PCT/JP2009/057832 WO2009157250A1 (ja) 2008-06-23 2009-04-20 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2009157250A1 JPWO2009157250A1 (ja) 2011-12-08
JP5083579B2 true JP5083579B2 (ja) 2012-11-28

Family

ID=41444320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010517811A Expired - Fee Related JP5083579B2 (ja) 2008-06-23 2009-04-20 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム

Country Status (2)

Country Link
JP (1) JP5083579B2 (ja)
WO (1) WO2009157250A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX337232B (es) * 2011-06-28 2016-02-18 Samsung Electronics Co Ltd Metodo y aparato para codificar video y metodo y aparato para decodificar video acompañados por una codificacion aritmetica.

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3772976B2 (ja) * 2002-05-22 2006-05-10 ソニー株式会社 プロセッサ、エンコーダ、デコーダ及び電子機器
JP2006254225A (ja) * 2005-03-11 2006-09-21 Toshiba Corp 可変長符号の復号装置及び復号方法
JP2007049670A (ja) * 2005-08-09 2007-02-22 C & S Technology Co Ltd 高速のcavlcのためのh.264デコーディング方法
JP2007060199A (ja) * 2005-08-24 2007-03-08 Matsushita Electric Ind Co Ltd 可変長復号装置およびそれを含む集積回路
JP2008124926A (ja) * 2006-11-14 2008-05-29 Renesas Technology Corp 画像復号装置、画像符号化装置、およびシステムlsi

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3772976B2 (ja) * 2002-05-22 2006-05-10 ソニー株式会社 プロセッサ、エンコーダ、デコーダ及び電子機器
JP2006254225A (ja) * 2005-03-11 2006-09-21 Toshiba Corp 可変長符号の復号装置及び復号方法
JP2007049670A (ja) * 2005-08-09 2007-02-22 C & S Technology Co Ltd 高速のcavlcのためのh.264デコーディング方法
JP2007060199A (ja) * 2005-08-24 2007-03-08 Matsushita Electric Ind Co Ltd 可変長復号装置およびそれを含む集積回路
JP2008124926A (ja) * 2006-11-14 2008-05-29 Renesas Technology Corp 画像復号装置、画像符号化装置、およびシステムlsi

Also Published As

Publication number Publication date
JPWO2009157250A1 (ja) 2011-12-08
WO2009157250A1 (ja) 2009-12-30

Similar Documents

Publication Publication Date Title
US7051189B2 (en) Method and apparatus for processor code optimization using code compression
Lefurgy et al. Evaluation of a high performance code compression method
JP2009026106A (ja) 命令コード圧縮方法と命令フェッチ回路
US20080091921A1 (en) Data prefetching in a microprocessing environment
TWI498818B (zh) 指示可變長度指令集的指令長度之技術
WO2006094289A2 (en) Speculative load of look up table entries based upon coarse index calculation in parallel with index calculation
KR20190129702A (ko) 부동 소수점 데이터를 압축하기 위한 시스템
JP3837289B2 (ja) 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ
US9154157B2 (en) Search unit to accelerate variable length compression/decompression
JP2003249029A (ja) データ書き込み装置及びdvdフォーマットデータ生成方法
US8151096B2 (en) Method to improve branch prediction latency
CN114721720A (zh) 一种指令集扩展方法、装置、电子设备及存储介质
US8549266B2 (en) System and method of instruction modification
US20240273163A1 (en) Accelerator for sparse matrix multiplication in neural networks
JP5083579B2 (ja) 復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラム
US7630585B2 (en) Image processing using unaligned memory load instructions
US20140052960A1 (en) Apparatus and method for generating vliw, and processor and method for processing vliw
KR20030007480A (ko) 컴퓨터 시스템 및 컴퓨터 프로그램
JP2005244928A (ja) 可変長復号化装置および可変長復号化方法ならびに再生システム
JP2002519957A (ja) 符号関数を処理する方法および装置
US6427200B1 (en) Multiple changeable addressing mapping circuit
US7075462B2 (en) Speeding up variable length code decoding on general purpose processors
US20020087839A1 (en) System and method for executing variable latency load operations in a date processor
US6922773B2 (en) System and method for encoding constant operands in a wide issue processor
JP2007073067A (ja) プロセッサ集積回路及びプロセッサ集積回路を用いた製品開発方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120717

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120808

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120821

R150 Certificate of patent or registration of utility model

Ref document number: 5083579

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees