JP4862894B2 - 符号化装置と方法及びプロセッサ - Google Patents

符号化装置と方法及びプロセッサ Download PDF

Info

Publication number
JP4862894B2
JP4862894B2 JP2008547000A JP2008547000A JP4862894B2 JP 4862894 B2 JP4862894 B2 JP 4862894B2 JP 2008547000 A JP2008547000 A JP 2008547000A JP 2008547000 A JP2008547000 A JP 2008547000A JP 4862894 B2 JP4862894 B2 JP 4862894B2
Authority
JP
Japan
Prior art keywords
index
stored
storage
zero signal
storage means
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
JP2008547000A
Other languages
English (en)
Other versions
JPWO2008066050A1 (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 JP2008547000A priority Critical patent/JP4862894B2/ja
Publication of JPWO2008066050A1 publication Critical patent/JPWO2008066050A1/ja
Application granted granted Critical
Publication of JP4862894B2 publication Critical patent/JP4862894B2/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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • 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/93Run-length coding

Landscapes

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

Description

[関連出願の記載]
本発明は、日本国特許出願:特願2006−320278号(2006年11月28日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は圧縮符号化技術に関し、特に画像や音声の圧縮符号化において使用されるランレングス符号化に好適な符号化装置と方法及びプロセッサ並びにプログラムに関する。
ランレングス符号化とは画像や音楽の信号を圧縮する際に用いられる符号化方式である。例えば、JPEG(Joint Photographic Experts Group)、MPEG−2(Moving Picture Experts Group Phase-2)、MPEG−4(Moving Picture Experts Group Phase-4)、H.264などの画像符号化方式はランレングス符号化を用いている。
ランレングス符号化は0が頻繁に出現する信号の圧縮に適している。ランレングス符号化は非0信号の前に出現する0の数とその非0信号の値とを一組の情報として符号化する。
ビデオ符号化方式H.264における4x4ブロックの符号化方法を例にとって、ランレングス符号化について説明する。図5はH.264における4x4ブロックの符号化手順を表す図である。図5(A)において4x4ブロックはDCT(Discrete Cosine Transform)後の係数である。図5(B)に示すように、4x4ブロックにある係数をジグザグにスキャンして、図5(C)に示ように係数を並び替える。
並び替えた係数の中から、非0係数と0係数を見つけて、
(1)各非0係数の前の0の数、
(2)各非0係数の値、
(3)非0係数の個数、
などの情報を取り出す。
上記の(1)、(2)、(3)を効率よく取り出すには、非0係数の位置を見つければよい。
非0係数の位置とはジグザグにスキャンして並び変えた係数の並び順を表すインデックスである。最初の係数のインデックスを0とし、その次の係数のインデックスを1、その次を2、・・・とする。
非0係数のインデックスがわかれば、非0係数の数や、非0係数の前の0の数を計算することができる。
しかし、従来のCPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサは高速に非0係数のインンデックスを求めることができない。従来のCPUやDSPはランレングス符号化の高速処理に不向きである。
CPUやDSPなどのプロセッサでは、通常、係数を順番にスキャンすることによって非0係数のインデックスを見つける。係数を順番にスキャンすると、係数の個数分の手間がかかる。そのため、従来のプロセッサは非0係数のインデックスを効率よく見つけることができない。
0の数を数える処理が必要なランレングス符号化は逐次的な処理である。このため、ランレングス符号化を並列化することは一般的に困難である。
もし0の数を数える処理を並列化できれば、プロセッサにおけるランレングス符号化を従来よりも高速化できる。
なお、0の数を数える処理を並列化する方法が特許文献1に開示されている。特許文献1に開示された方法は、信号を″0か否か″という1ビットのフラグで表し、複数個のフラグを一つのキーとして使ってランレングス・テーブルからランレングスを求める。つまり、ランレングスを求めるためにランレングス・テーブルを使用する。特許文献1によれば、ランレングス・テーブルには256要素の情報が格納される。
信号を順番にスキャンしながらランレングスを求めるよりも、特許文献1の方法でランレングスを求める方が少ないステップ数でランレングスを求めることができる。
一方、特許文献2にはランレングス符号化を実行する符号化装置と方法が開示されている。特許文献2のランレングス符号化装置は、
(a)入力信号のゼロ判定、
(b)ランレングス計算、
という手順でランレングスを求める。(a)の処理は全ての入力信号について0か否かを判定し、その判定結果を記憶しておく。そして、その判定結果に基づいて非0信号の前に存在する0の数を計算する。
特開2003−330911号公報 特開2004−166083号公報
以上の特許文献1及び2の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下に本発明による関連技術の分析を与える。
上記した特許文献1の方法は、ランレングス・テーブルを必要とする。ランレングス・テーブルは256要素の情報をもつ比較的小さなテーブルではあるものの、ランレングス・テーブルを参照する動作はプロセッサのキャッシュミスヒットを起こす要因となる。また特許文献1の方法でも、ランレングスを求めるのに多くのステップが必要である。例えば、特許文献1によると(特許文献1の図7と関連説明参照)、一つのランレングスを求めるために10ステップ程度の処理が必要となる。
一方、上記した特許文献2の符号化装置の場合、全ての入力信号について、ゼロ判定結果を記憶手段へ保存する必要がある。全ての入力信号のゼロ判定結果を保存する場合、入力信号の最大数が予めわかっている必要がある。さらに、全ての入力信号のゼロ判定結果を保存する記憶手段が必要となる。入力信号の数が多い場合、記憶手段の容量も大きくなる。一例として入力信号の数が16x16=256個の場合、256ビットのゼロ判定結果を格納する記憶手段が必要となる。
しかしながら、非0信号のインデックスだけを記憶することにすれば、その記憶手段の容量を小さくできる。
上記したように、従来のプロセッサ/符号化装置はランレングス符号化を効率良く実行できない、という問題がある。
具体的には、
ランレングス・テーブルが必要である、
ランレングスを求めるためにステップ数が多い、
全信号のゼロ判定結果を格納するための記憶手段が必要である、
等の問題がある。
したがって、本発明の主たる目的は、ランレングス符号化における非0信号の位置を効率良く求めることができる装置と方法及びプロセッサ、プログラムを提供することにある。
本願で開示される発明は、前記目的を達成するため、概略以下の構成とされる。
本発明の符号化装置は、符号化対象となる信号をランレングス符号化する符号化装置であって、符号化対象となる複数の信号をそれぞれ区別するためにインデックスが付与された信号を格納する第一記憶手段と、
インデックスを格納するための第二記憶手段と、
前記第一記憶手段に格納された前記信号のうち非0信号の第一インデックスを計算する第一インデックス計算手段と、
ベースインデックスと前記第一インデックスとから第二インデックスを計算する第二インデックス計算手段と、
前記第二記憶手段に格納されたインデックスの値にもとづいて、前記第二インデックスを格納すべき前記第二記憶手段における格納位置を探索する第二インデックス格納位置探索手段と、
前記第二インデックス格納位置探索手段が探索した格納位置にもとづいて、前記第二インデックスを前記第二記憶手段へ格納する第二インデックス格納手段と、
前記ベースインデックスを前記第二インデックス計算手段へ与えるとともに、前記第一インデックス計算手段、前記第二インデックス計算手段、前記第二インデックス格納位置探索手段、及び第二インデックス格納手段の動作をそれぞれ制御する制御手段と、
を備える。
本発明の符号化装置は、前記第二インデックス格納位置探索手段は前記第二インデックスが前記第二記憶手段へ昇順または降順に格納されるような格納位置を探索する手段、を備えてもよい。本発明の符号化装置は、前記第二記憶手段へ格納された非0信号のインデックスの隣接する要素間の差を計算する手段と、
前記要素間の差から1を減算することによって非0信号の前にある0の数を求める手段と、を備えていてもよい。
本発明のプロセッサは、レジスタファイルと、非0信号検出ユニットと、命令デコーダとを備え、
ランレングス符号化の対象となるS個の信号に対して0からS−1までのインデックスを付けて、前記S個の信号から取り出されたN個(ただし、NはS以下、2以上の整数)の信号s(n)(n=0〜N−1)が前記レジスタファイルの第一のレジスタに格納され、
前記N個の信号の信号s(0)の前記インデックスをベースインデックスとして、
前記レジスタファイルの第二のレジスタにはK個(ただし、Kは信号総数Sよりも小の正整数)の初期化されたインデックスx(k)(k=0〜K−1)が予め格納されており、
デコードした命令が非0信号検出命令であるときに前記命令デコーダは前記非0信号検出ユニットを動作させ、
前記命令デコーダは前記ベースインデックスを前記非0信号検出ユニットに与え、
前記非0信号検出ユニットは、
前記レジスタファイルの前記第一のレジスタから信号s(n)(n=0〜N−1)を読み込み、前記ベースインデックスを用いて、前記信号s(n)に含まれる非0信号のインデックスp(m)(m=0〜M−1、Mは信号s(n)に含まれる非0信号の数)を計算する第一の手段と、
前記レジスタファイルの前記第二のレジスタに格納されたインデックスx(k)(k=0〜K−1)と前記非0信号のインデックスp(m)とを用いて、前記p(m)を前記x(k)へ追加したインデックスを更新後のインデックスy(k)(k=0〜K−1)とする第二の手段と、
前記更新後のインデックスy(k)(k=0〜K−1)を前記第二のレジスタへ書き込む第三の手段と、
を備える。
本発明に係るプロセッサにおいて、前記第二の手段は、前記インデックスx(k)(k=0〜K−1)において最もkが小さい負のインデックスx(k)をx(G)として、前記更新後のインデックスy(k)(k=0〜K−1)を、
0<=k<Gの場合に、
y(k)=x(k)
とし、
G<=k<(G+M)の場合に、
y(k)=p(k−G)
とし、
(G+M)<=k<Kの場合に、
y(k)=x(k)
としてもよい。
本発明に係るプロセッサにおいて、符号化対象のS個の信号をN個ずつL組にわけ、
前記第二のレジスタに所定値を格納して前記インデックスx(k)を初期化し、
変数i=0として0からL−1までiを1ずつ増加させながら、
i番目のN個の信号の組s(n)(n=0〜N−1)を前記第一のレジスタへ格納し、
前記ベースインデックスをN×iとして前記非0信号検出ユニットを動作させ、
前記第一のレジスタに格納された前記信号s(n)の非0信号のインデックスを前記第二のレジスタへ追加し、
上記処理を繰り返す構成としてもよい。
本発明に係るプロセッサにおいて、前記信号s(n)の非0信号のインデックスx(k)に対して番号kが大きくなる方向へx(k)を1個分ずらしたものをa(k)とし、
x(k)とa(k)の差b(k)=x(k)−a(k) (k=0〜N−1)を求め、
次にb(k)から2×Nとの和c(k)=b(k)+2×N (k=0〜N−1)を求め、
次にc(k)の所定下位ビットを抽出したものをd(k)として e(k)=d(k)−1 (k=0〜N−1) を求め、
番号kが小さくなる方向へe(k)を1個分ずらしたものをz(k)として、
z(k)をx(k)の各要素に対応するランレングスとする、という構成にしてもよい。
本発明によれば、符号化対象となる信号をランレングス符号化する符号化方法であって、符号化対象となる複数の信号をそれぞれ区別するためにインデックスが付与された信号を格納する第一記憶手段に格納された前記信号のうち非0信号の第一インデックスを計算する第一インデックス計算工程と、
ベースインデックスと前記第一インデックスとから第二インデックスを計算する第二インデックス計算工程と、
インデックスを格納する第二記憶手段に格納されたインデックスの値にもとづいて、前記第二インデックスを格納すべき前記第二記憶手段における格納位置を探索する第二インデックス格納位置探索手工程と、
前記第二インデックス格納位置探索工程で探索された格納位置にもとづいて、前記第二インデックスを前記第二記憶手段へ格納する第二インデックス格納工程と、
前記ベースインデックスを前記第二インデックス計算工程へ与えるとともに、前記第一インデックス計算工程、前記第二インデックス計算工程、前記第二インデックス格納位置探索工程、及び第二インデックス格納工程の動作をそれぞれ制御する工程と、
を含む符号化方法が提供される。
本発明によれば、符号化対象となる信号をランレングス符号化する符号化装置を構成するコンピュータに、
符号化対象となる複数の信号をそれぞれ区別するためにインデックスが付与された信号を格納する第一記憶手段に格納された前記信号のうち非0信号の第一インデックスを計算する第一インデックス計算処理と、
ベースインデックスと前記第一インデックスとから第二インデックスを計算する第二インデックス計算処理と、
インデックスを格納するための第二記憶手段に格納されたインデックスの値にもとづいて、前記第二インデックスを格納すべき前記第二記憶手段における格納位置を探索する第二インデックス格納位置探索手処理と、
前記第二インデックス格納位置探索処理で探索された格納位置にもとづいて、前記第二インデックスを前記第二記憶手段へ格納する第二インデックス格納処理と、
前記ベースインデックスを前記第二インデックス計算処理へ与えるとともに、前記第一インデックス計算処理、前記第二インデックス計算処理、前記第二インデックス格納位置探索処理、及び第二インデックス格納処理の動作をそれぞれ制御する処理と、
を実行させるプログラムが提供される。
本発明によれば、ランレングス符号化における非0信号の位置を求める処理を効率良く実行できる。その理由は、ランレングス符号化における非0信号の位置を求めるにあたり、ランレングス・テーブルを用いずに、従来装置と比べて少ないステップ数で実行できるようにしたためである。本発明によれば、全ての信号のゼロ判定結果を格納するための記憶手段を不用としている。
本発明の一実施例の構成を表す図である。 本発明の一実施例の非0信号検出ユニットの動作を説明する図である。 本発明の一実施例の動作を説明する図である。 本発明の一実施例において、N個より多い数の信号から非0信号のインデックスを求める手順を説明するための図である。 H.264における4x4ブロックの符号化手順を表す図である。 本発明の一実施例において、非0信号のインデックスからランレングスを求める手順を説明するための図である。
符号の説明
110 レジスタファイル
111、112 レジスタ
120 非0信号検出ユニット
121 第一インデックス計算ユニット
122 第二インデックス計算ユニット
123 第二インデックス格納位置探索ユニット
124 第二インデックス格納ユニット
130 命令デコーダ
上記した本発明についてさらに詳細に説明すべく、添付図面を参照して以下に説明する。本発明は、ランレングス符号の符号化器として動作可能なプロセッサであって、N個の信号を格納するための第一記憶手段(図1の110、図2の111)と、複数のインデックスを格納するための第二記憶手段(図1の110、図2の112)と、第一記憶手段に格納されたN個の信号から非0信号の第一インデックスを求める第一インデックス計算ユニット(図1の121)と、ベースインデックスと第一インデックスとの和を第二インデックスとする第二インデックス計算ユニット(図1の122)と、第二記憶手段(図1の110、図2の112)に格納されたインデックスの値にもとづいて第二インデックスを格納すべき第二記憶手段(図1の110、図2の112)の格納位置を探索する第二インデックス格納位置探索ユニット(図1の123)と、第二インデックス格納位置探索ユニット(図1の123)が探索した格納位置にもとづいて第二インデックスを第二記憶手段(図2の112)へ格納する第二インデックス格納ユニット(図1の124)と、プロセッサに与えられた命令に応答して、命令語に対応するベースインデックスを第二インデックス計算ユニットへ与え、第一インデックス計算ユニットと第二インデックス計算ユニットと第二インデックス格納位置探索ユニットと第二インデックス格納ユニットとの動作を制御する命令デコーダ(図1の130)と、を備えている。以下実施例に即して詳細に説明する。
図1は、本発明の一実施例の構成を示す図である。図1を参照すると、本実施例のプロセッサは、レジスタファイル110と、非0信号検出ユニット120と、命令デコーダ130を備え、ランレングス符号化を実行する。
レジスタファイル110は、複数のレジスタからなる。レジスタファイル110のレジスタにランレングス符号化に必要な以下の二種類のデータを格納する。
・ランレングス符号化の対象となるN個の信号。
・ランレングス符号化の過程で生成される非0信号のインデックス。
非0信号検出ユニット120は、レジスタファイル110からランレングス符号化の対象となるN個の信号と、非0信号のインデックスとを読み込む。
非0信号検出ユニット120は命令デコーダ130から与えられたベースインデックスを取り込み、N個の信号の非0信号のインデックスを求め、求めたインデックスに基づいて、レジスタファイル110から読み込んだインデックスを更新し、更新したインデックスをレジスタファイル110へ格納する。
非0信号検出ユニット120は、第一インデックス計算ユニット121と、第二インデックス計算ユニット122と、第二インデックス格納位置探索ユニット123と、第二インデックス格納ユニット124とを備えている。
第一インデックス計算ユニット121は、レジスタファイル110からランレングス符号化の対象となるN個の信号と、非0信号のインデックスと、を読み込み、N個の信号のなかの非0信号の第一インデックスを求める。
第二インデックス計算ユニット122は、第一インデックス計算ユニット121で求められた第一インデックスと、プロセッサの命令デコーダ130から与えられたベースインデックスとの和を計算し、第一インデックスとベースインデックスとの和を第二インデックスとする。
第二インデックス格納位置探索ユニット123は、レジスタファイル110に格納されたインデックスの値に基づいて、第二インデックスをレジスタファイル110のどの位置に格納すべきか探索する。
第二インデックス格納ユニット124は、第二インデックス格納位置探索ユニット123が探索した格納位置に基づいて、第二インデックスをレジスタファイル110へ格納する。
命令デコーダ130は命令をデコードするユニットである。命令デコーダ130は、非0信号のインデックスを求める命令に応答して、命令語に対応するベースインデックスを第二インデックス計算ユニット122へ与え、第一インデックス計算ユニット121と第二インデックス計算ユニット122と第二インデックス格納位置探索ユニット123と第二インデックス格納ユニット124とを動作させる。
本実施例の動作について説明する。以下では、ランレングス符号化の対象となる信号がS個あると仮定する。
本実施例においては、ランレングス符号化の対象となるS個の信号をN個の信号からなる複数の信号グループに分ける。ただしN<=Sとする。もしSがNと等しいなら、信号グループの数は一つだけである。
N個の信号に含まれる非0信号のインデックスを求める手順について説明する。この手順をN個毎にグループ分けされた全ての信号グループについて繰り返すことによって、S個の信号に含まれる非0信号のインデックスを求めることができる。
初めに、ランレングス符号化の対象となるS個の信号から一つの信号グループを取り出す。その信号グループに含まれるN個の信号s(n)(n=0、1、2、...、N−1)をレジスタファイル110へ格納する。
N個の信号s(n)の最初の信号s(0)のインデックスをBとする。Bを信号s(n)(n=0、1、2、...、N−1)のベースインデックスとする。
S個の信号のインデックス0からB−1までの信号に対する非0信号のインデックスがレジスタファイル110に格納されているものとする。レジスタファイル110に格納されている非0信号のインデックスをx(k)(k=0、1、2、...、K−1)と表すことにする。インデックスx(k)の個数Kは信号の個数N以上であるとする(N<=K)。
ランレングス符号化では一般に0の信号の出現頻度が高く、非0信号の出現頻度が低い。したがって、信号の総数Sよりも非0信号のインデックスの数Kは少ないのが一般的である(K<S)。
正常な非0信号のインデックスは0以上の値をとる。このことを利用して正常な非0信号のインデックスか否かを判定する。
全ての演算を開始する前に、レジスタファイル110に格納されているK個の非0信号のインデックスx(k)(k=0、1、2、...、K−1)を負の値で初期化しておく。例えばx(k)へ−1を代入しておく。
信号s(n)(n=0、1、2、...、N−1)から発見された非0信号のインデックスは以下に説明する操作によってx(k)へ格納されていく。
S個の信号に含まれる全ての非0信号のインデックスを発見した後、正常な非0信号のインデックスx(k)は0以上の値を、初期化されたままのx(k)は負の値をもつ。
本実施例のプロセッサは非0信号検出命令という命令をもつ。非0信号検出命令は信号s(n)に含まれる非0信号のインデックスを求めることができる。
デコードした命令が非0信号検出命令ならば、命令デコーダ130は非0信号検出ユニット120を動作させる。なお、本発明においては、非0信号検出ユニット120の各ユニット121〜124の処理をプロセッサ(コンピュータ)のプログラムで実現するようにしてもよい。
次に、図2を参照して、非0信号検出ユニット120の動作について説明する。非0信号検出ユニット120は命令デコーダ130から以下の三つの情報を受けとる。
(1)信号s(n)のベースインデックスB。
(2)信号s(n)が格納されているレジスタ番号(図1のレジスタファイル110のレジスタの番号)。本実施例では、図2のレジスタ111にs(n)(n=0、1、・・・N−1)が格納されているものとする。
(3)非0信号のインデックスx(k)が格納されているレジスタ番号(図1のレジスタファイル110のレジスタの番号)。本実施例では、図2のレジスタ112にx(k)(k=0、1、・・・K−1)が格納されているとする。
非0信号検出ユニット120は、レジスタ111から信号s(n)(n=0、1、2、...、N−1)を読み込む。
ベースインデックスBを使って、信号s(n)(n=0、1、2、...、N−1)のインデックスをB+0、B+1、B+2、...、B+N−1と定義する。
非0信号検出ユニット120は信号s(n)(n=0〜N−1)をスキャンして、非0信号のインデックスを求める。
求めた非0信号のインデックスをp(m)(m=0、1、2、...、M−1)とする。ただし、Mは信号s(n)(n=0、1、・・・N−1)に含まれる非0信号の数とする。
さらに、インデックスp(m)よりもp(m+1)が等しいか大きいとする(p(m)<=p(m+1))。
続いて、非0信号検出ユニット120はレジスタ112からインデックスx(k)(k=0、1、・・・K−1)を取り込む。
非0信号検出ユニット120はx(k)(k=0〜K−1)をスキャンして、最もkが小さい負のインデックスx(k)をx(G)とする。インデックスx(G)以降のインデックスx(k)(ただし、G<=k)は、負の値をもつインデックスなので初期化されたままの状態のインデックスである。
もしK個のインデックスx(k)(k=0、1、・・・K−1)のなかに負のインデックスが無いなら、Gは未定義の値とする。
続いて、非0信号検出ユニット120はx(k)とp(m)とを用いてインデックスx(k)(k=0、1、2、...、K−1)を以下のように更新する。更新後のインデックスをy(k)(k=0、1、2、...、K−1)とする。
0<=k<Gの場合、 y(k)=x(k);
G<=k<(G+M)の場合、y(k)=p(k−G);
(G+M)<=k<Kの場合、y(k)=x(k);
・・・(1)
つまり、更新前のインデックスx(k)へ信号s(n)に含まれる非0信号のインデックスp(m)を追加することによって、更新後のインデックスy(k)が得られる。
y(k)を正しく計算するためには、G、K、Mに、
(G+M)<=K ・・・(2)
という関係が成り立つことが必要である。
本実施例において、非0信号検出ユニット120を使用する際には常にこの関係が満たされることが必要である。
もし、
K<(G+M) ・・・(3)
という関係になる場合には、更新後のインデックスy(k)は未定義の値とする。
最後に、非0信号検出ユニット120は更新後のインデックスy(k)(k=0、1、2、...、K−1)をレジスタ112へ書き込む。
以上の手順により、一つの信号グループに含まれるN個の信号s(n)(n=0、1、2、...、N−1)の非0信号のインデックスを求めることができる。
S個の信号について非0信号のインデックスを求める手順を以下にまとめる。図4は、本実施例の手順を模式的に示す図である。
信号をN個ずつL組にわける(図4のステップS1)。
インデックスを初期化するために、レジスタ112に−1を格納する(図4のステップS2)。レジスタ112内容が非0信号のインデックスx(k)である。
i=0として(図4のステップS4)、L−1までiを1ずつ増加させながら(図4のステップS7)、ステップS5とS6の処理を繰り返す。
i番目のN個の信号の組s(n)(n=0、1、2、...、N−1)をレジスタ111へ格納する(図4のステップS5)。
ベースインデックスBをN×iとして非0信号検出ユニット120を動作させ、レジスタ111に格納されたN個の信号s(n)の非0信号のインデックスを求め、求めたインデックスをレジスタ112へ格納する(図4のステップS6)。そして、iへ1を加算し(図4のステップS7)、i<LならステップS5へ戻り(図4のステップS8のyes分岐)、L<=iなら処理を終了する(図4のステップS8のno分岐)。
レジスタ112に負のインデックスがN個以上ある場合、上記したステップS6においてレジスタ112から非0信号のインデックスが溢れることはない。
レジスタ112に負のインデックスがN個以上ない場合、図4のステップS6の処理において、レジスタ112から非0信号のインデックスが溢れる可能性がある。図4のステップS5とステップS6の間で、適切な処理を行う必要がある。
具体的には、図4のステップS5とステップS6の間に以下の処理ステップを挿入する。
(a)レジスタ112に格納されているN個以上の非負のインデックスをメモリへ退避する。
(b)次に、メモリへ格納された非負のインデックスがレジスタからシフトアウトされるように、レジスタ112を算術右シフトする。
このようにして、非0信号検出ユニット120はS個の信号の非0信号のインデックスを求めることができる。
ただし、非0信号の数がKを上回ることが予想される場合、レジスタ112から非0信号のインデックスが溢れないようにする必要がある。
次に、図3を参照して、本実施例の動作ついて具体的に説明する。
以下の説明では、レジスタファイル110は16本の64ビットレジスタをもち、レジスタ111とレジスタ112はそれぞれ64ビットのレジスタとする。
N=4個の信号s(n)(n=0、1、2、3)に含まれる非0信号のインデックスx(k)を求める処理について説明する。ただし、信号s(n)は、16ビット符号付き整数(16-Bit Signed Integer)、インデックスx(k)は8ビット符号付き整数(8-Bit Signed Integer)とする。
インデックスを求める前に、インデックスの初期値と信号をレジスタへ格納する。N=4個の信号s(n)(n=0、1、2、3)をレジスタ111へ格納する。
s(0)=24;
s(1)=0;
s(2)=0;
s(3)=8;
レジスタ111のLSB(Least Significant Bit)側にs(0)が、MSB(Most Significant Bit)側にs(3)が格納されるとする。
8個の非0信号のインデックスx(k)(k=0、1、2、...、7)の初期値を−1とする。このインデックスx(k)をレジスタ112へ格納する。
次に、ベースインデックスB=0として、非0信号検出ユニット120を動作させる。
すると、非0信号検出ユニット120はレジスタ111から信号s(n)(n=0、1、2、3)を、レジスタ112から非0信号のインデックスx(k)(k=0、1、2、...、7)をそれぞれ読み込む。
非0信号検出ユニット120は信号s(n)(n=0、1、2、3)をスキャンして、非0信号のインデックスp(m)(m=0、1、2、...、M−1)を見つける。
信号s(n)のなかで、非0信号は、s(0)とs(3)である。信号s(0)、s(1)、s(2)、s(3)のインデックスは、レジスタ111のLSB側から順にそれぞれ、B+0、B+1、B+2、B+3であり、非0信号検出ユニット120へ与えられたベースインデックスBは0であるため、
s(0)のインデックスはp(0)=0;
s(3)のインデックスはp(1)=3;
となる。
次に、非0信号検出ユニット120はインデックスx(k)をスキャンして、レジスタ112のなかで最もLSB側にある負のインデックスx(G)を見つける。この状態では全てのインデックスx(k)が−1であるため、最もLSB側にある負のインデックスはx(G)=x(0)である。
次に、非0信号検出ユニット120はレジスタ112から読み込んだインデックスx(k)と信号s(n)から求めたインデックスp(m)とを用いて、インデックスx(k)を更新する。
レジスタ112から読み込んだインデックスx(k)において、最もLSB側にある負のインデックスは、x(G)=x(0)であるため、非0信号検出ユニット120は更新後のインデックスy(k)(k=0、1、2、...、7)を以下のように計算する。
y(0)=p(0)=0;
y(1)=p(1)=3;
y(2)=x(2)=−1;
y(3)=x(3)=−1;
y(4)=x(4)=−1;
y(5)=x(5)=−1;
y(6)=x(6)=−1;
y(7)=x(7)=−1;
最後に、非0信号検出ユニット120は更新後のインデックスy(k)(k=0、1、2、...、7)をレジスタ112へ書き込む。
以上のようにして、N=4個の信号s(n)(n=0、1、2、3)に含まれる非0信号のインデックスを求めることができた。
前述したように、本実施例は、N個よりも多い数の信号から非0信号のインデックスを求めることができる。信号の数がN個より多い場合には、信号をN個ずつL組の信号グループに分割して非0信号のインデックスを求める。
例えば、信号の数が2×N個の場合には、2回に分けて非0信号のインデックスを求める。
以下の実施例では、N=4、信号の数をS=8、として非0信号のインデックスを求める手順を説明する。この場合、S=L×N=2×4なので、2回に分けて非0信号のインデックスを求める。
以下では、前記実施例1と同じように、レジスタファイル110は16本の64ビットレジスタをもち、レジスタ111とレジスタ112はそれぞれ64ビットのレジスタとする。
さらに、信号s(n)は16ビット符号付き整数、インデックスx(k)は8ビット符号付き整数とする。
8個の信号s(n)(n=0、1、2、...、7)の値を、以下のように定義する。
8個のうち、最初の4個の信号s(n)(n=0、1、2、3)の値は、前記実施例1と同じである。
s(0)=24;
s(1)=0;
s(2)=0;
s(3)=8;
s(4)=0;
s(5)=−11;
s(6)=0;
s(7)=0;
レジスタファイル110の構成と信号s(n)(n=0、1、2、3)の値は、前記実施例1と同じである。実施例1と全く同じようにして、信号s(n)(n=0、1、2、3)の非0信号のインデックスを求めることができる。
そこで、前記実施例1と同じように、レジスタ111に、N=4個の信号s(n)(n=0、1、2、3)を、レジスタ112に非0信号のインデックスの初期値を、それぞれ格納してベースインデックスB=0として、非0信号検出ユニット120を動作させれば、レジスタ112に、以下の非0信号のインデックスが求まる。これは、前記実施例1と同じ結果である。
y(0)=0;
y(1)=3;
y(2)=−1;
y(3)=−1;
y(4)=−1;
y(5)=−1;
y(6)=−1;
y(7)=−1;
次に、もう一組の、N=4個の信号s(n)(n=4、5、6、7)に含まれる非0信号のインデックスを求める。
レジスタ111に信号s(n)(n=4、5、6、7)を格納し、レジスタ112のインデックスy(k)(k=0、1、2、...、7)を新たなインデックスx(k)(k=0、1、2、...、7)とみなして、ベースインデックスB=4として、非0信号検出ユニット120を動作させる。
非0信号検出ユニット120はレジスタ111から信号s(n)(n=4、5、6、7)を、レジスタ112から非0信号のインデックスx(k)(k=0、1、2、...、7)をそれぞれ読み込む。
非0信号検出ユニット120は信号s(n)をスキャンして、非0信号のインデックスp(m)(ただし、m=0、1、2、...、M−1)を見つける。
信号s(n)のなかで非0信号はs(5)だけである。
信号s(n)のインデックスはレジスタ111のLSB側から順にそれぞれ、B+0、B+1、B+2、B+3であり、非0信号検出ユニット120へ与えられたベースインデックスBは4であるため、s(5)のインデックスはp(0)=5となる。
次に、非0信号検出ユニット120はインデックスx(k)をスキャンして、レジスタ112のなかで最もLSB側にある負のインデックスx(G)を見つける。
この状態ではインデックスの値は、
x(0)=0;
x(1)=3;
x(2)=−1;
x(3)=−1;
...;
である。
したがって、最もLSB側にある負のインデックスは、
x(G)=x(2)
である。
次に、非0信号検出ユニット120はレジスタ112から読み込んだインデックスx(k)と信号s(n)から求めたインデックスp(m)とを使ってインデックスx(k)を更新する。
レジスタ112から読み込んだインデックスx(k)において、最もLSB側にある負のインデックスは、
x(G)=x(2)
であるため、非0信号検出ユニット120は更新後のインデックスy(k)(k=0、1、2、...、7)を以下のように計算する。
y(0)=x(0)=0;
y(1)=x(1)=3;
y(2)=p(2)=5;
y(3)=x(3)=−1;
y(4)=x(4)=−1;
y(5)=x(5)=−1;
y(6)=x(6)=−1;
y(7)=x(7)=−1;
最後に、非0信号検出ユニット120は更新後のインデックスy(k)(k=0、1、2、...、7)をレジスタ112へ書き込む。
以上のようにして、8個の信号s(n)(n=0、1、2、...、7)に含まれる非0信号のインデックスを求めることができる。
同様にして、12個や16個あるいはそれ以上の信号についても非0信号のインデックスを求めることができる。
次に、非0信号のインデックスを使ったランレングスの求め方について説明する。
非0信号の前に出現する0の数(ランレングス)を非0信号のインデックスから計算することができる。その計算方法について以下に説明する。
上記した手法を使って、N個の信号s(n)(n=0、1、2、...、N−1)について、非0信号のインデックスx(k)(k=0、1、2、...、K−1)が求められたものと仮定する。ただし、正常なインデックスx(k)は0以上で、負のx(k)はインデックスではないと仮定する。
さらに、正常なインデックス0<=x(k)について、
x(k)<=x(k+1) ・・・(4)
という関係が成り立つものと仮定する。
さらに、正常なインデックス以外の全てのインデックスは−Nという負の値をもつと仮定する。
前記した実施例ではx(k)の初期値を−1としていたが、x(k)の初期値は負の値ならどんな値でも良い。ここでは、ランレングスを求めるためにx(k)の初期値を−Nとする。
非0信号のインデックスx(k)から、ランレングスz(k)を以下のようにして計算する。
x(k)をa(k)へ代入する。
a(k)=x(k) ・・・(5)
次に、a(k)の各要素を一つ番号が大きい方向へずらす。すなわち、
a(k−1)=a(k−2);
a(k−2)=a(k−3);
...
a(3)=a(2);
a(2)=a(1);
a(1)=a(0);
・・・(6)
という具合にa(k)の値をずらす。そしてa(0)へ0を代入する。
次に、x(k)の各要素とa(k)の対応する要素との差をb(k)とする。すなわち、
b(k)=x(k)−a(k) ・・・(7)
(k=0、1、2、...、K−1)
とする。
次に、b(k)の各要素と2×Nとの和をc(k)とする。すなわち、
c(k)=b(k)+2×N ・・・(8)
(k=0、1、2、...、K−1)
とする。
次に、c(k)の各要素の下位log2(N)ビットだけを抽出し、それをd(k)とする。すなわち、
d(k)=c(k)&((1<<log2(N))−1) ・・・(9)
(k=0、1、2、...、K−1)
とする。
式(9)において、&はアンド(AND)演算子である。<<は左シフト(Shift)演算子であり、a<<bはaをbビット左シフトする。例えばN=16の場合、log2(16)は4となり、0x1(xはヘキサデシマル表示)を4ビット左シフトしたものから1を減算すると0xFとなる。よって、N=16ならば、c(k)の下位4ビットを抽出した値がd(k)となる。
次に、d(k)の各要素と1との差をe(k)とする。すなわち、
e(k)=d(k)−1 ・・・(10)
(k=0、1、2、...、K−1)
とする。
次に、e(k)をz(k)へ代入する。
z(k)=e(k) ・・・(11)
そして、z(k)の各要素を一つ番号が小さい方向へずらす。すなわち、
z(0)=z(1);
z(1)=z(2);
z(2)=z(3);

z(k−1)=z(k−2);
・・・(12)
という具合にz(k)の値をずらす。
そして、z(15)へ−1を代入する。
このz(k)がインデックスx(k)に対応するランレングスである。
図6は16個の信号s(n)(n=0、1、2、…、15)のランレングスz(k)を求める例を模式的に示す図である。
図6において、非0信号は、s(0)、s(1)、s(2)、s(5)、s(6)、s(9)、s(11)である。
信号s(n)の非ゼロ信号インデックスx(k)が求められたものと仮定して、図6にもとづいて、x(k)からランレングスz(k)を求める具体的手順を述べる。
まず、前述したように、図6の信号s(n)から非0信号のインデックスx(k)を求める。
ただし、x(k)の初期値を、
x(k)=−N=−16
(k=0、1、2、...、K−1)
とする。図6(A)には7個の非0信号が存在する。
したがって、非0信号のインデックスx(k)の値は、
x(0)=0;
x(1)=1;
x(2)=2;
x(3)=5;
x(4)=6;
x(5)=9;
x(6)=11;
x(7)=−16;
...
のように求まる(図6(B)参照)。
次に、x(k)からa(k)を求める。
要素番号kが大きくなる方向へx(k)を1要素分ずらすとa(k)が得られる。
したがって、a(k)の値は、
a(0)=0;
a(1)=0;
a(2)=1;
a(3)=2;
a(4)=5;
a(5)=6;
a(6)=9;
a(7)=11;
a(8)=−16;
...;
となる(図6(C)参照)。
次に、x(k)とa(k)からb(k)を求める。
b(k)=x(k)−a(k)
であるからb(k)の値は、
b(0)=0;
b(1)=1;
b(2)=1;
b(3)=3;
b(4)=1;
b(5)=3;
b(6)=2;
b(7)=−27;
b(8)=0;
...;
となる(図6(D)参照)。
次に、b(k)からc(k)を求める。
c(k)=b(k)+2N
=b(k)+32
であるからc(k)の値は、
c(0)=32;
c(1)=33;
c(2)=33;
c(3)=35;
c(4)=33;
c(5)=35;
c(6)=34;
c(7)=35;
c(8)=32;
...;
となる(図6(E)参照)。
次に、c(k)からd(k)を求める。
d(k)=c(k)&0xFであるから、d(k)の値は、
d(0)=0;
d(1)=1;
d(2)=1;
d(3)=3;
d(4)=1;
d(5)=3;
d(6)=2;
d(7)=5;
d(8)=0;
...;
となる(図6(F)参照)。
次に、d(k)からe(k)を求める。
e(k)=d(k)−1であるから、e(k)の値は、
e(0)=−1;
e(1)=0;
e(2)=0;
e(3)=2;
e(4)=0;
e(5)=2;
e(6)=1;
e(7)=4;
e(8)=−1;
...;
となる(図6(G)参照)。
最後に、e(k)からランレングスz(k)を求める。
要素番号kが小さくなる方向へe(k)を1要素分ずらすとz(k)が得られる。
したがって、z(k)の値は、
z(0)=0;
z(1)=0;
z(2)=2;
z(3)=0;
z(4)=2;
z(5)=1;
z(6)=4;
z(7)=−1;
である(図6(H)参照)。
z(k)が非0信号のインデックスx(k)の各要素に対応するランレングスである。
次に本実施例の応用について述べる。
プロセッサは前記実施例に限定されることなく、さまざまに応用可能である。以下では具体的にどのような部分を応用可能であるかについて述べる。
本実施例のプロセッサのレジスタファイル110は64ビットのレジスタを16本もつ。
この構成は一つの例であり、非0信号検出ユニット120が動作する範囲で変更可能である。
例えば、16ビットレジスタ32本、32ビットレジスタ16本、32ビットレジスタ32本、32ビットレジスタ64本、64ビットレジスタ64本、128ビットレジスタ8本、128ビットレジスタ16本、128ビットレジスタ32本、などの構成が考えられる。
本実施例の非0信号検出ユニット120はレジスタ111から信号を、レジスタ112からインデックスを、それぞれ読み込んでインデックスを更新する。そして、更新したインデックスを再びレジスタ112へ書き込む。
これは一つの例であり、非0信号検出ユニット120は更新前のインデックスが格納されたレジスタとは別のレジスタへ更新後のインデックスを書き込むことも可能である。
本実施例の非0信号検出ユニット120はレジスタ111とレジスタ112を使用するが、非0信号検出ユニット120が使用するレジスタを別のレジスタへ変更することも可能である。
例えば、命令語の中に非0信号検出ユニット120が使用するレジスタを記述しておけば、命令によって非0信号検出ユニット120が使用するレジスタを変更することができる。
本実施例の非0信号検出ユニット120はレジスタ111から信号を読み込むが、複数のレジスタから信号を読み込むようにすることも可能である。
例えば、N個の信号をいくつかのレジスタに分割して格納しておいて、非0信号検出ユニット120がそれらのレジスタから信号を読み込むようにすることができる。
本実施例の非0信号検出ユニット120はレジスタ112からインデックスを読み込むが、複数のレジスタからインデックスを読み込むようにすることも可能である。
例えば、K個のインデックスをいくつかのレジスタに分割して格納しておいて、非0信号検出ユニット120がそれらのレジスタからインデックスを読み込むようにすることができる。同じように、実施例の非0信号検出ユニット120は更新したインデックスをレジスタ112へ書き込むが、複数のレジスタへインデックスを書き込むようにすることも可能である。
本発明はランレングス符号化を使って情報を符号化する任意の装置に適用できる。例えば、本発明を適用した符号化器を使って画像や音楽を符号化することができる。
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。

Claims (14)

  1. それぞれ区別するためにインデックスが付与された、ランレングス符号化対象となる複数の信号を格納する第一記憶手段と、
    前記第一記憶手段に格納された前記複数の信号をスキャンし、非0信号のインデックスであって、前記第一記憶手段に格納された前記複数の信号のうちの最初の信号を基準として設定されたインデックスである第一インデックスを求める第一インデックス計算手段と、
    前記最初の信号のインデックスであるベースインデックスと前記第一インデックスとを加算した値である第二インデックスを求める第二インデックス計算手段と、
    正常な前記第二インデックスがとらない範囲の値から選択された所定の初期値及び前記第二のインデックスを格納する第二記憶手段と、
    前記第二記憶手段に格納された内容をスキャンして発見した前記初期値にもとづいて前記初期値以外の値が格納されている位置を判断し、前記第二インデックスを格納すべき前記第二記憶手段における格納位置を探索する第二インデックス格納位置探索手段と、
    前記第二インデックスを前記第二記憶手段の前記格納位置へ格納する第二インデックス格納手段と、
    を備える、ことを特徴とする符号化装置。
  2. 請求項1に記載の符号化装置において、
    前記第二インデックス格納位置探索手段は、前記第二インデックスが前記第二記憶手段へ昇順に格納される場合には前記第二記憶手段に格納された内容を降順にスキャンして最初に発見した前記初期値以外の値が格納されている位置を前記格納位置と決定し、前記第二インデックスが前記第二記憶手段へ降順に格納される場合には前記第二記憶手段に格納された内容を降順にスキャンして最初に発見した前記初期値以外の値が格納されている位置を前記格納位置と決定する手段、を備える、ことを特徴とする符号化装置。
  3. 請求項2に記載の符号化装置において、
    前記第二記憶手段へ格納された前記第一インデックスの隣接する要素間の差を計算する手段と、
    前記要素間の差から1を減算することによって前記非0信号の前にある0の数を求める手段と、
    を備える、ことを特徴とする符号化装置。
  4. 請求項1乃至3のいずれか一に記載の符号化装置と、
    前記ベースインデックスを含む命令語であって前記第一インデックスの導出を指示する命令語に応答し、前記第一インデックス計算手段への前記第一インデックスの導出の指示、前記第二インデックス計算手段への前記ベースインデックスの入力、前記第二インデックス計算手段への前記第二インデックスの導出の指示、前記第二インデックス格納位置探索手段への前記格納位置の探索の指示、及び第二インデックス格納手段への前記第二インデックスの格納の指示を行う命令デコーダと、
    備える、ことを特徴とするプロセッサ。
  5. レジスタファイルと、非0信号検出ユニットと、命令デコーダとを備え、
    前記レジスタファイルは、0からS−1(Sは2以上の整数)までのインデックスが付与された、ランレングス符号化の対象となるS個の信号から取り出されたN個(NはS以下、2以上の整数)の信号s(n)(n=0〜N−1)を格納する第一のレジスタ、前記信号s(n)内の信号s(0)のインデックスをベースインデックスとして、正常な前記第二インデックスがとらない範囲の値から選択された所定の初期値に初期化されたK個(ただし、KはSよりも小さい整数)のインデックスx(k)(k=0〜K−1)予め格納する第二のレジスタを含み
    前記命令デコーダは、デコードした命令が非0信号検出命令であるとき前記非0信号検出ユニットを動作させ、前記ベースインデックスを前記非0信号検出ユニットに与え、
    前記非0信号検出ユニットは、前記第一のレジスタから読み込んだ前記信号s(n)前記ベースインデックスを用いて、前記信号s(n)に含まれる非0信号のインデックスp(m)(m=0〜M−1、Mは信号s(n)に含まれる非0信号の数)を求める第一の手段と、
    前記第二のレジスタに格納されたインデックスx(k)をスキャンして前記初期化されたままの前記インデックスx(k)を発見し、前記初期化されたままの前記インデックスx(k)を前記非0信号のインデックスp(m)に置換したインデックスを更新後のインデックスy(k)(k=0〜K−1)とする第二の手段と、
    前記更新後のインデックスy(k)を前記第二のレジスタへ書き込む第三の手段と、
    を備える、ことを特徴とするプロセッサ。
  6. 前記第二の手段は、前記初期化されたままの前記インデックスx(k)において最もkが小さい前記インデックスx(k)をx(G)として、前記更新後のインデックスy(k)を、
    0<=k<Gの場合に、
    y(k)=x(k)
    とし、
    G<=k<(G+M)の場合に、
    y(k)=p(k−G)
    とし、
    (G+M)<=k<Kの場合に、
    y(k)=x(k)
    とする、ことを特徴とする請求項5記載のプロセッサ。
  7. 前記S個の信号をN個ずつL組にわけ、
    変数i=0として0からL−1までiを1ずつ増加させながら、
    前記L組の内のi番目の組のN個の信号s(n)を前記第一のレジスタへ格納する信号格納処理
    前記ベースインデックスをN×iとして、前記非0信号検出ユニットを動作させる非0信号検出処理及び
    前記第一のレジスタに格納された前記信号s(n)の非0信号のインデックスを前記第二のレジスタへ追加するインデックス追加処理を繰り返す、ことを特徴とする請求項5又は6に記載のプロセッサ。
  8. 前記信号s(n)の非0信号の前記インデックスx(k)に対して番号kが大きくなる方向へ前記x(k)を1要素分ずらしたものをa(k)とし、
    x(k)と前記a(k)の差b(k)=x(k)−a(k) (k=0〜N−1)を求め、
    次に前記b(k)2×Nとの和c(k)=b(k)+2×N (k=0〜N−1)を求め、
    次に前記c(k)の所定下位ビットを抽出したものをd(k)として、
    e(k)=d(k)−1 (k=0〜N−1)を求め、
    前記番号kが小さくなる方向へ前記e(k)を1要素分ずらしたものをz(k)として、
    前記z(k)を前記x(k)の各要素に対応するランレングスとする、ことを特徴とする請求項5乃至7のいずれか一に記載のプロセッサ。
  9. それぞれ区別するためにインデックスが付与された、ランレングス符号化対象となる複数の信号を格納する第一記憶手段に格納された前記複数の信号をスキャンし、非0信号のインデックスであって、前記第一記憶手段に格納された前記複数の信号のうちの最初の信号を基準として設定されたインデックスである第一インデックスを求める第一インデックス計算工程と、
    前記最初の信号のインデックスであるベースインデックスと前記第一インデックスとを加算した値である第二インデックスを求める第二インデックス計算工程と、
    正常な前記第二インデックスがとらない範囲の値から選択された所定の初期値及び前記第二のインデックスを格納する第二記憶手段に格納された内容をスキャンして発見した前記初期値にもとづいて前記初期値以外の値が格納されている位置を判断し、前記第二インデックスを格納すべき前記第二記憶手段における格納位置を探索する第二インデックス格納位置探索手工程と、
    前記第二インデックスを前記第二記憶手段の前記格納位置へ格納する第二インデックス格納工程と、
    を含む、ことを特徴とする符号化方法。
  10. 請求項9に記載の符号化方法において、
    前記第二インデックス格納位置探索工程では、前記第二インデックスが前記第二記憶手段へ昇順に格納される場合には前記第二記憶手段に格納された内容を降順にスキャンして最初に発見した前記初期値以外の値が格納されている位置を前記格納位置と決定し、前記第二インデックスが前記第二記憶手段へ降順に格納される場合には前記第二記憶手段に格納された内容を降順にスキャンして最初に発見した前記初期値以外の値が格納されている位置を前記格納位置と決定する、ことを特徴とする符号化方法。
  11. 請求項10に記載の符号化装置において、
    前記第二記憶手段へ格納された前記第一インデックスの隣接する要素間の差を計算する工程と、
    前記要素間の差から1を減算することによって前記非0信号の前にある0の数を求める工程と、
    を含む、ことを特徴とする符号化方法。
  12. ランレングス符号化する符号化装置を構成するコンピュータに、
    それぞれ区別するためにインデックスが付与された、符号化対象となる複数の信号を格納する第一記憶手段に格納された前記複数の信号をスキャンし、非0信号のインデックスであって、前記第一記憶手段に格納された前記複数の信号のうちの最初の信号を基準として設定されたインデックスである第一インデックスを求める第一インデックス計算処理と、
    前記最初の信号のインデックスであるベースインデックスと前記第一インデックスとを加算した値である第二インデックスを求める第二インデックス計算処理と、
    正常な前記第二インデックスがとらない範囲の値から選択された所定の初期値及び前記第二のインデックスを格納する第二記憶手段に格納された内容をスキャンして発見した前記初期値にもとづいて前記初期値以外の値が格納されている位置を判断し、前記第二インデックスを格納すべき前記第二記憶手段における格納位置を探索する第二インデックス格納位置探索手処理と、
    前記第二インデックスを前記第二記憶手段の前記格納位置へ格納する第二インデックス格納処理と、
    を実行させるプログラム。
  13. 請求項12に記載のプログラムにおいて、
    前記第二インデックス格納位置探索処理は、前記第二インデックスが前記第二記憶手段へ昇順に格納される場合には前記第二記憶手段に格納された内容を降順にスキャンして最初に発見した前記初期値以外の値が格納されている位置を前記格納位置と決定し、前記第二インデックスが前記第二記憶手段へ降順に格納される場合には前記第二記憶手段に格納された内容を降順にスキャンして最初に発見した前記初期値以外の値が格納されている位置を前記格納位置と決定する、ことを特徴とするプログラム。
  14. 請求項13に記載のプログラムにおいて、
    前記第二記憶手段へ格納された前記第一インデックスの隣接する要素間の差を計算する処理と、
    前記要素間の差から1を減算することによって前記非0信号の前にある0の数を求める処理と、
    を前記コンピュータに実行させるプログラム。
JP2008547000A 2006-11-28 2007-11-27 符号化装置と方法及びプロセッサ Expired - Fee Related JP4862894B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008547000A JP4862894B2 (ja) 2006-11-28 2007-11-27 符号化装置と方法及びプロセッサ

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2006320278 2006-11-28
JP2006320278 2006-11-28
PCT/JP2007/072870 WO2008066050A1 (fr) 2006-11-28 2007-11-27 Appareil de codage, procédé, et processeur
JP2008547000A JP4862894B2 (ja) 2006-11-28 2007-11-27 符号化装置と方法及びプロセッサ

Publications (2)

Publication Number Publication Date
JPWO2008066050A1 JPWO2008066050A1 (ja) 2010-03-04
JP4862894B2 true JP4862894B2 (ja) 2012-01-25

Family

ID=39467838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008547000A Expired - Fee Related JP4862894B2 (ja) 2006-11-28 2007-11-27 符号化装置と方法及びプロセッサ

Country Status (3)

Country Link
US (1) US7893851B2 (ja)
JP (1) JP4862894B2 (ja)
WO (1) WO2008066050A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001102937A (ja) * 1999-09-29 2001-04-13 Nec Ic Microcomput Syst Ltd ランレングス符号化方法及びランレングス符号化装置
JP2005252408A (ja) * 2004-03-01 2005-09-15 Murata Mach Ltd 符号化装置
JP2006086676A (ja) * 2004-09-15 2006-03-30 Ricoh Co Ltd 画像処理装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04328956A (ja) * 1991-04-26 1992-11-17 Dainippon Screen Mfg Co Ltd 画像デ−タの読出し方法
US5682152A (en) * 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US5821887A (en) * 1996-11-12 1998-10-13 Intel Corporation Method and apparatus for decoding variable length codes
US6351570B1 (en) * 1997-04-01 2002-02-26 Matsushita Electric Industrial Co., Ltd. Image coding and decoding apparatus, method of image coding and decoding, and recording medium for recording program for image coding and decoding
JPH11161782A (ja) * 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
GB0004427D0 (en) * 2000-02-24 2000-04-12 Xeikon Nv Cleaning device
US6529554B1 (en) * 2000-06-29 2003-03-04 Intel Corporation Low branch-mispredict technique for MPEG run length encoding
US7174047B2 (en) * 2002-03-29 2007-02-06 Matsushita Electric Industrial Co., Ltd. Single-instruction multiple-data (SIMD)-based algorithms for processing video data
US6707398B1 (en) * 2002-10-24 2004-03-16 Apple Computer, Inc. Methods and apparatuses for packing bitstreams
JP4101034B2 (ja) 2002-11-14 2008-06-11 松下電器産業株式会社 符号化装置及び方法
KR100547853B1 (ko) * 2003-07-28 2006-01-31 삼성전자주식회사 블록별 에너지를 기초로 정지 영상을 적응적으로 부호화할수 있는 이산 웨이블렛 변환 장치 및 방법
US7298297B1 (en) * 2004-08-18 2007-11-20 Mediatek Inc. Hardware-implemented Huffman decoder

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001102937A (ja) * 1999-09-29 2001-04-13 Nec Ic Microcomput Syst Ltd ランレングス符号化方法及びランレングス符号化装置
JP2005252408A (ja) * 2004-03-01 2005-09-15 Murata Mach Ltd 符号化装置
JP2006086676A (ja) * 2004-09-15 2006-03-30 Ricoh Co Ltd 画像処理装置

Also Published As

Publication number Publication date
US7893851B2 (en) 2011-02-22
JPWO2008066050A1 (ja) 2010-03-04
WO2008066050A1 (fr) 2008-06-05
US20100019941A1 (en) 2010-01-28

Similar Documents

Publication Publication Date Title
US7289047B2 (en) Decoding variable length codes while using optimal resources
RU2273044C2 (ru) Способ и устройство для параллельного объединения данных со сдвигом вправо
KR100624432B1 (ko) 내용 기반 적응적 이진 산술 복호화 방법 및 장치
JP4962476B2 (ja) 算術復号装置
US10528539B2 (en) Optimized selection of hash collision chains
WO2016062251A1 (en) Parallel history search and encoding for dictionary-based compression
KR20040045842A (ko) 개선된 가변 길이 디코더
JP2003218703A (ja) データ符号化装置及びデータ復号装置
KR20130111170A (ko) 압축 및 신장 시스템, 압축 장치, 신장 장치, 압축 및 신장 방법, 압축 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체, 및 신장 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP4547503B2 (ja) 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体
JP4921310B2 (ja) 命令ビット長削減方法
JP4785706B2 (ja) 復号装置及び復号方法
JP4862894B2 (ja) 符号化装置と方法及びプロセッサ
USRE45300E1 (en) Context-adaptive variable length coder with simultaneous storage of incoming data and generation of syntax elements
JP2008199100A (ja) 可変長符号復号装置
JP5105191B2 (ja) 画像処理装置
JP4479370B2 (ja) プロセッサ
JP2002171525A (ja) ビットプレーン演算命令を備えたsimd型演算装置
JPWO2002101935A1 (ja) 復号化装置、復号化方法、ルックアップテーブルおよび復号化プログラム
US7652599B1 (en) Range normalization for entropy reduction arithmetic encoding/decoding
JP2025504420A (ja) 機械学習ネットワークのためのオフチップデータを圧縮及び解凍するためのシステム及び方法
WO2025173103A1 (ja) 符号化装置、符号化方法、符号化プログラム
JP2008514095A (ja) 可変長エンコーダ/デコーダのためのプログラム可能データプロセッサ
JP3221252B2 (ja) ハフマン復号器
CN102237878B (zh) 一种霍夫曼解码方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110905

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: 20111011

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: 20111024

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

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4862894

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees