JP5756921B2 - 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路 - Google Patents

画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路 Download PDF

Info

Publication number
JP5756921B2
JP5756921B2 JP2010516742A JP2010516742A JP5756921B2 JP 5756921 B2 JP5756921 B2 JP 5756921B2 JP 2010516742 A JP2010516742 A JP 2010516742A JP 2010516742 A JP2010516742 A JP 2010516742A JP 5756921 B2 JP5756921 B2 JP 5756921B2
Authority
JP
Japan
Prior art keywords
block
encoding
decoding
macroblock
block group
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
JP2010516742A
Other languages
English (en)
Other versions
JPWO2009150808A1 (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.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=41416521&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP5756921(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2010516742A priority Critical patent/JP5756921B2/ja
Publication of JPWO2009150808A1 publication Critical patent/JPWO2009150808A1/ja
Application granted granted Critical
Publication of JP5756921B2 publication Critical patent/JP5756921B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、動画像データの復号または符号化を行なう画像復号装置、画像符号化装置、画像復号方法および画像符号化方法に関する。
動画像データを圧縮符号化(以下、単に「符号化」と呼ぶ)する技術として、フレーム間差分を用いたMPEG(Motion Pictures Experts Group)符号化方式が用いられることが多い。MPEG符号化方式としては、MPEG−2(ISO/IEC13818−2)やMPEG−4(ISO/IEC14496−2)が従来から使用されている。加えて、近年ではH.264/MPEG−4 AVC(ISO/IEC14496−10)(以下、単に「H.264」と呼ぶ)やVC−1(SMPTE 421M)といった新しい符号化方式が用いられるようになってきている。
このような符号化規格では、1つの画面(ピクチャ)内を所定画素数のブロック(輝度成分:16画素×16画素)に分割し、当該ブロック単位で復号処理または符号化処理が行われる。この画素ブロックのことをマクロブロックという。
H.264に代表される新しい符号化方式では、マクロブロックを符号化する際、その処理対象マクロブロックに隣接しているマクロブロック(以下、隣接マクロブロックという)と処理対象マクロブロックとの相関を利用して圧縮効率を高めている。つまり、この新しい符号化方式には、位置による依存関係がある。
図22は、H.264における位置による依存関係を示す図である。
具体的には、ある任意のマクロブロックを処理対象マクロブロックとして復号または符号化するときには、図22に示す通り、処理対象マクロブロックに隣接する、左隣接マクロブロックA、左上隣接マクロブロックD、上隣接マクロブロックB、および右上隣接マクロブロックCの、4つの隣接マクロブロックの処理結果を参照する必要がある。
このため、予めこれらの隣接マクロブロックを復号または符号化しておかなければならない。つまり、復号処理および符号化処理には、左隣接マクロブロックA、左上隣接マクロブロックD、上隣接マクロブロックB、および右上隣接マクロブロックCの位置による依存関係がある。
復号処理あるいは符号化処理を高速に行うために、マクロブロックを復号する復号部あるいは符号化する符号化部を複数用いて並列処理するには、この位置による依存関係を解決する必要がある。特許文献1では、この依存関係を解決する方法が提案されている。
図23は、上記特許文献1に記載された画像復号装置および画像符号化装置の処理手順を示す図である。図23において、各マクロブロックMB内に付けられた番号は、そのマクロブロックMBが復号または符号化される処理順序を示す。つまり、同じ番号のマクロブロックMBは同時に並列に処理される。
図23に示すように、上記特許文献1の画像復号装置および画像符号化装置は、ピクチャPicの左上のマクロブロックMBから処理を開始し、ある任意のマクロブロックMBを処理する場合、そのマクロブロックMBの1つ下の行の2列左側に位置するマクロブロックMBを並列に処理することで、上述の位置による依存関係を解決している。
特開2006−129284号公報
しかしながら、上記特許文献1の画像復号装置および画像符号化装置であっても、H.264に代表される新しい符号化方式の復号処理または符号化処理を並列に実行することができず、復号処理または符号化処理を高速化することができないという問題がある。
H.264に代表される新しい符号化方式では、直前に復号または符号化されたマクロブロックとの相関も利用して圧縮効率を高めている。例えばH.264では、ある任意のマクロブロックの量子化パラメータQPは、その直前に処理されたマクロブロックの量子化パラメータ(QP_PREV)を用いて算出されている。そのため、ある任意のマクロブロックを復号または符号化するには、その直前に処理されたマクロブロックを参照する必要がある。つまり、前述の位置による依存関係に加えて、処理順序による依存関係がある。
図24は、H.264における処理順序による依存関係を示す図である。
MPEG符号化方式では、図24に示す通り、ピクチャPic内のマクロブロックMBはラスタースキャン順で処理される。ここで、図24中のマクロブロックMBに付けられた番号は処理順序を示し、矢印は処理順序による依存関係を示している。通常、直前に処理されたマクロブロックMBは、処理対象マクロブロックMBの左隣接マクロブロックMBになるため、この処理対象マクロブロックMBにおける処理順序による依存関係は、位置による依存関係と同じになる。しかし、ピクチャPicの左端に位置するマクロブロックMBを処理する場合、直前に処理されたマクロブロックMBは、その1つ上の行の右端に位置するマクロブロックMBになる。例えば、図24では9番のマクロブロックMBの直前のマクロブロックMBは、8番のマクロブロックMBであり、1つ上の行の右端に位置するマクロブロックMBである。
上記特許文献1の画像復号装置および画像符号化装置では、ピクチャPicの左端に位置するマクロブロックMBを処理する前に、そのマクロブロックMB(処理対象マクロブロック)の1つ上の行の右端に位置するマクロブロックMBを処理しておらず、処理順序による依存関係が解決できていない。つまり、上記特許文献1の画像復号装置および画像符号化装置では、並列に復号および符号化することができない。
そこで、本発明は、かかる問題に鑑みてなされたものであって、H.264に代表される新しい符号化方式に存在する処理順序による依存関係を解決して、動画像データを並列に復号および符号化する画像復号装置、画像符号化装置、画像復号方法および画像符号化方法を提供することを目的とする。
上記目的を達成するために、本発明にかかる画像復号装置は、複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部である可変長復号処理を当該ブロック群に対して行うとともに、前記可変長復号処理の結果を用いて他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に生成された前記ブロック復号情報を用いて、前記可変長復号処理を含む前記復号処理を前記ブロック群に対して行う。
また、上記目的を達成するために、本発明にかかる画像復号装置は、複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部であるプリデコード処理を当該ブロック群に対して行うことにより、他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に行われた前記プリデコード処理によって生成された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行うことを特徴とする。
例えば、第1のブロック復号部による第1のブロック群の復号処理と、第2のブロック復号部による第2のブロック群の復号処理とが行われるときに、H.264に代表される新しい符号化方式に存在する処理順序による依存関係が第1および第2のブロック群にある場合には、第2のブロック群の復号処理には、第1のブロック群に対してプリデコード処理(可変長復号)が行われて生成されるブロック復号情報(例えば、量子化パラメータなど)が必要となる。そこで、本発明では、第1のブロック群の復号処理の前に、その第1のブロック群に対してプリデコード処理をしておき、そのプリデコード処理によって得られたブロック復号情報を用いて、第1のブロック群の復号処理と第2のブロック群の復号処理とを並列に行う。このように、本発明では、事前にプリデコード処理を行ってブロック復号情報を生成しておくことにより、複数のブロック復号部は、予め定められた処理順序でブロック群を順次復号しなくても、H.264に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に復号処理を行うことができる。さらに、本発明では、複数のブロック復号部はそれぞれ、プリデコード処理されたブロック群に対して、復号処理のうちプリデコード処理を除く残りの処理を行うのではなく、符号化ストリームに含まれているブロック群に対して復号処理の全てを行うため、プリデコード処理された複数のブロック群を有する一部復号済みの符号化ストリームを生成する必要がない。この一部復号済みの符号化ストリームは、元の符号化ストリームをよりもデータ量が多い。したがって、本発明では、複数のブロック復号部が、元の符号化ストリームに含まれているブロック群に対して復号処理の全てを行うため、復号処理の対象となるストリームを復号処理の前に一時的に蓄えておくバッファの容量を抑えることができる。
また、前記プリデコード部は、さらに、前記符号化ストリームにおける前記各ブロック群の先頭に、当該ブロック群の先頭であることを一意に判別し得るビットパターンを挿入し、前記複数のブロック復号部のそれぞれは、当該ブロック復号部が前記復号処理を行うべきブロック群を、前記符号化ストリームに挿入されたビットパターンを検索することにより見つけて前記ブロック群を復号することを特徴としてもよい。
これにより、符号化ストリームの各ブロック群の先頭にビットパターンが挿入されているため、各ブロック復号部は、符号化ストリームに対してその先頭から順に可変長復号を行うことなく、復号処理の対象となるブロック群を容易に見つけることができる。
また、前記プリデコード部は、さらに、生成された前記ブロック復号情報を前記符号化ストリームに挿入し、前記複数のブロック復号部のそれぞれは、前記ブロック復号情報が挿入された前記符号化ストリームを取得し、前記符号化ストリームに挿入された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行うことを特徴としてもよい。
これにより、ブロック復号情報が符号化ストリームに挿入されるため、各ブロック復号部は、符号化ストリームを取得するときにブロック復号情報も取得することができ、ブロック復号情報を容易に取得することができる。
また、前記プリデコード部は、前記ブロック復号情報を生成するときには、前記プリデコード処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要な係数と、あらかじめ定められた係数との差分を前記ブロック復号情報として生成することを特徴としてもよい。
これにより、最後のブロックの復号処理に必要な係数(例えば、量子化パラメータ)と、予め定められた係数(例えば、スライスヘッダに格納された量子化パラメータの初期値)との差分がブロック復号情報として生成されるため、最後のブロックの係数そのものをブロック復号情報として生成するよりも、ブロック復号情報のデータ量を抑えることができる。
上記目的を達成するために、本発明にかかる画像符号化装置は、複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化装置であって、それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部とを備えることを特徴とする。
これにより、複数のブロック符号化部が複数のブロック群を並列に符号化しても、調整部によるパラメータ(例えば、量子化パラメータ)の調整によって、複数のブロック群が予め定められた処理順序で順次符号化されたときに生成される符号化ストリームと同様のストリームを生成することができる。その結果、H.264に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に符号化することができる。
また、前記調整部は、前記複数のブロック符号化部による符号化に用いられるパラメータを決定し、前記複数のブロック符号化部はそれぞれ、前記調整部によって決定されたパラメータを用いて符号化を行うことにより、前記符号化ストリームに一致した前記中間ストリームを生成することを特徴としてもよい。
これにより、各ブロック符号化部の符号化に用いられるパラメータが決定されて、そのパラメータを用いて符号化が行われるため、各ブロック符号化部は、他のブロック符号化部による符号化が行われていなくても、その符号化に用いられる既に決定されたパラメータを知ることができ、自らの符号化に用いられた他のパラメータを、その決定されたパラメータを用いて処理した上で符号化ストリーム中に含めることができる。その結果、簡単に符号化ストリームに一致した中間ストリームを生成することができる。
また、前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させることを特徴としてもよい。
これにより、中間ストリームは生成された後に符号化ストリームに一致するように修正されるため、上述のように予めパラメータが決定されてそのパラメータどおりに符号化が行われる場合と比べて、より適切な符号化を行うことができる。
なお、本発明は、このような画像復号装置および画像符号化装置として実現することができるだけでなく、画像復号方法、画像符号化方法、コンピュータに復号または符号化させるためのプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の画像復号装置および画像符号化装置によれば、処理順序による依存関係がある符号化画像を並列に復号することができ、高速に符号化画像を復号することができるとともに、処理順序による依存関係がある符号化方式で画像を並列に符号化することができ、高速に画像を符号化することができる。
図1は、本発明の実施の形態1における画像復号装置の構成図である。 図2は、同上のマクロブロック復号部の構成図である。 図3は、一般的なH.264の符号化ストリームの構成図である。 図4は、本発明の実施の形態1における画像復号装置の動作を示すフロー図である。 図5は、同上のマクロブロック復号部によって並列に復号されるマクロブロックの順序を示す図である。 図6は、同上のスライスデータのプリデコード処理の動作を示すフロー図である。 図7は、同上の加工済符号化ストリームのスライスデータの構成図である。 図8は、同上のマクロブロック復号部による復号処理を示すフロー図である。 図9は、本発明の実施の形態2における画像符号化装置の構成図である。 図10は、同上のマクロブロック符号化部の構成図である。 図11は、同上の画像符号化装置の動作を示すフロー図である。 図12は、同上のマクロブロック符号化部による符号化処理を示すフロー図である。 図13は、同上の可変長符号化処理を示すフロー図である。 図14は、CAVLCで可変長符号化されたスライスデータに対する再符号化処理を示すフロー図である。 図15は、CABACで可変長符号化されたスライスデータに対する再符号化処理を示すフロー図である。 図16は、本発明の実施の形態2の変形例に係る画像符号化装置の構成図である。 図17は、同上の画像符号化装置の動作を示すフロー図である。 図18Aは、同上の量子化パラメータが決定されるマクロブロックの位置を示す図である。 図18Bは、同上のスキップランパラメータが決定されるマクロブロックの位置を示す図である。 図19は、同上のマクロブロック符号化部による符号化処理の詳細を示すフロー図である。 図20は、同上のマクロブロック符号化部の構成図である。 図21は、可変長符号化部によって行われる可変長符号化処理の詳細を示すフロー図である。 図22は、H.264における位置による依存関係を示す図である。 図23は、従来の画像復号装置および画像符号化装置の処理手順を示す図である。 図24は、H.264における処理順序による依存関係を示す図である。
以下、H.264符号化方式に対応した画像復号装置および画像符号化装置に、本発明を適用した実施の形態について、図面を参照しながら説明する。なお、以下に示す実施の形態は、H.264の画像復号装置および画像符号化装置であるが、処理順序による依存関係を持つ動画像符号化方式であれば、どのような動画像符号化方式に対しても、以下に示す実施の形態と同様の形態で本発明を実現することができる。
(実施の形態1)
図1は、本発明の実施の形態1における画像復号装置の構成図である。
図1に示すように、画像復号装置40は、復号制御部400、ヘッダ復号部401、スライスデータプリデコード部402、ストリームバッファ403、第1マクロブロック復号部404、第2マクロブロック復号部405、デブロッキングフィルタ部406、および参照画像メモリ407から構成される。なお、以下の説明において、第1マクロブロック復号部404および第2マクロブロック復号部405をそれぞれ区別する必要がない場合には、それらをマクロブロック復号部と総称する。
次に、図1に示す画像復号装置40の各構成要素の動作について説明する。
ヘッダ復号部401は、H.264で符号化された符号化ストリームStrを取得し、その符号化ストリームStrに含まれるヘッダを順次復号する。
スライスデータプリデコード部402は、ヘッダ復号部401から、ヘッダが復号された符号化ストリームStrを取得し、その符号化ストリームStrに含まれるマクロブロックの復号処理を並列に行う上で予め必要となるパラメータ(並列処理用パラメータ)を復号する。さらに、スライスデータプリデコード部402は、その並列処理用パラメータの復号結果を用いて、符号化ストリームStrの加工処理を行い、加工処理された符号化ストリーム(以下、加工済符号化ストリームStmという)をストリームバッファ403に出力する。これにより、加工済符号化ストリームStmはストリームバッファで一時的に保持される。
第1マクロブロック復号部404および第2マクロブロック復号部405はそれぞれ、ストリームバッファ403から加工済符号化ストリームStmを読み出し、加工済符号化ストリームStmに含まれる符号化された複数のマクロブロックのうち、それぞれのマクロブロック復号部に割り当てられたマクロブロックを並列に復号する。この時、第1マクロブロック復号部404および第2マクロブロック復号部405はそれぞれ、必要に応じて、参照画像メモリ407から動き補償予測に用いる参照画像を読み出し、その読み出された参照画像を用いてマクロブロックを復号する。なお、参照画像は画素データから構成されている。その結果、第1マクロブロック復号部404および第2マクロブロック復号部405は、再構成された画素データからなる再構成画像をデブロッキングフィルタ部406に出力する。
デブロッキングフィルタ部406は、再構成画像に対してブロックノイズを除去するデブロッキングフィルタ処理を行うことによって、復号画像を生成して出力する。また、デブロッキングフィルタ部406は、その復号画像を画像復号装置40の外部に出力すると共に、その復号画像がマクロブロックの復号処理での参照画像として用いられるために、その復号画像を参照画像メモリ407に書き込み、参照画像メモリ407に一時的に保持させる。
復号制御部400は、ヘッダ復号部401、スライスデータプリデコード部402、第1マクロブロック復号部404、第2マクロブロック復号部405、およびデブロッキングフィルタ部406を制御することにより、画像復号処理全体を制御し、例えば、これらの構成要素に対して処理開始指示を出す。
図2は、マクロブロック復号部の構成図である。
第1マクロブロック復号部404および第2マクロブロック復号部405は、共に同じ構成を有し、それぞれ、可変長復号部500、逆量子化部501、逆直交変換部502、画面内予測部503、動き補償予測部504、および加算回路505から構成される。
可変長復号部500は、加工済符号化ストリームStmのうち復号処理の対象となる複数のマクロブロックからなるブロック群(例えば、マクロブロックライン)を可変長復号して、予測モード、量子化された係数、および動きベクトルなどを出力する。逆量子化部501は、可変長復号部500から出力される量子化された係数に対して逆量子化を行い、係数データを逆直交変換部502に出力する。逆直交変換部502では、係数データに対して逆直交変換を行い、空間領域の画素データからなる誤差画像を生成する。
画面内予測部503と動き補償予測部504は、可変長復号部500が出力する予測モードによって、どちらか一方が起動され、画素データから成る予測画像を生成する。予測モードがイントラ予測であった場合は、画面内予測部503が起動され、このとき、画面内予測部503は画面内予測を行う。予測モードがインター予測であった場合は、動き補償予測部504が起動される。このとき、動き補償予測部504は、復号された動きベクトルに応じた参照画像を取得して、動き補償予測を行う。加算回路505は、逆直交変換部502から出力された誤差画像と、画面内予測部503または動き補償予測部504から出力された予測画像とを加算することにより、画素データからなる再構成画像を生成して出力する。
図3は、一般的なH.264の符号化ストリームStrの構成図である。
符号化ストリームStrの先頭にはSPS(Sequence Parameter Set)ヘッダ601があり、その後にPPS(Picture Parameter Set)ヘッダ602、スライスヘッダ603、およびスライスデータ604が続く。SPSヘッダ601、PPSヘッダ602、およびスライスヘッダ603の先頭にはデータの区切りを示すスタートコード(SC:Start Code)600が挿入されている。
そのため、ヘッダ復号部401は、符号化ストリームStrに対してスタートコードサーチを行い、スタートコード600に続くデータを解析することで、符号化ストリームStrの中からSPSヘッダ601、PPSヘッダ602、スライスヘッダ603を探索することができる。ピクチャの先頭にはPPSヘッダ602が存在し、次のPPSヘッダ602が現れるまでの一連のデータが1ピクチャ分のデータである。1ピクチャのデータの中には、スライスヘッダ603とスライスデータ604のセットが、そのピクチャに存在するスライスの数分存在する。また、スライスデータ604には、符号化された複数のマクロブロックを示すマクロブロックレイヤデータが格納されている。
スライスデータプリデコード部402は、このスライスデータ604に含まれるマクロブロックレイヤデータに対して可変長復号を行うことにより、上述の並列処理用パラメータを取得する。
図4は、本発明の実施の形態1における画像復号装置40の動作を示すフロー図である。
まず、ヘッダ復号部401は、符号化ストリームStrを取得すると、SPSヘッダ601を復号し(ステップS700)、次に、PPSヘッダ602を復号し(ステップS701)、次に、スライスヘッダ603を復号する(ステップS702)。スライスヘッダ603の復号が完了すると、スライスデータプリデコード部402は、スライスデータ604に対してプリデコードを行うことによって、マクロブロックの復号処理を並列に行う上で予め必要となる並列処理用パラメータを復号するとともに、符号化ストリームStrの加工処理を行う(ステップS703)。
1スライス分のスライスデータ604のプリデコードが完了すると、第1マクロブロック復号部404および第2マクロブロック復号部405は、復号制御部400の指示に従って、それぞれストリームバッファ403に格納されている加工済符号化ストリームStmから復号対象のマクロブロック(マクロブロックライン)を読み出しながら、マクロブロックの復号処理を並列に行う(ステップS704)。
図5は、マクロブロック復号部によって並列に復号されるマクロブロックの順序を示す図である。
H.264では、図22に示した位置による依存関係が存在するため、画像復号装置40は図5に示す手順で復号を行う。なお、図5において、各マクロブロックMBに付けられた番号は処理順序を示す。つまり、同じ番号のマクロブロックMBは同時に並列に処理される。
図5に示すように、第1マクロブロック復号部404は、ピクチャPicに含まれる奇数ラインのマクロブロックMB、つまり奇数番目にあるブロック群たるマクロブロックラインに含まれる複数のマクロブロックMBを復号し、第2マクロブロック復号部405は、ピクチャPicに含まれる偶数ラインのマクロブロックMB、つまり偶数番目にあるブロック群たるマクロブロックラインに含まれる複数のマクロブロックMBを復号する。また、第1マクロブロック復号部404がある任意のマクロブロックMBを復号する場合、第2マクロブロック復号部405は、そのマクロブロックMBの1つ下の行の2列左側に位置するマクロブロックMBを並列に処理する。これにより、位置による依存関係を解決して並列に復号することが可能となる。
復号制御部400は、1スライス分のマクロブロックの復号処理が完了すると、その復号処理が完了したスライスがピクチャの終端にあるかどうかを判断する(ステップS705)。ピクチャに含まれるスライスの数は、PPSヘッダ602にあるパラメータ(num_slice_groups_minus1)を復号することで分かる。このため、復号制御部400は、これまでに復号処理が完了したスライスの数から1を引いた数と、パラメータ(num_slice_groups_minus1)が一致すれば、直前に復号処理が完了したスライスがピクチャの終端にあると判断する。
ここで、復号制御部400は、ピクチャの終端にないと判断すると(ステップS705のNO)、ヘッダ復号部401、スライスデータプリデコード部402およびマクロブロック復号部に対して、ピクチャの終端になるまで、スライスヘッダ603の復号(ステップS702)、スライスデータ604のプリデコード(ステップS703)、およびマクロブロックの復号(ステップS704)を順次実行させる。一方、復号制御部400は、ピクチャの終端にあると判断すると(ステップS705のYES)、デブロッキングフィルタ部406に、1ピクチャ分の再構成画像に対するデブロッキングフィルタ処理を実行させる(ステップS706)。デブロッキングフィルタ処理が完了すると、復号制御部400は、次に、デブロッキングフィルタ処理されたピクチャがその符号化ストリームStrの終端にあるかどうかを判定する(ステップS707)。
ここで、復号制御部400は、符号化ストリームStrの終端にない、つまり後にストリームが続いていると判断した場合は(ステップS707のNO)、ヘッダ復号部401に対して、次に復号されるべきピクチャのPPSヘッダ602の復号を実行させることにより(ステップS701)、符号化ストリームStrに含まれるピクチャを次々と復号していく。
次に、スライスデータ604のプリデコード(図4のステップS703)の詳細について説明する。
図6は、スライスデータ604に対するプリデコードの詳細な動作を示すフロー図である。
スライスデータプリデコード部402は、スライスデータ604に対してマクロブロック単位でプリデコードを行う。具体的には、スライスデータプリデコード部402は、まず、第1マクロブロック復号部404および第2マクロブロック復号部405から、プリデコードの対象とされるマクロブロック(プリデコード対象マクロブロック)MBを復号するマクロブロック復号部を、担当復号部として特定する(ステップS900)。そして、スライスデータプリデコード部402は、そのプリデコード対象マクロブロックMBのマクロブロックアドレスBa1が、その担当復号部が直前に復号したマクロブロック(直前復号マクロブロック)MBのマクロブロックアドレスBa2に1を加えた値よりも大きいかどうかを判定する(ステップS901)。
マクロブロックアドレスは、図24に示すように、ピクチャPic内のマクロブロックMBに対してラスタースキャン順に番号が付けられたインデックスのことであり、H.264では、ピクチャPic内のマクロブロックMBはマクロブロックアドレス順で処理される。図5に示す手順で復号を行う場合、例えば、第1マクロブロック復号部404は、ライン1のピクチャPic右端に位置するマクロブロックMB(ライン1にある8番のマクロブロックMB)の次に、ライン3のピクチャPic左端に位置するマクロブロックMB(ライン3にある9番のマクロブロックMB)を復号する。このとき、その8番目のマクロブロックMBと9番目のマクロブロックMBの間にある、ライン2上の全てのマクロブロックMBは、第1マクロブロック復号部404で復号されずに、復号対象から外される。したがって、上述のプリデコード対象マクロブロックMB(ライン3にある9番目のマクロブロックMB)のマクロブロックアドレスBa1は、直前復号マクロブロックMB(ライン1にある8番目のマクロブロックMB)のマクロブロックアドレスBa2に1を加えた値よりも大きくなる。同様に、第2マクロブロック復号部405は、ライン2のピクチャPic右端に位置するマクロブロックMB(ライン2にある10番のマクロブロックMB)の次に、ライン4のピクチャPic左端に位置するマクロブロックMB(ライン4にある11番のマクロブロックMB)を復号する。このとき、その10番目のマクロブロックMBと11番目のマクロブロックMBの間にある、ライン3上の全てのマクロブロックMBは、第2マクロブロック復号部405で復号されずに、復号対象から外される。したがって、上述のプリデコード対象マクロブロックMB(ライン4にある11番目のマクロブロックMB)のマクロブロックアドレスBa1は、直前復号マクロブロックMB(ライン2にある10番目のマクロブロックMB)のマクロブロックアドレスBa2に1を加えた値よりも大きくなる。
このように、スライスデータプリデコード部402は、ステップS901では、プリデコード対象マクロブロックMBが、担当復号部によって復号される、マクロブロックアドレスが一続きになっているマクロブロック群の先頭のマクロブロックMBであるかどうかを判定する。つまり、図5に示す手順で復号が行われる場合、スライスデータプリデコード部402は、ステップS901では、ピクチャPic左端に位置するマクロブロックMBをプリデコードするときに、真(YES)と判定する。
スライスデータプリデコード部402は、ステップS901で、偽(NO)と判定すると、次のマクロブロックMBの先頭を探すために、通常のマクロブロックMBの可変長復号を行う(ステップS904)。一方、スライスデータプリデコード部402は、ステップS901で、真(YES)と判定すると、符号化ストリームStr中におけるプリデコード対象マクロブロックMBの先頭に位置する部分に、プリデコード対象マクロブロックMBの先頭を示すビットパターンであるMB(Macroblock)スタートコードを挿入する(ステップS902)。本実施の形態では、例えば、MBスタートコードを0x000001F0とする。MBスタートコードの挿入後、スライスデータプリデコード部402は、プリデコード対象マクロブロックの復号処理を並列に行う上で予め必要となる並列処理用パラメータをマクロブロック復号情報として、符号化ストリームStr中におけるMBスタートコードの直後(プリデコード対象マクロブロックMBの直前)に埋め込む(ステップS903)。なお、MBスタートコードは、他のコードと重複しないユニークな値であれば何でもよい。
埋め込むマクロブロック復号情報は、プリデコード対象マクロブロックMBのマクロブロックアドレスの直前にあるマクロブロックMB(直前マクロブロックMB)を可変長復号することによって生成された、処理順序による依存関係があるパラメータである。H.264では、可変長符号化の方式がCAVLC(Context−base Adaptive Variable Length Coding)の場合は、スライスデータプリデコード部402は、直前マクロブロックMBの量子化パラメータ(QP_PREV)と、スキップするマクロブロックの数(num_skipped_mb)とをマクロブロック復号情報として埋め込む。以下、そのスキップするマクロブロックをスキップマクロブロックといい、そのスキップマクロブロックの数をスキップマクロブロック数という。スキップマクロブロック数(num_skipped_mb)は、先頭のマクロブロックMBがスキップマクロブロックの場合に、その先頭のマクロブロックMBを含めてスキップマクロブロックが何個続くかを表し、先頭のマクロブロックMBがスキップマクロブロックでなければ0となる。なお、スライスデータプリデコード部402は、直前マクロブロックMBを可変長復号することによって、その直前マクロブロックMBを含めてその直前マクロブロックMBから後に続くスキップマクロブロックの数を示すスキップランパラメータ(mb_skip_run)を取得する。スライスデータプリデコード部402は、このスキップランパラメータ(mb_skip_run)と直前マクロブロックMBのマクロブロックアドレスとに基づいて、上述のスキップマクロブロック数(num_skipped_mb)を算出する。
可変長符号化の方式がCABAC(Context−base Adaptive Binary Arithmetic Coding)の場合は、スライスデータプリデコード部402は、直前マクロブロックMBの量子化パラメータ(QP_PREV)と、直前マクロブロックMBをCABACに従って可変長復号したときのスライスデータプリデコード部402(可変長復号器)の内部状態を示す情報(codIOffset、codIRange、valMPS、pStateIdx)とをマクロブロック復号情報として埋め込む。CABACの可変長復号器の内部状態はシンタックスではないが、CABACでは、1ビット復号する度に内部状態が変化するため、マクロブロックMBの途中から復号する場合は、その途中までの内部状態が必要となる。したがって、直前マクロブロックMBを可変長復号したときにおける内部状態を示す情報を、マクロブロック復号情報として符号化ストリームStrに埋め込む必要がある。
なお、CABACの可変長復号処理(算術復号処理および多値化処理)のうち、1ビット復号する度に内部状態が変化するのは算術復号処理であるので、スライスデータプリデコード部402は、算術復号処理だけを行ってスライスデータ604を2値化データに復号してしまってもよい。算術復号だけを行った場合、量子化パラメータ(QP_PREV)だけをマクロブロック復号情報として符号化ストリームStrに埋め込めばよい。
本実施の形態では、スライスデータプリデコード部402は、マクロブロック復号情報をexp−Golomb符号化方式で符号化して埋め込む。なお、マクロブロック復号情報の符号化方式は、マクロブロック復号情報の示すパラメータを一意に復号できるものであれば何でもよい。また、スライスデータプリデコード部402は、量子化パラメータ(QP_PREV)をそのままマクロブロック復号情報として埋め込んでもよいが、ある値と量子化パラメータ(QP_PREV)との差分をマクロブロック復号情報として埋め込んでもよい。これにより、マクロブロック復号情報のデータ量を削減することができる。例えば、スライスデータプリデコード部402は、対象マクロブロックMBを含むスライスの全てのマクロブロックMBで使用される量子化パラメータQPの初期値(SliceQP)と、直前マクロブロックMBの量子化パラメータ(QP_PREV)との差分を、マクロブロック復号情報として埋め込む。なお、上述の初期値(SliceQP)は、スライスヘッダ603に含まれているパラメータから算出することができる。
スライスデータプリデコード部402は、マクロブロック復号情報の挿入処理(ステップS903)が完了すると、次に、次のマクロブロックMBの先頭を探すために、プリデコード対象マクロブロックの可変長復号を行う(ステップS904)。次に、スライスデータプリデコード部402は、ステップS904で可変長復号されたプリデコード対象マクロブロックMBがスライスの終端にあるマクロブロックMBかどうかを判定する(ステップS905)。ここで、スライスデータプリデコード部402は、スライスの終端にあるマクロブロックMBでないと判定すると(ステップS905のNO)、次のプリデコード対象マクロブロックMBに対してステップS900からの処理を繰り返し行うことにより、スライスデータ604のプリデコードを行っていく。
このように、本実施の形態におけるスライスデータプリデコード部402は、符号化ストリームStrに含まれる、複数のブロックからなるマクロブロックラインごとに、復号処理の一部である可変長復号(プリデコード処理)をそのマクロブロックラインに対して行うことにより、他のマクロブロックラインの復号処理に必要なパラメータであるマクロブロック復号情報を生成している。そして、符号化ストリームStrに含まれる各スライスデータ604に対して、上述のようなプリデコードが行われることによって、加工済符号化ストリームStmが生成されて、ストリームバッファ403に格納される。
図7は、加工済符号化ストリームStmのスライスデータの構成を示す図である。
加工済符号化ストリームStmのスライスデータ604a、つまり1つのスライスのスライスデータ604がプリデコードされることによって得られたスライスデータ604aは、MBスタートコード1000、マクロブロック復号情報1001、およびマクロブロックレイヤデータ1002からなるデータセットを1つまたは複数個含んでいる。マクロブロックレイヤデータ1002は、符号化ストリームStrのスライスデータ604の中に含まれているデータと全く同じものである。つまり、マクロブロックレイヤデータ1002は、全く復号処理されていないデータとなっている。このスライスデータ604aに含まれるデータセットの数は、スライスデータ604のプリデコードの際にステップS901で真(YES)と判定された回数と同じ数である。
なお、データセットに含まれるマクロブロックレイヤデータ1002は、可変長復号されていない、つまり可変長符号化されたままのマクロブロックMBを含んでいる。
また、可変長符号化の方式がCABACの場合、スライスデータ604のプリデコード(ステップS703)においてスライスデータ604を2値化データに復号した時には、マクロブロックレイヤデータ1002ではなく、復号された2値データが代わりに入る。
なお、ステップS901の真(YES)と判定されたプリデコード対象マクロブロックMBの先頭に、MBスタートコードおよびマクロブロック復号情報1001を挿入しているが、プリデコード対象マクロブロックMB以外のマクロブロックMBにも、MBスタートコード1000およびマクロブロック復号情報1001を挿入してもよい。例えば、全てのマクロブロックMBの先頭にMBスタートコード1000およびマクロブロック復号情報1001を挿入してもよい。全てのマクロブロックMBの先頭に挿入すると、マクロブロックMBの復号処理(ステップS704)の際に、どのマクロブロックMBをどのマクロブロック復号部に割当てても、処理順序による依存関係を解決して復号することが可能となる。
次に、図4に示すマクロブロックMBの復号処理(ステップS704)の詳細について図8を用いて説明する。
図8は、マクロブロック復号部によるマクロブロックMBの復号処理を示すフロー図である。
まず、マクロブロック復号部は、加工済符号化ストリームStmからMBスタートコード1000の探索を行い、MBスタートコード1000が見つかるまで加工済符号化ストリームStmを読み進める(ステップS1100)。次に、マクロブロック復号部は、MBスタートコード1000が付いたマクロブロックMBが、そのマクロブロック復号部に割り当てられた復号対象のマクロブロックMBであるかどうかを判定する(ステップS1101)。ここで、マクロブロック復号部は、自らに割り当てられた復号対象マクロブロックMBでないと判定すると(ステップS1101のNO)、復号対象のマクロブロックMBが現れるまで繰り返しMBスタートコードの探索(ステップS1100)を行う。一方、マクロブロック復号部は、自らに割り当てられた復号対象マクロブロックMBであると判定すると(ステップS1101のYES)、MBスタートコード1000に続くマクロブロック復号情報1001の復号を行う(ステップS1102)。以降、マクロブロック復号部は、マクロブロックMBの通常の復号処理を行っていく。なお、MBスタートコード探索(ステップS1100)、復号対象マクロブロック判定(ステップS1101)、およびマクロブロック復号情報の復号(ステップS1102)の処理は、全て可変長復号部500で行われる。
次に、マクロブロック復号部の可変長復号部500は、そのマクロブロック復号部に割り当てられた復号対象マクロブロックMBに対して可変長復号処理を行う(ステップS1103)。ここで、復号対象マクロブロックMBが、MBスタートコード1000が付いた先頭のマクロブロックMB(マクロブロック復号情報の直後のマクロブロックMB)の場合には、可変長復号部500は、ステップS1102で復号したマクロブロック復号情報1001を使用して、その先頭のマクロブロックMBを可変長復号する。次に、マクロブロック復号部は、可変長復号結果から、予測モードがイントラ予測かインター予測を判定する(ステップS1104)。予測モードがイントラ予測であると判定されると(ステップS1104のイントラ予測)、画面内予測部503が起動して画面内予測処理を行う(ステップS1105)、予測モードがインター予測であると判定されると(ステップS1104のインター予測)、動き補償予測部504が起動して動き補償予測処理を行う(ステップS1106)。これらのステップS1105およびステップS1106の処理によって、画素データからなる予測画像が生成される。
次に、マクロブロック復号部は、可変長復号処理(ステップS1103)が行われた量子化された係数を、逆量子化部501で逆量子化し、逆直交変換部502で逆直交変換することで、予測画像に対する誤差画像を生成する(ステップS1107)。最後に、マクロブロック復号部は、予測画像と誤差画像を加算することにより、画素データからなる再構成画像を得る(ステップS1108)。このように1マクロブロックMBの復号処理が完了すると、マクロブロック復号部は、まだ復号すべきマクロブロックレイヤデータ1002があるかどうかを判定する(ステップS1109)。マクロブロック復号部は、復号すべきマクロブロックレイヤデータ1002がないと判定すると(ステップS1109のNO)、マクロブロックMBの復号処理を終える。一方、マクロブロック復号部は、復号すべきマクロブロックレイヤデータ1002が残っていると判定すると(ステップS1109のYES)、次に復号すべきマクロブロックMBのマクロブロックアドレスが、直前に復号したマクロブロックMBのマクロブロックアドレスに1を加えた値より大きいかどうかを判定する(ステップS1110)。この判定の結果が真(ステップS1110のYES)であれば、マクロブロック復号部は、次に復号すべきマクロブロックMBの先頭を探索するためにMBスタートコード探索を行い(ステップS1100)、判定の結果が偽(ステップS1110のNO)であれば、次のマクロブロックMBの可変長復号を行う(ステップS1103)。
このように、本実施の形態では、事前にプリデコードを行ってマクロブロック復号情報1001を生成しておくことにより、2つのマクロブロック復号部は、予め定められた処理順序でマクロブロックラインを順次復号しなくても、H.264に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に復号処理を行うことができ、復号の高速化を図ることができる。さらに、本実施の形態では、2つのマクロブロック復号部はそれぞれ、プリデコードされたマクロブロックラインに対して、復号処理のうち可変長復号を除く残りの処理を行うのではなく、符号化ストリームStrに含まれているマクロブロックラインに対して復号処理の全てを行うため、プリデコードされた複数のマクロブロックラインを有する可変長復号済みの復号ストリームを生成する必要がない。この可変長復号済みの復号ストリームは、元の符号化ストリームStrよりもデータ量が多い。したがって、本実施の形態では、2つのマクロブロック復号部が、元の符号化ストリームStrに含まれているマクロブロックラインに対して復号処理の全てを行うため、復号処理の対象となるストリームを一時的に蓄えておくストリームバッファ403の容量を抑えることができる。
なお、本実施の形態では、並列処理用パラメータであるマクロブロック復号情報1001を符号化ストリームStrに埋め込む方法を取った。しかし、マクロブロックMBの復号を行う場合に、第1マクロブロック復号部404または第2マクロブロック復号部405にマクロブロック復号情報1001を渡せればよく、必ずしも符号化ストリームStrにマクロブロック復号情報1001を埋め込む必要はない。例えば、スライスデータプリデコード部402は、マクロブロック復号情報1001を符号化ストリームStrには埋め込まずに、スライスデータ604のプリデコードが終わった後にマクロブロック復号情報1001を復号制御部400に渡し、マクロブロック復号部が起動する時に、復号制御部400がそのマクロブロック復号情報1001をマクロブロック復号部に通知してもよい。
また、本実施の形態では、スキップするマクロブロックの数(num_skipped_mb)をマクロブロック復号情報1001として符号化ストリームStrに埋め込んだが、その代わりにスキップランパラメータ(mb_skip_run)をマクロブロック復号情報1001として符号化ストリームStrに埋め込んでもよい。
また、本実施の形態では、2つのマクロブロック復号部を用いて並列にマクロブロックの復号を行ったが、マクロブロック復号部の個数は2個に限らない。特許文献1には、2個以上のマクロブロック復号部を使って並列にマクロブロックを復号する方法が記載されており、この方法に従えば、2個以上のマクロブロック復号部を用いても復号することができる。
また、本実施の形態において、復号制御部400、ヘッダ復号部401、スライスデータプリデコード部402、ストリームバッファ403、第1マクロブロック復号部404、第2マクロブロック復号部405、デブロッキングフィルタ部406、および参照画像メモリ407の全部あるいはその一部を、1つの集積回路上に実装してもよいし、1つの基板上に実装した複数の集積回路で実現してもよいし、ネットワークやバスを介して接続される独立した装置で実現しても構わない。
なお、本実施の形態では、一般的なH.264符号化方式に対応した画像復号装置について説明したが、H.264符号化方式に一部制約を入れて符号化された画像であれば、スライスデータプリデコード部402でのプリデコード(ステップS703)をなくすことができる。プリデコードは、処理順序による依存関係を解決するために行うものであり、処理順序の依存関係がなければ、プリデコードをせずに並列にマクロブロック復号処理(ステップS704)を行うことができるからである。つまり、並列復号処理に適した画像符号化方式を規格化する場合は、この処理順序の依存関係をなくすように、既存の画像符号化方式に制約を加えればよい。例えば、H.264符号化方式をベースにして並列復号処理に適した新しい画像符号化方式を考える場合、差分値(mb_qp_delta)を符号化するのではなく、量子化パラメータQPの値そのままを符号化する方式、または量子化パラメータQPの初期値(SliceQP)からの差分値のみを符号化する方式が考えられる。また、スキップランパラメータ(mb_skip_run)は必ず0になるように符号化する方式も考えられる。また、CABACを使用禁止にしてCAVLCでのみ可変長符号化する方式も考えられる。
(実施の形態2)
図9は、本発明の実施の形態2における画像符号化装置の構成図である。
図9に示すように、画像符号化装置120は、符号化制御部1200、第1マクロブロック符号化部1201、第2マクロブロック符号化部1202、デブロッキングフィルタ部1203、ストリームバッファ1204、スライスデータ再符号化部1205、ヘッダ符号化部1206、および参照画像メモリ1207から構成される。なお、以下の説明において、第1マクロブロック符号化部1201および第2マクロブロック符号化部1202をそれぞれ区別する必要がない場合には、それらをマクロブロック符号化部と総称する。
次に、図9に示す画像符号化装置120の各構成要素の動作について説明する。
第1マクロブロック符号化部1201および第2マクロブロック符号化部1202は、画素データからなる符号化対象画像を取得すると、並列にマクロブロック単位の符号化処理を行う。そして、第1マクロブロック符号化部1201および第2マクロブロック符号化部1202は、その符号化処理で符号化された画像が再構成されることにより生成された、画素データからなる再構成画像をデブロッキングフィルタ部1203に出力する。さらに、第1マクロブロック符号化部1201および第2マクロブロック符号化部1202は、上述の符号化処理で符号化された画像を示す中間ストリームをストリームバッファ1204に出力する。この時、第1マクロブロック符号化部1201および第2マクロブロック符号化部1202は、参照画像メモリ1207から、動き補償に用いる画素データからなる参照画像を必要に応じて読み出す。
ストリームバッファ1204は、各マクロブロック符号化部から出力された中間ストリームを一時的に保持している。なお、2つのマクロブロック符号化部から出力された複数の断片的な中間ストリームは、ストリームバッファ1204に格納されることにより、1つの結合された中間ストリームとして扱われる。また、この中間ストリームは、2つのマクロブロック符号化部がマクロブロックMBを並列に符号化したことによって生成されたストリームであるために、この中間ストリームに含まれるピクチャでは上述の処理順序による依存関係が満たされていない。したがって、この中間ストリームは、一部符号化できない部分があるため、まだ完全には符号化が完了していないストリームになっている。
デブロッキングフィルタ部1203は、再構成画像に対してブロックノイズを除去するデブロッキングフィルタ処理を行い、その結果生成される復号画像を参照画像メモリ1207に出力する。参照画像メモリ1207は、上述の参照画像として利用できるように、デブロッキングフィルタ部1203から出力された復号画像を保持する。
スライスデータ再符号化部1205は、ストリームバッファ1204から中間化ストリームを読出し、中間化ストリームに対して再符号化処理を行う。ヘッダ符号化部1206はヘッダの符号化を行い、スライスデータ再符号化部1205から出力される再符号化ストリームと符号化されたヘッダとを併せて最終的な符号化ストリームを生成して出力する。なお、本実施の形態では、このスライスデータ再符号化部1205が調整部として構成されており、このスライスデータ再符号化部1205が、2つのマクロブロック符号化部によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、ピクチャに含まれる複数のマクロブロックラインが予め定められた処理順序で順次符号化されることによって生成される符号化ストリームにその中間ストリームを一致させる。
符号化制御部1200は、第1マクロブロック符号化部1201、第2マクロブロック符号化部1202、デブロッキングフィルタ部1203、スライスデータ再符号化部1205、およびヘッダ符号化部1206を制御することにより、画像符号化処理全体を制御し、例えば、これらの構成要素に対して処理開始指示を出す。
図10は、マクロブロック符号化部の構成図である。
第1マクロブロック符号化部1201および第2マクロブロック符号化部1202は、共に同じ構成を有し、それぞれ、画面内予測部1300、動き補償予測部1301、減算回路1302、直交変換部1303、量子化部1304、可変長符号化部1305、逆量子化部1306、逆直交変換部1307、および加算回路1308から構成される。まず、符号化対象画像に含まれる画素データからなるマクロブロックMBがマクロブロック符号化部に入力されると、符号化制御部1200は、予測モードを指示することによって、画面内予測部1300および動き補償予測部1301のどちらか一方を起動させる。画面内予測部1300は、予測モードがイントラ予測であった場合に起動して画面内予測を行うことにより、上述の符号化対象のマクロブロックMBに対応する、画素データからなる予測画像を生成して出力する。動き補償予測部1301は、予測モードがインター予測であった場合に起動し、動きベクトルに応じた参照画像を取得して動き補償予測を行うことにより、上述の符号化対象のマクロブロックMBに対応する、画素データからなる予測画像を生成して出力する。
減算回路1302は、上述の符号化対象のマクロブロックMBから予測画像を減算することにより、空間領域の画素データからなる誤差画像を生成する。直交変換部1303は、その誤差画像に対して直交変換を行うことにより、その誤差画像を係数に変換する。量子化部1304はその係数を量子化する。可変長符号化部1305は、量子化された係数および予測モードなどを可変長符号化することにより、上述の中間ストリームを生成して出力する。
逆量子化部1306は、量子化された係数を逆量子化する。逆直交変換部1307は、逆量子化された係数に対して逆直交変換を行うことにより、その係数を誤差画像に再構成する。加算回路1308は、その誤差画像を、画面内予測部1300または動き補償予測部1301から出力された予測画像に加算することにより、再構成画像を生成して出力する。
図11は、本発明の実施の形態2における画像符号化装置120の動作を示すフロー図である。
まず、ヘッダ符号化部1206は、SPSヘッダ601の符号化(ステップS1400)、PPSヘッダ602の符号化(ステップS1401)、およびスライスヘッダ603の符号化(ステップS1402)を順次行う。スライスヘッダ603の符号化(ステップS1402)が完了すると、第1マクロブロック符号化部1201および第2マクロブロック符号化部1202は符号化制御部1200の指示に従って、符号化対象画像をマクロブロック単位で並列に符号化する(ステップS1403)。H.264では、図22に示した位置による依存関係が存在するため、復号の場合と同様に、2つのマクロブロック符号化部は、図5に示す手順で並列符号化を行う。詳細については復号の場合と同様であるので、説明を省略する。なお、マクロブロックMBの符号化処理(ステップS1403)での可変長符号化(後述するステップS1507)では、マクロブロックMBを並列に符号化するために、上述の処理順序による依存関係が満たされていない。したがって、この符号化処理で生成される中間ストームには、一部完全に符号化できない部分があるため、マクロブロック符号化部は、マクロブロックMBを可変長符号化するときには、必要とされる可変長符号化の処理の一部だけを行い、中間ストリームを生成する。
スライスデータ再符号化部1205は、1スライス分のマクロブロックMBの符号化処理(ステップS1403)が完了すると、そのマクロブロックMBの符号化処理(ステップS1403)では完全に符号化できなかったスライスデータの部分に対して、再符号化処理を行う(ステップS1404)。符号化制御部1200は、スライスデータの再符号化処理(ステップS1404)が完了すると、中間ストリーム中の再符号化処理が完了した位置がピクチャの終端であるかどうかを判定する(ステップS1405)。符号化制御部1200は、ピクチャの終端でないと判定すると(ステップS1405のNO)、次に符号化されるスライスに対する、スライスヘッダの符号化(ステップS1402)、マクロブロックMBの符号化(ステップS1403)、およびスライスデータの再符号化(ステップS1404)の処理を各構成要素に実行させ、中間ストリーム中の再符号化処理が完了した位置がピクチャの終端になるまで、上記各処理を繰り返させる。
一方、符号化制御部1200は、上記位置がピクチャの終端であると判定すると(ステップS1405のYES)、デブロッキングフィルタ部1203に対して、1ピクチャ分の再構成画像に対するデブロッキングフィルタ処理を実行させる(ステップS1406)。デブロッキングフィルタ処理(ステップS1406)が完了すると、符号化制御部1200は、デブロッキングフィルタ処理されたピクチャがシーケンスの終端にあるかどうか判定する(ステップS1407)。符号化制御部1200は、シーケンスの終端にないと判定したとき(ステップS1407のNO)、つまり、後続に符号化すべきピクチャが続いている場合は、そのピクチャに対するPPSヘッダ602の符号化(ステップS1400)などの処理を各構成要素に再度実行させることにより、1シーケンス分の符号化対象画像を符号化する。
次に、図11に示すマクロブロックMBの符号化処理(ステップS1403)の詳細について図12を用いて説明する。
図12は、マクロブロック符号化部による符号化処理を示すフロー図である。
まず、画面内予測部1300および動き補償予測部1301は、符号化制御部1200から指示される予測モードがイントラ予測であるか、インター予測であるかを判定する(ステップS1500)。予測モードがイントラ予測であれば、画面内予測部1300が起動して、画面内予測処理を行い(ステップS1501)、予測モードがインター予測であれば、動き補償予測部1301が起動して、動き補償予測処理を行う(ステップS1502)。これにより、予測画像が生成される。次に、減算回路1302は、符号化対象マクロブロックMBから予測画像を減算して、予測画像に対する誤差画像を生成する(ステップS1503)。直交変換部1303および量子化部1304は、誤差画像を直交変換し、さらに量子化する(ステップS1504)。
ここで、マクロブロック符号化部は、次に符号化される予定のマクロブロック(次マクロブロック)MBのマクロブロックアドレスが、今、符号化しているマクロブロック(符号化対象マクロブロック)MBのマクロブロックアドレスに1を加えた値よりも大きいかどうかを判定する(ステップS1505)。図5に示す手順で符号化が行われる場合、例えば、第1マクロブロック符号化部1201は、ライン1のピクチャPic右端に位置するマクロブロックMB(ライン1にある8番のマクロブロックMB)の次に、ライン3のピクチャPic左端に位置するマクロブロックMB(ライン3にある9番のマクロブロックMB)を符号化する。このとき、その8番目のマクロブロックMBと9番目のマクロブロックMBの間にある、ライン2上の全てマクロブロックMBは、第1マクロブロック符号化部1201で符号化されずに、符号化対象から外される。したがって、次マクロブロックMB(ライン3にある9番目のマクロブロックMB)のマクロブロックアドレスが、符号化対象マクロブロックMB(ライン1にある8番目のマクロブロックMB)のマクロブロックアドレスに1を加えた値よりも大きくなる。
同様に、第2マクロブロック符号化部1202は、ライン2のピクチャPic右端に位置するマクロブロックMB(ライン2にある10番のマクロブロックMB)の次に、ライン4のピクチャPic左端に位置するマクロブロックMB(ライン4にある11番のマクロブロックMB)を符号化する。このとき、その10番目のマクロブロックMBと11番目のマクロブロックMBの間にある、ライン3上の全てのマクロブロックMBは、第2マクロブロック符号化部1202で符号化されずに、符号化対象から外される。したがって、次マクロブロックMB(ライン4にある11番目のマクロブロックMB)のマクロブロックアドレスが、符号化対象マクロブロックMB(ライン2にある10番目のマクロブロックMB)のマクロブロックアドレスに1を加えた値よりも大きくなる。
このように、ステップS1505では、マクロブロック符号化部は、符号化対象マクロブロックMBが、そのマクロブロック符号化部によって符号化される、マクロブロックアドレスが一続きになっているマクロブロック群の最後のマクロブロックMBであるかどうかを判定する。つまり、図5に示す手順で符号化が行われる場合、マクロブロック符号化部は、ステップS1505では、ピクチャPic右端に位置するマクロブロックMBを符号化するときに、真(YES)と判定する。
マクロブロック符号化部は、ステップS1505で真(YES)と判定すると、符号化対象マクロブロックMBの量子化パラメータQPがスライスデータ再符号化部1205で利用されるように、その量子化パラメータQPを再符号化情報(保存パラメータ)として保存する(ステップS1506)。このとき、マクロブロック符号化部は、保存した再符号化情報を符号化制御部1200に送信している。なお、ステップS1505の判定処理およびステップS1506の保存は、マクロブロック符号化部の可変長符号化部1305で行われてもよく、それらの処理を実行する専用の構成要素をマクロブロック符号化部に備えてもよい。
可変長符号化部1305は、ステップS1505で偽(NO)と判定されると、可変長符号化を行う(ステップS1507)。つまり、可変長符号化部1305は、量子化された係数、予測モード、およびステップS1501〜S1504で利用されたパラメータ(例えば、量子化パラメータQPの差分値)などを可変長符号化することにより、中間ストリームを生成して出力する(ステップS1507)。
次に、逆量子化部1306および逆直交変換部1307は、量子化された係数を逆量子化し、さらに逆直交変換を行うことによって、誤差画像を再構成する(ステップS1508)。加算回路1308は、再構成された誤差画像と、画面内予測部1300または動き補償予測部1301から出力された予測画像とを加算することにより、再構成画像を生成して出力する(ステップS1509)。このように1マクロブロックの符号化処理が完了すると、マクロブロック符号化部は、まだ符号化すべきマクロブロックMBがあるかどうかを判定する(ステップS1510)。マクロブロック符号化部は、符号化すべきマクロブロックMBがないと判定すると(ステップS1510のNO)、マクロブロックMBの符号化処理を終え、符号化すべきマクロブロックMBが残っていると判定すると(ステップS1510のYES)、符号化すべきマクロブロックMBがなくなるまで、再び予測モードの判定(ステップS1500)から処理を行っていく。
次に、マクロブロックの符号化処理(図11のステップS1403)の中の可変長符号化処理(図12のステップS1507)の詳細について図13を用いて説明する。
図13は、可変長符号化処理のフロー図である。
まず、可変長符号化部1305は、今、符号化するマクロブロック(符号化対象マクロブロック)MBのマクロブロックアドレスが、直前に符号化したマクロブロック(直前符号化マクロブロック)MBのマクロブロックアドレスに1を加えた値よりも大きいかどうかを判定する(ステップS1600)。例えば、図5に示す手順で符号化が行われる場合、可変長符号化部1305は、ステップS1600では、ピクチャPic左端に位置するマクロブロックMBを符号化対象マクロブロックMBとして符号化するときに、真(YES)と判定する。つまり、このときに真(YES)と判定されるマクロブロックMBは、マクロブロックラインの先頭にある。可変長符号化部1305は、ステップS1600で真(YES)と判定すると、その符号化対象マクロブロックMBの量子化に使用された量子化パラメータQPの差分値(mb_qp_delta)を、量子化パラメータQPの初期値(SliceQP)から、符号化対象マクロブロックMBの量子化パラメータQPを減算した値に置き換える(ステップS1601)。
なお、スライスデータ604の再符号化の際に、量子化パラメータQPの値を一意に復号できればよいため、置き換える値は、ある特定の値から符号化対象マクロブロックMBの量子化パラメータQPを減算した値であれば何でもよい。また、差分値(mb_qp_delta)の取りうる範囲を超えてしまうが、符号化対象マクロブロックMBの量子化パラメータQPの値に置き換えてもよい。
次に、可変長符号化部1305は、差分値(mb_qp_delta)の置き換えが終わると、または、ステップS1600で偽(NO)と判定すると、可変長符号化方式がCAVLCかCABACかを判定する(ステップS1602)。可変長符号化方式がCAVLCであると判定すると、可変長符号化部1305は、CAVLCの符号化方式で可変長符号化を行う(ステップS1603)。一方、可変長符号化方式がCABACであると判定すると、可変長符号化部1305は、CABACの符号化処理のうち、2値化処理だけを行う(ステップS1604)。
なお、ステップS1600で真(YES)と判定された場合は、CAVLCの可変長符号化処理(S1603)または2値化処理(S1604)されて生成される中間ストリームに対して、ステップS1600で真(YES)と判定されたマクロブロックMBの先頭が再符号化処理で分かるような処置をしておいてもよい。例えば、ステップS1600で真(YES)と判定された場合は、可変長符号化部1305は、直前まで出力していた中間ストリームとは別のアドレスに、それ以降に出力する中間ストリームを保存する。または、可変長符号化部1305は、中間ストリームをストリームバッファ1204に格納するときに、ステップS1600で真(YES)と判定されたマクロブロックMBの先頭のアドレスを符号化制御部1200に送信しておく。この場合には、スライスデータ再符号化部1205は、符号化制御部1200からそのアドレスが通知されることで、再符号化すべき中間ストリーム(マクロブロックMB)を容易に見つけることができる。または、可変長符号化部1305は、中間ストリーム中のそのマクロブロックMBの先頭にMBスタートコードを挿入しておく。この場合には、スライスデータ再符号化部1205は、そのMBスタートコードを検索することで、再符号化すべき中間ストリーム(マクロブロックMB)を容易に見つけることができる。
以上で、マクロブロックの可変長符号化処理が完了する。
次に、スライスデータ604の再符号化処理(図11のステップS1404)の詳細について説明する。
図14は、CAVLCで可変長符号化されたスライスデータ604に対する再符号化処理を示すフロー図である。
最初に、スライスデータ再符号化部1205は、中間ストリームに含まれるマクロブロックMBをマクロブロックアドレス順に順次読み出す(ステップS1700)。次に、スライスデータ再符号化部1205は、中間ストリームの読み出しによって、中間ストリーム内で読み出しが完了した最終位置がスライスの終端になったかどうかを判定する(ステップS1701)。スライスの終端になったと判定すると(ステップS1701のYES)、スライスデータ再符号化部1205は再符号化処理を終了する。一方、スライスの終端になっていないと判定すると(ステップS1701のNO)、スライスデータ再符号化部1205は、保存されたマクロブロック符号化情報に対応するマクロブロック(対応マクロブロック)MBのマクロブロックアドレスに1を加えた値と、再符号化対象マクロブロックMBのマクロブロックアドレスとを比較する(ステップS1702)。対応マクロブロックMBのマクロブロックアドレスに1を加えた値と、再符号化対象マクロブロックMBのマクロブロックアドレスが一致するまで、スライスデータ再符号化部1205は中間ストリームを読み出していく。ステップS1702で一致すると判定された再符号化対象マクロブロックMBは、図13のS1600で真(YES)と判定されたマクロブロックMBと同じであって、マクロブロックラインの先頭にあるマクロブロックMBである。そのため、ストリームバッファ1204に中間ストリームを保存する場合に、S1600で真(YES)と判定されたマクロブロックMBの先頭が分かるような処置をしておけば、ステップS1702の判定を簡単に行うことができる。
スライスデータ再符号化部1205は、対応マクロブロックMBのマクロブロックアドレスに1を加えた値と、再符号化対象マクロブロックMBのマクロブロックアドレスが一致すると判定すると(ステップS1702のYES)、まず、再符号化対象マクロブロックMBのスキップランパラメータ(mb_skip_run)を復号し、そのスキップランパラメータ(mb_skip_run)が0より大きいかどうかを判定する(ステップS1703)。ここで、スキップランパラメータ(mb_skip_run)が0より大きいと判定すると(ステップS1703のYES)、スライスデータ再符号化部1205は、マクロブロックアドレスが1つ前のマクロブロックMBのスキップランパラメータ(mb_skip_run)である直前パラメータ(prev_mb_skip_run)を復号し、その直前パラメータ(prev_mb_skip_run)が0より大きいかどうかを判定する(ステップS1704)。ここで、直前パラメータ(prev_mb_skip_run)が0より大きいと判定すると(ステップS1704のYES)、スライスデータ再符号化部1205は、再符号化対象マクロブロックMBのスキップランパラメータ(mb_skip_run)を中間ストリームから除去して、1つ前のマクロブロックMBのスキップランパラメータ(mb_skip_run)を、再符号化対象マクロブロックMBのスキップランパラメータ(mb_skip_run)に直前パラメータ(prev_mb_skip_run)を加えた値に変更して再符号化する(ステップS1705)。
次に、スライスデータ再符号化部1205は、再符号化対象マクロブロックMBの量子化パラメータQPの差分値(mb_qp_delta)の再符号化を行う(ステップS1706)。差分値(mb_qp_delta)の再符号化は、以下の手順で行われる。まず、スライスデータ再符号化部1205は、再符号化対象マクロブロックMBの差分値(mb_qp_delta)を復号して、再符号化対象マクロブロックMBの量子化パラメータQPを算出する。次に、スライスデータ再符号化部1205は、保存されている再符号化情報を符号化制御部1200から受けて、その再符号化情報から、マクロブロックアドレスが1つ前のマクロブロックMBの量子化パラメータQPである直前量子化パラメータ(QP_PREV)を取得する。そして、スライスデータ再符号化部1205は、その直前量子化パラメータ(QP_PREV)から再符号化対象マクロブロックMBの量子化パラメータQPを減算することにより、差分値(mb_qp_delta)を再計算する。さらに、スライスデータ再符号化部1205は、中間ストリームから再符号化対象マクロブロックMBの差分値(mb_qp_delta)を除去して、再計算した値を符号化して中間ストリームに挿入する。以上の手順で、差分値(mb_qp_delta)の再符号化が完了する。以降、上述の一連の処理をスライスの終端になるまで繰り返していく。
図15は、CABACで可変長符号化されたスライスデータ604に対する再符号化処理を示すフロー図である。
CABACの場合は、可変長符号化処理(図12のステップS1507)では2値化処理までしか行っていないため、中間ストリーム全体に対して再符号化を行う必要がある点が、CAVLCの場合と大きく異なる点である。
まず、スライスデータ再符号化部1205は、保存された再符号化情報に対応するマクロブロック(対応マクロブロック)MBのマクロブロックアドレスに1を加えた値と、再符号化対象マクロブロックMBのマクロブロックアドレスとを比較する(ステップS1800)。ステップS1800の判定処理は、図14に示すCAVLCのステップS1702の判定処理と同じである。スライスデータ再符号化部1205は、対応マクロブロックMBのマクロブロックアドレスに1を加えた値と、再符号化対象マクロブロックMBのマクロブロックアドレスとが一致すると判定すると(ステップS1800のYES)、量子化パラメータQPの差分値(mb_qp_delta)の2値データを修正する(ステップS1801)。
差分値(mb_qp_delta)の2値データの修正は、以下の手順で行う。まず、スライスデータ再符号化部1205は、再符号化対象マクロブロックMBの差分値(mb_qp_delta)の2値データを復号して、再符号化対象マクロブロックMBの量子化パラメータQPを算出する。次に、スライスデータ再符号化部1205は、保存されている再符号化情報を符号化制御部1200から受けて、その再符号化情報から、マクロブロックアドレスが1つ前のマクロブロックMBの量子化パラメータQPである直前量子化パラメータ(QP_PREV)を取得する。そして、スライスデータ再符号化部1205は、その直前量子化パラメータ(QP_PREV)から、再符号化対象マクロブロックMBの量子化パラメータQPを減算することにより、差分値(mb_qp_delta)を再計算する。さらに、スライスデータ再符号化部1205は、中間ストリームから再符号化対象マクロブロックMBの差分値(mb_qp_delta)の2値データを除去して、再計算した差分値(mb_qp_delta)の2値データを中間ストリームに挿入する。以上の手順で、差分値(mb_qp_delta)の2値データの修正が完了する。
次に、スライスデータ再符号化部1205は、2値データに対して、CABACの2値化処理以降の算術符号化処理を行う(ステップS1802)。そして、スライスデータ再符号化部1205は、算術符号化された再符号化対象マクロブロックMBがスライスの終端にあるか否かを判定し(ステップS1803)、終端になければ(ステップS1803のNO)、次に再符号化されるマクロブロックMBを新たな再符号化対象マクロブロックMBとして扱い、ステップS1800からの処理を繰り返し実行する。
このように、本実施の形態では、2つのマクロブロック符号化部が複数のマクロブロックラインを並列に符号化しても、スライスデータ再符号化部1205によるパラメータの修正によって、複数のマクロブロックラインが予め定められた処理順序で順次符号化されたときに生成される符号化ストリームと同様のストリームを生成することができる。その結果、H.264に代表される新しい符号化方式に存在する処理順序による依存関係を解決して並列に符号化することができ、符号化の高速化を図ることができる。
(変形例)
ここで、上記実施の形態2の画像符号化装置120の変形例について説明する。
上記実施の形態2の画像符号化装置120はスライスデータ再符号化部1205を備えたが、本変形例に係る画像符号化装置は、このスライスデータ再符号化部1205を備えずに、上述の処理順序による依存関係を解決してマクロブロックを並列に符号化する点に特徴がある。
図16は、本変形例に係る画像符号化装置の構成図である。
本変形例に係る画像符号化装置120aは、符号化制御部1200a、第1マクロブロック符号化部1201a、第2マクロブロック符号化部1202a、デブロッキングフィルタ部1203、ストリームバッファ1204、算術符号化部1208、ヘッダ符号化部1206および参照画像メモリ1207を備えている。つまり、本変形例に係る画像符号化装置120aは、実施の形態2の画像符号化装置120と比べて、スライスデータ再符号化部1205、符号化制御部1200、第1マクロブロック符号化部1201および第2マクロブロック符号化部1202の代わりに、算術符号化部1208、符号化制御部1200a、第1マクロブロック符号化部1201aおよび第2マクロブロック符号化部1202aを備えている。なお、以下の説明において、第1マクロブロック符号化部1201aおよび第2マクロブロック符号化部1202aをそれぞれ区別する必要がない場合には、それらをマクロブロック復号部と総称する。
ここで、本変形例に係る画像符号化装置120aでは、符号化制御部1200aおよびマクロブロック符号化部の処理動作に特徴があり、この処理動作によって、スライスデータ再符号化部1205による再符号化処理を省いている。この再符号化処理が必要となる理由は、2つのマクロブロック符号化部がそれぞれ独自に符号化対象マクロブロックMBに応じて量子化パラメータQPおよびスキップランパラメータ(mb_skip_run)などのパラメータを決定して並列に符号化対象マクロブロックMBを符号化しているために、一方のマクロブロック符号化部が、他方のマクロブロック符号化部で用いられるパラメータを知らずに符号化対象マクロブロックMBを符号化することによって、処理順序による依存関係が満たされないようになるからである。
そこで、本変形例における画像符号化装置120aでは、上述の一方のマクロブロック符号化部で、他方のマクロブロック符号化部で用いられるパラメータが分かるように、符号化制御部1200aがそのパラメータ(量子化パラメータQP、可変長符号化方式がCAVLCの場合にはスキップランパラメータ(mb_skip_run))を予め決めておき、2つのマクロブロック符号化部がそれぞれ、その決められたパラメータを用いて符号化対象マクロブロックMBを符号化する処理動作に特徴がある。つまり、本変形例では、符号化制御部1200aが調整部として構成されており、この符号化制御部1200aが、2つのブロック符号化部によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、ピクチャに含まれる複数のマクロブロックラインが予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに中間ストリームを一致させる。
図17は、本変形例に係る画像符号化装置120aの動作を示すフロー図である。
本変形例に係る画像符号化装置120aは、図11に示す画像符号化装置120の動作と同様、SPSヘッダ601の符号化(ステップS1400)、PPSヘッダ602の符号化(ステップS1401)、およびスライスヘッダ603の符号化(ステップS1402)を順次行う。スライスヘッダ603の符号化(ステップS1402)が完了すると、符号化制御部1200aは、処理順序の依存関係を満たすための再符号化処理が不要になるように、所定のマクロブロックMBの量子化パラメータQPと、可変長符号化方式がCAVLCの場合には、その所定のマクロブロックMBとは異なる他のマクロブロックMBのスキップランパラメータ(mb_skip_run)とを、それらのマクロブロックMBの符号化前に予め決定しておく(ステップS1410)。
つまり、符号化制御部1200aは、符号化対象のスライスに含まれるマクロブロックMBのうち、ピクチャPicの下端を除く右端のマクロブロックMBに対して用いられる量子化パラメータQPを決定するとともに、可変長符号化方式がCAVLCの場合には、ピクチャPicの上端を除く左端のマクロブロックMBのスキップランパラメータ(mb_skip_run)を決定しておく。
次に、第1マクロブロック符号化部1201aおよび第2マクロブロック符号化部1202aは、符号化制御部1200aの指示に従って、符号化対象画像をマクロブロック単位で並列に符号化する(ステップS1411)。このとき、第1マクロブロック符号化部1201aおよび第2マクロブロック符号化部1202aは、ステップS1410で決定された量子化パラメータQPやスキップランパラメータ(mb_skip_run)に従って、マクロブロックMBを符号化する。なお、第1マクロブロック符号化部1201aおよび第2マクロブロック符号化部1202aはそれぞれ、CABACでマクロブロックMBを可変長符号化するときには、CABACの可変長符号化処理の全てを行わず、その可変長符号化処理に含まれる2値化処理および算術符号化処理のうち、2値化処理だけを行う。つまり、この場合には、ストリームバッファ1204に格納される中間ストリームのスライスデータは2値化データの状態になっている。
さらに、符号化制御部1200aは、マクロブロック符号化部に実行させた可変長符号化の方式がCABACであるかCAVLCであるかを判定する(ステップS1412)。ここで、符号化制御部1200aは、可変長符号化方式がCABACであると判定すると、中間ストリームに含まれる2値化データであるスライスデータを算術符号化部1208に算術符号化させる(ステップS1413)。なお、上述のスライスデータは、ステップS1411で符号化された1スライス分のマクロブロックMBの集合からなる。一方、符号化制御部1200aは、可変長符号化方式がCAVLCであると判定すると、算術符号化処理を算術符号化部1208に実行させることなく、中間ストリームのヘッダ符号化部1206への出力を算術符号化部1208に実行させる。
その後、画像符号化装置120aは、図11に示す画像符号化装置120の動作と同様、ステップS1405〜S1407の処理を実行することにより、1シーケンス分の符号化対象画像を符号化する。
図18Aは、量子化パラメータQPが決定されるマクロブロックMBの位置を示す図である。
符号化制御部1200aは、スライスを符号化する前に、ピクチャPicの下端を除く右端のマクロブロック(右端マクロブロック)MBに対して量子化パラメータQPを予め決定しておく。そして、マクロブロック符号化部は、その決定された量子化パラメータQPに従って右端マクロブロックMBを符号化する。これにより、マクロブロック符号化部は、ピクチャPicの上端を除く左端のマクロブロック(左端マクロブロック)MBを符号化するときには、その左端マクロブロックMBの1つ前にある右端マクロブロックMBに対して既に決定された量子化パラメータQPである直前量子化パラメータ(QP_PREV)を知ることができる。その結果、マクロブロック符号化部は、直前量子化パラメータ(QP_PREV)から、符号化対象マクロブロックMBである左端マクロブロックMBの量子化パラメータQPを減算することにより、左端マクロブロックMBの差分値(mb_qp_delta)を、再符号化処理を行うことなく、処理順序の依存関係を満たした上で算出して符号化することができる。
図18Bは、スキップランパラメータ(mb_skip_run)が決定されるマクロブロックMBの位置を示す図である。
符号化制御部1200aは、スライスを符号化する前に、ピクチャPicの上端を除く左端のマクロブロック(左端マクロブロック)MBに対してスキップランパラメータ(mb_skip_run)を予め決定しておく。そして、マクロブロック符号化部は、その決定されたスキップランパラメータ(mb_skip_run)に従って左端マクロブロックMBを符号化する。これにより、マクロブロック符号化部は、ピクチャPicの下端を除く右端のマクロブロック(右端マクロブロック)MBを符号化するときには、その右端マクロブロックMBの1つ後にある左端マクロブロックMBに対して既に決定されたスキップランパラメータ(mb_skip_run)を知ることができる。その結果、マクロブロック符号化部は、その左端マクロブロックMBのスキップランパラメータ(mb_skip_run)を考慮し、再符号化処理を行うことなく、処理順序の依存関係を満たした上で、符号化対象マクロブロックMBである右端マクロブロックMBのスキップランパラメータ(mb_skip_run)を決定して符号化することができる。
図19は、本変形例に係るマクロブロック符号化部による符号化処理(図17のステップS1411)の詳細を示すフロー図である。
本変形例に係るマクロブロック符号化部は、図12に示す符号化処理と同様、予測モードの判定処理(ステップS1500)、画面内予測処理(ステップS1501)、動き補償予測処理(ステップS1502)、減算処理(ステップS1503)、および直交変換・量子化処理(ステップS1504)を実行する。このとき、マクロブロック符号化部は、上述の既に決定されたパラメータを用いて処理を行う。
次に、本変形例に係るマクロブロック符号化部は、図12に示す判定処理(ステップS1505)および再符号化情報保存処理(ステップS1506)を実行することなく、可変長符号化処理(ステップS1507a)を実行する。そして、マクロブロック符号化部は、図12に示す符号化処理と同様、加算処理(ステップS1509)および判定処理(ステップS1510)を実行することにより、1スライス分のマクロブロックMBを符号化する。
図20は、本変形例に係るマクロブロック符号化部の構成図である。
本変形例に係る第1マクロブロック符号化部1201aおよび第2マクロブロック符号化部1202aは共に同じ構成を有し、それぞれ、画面内予測部1300、動き補償予測部1301、減算回路1302、直交変換部1303、量子化部1304、可変長符号化部1305a、逆量子化部1306、逆直交変換部1307、および加算回路1308から構成される。つまり、本変形例に係るマクロブロック符号化部は、図10に示す実施の形態2のマクロブロック符号化部の可変長符号化部1305の代わりに可変長符号化部1305aを備え、他の構成要素については、実施の形態2のマクロブロック符号化部と同様の構成要素を備えている。
本変形例に係る可変長符号化部1305aは、実施の形態2の可変長符号化部1305のように量子化パラメータQPの差分値(mb_qp_delta)の置き換えなどを行うことなく、CAVLCまたはCABACの符号化方式に従って可変長符号化を行う。
図21は、可変長符号化部1305aによって行われる可変長符号化処理(図19のステップS1507a)の詳細を示すフロー図である。
本変形例に係る可変長符号化部1305aは、まず、可変長符号化方式がCAVLCかCABACかを判定する(ステップS1602)。可変長符号化方式がCAVLCであると判定すると、可変長符号化部1305aは、CAVLCの符号化方式で可変長符号を行う(ステップS1603)。一方、可変長符号化方式がCABACであると判定すると、可変長符号化部1305aは、CABACの可変長符号化処理に含まれる2値化処理および算術符号化処理のうち、2値化処理だけを行う(ステップS1604a)。
このように、本変形例では、各マクロブロック符号化部の符号化に用いられるパラメータのうち、処理順序に依存関係のあるパラメータが決定された後、そのパラメータを用いて符号化が行われるため、各マクロブロック符号化部は、他のマクロブロック符号化部による符号化が行われていなくても、その符号化に用いられるパラメータを予め知ることができる。その結果、各マクロブロック符号化部は、処理順序に依存関係のあるパラメータについても最後まで符号化することができ、処理順序による依存関係を解決した再符号化不要な符号化ストリームを簡単に生成することができる。
なお、上記変形例では、スライスに含まれる一部のマクロブロックMBに対してのみ量子化パラメータQPやスキップランパラメータ(mb_skip_run)を決定したが、スライスに含まれる全てのマクロブロックMBに対して上述のパラメータを決定してもよい。
また、上記実施の形態2では、スライスデータ604の再符号化処理で予め必要となるパラメータである再符号化情報を、符号化制御部1200を経由してスライスデータ再符号化部1205に渡した。しかし、スライスデータ再符号化部に再符号化情報が伝わればよく、必ずしも符号化制御部1200を経由して渡す必要はない。例えば、実施の形態1の画像復号装置で行ったように、中間ストリームに再符号化情報を埋め込んで渡してもよい。
また、上記実施の形態2およびその変形例では、2つのマクロブロック符号化部を用いて並列に画素データの符号化を行ったが、マクロブロック符号化部の個数は2個に限らない。特許文献1には、2個以上のマクロブロック符号化部を使って並列に画素データを符号化する方法が記載されており、この方法に従えば、2個以上のマクロブロック符号化部を用いても符号化することができる。
また、上記実施の形態2およびその変形例において、画像符号化装置120,120aのそれぞれに含まれる各構成要素の全部あるいはその一部を、1つの集積回路上に実装してもよいし、1つの基板上に実装した複数の集積回路で実現してもよいし、ネットワークやバスを介して接続される独立した装置で実現しても構わない。
また、上記実施の形態2では、スライスの先頭マクロブロックMBにおいて、差分値(mb_qp_delta)の算出に用いられる直前のマクロブロックMBの量子化パラメータ(QP_PREV)は、マクロブロックMBの符号化前から明らかになっている量子化パラメータQPの初期値(SliceQP)であって、差分値(mb_qp_delta)の再符号化は不要である。このため、マクロブロック符号化部が次に符号化するマクロブロックMBのマクロブロックアドレスが、今、符号化しているマクロブロックMBのマクロブロックアドレスに1を加えた値よりも大きくなるような箇所でスライスを切ってもよい。これにより、いずれのマクロブロックMBであっても差分値(mb_qp_delta)の再符号化を省くことができる。
以上、本発明に係る画像復号装置および画像符号化装置について、実施の形態1および2とその変形例とを用いて説明したが、本発明はこれらに限定されるものではない。
例えば、上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されててもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。上記RAMには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部またはすべてを含むように1チップ化されていてもよい。また、ここでは、システムLSIと呼称したが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限られるものではなく、専用回路または汎用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
また、上記各実施の形態およびその変形例において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
また、上記実施の形態1および2とその変形例とを矛盾の無い範囲で任意に組み合わせてもよい。
本発明にかかる画像復号装置および画像符号化装置は、高速に動画像データを復号および符号化することが可能な特徴を有し、例えば、MPEG等の圧縮画像を扱うデジタルテレビ、DVDレコーダおよびBlu−ray Discレコーダ等として有用である。また、放送局などの高速な処理が必要とされる機器の用途にも応用できる。
40 画像復号装置
120,120a 画像符号化装置
400 復号制御部
401 ヘッダ復号部
402 スライスデータプリデコード部
403 ストリームバッファ
404 第1マクロブロック復号部
405 第2マクロブロック復号部
406 デブロッキングフィルタ部
407 参照画像メモリ
500 可変長復号部
501 逆量子化部
502 逆直交変換部
503 画面内予測部
504 動き補償予測部
505 加算回路
600 スタートコード
601 SPSヘッダ
602 PPSヘッダ
603 スライスヘッダ
604 スライスデータ
1000 MBスタートコード
1001 マクロブロック復号情報
1002 マクロブロックレイヤデータ
1200,1200a 符号化制御部
1201,1201a 第1マクロブロック符号化部
1202,1202a 第2マクロブロック符号化部
1203 デブロッキングフィルタ部
1204 ストリームバッファ
1205 スライスデータ再符号化部
1206 ヘッダ符号化部
1207 参照画像メモリ
1300 画面内予測部
1301 動き補償予測部
1302 減算回路
1303 直交変換部
1304 量子化部
1305 可変長符号化部
1306 逆量子化部
1307 逆直交変換部
1308 加算回路

Claims (25)

  1. 複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、
    前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部である可変長復号処理を当該ブロック群に対して行うとともに、前記可変長復号処理の結果を用いて他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、
    それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、
    前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に生成された前記ブロック復号情報を用いて、前記可変長復号処理を含む前記復号処理を前記ブロック群に対して行う、
    画像復号装置。
  2. 前記プリデコード部は、さらに、前記符号化ストリームにおける前記各ブロック群の先頭に、当該ブロック群の先頭であることを一意に判別し得るビットパターンを挿入し、
    前記複数のブロック復号部のそれぞれは、当該ブロック復号部が前記復号処理を行うべきブロック群を、前記符号化ストリームに挿入されたビットパターンを検索することにより見つけて前記ブロック群を復号する、
    請求項1記載の画像復号装置。
  3. 前記プリデコード部は、さらに、生成された前記ブロック復号情報を前記符号化ストリームに挿入し、
    前記複数のブロック復号部のそれぞれは、前記ブロック復号情報が挿入された前記符号化ストリームを取得し、前記符号化ストリームに挿入された前記ブロック復号情報を用いて前記ブロック群に対する前記復号処理を行う、
    請求項1または2記載の画像復号装置。
  4. 前記プリデコード部は、前記ブロック復号情報を生成するときには、前記可変長復号処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要なパラメータを、前記ブロック復号情報として生成する、
    請求項1〜3の何れか1項に記載の画像復号装置。
  5. 前記プリデコード部は、前記ブロック復号情報を生成するときには、前記可変長復号処理を前記ブロック群に対して行うことにより得られる、前記ブロック群に含まれる最後のブロックの前記復号処理に必要な係数と、あらかじめ定められた係数との差分を前記ブロック復号情報として生成する、
    請求項1〜4の何れか1項に記載の画像復号装置。
  6. 複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化装置であって、
    それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、
    前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部とを備え、
    前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、
    前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させる、
    画像符号化装置。
  7. 前記中間ストリームに含まれる前記各パラメータは符号化されており、
    前記調整部は、前記パラメータを修正するときには、前記パラメータに対して既に行われていた符号化をやり直す、
    請求項6記載の画像符号化装置。
  8. 前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、当該ブロック群に含まれる最後のブロックの符号化に用いられたパラメータを前記保存パラメータとして保存しておく、
    請求項6または7記載の画像符号化装置。
  9. 前記調整部は、前記符号化ブロック群のパラメータを修正するときには、前記符号化ブロック群に含まれる符号化された複数のブロックのうちの先頭のブロックの符号化に用いられたパラメータを修正する
    請求項6〜8の何れか1項に記載の画像符号化装置。
  10. 前記複数のブロック符号化部のそれぞれは、前記ブロック群の符号化に用いられたパラメータを符号化ブロック群に含めるときには、前記ブロック群の符号化前に既に判明している既定係数を用いて前記パラメータを圧縮して前記符号化ブロック群に含め、
    前記調整部は、前記符号化ブロック群の圧縮された前記パラメータを、前記既定係数を用いて伸張し、伸張された前記パラメータを、前記保存パラメータを用いて圧縮することにより、前記符号化ブロック群の圧縮された前記パラメータを修正する
    請求項6〜9の何れか1項に記載の画像符号化装置。
  11. 前記調整部は、
    前記符号化ブロック群に含まれる符号化された複数のブロックのうちの先頭のブロックから符号化が不要とされた連続するブロックの数を示す、前記符号化ブロック群に含まれている第1のスキップパラメータと、
    前記符号化ブロック群と連続する前記他の符号化ブロック群に含まれる符号化された複数のブロックのうちの最後のブロックから符号化が不要とされた連続するブロックの数を示す、前記他の符号化ブロック群に含まれている第2のスキップパラメータとが共に0であるか否かを判定し、
    0でないと判定した場合に、前記符号化ブロック群のパラメータとして前記中間ストリームに含まれていた前記第1のスキップパラメータを削除することにより前記パラメータを修正するとともに、前記第2のスキップパラメータの示す数と前記第1のスキップパラメータの数とを加えた数を示すように、前記中間ストリームに含まれている前記第2のスキップパラメータを修正する
    請求項6または7記載の画像符号化装置。
  12. 複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号方法であって、
    前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部である可変長復号処理を当該ブロック群に対して行うとともに、前記可変長復号処理の結果を用いて他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成し、
    前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行い、
    前記ブロック群に対して前記復号処理を行うときには、他のブロック群に対して既に生成された前記ブロック復号情報を用いて、前記可変長復号処理を含む前記復号処理を前記ブロック群に対して行う、
    画像復号方法。
  13. 複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する画像符号化方法であって、
    前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化し、
    符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させ、
    ブロック群を符号化する際には、
    前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、
    前記パラメータを調整する際には、
    生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させる、
    画像符号化方法。
  14. 複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号するためのプログラムであって、
    前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部である可変長復号処理を当該ブロック群に対して行うとともに、前記可変長復号処理の結果を用いて他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成し、
    前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う
    ことをコンピュータに実行させ、
    前記ブロック群に対して前記復号処理を行うときには、他のブロック群に対して既に生成された前記ブロック復号情報を用いて、前記可変長復号処理を含む前記復号処理を前記ブロック群に対して行う、
    プログラム。
  15. 複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化するためのプログラムであって、
    前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化し、
    符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させることをコンピュータに実行させ、
    ブロック群を符号化する際には、
    前記ブロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、
    前記パラメータを調整する際には、
    生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させる、
    プログラム。
  16. 複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する集積回路であって、
    前記符号化ストリームに含まれる、複数のブロックからなるブロック群ごとに、復号処理の一部である可変長復号処理を当該ブロック群に対して行うとともに、前記可変長復号処理の結果を用いて他のブロック群の前記復号処理に必要なパラメータであるブロック復号情報を生成するプリデコード部と、
    それぞれが前記符号化ストリームに含まれる互いに異なるブロック群に対して前記復号処理をブロック単位で並列に行う複数のブロック復号部とを備え、
    前記複数のブロック復号部のそれぞれは、前記ブロック群に対して前記復号処理を行うときには、他のブロック復号部によって前記復号処理が行われる他のブロック群に対して既に生成された前記ブロック復号情報を用いて、前記可変長復号処理を含む前記復号処理を前記ブロック群に対して行う、
    集積回路。
  17. 複数のブロックからなるブロック群を有するピクチャをブロックごとに符号化する集積回路であって、
    それぞれが前記ピクチャに含まれる互いに異なるブロック群をブロック単位で並列に符号化する複数のブロック符号化部と、
    前記複数のブロック符号化部による符号化によって生成される中間ストリームに含まれる、符号化に用いられるパラメータを調整することにより、前記ピクチャに含まれる複数のブロック群が予め定められた処理順序で順次符号化されることによって生成される符号化ストリームに前記中間ストリームを一致させる調整部とを備え、
    前記複数のブロック符号化部のそれぞれは、ブロック群を符号化するときには、前記ブ
    ロック群の符号化に用いられたパラメータを、前記ブロック群の符号化によって生成された符号化ブロック群に含めるとともに、前記パラメータのうちの少なくとも一部を保存パラメータとして保存しておき、
    前記調整部は、生成された前記中間ストリームに含まれる符号化ブロック群ごとに、当該符号化ブロック群のパラメータを、当該符号化ブロック群と異なる他の符号化ブロック群の符号化に用いられて保存された前記保存パラメータを用いて修正することにより、前記中間ストリームを前記符号化ストリームに一致させる、
    集積回路。
  18. 前記ブロック復号情報は、可変長復号処理対象のブロックと特定の処理順序にあるブロックの処理結果を参照して生成される
    請求項1記載の画像復号装置。
  19. 前記調整部は、ブロックの処理順序に依存した符号化に用いられるパラメータを調整する
    請求項6記載の画像符号化装置。
  20. 複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを復号する画像復号装置であって、
    前記ブロックは、
    当該ブロックと特定の位置関係にあるブロックとの、位置による依存関係と、
    当該ブロックと特定の処理順序にあるブロックとの、処理順序による依存関係と
    を有して符号化されており、
    前記符号化ストリームに含まれる、前記処理順序による依存関係を有して符号化されたパラメータを復号することによって、前記ブロックが有する、処理順序による依存関係を解決するプリデコード部と、
    前記プリデコード部によって処理順序による依存関係が解決された符号化ストリームに含まれる、ピクチャ内のブロックと、前記ピクチャ内のブロックより上かつ右に位置するブロックとに対して、並列に可変長復号を含む復号処理を行うことによって、前記位置による依存関係を解決する復号部と、
    を備える画像復号装置。
  21. 処理順序による依存関係を有して符号化されたパラメータは、ブロックの量子化パラメータである、
    請求項20記載の画像復号装置。
  22. 前記プリデコード部は、複数のブロックからなるブロック群の先頭ブロックの位置を特定する、
    請求項20記載の画像復号装置。
  23. 前記ブロック群は、ピクチャをブロックの幅で水平方向に分割したブロックラインである、
    請求項22記載の画像復号装置。
  24. 前記復号部は、複数のブロック復号部を備え、
    前記複数のブロック復号部は、前記ピクチャ内のブロックと、前記ピクチャ内のブロックより上かつ右に位置する前記ブロックとに対して、並列に前記可変長復号を含む復号処理を行う、
    請求項20〜23の何れか1項に記載の画像復号装置。
  25. 複数のブロックからなるピクチャがブロックごとに符号化されて生成された符号化ストリームを2パスで復号する画像復号装置であって、
    1パス目で、処理順序による依存関係を有して符号化されたパラメータを復号することによって、処理順序による依存関係を解決するプリデコード部と、
    2パス目で、ピクチャ内のブロックと、前記ピクチャ内のブロックより上かつ右に位置するブロックとに対して、並列に可変長復号を含む復号処理を行うことによって、位置による依存関係を解決する復号部と
    を備える画像復号装置。
JP2010516742A 2008-06-10 2009-06-05 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路 Expired - Fee Related JP5756921B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010516742A JP5756921B2 (ja) 2008-06-10 2009-06-05 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008151246 2008-06-10
JP2008151246 2008-06-10
JP2010516742A JP5756921B2 (ja) 2008-06-10 2009-06-05 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路
PCT/JP2009/002546 WO2009150808A1 (ja) 2008-06-10 2009-06-05 画像復号装置および画像符号化装置

Publications (2)

Publication Number Publication Date
JPWO2009150808A1 JPWO2009150808A1 (ja) 2011-11-10
JP5756921B2 true JP5756921B2 (ja) 2015-07-29

Family

ID=41416521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010516742A Expired - Fee Related JP5756921B2 (ja) 2008-06-10 2009-06-05 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路

Country Status (6)

Country Link
US (1) US9042457B2 (ja)
EP (1) EP2290985B1 (ja)
JP (1) JP5756921B2 (ja)
CN (1) CN101779466B (ja)
TW (1) TWI514891B (ja)
WO (1) WO2009150808A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8542748B2 (en) 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
US8712173B2 (en) * 2010-03-12 2014-04-29 Mediatek Singapore Pte. Ltd. Methods for processing 2Nx2N block with N being positive integer greater than four under intra-prediction mode and related processing circuits thereof
CN101902643B (zh) * 2010-07-09 2013-02-06 西安交通大学 并行阵列式帧内预测解码器vlsi结构设计方法
US20120014429A1 (en) * 2010-07-15 2012-01-19 Jie Zhao Methods and Systems for Parallel Video Encoding and Parallel Video Decoding
GB2482731B (en) * 2010-08-13 2016-12-21 Advanced Risc Mach Ltd A video decoding apparatus and method
WO2012035728A1 (ja) * 2010-09-16 2012-03-22 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
US8344917B2 (en) * 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
CN102075746B (zh) * 2010-12-06 2012-10-31 青岛海信信芯科技有限公司 一种视频宏块解码方法及装置
US9154158B2 (en) * 2011-01-13 2015-10-06 Texas Instruments Incorporated Macro-block encoding of skipped video frames
JP5884062B2 (ja) * 2011-02-16 2016-03-15 パナソニックIpマネジメント株式会社 ストリーム生成装置、ストリーム生成方法、ストリーム処理装置、およびストリーム処理方法
US9247261B2 (en) * 2011-03-04 2016-01-26 Vixs Systems, Inc. Video decoder with pipeline processing and methods for use therewith
FR2972588A1 (fr) 2011-03-07 2012-09-14 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
FR2977111A1 (fr) * 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
MX342314B (es) 2011-08-25 2016-09-26 Panasonic Ip Corp America Metodos y aparatos para codificar y decodificar video utilizando una descripcion de memoria intermedia periodica.
ES2625097T3 (es) * 2011-09-07 2017-07-18 Sun Patent Trust Método de codificación de imágenes y aparato de codificación de imágenes
JP5932811B2 (ja) 2011-09-19 2016-06-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 画像復号方法、及び画像復号装置
EP2770734B1 (en) 2011-10-19 2020-08-26 Sun Patent Trust Image coding method and image coding device
KR101965388B1 (ko) * 2011-11-04 2019-04-04 주식회사 골드피크이노베이션즈 양자화 계수 부/복호화 방법 및 이러한 방법을 사용하는 장치
JP6080375B2 (ja) * 2011-11-07 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
RU2686819C2 (ru) * 2012-01-17 2019-04-30 Инфобридж Пте. Лтд. Способ применения краевого смещения
JP2013150215A (ja) * 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
EP3684058B1 (en) * 2012-04-12 2021-08-11 Velos Media International Limited Extension data handling
ES2746961T3 (es) 2012-04-13 2020-03-09 Canon Kk Procedimiento, aparato y sistema para codificar y descodificar un subconjunto de unidades de transformación de datos de vídeo codificados
CN104221388B (zh) * 2012-04-16 2018-01-23 瑞典爱立信有限公司 指示压缩视频序列的并行处理可能性的固定分片结构标志
JP6080405B2 (ja) * 2012-06-29 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US9241163B2 (en) * 2013-03-15 2016-01-19 Intersil Americas LLC VC-2 decoding using parallel decoding paths
JP6272194B2 (ja) * 2014-09-24 2018-01-31 株式会社日立情報通信エンジニアリング 動画像符号化装置、動画像復号装置、および動画像符号化・復号化方法
JP6532222B2 (ja) * 2014-11-28 2019-06-19 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
GB2533155B (en) 2014-12-12 2021-09-15 Advanced Risc Mach Ltd Video data processing system
US10136132B2 (en) * 2015-07-21 2018-11-20 Microsoft Technology Licensing, Llc Adaptive skip or zero block detection combined with transform size decision
JP6317720B2 (ja) * 2015-11-09 2018-04-25 富士通株式会社 動画像符号化装置、動画像符号化方法、動画像符号化プログラム
JP2016054514A (ja) * 2015-11-09 2016-04-14 富士通株式会社 動画像符号化装置、動画像符号化方法、動画像符号化プログラム
JP6311821B2 (ja) * 2017-04-18 2018-04-18 富士通株式会社 動画像処理装置及び動画像処理方法
EP3695600A4 (en) * 2017-11-30 2020-08-19 SZ DJI Technology Co., Ltd. SYSTEM AND METHOD FOR CONTROLLING VIDEO ENCODING IN A FRAME OF IMAGE
CN111164972A (zh) 2017-11-30 2020-05-15 深圳市大疆创新科技有限公司 用于在帧级别控制视频编码的系统和方法
WO2019104862A1 (en) 2017-11-30 2019-06-06 SZ DJI Technology Co., Ltd. System and method for reducing video coding fluctuation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10234043A (ja) * 1997-02-20 1998-09-02 Toshiba Corp 動画像符号化/復号化装置
JP2006129284A (ja) * 2004-10-29 2006-05-18 Sony Corp 符号化及び復号装置並びに符号化及び復号方法
JP2007251605A (ja) * 2006-03-16 2007-09-27 Matsushita Electric Ind Co Ltd 復号装置、復号方法、プログラムおよび記録媒体

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3474005B2 (ja) * 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US8913667B2 (en) * 1999-11-09 2014-12-16 Broadcom Corporation Video decoding system having a programmable variable-length decoder
US7292772B2 (en) * 2000-05-29 2007-11-06 Sony Corporation Method and apparatus for decoding and recording medium for a coded video stream
ES2401991T3 (es) * 2002-04-26 2013-04-26 Ntt Docomo, Inc. Dispositivo para la codificación de imágenes, procedimiento para la codificación de imágenes y programa para la codificación de imágenes
US7305036B2 (en) * 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
US6931061B2 (en) 2002-11-13 2005-08-16 Sony Corporation Method of real time MPEG-4 texture decoding for a multiprocessor environment
KR20050090302A (ko) * 2004-03-08 2005-09-13 경희대학교 산학협력단 비디오 인코더/디코더, 비디오 인코딩/디코딩 방법, 그방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한기록매체
EP1777965A1 (en) * 2004-08-05 2007-04-25 Matsushita Electric Industrial Co., Ltd. Image decoding device and image encoding device
JP4407472B2 (ja) * 2004-10-29 2010-02-03 ソニー株式会社 符号化及び復号装置並びに符号化及び復号方法
JP2007221370A (ja) * 2006-02-15 2007-08-30 Matsushita Electric Ind Co Ltd 復号装置、及び集積回路
JP2007251865A (ja) 2006-03-20 2007-09-27 Sony Corp 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
JP4182442B2 (ja) * 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
US7626518B2 (en) * 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding systems and methods in computational core of programmable graphics processing unit
JP5341104B2 (ja) 2008-12-08 2013-11-13 パナソニック株式会社 画像復号化装置および画像復号化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10234043A (ja) * 1997-02-20 1998-09-02 Toshiba Corp 動画像符号化/復号化装置
JP2006129284A (ja) * 2004-10-29 2006-05-18 Sony Corp 符号化及び復号装置並びに符号化及び復号方法
JP2007251605A (ja) * 2006-03-16 2007-09-27 Matsushita Electric Ind Co Ltd 復号装置、復号方法、プログラムおよび記録媒体

Also Published As

Publication number Publication date
EP2290985A4 (en) 2013-03-06
CN101779466B (zh) 2015-02-11
CN101779466A (zh) 2010-07-14
EP2290985A1 (en) 2011-03-02
TW201004359A (en) 2010-01-16
EP2290985B1 (en) 2017-05-03
US9042457B2 (en) 2015-05-26
JPWO2009150808A1 (ja) 2011-11-10
TWI514891B (zh) 2015-12-21
US20110200115A1 (en) 2011-08-18
WO2009150808A1 (ja) 2009-12-17

Similar Documents

Publication Publication Date Title
JP5756921B2 (ja) 画像復号装置、画像復号方法、画像符号化装置、画像符号化方法、プログラムおよび集積回路
JP6263249B2 (ja) 動画像復号装置、動画像復号方法、動画像符号化装置および動画像符号化方法
CN107771393B (zh) 帧内预测及帧内模式译码
CN107750455B (zh) 帧内预测及帧内模式译码
KR101037855B1 (ko) 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법 및 화상 복호 방법
KR101099865B1 (ko) 화상 부호화 장치, 화상 부호화 방법, 화상 복호 장치 및 화상 복호 방법
KR101956314B1 (ko) 이미지들을 코딩 및 디코딩하는 방법, 코딩 및 디코딩 디바이스 및 그에 대응하는 컴퓨터 프로그램들
RU2502216C2 (ru) Кодер изображения и декодер изображения, способ кодирования изображения и способ декодирования изображения
KR20210003125A (ko) 종속 양자화
US20140286417A1 (en) Data encoding and decoding
US20110188768A1 (en) Image encoding method and device implementing an improved prediction, corresponding decoding method and device, signal and computer programs
WO2010052837A1 (ja) 画像復号装置、画像復号方法、集積回路及びプログラム
EP2160900A1 (en) Methods and apparatus supporting multi-pass video syntax structure for slice data
JP5400133B2 (ja) 線形形状の画素区画にスライスされた画像または画像シーケンスの符号化および復号
JP5116704B2 (ja) 画像符号化装置及び画像符号化方法
EP3991419B1 (en) Independent cabac for sub-sections of a picture
CN102783148A (zh) 用于视频编码的方法和装置
TW202325020A (zh) 視訊編碼方法、裝置以及視訊解碼方法、裝置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120523

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140707

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141008

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150217

R151 Written notification of patent or utility model registration

Ref document number: 5756921

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

SZ03 Written request for cancellation of trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z03

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees