JP2005123783A - 符号化装置及び符号化方法 - Google Patents
符号化装置及び符号化方法 Download PDFInfo
- Publication number
- JP2005123783A JP2005123783A JP2003354886A JP2003354886A JP2005123783A JP 2005123783 A JP2005123783 A JP 2005123783A JP 2003354886 A JP2003354886 A JP 2003354886A JP 2003354886 A JP2003354886 A JP 2003354886A JP 2005123783 A JP2005123783 A JP 2005123783A
- Authority
- JP
- Japan
- Prior art keywords
- block
- dct
- prediction
- quantized
- component
- 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
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】処理サイクルの少ない高速な符号化エンコードの実現
【解決手段】量子化された量子化離散コサイン変換係数(量子化DCT係数)を記憶する第1の記憶手段(量子化係数バッファ)においては、マクロブロックを構成するn個のブロックに対して(n+1)個以上の記憶領域(DC/AC-Bank)を設け、この記憶領域が順次用いられることで第1の記憶手段がリングバッファとして使用できるようにする。また、各ブロックについてのAC成分予測誤差(AC予測値)を記憶する第2の記憶手段(AC予測値バッファ)も備えるようにし、さらにその第2の記憶手段についても(n+1)個以上の記憶領域(AC-Bank)を設け、この記憶領域が順次用いられることで第2の記憶手段もリングバッファとして使用できるようにする。その上で、或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に記憶させる処理を行う。
【選択図】 図3
【解決手段】量子化された量子化離散コサイン変換係数(量子化DCT係数)を記憶する第1の記憶手段(量子化係数バッファ)においては、マクロブロックを構成するn個のブロックに対して(n+1)個以上の記憶領域(DC/AC-Bank)を設け、この記憶領域が順次用いられることで第1の記憶手段がリングバッファとして使用できるようにする。また、各ブロックについてのAC成分予測誤差(AC予測値)を記憶する第2の記憶手段(AC予測値バッファ)も備えるようにし、さらにその第2の記憶手段についても(n+1)個以上の記憶領域(AC-Bank)を設け、この記憶領域が順次用いられることで第2の記憶手段もリングバッファとして使用できるようにする。その上で、或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に記憶させる処理を行う。
【選択図】 図3
Description
本発明は、符号化装置及び符号化方法に関し、特に、動画像データを光磁気ディスクや磁気テープ等の記録媒体に記録したり、テレビ会議システム、テレビ電話システム、放送用機器、マルチメディアデータベース検索システム等のように伝送路を介して送信側から受信側に動画像データを伝送する機器などにおいて好適な符号化装置及び符号化方法に関する。
例えば、テレビ会議システム、テレビ電話システム等のように動画像データを伝送するシステムでは、伝送路を効率よく利用するために、画像のライン相関やフレーム間相関を利用して画像データを圧縮符号化している。
動画像の高能率符号化方式には、代表的なものとしてMPEG(Moving Picture Experts Group)方式がある。MPEG方式は、蓄積用動画像符号化方式である。これは、ISO−IEC/JTC1/SC2/WG11において議論され、標準案として提案されたものであり、動き補償予測符号化とDCT(Discrete Cosine Transform)符号化を組み合わせたハイブリッド方式が採用されている。
MPEGでは、様々なアプリケーションや機能に対応するために、幾つかのプロファイル及びレベルが定義されている。最も基本的なものがメインプロファイルレベル(MP @ML:Main Profile at Main Level)である。
動画像の高能率符号化方式には、代表的なものとしてMPEG(Moving Picture Experts Group)方式がある。MPEG方式は、蓄積用動画像符号化方式である。これは、ISO−IEC/JTC1/SC2/WG11において議論され、標準案として提案されたものであり、動き補償予測符号化とDCT(Discrete Cosine Transform)符号化を組み合わせたハイブリッド方式が採用されている。
MPEGでは、様々なアプリケーションや機能に対応するために、幾つかのプロファイル及びレベルが定義されている。最も基本的なものがメインプロファイルレベル(MP @ML:Main Profile at Main Level)である。
また現在では、画像を構成する物体(オブジェクト)毎のシーケンスであるビデオオブジェクト(VO:Video Object)単位で符号化を行うMPEG4方式がISO−IEC/JTC1/SC29/WG11において標準化されている。
MPEG4方式は、従来の映像/オーディオ信号の圧縮符号化に加え、静止画、CG(コンピュータグラフィクス)画像、分析合成系の音声符号化、MIDI(Musical Instrument Data Interface)等による合成オーディオやテキストも含めた総合マルチメディアの符号化規格を目指したものである。
MPEG4方式は、従来の映像/オーディオ信号の圧縮符号化に加え、静止画、CG(コンピュータグラフィクス)画像、分析合成系の音声符号化、MIDI(Musical Instrument Data Interface)等による合成オーディオやテキストも含めた総合マルチメディアの符号化規格を目指したものである。
MPEG4方式では、基本的に符号化/復号化できる画像として、4:2:0フォーマットとよばれる画像フォーマットのみが規定されている。
この4:2:0フォーマットは、輝度Yの走査2本、水平方向の2画素に対して、色差Cr、Cbがそれぞれ1画素ずつで割り当てられる画像フォーマット(すなわち、輝度Yの4画素に対して色差Cr、Cbがそれぞれ1画素ずつ割り当てられる。)であり、その色差Cr、Cbの位置は、輝度Yに対して同位置に存在する。
4:2:0フォーマットのブロックは、輝度又は色差毎の隣り合った、例えば8画素×8ラインから構成される。DCT(離散コサイン変換)は、この単位で実行される。マクロブロックは、例えば、画像フォーマットがいわゆる4:2:0コンポーネントディジタル信号である場合、上下左右に隣り合った4つの輝度Yのブロックと、画像上では同じ位置に当たる色差Cb、Crそれぞれのブロック全部で6つのブロックで構成される。すなわち、MPEG4方式では、4:2:0フォーマットのマクロブロックが符号化復号画像として定義されている。
MPEG4方式の画像符号化におけるDCT係数の差分値の算出方法は、本願出願人等によって開示されている(例えば、上記特許文献1参照)。
この4:2:0フォーマットは、輝度Yの走査2本、水平方向の2画素に対して、色差Cr、Cbがそれぞれ1画素ずつで割り当てられる画像フォーマット(すなわち、輝度Yの4画素に対して色差Cr、Cbがそれぞれ1画素ずつ割り当てられる。)であり、その色差Cr、Cbの位置は、輝度Yに対して同位置に存在する。
4:2:0フォーマットのブロックは、輝度又は色差毎の隣り合った、例えば8画素×8ラインから構成される。DCT(離散コサイン変換)は、この単位で実行される。マクロブロックは、例えば、画像フォーマットがいわゆる4:2:0コンポーネントディジタル信号である場合、上下左右に隣り合った4つの輝度Yのブロックと、画像上では同じ位置に当たる色差Cb、Crそれぞれのブロック全部で6つのブロックで構成される。すなわち、MPEG4方式では、4:2:0フォーマットのマクロブロックが符号化復号画像として定義されている。
MPEG4方式の画像符号化におけるDCT係数の差分値の算出方法は、本願出願人等によって開示されている(例えば、上記特許文献1参照)。
公知の通り、MPEG2ではイントラブロックのDC成分だけを差分符号化するが、MPEG4では量子化されたDC成分とAC成分の両方に対して適応的に予測符号化することによってイントラブロックの符号化効率の改善を図っている。
DC成分の予測値は、対象となるブロックの周辺に隣接するブロック間の水平および垂直方向のDC成分の勾配によって適応的に選択される。
DC成分の予測値は、対象となるブロックの周辺に隣接するブロック間の水平および垂直方向のDC成分の勾配によって適応的に選択される。
図7は対象となるブロックXと、その周辺においてそれぞれ左、左上、上の各方向に隣接するブロックA,B,Cを示している。各ブロックの格子はDCT係数を表す。
図示するようにブロックAのDCT係数FA[0][0]、ブロックBのDCT係数FB[0][0]、ブロックCのDCT係数FC[0][0]を考える。これらの値は逆量子化されたDCT係数値であり、これらの値を用いてブロックXのDC成分に対する予測値δpを式1により決定する。
[式1]
if (|FA[0][0]−FB[0][0]|<|FB[0][0]−FC[0][0]|)
δp = FC[0][0]
else
δp = FA[0][0]
図示するようにブロックAのDCT係数FA[0][0]、ブロックBのDCT係数FB[0][0]、ブロックCのDCT係数FC[0][0]を考える。これらの値は逆量子化されたDCT係数値であり、これらの値を用いてブロックXのDC成分に対する予測値δpを式1により決定する。
[式1]
if (|FA[0][0]−FB[0][0]|<|FB[0][0]−FC[0][0]|)
δp = FC[0][0]
else
δp = FA[0][0]
この式は、FA[0][0]とFB[0][0]の差の絶対値(ΔVS)と、FB[0][0]とFC[0][0]の差の絶対値(ΔHS)とを比較し、FA[0][0]とFB[0][0]の差の絶対値(ΔVS)の方が小さい場合には、縦方向に相関が強いので、ブロックXに対してブロックCを予測ブロックとし、一方、FB[0][0]とFC[0][0]の差の絶対値(ΔHS)の方が小さい場合には、横方向の相関が強いのでブロックXに対してブロックAを予測ブロックとして予測値δpを決定することを表している。
このようにして決定した予測値を用いて次の式2のように予測誤差Δxを求める。
[式2]
Δx = δx−δp /dc_scaler
ここでδxはブロックXの量子化されたDC成分、dc_scalerはブロックXの量子化ステップである。予測誤差ΔxはMPEG2と同じ方法で可変長符号化する。
[式2]
Δx = δx−δp /dc_scaler
ここでδxはブロックXの量子化されたDC成分、dc_scalerはブロックXの量子化ステップである。予測誤差ΔxはMPEG2と同じ方法で可変長符号化する。
AC成分の予測は、DC成分予測で決定したブロックを参照して行う。すなわち、ブロックAを用いてDC成分を予測する場合、図8(b)のように、ブロックAの垂直第一列のAC係数を予測値とする。また、ブロックCを用いてDC成分を予測場合、図8(a)のようにブロックCの水平第一行のAC係数を予測値とする。
ところでAC成分の予測誤差は、予測しないAC成分より値が大きい場合がある。そのためマクロブロック毎に1ビットのフラグを使って、AC成分予測を有効または無効にすることが出来るようにされている。即ち、マクロブロックに含まれるすべてのブロック成分について予測前のAC成分(第一列または第一行)の絶対値和と、AC成分の予測誤差の絶対値和を比較し、予測誤差の絶対値和が予測前の絶対値和より小さい場合を有効とする。
ところがこのため、AC成分予測はマクロブロック内のすべてのブロックをAC予測し、絶対値和を比較するまでは次のステップである可変長符号化には移れない。また可変長符号化ブロックがバッファ内のDCT係数を読み出す前に、次のマクロブロックのDCT係数を書き込むことは出来ない。したがって、パイプライン処理を行うことが難しく、トータルでの処理サイクル数が増大してしまう。
このことを図9、図10、図11を用いて説明する。
ところがこのため、AC成分予測はマクロブロック内のすべてのブロックをAC予測し、絶対値和を比較するまでは次のステップである可変長符号化には移れない。また可変長符号化ブロックがバッファ内のDCT係数を読み出す前に、次のマクロブロックのDCT係数を書き込むことは出来ない。したがって、パイプライン処理を行うことが難しく、トータルでの処理サイクル数が増大してしまう。
このことを図9、図10、図11を用いて説明する。
まず図9では、一般的なMPEG4の符号化装置1の構成例を説明する。これは入力した画像データをMPEG4方式、H.263等の規格に準拠した方式で符号化できるエンコーダであり、この符号化装置1で符号化して得られたビットストリームは、多重化されて、例えば、地上波や衛星回線、CATV網等の伝送路を介して伝送される。或いは、磁気ディスク、光磁気ディスク、光ディスク、磁気テープ、その他の記録媒体に記録される。
符号化すべき入力画像信号(動画像データ)は、まず、前画像処理部11に入力される。前画像処理部11は、図示しないが、VO(Video Object)構成部とVOP(Video Object Plane)構成部とを有し、入力される画像を構成するオブジェクト毎に、このシーケンスであるVOを構成し、VOPを構成している。
MPEG4では、自然画像をVOと呼んでいる。VOには矩形形状のVOと任意形状のVOがある。そしてVOは所定の時刻で撮像した複数のVOPから構成される。このVOPがMPEG4で扱う映像データの基本単位である。矩形形状の場合、VOPはMPEG1やMPEG2のフレーム又はフィールドに相当する。
MPEG4では、自然画像をVOと呼んでいる。VOには矩形形状のVOと任意形状のVOがある。そしてVOは所定の時刻で撮像した複数のVOPから構成される。このVOPがMPEG4で扱う映像データの基本単位である。矩形形状の場合、VOPはMPEG1やMPEG2のフレーム又はフィールドに相当する。
前画像処理部11では、具体的には、例えば、符号化すべき画像データが独立した背景のシーケンスと前景のシーケンスとから構成されている場合、VO構成部は、例えば、背景のシーケンスをVO1としてVOP構成部に出力するとともに前景のシーケンスをVO2としてVOP構成部に出力する。
VO構成部は、符号化すべき画像データが、例えば背景と前景とが既に合成されたものである場合、所定のアルゴリズムにしたがって、この画像を領域分割することにより、背景と前景とを取り出し、それぞれのシーケンスとしてのVOを対応するVOP構成部に出力する。
VOP構成部は、VO構成部で出力された各フレームからオブジェクトを抽出し、この抽出されたオブジェクト(物体)を囲む最小の長方形をVOPとする。このとき、VOP構成部では、横及び縦の画素数が16の倍数になるようにVOPを構成する。VOP構成部は、このVOPを後段の動き検出、動き補償、DCT回路等に供給する。また、VOP構成部は、VOPの大きさ(例えば、横及び縦の長さ)を表すサイズデータ(VOP_size)と、フレームにおけるVOPの位置(例えば、フレームの最も左上を原点とするときの座標)を表すオフセットデータ(VOP_offset)とを検出し、これらのデータも後段の各回路に供給する。
VO構成部は、符号化すべき画像データが、例えば背景と前景とが既に合成されたものである場合、所定のアルゴリズムにしたがって、この画像を領域分割することにより、背景と前景とを取り出し、それぞれのシーケンスとしてのVOを対応するVOP構成部に出力する。
VOP構成部は、VO構成部で出力された各フレームからオブジェクトを抽出し、この抽出されたオブジェクト(物体)を囲む最小の長方形をVOPとする。このとき、VOP構成部では、横及び縦の画素数が16の倍数になるようにVOPを構成する。VOP構成部は、このVOPを後段の動き検出、動き補償、DCT回路等に供給する。また、VOP構成部は、VOPの大きさ(例えば、横及び縦の長さ)を表すサイズデータ(VOP_size)と、フレームにおけるVOPの位置(例えば、フレームの最も左上を原点とするときの座標)を表すオフセットデータ(VOP_offset)とを検出し、これらのデータも後段の各回路に供給する。
入力画像信号(動画像データ)は、フレームメモリ12に供給されて、VOPとして記憶される。
動き検出及び動き補償部13では、フレームメモリ12に記憶されたVOPに対してマクロブロック単位で動きベクトルを検出する。すなわち、上述したように、VOPは時刻(フレーム)によって大きさや位置が変化するため、この動きベクトルの検出に当たっては、検出のための基準となる座標系を設定し、座標系における動きを検出する必要がある。そこで、動き検出及び動き補償部13では、上述の絶対座標系を基準座標系とし、サイズデータ(FSZ_B)及びオフセットデータ(FPOS_B)にしたがって、この絶対座標系に符号化対象のVOP及び参照画像とするVOPを配置して動きベクトルを検出する。
なお、検出された動きベクトル(MV)は、予測モードとともに後段のVLC器22、量子化器16、逆量子化器18、DCT係数差分化器17等に供給される。
動き検出及び動き補償部13では、フレームメモリ12に記憶されたVOPに対してマクロブロック単位で動きベクトルを検出する。すなわち、上述したように、VOPは時刻(フレーム)によって大きさや位置が変化するため、この動きベクトルの検出に当たっては、検出のための基準となる座標系を設定し、座標系における動きを検出する必要がある。そこで、動き検出及び動き補償部13では、上述の絶対座標系を基準座標系とし、サイズデータ(FSZ_B)及びオフセットデータ(FPOS_B)にしたがって、この絶対座標系に符号化対象のVOP及び参照画像とするVOPを配置して動きベクトルを検出する。
なお、検出された動きベクトル(MV)は、予測モードとともに後段のVLC器22、量子化器16、逆量子化器18、DCT係数差分化器17等に供給される。
演算器14には、動き検出及び動き補償部13によってフレームメモリ12から読み出された画像データと同一のマクロブロックデータが供給される。演算器14では、マクロブロックと動き検出及び動き補償部13での予測画像との差分を演算する。
この差分値は、DCT器15に送られる。
動き検出及び動き補償部13は、予測モードがイントラ符号化モードである場合には予測画像を出力しない。この場合、演算器14は、特に処理を行わず、フレームメモリ12から読み出したマクロブロックデータをそのままDCT器15に出力する。
この差分値は、DCT器15に送られる。
動き検出及び動き補償部13は、予測モードがイントラ符号化モードである場合には予測画像を出力しない。この場合、演算器14は、特に処理を行わず、フレームメモリ12から読み出したマクロブロックデータをそのままDCT器15に出力する。
DCT器15は、演算器14の出力データに対して、8画素×8ラインからなるブロック単位でDCT処理を施し、このDCT処理の結果得られるDCT係数を量子化器16に供給する。
量子化器16は、入力されたDCT係数を量子化する。即ちDCT器15で得られた係数を或る値で割算して小さい値の係数で表現することによって符号化量を減らす処理を行う。そしてこの量子化処理で得られた量子化データをDCT係数差分化器17及び逆量子化器18に送る。
量子化器16は、入力されたDCT係数を量子化する。即ちDCT器15で得られた係数を或る値で割算して小さい値の係数で表現することによって符号化量を減らす処理を行う。そしてこの量子化処理で得られた量子化データをDCT係数差分化器17及び逆量子化器18に送る。
逆量子化器18は、量子化器16から入力された8画素×8ラインの量子化されたDCT係数を量子化し、IDCT器19に送る。
IDCT器19は、逆量子化器18より逆量子化されたDCT係数を受け取り、IDCT処理して演算器20に出力する。
IDCT器19は、逆量子化器18より逆量子化されたDCT係数を受け取り、IDCT処理して演算器20に出力する。
演算器20には、IDCT器19の出力データのほか、動き検出及び動き補償部13から演算器14に供給されている予測画像と同一のデータが供給されている。演算器20は、IDCT器19から出力される予測残差(差分データ)と、動き検出及び動き補償部13からの予測画像データとを加算することで、もとの画像データを局所復号し、この局所復号した画像データ(以下、局所復号画像データと記す。)を出力する。ただし、予測モードがイントラ符号化である場合、IDCT器19の出力データは、演算器20をスルーして、そのまま局所復号画像データとしてフレームメモリ21に供給される。この復号画像データは、受信側で得られる復号画像データと同一である。
なお、この画像信号処理装置1では、MPEG4方式の場合、演算器20において得られた局所復号画像データは、テキスチャ(texture)情報としてパディング処理される。一方、形状情報(キー信号)、入力されたサイズデータ(FSZ_B)、オフセットデータ(FPOS_B)、VOPのサイズデータ(VOP_size)、OPのオフセットデータ(VOP_offset)及び動きベクトル検出器102より出力された動きベクトルと予測モードは、MPEG4方式のビジュアルコミッティドラフト(Visual Committe draft)にある記述にしたがって、この形状情報の符号化に用いられる。符号化された形状情報は、局所復号化され、局所復号化されたデータは、色差情報作成及びパディング処理に用いられるほか、DCT係数差分化器17、VLC器22へ送られる。
上述したように、入力された画像データは、フレームメモリ12に格納され、基本単位である16画素×16ラインからなるマクロブロックに分割され処理される。
MPEG4方式では4:2:0フォーマットのみが規定されているが、この4:2:0フォーマットでは、1マクロブロックは、8ライン×8画素で構成されるブロックとして、4つの輝度成分のブロックY0,Y1,Y2,Y3と、2つの色差成分のブロックCb、Crとで構成されている。
このようなマクロブロックに対し、離散コサイン変換を施して量子化する。量子化されたDCT係数にVLC(Variable Length Code)とよばれる可変長符号化を施す。これがイントラ符号化である。
一方、符号化の対象となるピクチャに対して、時間的に隣接する別のピクチャから動き検出とよばれる方法でブロックマッチングが最も小さい予測ブロックを取得し、この予測ブロックと参照マクロブロック(カレントマクロブロック)との差分を求め、この差分値に対してDCT、量子化、可変長符号化を行う。これがインター符号化である。
特に、MPEG4方式では、DCT係数差分化器17でイントラ符号化を行う際、上記図7,図8で説明したように、DCT係数のDC成分及び一部のAC成分に対して予測を行い、そのDCT係数の差分値を符号化し効率の改善を図っている。
MPEG4方式では4:2:0フォーマットのみが規定されているが、この4:2:0フォーマットでは、1マクロブロックは、8ライン×8画素で構成されるブロックとして、4つの輝度成分のブロックY0,Y1,Y2,Y3と、2つの色差成分のブロックCb、Crとで構成されている。
このようなマクロブロックに対し、離散コサイン変換を施して量子化する。量子化されたDCT係数にVLC(Variable Length Code)とよばれる可変長符号化を施す。これがイントラ符号化である。
一方、符号化の対象となるピクチャに対して、時間的に隣接する別のピクチャから動き検出とよばれる方法でブロックマッチングが最も小さい予測ブロックを取得し、この予測ブロックと参照マクロブロック(カレントマクロブロック)との差分を求め、この差分値に対してDCT、量子化、可変長符号化を行う。これがインター符号化である。
特に、MPEG4方式では、DCT係数差分化器17でイントラ符号化を行う際、上記図7,図8で説明したように、DCT係数のDC成分及び一部のAC成分に対して予測を行い、そのDCT係数の差分値を符号化し効率の改善を図っている。
図10は、DCT器15,量子化器16、DCT係数差分化器17の構成をより詳しく示したものである。また図11には図10の構成によって行われる処理タイミングを示している。
図9に示した演算器14から図10のDCT器15には、1マクロブロックにつき、ブロックY0,Y1,Y2,Y3,Cb,Crが順次入力され2次元(水平及び垂直)DCT処理される。即ちこれらのブロックは1stDCT部31で処理された後、バッファ32(DCT Bank0、DCT Bank1)にバッファリングされ、さらに2ndDCT部33で処理される。
例えば図11に示すように、タイミングT1では、入力されたブロックY0が1stDCT処理され、DCT Bank0に書き込まれる。次にタイミングT2では、入力されたブロックY1が1stDCT処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックY0が読み出され、2ndDCT処理される。さらに次にタイミングT3では、入力されたブロックY2が1stDCT処理され、DCT Bank0に書き込まれる。このときDCT Bank1からはブロックY1が読み出され、2ndDCT処理される。バッファ32のDCT Bank0、DCT Bank1は、このように交互に使用される。
図9に示した演算器14から図10のDCT器15には、1マクロブロックにつき、ブロックY0,Y1,Y2,Y3,Cb,Crが順次入力され2次元(水平及び垂直)DCT処理される。即ちこれらのブロックは1stDCT部31で処理された後、バッファ32(DCT Bank0、DCT Bank1)にバッファリングされ、さらに2ndDCT部33で処理される。
例えば図11に示すように、タイミングT1では、入力されたブロックY0が1stDCT処理され、DCT Bank0に書き込まれる。次にタイミングT2では、入力されたブロックY1が1stDCT処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックY0が読み出され、2ndDCT処理される。さらに次にタイミングT3では、入力されたブロックY2が1stDCT処理され、DCT Bank0に書き込まれる。このときDCT Bank1からはブロックY1が読み出され、2ndDCT処理される。バッファ32のDCT Bank0、DCT Bank1は、このように交互に使用される。
DCT器15の出力は量子化器16において、量子化回路41で量子化され、量子化係数バッファ42にバッファリングされる。量子化係数バッファ42には、1マクロブロック分のバッファリングを行うため、6つのブロックにそれぞれ対応するDC/AC-Bank0〜DC/AC-Bank5が設けられている。量子化された各ブロックのDCT係数は、それぞれDC/AC-Bank0〜DC/AC-Bank5に格納される。
即ち図11のタイミングT2では、ブロックY0が2ndDCT処理された後、ブロックを構成する64個のDCT係数が量子化されるが、量子化処理された各DCT係数がDC/AC-Bank0に書き込まれていくことになる。なお、図11において「WR」は量子化係数バッファ42への書込、「RD」は量子化係数バッファ42からの読出を示している。
またタイミングT3では、量子化回路41は2ndDCT処理された後のブロックY1のデータの量子化を行うことになり、この場合、量子化処理された各DCT係数はDC/AC-Bank1に書き込まれていく。
以降同様に、各ブロックY2、Y3、Cb、Crが、図示するように順次処理され、それらの量子化されたDCT係数が、DC/AC-Bank2、DC/AC-Bank3、DC/AC-Bank4、DC/AC-Bank5に書き込まれていくことになる。
即ち図11のタイミングT2では、ブロックY0が2ndDCT処理された後、ブロックを構成する64個のDCT係数が量子化されるが、量子化処理された各DCT係数がDC/AC-Bank0に書き込まれていくことになる。なお、図11において「WR」は量子化係数バッファ42への書込、「RD」は量子化係数バッファ42からの読出を示している。
またタイミングT3では、量子化回路41は2ndDCT処理された後のブロックY1のデータの量子化を行うことになり、この場合、量子化処理された各DCT係数はDC/AC-Bank1に書き込まれていく。
以降同様に、各ブロックY2、Y3、Cb、Crが、図示するように順次処理され、それらの量子化されたDCT係数が、DC/AC-Bank2、DC/AC-Bank3、DC/AC-Bank4、DC/AC-Bank5に書き込まれていくことになる。
タイミングT8においては、1マクロブロックを構成する各ブロックのDCT係数が量子化係数バッファ42のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となる。
そこでタイミングT8においては、t1期間においてDC/AC-Bank0〜DC/AC-Bank5に確保された量子化DCT係数値が読み出されてDCT係数差分化器17の差分化回路51に供給される。差分化回路51では、逆量子化回路53によって得られるDCT係数値を用いて、図11のt2期間において予測演算及び予測方向の決定が行われる。
つまり上述したように予測ブロックの決定、DC成分及びAC成分の予測誤差の算出、さらにはAC成分予測の有効/無効判別を行うものとなる。
そこでタイミングT8においては、t1期間においてDC/AC-Bank0〜DC/AC-Bank5に確保された量子化DCT係数値が読み出されてDCT係数差分化器17の差分化回路51に供給される。差分化回路51では、逆量子化回路53によって得られるDCT係数値を用いて、図11のt2期間において予測演算及び予測方向の決定が行われる。
つまり上述したように予測ブロックの決定、DC成分及びAC成分の予測誤差の算出、さらにはAC成分予測の有効/無効判別を行うものとなる。
ここで、このような処理をt2期間に行うのは、上述のように、AC成分予測の有効/無効判別が、マクロブロックに含まれるすべてのブロック成分について予測前のAC成分(第一列または第一行)の絶対値和と、AC成分の予測誤差の絶対値和を比較して行われるためである。換言すれば、AC成分予測の有効/無効判別は、1マクロブロックを構成する各ブロックのDCT係数が量子化係数バッファ42のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となった時点で可能となるためである。
そして、AC成分予測の有効/無効判別結果に応じて、各ブロックのデータがVLC器22に供給され、可変長符号化される。
例えばタイミングT9においては、もしAC成分予測が有効とされれば、ブロックY0の64個のデータのうちに、差分化回路51で算出されたAC成分の予測誤差としての7個のデータが含まれることになるように、量子化係数バッファ42のDC/AC-Bank0からの出力と差分化回路51の出力がマルチプレクサ52によって順次選択されてVLC器22に供給され、可変長符号化される。もしAC成分予測が無効とされれば、差分化回路51で算出されたAC成分の予測誤差は用いられず、マルチプレクサ52によってDC/AC-Bank0から読み出されるデータ、即ち予測しないAC成分のデータが選択されて、VLC器22で可変長符号化されることになる。
そして、AC成分予測の有効/無効判別結果に応じて、各ブロックのデータがVLC器22に供給され、可変長符号化される。
例えばタイミングT9においては、もしAC成分予測が有効とされれば、ブロックY0の64個のデータのうちに、差分化回路51で算出されたAC成分の予測誤差としての7個のデータが含まれることになるように、量子化係数バッファ42のDC/AC-Bank0からの出力と差分化回路51の出力がマルチプレクサ52によって順次選択されてVLC器22に供給され、可変長符号化される。もしAC成分予測が無効とされれば、差分化回路51で算出されたAC成分の予測誤差は用いられず、マルチプレクサ52によってDC/AC-Bank0から読み出されるデータ、即ち予測しないAC成分のデータが選択されて、VLC器22で可変長符号化されることになる。
また図示するように、タイミングT10では、ブロックY1についてDC/AC-Bank1から読み出されるデータと、差分化回路51で算出されたDC成分及びAC成分の予測誤差とが、AC成分予測の有効/無効判別結果に応じて選択され、VLC器22に供給される。同様にタイミングT11,T12・・・では、順次ブロックY2,Y3,Cb,Crについて処理される。
ここで、この一連の処理を考えた場合、次のマクロブロックのDCT処理は、タイミングT9から開始しなければならないことになる。タイミングT9では、1stDCT処理として、次のマクロブロックの先頭ブロックY0の処理が行われることを実線で示している。タイミングT9から次のマクロブロックの処理を開始しなければならないのは、もし破線で示すようにタイミングT8から開始させると、量子化係数バッファ42にオーバーライトが発生する可能性があるためである。
タイミングT8で次のマクロブロックのブロックY0のDCT処理を開始したと仮定すると、そのブロックY0の量子化DCT係数を量子化係数バッファ42のDC/AC-Bank0に書き込むのは、これも破線で示すようにタイミングT9〜T10の間の期間となる。
ところがタイミングT9からは、先のマクロブロックのブロックY0の量子化DCT係数をDC/AC-Bank0から読み出してVLC器22に転送している。
このためDC/AC-Bank0において、先のマクロブロックのブロックY0の量子化DCT係数が読み出される前に、次のマクロブロックのブロックY0の量子化DCT係数が書き込まれてしまう危険性がある。
特にこれは、可変長符号化の量子化DCT係数の読み出しは、ジグザグスキャン、垂直スキャン、水平スキャンなどスキャン方法が変わると読み出し順序が変わり、これによってまだ読み出されていない量子化DCT係数の記憶領域に、新たな量子化DCT係数が書き込まれる可能性が生ずるためである。
従ってこれを避けるためには、タイミングT9から次のマクロブロックのDCT処理を開始しなければならない。
タイミングT8で次のマクロブロックのブロックY0のDCT処理を開始したと仮定すると、そのブロックY0の量子化DCT係数を量子化係数バッファ42のDC/AC-Bank0に書き込むのは、これも破線で示すようにタイミングT9〜T10の間の期間となる。
ところがタイミングT9からは、先のマクロブロックのブロックY0の量子化DCT係数をDC/AC-Bank0から読み出してVLC器22に転送している。
このためDC/AC-Bank0において、先のマクロブロックのブロックY0の量子化DCT係数が読み出される前に、次のマクロブロックのブロックY0の量子化DCT係数が書き込まれてしまう危険性がある。
特にこれは、可変長符号化の量子化DCT係数の読み出しは、ジグザグスキャン、垂直スキャン、水平スキャンなどスキャン方法が変わると読み出し順序が変わり、これによってまだ読み出されていない量子化DCT係数の記憶領域に、新たな量子化DCT係数が書き込まれる可能性が生ずるためである。
従ってこれを避けるためには、タイミングT9から次のマクロブロックのDCT処理を開始しなければならない。
以上のことが、上記一連の処理についてパイプライン処理を行うことが難しい事情である。
即ち、第1の理由としては、AC成分予測の有効/無効判別が、1マクロブロックを構成する各ブロックのDCT係数が量子化係数バッファ42のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となった時点で可能となるため、タイミングT8から予測ブロックの決定、DC成分及びAC成分の予測誤差の算出、さらにはAC成分予測の有効/無効判別を行うことと、第2の理由としては量子化係数バッファ42のオーバライトの危険性を回避する必要があることであり、これらの理由により上記タイミングT7〜T9として期間のロスが生ずることになる。
これによってパイプライン処理が妨げられ、またトータルでの処理サイクル数が増大してしまい、効率の良い処理ができないものとなっている。
即ち、第1の理由としては、AC成分予測の有効/無効判別が、1マクロブロックを構成する各ブロックのDCT係数が量子化係数バッファ42のDC/AC-Bank0〜DC/AC-Bank5に確保された状態となった時点で可能となるため、タイミングT8から予測ブロックの決定、DC成分及びAC成分の予測誤差の算出、さらにはAC成分予測の有効/無効判別を行うことと、第2の理由としては量子化係数バッファ42のオーバライトの危険性を回避する必要があることであり、これらの理由により上記タイミングT7〜T9として期間のロスが生ずることになる。
これによってパイプライン処理が妨げられ、またトータルでの処理サイクル数が増大してしまい、効率の良い処理ができないものとなっている。
本発明は上記の点に鑑みて、DCTから可変長符号化までのパイプライン処理を実現し、処理の効率化を図ることを目的とする。
このため本発明では、輝度成分及び色差成分から構成されるn個のブロックによってマクロブロックが形成される画像データに対して、離散コサイン変換、離散コサイン変換係数の量子化、及び可変長符号化を行う符号化装置において、(n+1)個以上の記憶領域が設けられ、各記憶領域へ各ブロックの量子化離散コサイン変換係数が順次格納される第1の記憶手段と、(n+1)個以上の記憶領域が設けられ、各記憶領域へ各ブロックのAC成分予測誤差が順次格納される第2の記憶手段と、或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に算出された該AC成分予測誤差を記憶させるAC予測演算手段と、上記マクロブロックに含まれる全ブロックのAC成分予測誤差を用いて該AC成分予測の有効/無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記AC成分予測誤差を、該判別結果に基づいて上記第1,第2の記憶手段から読み出す読出制御手段とを備える。
また本発明の符号化方法は、輝度成分及び色差成分から構成されるn個のブロックによってマクロブロックが形成される画像データに対して、ブロック単位で順次離散コサイン変換を行う離散コサイン変換ステップと、離散コサイン変換により得られた離散コサイン変換係数を量子化する量子化ステップと、上記量子化された量子化離散コサイン変換係数を、(n+1)個以上の記憶領域が設けられた第1の記憶手段の上記記憶領域毎に順次記憶する第1の記憶ステップと、上記第1の記憶ステップと並行して、順次各ブロックについてのAC成分予測誤差演算を行い、得られたAC成分予測誤差を、(n+1)個以上の記憶領域が設けられた第2の記憶手段の上記記憶領域毎に順次記憶する第2の記憶ステップと、上記マクロブロックに含まれる全ブロックのAC成分予測誤差を用いて該AC成分予測の有効/無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記AC成分予測誤差を、該判別結果に基づいて上記第1,第2の記憶手段から読み出す読み出しステップと、上記読み出しステップで読み出された上記量子化離散コサイン変換係数及び上記AC成分予測誤差を用いて可変長符号化処理を行う可変長符号化ステップとを有する。
即ち本発明では、量子化された量子化離散コサイン変換係数(量子化DCT係数)を記憶する第1の記憶手段(量子化係数バッファ)においては、マクロブロックを構成するn個のブロックに対して(n+1)個以上の記憶領域(DC/AC-Bank)を設け、この記憶領域が順次用いられることで第1の記憶手段がリングバッファとして使用できるようにする。
また、各ブロックについてのAC成分予測誤差(AC予測値)を記憶する第2の記憶手段(AC予測値バッファ)も備えるようにし、さらにその第2の記憶手段についても(n+1)個以上の記憶領域(AC-Bank)を設け、この記憶領域が順次用いられることで第2の記憶手段もリングバッファとして使用できるようにする。
その上で、或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に記憶させる処理を行う。
これにより、マクロブロックを構成する各ブロックの量子化離散コサイン変換係数が第1の記憶手段に蓄積された時点で、各ブロックのAC予測値も第2の記憶手段に蓄積された状態にすることができるため、その直後のタイミングでAC予測の有効/無効判断を行うのみで可変長符号化処理への出力を開始できる。またこのとき、第1,第2の記憶手段では空いている記憶領域が存在するため、さらに次のマクロブロックのブロックについて、DCT処理、量子化、及び第1,第2の記憶手段への書込を行ってもオーバーライトは発生しない。
また、各ブロックについてのAC成分予測誤差(AC予測値)を記憶する第2の記憶手段(AC予測値バッファ)も備えるようにし、さらにその第2の記憶手段についても(n+1)個以上の記憶領域(AC-Bank)を設け、この記憶領域が順次用いられることで第2の記憶手段もリングバッファとして使用できるようにする。
その上で、或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に記憶させる処理を行う。
これにより、マクロブロックを構成する各ブロックの量子化離散コサイン変換係数が第1の記憶手段に蓄積された時点で、各ブロックのAC予測値も第2の記憶手段に蓄積された状態にすることができるため、その直後のタイミングでAC予測の有効/無効判断を行うのみで可変長符号化処理への出力を開始できる。またこのとき、第1,第2の記憶手段では空いている記憶領域が存在するため、さらに次のマクロブロックのブロックについて、DCT処理、量子化、及び第1,第2の記憶手段への書込を行ってもオーバーライトは発生しない。
本発明によれば、量子化された量子化離散コサイン変換係数(量子化DCT係数)を記憶する第1の記憶手段(量子化係数バッファ)においては、マクロブロックを構成するn個のブロックに対してn+1個以上の記憶領域(DC/AC-Bank)を設け、この記憶領域が順次用いられるようにする。また各ブロックについてのAC成分予測誤差(AC予測値)を記憶する第2の記憶手段(AC予測値バッファ)も備えるようにし、さらにその第2の記憶手段についても、n+1個以上の記憶領域(AC-Bank)を設け、この記憶領域が順次用いられるようにしている。そしてさらに、或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に記憶させる処理を行う。
これによって、DCT→量子化→可変長符号化への出力という処理過程において、各マクロブロック毎に処理を待機する期間を解消できる。これは、バッファ(第1,第2の記憶手段)へのオーバライトを解消できること、及びマクロブロックを構成する各ブロックの量子化離散コサイン変換係数が第1の記憶手段に蓄積された時点で、各ブロックのAC予測値も第2の記憶手段に蓄積された状態にすることができ、その直後のタイミングでAC予測の有効/無効判断を行うのみで可変長符号化処理への出力を開始できることによる。
これによって、AC予測演算や予測方向決定、AC予測値有効/無効の判断を伴う処理過程においても、ブロック毎の処理を待機時間のないパイプライン処理が可能となり、必要な処理サイクルを大幅に削減できるという効果があり、高速な符号化エンコードを実現できる。
これによって、DCT→量子化→可変長符号化への出力という処理過程において、各マクロブロック毎に処理を待機する期間を解消できる。これは、バッファ(第1,第2の記憶手段)へのオーバライトを解消できること、及びマクロブロックを構成する各ブロックの量子化離散コサイン変換係数が第1の記憶手段に蓄積された時点で、各ブロックのAC予測値も第2の記憶手段に蓄積された状態にすることができ、その直後のタイミングでAC予測の有効/無効判断を行うのみで可変長符号化処理への出力を開始できることによる。
これによって、AC予測演算や予測方向決定、AC予測値有効/無効の判断を伴う処理過程においても、ブロック毎の処理を待機時間のないパイプライン処理が可能となり、必要な処理サイクルを大幅に削減できるという効果があり、高速な符号化エンコードを実現できる。
以下、本発明の実施の形態の符号化装置を説明する。
本例の符号化装置は、入力した画像データをMPEG4方式、H.263等の規格に準拠した方式で符号化できるエンコーダであり、この符号化装置で符号化して得られたビットストリームは、多重化されて、例えば、地上波や衛星回線、CATV網等の伝送路を介して伝送される。或いは、磁気ディスク、光磁気ディスク、光ディスク、磁気テープ、その他の記録媒体に記録される。
符号化装置の構成を全体的に見れば、上述した図9と同様となる。即ち符号化装置1として、前画像処理部11,フレームメモリ12,動き検出及び動き補償部13,演算器14、DCT器15,量子化器16、DCT係数差分化器17、逆量子化器18、IDCT器19,演算器20,フレームメモリ21、VLC器22を備え、図9のように構成される。この構成の説明は上述したため、ここでの重複説明を避ける。
本例の符号化装置は、入力した画像データをMPEG4方式、H.263等の規格に準拠した方式で符号化できるエンコーダであり、この符号化装置で符号化して得られたビットストリームは、多重化されて、例えば、地上波や衛星回線、CATV網等の伝送路を介して伝送される。或いは、磁気ディスク、光磁気ディスク、光ディスク、磁気テープ、その他の記録媒体に記録される。
符号化装置の構成を全体的に見れば、上述した図9と同様となる。即ち符号化装置1として、前画像処理部11,フレームメモリ12,動き検出及び動き補償部13,演算器14、DCT器15,量子化器16、DCT係数差分化器17、逆量子化器18、IDCT器19,演算器20,フレームメモリ21、VLC器22を備え、図9のように構成される。この構成の説明は上述したため、ここでの重複説明を避ける。
本例の場合、上述した従来例とは、特に量子化器16、DCT係数差分化器17の内部構成が異なるものとなり、以下説明する構成により、ブロック処理サイクル内でDC/AC予測処理を行い、かつ量子化ブロックと可変長符号化ブロック間の量子化係数バッファにリングバッファを用いることで、パイプライン処理を実現しMPEG4のエンコード時のサイクル数を削減するものである。
図1、図2に、図9と同様の全体構成となる本例の符号化装置1としてのDCT器15,量子化器16、DCT係数差分化器17の部分の構成を示す。また図3,図4には本例の構成によって行われる処理タイミングを示している。各図を参照しながら本例の構成及び動作を説明していく。
図1に示すDCT器15には、図9に示した演算器14から、1マクロブロックにつき、ブロックY0,Y1,Y2,Y3,Cb,Crが順次入力される。DCT器15では水平及び垂直の二次元DCT処理を行う。即ち入力される各ブロックは1stDCT部31で処理された後、バッファ32(DCT Bank0、DCT Bank1)にバッファリングされ、さらに2ndDCT部33で処理される。
例えば図3に示すように、タイミングT1では、入力されたブロックY0が1stDCT処理され、DCT Bank0に書き込まれる。次にタイミングT2では、入力されたブロックY1が1stDCT処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックY0が読み出され、2ndDCT処理される。さらに次にタイミングT3では、入力されたブロックY2が1stDCT処理され、DCT Bank0に書き込まれる。このときDCT Bank1からはブロックY1が読み出され、2ndDCT処理される。バッファ32のDCT Bank0、DCT Bank1は、このように交互に使用される。
例えば図3に示すように、タイミングT1では、入力されたブロックY0が1stDCT処理され、DCT Bank0に書き込まれる。次にタイミングT2では、入力されたブロックY1が1stDCT処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックY0が読み出され、2ndDCT処理される。さらに次にタイミングT3では、入力されたブロックY2が1stDCT処理され、DCT Bank0に書き込まれる。このときDCT Bank1からはブロックY1が読み出され、2ndDCT処理される。バッファ32のDCT Bank0、DCT Bank1は、このように交互に使用される。
DCT器15の出力は量子化器16において、量子化回路41で量子化され、量子化係数バッファ43にバッファリングされる。
この場合、量子化係数バッファ43には、1マクロブロック分のバッファリングを行うことに最低必要な6つのブロックに対応するバンクに加え、さらに1つのバンクを追加的に設けている。即ちDC/AC-Bank0〜DC/AC-Bank6として7個のバンクが設けられている。
量子化された各ブロックのDCT係数は、それぞれ順次DC/AC-Bank0〜DC/AC-Bank6を用いて格納されることになる。7個のバンクが形成されるのは、後述するが量子化係数バッファ43をリングバッファ的に利用できるようにするためである。
この場合、量子化係数バッファ43には、1マクロブロック分のバッファリングを行うことに最低必要な6つのブロックに対応するバンクに加え、さらに1つのバンクを追加的に設けている。即ちDC/AC-Bank0〜DC/AC-Bank6として7個のバンクが設けられている。
量子化された各ブロックのDCT係数は、それぞれ順次DC/AC-Bank0〜DC/AC-Bank6を用いて格納されることになる。7個のバンクが形成されるのは、後述するが量子化係数バッファ43をリングバッファ的に利用できるようにするためである。
また、量子化回路41で量子化されたDCT係数は、量子化係数バッファ43に取り込まれると同時に、DCT係数差分化器17の差分化回路61にも供給される。
図1において差分化回路61,マルチプレクサ62,逆量子化回路63を有するものとして示すDCT係数差分化器17の構成は、特に差分化回路61の構成を詳細化して図2に示している。
図2に示すように、差分化回路61には、DC係数バッファ71,DC予測部72,AC係数バッファ73,AC予測部74、AC予測値バッファ75,マルチプレクサ76、AC成分加算/比較部77、制御回路78が設けられる。
図1において差分化回路61,マルチプレクサ62,逆量子化回路63を有するものとして示すDCT係数差分化器17の構成は、特に差分化回路61の構成を詳細化して図2に示している。
図2に示すように、差分化回路61には、DC係数バッファ71,DC予測部72,AC係数バッファ73,AC予測部74、AC予測値バッファ75,マルチプレクサ76、AC成分加算/比較部77、制御回路78が設けられる。
DC係数バッファ71には逆量子化回路63で逆量子化されたDC係数が格納される。DC予測部72は、対象となるブロックに隣接する3つのブロック(即ち図7の対象ブロックXに対するブロックA,B,C)の逆量子化されたDC成分を用いて、予測方向及び対象ブロックのDC成分に対する予測誤差を決定する。
なお或るブロックのDC成分予測誤差は、量子化係数バッファ43のDC/AC-Bank0〜DC/AC-Bank6のうちで、そのブロックに対応するバンクの先頭のデータとして格納される。
なお或るブロックのDC成分予測誤差は、量子化係数バッファ43のDC/AC-Bank0〜DC/AC-Bank6のうちで、そのブロックに対応するバンクの先頭のデータとして格納される。
AC係数バッファ73には逆量子化回路63で逆量子化されたAC係数が格納される。
AC予測部74では、DC予測部72で決定される予測方向によって、対象となるブロックに対して参照するブロックが決定される。なお、入力されたDC成分と周辺に隣接するDC成分との勾配によって予測参照するブロックが決定するが、この決定には数サイクル必要とするので、AC予測部74は第一列のAC成分は内部のフリップフロップなどによるテンポラリレジスタに一時保存しておく。
参照するべきブロックが左隣のブロックであれば、第一列成分をAC予測に使用するので、保存した第一列のAC成分とAC係数バッファ73に保存されたAC係数を基に予測誤差を求める。また参照するべきブロックが上のブロックであれば、第一行成分をAC成分に使用するので、保存した第一列のAC成分は使用せず、入力されたAC成分の第一行成分と、それに対応してAC係数バッファ73に保存されたAC係数から予測誤差を求める。
AC予測部74では、DC予測部72で決定される予測方向によって、対象となるブロックに対して参照するブロックが決定される。なお、入力されたDC成分と周辺に隣接するDC成分との勾配によって予測参照するブロックが決定するが、この決定には数サイクル必要とするので、AC予測部74は第一列のAC成分は内部のフリップフロップなどによるテンポラリレジスタに一時保存しておく。
参照するべきブロックが左隣のブロックであれば、第一列成分をAC予測に使用するので、保存した第一列のAC成分とAC係数バッファ73に保存されたAC係数を基に予測誤差を求める。また参照するべきブロックが上のブロックであれば、第一行成分をAC成分に使用するので、保存した第一列のAC成分は使用せず、入力されたAC成分の第一行成分と、それに対応してAC係数バッファ73に保存されたAC係数から予測誤差を求める。
求められたAC成分予測誤差は、AC予測値バッファ75に格納される。
AC予測値バッファ75には、それぞれが1つのブロックに対応して、AC予測値(AC成分の予測誤差)を保持する領域として、7単位のバンク(AC-Bank0〜AC-Bank6)が設けられている。そして各AC-Bankは、1つのブロックにおける水平第1行又は垂直第1列の7画素分のAC予測値を保持するための領域として、Coef0〜Coef6が用意されている。
AC-Bank0〜AC-Bank6として、1マクロブロックを構成する6つのブロックよりも1つ多い7ブロック分のAC予測値のバンクが形成されるが、算出された各ブロックのAC予測値は、それぞれ順次AC-Bank0〜AC-Bank6を用いて格納されることになる。7個のバンクが形成されるのは、上記量子化係数バッファ43において7個のバンク(DC/AC-Bank0〜DC/AC-Bank6)が形成されることと同じ意味であり、AC予測値バッファ75をリングバッファ的に利用できるようにするためである。
AC予測値バッファ75には、それぞれが1つのブロックに対応して、AC予測値(AC成分の予測誤差)を保持する領域として、7単位のバンク(AC-Bank0〜AC-Bank6)が設けられている。そして各AC-Bankは、1つのブロックにおける水平第1行又は垂直第1列の7画素分のAC予測値を保持するための領域として、Coef0〜Coef6が用意されている。
AC-Bank0〜AC-Bank6として、1マクロブロックを構成する6つのブロックよりも1つ多い7ブロック分のAC予測値のバンクが形成されるが、算出された各ブロックのAC予測値は、それぞれ順次AC-Bank0〜AC-Bank6を用いて格納されることになる。7個のバンクが形成されるのは、上記量子化係数バッファ43において7個のバンク(DC/AC-Bank0〜DC/AC-Bank6)が形成されることと同じ意味であり、AC予測値バッファ75をリングバッファ的に利用できるようにするためである。
またAC予測部74で算出された1ブロック分のAC予測値は、AC成分加算/比較部77で加算(絶対値和)され、予測しない絶対値和との比較が行われる。そしてAC成分加算/比較部77は、その比較結果に基づいて、AC予測が有効か否かを示す予測フラグFACを後段の制御回路78に送る。
制御回路78は、予測フラグFACによりAC予測の有効/無効を判別し、それに応じてマルチプレクサ76及び62を制御する。
上記量子化係数バッファ43のバンク(DC/AC-Bank)は、或る1つのブロックについて64個のDCT係数(即ちDC成分1個と63個のAC係数)を格納し、またAC予測値バッファ75のバンク(AC-Bank)は、或るブロックについて7個のAC予測値を格納する。
従って制御回路78は、AC成分予測が有効とされれば、或るブロックの64個のデータ(係数)の出力として、該当するDC/AC-BankからのDC成分1個と56個のAC係数を出力させ、また該当するAC-Bankから7個のAC予測値を出力させる。このような出力が所定の順序で行われるようにマルチプレクサ76及び62を制御する。
またAC成分予測が無効とされれば、AC予測値バッファ75に格納されたAC予測値は出力されず、即ち該当するDC/AC-BankからDC成分1個と63個のAC係数を出力させるように、マルチプレクサ76及び62を制御する。
このようにして出力された係数はVLC器22で可変長符号化されることになる。
制御回路78は、予測フラグFACによりAC予測の有効/無効を判別し、それに応じてマルチプレクサ76及び62を制御する。
上記量子化係数バッファ43のバンク(DC/AC-Bank)は、或る1つのブロックについて64個のDCT係数(即ちDC成分1個と63個のAC係数)を格納し、またAC予測値バッファ75のバンク(AC-Bank)は、或るブロックについて7個のAC予測値を格納する。
従って制御回路78は、AC成分予測が有効とされれば、或るブロックの64個のデータ(係数)の出力として、該当するDC/AC-BankからのDC成分1個と56個のAC係数を出力させ、また該当するAC-Bankから7個のAC予測値を出力させる。このような出力が所定の順序で行われるようにマルチプレクサ76及び62を制御する。
またAC成分予測が無効とされれば、AC予測値バッファ75に格納されたAC予測値は出力されず、即ち該当するDC/AC-BankからDC成分1個と63個のAC係数を出力させるように、マルチプレクサ76及び62を制御する。
このようにして出力された係数はVLC器22で可変長符号化されることになる。
以上の図1,図2に示したように本例では、量子化係数バッファ43及びAC予測値バッファ75において7ブロック分のバンクを備えるようにし、さらにDCT係数を量子化係数バッファ43に格納する際に、予測演算のための処理を行ってAC予測値をAC予測値バッファ75に格納するようにすることで、DC/AC予測のパイプライン処理を可能にするものである。
図3により処理タイミングを説明する。
図3のタイミングT1で、或るマクロブロックにおける先頭のブロックY0がDCT器15に入力され、1stDCT処理されるとする。上述したようにDCT器15では、バッファ32のDCT Bank0、DCT Bank1が交互に使用され、バッファリングされながら、1stDCT処理されたデータが次段の2ndDCT処理に供される。例えばタイミングT1からの期間では、1stDCT処理されたブロックY0のデータがDCT Bank0に書き込まれる。次のタイミングT2では、次に入力されたブロックY1が1stDCT処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックY0が読み出され、2ndDCT処理される。
図3のタイミングT1で、或るマクロブロックにおける先頭のブロックY0がDCT器15に入力され、1stDCT処理されるとする。上述したようにDCT器15では、バッファ32のDCT Bank0、DCT Bank1が交互に使用され、バッファリングされながら、1stDCT処理されたデータが次段の2ndDCT処理に供される。例えばタイミングT1からの期間では、1stDCT処理されたブロックY0のデータがDCT Bank0に書き込まれる。次のタイミングT2では、次に入力されたブロックY1が1stDCT処理され、DCT Bank1に書き込まれる。このときDCT Bank0からはブロックY0が読み出され、2ndDCT処理される。
ここで、タイミングT2からの期間には、2ndDCT処理されたブロックY0のデータ(64個のDCT係数)が量子化回路41で量子化されるが、量子化処理された各DCT係数が量子化係数バッファ43に書き込まれる。このとき、量子化係数バッファ43においては例えばDC/AC-Bank0に書き込まれるものとなる。なお、図3において「WR」は量子化係数バッファ43及びAC予測値バッファ75への書込、「RD」は量子化係数バッファ43及びAC予測値バッファ75からの読出を示している。
このように量子化器16では、1つのブロックにつき64個のDCT係数を量子化し、量子化係数バッファ43に格納する。このとき、DCTの方法にもよるが、2次元DCTの場合、図5に示すように、DC成分を先頭に第一列から順に縦方向に送られる。
さらにこのタイミングT2からの期間では、ta(Y0)として示す期間において、ブロックY0についてのDC成分及びAC成分の予測演算が行われる。即ち上記図2において説明したように、AC予測値をAC予測値バッファ75の或るバンクに格納するまでの処理が行われる。この場合、量子化係数バッファ43においてDC/AC-Bank0が用いられることに対応して、AC予測値バッファ75ではAC-Bank0が用いられ、AC-Bank0のCoef0〜Coef6に水平又は垂直方向の7個のAC予測値が記憶されるものとなる。
なお、例えばこのta期間においてAC予測値バッファ75の或るバンク(AC-Bank)にAC予測値が記憶される場合の処理タイミングは、後に図4で述べる。
このように量子化器16では、1つのブロックにつき64個のDCT係数を量子化し、量子化係数バッファ43に格納する。このとき、DCTの方法にもよるが、2次元DCTの場合、図5に示すように、DC成分を先頭に第一列から順に縦方向に送られる。
さらにこのタイミングT2からの期間では、ta(Y0)として示す期間において、ブロックY0についてのDC成分及びAC成分の予測演算が行われる。即ち上記図2において説明したように、AC予測値をAC予測値バッファ75の或るバンクに格納するまでの処理が行われる。この場合、量子化係数バッファ43においてDC/AC-Bank0が用いられることに対応して、AC予測値バッファ75ではAC-Bank0が用いられ、AC-Bank0のCoef0〜Coef6に水平又は垂直方向の7個のAC予測値が記憶されるものとなる。
なお、例えばこのta期間においてAC予測値バッファ75の或るバンク(AC-Bank)にAC予測値が記憶される場合の処理タイミングは、後に図4で述べる。
次にタイミングT3からの期間では、2ndDCT処理されたブロックY1のデータ(64個のDCT係数)が量子化回路41で量子化され、量子化処理された各DCT係数が量子化係数バッファ43のDC/AC-Bank1に書き込まれるものとなる。
さらにこのタイミングT3からの期間では、ta(Y1)として示す期間において、ブロックY1についてのDC成分及びAC成分の予測演算が行われ、そのAC予測値がAC予測値バッファ75のAC-Bank1に記憶される。即ちAC-Bank1のCoef0〜Coef6に水平又は垂直方向の7個のAC予測値が記憶される。
さらにこのタイミングT3からの期間では、ta(Y1)として示す期間において、ブロックY1についてのDC成分及びAC成分の予測演算が行われ、そのAC予測値がAC予測値バッファ75のAC-Bank1に記憶される。即ちAC-Bank1のCoef0〜Coef6に水平又は垂直方向の7個のAC予測値が記憶される。
以降同様に処理されていくと、タイミングT7〜T8の間の期間において、量子化係数バッファ43のDC/AC-Bank0〜DC/AC-Bank5に、各ブロックY0,Y1,Y2,Y3,Cb,Crについての量子化DCT係数が書き込まれた状態となり、さらにAC予測値バッファ75のAC-Bank0〜AC-Bank5には、各ブロックについてのAC予測値が記憶された状態となる。
そこでタイミングT7〜T8の間の期間tbでは、図2のAC成分加算/比較部77で、1マクロブロック内の全てのブロックのAC予測値の絶対値和と、予測しない絶対値和との比較ができることになり、その結果としてAC予測が有効か否かを示す予測フラグFACを後段の制御回路78に送ることができる。
従って、タイミングT8からは、制御回路78は、予測フラグFACによりAC予測の有効/無効を判別し、それに応じてマルチプレクサ62,76を制御して、AC予測値を有効化するか否かに応じた状態で、後段のVLC器22(可変長符号化処理)に対するDCT係数の出力を行うことができる。
図示するように、タイミングT8では、ブロックY0の係数出力として、量子化係数バッファ43のDC/AC-Bank0に格納されたDCT係数と、AC予測値バッファ75のAC-Bank0に格納されたAC予測値の読出が行われ、後段のVLC器22で可変長符号化処理が行われる。もちろん、1ブロックにつき出力される64個の係数データのうちにAC-Bank0に格納された7個のAC予測値が含まれることになるのは、AC予測が有効化された場合であり、AC予測が無効とされた場合は、DC/AC-Bank0に格納された64個のDCT係数が出力される。
そこでタイミングT7〜T8の間の期間tbでは、図2のAC成分加算/比較部77で、1マクロブロック内の全てのブロックのAC予測値の絶対値和と、予測しない絶対値和との比較ができることになり、その結果としてAC予測が有効か否かを示す予測フラグFACを後段の制御回路78に送ることができる。
従って、タイミングT8からは、制御回路78は、予測フラグFACによりAC予測の有効/無効を判別し、それに応じてマルチプレクサ62,76を制御して、AC予測値を有効化するか否かに応じた状態で、後段のVLC器22(可変長符号化処理)に対するDCT係数の出力を行うことができる。
図示するように、タイミングT8では、ブロックY0の係数出力として、量子化係数バッファ43のDC/AC-Bank0に格納されたDCT係数と、AC予測値バッファ75のAC-Bank0に格納されたAC予測値の読出が行われ、後段のVLC器22で可変長符号化処理が行われる。もちろん、1ブロックにつき出力される64個の係数データのうちにAC-Bank0に格納された7個のAC予測値が含まれることになるのは、AC予測が有効化された場合であり、AC予測が無効とされた場合は、DC/AC-Bank0に格納された64個のDCT係数が出力される。
またタイミングT9からは、ブロックY1の係数出力として、量子化係数バッファ43のDC/AC-Bank1に格納されたDCT係数の読出と、AC予測値バッファ75のAC-Bank1に格納されたAC予測値の読出が行われ(但しAC予測が有効とされた場合のみ)、後段のVLC器22で可変長符号化処理が行われる。
さらにタイミングT10からは、ブロックY2の係数出力として、量子化係数バッファ43のDC/AC-Bank2に格納されたDCT係数の読出と、AC予測値バッファ75のAC-Bank2に格納されたAC予測値の読出が行われ(但しAC予測が有効とされた場合のみ)、後段のVLC器22で可変長符号化処理が行われる。
以降も同様である。
さらにタイミングT10からは、ブロックY2の係数出力として、量子化係数バッファ43のDC/AC-Bank2に格納されたDCT係数の読出と、AC予測値バッファ75のAC-Bank2に格納されたAC予測値の読出が行われ(但しAC予測が有効とされた場合のみ)、後段のVLC器22で可変長符号化処理が行われる。
以降も同様である。
ここで、この図3においてはタイミングT7からの期間には、次のマクロブロックの先頭のブロックY0についての1stDCT処理が行われるものとなっている。
そしてタイミングT7で1stDCT処理されたブロックY0のデータは、タイミングT8からの期間において、2ndDCT及び量子化されることになり、このとき量子化されたDCT係数が量子化係数バッファ43に書き込まれる。
このとき、量子化係数バッファ43に7単位のバンクが設けられていることから、この場合、図示するようにブロックY0の64個の量子化DCT係数は、量子化係数バッファ43のDC/AC-Bank6に書き込まれるものとされる。
上記のようにタイミングT8からの期間は、直前のマクロブロックのブロックY0のDCT係数がDC/AC-Bank0から読み出されている期間であるが、異なるバンクであるDC/AC-Bank6に対して書込が行われるため、量子化係数バッファ43においてオーバーライトは発生しない。
可変長符号化のDCT量子化係数の読み出しはジグザグスキャン、垂直スキャン、水平スキャンなどスキャン方法が変わると読み出し順序が変わるが、そのような事情を考慮しても、読み出しを行っているバンクに対して書込を行うものではないため、オーバライト発生の可能性は解消されるものである。
そしてタイミングT7で1stDCT処理されたブロックY0のデータは、タイミングT8からの期間において、2ndDCT及び量子化されることになり、このとき量子化されたDCT係数が量子化係数バッファ43に書き込まれる。
このとき、量子化係数バッファ43に7単位のバンクが設けられていることから、この場合、図示するようにブロックY0の64個の量子化DCT係数は、量子化係数バッファ43のDC/AC-Bank6に書き込まれるものとされる。
上記のようにタイミングT8からの期間は、直前のマクロブロックのブロックY0のDCT係数がDC/AC-Bank0から読み出されている期間であるが、異なるバンクであるDC/AC-Bank6に対して書込が行われるため、量子化係数バッファ43においてオーバーライトは発生しない。
可変長符号化のDCT量子化係数の読み出しはジグザグスキャン、垂直スキャン、水平スキャンなどスキャン方法が変わると読み出し順序が変わるが、そのような事情を考慮しても、読み出しを行っているバンクに対して書込を行うものではないため、オーバライト発生の可能性は解消されるものである。
また、このタイミングT8のta(Y0)で示す期間には、ブロックY0についてのDC成分及びAC成分の予測演算が行われ、そのAC予測値がAC予測値バッファ75のAC-Bank6に記憶される。即ちAC-Bank6のCoef0〜Coef6に水平又は垂直方向の7個のAC予測値が記憶される。
この場合も、AC予測値バッファ75では、直前のマクロブロックのブロックY0のAC予測値がAC-Bank0から読み出されている期間であるが、異なるバンクであるAC-Bank6に対して書込が行われるため、AC予測値バッファ75においてもオーバーライトは発生しない。
この場合も、AC予測値バッファ75では、直前のマクロブロックのブロックY0のAC予測値がAC-Bank0から読み出されている期間であるが、異なるバンクであるAC-Bank6に対して書込が行われるため、AC予測値バッファ75においてもオーバーライトは発生しない。
同様にタイミングT9からの期間は、直前のマクロブロックのブロックY1についてのDCT係数がDC/AC-Bank1から読み出され、AC予測値がAC-Bank1から読み出される期間とされるが、このとき今回のマクロブロックのブロックY1のDCT係数は、DC/AC-Bank0に書き込まれ、AC予測値がAC-Bank0に書き込まれることになる。
またタイミングT10からの期間は、直前のマクロブロックのブロックY2についてのDCT係数がDC/AC-Bank2から読み出され、AC予測値がAC-Bank2から読み出される期間とされるが、このとき今回のマクロブロックのブロックY2のDCT係数は、DC/AC-Bank1に書き込まれ、AC予測値がAC-Bank1に書き込まれることになる。
つまり量子化係数バッファ43及びAC予測値バッファ75においてオーバーライトは発生しない。従って、図示するように、タイミングT7から次のマクロブロックのDCT処理を開始することに問題ないものとなる。これによって図11のT7〜T8又はT7〜T9として示したような処理待機期間の無い、パイプライン処理が実現できる。
またタイミングT10からの期間は、直前のマクロブロックのブロックY2についてのDCT係数がDC/AC-Bank2から読み出され、AC予測値がAC-Bank2から読み出される期間とされるが、このとき今回のマクロブロックのブロックY2のDCT係数は、DC/AC-Bank1に書き込まれ、AC予測値がAC-Bank1に書き込まれることになる。
つまり量子化係数バッファ43及びAC予測値バッファ75においてオーバーライトは発生しない。従って、図示するように、タイミングT7から次のマクロブロックのDCT処理を開始することに問題ないものとなる。これによって図11のT7〜T8又はT7〜T9として示したような処理待機期間の無い、パイプライン処理が実現できる。
ところでこのようなパイプライン処理が実現できることは、量子化係数バッファ43及びAC予測値バッファ75において7個のバンクを設けることに加え、図3に期間ta(Y0)〜ta(Cr)として示したように、DC/AC予測演算及びAC予測値バッファ75へのAC予測値の書込を、2ndDCT処理→量子化→量子化DCT係数の量子化係数バッファ43への書き込みという処理を実行する期間と同時的に実行することが必要となるものである。
即ち図11の従来例においては、期間t1、t2でDC/AC係数の読出と予測演算が行われ、その後AC予測の有効/無効判断が行われていたことも、パイプライン処理を妨げる要因となっていた。これに対して本例では、各ブロックについてのDC/AC予測演算及びAC予測値バッファ75へのAC予測値の書込を、期間ta(Y0)〜ta(Cr)において行い、タイミングT7からの期間において1マクロブロックを構成する各ブロックの量子化DCT係数及びAC予測値が蓄積された直後に、図3に示す期間tbとして、単にAC予測の有効/無効判断を行うことで、タイミングT8から次段の可変長符号化処理への出力が可能となり、これもパイプライン処理を実現する要素となる。
即ち図11の従来例においては、期間t1、t2でDC/AC係数の読出と予測演算が行われ、その後AC予測の有効/無効判断が行われていたことも、パイプライン処理を妨げる要因となっていた。これに対して本例では、各ブロックについてのDC/AC予測演算及びAC予測値バッファ75へのAC予測値の書込を、期間ta(Y0)〜ta(Cr)において行い、タイミングT7からの期間において1マクロブロックを構成する各ブロックの量子化DCT係数及びAC予測値が蓄積された直後に、図3に示す期間tbとして、単にAC予測の有効/無効判断を行うことで、タイミングT8から次段の可変長符号化処理への出力が可能となり、これもパイプライン処理を実現する要素となる。
期間ta(ta(Y0)〜ta(Cr))において実行される処理を図4で説明する。
図4は例えば図3のタイミングT3〜T4の期間を例に挙げて、1ブロック分の処理のタイミングを示したものである。
例えばブロックY1としての64個のDCT係数として、2ndDCT処理されて量子化される8×8の係数を(0,0)〜(7,7)として示す。1ブロック期間は64サイクルの処理となる。
図2のDC予測部72では、係数(0,0)が入力された後のタイミングでDC予測を行い、予測方向を決定できる。なお、この処理には数サイクルの期間を必要とする。
一方、AC予測部74では、AC予測値バッファ75に格納するAC予測値は、DC予測によって予測方向が決まるまでは確定させることができないが、順次入力される係数(0,1)〜(0,7)は、もし水平方向予測とされた場合に用いる係数となるため、これらを内部のテンポラリレジスタに格納しておく。
DC予測の結果に基づいて図に示すタイミングで予測方向が決定されると、それが水平方向予測であった場合は、AC予測部74は、テンポラリレジスタに格納しておいた係数(0,1)〜(0,7)によりAC予測値を得、これをAC予測値バッファ75の所定のAC-BankのCoef0〜Coef6に格納させる。
また垂直方向予測と決定された場合は、AC予測部74は、図示するように、以降入力されてくる係数(1,0)、(2,0)・・・(6,0)、(7,0)を用いてAC予測値を得、これをAC予測値バッファ75の所定のAC-BankのCoef0〜Coef6に格納させる。
図4は例えば図3のタイミングT3〜T4の期間を例に挙げて、1ブロック分の処理のタイミングを示したものである。
例えばブロックY1としての64個のDCT係数として、2ndDCT処理されて量子化される8×8の係数を(0,0)〜(7,7)として示す。1ブロック期間は64サイクルの処理となる。
図2のDC予測部72では、係数(0,0)が入力された後のタイミングでDC予測を行い、予測方向を決定できる。なお、この処理には数サイクルの期間を必要とする。
一方、AC予測部74では、AC予測値バッファ75に格納するAC予測値は、DC予測によって予測方向が決まるまでは確定させることができないが、順次入力される係数(0,1)〜(0,7)は、もし水平方向予測とされた場合に用いる係数となるため、これらを内部のテンポラリレジスタに格納しておく。
DC予測の結果に基づいて図に示すタイミングで予測方向が決定されると、それが水平方向予測であった場合は、AC予測部74は、テンポラリレジスタに格納しておいた係数(0,1)〜(0,7)によりAC予測値を得、これをAC予測値バッファ75の所定のAC-BankのCoef0〜Coef6に格納させる。
また垂直方向予測と決定された場合は、AC予測部74は、図示するように、以降入力されてくる係数(1,0)、(2,0)・・・(6,0)、(7,0)を用いてAC予測値を得、これをAC予測値バッファ75の所定のAC-BankのCoef0〜Coef6に格納させる。
即ち図2の構成を採ることで、図4のように、或るブロックの量子化DCT係数を量子化係数バッファ43に格納する期間に、同時的にAC予測値を算出し、AC予測値バッファ75に格納していくことができる。
これによって上記図3のように、マクロブロック内の6個目のブロックCrについて、そのDCT係数を量子化係数バッファ43に格納した直後の時点では、単にAC予測の有効/無効を判断して、後段のVLC器22に対する出力処理に移ることができ、上記オーバライトの解消と合わせて、パイプライン処理を実現するものとなる。
これによって上記図3のように、マクロブロック内の6個目のブロックCrについて、そのDCT係数を量子化係数バッファ43に格納した直後の時点では、単にAC予測の有効/無効を判断して、後段のVLC器22に対する出力処理に移ることができ、上記オーバライトの解消と合わせて、パイプライン処理を実現するものとなる。
また、このように各ブロックについて、2ndDCT処理→量子化→量子化DCT係数の量子化係数バッファ43への書き込みという処理を実行する期間と同時的に期間taでAC予測値の演算及びAC予測値バッファ75への格納を行うことは、量子化係数バッファ43及びAC予測値バッファ75に1つのバンクを追加するのみで、パイプライン処理を行った場合のオーバライトが発生しないようにするものともなる。これを図6で説明する。
図6は、仮に、量子化係数バッファ43及びAC予測値バッファ75に7単位のバンクを設けるがAC予測演算を上記ta期間では行わないようにした場合の処理タイミングを示している。
上記図3のta期間で示したタイミングでのAC予測演算を行わないものとした場合は、図6のように、タイミングT8からのt1期間でDC/AC係数の読み出しを行い、続くt2期間に予測演算及び予測方向を決定し、またAC予測の有効/無効を判断することになる。
すると、後段のVLC器22への出力は、図示するようにT8〜T9の間の後半のタイミングから可能となり、タイミングT9以降にまでわたって出力(量子化係数バッファ43のDC/AC-Bank0及びAC予測値バッファ75のAC-Bank0からの読出)が実行される。
この場合、図からわかるように、タイミングT9以降では、量子化係数バッファ43のDC/AC-Bank0及びAC予測値バッファ75のAC-Bank0に対しては、次のマクロブロックに関しての書込が行われている。従って、後段のVLC処理のサイクルによっては、ここにオーバライトの可能性が生ずる。
即ち、量子化係数バッファ43及びAC予測値バッファ75においてバンクを1つ追加したのみでは、パイプライン処理を安全に実行できない場合があるが、上記図3で説明したように本例では、各ブロックについて、量子化DCT係数を量子化係数バッファ43に格納する期間に、同時的にAC予測値を算出し、AC予測値バッファ75に格納することで、確実に安全なパイプライン処理が実現できるものである。
図6は、仮に、量子化係数バッファ43及びAC予測値バッファ75に7単位のバンクを設けるがAC予測演算を上記ta期間では行わないようにした場合の処理タイミングを示している。
上記図3のta期間で示したタイミングでのAC予測演算を行わないものとした場合は、図6のように、タイミングT8からのt1期間でDC/AC係数の読み出しを行い、続くt2期間に予測演算及び予測方向を決定し、またAC予測の有効/無効を判断することになる。
すると、後段のVLC器22への出力は、図示するようにT8〜T9の間の後半のタイミングから可能となり、タイミングT9以降にまでわたって出力(量子化係数バッファ43のDC/AC-Bank0及びAC予測値バッファ75のAC-Bank0からの読出)が実行される。
この場合、図からわかるように、タイミングT9以降では、量子化係数バッファ43のDC/AC-Bank0及びAC予測値バッファ75のAC-Bank0に対しては、次のマクロブロックに関しての書込が行われている。従って、後段のVLC処理のサイクルによっては、ここにオーバライトの可能性が生ずる。
即ち、量子化係数バッファ43及びAC予測値バッファ75においてバンクを1つ追加したのみでは、パイプライン処理を安全に実行できない場合があるが、上記図3で説明したように本例では、各ブロックについて、量子化DCT係数を量子化係数バッファ43に格納する期間に、同時的にAC予測値を算出し、AC予測値バッファ75に格納することで、確実に安全なパイプライン処理が実現できるものである。
以上のように本例では、AC予測演算をブロック処理サイクル内で実現できることで、1マクロブロックで64サイクルのサイクル数削減が実現できる。また従来のようにオーバライトを考慮して処理を待機する期間も不要となり、この点でも1マクロブロックで64サイクルのサイクル数削減が実現できる。
例えばMPEGのコーデックブロックは1サイクルでも早くエンコード/デコードすることが望まれるが、本例の構成を使用するとQCIFサイズの99マクロブロックでは、少なくとも1フレームあたり99×64=6336のサイクル数削減が期待できるものとなる。
例えばMPEGのコーデックブロックは1サイクルでも早くエンコード/デコードすることが望まれるが、本例の構成を使用するとQCIFサイズの99マクロブロックでは、少なくとも1フレームあたり99×64=6336のサイクル数削減が期待できるものとなる。
なお、上記例では量子化係数バッファ43及びAC予測値バッファ75にはバンクを最低限必要な6単位より1つ追加して7単位としたが、さらに追加して8単位以上とする例も考えられる。
15 DCT器、16 量子化器、17 DCT係数差分化器、22 VLC器、41 量子化回路、43 量子化係数バッファ、61 差分化回路、62 マルチプレクサ、63 逆量子化回路、71 DC係数バッファ71、72 DC予測部、73 AC係数バッファ、74 AC予測部、75 AC予測値バッファ、76 マルチプレクサ、77 AC成分加算/比較部、78 制御回路
Claims (2)
- 輝度成分及び色差成分から構成されるn個のブロックによってマクロブロックが形成される画像データに対して、離散コサイン変換、離散コサイン変換係数の量子化、及び可変長符号化を行う符号化装置において、
(n+1)個以上の記憶領域が設けられ、各記憶領域へ各ブロックの量子化離散コサイン変換係数が順次格納される第1の記憶手段と、
(n+1)個以上の記憶領域が設けられ、各記憶領域へ各ブロックのAC成分予測誤差が順次格納される第2の記憶手段と、
或るブロックの量子化離散コサイン変換係数を上記第1の記憶手段に記憶させる期間において、該ブロックについてのAC成分予測誤差演算を行い、上記第2の記憶手段に算出された該AC成分予測誤差を記憶させるAC予測演算手段と、
上記マクロブロックに含まれる全ブロックのAC成分予測誤差を用いて該AC成分予測の有効/無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記AC成分予測誤差を、該判別結果に基づいて上記第1,第2の記憶手段から読み出す読出制御手段と、
を備えたことを特徴とする符号化装置。 - 輝度成分及び色差成分から構成されるn個のブロックによってマクロブロックが形成される画像データに対して、ブロック単位で順次離散コサイン変換を行う離散コサイン変換ステップと、
離散コサイン変換により得られた離散コサイン変換係数を量子化する量子化ステップと、
上記量子化された量子化離散コサイン変換係数を、(n+1)個以上の記憶領域が設けられた第1の記憶手段の上記記憶領域毎に順次記憶する第1の記憶ステップと、
上記第1の記憶ステップと並行して、順次各ブロックについてのAC成分予測誤差演算を行い、得られたAC成分予測誤差を、(n+1)個以上の記憶領域が設けられた第2の記憶手段の上記記憶領域毎に順次記憶する第2の記憶ステップと、
上記マクロブロックに含まれる全ブロックのAC成分予測誤差を用いて該AC成分予測の有効/無効を判別し、上記可変長符号化処理に供する上記量子化離散コサイン変換係数及び上記AC成分予測誤差を、該判別結果に基づいて上記第1,第2の記憶手段から読み出す読み出しステップと、
上記読み出しステップで読み出された上記量子化離散コサイン変換係数及び上記AC成分予測誤差を用いて可変長符号化処理を行う可変長符号化ステップと、
を有することを特徴とする符号化方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003354886A JP2005123783A (ja) | 2003-10-15 | 2003-10-15 | 符号化装置及び符号化方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003354886A JP2005123783A (ja) | 2003-10-15 | 2003-10-15 | 符号化装置及び符号化方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2005123783A true JP2005123783A (ja) | 2005-05-12 |
Family
ID=34612669
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003354886A Pending JP2005123783A (ja) | 2003-10-15 | 2003-10-15 | 符号化装置及び符号化方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2005123783A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008141276A (ja) * | 2006-11-30 | 2008-06-19 | Sanyo Electric Co Ltd | Tv信号処理回路 |
-
2003
- 2003-10-15 JP JP2003354886A patent/JP2005123783A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008141276A (ja) * | 2006-11-30 | 2008-06-19 | Sanyo Electric Co Ltd | Tv信号処理回路 |
| US8311123B2 (en) | 2006-11-30 | 2012-11-13 | Semiconductor Components Industries, Llc | TV signal processing circuit |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1853069B1 (en) | Decoding macroblock type and coded block pattern information | |
| CN101562749B (zh) | 具有集成的有损压缩和无损压缩的视频数据压缩方法和装置 | |
| JP2022518587A (ja) | イントラ画像ブロック補償のためのデコードされたブロックベクトルの変換 | |
| US20020057739A1 (en) | Method and apparatus for encoding video | |
| WO2006008609A1 (en) | System and method for motion prediction in scalable video coding | |
| CN101208954A (zh) | 具有可变压缩比和用于存储及检索参考帧数据的缓冲器的视频解码器 | |
| JP2009267689A (ja) | 動画像符号化装置、及び動画像符号化方法 | |
| JP3918263B2 (ja) | 圧縮符号化装置および符号化方法 | |
| JP4502203B2 (ja) | 画像符号化装置、及び画像復号化装置 | |
| CN1937773A (zh) | 外部存储装置、存储图像数据的方法及图像处理器 | |
| JP2002199392A (ja) | 映像符号化方法および装置 | |
| CN100428800C (zh) | 运动图像解码设备及方法 | |
| EP1083752A1 (en) | Video decoder with reduced memory | |
| JP4165752B2 (ja) | 画像データへの秘匿データ挿入方式および秘匿データ検出方式 | |
| JP5080304B2 (ja) | 秘匿データが挿入された画像データの表示方式 | |
| CN1968420B (zh) | 应用于影像译码器与编码器的影像处理方法 | |
| WO2006126694A2 (en) | Video coding using an alternative reference frame for motion compensated prediction | |
| JP2004521547A (ja) | ビデオ符号化器及び記録装置 | |
| JP2005123783A (ja) | 符号化装置及び符号化方法 | |
| JPH08242446A (ja) | 画像処理方法及び画像処理装置 | |
| KR100522595B1 (ko) | 엠펙 비디오 복호화방법 및 엠펙 비디오 복호화기 | |
| JP3854717B2 (ja) | 復号装置およびその方法 | |
| JP4361665B2 (ja) | 動画像符号化データのトランスコーディング方法およびトランスコーディング装置 | |
| US20090198757A1 (en) | Method and device for avoiding rounding errors after performing an inverse discrete cosine transformation | |
| JP2001045493A (ja) | 動画像符号化装置、動画像出力装置、及び記憶媒体 |