JP2008257221A - 信号処理装置 - Google Patents
信号処理装置 Download PDFInfo
- Publication number
- JP2008257221A JP2008257221A JP2008058121A JP2008058121A JP2008257221A JP 2008257221 A JP2008257221 A JP 2008257221A JP 2008058121 A JP2008058121 A JP 2008058121A JP 2008058121 A JP2008058121 A JP 2008058121A JP 2008257221 A JP2008257221 A JP 2008257221A
- Authority
- JP
- Japan
- Prior art keywords
- signal
- code
- processor
- instruction
- program
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】小さな回路規模で効率的にビットストリームを処理し得る信号処理装置を提供する。
【解決手段】信号処理装置100は、ビットストリームを格納している入力バッファ150と、入力バッファ150に格納されているビットストリームからA信号を取り出し、そのA信号に含まれている、B信号に関する少なくとも1つの関連信号を用いることで、そのA信号に対応するB信号を処理するための処理プログラムを生成する第1プロセッサ110と、第1プロセッサ110により生成された処理プログラムを取得して実行することにより、そのA信号に対応するB信号を処理する第2プロセッサ120とを備える。
【選択図】図1
【解決手段】信号処理装置100は、ビットストリームを格納している入力バッファ150と、入力バッファ150に格納されているビットストリームからA信号を取り出し、そのA信号に含まれている、B信号に関する少なくとも1つの関連信号を用いることで、そのA信号に対応するB信号を処理するための処理プログラムを生成する第1プロセッサ110と、第1プロセッサ110により生成された処理プログラムを取得して実行することにより、そのA信号に対応するB信号を処理する第2プロセッサ120とを備える。
【選択図】図1
Description
本発明は、メインプロセッサとサブプロセッサを用いた信号処理装置に関し、特に、圧縮符号化信号を取得して復号する信号処理装置に関する。
近年、DVD(Digital Versatile Disk)や、BD(Blu-ray Disc)を記録媒体として用い、その記録媒体にAV(Audio Video)信号を記録したり、その記録媒体からAV信号を読み出して再生したりする装置が開発されている。さらに、このような記録媒体を用いた記録および再生とともに、放送波により送信されたAV信号の受信や、ネットワークなどを介したAV信号の送受信も同時に行うような機器が開発されている。このような装置や機器で用いられる、ビデオコーデック、オーディオコーデック、または通信処理などの信号処理には、多大の演算量が必要である。
つまり、近年のオーディオ符号化技術は多大の演算量を必要とする。例えば、MPEG(Moving Picture Experts Group)規格AAC(Advanced Audio Coding)方式においては、圧縮符号化信号は、多様なハフマンコードブックを用いて圧縮されたものであり、且つ、多様な制御によって構造化された信号であるので、その信号に対する処理には多大の演算量を必要とする。
また、近年開発された新しいオーディオ符号化技術は、さらに多大の演算量を要する(例えば、非特許文献1参照)。
図14は、上記非特許文献1のオーディオ符号化技術によりPCM(Pulse Code Modulation)信号をエンコードする信号処理装置の構成を示すブロック図である。なお、上記非特許文献1は、DTS社から発表されたものであり、以下、この文献に記載のオーディオ符号化方式をDTS方式という。
この信号処理装置300は、コアエンコーダ301、コアデコーダ302、残差生成部303、遅延部304、ロスレスエンコーダ305、およびパッキング部306を備えている。
コアエンコーダ301は、まず、PCM信号を取得して通常のエンコードを行うことにより、符号化PCM信号を生成する。ここで、通常のエンコードとは、所謂ロッシー(ロッシーエンコード)といわれる非可逆エンコードである。このロッシーは高い圧縮率のエンコードであるため、ロッシーによりエンコードされたPCM信号がデコードされても、そのデコードにより生成された再生信号は、完全には元のPCM信号に戻らない。このようなロッシーは、例えば、MPEGオーディオのAACやMP3(MPEG Audio Layer-3)など、現在最も広く利用されているエンコード方法である。
コアデコーダ302は、上記の符号化PCM信号をローカルデコードすることにより復号化PCM信号を生成する。つまり、コアデコーダ302は、信号処理装置300内のエンコード過程において、コアエンコーダ301によるエンコード結果をデコードする。
残差生成部303は、復号化PCM信号と、遅延部304により遅延されたPCM信号との差分を算出することにより残差信号を生成する。
ロスレスエンコーダ305は、その残差信号を圧縮符号化することにより符号化残差信号を生成する。ここでの圧縮符号化は、符号化後の信号を符号化前の信号に完全に元に戻すことができる、所謂ロスレスエンコードである。
パッキング部306は、上述のようにして生成されたロスレスエンコード結果である符号化残差信号と、ロッシーエンコード結果である符号化PCM信号とをパッキングすることにより、ビットストリーム(圧縮符号化信号)を生成して出力する。
図15は、非特許文献1のオーディオ符号化技術により生成されたビットストリームをデコードする信号処理装置の構成を示すブロック図である。
この信号処理装置400は、分離部401、コアデコーダ402、ロスレスデコーダ403、および残差組込部404を備えている。
分離部401は、上述の信号処理装置300により生成されたビットストリームを取得して、そのビットストリームを符号化PCM信号と符号化残差信号とに分離する。
コアデコーダ402は、その符号化PCM信号をデコードすることにより復号化PCM信号を生成する。ロスレスデコーダ403は、符号化残差信号をデコードすることにより残差信号を生成する。
残差組込部404は、復号化PCM信号に残差信号を加算することにより、ビットストリームを元の完全なPCM信号に復元する。
ところで、従来、多大な演算量が必要とされる信号処理を低い動作周波数で行うために、複数のプロセッサを用いた信号処理装置が提案されている(例えば、特許文献1参照)。
図16は、上記特許文献1の複数のプロセッサを備えた信号処理装置の構成を示すブロック図である。
この信号処理装置200は、2つのDSP(Digital Signal Processor)であるDSP200aとDSP200bとを備えている。DSP200aは、プログラムRAM(Random Access Memory)201a、プログラムROM(Read Only Memory)202a、およびデータRAM203aを用いて信号処理を行い、DSP200bは、プログラムRAM201b、プログラムROM202b、およびデータRAM203bを用いて信号処理を行う。共有データRAM204は、双方のDSPから共通にアクセスできるメモリである。
プログラムRAM201a,201bおよびプログラムROM202a,202bのそれぞれには、各DSPの信号処理に必要なプログラムが予め格納されている。例えば、信号処理装置200がオーディオデコード処理を実行する場合であれば、DSP200aは、そのオーディオデコード処理の前半の処理として、所謂パーシング(parsing)などを行う。このパーシングは、符号化されたオーディオ信号の構成を解析してその中から所定の信号を取り出して中間信号に変換する処理である。このような処理により生成された中間信号は、共有データRAM204を介して、DSP200b側に渡され、DSP200bに処理される。例えば、DSP200aからDSP200bに渡される中間信号は、デコード過程の周波数スペクトルの係数であり、DSP200bは、その周波数スペクトルの係数を時間軸信号に変換する。
米国特許第6081783号明細書
Zoran Fejzo,"DTS−HD:Technical Overview of Lossless Mode of Operation",presented at the 118th Convention of the Audio Engineering Society,Preprint 6445,May.2005.
しかしながら、図16に示す従来の信号処理装置200に、上述のAAC方式による圧縮符号化信号のデコードや、DTS方式による圧縮符号化信号のデコードを実行させようとすると、その信号処理装置200の回路規模を大きくしなければならないという課題が生じる。
具体的には、MPEG規格AAC方式のデコードのうちの可変長復号化は、大規模で複雑なハフマンデコードを要する。
つまり、AAC方式の圧縮符号化信号であるビットストリームは複数のハフマンコード群により複雑に構成されている。また、このビットストリームのシンタックスは、例えば3重のforループやifによる分岐などによって複雑に表現されている。したがって、そのビットストリームに対するパーシングの処理、すなわち、ビットストリームを解析し、そのビットストリームからハフマンコードを取り出してハフマンデコードを実行する処理に多大の演算量が必要とされる。詳しくは、非特許文献であるMPEG(AAC方式)規格書(ISO/IEC13818−7:2003)を参照されたい。
このようなパーシングには、多様なハフマンコードブックを用いる必要があり、且つ、多様な制御によって構造化されたデータ構造を紐解く必要がある。そのため、上記特許文献1のようなマルチプロセッサを有する信号処理装置200において、仮に、一方のDSPであるDSP200aにパーシング処理だけを行わせた場合であっても、DSP200aは、複雑な処理が実行可能な高性能なDSPでなければならない。さらに、この場合、DSP200bも、オーディオデコード処理の後半の処理を実行するだけの高性能なDSPでなければならない。その結果、回路規模が大きくなり、コストダウンの妨げにもなっている。
また、DTS方式のデコードのうちの可変長復号化は、多種多様な可変長符号化方式で符号化された信号に対応しなければならない。
DTS方式の圧縮符号化信号であるビットストリームには、複数種の可変長符号化方式で符号化された信号が混在している。即ち、図14に示すコアエンコーダ301とロスレスエンコーダ305とはそれぞれ、複数種の可変長符号化方式を切り換え、切り換えられた可変長符号化方式で信号をエンコードしている。複数の可変長符号化方式には、ハフマンコーディングの他、バイナリーコーディングやライスコーディングなどがある(非特許文献1の3.2節 Entropy Coding参照)。なお、AACやMP3の可変長符号化方式としては、ハフマンコーディングだけがある。
このようなDTS方式のビットストリームのデコードを、図16に示すような従来のマルチプロセッサを有する信号処理装置200で処理しようとすると、デコード過程の前半の処理、即ち、ビットストリームをパーシングする処理のために、信号処理装置200は多種多様なプログラムを備えなければならない。その結果、DSP200aによるパーシングのために、信号処理装置200は非常に大規模なプログラムメモリを備えなければならない。これにより、信号処理装置200の回路規模が大きくなってしまうのである。
なお、ハフマンコードやライスコードなどをビットストリームから取り出してデコードするプロセスは、それ自身が煩雑であり、信号処理装置の大規模化や動作周波数の上昇を招く。例えば、前述の非特許文献1の3.2節(Entropy Coding)に開示されているように、DTS方式のライスコードのデコードには、ビットサーチや符号極性処理などの、判断および分岐を伴う処理が多く含まれている。なお、ビットサーチは、ビットストリームにおいて何ビット“0”が連続するかを検出する処理であり、符号極性処理は、所定の1ビットを検出してそのビットの値に応じて符号極性を反転させる処理である。したがって、ライスコードをデコードする処理には、多大の演算量を必要とする。
そこで、本発明は、このような問題に鑑みてなされたものであって、小さな回路規模で効率的にビットストリームを処理し得る信号処理装置を提供することを目的とする。
上記目的を達成するために、本発明に係る信号処理装置は、第1の信号と前記第1の信号に対応する第2の信号とが交互にパッキングされている入力信号を処理する信号処理装置であって、前記入力信号を格納している格納手段と、前記格納手段に格納されている入力信号から第1の信号を取り出し、前記第1の信号に含まれている、第2の信号に関する少なくとも1つの関連信号を用いることで、前記第1の信号に対応する第2の信号を処理するためのプログラムを生成する第1のプロセッサと、前記第1のプロセッサにより生成されたプログラムを取得して実行することにより、前記第1の信号に対応する第2の信号を処理する第2のプロセッサとを備えることを特徴とする。つまり、前記第1のプロセッサは、前記入力信号から前記第1の信号を取り出すごとに、当該第1の信号に対応する第2の信号を処理するためのプログラムを生成し、前記第2のプロセッサは、前記第1のプロセッサからプログラムを取得するごとに、前記プログラムを実行するとともに、実行済みのプログラムを消去する。
例えば、入力信号はオーディオ信号(PCM信号)が符号化されたビットストリームであり、第1および第2の信号から1つのフレームが構成されている。その入力信号がACC方式のビットストリームであれば、そのビットストリームの第2の信号には、多種多様なハフマンコードブックによる符号化により生成された複数のハフマンコードがパッキングされている。また、その入力信号がDTS方式のビットストリームであれば、例えばフレームごとに、ハフマン符号化やライス符号化などの多種多様な可変長符号化方式(VLD)が適用されている。また、第1の信号には、どのように符号化された信号がどのように第2の信号に格納されているかといった第2の信号の構成などを示す制御信号を導出するための関連信号が含まれている。
そこで本発明では、2つのプロセッサが備えられ、一方の第1のプロセッサにより、第2の信号を処理するためのプログラムが生成され、他方の第2のプロセッサにより、そのプログラムが実行されて第2の信号が処理される。また、このようなプログラムは順次消去される。つまり、第2の信号を処理するための適切なプログラムが動的に生成されて、プログラムの実行後には、そのプログラムが消去される。したがって、本発明では、複数のプロセッサの処理により処理速度を高速化することができるとともに、多種多様なハフマンコードブックや可変長符号化方式に応じた多種多様なプログラムを信号処理装置に予め保持させておく必要がなく、信号処理装置のプログラムメモリのサイズを小さくすることができる。その結果、小さな回路規模で効率的にビットストリームを処理することができる。
また、前記第2のプロセッサは専用命令を備え、前記第1のプロセッサは前記専用命令を含む前記プログラムを生成し、前記専用命令は、当該専用命令によって第2のプロセッサが実行する処理と同一の処理を第1のプロセッサに実行させるための命令よりも少ない記述量で記述されることを特徴としてもよい。
これにより、プログラムサイズを小さくすることができる。その結果、信号処理装置の回路規模をさらに小さくすることができるとともに、処理速度をさらに高速化することができる。
また、前記第1のプロセッサは、複数の前記専用命令を含み、複数の前記専用命令を分岐することなく順次実行させる前記プログラムを生成することを特徴としてもよい。
例えば、プログラムにはifなどの条件分岐が含まれていない。これにより、第2のプロセッサはプログラムを直線的に処理することができ、第2のプロセッサの回路構成を簡素にすることができ、コスト低減を図ることができる。
また、前記第2の信号には、複数の固定長符号がパッキングされ、前記第1の信号には、前記第2の信号に含まれている固定長符号の符号長に関する前記関連信号と、前記第2の信号に含まれている固定長符号の個数に関する前記関連信号とが含まれ、前記専用命令は、固定長符号の符号長が設定されるフィールドと、固定長符号の個数が設定されるフィールドとを有する、固定長符号のアンパッキングを指示する命令であり、前記第1のプロセッサは、複数の前記関連信号に応じて、前記第2の信号に含まれている固定長符号の符号長および個数を特定するとともに、前記符号長および個数が設定された、固定長符号のアンパッキングを指示する前記専用命令を生成し、前記第2のプロセッサは、前記専用命令を実行することにより、前記専用命令に設定された符号長の固定長符号を、前記専用命令に設定された個数だけ前記第2の信号からアンパッキングすることを特徴としてもよい。
これにより、第2のプロセッサは、第2の信号から複数の固定長符号(バイナリーコード)を適切に取り出してデコードすることができる。さらに、1つの専用命令で、固定長符号のアンパッキングと、その固定長符号の符号長と、固定長符号の個数、つまり固定長符号のアンパッキングの回数とを指示することができるため、固定長符号のデコードのためのプログラムのサイズを小さくすることができる。さらに、固定長符号のデコードを高速化することができる。
また、前記第2の信号には、複数のハフマン符号がパッキングされ、前記第1の信号には、前記第2の信号に含まれているハフマン符号を復号するためのコードブックの識別子に関する前記関連信号と、前記第2の信号に含まれているハフマン符号の個数に関する前記関連信号とが含まれ、前記専用命令は、コードブックの識別子が設定されるフィールドと、ハフマン符号の個数が設定されるフィールドとを有する、ハフマン符号のアンパッキングを指示する命令であり、前記第1のプロセッサは、複数の前記関連信号に応じて、前記第2の信号に含まれているハフマン符号のコードブックの識別子およびハフマン符号の個数を特定し、前記識別子および個数が設定された、ハフマン符号をアンパッキングするための前記専用命令を生成し、前記第2のプロセッサは、前記専用命令を実行することにより、前記専用命令に設定されたコードブックの識別子を用い、前記専用命令に設定された個数のハフマン符号を前記第2の信号からアンパッキングすることを特徴としてもよい。
これにより、第2のプロセッサは、第2の信号から複数のハフマン符号を適切に取り出してデコードすることができる。さらに、1つの専用命令で、ハフマン符号のアンパッキングと、コードブック(ハフマンコードブック)の識別子と、ハフマン符号の個数、つまりハフマン符号のアンパッキングの回数とを指示することができるため、ハフマン符号のデコードのためのプログラムのサイズを小さくすることができる。さらに、ハフマン符号のデコードを高速化することができる。
また、前記第2の信号には、複数のライス符号がパッキングされ、前記第1の信号には、前記第2の信号に含まれているライス符号の固定長部分の符号長に関する前記関連信号と、前記第2の信号に含まれているライス符号の個数に関する前記関連信号とが含まれ、前記専用命令は、ライス符号の固定長部分の符号長が設定されるフィールドと、ライス符号の個数が設定されるフィールドとを有する、ライス符号のアンパッキングを指示する命令であり、前記第1のプロセッサは、複数の前記関連信号に応じて、前記第2の信号に含まれているライス符号の固定長部分の符号長およびライス符号の個数を特定し、前記符号長および個数が設定された、ライス符号をアンパッキングするための前記専用命令を生成し、前記第2のプロセッサは、前記専用命令を実行することにより、前記専用命令に設定された符号長の固定長部分を含むライス符号を、前記専用命令に設定された個数だけ前記第2の信号からアンパッキングすることを特徴としてもよい。
これにより、第2のプロセッサは、第2の信号から複数のライス符号を適切に取り出してデコードすることができる。さらに、1つの専用命令で、ライス符号のアンパッキングと、そのライス符号の固定長部分の符号長と、ライス符号の個数、つまりライス符号のアンパッキングの回数とを指示することができるため、ライス符号のデコードのためのプログラムのサイズを小さくすることができる。さらに、ライス符号のデコードを高速化することができる。
また、前記専用命令は、連続する0または1の数の検出と信号出力とを指示する命令であり、前記第2のプロセッサは、前記専用命令を実行することにより、前記第2の信号に含まれる連続する0または1の数を検出し、検出した数に応じた信号を出力することを特徴としてもよい。
これにより、例えば、第2の信号にライス符号が含まれている場合、第2のプロセッサはそのライス符号の連続する0の数を検出してその数を2進数で出力することで、そのライス符号を適切にデコードすることができる。また、入力信号がAAC方式のビットストリームである場合には、AAC方式におけるエスケープ符号(エスケープシーケンス)を適切に処理することができる。さらに、これらのデコードなどの処理を高速化することができる。
また、前記第2の信号には、複数の処理対象符号および極性符号がパッキングされ、前記第1のプロセッサは、処理対象符号のアンパッキングと、極性符号の検出と、符号極性の変換とを指示する前記専用命令を生成し、前記第2のプロセッサは、前記専用命令を実行することにより、前記第2の信号から処理対象符号を順次アンパッキングし、前記処理対象符号をアンパッキングするごとに、当該処理対象符号に対応する極性符号を前記第2の信号の中から検出し、検出した極性符号の示す符号極性に当該処理対象符号の符号極性を変換することを特徴としてもよい。
例えば、極性符号「0」が符号極性「正」を示し、極性符号「1」が符号極性「負」を示す場合、第2のプロセッサは、極性符号「1」を検出すると、アンパッキングした処理対象符号の符号極性を「負」にする。具体的には、第2のプロセッサは、ビット列で示される処理対象符号の各ビットを反転させる。これにより、第2の信号にパッキングされている処理対象符号に対して適切な符号極性を与えることができる。さらに、このような符号極性の処理を高速化することができる。
また、前記第2の信号には、複数の量子化符号がパッキングされ、前記第1のプロセッサは、量子化符号のアンパッキングと逆量子化とを指示する前記専用命令を生成し、前記第2のプロセッサは、前記専用命令を実行することにより、前記第2の信号から量子化符号を順次アンパッキングして逆量子化することを特徴としてもよい。
これにより、第2の信号にパッキングされている量子化符号を適切且つ高速に逆量子化することができる。
なお、本発明は、このような信号処理装置として実現することができるだけでなく、信号処理方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の信号処理装置は、小さな回路規模で効率的にビットストリームを処理し得るという作用効果を奏する。つまり、本発明によれば、複数のプロセッサを用いて分散処理する際、最適なサイズのプログラムを逐次生成し実行することができるので、高速でありながら回路規模を小さくすることができる。
以下、本発明の実施の形態1における信号処理装置について図面を参照しながら説明する。
図1は、実施の形態1における信号処理装置の構成を示すブロック図である。
信号処理装置100は、ビットストリームをデコードする装置であって、小さな回路規模で構成されている点に特徴がある。
信号処理装置100は、ビットストリームをデコードする装置であって、小さな回路規模で構成されている点に特徴がある。
この信号処理装置100は、第1プロセッサ110、第2プロセッサ120、セレクタ130、データメモリ140、および入力バッファ150を備えている。
入力バッファ150は、入力信号であるビットストリームを取得して格納する。このビットストリームは、例えば、オーディオ信号がMPEG規格のAAC方式により符号化された圧縮符号化信号であって、A信号(第1の信号)とB信号(第2の信号)とが交互に配列して構成されている。つまり、このビットストリームには、A信号とB信号とが交互にパッキングされている。また、A信号とB信号とにより1つのフレームが構成されている。B信号には、可変長符号化された複数のオーディオ信号が含まれており、A信号は、そのA信号に対応するB信号の可変長符号化の条件や構成などを示している。
セレクタ130は、第1プロセッサ110からの制御に基づいて、入力バッファ150の接続先を第1プロセッサ110と第2プロセッサ120とに切り換える。つまり、セレクタ130は、入力バッファ150に格納されているビットストリームのA信号が第1プロセッサ110に出力され、B信号が第2プロセッサ120に出力されるように、接続先を切り換える。
第1プロセッサ110は、セレクタ130を制御することにより、入力バッファ150に接続し、その入力バッファ150に格納されているビットストリームのフレーム中のA信号を読み出す。そして、第1プロセッサ110は、その読み出したA信号に応じた処理を実行する。また、第1プロセッサ110は、その処理が終了すると、セレクタ130を制御することにより、入力バッファ150と第2プロセッサ120とを接続させる。さらに、第1プロセッサ110は、後述する完了信号を第2プロセッサ120から取得すると、再び、セレクタ130を制御することにより入力バッファ150に接続し、次のフレームに対して、上述のようなA信号の読み出しとそのA信号に応じた処理を実行する。
このように、第1プロセッサ110は、セレクタ130を制御することにより、ビットストリームに含まれている複数のA信号を、そのビットストリームの先頭側から順次読み出し、A信号ごとに、そのA信号に応じた処理を実行する。
このような第1プロセッサ110は、第1プログラムメモリ111と、第1演算回路112を備えている。第1プログラムメモリ111は、第1演算回路112により実行されるプログラムを記憶している。第1演算回路112は、第1プログラムメモリ111に記憶されているプログラムを読み出して実行することにより、上述のようなA信号の読み出しと、そのA信号に応じた処理を行う。
ここで、第1演算回路112は、プログラム生成部112aを備えている。このプログラム生成部112aは、A信号が読み出されるごとに、その読み出されたA信号を解析することにより、そのA信号と同一のフレーム内に格納されているB信号の可変長符号化の条件や構成などを特定する。そして、プログラム生成部112aは、その特定された内容に基づいて、B信号に対するパーシングを第2プロセッサ120に実行させる、第2プロセッサ120専用のプログラム(以下、処理プログラムという)を生成する。プログラム生成部112aは、このような処理プログラムを生成すると、その処理プログラムを第2プロセッサ120に出力する。
第2プロセッサ120は、セレクタ130を介して入力バッファ150に接続されるごとに、入力バッファ150に格納されているビットストリーム中のB信号を読み出す。つまり、第2プロセッサ120は、ビットストリームの先頭側からB信号を順次読み出す。そして、第2プロセッサ120はそのB信号に含まれる各信号(符号)を可変長復号化する。さらに、第2プロセッサ120は、そのB信号の読み出し、または可変長復号化などの処理が終了するごとに、上述の完了信号を第1プロセッサ110に出力する。
このような第2プロセッサ120は、第2プログラムメモリ121と、第2演算回路122とを備えている。第2プログラムメモリ121は、第1プロセッサ110のプログラム生成部112aにより生成された処理プログラムを記憶するためのメモリである。
第2演算回路122は、第2プログラムメモリ121に記憶されている処理プログラムを読み出して実行することにより、B信号をパーシングする。つまり、第2演算回路122は、B信号に含まれる各信号を取り出して(つまりアンパッキングして)可変長復号化する。そして、第2演算回路122は、その可変長復号化により生成された各信号をデータメモリ140に格納する。
図2は、ビットストリームに含まれる主要な信号のシンタックスを示した図である。なお、この図2に示すシンタックスは、MPEG(AAC方式)規格書(ISO/IEC13818−7:2003)に記載されたシンタックス“Table1−Syntax of individual_channel_stream()”と同じものである。
図2に示すシンタックスのうち“spectral_data()”以外の部分(図2上部の、A信号に対応付けて記載された範囲)によってA信号が構成され、“spectral_data()”の部分(図2下部の、B信号に対応付けて記載された範囲)によってB信号が構成されている。
なお、MPEG規格AAC方式のビットストリームは、この図2のシンタックスで示される信号以外の信号も含んでいるが、本実施の形態では、説明を簡単にするために、それらの信号についての説明を省略する。
図3は、図2のシンタックス中のA信号対応部分に含まれる“section_data()”の詳細なシンタックスを示す図である。なお、この“section_data()”は、A信号の中の主要な信号であり、図3に示すシンタックスは、MPEG(AAC方式)規格書(ISO/IEC13818−7:2003)に記載されたシンタックス“Table2−Syntax of section_data()”と同じものである。
このような図2および図3に示すシンタックスにより構成されるA信号は、B信号に含まれている複数の信号の可変長符号化条件や構成など、すなわち、B信号に含まれている複数の信号がどのような信号で、どのような順番で、何個格納されているかを示す。
図4は、図2のシンタックス中のB信号対応部分“spectral_data()”の詳細なシンタックスを示す図である。なお、この“spectral_data()”の詳細なシンタックスは、MPEG(AAC方式)規格書(ISO/IEC13818−7:2003)に記載されたシンタックス“Table20−Syntax of spectral_data()”と同じものである。
B信号は、この図4に示す“spectral_data()”のシンタックスに基づいて構成されている。また、この図4のシンタックス中に示される信号のうち、下線を付して記述されている信号、つまり“hcod[sect_cb[g][i]][w][x][y][z]”、“quad_sign_bits”、“hcod[sect_cb[g][i]][y][z]”、“pair_sign_bits”、“hcod_esc_y”、および“hcod_esc_z”が、第2プロセッサ120により取り出される信号(以下、取り出し対象信号という)である。なお、取り出し対象信号以外の、図4のシンタックスにより示される信号や、そのシンタックスの制御構成を示す信号などを、以下、制御信号という。そして、その制御信号は、A信号に含まれている信号(関連信号)と同一であるか、その関連信号から導出可能な信号である。
例えば、図4に示すように、“spectral_data()”のシンタックス中、冒頭の“g”で制御されるforループは、B信号である“spectral_data()”に、“num_window_groups”で与えられる値の個数分だけの信号群が含まれていることを示している。ここで、“num_window_groups”の値は上述の制御信号であって、図2で示した“individual_channel_stream(commom_window)”のシンタックス中の3行目で示されている“ics_info()”によってA信号内に格納されている関連信号から得られるものである。詳しくはMPEG(AAC方式)規格書(ISO/IEC13818−7:2003)に記載されている。
また、図4に示すように、“spectral_data()”のシンタックス中の2行目の“i”で制御されるforループは、B信号に含まれる上述の信号群ごとに、その信号群には、“num_sec[g]”の個数分だけのサブ信号群が格納されていることを示している。この“num_sec[g]”の値は上述の制御信号であって、図2で示した“individual_channel_stream(commom_window)”のシンタックス中の4行目で示されている“section_data()”によってA信号内に格納されている関連信号から得られるものである。つまり、図3に示すように、“section_data()”のシンタックス中の最終行によって、A信号に“num_sec[g]”の値が関連信号として格納されている。
また、図4に示すように、“spectral_data()”のシンタックス中の3〜4行目のifの分岐判断は、“sect_cb[g][i]”によって確定される。この“sect_cb[g][i]”も上述の制御信号であって、図3に示す“section_data()”のシンタックス中の10行目によってA信号に関連信号として格納されている。その他の制御信号も全て同様に、A信号に関連信号として含まれているか、関連信号から生成可能な信号である。
従って、本実施の形態におけるプログラム生成部112aは、図2に示すシンタックスのA信号に対応する部分、および図3に示すシンタックスに基づいて、A信号を解析することにより、図4に示す“spectral_data()”のシンタックス制御構造(制御信号)を特定する。つまり、プログラム生成部112aは、B信号に、どのような信号が、何個、どのような順番で格納されているかということを、図4に示すB信号のシンタックスを用いることなく特定する。そして、プログラム生成部112aは、B信号に含まれる各取り出し対象信号を取り出して処理するための処理プログラムを、ループ構造やifの構文による分岐の構造を排除した、直線的に実行可能なプログラムとして生成する。
以下、図2〜図4のシンタックスにより構成されたビットストリームに対する信号処理装置100の詳細な動作について説明する。
まず、第1プロセッサ110の第1演算回路112は、処理の開始時点で、A信号を入力バッファ150から取得するために、前記セレクタ130を制御し、入力バッファ150を第1プロセッサ110に接続させる。
第1プロセッサ110の第1演算回路112は、図2に示すシンタックスのA信号対応部分に基づいて、MPEG規格AAC方式に則ってA信号に含まれている信号を取り出す。つまり、第1演算回路112はA信号を解析してそのA信号に含まれている信号を取り出す(パーシングする)。なお、このA信号のパーシングの方法は、MPEG(AAC方式)規格書(ISO/IEC13818−7:2003)に詳しく記載されている。
第1演算回路112のプログラム生成部112aは、そのようにしてA信号から取り出された関連信号に基づいて、B信号に含まれている信号を取り出して処理するための処理プログラムを生成する。この処理プログラムは、第2プロセッサ120で実行可能な命令群によって構成されたプログラムである。
つまり、プログラム生成部112aは、上述のA信号から関連信号を取り出して、その関連信号を制御信号として用いたり、関連信号を使って制御信号を導出する。この制御信号は、B信号に含まれる信号が、どのような信号で、どのような順番で、何個格納されているかを示す。プログラム生成部112aは、このような制御信号を用いることにより、第2プロセッサ120に対して、取り出し対象信号をB信号から取り出して処理させる処理プログラムを生成する。
図5は、第2プロセッサ120が備えている命令ビットフィールドを示す図である。
この命令ビットフィールドFは、左側の4ビットにより命令の種類を与える命令種類フィールドF1と、右側の14ビットによりその命令の種類に特有の引数を与える引数フィールドF2とから構成されている。例えば、命令が、第2プロセッサ120から出力される信号(以下、出力信号という)が格納される先頭アドレスを指定するような命令(以下、出力アドレス指定命令という)の場合には、命令種類フィールドF1の4ビットに“0000”が設定される。また、命令がハフマンデコード命令の場合には、命令種類フィールドF1の4ビットに“0001”などが設定される。
この命令ビットフィールドFは、左側の4ビットにより命令の種類を与える命令種類フィールドF1と、右側の14ビットによりその命令の種類に特有の引数を与える引数フィールドF2とから構成されている。例えば、命令が、第2プロセッサ120から出力される信号(以下、出力信号という)が格納される先頭アドレスを指定するような命令(以下、出力アドレス指定命令という)の場合には、命令種類フィールドF1の4ビットに“0000”が設定される。また、命令がハフマンデコード命令の場合には、命令種類フィールドF1の4ビットに“0001”などが設定される。
なお、以下、説明を簡単にするため、ハフマンデコード命令を、ハフマンコードブック検索によって出力値を得る所謂狭義の意味でのハフマンデコードの実行を指示する命令として説明する。つまり、このハフマンデコード命令は、図4に示すシンタックスに含まれる取り出し対象信号のうち、信号“hcod[sect_cb[g][i]][w][x][y][z]”または信号“hcod[sect_cb[g][i]][y][z]”をB信号から取り出し、その取り出した信号に対して上記狭義の意味でのハフマンデコードを実行することを指示する。
プログラム生成部112aは、処理プログラムを生成する場合、まず、処理プログラムの1行目の命令として、上述の出力アドレス指定命令を生成する。
図6は、出力アドレス指定命令が設定された命令ビットフィールドFの一例を示す図である。
例えば、図6に示すように、プログラム生成部112aは、命令ビットフィールドFの命令種類フィールドF1に“0000”が設定され、引数フィールドF2に“01000000000000”が設定されるように、出力アドレス指定命令を生成する。つまり、このように設定された命令種類フィールドF1“0000”は、この命令ビットフィールドFにより示される命令が出力アドレス指定命令であることを指示し、引数フィールドF2“01000000000000”は、出力信号の先頭アドレスが“256”であることを指示する。
つぎに、プログラム生成部112aは、処理プログラムの2行目以降の命令として、複数のハフマンデコード命令を生成する。各ハフマンデコード命令は、既にA信号を取得することによって得られている関連信号“sect_cb[g][i]”が示すハフマンコードブックを用いてハフマンデコードを“N[g][i]”回実行させるための命令である。
ここで、プログラム生成部112aは、既にA信号を取得することによって得られている関連信号を使って、“(sect_sfb_offset[g][sect_end[g][i]]−sect_sfb_offset[g][sect_start[g][i]])/TUPPLE”を算出することによって“N[g][i]”の値を導出している。また、上記において、プログラム生成部112aは、既にA信号を取得することによって得られている“unsigned_cb[sect_cb[g][i]]”が真である場合は、定数“QUAD_LEN”(具体的には4)を“TUPPLE”とし、偽である場合は、定数“PAIR_LEN”(具体的には2)を“TUPPLE”とする。つまり、この“N[g][i]”の値は、図4に示す“spectral_data()”のシンタックス内の3重のforループのうち、最も内側のforループが実行される回数である。
プログラム生成部112aは、“i”を0以上“num_sect[g]”未満の範囲で変化させ、“g”を0以上“num_window_groups”未満の範囲で変化させながら、上述のハフマンデコード命令の生成を繰り返す。なお、上述のように、“num_window_groups”および“num_sect[g]”はそれぞれA信号に含まれている関連信号である。
より具体的には、プログラム生成部112aは、処理プログラムの2行目の命令として、g=0およびi=0に対応するハフマンデコード命令を生成する。このハフマンデコード命令は、既にA信号を取得することによって得られている“sect_cb[0][0]”が示すハフマンコードブックを用いてハフマンデコードを“N[0][0]”回実行させるための命令である。ここで、プログラム生成部112aは、既にA信号を取得することによって得られている関連信号を使って、“(sect_sfb_offset[0][sect_end[0][0]]−sect_sfb_offset[0][sect_start[0][0]])/TUPPLE”を算出することによって“N[0][0]”の値を導出している。また、上記において、プログラム生成部112aは、既にA信号を取得することによって得られている“unsigned_cb[sect_cb[0][0]]”が真である場合は、定数“QUAD_LEN”を“TUPPLE”とし、偽である場合は、定数“PAIR_LEN”を“TUPPLE”とする。つまり、この“N[0][0]”の値は、図4に示す“spectral_data()”のシンタックス内の3重のforループのうち、最も内側のforループが、g=0で且つi=0の際に実行される回数である。
図7は、ハフマンデコード命令が設定された命令ビットフィールドFの一例を示す図である。
例えば、図7に示すように、プログラム生成部112aは、命令ビットフィールドFの命令種類フィールドF1に“0001”が設定され、引数フィールドF2の左側の4ビットからなるコードブック指定フィールドF2aに“0101”が設定され、引数フィールドF2の右側の10ビットからなる実行回数指定フィールドF2bに“0000001100”が設定されるように、ハフマンデコード命令を生成する。つまり、このように設定された命令種類フィールドF1“0000”は、この命令ビットフィールドFにより示される命令がハフマンデコード命令であることを指示し、コードブック指定フィールドF2a“0101”は、ハフマンコードブックの値として“sect_cb[0][0]”により示される“5”を指定している。つまり、そのコードブック指定フィールドF2aは、ハフマンコードブック5番を指定している。実行回数指定フィールドF2b“0000001100”は、そのハフマンコードブックによるハフマンデコードを実行する回数として、“(sect_sfb_offset[0][sect_end[0][0]]−sect_sfb_offset[0][sect_start[0][0]])/TUPPLE”により示される“12”を指定している。つまり、その実行回数指定フィールドF2bは、12回の処理の実行を指定している。
さらに、プログラム生成部112aは、処理プログラムの3行目の命令として、上記と同様に、g=0およびi=1に対応するハフマンデコード命令を生成する。このハフマンデコード命令は、既にA信号を取得することによって得られている“sect_cb[0][1]”が示すハフマンコードブックを用いてハフマンデコードを“N[0][1]”回実行させるための命令である。ここで、上述と同様、プログラム生成部112aは、既にA信号を取得することによって得られている関連信号を使って、“(sect_sfb_offset[0][sect_end[0][1]]−sect_sfb_offset[0][sect_start[0][1]])/TUPPLE”を算出することによって、“N[0][1]”の値を求めている。
プログラム生成部112aは、上述のような命令の生成を、“g”が0以上“num_window_groups”未満、“i”が0以上“num_sect[g]”未満の範囲で繰り返すことで、第2プロセッサ120で実行される処理プログラムを生成する。また、プログラム生成部112aは、処理プログラムを生成するときには、上述のように、“num_window_groups”および“num_sect[g]”の値を、既にA信号から得ている。さらに、このとき、プログラム生成部112aは、図4のシンタックス中にあるifの条件を構成する制御信号や、if−elseの分岐によりどちらが選択されるかということも、A信号から全て明らかにしている。そこで、プログラム生成部112aは、ループの構造やifによる分岐の構造を持たない直線的なプログラムとして処理プログラムを生成する。
本実施の形態では、このように、処理プログラムを直線的なプログラムにできることによって、第2プロセッサ120のハードウエア規模を小さくすることができる。
図8は、上記のように生成された処理プログラムと第2プロセッサ120の処理動作の一例を示す図である。
この処理プログラムは、1フレーム分のB信号をパーシングするためのプログラムである。この処理プログラムの1行目の命令は、出力信号が格納される先頭アドレスを指定する出力アドレス指定命令である。2行目以降には、“num_window_groups”により示される個数分(N個)の命令群たるセクションプログラムがある。それぞれのセクションプログラムは、“num_sect[g]”(0<=g<num_window_groups)により示される数の命令からなるプログラムである。なお、このセクションプログラムに含まれる各命令は一行で記述され、上述したように、主に、ハフマンデコード命令である。
つまり、第2プロセッサ120の第2演算回路122は、セクションプログラムを実行することによって、B信号に含まれる同一空間上の信号を処理し、各セクションプログラムを逐次実行することによって、B信号に含まれる時間軸上の信号を逐次処理する。
具体的に、第2演算回路122は、処理プログラムの1行目の出力アドレス指定命令を実行することにより、出力信号を格納する先頭アドレスを“256”に設定する(ステップS100)。
次に、第2演算回路122は、処理プログラムに含まれる最初(g=0)のセクションプログラムを実行する。つまり、第2演算回路122は、処理プログラムの2行目のハフマンデコード命令を実行することにより、定数“QUAD_LEN”(具体的には4)または定数“PAIR_LEN”(具体的には2)の符号長の信号(ハフマンコード)をB信号から取り出し、その取り出した信号に対してハフマンコードブック5番を用いたハフマンデコードを実行することを、12回繰り返す(ステップS102)。第2演算回路122は、このようなハフマンデコードを繰り返す場合、同一の符号長の信号をB信号から順次取り出し、ハフマンデコードを1回実行するごとに、出力信号が格納されるアドレス(以下、出力アドレスという)を増進する。また、第2演算回路122は、図4のシンタックスに示すように、“sect_cb[0][0]”が“FIRST_PAIR_HCB”(AACの場合には、5を示す)よりも小さいか否かに応じて、上述の符号長を定数“QUAD_LEN”にすべきか定数“PAIR_LEN”にすべきかを決定している。
さらに、第2演算回路122は、処理プログラムの3行目のハフマンデコード命令を実行することにより、定数“QUAD_LEN”または定数“PAIR_LEN”の符号長の信号(ハフマンコード)をB信号から取り出し、その取り出した信号に対してハフマンコードブック7番を用いたハフマンデコードを実行することを、16回繰り返す(ステップS104)。このときにも、第2演算回路122は、同一の符号長の信号をB信号から順次取り出し、ハフマンデコードを1回実行するごとに、出力アドレスを増進する。また、第2演算回路122は、上述のように、“sect_cb[0][1]”が“FIRST_PAIR_HCB”よりも小さいか否かに応じて、上述の符号長を定数“QUAD_LEN”にすべきか定数“PAIR_LEN”にすべきかを決定している。
このように、第2演算回路122は、そのセクションプログラムに含まれているハフマンデコード命令を順次実行する。そして、第2演算回路122は、そのセクションプログラムに含まれている最後の出力命令を実行することにより、64回“0”を出力する(ステップS106)。なお、この出力命令については後述する。
その後、第2演算回路122は、処理プログラムに含まれる2番目(g=1)のセクションプログラムを実行する。つまり、第2演算回路122は、そのセクションプログラムの1行目のハフマンデコード命令を実行することにより、定数“QUAD_LEN”または定数“PAIR_LEN”の符号長の信号(ハフマンコード)をB信号から取り出し、その取り出した信号に対してハフマンコードブック1番を用いたハフマンデコードを実行することを、48回繰り返す(ステップS108)。このときにも、第2演算回路122は、同一の符号長の信号をB信号から順次取り出し、ハフマンデコードを1回実行するごとに、出力アドレスを増進する。また、第2演算回路122は、上述のように、“sect_cb[1][0]”が“FIRST_PAIR_HCB”よりも小さいか否かに応じて、上述の符号長を定数“QUAD_LEN”にすべきか定数“PAIR_LEN”にすべきかを決定している。
さらに、第2演算回路122は、そのセクションプログラムの2行目以降のハフマンデコード命令を上述と同様に順次実行する。そして、第2演算回路122は、そのセクションプログラムの“num_sect[1]”行目(最終行)のハフマンデコード命令を実行する。これにより、第2演算回路122は、定数“QUAD_LEN”または定数“PAIR_LEN”の符号長の信号をB信号から取り出し、その取り出した信号に対してハフマンコードブック3番を用いたハフマンデコードを実行することを、16回繰り返す(ステップS110)。このときにも、第2演算回路122は、同一の符号長の信号をB信号から順次取り出し、ハフマンデコードを1回実行するごとに、出力アドレスを増進する。
このように、第2演算回路122は、処理プログラムに含まれるセクションプログラムを順次実行し、最後に、処理プログラムに含まれるN番目(g=N−1)のセクションプログラムを実行する。つまり、第2演算回路122は、そのセクションプログラムの1行目のハフマンデコード命令を実行することにより、B信号から上述と同様の符号長の信号を取り出し、ハフマンコードブック11番を用いたハフマンデコードを実行することを、4回繰り返す(ステップS112)。さらに、第2演算回路122は、そのセクションプログラムの2行目以降のハフマンデコード命令を順次実行する。そして、第2演算回路122は、そのセクションプログラムの“num_sect[N−1]”行目(最終行)のハフマンデコード命令を実行することにより、B信号から上述と同様の符号長の信号を取り出し、ハフマンコードブック10番を用いたハフマンデコードを実行することを、16回繰り返す(ステップS114)。なお、ステップS112〜S114においても上述と同様、第2演算回路122は、ハフマンデコードを1回実行するごとに出力アドレスを増進する。
ここで、処理プログラムに含まれる最初(g=0)のセクションプログラムの最後の行にある出力命令ついて説明する。この出力命令は、命令種類フィールドF1に“0010”が設定されることによって、パーシングをしないで0を出力することを指示する。さらに、この出力命令は、引数フィールドF2に設定された値の回数だけ処理を繰り返すことを指示する。プログラム生成部112aは、A信号に含まれている関連信号を用い、“sect_sfb_offset[g][sect_end[g][i]]−sect_sfb_offset[g][sect_start[g][i]]”を算出することにより、出力命令の引数フィールドF2に設定される値を決定している。この出力命令による処理は、図4に示す“spectral_data()”のシンタックスにおける、3行目のifの構文において、“sect_cb[g][i]”が“ZERO_HCB”であった場合に対応する処理、あるいは“sect_cb[g][i]”が“ESC_HCB”より大きい値であった場合に対応する処理に該当する。第2演算回路122は、このような出力命令を実行する場合、ハフマンデコードは行わず、出力値として0を生成し、例えば64回、その0を出力する。
図9は、本実施の形態の信号処理装置100の動作を示すフローチャートである。
まず、信号処理装置100の第1プロセッサ110は、ビットストリームの未処理のフレームの中から、A信号を取得する(ステップS200)。そして、第1プロセッサ110は、その取得したA信号から複数の関連信号を取り出し、取り出した何れかの関連信号を制御信号として用い、他の何れかの関連信号から他の制御信号を生成する。信号処理装置100は、それらの制御信号を用いて処理プログラムを生成して第2プロセッサ120に送信する(ステップS202)。
まず、信号処理装置100の第1プロセッサ110は、ビットストリームの未処理のフレームの中から、A信号を取得する(ステップS200)。そして、第1プロセッサ110は、その取得したA信号から複数の関連信号を取り出し、取り出した何れかの関連信号を制御信号として用い、他の何れかの関連信号から他の制御信号を生成する。信号処理装置100は、それらの制御信号を用いて処理プログラムを生成して第2プロセッサ120に送信する(ステップS202)。
次に、信号処理装置100の第2プロセッサ120は、上述のフレームの中からB信号を取得する(ステップS204)。そして、第2プロセッサ120は、第1プロセッサ110から送信された処理プログラムを受信し、その処理プログラムを実行することにより、B信号に含まれる複数の信号をそのB信号から取り出してデコードする(ステップS206)。このとき、第2プロセッサ120は、デコードにより生成された各信号をデータメモリ140に順次格納する。また、第2プロセッサ120は、データメモリ140への格納が完了すると、完了信号を第1プロセッサ110に送信する。
第2プロセッサ120から完了信号を受信した第1プロセッサ110は、ビットストリームに次の未処理のフレームがあるか否かを判別し(ステップS208)、あると判別したときには(ステップS208のY)、再びステップS200からの処理を繰り返し実行する。また、第1プロセッサ110は、未処理のフレームがないと判別したときには(ステップS208のN)、そのビットストリームに対する処理を終了する。
このように、本実施の形態では、第1プロセッサ110は、ビットストリームに含まれるフレームごとに、そのフレームに含まれるA信号に基づいて、そのフレームに含まれるB信号をパーシングするための処理プログラムを生成し、第2プロセッサ120に出力する。したがって、第2プロセッサ120は、多種多様なB信号をパーシングするための多種多様なプログラムを予め第2プログラムメモリ121に格納しておく必要がなく、第2プログラムメモリ121のサイズを小さくすることができる。また、第2プロセッサ120は、第1プロセッサ110から処理プログラムを取得するごとに、先に使用されていた実行済みの処理プログラムを消去することができる。その結果、第2プロセッサ120の第2プログラムメモリ121のサイズを、特定のB信号をパーシングするための処理プログラムだけを格納し得るサイズに抑えることができる。
また、本実施の形態では、処理プログラムに含まれる出力アドレス指定命令やハフマンデコード命令などの各命令は、複数種の命令を1つの命令に置き換えた高機能命令であって、第2プロセッサ120に備えられた第2プロセッサ120専用の命令である。例えば、ハフマンデコード命令は、その1つの命令で、ハフマンデコードの実行と、その実行に要するハフマンコードブックと、その実行回数とを指示する高機能命令である。また、プログラム中1行で表現される高機能命令によって第2プロセッサ120が実行する処理と同一の処理を、第1プロセッサ110などの他のプロセッサに対して命令する場合、プログラム中複数行に渡って記述される命令が必要となる。つまり、処理プログラムに含まれる高機能命令は、記述量が少なく、第2プロセッサ120に対してコンパクトに構成された専用命令である。
したがって、AACやMP3などの近年のオーディオデコード処理において多大の演算量を必要とするパーシングを実行させるためのプログラムを、記述量の少ない命令で、且つ少ない命令数で構成することができる。その結果、プログラムサイズをコンパクトにすることができるとともに、そのパーシングを高速に実行することができる。
さらに、本実施の形態では、処理プログラムが、ループ構造やifの構文による分岐構造を有しておらず直線的に実行可能なプログラムとして簡素に構成されているため、第2演算回路122の構成を簡単にすることができる。
したがって、本実施の形態では、プログラムメモリおよびプログラムサイズを小さくすることができ、且つ、第2演算回路122の構成を簡単にすることができるため、信号処理装置100全体の回路規模を小さくすることができる。
ここで、説明を簡単にするため、上述のハフマンデコード命令は、図4のシンタックスに示す信号“hcod[sect_cb[g][i]][w][x][y][z]”または信号“hcod[sect_cb[g][i]][y][z]”をB信号から取り出して狭義の意味でのハフマンデコードを第2プロセッサ120にさせた。しかし、図4のシンタックスにより構成されるB信号には、“quad_sign_bits”や、“pair_sign_bits”、“hcod_esc_y”、“hcod_esc_z”などの信号が含まれている場合がある。そして、これらの信号がB信号に含まれている場合には、それらの信号も取り出して処理する必要がある。
そこで、本実施の形態におけるプログラム生成部112aは、図4に示すシンタックスにより構成されるB信号を効率的に処理するため、ハフマンコードブック検索によって出力値を得る狭義の意味でのハフマンデコードだけでなく、その得られた出力値に基づいた後処理のプロセスも包含している所謂広義の意味でのハフマンデコードを指示するハフマンデコード命令を生成してもよい。
なお、プログラム生成部112aは、ハフマンデコード命令を、図7に示す命令ビットフィールドFと異なるフォーマットで生成することによって、第2プロセッサ120の第2演算回路122に、そのハフマンデコード命令を、広義の意味でのハフマンデコードを指示する命令と解釈させてもよい。この場合、第2演算回路122は、図7に示す命令ビットフィールドFと異なるフォーマットで表される命令を、広義の意味でのハフマンデコードを指示する命令として備えている。また、プログラム生成部112aは、ハフマンデコード命令を、図7に示す命令ビットフィールドFと同一のフォーマットで生成することによって、第2プロセッサ120の第2演算回路122に、そのハフマンデコード命令を、広義の意味でのハフマンデコードを指示する命令と解釈させてもよい。この場合、第2演算回路122は、図7に示す命令ビットフィールドFと同一のフォーマットで表される命令を、広義の意味でのハフマンデコードを指示する命令として備えている。
このようなハフマンデコード命令を実行する第2プロセッサ120の第2演算回路122は、ハフマンコードブック検索によって出力値を得る狭義の意味でのハフマンデコードに加え、その得られた出力値に基づいた後処理も実行する。
例えば、プログラム生成部112aは、ハフマンコードブック“sect_cb[g][i]”が“FIRST_PAIR_HCB”(AACの場合には、5を示す)より小さい場合は、“hcod[sect_cb[g][i]][w][x][y][z]”を取り出してハフマンコードブック検索によって出力値を得る狭義の意味でのハフマンデコードと、その後に、“quad_sign_bits”を取り出して処理することとを包含する広義の意味でのハフマンデコードを指示するハフマンデコード命令を生成する。
また、プログラム生成部112aは、ハフマンコードブック“sect_cb[g][i]”が“FIRST_PAIR_HCB”以上の場合は、“hcod[sect_cb[g][i]][y][z]”を取り出してハフマンコードブック検索によって出力値を得る狭義の意味でのハフマンデコードと、その後に、“pair_sign_bits”を取り出す処理と、さらに、“hcod_esc_y”または“hcod_esc_z”を取り出す処理である所謂エスケープシーケンスを取得する処理とを包含した広義の意味でのハフマンデコードを指示するハフマンデコード命令を生成する。なお、これらの処理の詳細については、MPEG(AAC方式)規格書(ISO/IEC13818−7:2003に記載されているので、ここでは省略する。
このように、本実施の形態では、上述の複数の処理を一括して実行させる高機能命令を生成することで、その高機能命令を実行する第2プロセッサ120の処理を高速化できると同時に、専用プログラムをコンパクトにすることができる。
さらに、AAC方式においては、例えば、狭義の意味のハフマンデコード結果である、パーシングされた“hcod[sect_cb[g][i]][y][z]”の示す値は、“y”と“z”とがグループ化されたものである。そして、極性符号である“pair_sign_bits”は、“y”および“z”のそれぞれが0でない場合、“y”と“z”との符号極性を表す。そこで、本実施の形態におけるプログラム生成部112aは、グループ化された“y”および“z”を元の“y”と“z”に分離し、さらに“pair_sign_bits”により示される符号極性を“y”および“z”のそれぞれに適用する処理までも実行させるような広義のハフマンデコード命令を生成してもよい。
第2プロセッサ120の第2演算回路122は、このような広義のハフマンデコード命令を実行することにより、“hcod[sect_cb[g][i]][y][z]”をB信号から取り出して狭義の意味のハフマンデコードを行い、その結果を“y”と“z”に分離する。そして、第2演算回路122は、B信号から“pair_sign_bits”を検出し、その“pair_sign_bits”が“1”を示す場合には、“y”および“z”の符号極性を例えば「負」に変換する。
同様に、狭義の意味のハフマンデコード結果である、パーシングされた“hcod[sect_cb[g][i]][w][x][y][z]”の示す値は、“w”、“x”、“y”および“z”がグループ化されたものである。そして、極性符号である“quad_sign_bits”は、“w”、“x”、“y”および“z”のそれぞれが0でない場合、“w”、“x”、“y”および“z”の符号極性を表す。そこで、本実施の形態におけるプログラム生成部112aは、グループ化された“w”、“x”、“y”および“z”を分離し、さらに“quad_sign_bits”により示される符号極性をそれぞれ“w”、“x”、“y”および“z”に適用する処理までも実行させるような広義のハフマンデコード命令を生成してもよい。
第2プロセッサ120の第2演算回路122は、このような広義のハフマンデコード命令を実行することにより、“hcod[sect_cb[g][i]][w][x][y][z]”をB信号から取り出して狭義の意味のハフマンデコードを行い、その結果を“w”、“x”、“y”および“z”に分離する。そして、第2演算回路122は、B信号から“quad_sign_bits”を検出し、例えば、その“quad_sign_bits”が“1”を示す場合には、“w”、“x”、“y”および“z”の符号極性を例えば「負」に変換する。
さらに、本実施の形態におけるプログラム生成部112aは、符号極性の適用により得られた結果に対し、逆量子化、例えば4/3乗の処理(w^(4/3)、x^(4/3)、y^(4/3)、z^(4/3))も実行させるような広義のハフマンデコード命令を生成してもよい。
つまり、第2プロセッサ120により実行される命令は、B信号を取り出す際、狭義の意味でのハフマンデコード処理のみならず、その後処理としての符号極性の処理や逆量子化の処理をも指示する高機能命令であって、第2プロセッサ120に対して専用の命令である。したがって、このような場合には、信号処理装置100の処理をさらに高速化できると同時に、生成するプログラムを直線的に処理可能なプログラムとしつつ、よりコンパクトにすることができる。
(変形例)
上記実施の形態では、処理対象のビットストリームがMPEG規格AAC方式の信号であるため、プログラム生成部112aは、主にハフマンデコード命令と出力命令とを含む処理プログラムを生成したが、他の命令を含む処理プログラムを生成してもよい。例えば、DTS方式では、非特許文献1で示されているように、バイナリーコード(固定長符号)とライスコード(可変長符号)とが併用されている。
上記実施の形態では、処理対象のビットストリームがMPEG規格AAC方式の信号であるため、プログラム生成部112aは、主にハフマンデコード命令と出力命令とを含む処理プログラムを生成したが、他の命令を含む処理プログラムを生成してもよい。例えば、DTS方式では、非特許文献1で示されているように、バイナリーコード(固定長符号)とライスコード(可変長符号)とが併用されている。
したがって、本変形例に係るプログラム生成部112aは、処理対象のビットストリームがDTS方式の信号の場合には、バイナリーコードをデコードする命令(以下、バイナリーデコード命令という)や、ライスコードをデコードする命令(以下、ライスデコード命令という)を含む処理プログラムを生成する。
バイナリーコードは、予め符号長が定められた固定長符号である。このようなバイナリーコードを含むフレームのA信号には、何個のバイナリーコードがB信号に格納されているかを示す個数情報と、1個あたりのバイナリーコードの符号長を示す符号長情報とがそれぞれ関連信号として格納されている。つまり、そのフレームのB信号には、そのA信号中の符号長情報によって示される符号長のバイナリーコードが、そのA信号中の個数情報により示される個数だけ格納されている。
図10は、バイナリーデコード命令が設定された命令ビットフィールドFの一例を示す図である。
例えば、図10に示すように、プログラム生成部112aは、命令ビットフィールドFの命令種類フィールドF1に、“0011”が設定され、引数フィールドF2の左側の4ビットからなる符号長指定フィールドF2cに“0101”が設定され、引数フィールドF2の右側の10ビットからなる実行回数指定フィールドF2dに“0000101100”が設定されるように、バイナリーデコード命令を生成する。つまり、このように設定された命令種類フィールドF1“0011”は、この命令ビットフィールドFにより示される命令がバイナリーデコード命令であることを指示し、符号長指定フィールドF2c“0101”は、バイナリーコードの符号長が“5”であることを指定している。さらに、実行回数指定フィールドF2d“0000101100”は、処理すべき信号(バイナリーコード)の個数が“44”であること、つまり、バイナリーコードのデコードを44回すべきことを指示している。
したがって、このようなバイナリーデコード命令を実行する第2プロセッサ120の第2演算回路122は、B信号から5ビット長のバイナリーコードを取り出してデコードすることを44回繰り返し実行する。
次に、ライスコードについて説明する。
図11は、ライスコードを含むビットストリーム(B信号)の一例を示す図である。
図11は、ライスコードを含むビットストリーム(B信号)の一例を示す図である。
例えば、図11に示すように、ビットストリームは、左側から“0000011001010111…”によって構成されている。図11中、一番左のビットは、ビットストリームの現在の先頭位置、つまり、1個目のライスコードの先頭位置である。
その1個目のライスコードをデコードする場合、最初に、先頭から連続する“0”の個数k(kは2進数で表記される)を検出する。この例では、“0”が5個連続するので、k=101(10進数表記で“5”に対応する2進数表記)となる。次に、その先頭から最初に出現する“1”の直後にある、予め別途与えられるKRビット数のビットを、そのビットストリームから取り出す。例えば、KR=4の場合、ビットストリームから取り出される値Vは、“1001”となる。
ここで、1個目のライスコードがデコードされた値は、“(k<<KR)|V”で与えられる。なお、“<<”は“k”を“KR”だけ左側へのビットシフトすることを意味する。上述の例では、k=101であるので、ライスコードがデコードされた値は、“1011001”となる。
同様に2個目のライスコードがデコードされた値は、“(1<<4)|0111”=“10111”となる。なお、このときにも、KRビット数は4である。即ち、ライスコードごとに、連続する“0”の個数に応じて符号長が増減するが、どのライスコードでも、取り出されるビットのKRビット数は一定である。つまり、KRビット数のビット列がライスコードの固定長部分に相当する。
図12は、ライスデコード命令が設定された命令ビットフィールドFの一例を示す図である。
例えば、図12に示すように、プログラム生成部112aは、命令ビットフィールドFの命令種類フィールドF1に、“0100”が設定され、引数フィールドF2の左側の4ビットからなる符号長指定フィールドF2cに“0100”が設定され、引数フィールドF2の右側の10ビットからなる実行回数指定フィールドF2dに“0000101100”が設定されるように、ライスデコード命令を生成する。つまり、このように設定された命令種類フィールドF1“0100”は、この命令ビットフィールドFにより示される命令がライスデコード命令であることを指示し、符号長指定フィールドF2c“0100”は、KRビット数が“4”であることを指定している。さらに、実行回数指定フィールドF2d“0000101100”は、ライスコードの個数が“44”であること、つまり、ライスコードのデコードを44回すべきことを指示している。
したがって、このようなライスデコード命令を実行する第2プロセッサ120の第2演算回路122は、B信号の先頭側から連続する“0”の個数kの検出し、その検出結果に基づいてB信号からKRビット数のビット“V”を取り出し、“(k<<KR)|V”を算出することを44回繰り返し実行する。
なお、バイナリーコードおよびライスコードのそれぞれをデコードすることにより得られる値そのものは、符号極性を有さない符号無し整数(unsigned integer)である。したがって、その値を符号化前の状態、即ち符号極性を有する符号有り整数(signed integer)に戻す必要がある。
そこで、第2演算回路122は、その符号無し整数の最下位ビットを極性符号として用い、その符号無し整数を符号有り整数に変換してもよい。即ち、第2演算回路122は、その取り出された符号無し整数を“U”とし、そこから生成される符号有り整数を“S”とすると、
“ If((U&1)==0)S=U>>1;
else S=〜(U>>1);”
によって、符号無し整数Uを符号有り整数Sに変換する。なお、“U&1”は符号無し整数の最下位ビットを示し、“〜”はビット反転演算子を示す。即ち、第2演算回路122は、符号無し整数Uの最下位ビットである極性符号が“0”の場合は、符号無し整数Uに含まれる最下位ビットを除く上位ビットの値をそのまま正の値として用いる。また、第2演算回路122は、符号無し整数Uの最下位ビットである極性符号が“1”の場合は、符号無し整数Uに含まれる最下位ビットを除く上位ビットの値をビット反転することによって負の値を生成する。
“ If((U&1)==0)S=U>>1;
else S=〜(U>>1);”
によって、符号無し整数Uを符号有り整数Sに変換する。なお、“U&1”は符号無し整数の最下位ビットを示し、“〜”はビット反転演算子を示す。即ち、第2演算回路122は、符号無し整数Uの最下位ビットである極性符号が“0”の場合は、符号無し整数Uに含まれる最下位ビットを除く上位ビットの値をそのまま正の値として用いる。また、第2演算回路122は、符号無し整数Uの最下位ビットである極性符号が“1”の場合は、符号無し整数Uに含まれる最下位ビットを除く上位ビットの値をビット反転することによって負の値を生成する。
このような正または負を示す極性符号を取り扱う処理は、上記のようなifおよびelseを含む構文からも明らかなように、条件分岐を伴う処理であるので、一般的に、処理サイクルが通常の演算より大きく、また、プログラムのサイズも増加する。そして、DTS方式においては、バイナリーコードおよびライスコードのそれぞれのコードごとに、上記の極性符号の処理が必ず存在する。
そこで、本変形例では、上述の図10または図12に示す1つのバイナリーデコード命令またはライスデコード命令で、極性符号を取り扱うif側else側の双方を包含するような処理も指示することにより、処理の高速化およびプログラムサイズの削減を図ることができる。
或いは、命令ビットフィールドFの値に応じて、上記各命令に、極性符号の処理まで指示するか否かを設定してもよい。例えば、図12に示したライスデコード命令では、命令種類フィールドF1に“0100”が設定される場合には、そのライスデコード命令は、極性符号の処理を除くデコードを指示する命令であって、命令種類フィールドF1に“1100”が設定される場合には、そのライスデコード命令は、極性符号の処理も含むデコードを指示する命令である。
以上、本発明に係る信号処理装置について、実施の形態およびその変形例を用いて説明したが、本発明は、これらに限定されるものではない。
例えば、オーディオ符号化方式においては、ビットストリームから取り出した信号や、その信号が処理されることにより生成された信号などをアドレスとして用い、予め値が確定しているテーブルから、そのアドレスに対応する値を導くという処理が頻繁に行われる。
そこで、プログラム生成部112aは、上述のハフマンデコード命令、バイナリーデコード命令またライスデコード命令により指示される処理の他、その処理によって生成された信号(アドレス)に対応する値をテーブルから導くという処理までも指示する命令を生成してもよい。つまり、そのように生成される命令は、B信号から信号を取り出してデコードし、そのデコードにより生成された信号をアドレスとして用い、そのアドレスに対応する値をテーブルから導くという処理を指示する。また、このような命令は、図7、図10または図12に示す命令ビットフィールドと同一のフォーマットで生成されてもよく、異なるフォーマットで生成されてもよい。
したがって、第2プロセッサ120の第2演算回路122は、例えば図7、図10または図12に示す命令ビットフィールドと同一のフォーマットで生成された命令を実行することにより、B信号からバイナリーコードなどの信号を取り出してデコードし、そのデコードにより生成された信号をアドレスとして用い、そのアドレスに対応する値をテーブルから導き、その値を示す信号を出力する。
また、プログラム生成部112aは、上述の各命令により指示される処理の他、所謂デグルーピング(degrouping)といわれる処理までも指示するような命令を生成してもよい。このデグルーピングは、P桁のN進数からなる信号の各桁の値を分離する処理、即ち、その信号をP個のN値のデータに分離する処理である。上述と同様、このような命令は、図7、図10または図12に示す命令ビットフィールドと同一のフォーマットで生成されてもよく、異なるフォーマットで生成されてもよい。
したがって、第2プロセッサ120の第2演算回路122は、例えば図7、図10または図12に示す命令ビットフィールドと同一のフォーマットで生成された命令を実行することにより、B信号からバイナリーコードなどの信号を取り出してデコードし、そのデコードにより生成された信号をデグルーピングし、そのデグルーピングにより生成された信号を出力する。
このように、プログラム生成部112aが上述のような複数の処理を指示する高機能命令を生成する場合、第2プロセッサ120の第2演算回路122は、その高機能命令を備えて、その高機能命令に応じた複数の処理を実行する。
また、第1プロセッサ110の第1演算回路112は、第2プロセッサ120が生成した信号が格納されているデータメモリ140から、そのデータを取り出し、適宜そのデータを処理してもよい。例えば、ビットストリームがAAC方式の圧縮符号化信号である場合には、データメモリ140に格納されているデータは、ハフマンデコードにより生成された信号である。この信号は周波数スペクトル信号である。したがって、第1演算回路112は、その周波数スペクトル信号をデータメモリ140から取り出して時間軸信号に変換する処理、つまり改良コサイン変換(MDCT)の処理などを実行してもよい。
また、上記実施の形態およびその変形例における信号処理装置100は、例えばDVDプレーヤなどに備えられてもよい。
図13は、DVDレコーダの外観を示す図である。
DVDレコーダ100aは、上記実施の形態およびその変形例における信号処理装置100を備え、ビットストリームをデコードして再生する。このように、DVDレコーダ100aに信号処理装置100を備えることにより、DVDレコーダ100aの回路構成を小さくすることができる。
また、上記実施の形態およびその変形例における信号処理装置100は、入力バッファ150に格納される信号をビットストリームとし、そのビットストリームをデコード(可変長復号化)したが、他の処理を実行してもよい。
本発明にかかる信号処理装置は、複数のプロセッサを用いて分散処理する際、最適なサイズのプログラムを逐次生成し実行することで、高速でありながら回路規模を小さくできるので、例えばAV機器や、通信機器などに応用でき、具体的には、例えばDVDレコーダや、BDレコーダ、テレビ受信機、高速エンコーダ、携帯端末などに応用できる。
100 信号処理装置
110 第1プロセッサ
111 第1プログラムメモリ
112 第1演算回路
112a プログラム生成部
120 第2プロセッサ
121 第2プログラムメモリ
122 第2演算回路
130 セレクタ
140 データメモリ
150 入力バッファ
110 第1プロセッサ
111 第1プログラムメモリ
112 第1演算回路
112a プログラム生成部
120 第2プロセッサ
121 第2プログラムメモリ
122 第2演算回路
130 セレクタ
140 データメモリ
150 入力バッファ
Claims (13)
- 第1の信号と前記第1の信号に対応する第2の信号とが交互にパッキングされている入力信号を処理する信号処理装置であって、
前記入力信号を格納している格納手段と、
前記格納手段に格納されている入力信号から第1の信号を取り出し、前記第1の信号に含まれている、第2の信号に関する少なくとも1つの関連信号を用いることで、前記第1の信号に対応する第2の信号を処理するためのプログラムを生成する第1のプロセッサと、
前記第1のプロセッサにより生成されたプログラムを取得して実行することにより、前記第1の信号に対応する第2の信号を処理する第2のプロセッサと
を備えることを特徴とする信号処理装置。 - 前記第1のプロセッサは、前記入力信号から前記第1の信号を取り出すごとに、当該第1の信号に対応する第2の信号を処理するためのプログラムを生成し、
前記第2のプロセッサは、前記第1のプロセッサからプログラムを取得するごとに、前記プログラムを実行するとともに、実行済みのプログラムを消去する
ことを特徴とする請求項1記載の信号処理装置。 - 前記第2のプロセッサは専用命令を備え、
前記第1のプロセッサは前記専用命令を含む前記プログラムを生成し、
前記専用命令は、当該専用命令によって第2のプロセッサが実行する処理と同一の処理を第1のプロセッサに実行させるための命令よりも少ない記述量で記述される
ことを特徴とする請求項1記載の信号処理装置。 - 前記第1のプロセッサは、複数の前記専用命令を含み、複数の前記専用命令を分岐することなく順次実行させる前記プログラムを生成する
ことを特徴とする請求項3記載の信号処理装置。 - 前記第2の信号には、複数の固定長符号がパッキングされ、
前記第1の信号には、前記第2の信号に含まれている固定長符号の符号長に関する前記関連信号と、前記第2の信号に含まれている固定長符号の個数に関する前記関連信号とが含まれ、
前記専用命令は、固定長符号の符号長が設定されるフィールドと、固定長符号の個数が設定されるフィールドとを有する、固定長符号のアンパッキングを指示する命令であり、
前記第1のプロセッサは、複数の前記関連信号に応じて、前記第2の信号に含まれている固定長符号の符号長および個数を特定するとともに、前記符号長および個数が設定された、固定長符号のアンパッキングを指示する前記専用命令を生成し、
前記第2のプロセッサは、前記専用命令を実行することにより、前記専用命令に設定された符号長の固定長符号を、前記専用命令に設定された個数だけ前記第2の信号からアンパッキングする
ことを特徴とする請求項4記載の信号処理装置。 - 前記第2の信号には、複数のハフマン符号がパッキングされ、
前記第1の信号には、前記第2の信号に含まれているハフマン符号を復号するためのコードブックの識別子に関する前記関連信号と、前記第2の信号に含まれているハフマン符号の個数に関する前記関連信号とが含まれ、
前記専用命令は、コードブックの識別子が設定されるフィールドと、ハフマン符号の個数が設定されるフィールドとを有する、ハフマン符号のアンパッキングを指示する命令であり、
前記第1のプロセッサは、複数の前記関連信号に応じて、前記第2の信号に含まれているハフマン符号のコードブックの識別子およびハフマン符号の個数を特定し、前記識別子および個数が設定された、ハフマン符号をアンパッキングするための前記専用命令を生成し、
前記第2のプロセッサは、前記専用命令を実行することにより、前記専用命令に設定されたコードブックの識別子を用い、前記専用命令に設定された個数のハフマン符号を前記第2の信号からアンパッキングする
ことを特徴とする請求項4記載の信号処理装置。 - 前記第2の信号には、複数のライス符号がパッキングされ、
前記第1の信号には、前記第2の信号に含まれているライス符号の固定長部分の符号長に関する前記関連信号と、前記第2の信号に含まれているライス符号の個数に関する前記関連信号とが含まれ、
前記専用命令は、ライス符号の固定長部分の符号長が設定されるフィールドと、ライス符号の個数が設定されるフィールドとを有する、ライス符号のアンパッキングを指示する命令であり、
前記第1のプロセッサは、複数の前記関連信号に応じて、前記第2の信号に含まれているライス符号の固定長部分の符号長およびライス符号の個数を特定し、前記符号長および個数が設定された、ライス符号をアンパッキングするための前記専用命令を生成し、
前記第2のプロセッサは、前記専用命令を実行することにより、前記専用命令に設定された符号長の固定長部分を含むライス符号を、前記専用命令に設定された個数だけ前記第2の信号からアンパッキングする
ことを特徴とする請求項4記載の信号処理装置。 - 前記専用命令は、連続する0または1の数の検出と信号出力とを指示する命令であり、
前記第2のプロセッサは、前記専用命令を実行することにより、前記第2の信号に含まれる連続する0または1の数を検出し、検出した数に応じた信号を出力する
ことを特徴とする請求項4記載の信号処理装置。 - 前記第2の信号には、複数の処理対象符号および極性符号がパッキングされ、
前記第1のプロセッサは、処理対象符号のアンパッキングと、極性符号の検出と、符号極性の変換とを指示する前記専用命令を生成し、
前記第2のプロセッサは、前記専用命令を実行することにより、前記第2の信号から処理対象符号を順次アンパッキングし、前記処理対象符号をアンパッキングするごとに、当該処理対象符号に対応する極性符号を前記第2の信号の中から検出し、検出した極性符号の示す符号極性に当該処理対象符号の符号極性を変換する
ことを特徴とする請求項4記載の信号処理装置。 - 前記第2の信号には、複数の量子化符号がパッキングされ、
前記第1のプロセッサは、量子化符号のアンパッキングと逆量子化とを指示する前記専用命令を生成し、
前記第2のプロセッサは、前記専用命令を実行することにより、前記第2の信号から量子化符号を順次アンパッキングして逆量子化する
ことを特徴とする請求項4記載の信号処理装置。 - 第1の信号と前記第1の信号に対応する第2の信号とが交互にパッキングされている入力信号を処理する信号処理方法であって、
第1のプロセッサが、格納手段に格納されている入力信号から第1の信号を取り出し、前記第1の信号に含まれている、第2の信号に関する少なくとも1つの関連信号を用いることで、前記第1の信号に対応する第2の信号を処理するためのプログラムを生成するプログラム生成ステップと、
第2のプロセッサが、前記第1のプロセッサにより生成されたプログラムを取得して実行することにより、前記第1の信号に対応する第2の信号を処理する処理ステップと
を含むことを特徴とする信号処理方法。 - 第1の信号と前記第1の信号に対応する第2の信号とが交互にパッキングされている入力信号を処理するためのプログラムであって、
第1のプロセッサが、格納手段に格納されている入力信号から第1の信号を取り出し、前記第1の信号に含まれている、第2の信号に関する少なくとも1つの関連信号を用いることで、前記第1の信号に対応する第2の信号を処理するための処理プログラムを生成する処理プログラム生成ステップと、
第2のプロセッサが、前記第1のプロセッサにより生成された処理プログラムを取得して実行することにより、前記第1の信号に対応する第2の信号を処理する処理ステップと
を前記第1および第2のプロセッサに実行させることを特徴とするプログラム。 - 第1の信号と前記第1の信号に対応する第2の信号とが交互にパッキングされている入力信号を処理する集積回路であって、
格納手段に格納されている入力信号から第1の信号を取り出し、前記第1の信号に含まれている、第2の信号に関する少なくとも1つの関連信号を用いることで、前記第1の信号に対応する第2の信号を処理するためのプログラムを生成する第1のプロセッサと、
前記第1のプロセッサにより生成されたプログラムを取得して実行することにより、前記第1の信号に対応する第2の信号を処理する第2のプロセッサと
を備えることを特徴とする集積回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008058121A JP2008257221A (ja) | 2007-03-13 | 2008-03-07 | 信号処理装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007063204 | 2007-03-13 | ||
JP2008058121A JP2008257221A (ja) | 2007-03-13 | 2008-03-07 | 信号処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008257221A true JP2008257221A (ja) | 2008-10-23 |
Family
ID=39762274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008058121A Pending JP2008257221A (ja) | 2007-03-13 | 2008-03-07 | 信号処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080225173A1 (ja) |
JP (1) | JP2008257221A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012210119A1 (de) | 2011-06-15 | 2012-12-20 | Denso Corporation | Codiervorrichtung, codierverfahren, datenkommunikationsvorrichtung und datenkommunikationsverfahren |
JP2016224972A (ja) * | 2016-08-08 | 2016-12-28 | 株式会社Dnpハイパーテック | モジュールの暗号化/復号化プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884269A (en) * | 1995-04-17 | 1999-03-16 | Merging Technologies | Lossless compression/decompression of digital audio data |
US6081783A (en) * | 1997-11-14 | 2000-06-27 | Cirrus Logic, Inc. | Dual processor digital audio decoder with shared memory data transfer and task partitioning for decompressing compressed audio data, and systems and methods using the same |
US20030012431A1 (en) * | 2001-07-13 | 2003-01-16 | Irvine Ann C. | Hybrid lossy and lossless compression method and apparatus |
KR100908114B1 (ko) * | 2002-03-09 | 2009-07-16 | 삼성전자주식회사 | 스케일러블 무손실 오디오 부호화/복호화 장치 및 그 방법 |
US7424434B2 (en) * | 2002-09-04 | 2008-09-09 | Microsoft Corporation | Unified lossy and lossless audio compression |
-
2008
- 2008-03-07 JP JP2008058121A patent/JP2008257221A/ja active Pending
- 2008-03-11 US US12/046,087 patent/US20080225173A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012210119A1 (de) | 2011-06-15 | 2012-12-20 | Denso Corporation | Codiervorrichtung, codierverfahren, datenkommunikationsvorrichtung und datenkommunikationsverfahren |
DE102012210119B4 (de) * | 2011-06-15 | 2017-07-13 | Denso Corporation | Codiervorrichtung und Codierverfahren |
JP2016224972A (ja) * | 2016-08-08 | 2016-12-28 | 株式会社Dnpハイパーテック | モジュールの暗号化/復号化プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20080225173A1 (en) | 2008-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4724452B2 (ja) | デジタルメディア汎用基本ストリーム | |
JP5270717B2 (ja) | オーディオ信号デコーディング方法、オーディオ信号デコーディング装置及びオーディオ信号を処理するシステム | |
JP5329963B2 (ja) | 信号処理方法及び装置、エンコーディング及びデコーディング方法並びにそのための装置 | |
RU2711055C2 (ru) | Устройство и способ для кодирования или декодирования многоканального сигнала | |
JP2011516902A (ja) | ランダムアクセスポイント(rap)及び多重予測パラメータセット(mpps)機能を備えた適応セグメンテーションを使用する無損失マルチチャンネルオーディオコーデック | |
TW201036449A (en) | Video encoder, video decoder, video coding method, video decoding method, video coding program, video decoding program, and video coding/decoding system | |
KR100954180B1 (ko) | 보장된 최대 비트 레이트를 가지는 정보의 무손실 인코딩 | |
JP2017526252A (ja) | エンコーダ、デコーダ、および方法 | |
JP6465020B2 (ja) | 復号装置および方法、並びにプログラム | |
KR20120096541A (ko) | 디지털 신호의 압축 또는 압축해제를 위한 방법, 시스템 및 장치 | |
JP2008257221A (ja) | 信号処理装置 | |
JP4918103B2 (ja) | 符号化方法、復号方法、それらの装置、プログラム及び記録媒体 | |
JP4763853B2 (ja) | 可変長符号復号化装置及びその方法 | |
JP7318645B2 (ja) | 符号化装置および方法、復号装置および方法、並びにプログラム | |
KR100686354B1 (ko) | 가변 트리를 이용한 허프만 복호화 방법 및 장치 | |
KR101171373B1 (ko) | 복호화 장치 및 비트스트림 복호화를 위한 구문 해석 방법 | |
EA043408B1 (ru) | Кодирование видео и декодирование видео | |
JP2004247909A (ja) | ディジタル信号符号化方法、復号化方法、符号器、復号器、符号化プログラム、及び復号化プログラム | |
KR20070042489A (ko) | 복호화 장치 및 비트스트림 복호화를 위한 구문 해석 방법 |