(実施の形態1)
動き補償を用いる画面間予測符号化では、符号化済み画像(参照画像)のうちの動きベクトルの指し示す領域の画素データ(参照画素データ)を予測信号として用い、符号化ブロックと予測信号との差分をとった残差信号(RecDifPic)のみを符号化することにより情報量を軽減する。サイズの小さいブロック単位で動き補償をするなどして動き補償の精度を高めると、残差信号の情報量を軽減できる。しかし、その反面、動きベクトルの情報量が増えるため、残差信号の情報量と動きベクトルの情報量とは、トレードオフの関係にある。
画像符号化装置は、対象ブロックの圧縮効率が最大となるように、参照画像の探索範囲内を探索することで、動きベクトルを決定する。そこで、本発明の一形態に係る画像符号化装置は、圧縮効率の高い動きベクトルの探索に加えて、画像復号装置においてメモリ転送負荷が軽減される可能性のある動きベクトルを、優先的に決定することを特徴とする。
具体的には、本発明の画像符号化装置は、メモリ転送負荷が大きくなる、サイズの小さなブロック単位での動き補償の頻度を抑えるか、あるいは、サイズの小さなブロック単位での動き補償をする場合でも、空間的に近傍の他のブロックと同一の動きベクトルを優遇する、あるいはこれに限定する。
図3Aは、H.264の16×16画素のブロックを16×8画素のパーティション(「サブブロック」ともいう)に分割した場合の予測ベクトルの参照位置を示す概念図である。上側の16×8画素のパーティションは、上側に隣接するブロックの動きベクトルを予測ベクトルとし、下側の16×8画素のパーティションは、左側に隣接するブロックの動きベクトルを予測ベクトルとする。
図3Bに示すにように、16×16画素のブロック11を上下に2分割した場合、上側の16×8画素のサブブロック11aの動きベクトルmvCurは、上側に隣接するブロック10の動きベクトルmvUpと等しい時に動きベクトルの情報量を抑えることができるため、このような動きベクトルを動き探索過程において優遇する、あるいは、これのみを取るように制限する。
図3Cに示すように、16×16画素のブロック21を左右に2分割した場合、左側の8×16画素のサブブロック21aの動きベクトルmvCurは、左側に隣接するブロック20の動きベクトルmvLeftと等しいときに動きベクトルの情報量を抑えることができるため、このような動きベクトルを動き探索過程において優遇する、あるいは、これのみを取るように制限する。
すなわち、図3B及び図3Cのように、ブロック11、21を複数のサブブロック11a、11b、21a、21bに分割した場合、既に符号化されたブロック10、20に隣接する側のサブブロック11a、21aは、当該隣接するブロック10、20と同一の動きベクトルを用いて動き補償される。
図4Aは、本実施の形態の画像符号化装置100の構成を示すブロック図である。
図4Aに示される画像符号化装置100は、動き検出部101と、フレームメモリ102と、減算部103、104と、動き補償部105と、符号化部106と、加算部107と、動きベクトルメモリ108と、動きベクトル予測部109と、動き補償制約部110を備える。
動き検出部101は、フレームメモリ102から出力される動き検出参照画素MEpelと画面信号Vinとを比較し、動きベクトルMVと参照ピクチャ番号RefNoとを出力する。参照ピクチャ番号RefNoは、複数の参照画像の中から選択された、対象画像が参照する参照画像を特定するための識別信号である。動きベクトルMVは、動きベクトルメモリ108に一時的に記憶された後、近傍動きベクトルPrevMVとして動きベクトル予測部109へ出力される。
動きベクトル予測部109は、入力された近傍動きベクトルPrevMVを参照して、予測動きベクトルPredMVを予測する。減算部104は、動きベクトルMVから予測動きベクトルPredMVを減算し、その差を動きベクトル予測差分DifMVとして出力する。
一方、フレームメモリ102は、参照ピクチャ番号RefNoで示される参照画像のうち、動きベクトルMVで示される参照領域の画素データ(参照画素データ)を、動き補償参照画素MCpel1として出力する。動き補償部105は、フレームメモリ102から取得した動き補償参照画素MCpel1から小数画素精度の予測画素データを生成し、予測画素信号MCpel2として出力する。減算部103は、画面信号Vinから予測画素信号MCpel2を減算し、画面予測誤差DifPelを出力する。
符号化部106は、画面予測誤差DifPelを周波数変換し、量子化して量子化係数を生成する。また、符号化部106は、量子化係数と動きベクトル予測差分DifMVと参照ピクチャ番号RefNoとを可変長符号化し、符号化信号Strを出力する。なお、符号化時に画面予測誤差の復号結果である予測誤差RecDifPelも同時に出力する。予測誤差RecDifPelは、量子化係数を逆量子化し、逆周波数変換して得られる。すなわち、予測誤差RecDifPelは、画面予測誤差DifPelに符号化誤差が重畳されたものであり、後述する画像復号装置200で符号化信号Strを復号して得られる画面間予測誤差と一致する。
加算部107は、予測画素信号MCpel2に予測誤差RecDifPelを加算して得られる復号画素信号RecPelを、参照画像としてフレームメモリ102に記憶させる。但し、フレームメモリ102の容量を有効に利用するため、フレームメモリ102に記憶されている参照画像のうちの不要な領域は開放され、またフレームメモリ102に記憶する必要が無い参照画像はフレームメモリ102に記憶されない。
動き補償制約部110は、小さなサイズのパーティション、すなわち、サブブロックの動き検出において、動きベクトルの符号化に必要とする情報量が大きくなりすぎないように、動き検出部101へ制御信号MeCtrlを送り、予測動きベクトルPredMVとできるだけ等しくなるような動きベクトルMVを検出するように制御する。これにより、動きベクトル予測差分DiffMVの情報量を抑える。
本発明の一形態に係る画像符号化装置1000は、例えば、図4Bに示されるように、画像を構成する複数のブロックを順次符号化する装置であって、符号化単位決定部1100と、動きベクトル決定部1200と、符号化部1300とを備える。
符号化単位決定部1100は、対象ブロックの符号化単位を決定する。すなわち、符号化単位決定部1100は、対象ブロックをブロック単位で符号化するか、対象ブロックをさらに複数のサブブロックに分割して、サブブロック単位で符号化するかを決定する。この符号化単位決定部1100は、例えば、図4Aの符号化部106に含まれる。
より具体的には、符号化単位決定部1100は、既に符号化されたブロックであって、対象ブロックに空間的に隣接する隣接ブロックと対象ブロックとの符号化順の差が予め定められた閾値の範囲内である場合に、対象ブロックの符号化単位を当該対象ブロックをさらに分割したサブブロック単位に決定する。
動きベクトル決定部1200は、対象ブロックをブロック単位で符号化する場合、対象ブロック単位の動きベクトルを決定する。一方、動きベクトル決定部1200は、対象ブロックをサブブロック単位で符号化する場合、各サブブロックの動きベクトルを決定する。この動きベクトル決定部1200は、例えば、図4Aの動き検出部101、動きベクトルメモリ108、動きベクトル予測部109及び動き補償制約部110等に相当する。
より具体的には、動きベクトル決定部1200は、対象ブロックをサブブロック単位で符号化する場合に、対象ブロックのうちの隣接ブロックに接する側のサブブロックの動きベクトルを、隣接ブロックの動きベクトルと同一に決定する。一方、動きベクトル決定部1200は、対象ブロックのうちの隣接ブロックに接しない側のサブブロックの動きベクトルを、ブロック単位で符号化する場合と同じ方法で決定する。
符号化部1300は、対象ブロックをブロック単位で符号化する場合、対象ブロックの画素データを、対象ブロックの動きベクトルを用いて符号化し、対象ブロックをサブブロック単位で符号化する場合、各サブブロックの画素データを、対応する動きベクトルを用いて符号化する。この符号化部1300は、例えば、図4Aの符号化部106に含まれる。
本実施の形態における画像符号化装置100及び画像符号化方法によれば、小さなサイズのパーティション単位で動き補償を行なう場合でも、当該パーティションの上側に隣接するブロックあるいは左側に隣接するブロックと同じか近い値の動きベクトルとなるため、動きベクトル情報量を抑制し、圧縮効率を向上させることが可能となる。
本発明の一形態に係る画像復号装置は、フレームメモリに記憶されている参照画像のうち、空間的に近傍の複数のブロックの参照画素データのメモリ転送を一括して行うことで、メモリ転送を効率化するものである。特に、本発明の一形態に係る画像符号化装置100において生成されたビットストリームに対してメモリ転送の効率化を高める。
図5Aは、本実施の形態の画像復号装置200の構成を示すブロック図である。
図5Aに示される画像復号装置200は、フレームメモリ102と、動き補償部105と、加算部107、121と、動きベクトルメモリ108と、動きベクトル予測部109と、復号部122と、局所参照メモリ123と、拡張転送制御部134と、一時メモリ135と、セレクタ136とを備える。
復号部122は、符号化信号Strを可変長復号し、量子化係数、動きベクトル予測差分DifMV、および参照ピクチャ番号RefNoを出力する。また、復号部122は、量子化係数を逆量子化し、逆周波数変換して予測誤差RecDifPelを出力する。加算部121は、動きベクトル予測部109から出力される予測動きベクトルPredMVと動きベクトル予測差分DifMVを加算し、動きベクトルMVを復号する。
フレームメモリ102は、参照ピクチャ番号RefNoに示される参照画像のうち、動きベクトルMVで示される参照画素データを動き補償参照画素MCpel1として出力する。局所参照メモリ123は、フレームメモリ102と動き補償部105との間に位置するメモリであり、フレームメモリ102から動き補償参照画素MCpel1が入力される。この局所参照メモリ123に記憶される動き補償参照画素MCpel1は、動き補償部105のみによって参照される。
局所参照メモリ123からは参照画素MCpel3が出力され、動き補償部105に入力される。動き補償部105は、小数画素精度の予測画素データを生成し、予測画素信号MCpel2として出力する。加算部107は、予測画素信号MCpel2に予測誤差RecDifPelを加算して得られる復号画素データRecPelを、参照画像としてフレームメモリ102へ記憶させる。
但し、フレームメモリ102の容量を有効に利用するため、フレームメモリ102に記憶されている参照画像のうちの不要な領域は開放され、またフレームメモリ102に記憶する必要が無い参照画像はフレームメモリ102に記憶されない。
拡張転送制御部134は、対象ブロックの位置及び一時メモリ135の記録状況などに応じて、フレームメモリ102から局所参照メモリ123に、拡大した参照画素データを転送するか否かを制御信号Ctrl1で指示する。
特に、対象ブロック及び対象ブロックより後で復号される未復号の後続ブロック各々の動き補償を動き補償部105で同時に行なう場合において、後続ブロックの動きベクトル情報が対象ブロックの復号時に得られない場合でも、後続ブロックの動きベクトルを対象ブロックと同一と推定あるいは仮定することで、拡張転送制御部134は、対象ブロック及び後続ブロック各々の動き補償に用いられる領域を特定し、特定した領域の画素データ(参照画素データ)を同時にフレームメモリ102から局所参照メモリ123に転送(以下、「拡大転送」と標記する)するように、制御信号Ctrl1を出力する。
ここで、対象ブロックは、例えば、16×16画素のブロックである。一方、後続ブロックは、例えば、16×8画素のサブブロックである。また、後続ブロックとなるサブブロックは、対象ブロックに空間的に隣接する16×16画素のブロックを複数のサブブロックに分割したうちの1つであって、より具体的には、複数のサブブロックのうちの対象ブロックに隣接する側のサブブロックである。
すなわち、図3Bに示されるブロック10を対象ブロックとすると、ブロック10と上下方向に隣接するブロック11のうちの上側のサブブロック11aが後続ブロックとなる。同様に、図3Cに示されるブロック20を対象ブロックとすると、ブロック20と左右方向に隣接するブロック21の左側のサブブロック21aが後続ブロックとなる。
動き補償部105は、局所参照メモリ123に記憶されている参照画素データを用いて動き補償を行うことにより、画像を構成するブロック単位、又はブロックをさらに分割したサブブロック単位で、予測画素データを順次生成する。
例えば、動き補償部105は、局所参照メモリ123に記憶されている参照画素データを用いて動き補償を行なうことにより、対象ブロック及び後続ブロック各々の予測画素データを生成する。そして、動き補償部105は、対象ブロックの予測画素データをセレクタ136に出力すると共に、後続ブロックの予測画素データを一時メモリ135へ記憶する。
すなわち、動き補償部105は、対象ブロック及び後続ブロックの動きベクトルが同一であると仮定して、2つのブロックの動き補償を同時に行なう。但し、フレームメモリ102から局所参照メモリ123への拡大転送が行なわれない場合、すなわち、対象ブロックの動き補償に用いられる参照画素データのみが転送される場合、動き補償部105は、対象ブロックに対する動き補償のみを行なう。
また、拡張転送制御部134は、後続ブロックの動き補償を行なう前に、一時メモリ135内に当該後続ブロックの予測画素データが既に一時メモリ135に記憶されている場合、参照画素データの転送は行わない。そして、セレクタ136は、後続ブロックの予測画素データMCPel4を一時メモリ135から読み出し、動き補償データMCPelCurとして出力する。
なお、図5Aに示される画像復号装置200は局所参照メモリ123を備えているが、これが無い場合でも、本発明の画像復号装置200の特徴である、未復号の後続ブロックの参照画素データを含めた拡大転送の効率化は可能である。この場合、拡張転送制御部134は、例えば、対象ブロック及び後続ブロック各々の参照画素データをフレームメモリ102から直接読み出すように、動き補償部105に制御信号Ctrl2で指示すればよい。
本発明の一形態に係る動き補償装置2000は、図5Bに示されるように、フレームメモリ102に記憶されている参照画像を用いて動き補償を行うことにより、画像を構成するブロック単位、又はブロックをさらに分割したサブブロック単位で、予測画素データを順次出力装置であり、参照画素読み出し部2100と、動き補償部2200と、出力部2300と、一時記憶部2400とを備える。
参照画素読み出し部2100は、参照画像のうち、対象ブロック及び対象ブロックに空間的に隣接する対象サブブロック各々の動き補償に用いられる参照画素データを、別々に又は一括して、フレームメモリ102から読み出して局所参照メモリ123に記憶させる。この参照画素読み出し部2100は、例えば、図5Aの拡張転送制御部134に相当する。
参照画素読み出し部2100は、例えば、対象ブロック及び対象サブブロックの処理順の差が予め定められた閾値の範囲内である場合、対象ブロック及び対象サブブロック各々の動き補償に用いられる参照画像内の領域を対象ブロックの動きベクトルを用いて特定し、特定した領域の画素データ(参照画素データ)を、一括してフレームメモリ102から読み出して局所参照メモリ123に記憶させる。
一方、処理順の差が閾値を超える場合、参照画素読み出し部2100は、対象ブロック及び対象サブブロックの参照画素データを、各々の動き補償処理のタイミングで別々にフレームメモリ102から読み出して局所参照メモリ123に記憶させる。
動き補償部2200は、参照画素読み出し部2100で読み出された参照画素データを用いて動き補償することにより、対象ブロック及び対象サブブロックそれぞれの予測画素データを生成する。この動き補償部2200は、例えば、図5Aの動き補償部105に相当する。
動き補償部2200は、局所参照メモリ123に対象ブロック及び対象サブブロックの両方の参照画素データが記憶されている場合、当該参照画素データを用いて、対象ブロック及び対象サブブロックそれぞれの予測画素データを同時に生成する。そして、動き補償部2200は、対象ブロックの予測画素データを出力部2300を介して加算部107に出力すると共に、対象サブブロックの予測画素データを一時記憶部2400に記憶させる。
一方、動き補償部2200は、局所参照メモリ123に対象ブロックの参照画素データのみが記憶されている場合、対象ブロックの参照画素データを用いて対象ブロックの予測画素データを生成し、出力部2300を介して加算部107に出力する。同様に、動き補償部2200は、局所参照メモリ123に対象サブブロックの参照画素データのみが記憶されている場合、対象サブブロックの参照画素データを用いて対象サブブロックの予測画素データを生成し、出力部2300を介して加算部107に出力する。
出力部2300は、動き補償部2200で生成された対象ブロック又は対象サブブロックの予測画素データを加算部107に出力する。この出力部2300は、例えば、図5Aのセレクタ136に相当する。
出力部2300は、対象ブロックの予測画素データを出力する場合、動き補償部2200から当該予測画素データを直接取得して、加算部107に出力する。一方、出力部2300は、対象サブブロックの予測画素データを出力する場合、動き補償部2200から当該予測画素データを直接取得するか、又は一時記憶部2400から当該予測画素データを取得して、加算部107に出力する。
例えば、対象ブロック及び対象サブブロック各々の動きベクトルが一致する場合、出力部2300は、一時記憶部2400から取得した対象サブブロックの予測画素データを出力する。一方、対象ブロック及び対象サブブロック各々の動きベクトルが一致しない場合、出力部2300は、動き補償部2200から直接取得した対象サブブロックの予測画素データを出力する。
一時記憶部2400は、動き補償部2200で生成された対象サブブロックの予測画素データを一時的に記憶する。この一時記憶部2400は、例えば、図5Aの一時メモリ135に相当する。
なお、上記構成の動き補償装置2000は、画像復号装置200に搭載されるだけでなく、画像符号化装置100に搭載されてもよい。具体的には、図4Aの動き補償部105が動き補償装置2000の動作を行ってもよい。
次に、図6A〜図6Cを用いて、画像符号化装置100で生成され、且つ画像復号装置200で復号される符号化ストリームのデータ構造の例を説明する。図6A〜図6Cは、ある符号化ストリームのデータ構造の例を示す図である。
図6Aに示される符号化ストリームには、4つのブロック(BLK1、BLK2、BLK3、BLK4)の符号化データが符号化順に連続して格納されており、この4ブロックの符号化データの前に、それぞれのブロックに関する動き情報(MV1、MV2、MV3、MV4)が連続して格納されている。
これはH.264におけるマクロブロックを4つの動き補償ブロック(サブブロック)に分割した場合等に相当する。この場合、動き情報は、4つのブロックの符号化データの前に連続して位置している。このため、画像復号装置200は、4つの動き情報を全て復号した後に、拡大転送の判断を行うことができる。すなわち、4つのブロックのうち、動き情報が共通するブロックの参照画素データを、フレームメモリ102から局所参照メモリ123に拡大転送すればよい。これは従来の画像復号装置において実現できたことであり、本発明の画像復号装置200においても実現できる。
図6Bに示される符号化ストリームには、各ブロック(BLK1、BLK2、BLK3、BLK4)の動き情報(MV1、MV2、MV3、MV4)が、当該ブロックの符号化データの直前に位置し、ブロック単位に符号化データと動き情報とが組になって格納されている。
これはH.264におけるマクロブロックが動き補償ブロックに分割されていない場合等に相当する。従来の画像復号装置は、あくまで図6Aのように、複数の動き補償ブロックに関する動き情報を、符号化データより前にまとめて入手できる場合に限って動作することができるのであって、図6Bのような例では、メモリ転送を効率化できない。
図6Cに示される符号化ストリームのデータ構造は、図6Bと同一である。ここで、本発明の画像復号装置200を用いれば、最初のブロック(BLK1)の動き情報(MV1)を復号した時点で、後続のブロック(BLK2)の動き情報(MV2)や、さらに後続のブロック(BLK3)の動き情報(MV3)を、現在復号中のブロック(BLK1)の動き情報(MV1)と同値であると仮定して拡大転送を行う。仮定が正しければ、メモリ転送を効率化できる。前述のように、動き情報が同値となる確率は、画像復号装置200において計測可能であり、仮定は高い精度で当たると期待できる。
次に、図7A、図7B、及び図8を用いて、本実施の形態の画像復号装置200の動作(画像復号方法)を説明する。図7Aは、画像を構成する各ブロックの位置と、符号化順(あるいは復号順)とを示した図である。図7Bは、復号順1〜4のブロック(BLK1、BKL2、BLK3、BLK4)に係る動き情報(MV1、MV2、MV3、MV4)が連続して位置する符号化ストリームの例である。図8は、本実施の形態の画像復号方法におけるメモリ転送に関わる部分を中心とする動作フロー図である。
図7Aに示される復号順1〜4のブロックは、空間的にはZ順に配列されており、これらブロックの右側に復号順5〜8のブロックが同じくZ順に配列されている。復号順2のブロック(BlkCurr)の動き補償をしようとする場合において、当該ブロック(BlkCurr)の参照画素データと、右側に隣接するブロック(BlkRight)の参照画素データとのメモリ転送の一括化の可能性について説明する。
例えば、画像復号装置200に図7Bに示される符号化ストリームが入力されたとすると、従来の画像復号装置と同様に、ブロック(BLK1〜BLK4)の参照画素データの一括転送が可能な場合がある。
さらに、本発明の一形態に係る画像復号装置200を用いれば、復号順2のブロックBlkCurrの右側に隣接する復号順5のブロック(BlkRight)の左側のサブブロックの動き情報を、対象ブロック(ここでは復号順2のブロック)の動き情報(MV2)と同値であると仮定して、復号順1〜4のブロックと復号順5のブロックとの参照画素データの拡大転送(一括転送)を行うことができる。図8を参照して、この場合の画像復号装置200の動作を詳しく説明する。
まず、拡張転送制御部134は、対象ブロック(BlkCurr)の復号にあたり、一時メモリ135に対象ブロック(BlkCurr)の予測画素データが存在するか否かを調べる(S100)。
対象ブロック(BlkCurr)の予測画素データが無ければ(S100で「なし」)、拡張転送制御部134は、対象ブロック(BlkCurr)の参照画素データと、対象ブロックに隣接する近傍ブロックの参照画素データとを合わせて、フレームメモリ102から局所参照メモリ123に拡大転送するか否かを判断する(S111)。なお、ステップS111の詳細は、図9を参照して後述する。
例えば、ステップS111において、隣接ブロック(BlkRight)の左側のサブブロックの参照画素データを合わせて拡大転送すると判断した場合(S111で「する」)、拡大された参照画素データ(動き補償参照画素MCpel1)を、フレームメモリ102から局所参照メモリ123に転送する(S115)。
次に、動き補償部105は、局所参照メモリ123に転送された動き補償参照画素MCpel1を取得し、対象ブロック(BlkCurr)の動きベクトルMV2の小数精度情報に基づき、動き補償補間フィルタを適用し、対象ブロック(BlkCurr)の予測画素データ(「動き補償画素データ」ともいう。以下同じ。)と、隣接ブロック(BlkRight)の左側のサブブロックの予測画素データとを生成する。
次に、動き補償部105は、対象ブロック(BlkCurr)に関する動き補償画素データMCPel2を、対象ブロック(BlkCurr)に関する動き補償画像としてセレクタ136を介して加算部107に出力する(S117)。また、動き補償部105は、隣接ブロック(BlkRight)の左側のサブブロックに関する動き補償画素データMCPelExt2を、一時メモリ135に記憶させる(S118)。
一方、ステップS111において、拡大転送をしないと判断した場合(S111で「しない」)には、拡張転送制御部134は、対象ブロック(BlkCurr)の参照画素データのみをフレームメモリ102から局所参照メモリ123へ転送する(S112)。そして、動き補償部105は、動きベクトルMVの小数精度情報に基づき、局所参照メモリ123に記憶されている参照画素データに動き補償補間フィルタを適用し、対象ブロック(BlkCurr)の予測画素データを生成する(S113)。そして、動き補償部105は、対象ブロック(BlkCurr)に関する動き補償済み画素MCPel2をセレクタ136に出力する。セレクタ136は、動き補償部105から取得した動き補償画素データMCPel2を対象ブロック(BlkCurr)に関する動き補償画素MCPelCurとして、加算部107に出力する。
次に、復号順3、4のブロックの復号が終了し、復号順5のブロック(BlkRight)を復号する際の処理を説明する。このブロック(BlkRight)は、サブブロック単位で符号化されているので、復号処理もサブブロック単位で行なわれる。
まず、拡張転送制御部134は、左側のサブブロックの予測画素データが一時メモリ135に存在するか否かを調べる(S100)。この予測画素データは、既に説明したように、ブロック(BlkCurr)の予測画素データを生成するのと同時に生成され、一時メモリ135に記憶されている。
次に、セレクタ136は、一時メモリ135に記憶されている予測画素データが先読み取得に成功したか否かを調べる(S101)。すなわち、その予測画素データは、過去の転送時点において、参照ピクチャ番号RefNoと動きベクトルMVとが復号順2のブロックと同一であると仮定して生成したものであり、正しくない可能性がある。すなわち、当該サブブロック及びブロック(BlkCurr)の参照ピクチャ番号RefNo及び動きベクトルMVが一致する場合には先読み取得成功(S101で「真」)となり、いずれか一方が一致しない場合には先読み取得失敗(S101で「偽」)となる。
先読み取得に失敗している場合(S101で「偽」)、一時メモリ135に記憶されている予測画素データを消去し(S104)、前述のステップS111へと処理が移る。この場合、拡大転送は行われないので(S111で「しない」)、当該サブブロックの参照画素データのみが転送され(S112)、当該サブブロックの予測画素データが生成され(S113)、生成された予測画素データがセレクタ136を経由して加算部107に出力される。
一方、先読み取得が成功した場合(S101で「真」)、セレクタ136は、一時メモリ135に記憶されている予測画素データを読み出して、動き補償画素データMCPel4として加算部107に出力し(S102)、当該予測画素データを一時メモリ135より消去する(S103)。
このようにすることで、小さな動き補償ブロック(サブブロック)に分割されて符号化されている場合であっても、空間的に隣接するブロックの参照画素データとの一括転送が可能となるため、メモリ転送を効率化できる。なお、小さな動き補償ブロックに分割しない場合には、このような投機取得はかえってメモリ効率が悪化するため、画像復号装置200において、直近の復号ブロックにおける動き補償ブロックの分割が行われた確率を算出しておき、その確率に基づき拡大転送判定(S111)において判断してもよい。
あるいは、このように独立に確率を計測するのではなく、動きベクトルの差分情報にかかる確率モデルにおける、差分情報の有無を示す確率を元に、動的に拡大転送判定(S111)を制御してもよい。
あるいは、未復号の隣接ブロックの動きベクトルを仮定するのではなく、符号化ストリームの動きベクトルに関する情報の復号を先行して行い、動きベクトルの情報の確定後に、対象ブロック及び隣接ブロックのメモリ一括転送の判定を行ってもよい。
図9を用いて、図8における拡大転送判定(S111)の詳細を説明する。
まず、対象ブロックの復号順BNCurrを算出する(S130)。上記の例では、対象ブロック(BlkCurr)の復号順BNCurr=2である。
次に、対象ブロック(BlkCurr)に隣接するブロックであって、まだ復号していないブロックについて、ブロック単位の処理を行う(S131)。
まず、拡張転送制御部134は、未復号の隣接ブロックの復号順BNnbrを算出する(S132)。図7Aに示される例では、1順目に復号順BNnbr=4が、2順目に復号順BNnbr=5が算出される。
次に、拡張転送制御部134は、一時メモリ135内に空き領域があるかを調べる(S133)。具体的には、隣接ブロックの予測画素データを格納するための空き領域の有無を判断する。
空き領域がある場合(S133で「真」)、拡張転送制御部134は、隣接ブロックの復号順BNnbrと対象ブロックの復号順Bncurrとの差分が閾値BNth以下であるかを判定する(S133)。
閾値以下である場合(S134で「真」)、拡張転送制御部134は、当該隣接ブロックの参照画素データを拡大転送の対象に含める(S135)。例えば、閾値BNth=3とすると、復号順4、5の隣接ブロック両方の参照画素データが拡大転送の対象に含まれることになる。
ここで、上記の条件(S133、S134)を満たす全ての参照画素データを拡大転送してもよいし、条件を満たす隣接ブロックが複数存在する場合には、そのうちの1つのブロックの参照画素データのみを拡大転送してもよい。例えば、復号順が対象ブロックに最も近い隣接ブロックの参照画素データのみを拡大転送の対象に含めてもよい。
また、上記の条件に加えて、隣接ブロックがサブブロック単位で符号化されているか否かを判断し、対象ブロックに隣接するサブブロックの参照画素データのみを拡大転送の対象に含めてもよい。あるいは、対象ブロックの動きベクトルと一致する動きベクトルを有するブロックの参照画素データのみを拡大転送の対象に含めてもよい。さらには、これらの条件を任意に組み合わせてもよい。
一方、ステップS133において、復号順の差が閾値BNthより大きい場合(S134で「偽」)、拡張転送制御部134は、当該隣接ブロックの参照画素データを拡大転送の対象には含めない(S136)。
また、ステップS133において、一時メモリ135に空きが無い場合(S133で「偽」)も、拡張転送制御部134は、当該隣接ブロックの予測画素データを拡大転送の対象には含めない(S136)。なお、ステップS132は、ステップS133の空き領域判定が「真」の場合のみに実行してもよい。あるいは、隣接ブロックに対する繰りかえし処理(S131)は、一時メモリ135に空きがある場合のみ実行してもよい。
なお、閾値BNThは、規格のプロファイルやレベルによって規定されてもよい。また、一時メモリ135のサイズは、規格のプロファイルやレベルによって規定されてもよい。
画像復号装置200の互換性のために、図8及び図9で示す画像復号装置200の動作を一つの基準として規定し、この基準を満たすように符号化する画像符号化装置100の動作フローを、図7A及び図10を用いて説明する。
まず、画像符号化装置100は、対象ブロックの符号化順BNCurrを算出する(S146)。例えば、図8に示されるブロック(BlkRight)を対象ブロックとすると、符号化順BNCurr=5となる。
次に、画像符号化装置100は、既に符号化されているブロックであって、当該対象ブロックに空間的に隣接する隣接ブロックについて、隣接ブロック単位の処理を行う(S147)。
まず、画像符号化装置100は、隣接ブロックの符号化順BNnbrを算出する(S148)。図7Aに示される例では、符号化順BNnbr=2が算出される。次に、画像符号化装置100は、一時メモリ内に空き領域があるかを調べる(S149)。
空き領域がある場合(S149で「真」)、画像符号化装置100は、対象ブロックの符号化順BnCurrと隣接ブロックの符号化順BNnbrとの差分が閾値BNth以下であるかを判定する(S150)。
閾値以下である場合(S150で「真」)、画像符号化装置100は、対象ブロックのサブブロック単位での符号化を許可する(S151)。また、図示は省略するが、対象ブロックをサブブロック単位で符号化する場合、動き補償制約部110は、当該対象ブロックを構成する複数のサブブロックのうち、隣接ブロックに接する側サブブロックを、当該隣接ブロックの動きベクトルと同一の動きベクトルを用いて動き補償する。この場合、図7Bに示される動き情報(MV5)には、対象ブロック(BlkRight)の右側のサブブロックの動き情報が格納され、左側のサブブロックの動き情報は省略される。
一方、ステップS150において、閾値より大きい場合(S150で「偽」)、画像符号化装置100は、対象ブロックのサブブロック単位での符号化を許可しない(S152)。また、ステップS149において、一時メモリ135に空きが無い場合(S149で「偽」)、画像符号化装置100は、対象ブロックのサブブロック単位での符号化を許可しない(S152)。
また、図8で説明した本発明の画像復号方法における拡大転送判定(S111)は確定的な一例であり、前述のように、動き補償ブロックの分割(かつMVの相違)が発生する確率を元に、より高精度に一括転送の制御を行ってもよい。しかしながら、動き補償ブロックの分割(かつMVの相違)の発生頻度は、符号化対象の動画の特徴や、ビットレートに依存して変化する。
確率が低い場合には、一括転送をより頻繁に行ってメモリ転送の更なる効率化をねらってもよい。つまり、画像符号化装置100側にて確率を算出し、閾値BNThをビットストリームに含める、あるいは、プロファイルやレベルで規定するなどして、画像復号装置200に通知して、画像復号装置200におけるメモリ転送効率を最大化してもよい。
また、ピクチャ全体をラスター順で符号化するよりも、ピクチャを分割した小単位で符号化する場合が考えられる。H.264にはこの種の単位としてスライスがあるが、より一般化して、横幅Mブロック縦幅Nブロックのピクチャ分割単位BlkClstrを考える。図11を用いて説明する。
この分割単位内ではブロックの符号化順がラスター順であるとすると、横幅Nが非常に大きい場合には、上下隣接の一括転送に必要な一時メモリのサイズが非常に大きくなってしまう。あるいは、実際の画像復号装置200が備えるメモリは有限であるので、一括転送を行える頻度が低下してしまう。
従って、本実施の形態の画像符号化装置100は、横幅Nが一定以上の場合には、ブロックを複数の動き補償ブロックに分割し、かつMVが上隣接ブロックと異なるようには符号化しないこととする。
このようにして、本実施の形態の画像復号装置200は、隣接するブロック間でメモリ転送を効率化でき、かつ、動作の一例を規定することにより、本実施の形態の符号化装置・符号化方法の生成する符号化ストリームは、復号装置の互換性を保つことができる。
(実施の形態2)
上記各実施の形態で示した動画像符号化方法または動画像復号方法の構成を実現するためのプログラムを記憶メディアに記録することにより、上記各実施の形態で示した処理を独立したコンピュータシステムにおいて簡単に実施することが可能となる。記憶メディアは、磁気ディスク、光ディスク、光磁気ディスク、ICカード、半導体メモリ等、プログラムを記録できるものであればよい。
さらにここで、上記各実施の形態で示した動画像符号化方法や動画像復号方法の応用例とそれを用いたシステムを説明する。
図12は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示す図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex106、ex107、ex108、ex109、ex110が設置されている。
このコンテンツ供給システムex100は、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex106からex110を介して、コンピュータex111、PDA(Personal Digital Assistant)ex112、カメラex113、携帯電話ex114、ゲーム機ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図12のような構成に限定されず、いずれかの要素を組合せて接続するようにしてもよい。また、固定無線局である基地局ex106からex110を介さずに、各機器が電話網ex104に直接接続されてもよい。また、各機器が近距離無線等を介して直接相互に接続されていてもよい。
カメラex113はデジタルビデオカメラ等の動画撮影が可能な機器であり、カメラex116はデジタルカメラ等の静止画撮影、動画撮影が可能な機器である。また、携帯電話ex114は、GSM(Global System for Mobile Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband-Code Division Multiple Access)方式、若しくはLTE(Long Term Evolution)方式、HSPA(High Speed Packet Access)の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
コンテンツ供給システムex100では、カメラex113等が基地局ex109、電話網ex104を通じてストリーミングサーバex103に接続されることで、ライブ配信等が可能になる。ライブ配信では、ユーザがカメラex113を用いて撮影するコンテンツ(例えば、音楽ライブの映像等)に対して上記各実施の形態で説明したように符号化処理を行い、ストリーミングサーバex103に送信する。一方、ストリーミングサーバex103は要求のあったクライアントに対して送信されたコンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114、ゲーム機ex115等がある。配信されたデータを受信した各機器では、受信したデータを復号処理して再生する。
なお、撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするストリーミングサーバex103で行ってもよいし、互いに分担して行ってもよい。同様に配信されたデータの復号処理はクライアントで行っても、ストリーミングサーバex103で行ってもよいし、互いに分担して行ってもよい。また、カメラex113に限らず、カメラex116で撮影した静止画像および/または動画像データを、コンピュータex111を介してストリーミングサーバex103に送信してもよい。この場合の符号化処理はカメラex116、コンピュータex111、ストリーミングサーバex103のいずれで行ってもよいし、互いに分担して行ってもよい。
また、これら符号化・復号処理は、一般的にコンピュータex111や各機器が有するLSIex500において処理する。LSIex500は、ワンチップであっても複数チップからなる構成であってもよい。なお、動画像符号化・復号用のソフトウェアをコンピュータex111等で読み取り可能な何らかの記録メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込み、そのソフトウェアを用いて符号化・復号処理を行ってもよい。さらに、携帯電話ex114がカメラ付きである場合には、そのカメラで取得した動画データを送信してもよい。このときの動画データは携帯電話ex114が有するLSIex500で符号化処理されたデータである。
また、ストリーミングサーバex103は複数のサーバや複数のコンピュータであって、データを分散して処理したり記録したり配信するものであってもよい。
以上のようにして、コンテンツ供給システムex100では、符号化されたデータをクライアントが受信して再生することができる。このようにコンテンツ供給システムex100では、ユーザが送信した情報をリアルタイムでクライアントが受信して復号し、再生することができ、特別な権利や設備を有さないユーザでも個人放送を実現できる。
なお、コンテンツ供給システムex100の例に限らず、図13に示すように、デジタル放送用システムex200にも、上記各実施の形態の少なくとも動画像符号化装置または動画像復号装置のいずれかを組み込むことができる。具体的には、放送局ex201では映像データに音楽データなどが多重化された多重化データが電波を介して通信または衛星ex202に伝送される。この映像データは上記各実施の形態で説明した動画像符号化方法により符号化されたデータである。これを受けた放送衛星ex202は、放送用の電波を発信し、この電波を衛星放送の受信が可能な家庭のアンテナex204が受信する。受信した多重化データを、テレビ(受信機)ex300またはセットトップボックス(STB)ex217等の装置が復号して再生する。
また、DVD、BD等の記録メディアex215に記録した多重化データを読み取り復号する、または記録メディアex215に映像信号を符号化し、さらに場合によっては音楽信号と多重化して書き込むリーダ/レコーダex218にも上記各実施の形態で示した動画像復号装置または動画像符号化装置を実装することが可能である。この場合、再生された映像信号はモニタex219に表示され、多重化データが記録された記録メディアex215により他の装置やシステムにおいて映像信号を再生することができる。また、ケーブルテレビ用のケーブルex203または衛星/地上波放送のアンテナex204に接続されたセットトップボックスex217内に動画像復号装置を実装し、これをテレビのモニタex219で表示してもよい。このときセットトップボックスではなく、テレビ内に動画像復号装置を組み込んでもよい。
図14は、上記各実施の形態で説明した動画像復号方法および動画像符号化方法を用いたテレビ(受信機)ex300を示す図である。テレビex300は、上記放送を受信するアンテナex204またはケーブルex203等を介して映像データに音声データが多重化された多重化データを取得、または出力するチューナex301と、受信した多重化データを復調する、または外部に送信する多重化データに変調する変調/復調部ex302と、復調した多重化データを映像データと、音声データとに分離する、または信号処理部ex306で符号化された映像データ、音声データを多重化する多重/分離部ex303を備える。
また、テレビex300は、音声データ、映像データそれぞれを復号する、またはそれぞれの情報を符号化する音声信号処理部ex304、映像信号処理部ex305を有する信号処理部ex306と、復号した音声信号を出力するスピーカex307、復号した映像信号を表示するディスプレイ等の表示部ex308を有する出力部ex309とを有する。さらに、テレビex300は、ユーザ操作の入力を受け付ける操作入力部ex312等を有するインタフェース部ex317を有する。さらに、テレビex300は、各部を統括的に制御する制御部ex310、各部に電力を供給する電源回路部ex311を有する。インタフェース部ex317は、操作入力部ex312以外に、リーダ/レコーダex218等の外部機器と接続されるブリッジex313、SDカード等の記録メディアex216を装着可能とするためのスロット部ex314、ハードディスク等の外部記録メディアと接続するためのドライバex315、電話網と接続するモデムex316等を有していてもよい。なお記録メディアex216は、格納する不揮発性/揮発性の半導体メモリ素子により電気的に情報の記録を可能としたものである。テレビex300の各部は同期バスを介して互いに接続されている。
まず、テレビex300がアンテナex204等により外部から取得した多重化データを復号し、再生する構成について説明する。テレビex300は、リモートコントローラex220等からのユーザ操作を受け、CPU等を有する制御部ex310の制御に基づいて、変調/復調部ex302で復調した多重化データを多重/分離部ex303で分離する。さらにテレビex300は、分離した音声データを音声信号処理部ex304で復号し、分離した映像データを映像信号処理部ex305で上記各実施の形態で説明した復号方法を用いて復号する。復号した音声信号、映像信号は、それぞれ出力部ex309から外部に向けて出力される。出力する際には、音声信号と映像信号が同期して再生するよう、バッファex318、ex319等に一旦これらの信号を蓄積するとよい。また、テレビex300は、放送等からではなく、磁気/光ディスク、SDカード等の記録メディアex215、ex216から多重化データを読み出してもよい。次に、テレビex300が音声信号や映像信号を符号化し、外部に送信または記録メディア等に書き込む構成について説明する。テレビex300は、リモートコントローラex220等からのユーザ操作を受け、制御部ex310の制御に基づいて、音声信号処理部ex304で音声信号を符号化し、映像信号処理部ex305で映像信号を上記各実施の形態で説明した符号化方法を用いて符号化する。符号化した音声信号、映像信号は多重/分離部ex303で多重化され外部に出力される。多重化する際には、音声信号と映像信号が同期するように、バッファex320、ex321等に一旦これらの信号を蓄積するとよい。なお、バッファex318、ex319、ex320、ex321は図示しているように複数備えていてもよいし、1つ以上のバッファを共有する構成であってもよい。さらに、図示している以外に、例えば変調/復調部ex302や多重/分離部ex303の間等でもシステムのオーバフロー、アンダーフローを避ける緩衝材としてバッファにデータを蓄積することとしてもよい。
また、テレビex300は、放送等や記録メディア等から音声データ、映像データを取得する以外に、マイクやカメラのAV入力を受け付ける構成を備え、それらから取得したデータに対して符号化処理を行ってもよい。なお、ここではテレビex300は上記の符号化処理、多重化、および外部出力ができる構成として説明したが、これらの処理を行うことはできず、上記受信、復号処理、外部出力のみが可能な構成であってもよい。
また、リーダ/レコーダex218で記録メディアから多重化データを読み出す、または書き込む場合には、上記復号処理または符号化処理はテレビex300、リーダ/レコーダex218のいずれで行ってもよいし、テレビex300とリーダ/レコーダex218が互いに分担して行ってもよい。
一例として、光ディスクからデータの読み込みまたは書き込みをする場合の情報再生/記録部ex400の構成を図15に示す。情報再生/記録部ex400は、以下に説明する要素ex401、ex402、ex403、ex404、ex405、ex406、ex407を備える。光ヘッドex401は、光ディスクである記録メディアex215の記録面にレーザスポットを照射して情報を書き込み、記録メディアex215の記録面からの反射光を検出して情報を読み込む。変調記録部ex402は、光ヘッドex401に内蔵された半導体レーザを電気的に駆動し記録データに応じてレーザ光の変調を行う。再生復調部ex403は、光ヘッドex401に内蔵されたフォトディテクタにより記録面からの反射光を電気的に検出した再生信号を増幅し、記録メディアex215に記録された信号成分を分離して復調し、必要な情報を再生する。バッファex404は、記録メディアex215に記録するための情報および記録メディアex215から再生した情報を一時的に保持する。ディスクモータex405は記録メディアex215を回転させる。サーボ制御部ex406は、ディスクモータex405の回転駆動を制御しながら光ヘッドex401を所定の情報トラックに移動させ、レーザスポットの追従処理を行う。システム制御部ex407は、情報再生/記録部ex400全体の制御を行う。上記の読み出しや書き込みの処理はシステム制御部ex407が、バッファex404に保持された各種情報を利用し、また必要に応じて新たな情報の生成・追加を行うと共に、変調記録部ex402、再生復調部ex403、サーボ制御部ex406を協調動作させながら、光ヘッドex401を通して、情報の記録再生を行うことにより実現される。システム制御部ex407は例えばマイクロプロセッサで構成され、読み出し書き込みのプログラムを実行することでそれらの処理を実行する。
以上では、光ヘッドex401はレーザスポットを照射するとして説明したが、近接場光を用いてより高密度な記録を行う構成であってもよい。
図16に光ディスクである記録メディアex215の模式図を示す。記録メディアex215の記録面には案内溝(グルーブ)がスパイラル状に形成され、情報トラックex230には、予めグルーブの形状の変化によってディスク上の絶対位置を示す番地情報が記録されている。この番地情報はデータを記録する単位である記録ブロックex231の位置を特定するための情報を含み、記録や再生を行う装置において情報トラックex230を再生し番地情報を読み取ることで記録ブロックを特定することができる。また、記録メディアex215は、データ記録領域ex233、内周領域ex232、外周領域ex234を含んでいる。ユーザデータを記録するために用いる領域がデータ記録領域ex233であり、データ記録領域ex233より内周または外周に配置されている内周領域ex232と外周領域ex234は、ユーザデータの記録以外の特定用途に用いられる。情報再生/記録部ex400は、このような記録メディアex215のデータ記録領域ex233に対して、符号化された音声データ、映像データまたはそれらのデータを多重化した多重化データの読み書きを行う。
以上では、1層のDVD、BD等の光ディスクを例に挙げ説明したが、これらに限ったものではなく、多層構造であって表面以外にも記録可能な光ディスクであってもよい。また、ディスクの同じ場所にさまざまな異なる波長の色の光を用いて情報を記録したり、さまざまな角度から異なる情報の層を記録したりなど、多次元的な記録/再生を行う構造の光ディスクであってもよい。
また、デジタル放送用システムex200において、アンテナex205を有する車ex210で衛星ex202等からデータを受信し、車ex210が有するカーナビゲーションex211等の表示装置に動画を再生することも可能である。なお、カーナビゲーションex211の構成は例えば図14に示す構成のうち、GPS受信部を加えた構成が考えられ、同様なことがコンピュータex111や携帯電話ex114等でも考えられる。また、上記携帯電話ex114等の端末は、テレビex300と同様に、符号化器・復号器を両方持つ送受信型端末の他に、符号化器のみの送信端末、復号器のみの受信端末という3通りの実装形式が考えられる。さらに、デジタル放送用システムex200において、映像データに音楽データなどが多重化された多重化された多重化データを受信、送信するとして説明したが、音声データ以外に映像に関連する文字データなどが多重化されたデータであってもよいし、多重化データではなく映像データ自体であってもよい。
このように、上記各実施の形態で示した動画像符号化方法あるいは動画像復号方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記各実施の形態で説明した効果を得ることができる。
また、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
(実施の形態3)
上記各実施の形態で示した動画像符号化方法または装置と、MPEG−2、MPEG4−AVC、VC−1など異なる規格に準拠した動画像符号化方法または装置とを、必要に応じて適宜切替えることにより、映像データを生成することも可能である。
ここで、それぞれ異なる規格に準拠する複数の映像データを生成した場合、復号する際に、それぞれの規格に対応した復号方法を選択する必要がある。しかしながら、復号する映像データが、どの規格に準拠するものであるか識別できないため、適切な復号方法を選択することができないという課題を生じる。
この課題を解決するために、映像データに音声データなどを多重化した多重化データは、映像データがどの規格に準拠するものであるかを示す識別情報を含む構成とする。上記各実施の形態で示す動画像符号化方法または装置によって生成された映像データを含む多重化データの具体的な構成を以下説明する。多重化データは、MPEG−2トランスポートストリーム形式のデジタルストリームである。
図17は、多重化データの構成を示す図である。図17に示すように多重化データは、ビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム(PG)、インタラクティブグラファイックスストリームのうち、1つ以上を多重化することで得られる。ビデオストリームは映画の主映像および副映像を、オーディオストリーム(IG)は映画の主音声部分とその主音声とミキシングする副音声を、プレゼンテーショングラフィックスストリームは、映画の字幕をそれぞれ示している。ここで主映像とは画面に表示される通常の映像を示し、副映像とは主映像の中に小さな画面で表示する映像のことである。また、インタラクティブグラフィックスストリームは、画面上にGUI部品を配置することにより作成される対話画面を示している。ビデオストリームは、上記各実施の形態で示した動画像符号化方法または装置、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠した動画像符号化方法または装置によって符号化されている。オーディオストリームは、ドルビーAC−3、Dolby Digital Plus、MLP、DTS、DTS−HD、または、リニアPCMのなどの方式で符号化されている。
多重化データに含まれる各ストリームはPIDによって識別される。例えば、映画の映像に利用するビデオストリームには0x1011が、オーディオストリームには0x1100から0x111Fまでが、プレゼンテーショングラフィックスには0x1200から0x121Fまでが、インタラクティブグラフィックスストリームには0x1400から0x141Fまでが、映画の副映像に利用するビデオストリームには0x1B00から0x1B1Fまで、主音声とミキシングする副音声に利用するオーディオストリームには0x1A00から0x1A1Fが、それぞれ割り当てられている。
図18は、多重化データがどのように多重化されるかを模式的に示す図である。まず、複数のビデオフレームからなるビデオストリームex235、複数のオーディオフレームからなるオーディオストリームex238を、それぞれPESパケット列ex236およびex239に変換し、TSパケットex237およびex240に変換する。同じくプレゼンテーショングラフィックスストリームex241およびインタラクティブグラフィックスex244のデータをそれぞれPESパケット列ex242およびex245に変換し、さらにTSパケットex243およびex246に変換する。多重化データex247はこれらのTSパケットを1本のストリームに多重化することで構成される。
図19は、PESパケット列に、ビデオストリームがどのように格納されるかをさらに詳しく示している。図17における第1段目はビデオストリームのビデオフレーム列を示す。第2段目は、PESパケット列を示す。図17の矢印yy1,yy2,yy3,yy4に示すように、ビデオストリームにおける複数のVideo Presentation UnitであるIピクチャ、Bピクチャ、Pピクチャは、ピクチャ毎に分割され、PESパケットのペイロードに格納される。各PESパケットはPESヘッダを持ち、PESヘッダには、ピクチャの表示時刻であるPTS(Presentation Time−Stamp)やピクチャの復号時刻であるDTS(Decoding Time−Stamp)が格納される。
図20は、多重化データに最終的に書き込まれるTSパケットの形式を示している。TSパケットは、ストリームを識別するPIDなどの情報を持つ4ByteのTSヘッダとデータを格納する184ByteのTSペイロードから構成される188Byte固定長のパケットであり、上記PESパケットは分割されTSペイロードに格納される。BD−ROMの場合、TSパケットには、4ByteのTP_Extra_Headerが付与され、192Byteのソースパケットを構成し、多重化データに書き込まれる。TP_Extra_HeaderにはATS(Arrival_Time_Stamp)などの情報が記載される。ATSは当該TSパケットのデコーダのPIDフィルタへの転送開始時刻を示す。多重化データには図20下段に示すようにソースパケットが並ぶこととなり、多重化データの先頭からインクリメントする番号はSPN(ソースパケットナンバー)と呼ばれる。
また、多重化データに含まれるTSパケットには、映像・音声・字幕などの各ストリーム以外にもPAT(Program Association Table)、PMT(Program Map Table)、PCR(Program Clock Reference)などがある。PATは多重化データ中に利用されるPMTのPIDが何であるかを示し、PAT自身のPIDは0で登録される。PMTは、多重化データ中に含まれる映像・音声・字幕などの各ストリームのPIDと各PIDに対応するストリームの属性情報を持ち、また多重化データに関する各種ディスクリプタを持つ。ディスクリプタには多重化データのコピーを許可・不許可を指示するコピーコントロール情報などがある。PCRは、ATSの時間軸であるATC(Arrival Time Clock)とPTS・DTSの時間軸であるSTC(System Time Clock)の同期を取るために、そのPCRパケットがデコーダに転送されるATSに対応するSTC時間の情報を持つ。
図21はPMTのデータ構造を詳しく説明する図である。PMTの先頭には、そのPMTに含まれるデータの長さなどを記したPMTヘッダが配置される。その後ろには、多重化データに関するディスクリプタが複数配置される。上記コピーコントロール情報などが、ディスクリプタとして記載される。ディスクリプタの後には、多重化データに含まれる各ストリームに関するストリーム情報が複数配置される。ストリーム情報は、ストリームの圧縮コーデックなどを識別するためストリームタイプ、ストリームのPID、ストリームの属性情報(フレームレート、アスペクト比など)が記載されたストリームディスクリプタから構成される。ストリームディスクリプタは多重化データに存在するストリームの数だけ存在する。
記録媒体などに記録する場合には、上記多重化データは、多重化データ情報ファイルと共に記録される。
多重化データ情報ファイルは、図22に示すように多重化データの管理情報であり、多重化データと1対1に対応し、多重化データ情報、ストリーム属性情報とエントリマップから構成される。
多重化データ情報は図22に示すようにシステムレート、再生開始時刻、再生終了時刻から構成されている。システムレートは多重化データの、後述するシステムターゲットデコーダのPIDフィルタへの最大転送レートを示す。多重化データ中に含まれるATSの間隔はシステムレート以下になるように設定されている。再生開始時刻は多重化データの先頭のビデオフレームのPTSであり、再生終了時刻は多重化データの終端のビデオフレームのPTSに1フレーム分の再生間隔を足したものが設定される。
ストリーム属性情報は図23に示すように、多重化データに含まれる各ストリームについての属性情報が、PID毎に登録される。属性情報はビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックスストリーム毎に異なる情報を持つ。ビデオストリーム属性情報は、そのビデオストリームがどのような圧縮コーデックで圧縮されたか、ビデオストリームを構成する個々のピクチャデータの解像度がどれだけであるか、アスペクト比はどれだけであるか、フレームレートはどれだけであるかなどの情報を持つ。オーディオストリーム属性情報は、そのオーディオストリームがどのような圧縮コーデックで圧縮されたか、そのオーディオストリームに含まれるチャンネル数は何であるか、何の言語に対応するか、サンプリング周波数がどれだけであるかなどの情報を持つ。これらの情報は、プレーヤが再生する前のデコーダの初期化などに利用される。
本実施の形態においては、上記多重化データのうち、PMTに含まれるストリームタイプを利用する。また、記録媒体に多重化データが記録されている場合には、多重化データ情報に含まれる、ビデオストリーム属性情報を利用する。具体的には、上記各実施の形態で示した動画像符号化方法または装置において、PMTに含まれるストリームタイプ、または、ビデオストリーム属性情報に対し、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示す固有の情報を設定するステップまたは手段を設ける。この構成により、上記各実施の形態で示した動画像符号化方法または装置によって生成した映像データと、他の規格に準拠する映像データとを識別することが可能になる。
また、本実施の形態における動画像復号方法のステップを図24に示す。ステップexS100において、多重化データからPMTに含まれるストリームタイプ、または、多重化データ情報に含まれるビデオストリーム属性情報を取得する。次に、ステップexS101において、ストリームタイプ、または、ビデオストリーム属性情報が上記各実施の形態で示した動画像符号化方法または装置によって生成された多重化データであることを示しているか否かを判断する。そして、ストリームタイプ、または、ビデオストリーム属性情報が上記各実施の形態で示した動画像符号化方法または装置によって生成されたものであると判断された場合には、ステップexS102において、上記各実施の形態で示した動画像復号方法により復号を行う。また、ストリームタイプ、または、ビデオストリーム属性情報が、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠するものであることを示している場合には、ステップexS103において、従来の規格に準拠した動画像復号方法により復号を行う。
このように、ストリームタイプ、または、ビデオストリーム属性情報に新たな固有値を設定することにより、復号する際に、上記各実施の形態で示した動画像復号方法または装置で復号可能であるかを判断することができる。従って、異なる規格に準拠する多重化データが入力された場合であっても、適切な復号方法または装置を選択することができるため、エラーを生じることなく復号することが可能となる。また、本実施の形態で示した動画像符号化方法または装置、または、動画像復号方法または装置を、上述したいずれの機器・システムに用いることも可能である。
(実施の形態4)
上記各実施の形態で示した動画像符号化方法および装置、動画像復号方法および装置は、典型的には集積回路であるLSIで実現される。一例として、図25に1チップ化されたLSIex500の構成を示す。LSIex500は、以下に説明する要素ex501、ex502、ex503、ex504、ex505、ex506、ex507、ex508、ex509を備え、各要素はバスex510を介して接続している。電源回路部ex505は電源がオン状態の場合に各部に対して電力を供給することで動作可能な状態に起動する。
例えば符号化処理を行う場合には、LSIex500は、CPUex502、メモリコントローラex503、ストリームコントローラex504、駆動周波数制御部ex512等を有する制御部ex501の制御に基づいて、AV I/Oex509によりマイクex117やカメラex113等からAV信号を入力する。入力されたAV信号は、一旦SDRAM等の外部のメモリex511に蓄積される。制御部ex501の制御に基づいて、蓄積したデータは処理量や処理速度に応じて適宜複数回に分けるなどされ信号処理部ex507に送られ、信号処理部ex507において音声信号の符号化および/または映像信号の符号化が行われる。ここで映像信号の符号化処理は上記各実施の形態で説明した符号化処理である。信号処理部ex507ではさらに、場合により符号化された音声データと符号化された映像データを多重化するなどの処理を行い、ストリームI/Oex506から外部に出力する。この出力された多重化データは、基地局ex107に向けて送信されたり、または記録メディアex215に書き込まれたりする。なお、多重化する際には同期するよう、一旦バッファex508にデータを蓄積するとよい。
なお、上記では、メモリex511がLSIex500の外部の構成として説明したが、LSIex500の内部に含まれる構成であってもよい。バッファex508も1つに限ったものではなく、複数のバッファを備えていてもよい。また、LSIex500は1チップ化されてもよいし、複数チップ化されてもよい。
また、上記では、制御部ex510が、CPUex502、メモリコントローラex503、ストリームコントローラex504、駆動周波数制御部ex512等を有するとしているが、制御部ex510の構成は、この構成に限らない。例えば、信号処理部ex507がさらにCPUを備える構成であってもよい。信号処理部ex507の内部にもCPUを設けることにより、処理速度をより向上させることが可能になる。また、他の例として、CPUex502が信号処理部ex507、または信号処理部ex507の一部である例えば音声信号処理部を備える構成であってもよい。このような場合には、制御部ex501は、信号処理部ex507、またはその一部を有するCPUex502を備える構成となる。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
(実施の形態5)
上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データを復号する場合、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データを復号する場合に比べ、処理量が増加することが考えられる。そのため、LSIex500において、従来の規格に準拠する映像データを復号する際のCPUex502の駆動周波数よりも高い駆動周波数に設定する必要がある。しかし、駆動周波数を高くすると、消費電力が高くなるという課題が生じる。
この課題を解決するために、テレビex300、LSIex500などの動画像復号装置は、映像データがどの規格に準拠するものであるかを識別し、規格に応じて駆動周波数を切替える構成とする。図26は、本実施の形態における構成ex800を示している。駆動周波数切替え部ex803は、映像データが、上記各実施の形態で示した動画像符号化方法または装置によって生成されたものである場合には、駆動周波数を高く設定する。そして、上記各実施の形態で示した動画像復号方法を実行する復号処理部ex801に対し、映像データを復号するよう指示する。一方、映像データが、従来の規格に準拠する映像データである場合には、映像データが、上記各実施の形態で示した動画像符号化方法または装置によって生成されたものである場合に比べ、駆動周波数を低く設定する。そして、従来の規格に準拠する復号処理部ex802に対し、映像データを復号するよう指示する。
より具体的には、駆動周波数切替え部ex803は、図25のCPUex502と駆動周波数制御部ex512から構成される。また、上記各実施の形態で示した動画像復号方法を実行する復号処理部ex801、および、従来の規格に準拠する復号処理部ex802は、図25の信号処理部ex507に該当する。CPUex502は、映像データがどの規格に準拠するものであるかを識別する。そして、CPUex502からの信号に基づいて、駆動周波数制御部ex512は、駆動周波数を設定する。また、CPUex502からの信号に基づいて、信号処理部ex507は、映像データの復号を行う。ここで、映像データの識別には、例えば、実施の形態3で記載した識別情報を利用することが考えられる。識別情報に関しては、実施の形態3で記載したものに限られず、映像データがどの規格に準拠するか識別できる情報であればよい。例えば、映像データがテレビに利用されるものであるか、ディスクに利用されるものであるかなどを識別する外部信号に基づいて、映像データがどの規格に準拠するものであるか識別可能である場合には、このような外部信号に基づいて識別してもよい。また、CPUex502における駆動周波数の選択は、例えば、図28のような映像データの規格と、駆動周波数とを対応付けたルックアップテーブルに基づいて行うことが考えられる。ルックアップテーブルを、バッファex508や、LSIの内部メモリに格納しておき、CPUex502がこのルックアップテーブルを参照することにより、駆動周波数を選択することが可能である。
図27は、本実施の形態の方法を実施するステップを示している。まず、ステップexS200では、信号処理部ex507において、多重化データから識別情報を取得する。次に、ステップexS201では、CPUex502において、識別情報に基づいて映像データが上記各実施の形態で示した符号化方法または装置によって生成されたものであるか否かを識別する。映像データが上記各実施の形態で示した符号化方法または装置によって生成されたものである場合には、ステップexS202において、駆動周波数を高く設定する信号を、CPUex502が駆動周波数制御部ex512に送る。そして、駆動周波数制御部ex512において、高い駆動周波数に設定される。一方、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合には、ステップexS203において、駆動周波数を低く設定する信号を、CPUex502が駆動周波数制御部ex512に送る。そして、駆動周波数制御部ex512において、映像データが上記各実施の形態で示した符号化方法または装置によって生成されたものである場合に比べ、低い駆動周波数に設定される。
さらに、駆動周波数の切替えに連動して、LSIex500またはLSIex500を含む装置に与える電圧を変更することにより、省電力効果をより高めることが可能である。例えば、駆動周波数を低く設定する場合には、これに伴い、駆動周波数を高く設定している場合に比べ、LSIex500またはLSIex500を含む装置に与える電圧を低く設定することが考えられる。
また、駆動周波数の設定方法は、復号する際の処理量が大きい場合に、駆動周波数を高く設定し、復号する際の処理量が小さい場合に、駆動周波数を低く設定すればよく、上述した設定方法に限らない。例えば、MPEG4−AVC規格に準拠する映像データを復号する処理量の方が、上記各実施の形態で示した動画像符号化方法または装置により生成された映像データを復号する処理量よりも大きい場合には、駆動周波数の設定を上述した場合の逆にすることが考えられる。
さらに、駆動周波数の設定方法は、駆動周波数を低くする構成に限らない。例えば、識別情報が、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示している場合には、LSIex500またはLSIex500を含む装置に与える電圧を高く設定し、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合には、LSIex500またはLSIex500を含む装置に与える電圧を低く設定することも考えられる。また、他の例としては、識別情報が、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示している場合には、CPUex502の駆動を停止させることなく、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合には、処理に余裕があるため、CPUex502の駆動を一時停止させることも考えられる。識別情報が、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示している場合であっても、処理に余裕があれば、CPUex502の駆動を一時停止させることも考えられる。この場合は、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合に比べて、停止時間を短く設定することが考えられる。
このように、映像データが準拠する規格に応じて、駆動周波数を切替えることにより、省電力化を図ることが可能になる。また、電池を用いてLSIex500またはLSIex500を含む装置を駆動している場合には、省電力化に伴い、電池の寿命を長くすることが可能である。
(実施の形態6)
テレビや、携帯電話など、上述した機器・システムには、異なる規格に準拠する複数の映像データが入力される場合がある。このように、異なる規格に準拠する複数の映像データが入力された場合にも復号できるようにするために、LSIex500の信号処理部ex507が複数の規格に対応している必要がある。しかし、それぞれの規格に対応する信号処理部ex507を個別に用いると、LSIex500の回路規模が大きくなり、また、コストが増加するという課題が生じる。
この課題を解決するために、上記各実施の形態で示した動画像復号方法を実行するための復号処理部と、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する復号処理部とを一部共有化する構成とする。この構成例を図29(a)のex900に示す。例えば、上記各実施の形態で示した動画像復号方法と、MPEG4−AVC規格に準拠する動画像復号方法とは、エントロピー符号化、逆量子化、デブロッキング・フィルタ、動き補償などの処理において処理内容が一部共通する。共通する処理内容については、MPEG4−AVC規格に対応する復号処理部ex902を共有し、MPEG4−AVC規格に対応しない、本発明特有の他の処理内容については、専用の復号処理部ex901を用いるという構成が考えられる。特に、本発明は、動き補償に特徴を有していることから、例えば、動き補償については専用の復号処理部ex901を用い、それ以外のエントロピー符号化、デブロッキング・フィルタ、逆量子化のいずれか、または、全ての処理については、復号処理部を共有することが考えられる。復号処理部の共有化に関しては、共通する処理内容については、上記各実施の形態で示した動画像復号方法を実行するための復号処理部を共有し、MPEG4−AVC規格に特有の処理内容については、専用の復号処理部を用いる構成であってもよい。
また、処理を一部共有化する他の例を図29(b)のex1000に示す。この例では、本発明に特有の処理内容に対応した専用の復号処理部ex1001と、他の従来規格に特有の処理内容に対応した専用の復号処理部ex1002と、本発明の動画像復号方法と他の従来規格の動画像復号方法とに共通する処理内容に対応した共用の復号処理部ex1003とを用いる構成としている。ここで、専用の復号処理部ex1001、ex1002は、必ずしも本発明、または、他の従来規格に特有の処理内容に特化したものではなく、他の汎用処理を実行できるものであってもよい。また、本実施の形態の構成を、LSIex500で実装することも可能である。
このように、本発明の動画像復号方法と、従来の規格の動画像復号方法とで共通する処理内容について、復号処理部を共有することにより、LSIの回路規模を小さくし、かつ、コストを低減することが可能である。