以下、本発明の実施形態について、図面を参照しながら説明する。
《実施形態1》
1.1 トランスコード装置の全体構成
図1に、本発明の実施形態1のトランスコード装置の構成を示す。本実施形態のトランスコード装置は、変換前と変換後の圧縮されたストリームを格納するための記憶装置101と、圧縮されたストリームをオーディオストリームとビデオストリームとに分割するシステムデコーダ102と、規格変換を行うトランスコーダ104と、一定期間オーディオストリームを保持するオーディオバッファ103と、オーディオストリームとビデオストリームとを多重化するシステムエンコーダ105と、を有する。
記憶装置101には、MPEG2規格で圧縮されたストリームと、MPEG2規格から変換されたH.264規格のストリームとが格納される。
システムデコーダ102は、記憶装置101からMPEG2規格で圧縮されたストリームを読み出して、読み出したストリームをオーディオストリームとビデオストリームとに分割する。オーディオストリームはオーディオバッファ103に出力され、ビデオストリームはトランスコーダ104に出力される。
トランスコーダ104は、システムエンコーダ102から取得したMPEG2規格のビデオストリームをH.264規格のビデオストリームに変更し、H.264規格のビデオストリームをシステムエンコーダ105に出力する。
オーディオバッファ103は、オーディオとビデオとの同期をとるために、オーディオストリームをある一定の期間遅延させてから、システムエンコーダ105に出力する。
システムエンコーダ105は、オーディオバッファ103から出力されたオーディオストリームとトランスコーダ104から出力されたH.264規格のビデオストリームとの同期をとりながら多重化を行い、多重化したストリームを記憶装置101に書き込む。
1.2 トランスコーダの内部構成
トランスコーダ104の内部構成を図2に示す。トランスコーダ104は、MPEG2規格のビデオストリームをデコードするために必要な、入力ストリームバッファ202、MPEG2デコーダ203、及び復号用フレームメモリ205と、H.264規格のビデオストリームにエンコードするために必要な、H.264エンコーダ206、符号化用フレームメモリ207、及び出力ストリームバッファ208とを有する。トランスコーダ104は、さらにMPEG2ストリームのマクロブロックに関する情報をH.264ストリームのマクロブロックに関する情報に変換する情報変換部204と、トランスコーダ104内を制御する制御用プロセッサ201とを有する。
入力ストリームバッファ202は、システムデコーダ102から入力されるMPEG2規格で圧縮されたストリームを一時蓄える。
MPEG2デコーダ203は、入力ストリームバッファ202からMPEG2ストリームを読出して、復号処理を行って、復号した復号画像を復号用フレームメモリ205に出力する。復号用フレームメモリ205は、MPEG2デコーダ203により復号された復号画像を記憶する。また、MPEG2デコーダ203は、復号した復号画像に含まれるマクロブロック(以下、MBとも言う。)に関する情報、具体的には、ヘッダ情報、マクロブロック情報及び動きベクトル情報を情報変換部204に出力する。マクロブロックや、ヘッダ情報、マクロブロック情報及び動きベクトル情報については詳細を後述する。
情報変換部204は、MPEG2のヘッダ情報、マクロブロック情報及び動きベクトル情報を、H.264規格のヘッダ情報、マクロブロック情報及び動きベクトル情報に変換して、H.264エンコーダ206に入力する。
H.264エンコーダ206は、情報変換部204から取得したH.264規格の、ヘッダ情報、マクロブロック情報及び動きベクトル情報に基づいて、復号用フレームメモリ205から読み出した復号画像をH.264規格に符号化する。H.264エンコーダ206は、符号化するときに、フレームメモリ205から読み出した復号画像をローカル復号画像として、符号化用フレームメモリ207に出力する。H.264エンコーダ206は、過去のピクチャを参照するPピクチャあるいはBピクチャの符号化を行う場合に、符号化用フレームメモリ207に格納したローカル復号画像を参照画像として読み込む。このように、符号化用フレームメモリ207は、ローカル復号画像を記憶し、記憶した画像を参照画像として、必要に応じてH.264エンコーダ206により読み出される。H.264エンコーダ206は、符号化済みのH.264ストリームを出力ストリームバッファ208に出力する。
出力ストリームバッファ208は、H.264エンコーダ206から入力されたH.264ストリームをシステムエンコーダ105に出力する。
制御用プロセッサ201は、MPEG2デコーダ203とH.264エンコーダ206と情報変換部204とが同期して動作するように制御する。
本実施形態は、情報変換部204により、変換前のストリームに関する、ヘッダ情報、マクロブロック情報及び動きベクトル情報を、変換後のヘッダ情報、マクロブロック情報及び動きベクトル情報に変換して、変換した各情報に基づいて、復号されたMPEG2のストリームをH.264のストリームに符号化している。すなわち、動き検出処理を行わずに、変換前の動きベクトル情報を変換後の動きベクトル情報に利用している。よって、変換後の画質が劣化することはない。以下、図3〜図5を用いて、MPEG2デコーダ203、情報変換部204、及びH.264エンコーダ206の内部構成について具体的に説明する。
1.3 MPEG2デコーダの内部構成
図3に、図2のMPEG2デコーダ203の内部構成を示す。MPEG2デコーダ203は、入力ストリームバッファ202から取り出したストリームを可変長で復号する可変長復号部301と、動きベクトル情報を算出する動きベクトル算出部302と、可変長復号部301と動きベクトル算出部302との出力に基づいて、MPEG2ストリームを復号するための、動き補償部305、逆量子化部303、逆周波数変換部304、及び再構成部306とを有する。
可変長復号部301は、入力ストリームバッファ202から取り出したMPEG2ストリームを可変長で復号して、復号したストリームから、ヘッダ情報、マクロブロック情報、及びDCT係数を得る。復号したストリームがイントラMBの場合は、復号したストリームから動きベクトル情報をさらに得る。ヘッダ情報とマクロブロック情報は、情報変換部204に出力される。DCT係数は、逆量子化部303に出力される。動きベクトル情報は、動きベクトル算出部302に出力される。
動きベクトル算出部302は、動きベクトル情報に含まれる動きベクトル値を、予測値を用いて実際の動きベクトル値に変換する。動きベクトル算出部302は、変換された動きベクトル値を含む動きベクトル情報を情報変換部204と動き補償部305とに出力する。
動き補償部305は、動きベクトル算出部302が算出した動きベクトル情報が指し示す参照画像を復号用フレームメモリ205から読み出す。動き補償部305は、読み出した参照画像に対してハーフペル演算を行う。また、復号する画像がBピクチャの場合は、2枚の参照画像の平均値算出処理を行う。動き補償部305は、演算処理を行った後の参照画像を再構成部306に出力する。
逆量子化部303は、取得したDCT係数を逆量子化して、逆周波数変換部304に出力する。逆周波数変換部304は、取得したDCT係数を逆周波数変換し、再構成部306に出力する。
再構成部306は、マクロブロックがイントラMBの場合、取得したデータをそのまま復号画像として復号用フレームメモリ205に出力する。再構成部306は、マクロブロックがインターMBの場合、動き補償部305から取得した参照画像に、逆周波数変換部304から取得したDCT計数を加算することによって、復号画像を生成し、復号用フレームメモリ205に出力する。
1.4 情報変換部の内部構成
図4に、図2の情報変換部204の内部構成を示す。情報変換部204は、MPEG2のヘッダ情報をH.264のヘッダ情報に変換するヘッダ情報変換部501と、MPEG2のマクロブロック情報をH.264のマクロブロック情報に変換するマクロブロック情報変換部502と、MPEG2の動きベクトルをH.264の動きベクトルに変換する動きベクトル変換部503とを有する。情報変換部204の変換の動作についての詳細は後述する。
1.5 H.264エンコーダの内部構成
図5に、図2のH.264エンコーダ206の内部構成を示す。H.264エンコーダ206は、符号化するマクロブロックがインターMBの場合に動作する動き補償部401と、符号化するマクロブロックがイントラMBの場合に動作するイントラ予測部402と、動き補償部401又はイントラ予測部402から出力されるデータを量子化及び周波数変換する量子化・周波数変換部403と、インターMB用のローカル復号画像を生成する再構成部405とを有する。
情報変換部204から出力されるH.264のヘッダ情報、H.264のマクロブロック情報、H.264の動きベクトル情報は、動き補償部401とイントラ予測部402と可変長符号化部406とに入力される。H.264のヘッダ情報とH.264のマクロブロック情報とにより、どの参照モードで符号化するかが指示される。また、動きベクトル情報が情報変換部204の出力から得られるため、本実施形態のH.264エンコーダ206は、動きベクトル情報を検出するための動き検出部を有しない。
インターMBへの符号化が指示されると、動き補償部401は、情報変換部204から入力されたH.264の動きベクトル情報に基づいて、符号化用フレームメモリ207から動きベクトル情報が指す位置のローカル復号画像を取得する。動き補償部401は、取得したローカル復号画像に対して、H.264規格で定められたフィルタ演算を行い、小数精度位置の参照画像を算出する。動き補償部401は、符号化用フレームメモリ207から読み出したローカル復号画像と算出した参照画像との差分データを量子化・周波数変換部403に出力すると共に、算出した参照画像を再構成部405に出力する。
イントラMBへの符号化が指示されると、イントラ予測部402は、復号用フレームメモリ205から復号画像を取得し、H.264規格で定義されるイントラ予測をする。すなわち、イントラ予測部402は、読み出した復号画像の予測方向を決定して予測画像を生成する。イントラ予測部402は、予測画像を再構成部405に出力し、予測画像と復号画像の差分データを量子化・周波数変換部403に出力する。
量子化・周波数変換部403は、動き補償部401又はイントラ予測部402から出力された差分データの量子化及び周波数変換を行う。
H.264エンコーダ206は、量子化・周波数変換部403から出力される差分データを入力する逆量子化・逆周波数変換部404と可変長符号化部406とをさらに有する。逆量子化・逆周波数変換部404は、量子化・周波数変換部403から出力された量子化及び周波数変換された差分データを逆量子化及び逆周波数変換して、再構成部405に出力する。
可変長符号化部406は、H.264規格のヘッダ情報とMB情報と動きベクトル情報とに基づいて、周波数変換された差分データを符号化し、出力ストリームバッファ208に出力する。出力ストリームバッファ208に出力された差分データがH.264のビデオストリームとなる。
再構成部405は、インターMBの場合に動き補償部401からの参照画像を入力され、イントラMBの場合にイントラ予測を行った際の予測画像を入力される。さらに、再構成部405は、逆量子化・逆周波数変換部404から逆量子化及び逆周波数変換された差分データを入力される。再構成部405は、参照画像又は予想画像と差分データとを加算し、元の画像の再構成を行う。
H.264エンコーダ206は、H.264規格に定められたデブロックフィルタの処理を行うデブロックフィルタ部407をさらに有する。再構成部405によって再構成された画像は、デブブロックフィルタ部407によりデブロックフィルタの処理が施された後、ローカル復号画像として符号化用フレームメモリ207に出力される。符号化用フレームメモリ207に入力されたローカル復号画像は、インターMBをエンコードする際に、動き補償部401により読み出される。
図1〜図5に示されるトランスコーダ104は、MPEG2のビデオストリームを、MPEG2のマクロブロックを単位として、H.264ビデオストリームに変換する。以下、マクロブロックについて説明する。
2.1 MPEG2のマクロブロックとH.264のマクロブロック
図6(a)と図6(b)に、MPEG2とH.264のマクロブロックの概略をそれぞれ示す。MPEG2とH.264とは、ビデオストリームの1画面分の画像データを複数のマクロブロックに分割し、マクロブロック毎に圧縮や動き補償を行っている。図6(a)及び図6(b)では、16ピクセル×16ピクセルのマクロブロックに分割される例を示している。本実施形態のトランスコーダ104は、MPEG2の16×16ピクセルの1つのマクロブロック又は上下に隣接した2つのマクロブロックを単位として、MPEG2のマクロブロックからH.264のマクロブロックに変換する。
MPEG2やH.264のマクロブロックには、種々の参照モードが存在する。そのため、本実施形態のトランスコーダ104は、MPEG2のマクロブロックの種々の参照モードに応じた変換方法で、H.264のマクロブロックに変換する。以下、MPEG2のマクロブロックの参照モードとH.264のマクロブロックの参照モードとについて説明する。
2.2. MPEG2とH.264のマクロブロックの参照モード
図7A〜図7Cに、MPEG2とH.264のマクロブロックの参照モードの一覧を示す。
図7Aに示すように、MPEG2は、フィールド単位で符号化するフィールド構造と、フレーム単位で符号化するフレーム構造とを有する。フレームとは1画面分を指し、1フレームは複数のフィールドで構成される。フィールド構造には、他の画像を参照して動き補償を行うインターMBと、他の画像を参照しないイントラMBとがある。他の画像を参照するインターMBは、他の画像からの動きを示す動きベクトル情報を持つ。インターMBは、さらに16×16ピクセル単位で参照を行う16×16参照と、16×8ピクセル単位で参照を行う16×8参照とがある。フレーム構造にも、インターMBとイントラMBとがある。インターMBは、さらにフレーム単位で参照を行うフレーム参照と、フィールド単位で参照を行うフィールド参照とに区別される。
図7Bに示すように、H.264は、フィールド単位で符号化するフィールド構造と、フレーム単位で符号化するフレーム構造とを有する。フィールド構造とフレーム構造には、他の画像を参照して動き補償を行うインターMBと、他の画像を参照しないイントラMBとを持つ。他の画像を参照するインターMBは、他の画像からの動きを示す動きベクトル情報を持つ。インターMBは、さらに、16×16ピクセル単位で参照を行う16×16参照、16×8ピクセル単位で参照を行う16×8参照、8×16ピクセル単位で参照を行う8×16参照、及び8×8ピクセル単位で参照を行う8×8参照などを含む。8×4参照、4×8参照、4×4参照は、本実施形態においては使用しない。
図7Cに示すように、H.264には、フレーム構造の一形態として、垂直方向に連続した2つのマクロブロックをマクロブロックペアとして扱うMBAFF(Macro Block Adaptive Frame Field)構造があり、マクロブロックペアは、フレーム単位で参照を行うフレームMBペアとフィールド単位で参照を行うフィールドMBペアに区別される。フレームMBペアとフィールドMBペアは、それぞれインターMBとイントラMBとを持つ。インターMBは、さらに、16×16参照、16×8参照、8×16参照、及び8×8参照などを含む。8×4参照、4×8参照、4×4参照は、本実施形態においては使用しない。
本実施形態においては、MPEG2のフィールド構造は、H.264のフィールド構造に変換され、MPEG2のフレーム構造は、H.264のMBAFF構造に変換される。本実施形態においては、図7Bに示すH.264のフレーム構造は使用しない。図7BのH.264のフレーム構造を除いて、MPEG2とH.264の参照モードの具体例を図8〜図17を用いて、以下に説明する。
2.3 フィールド構造
2.3.1 MPEG2
図8に、MPEG2フィールド構造の場合におけるマクロブロックの分類のタイプと、各分類のタイプに対応する参照モードとの詳細の一覧を示す。MPEG2のマクロブロックの種類は、図8に示すように、MPEG2規格で定義されている「field_motion_type」と「macroblock_motion_forward」と「macroblock_motion_backward」と「macroblock_intra」とによって分類される。
「field_motion_type」は、field−based、16×8MC、及びDualPrimeと呼ばれる3種類のタイプを含む。「macroblock_motion_forward」は、「1」と「0」とにより、前方参照をしているか否かを示している。「macroblock_motion_backward」は、「1」と「0」とにより、後方参照をしているか否かを示している。「macroblock_intra」は、「1」でイントラMBであることを示し、「0」でインターMBであることを示している。
「field_motion_type」と「macroblock_motion_forward」と「macroblock_motion_backward」と「macroblock_intra」とによって分類されたマクロブロックに対応する参照モードは、イントラMB、16×16参照、及び16×8参照の3つに大別される。なお、「field_motion_type」がDualPrimeの場合、参照モードはデュアルプライムに分類されるが、デュアルプライムについては、一般的に放送などで用いられるBピクチャを含むGOP構造のMPEG2ストリームでは用いられないので、対象外とする。
16×16参照、16×8参照及びイントラMBの具体例を図9(a)〜(c)にそれぞれ示す。
図9(a)に示す16×16参照は、1本又は2本の動きベクトルで、1枚又は2枚の参照画像を参照するモードである。具体的には、Pピクチャであれば1本、Bピクチャであれば2本の動きベクトルを用いる。
図9(b)に示す16×8参照は、1マクロブロックを上下の二つに分割し、2本又は4本の動きベクトルで1枚又は2枚の参照画像を参照するモードである。具体的には、Pピクチャであれば2本、Bピクチャであれば4本の動きベクトルを用いる。
図9(c)に示すイントラMBは、参照画像を参照しないモードである。MPEG2規格においては、マクロブロックの画素値がそのまま量子化・周波数変換・可変長符号化される。
図10に、16×16参照や16×8参照における参照の例を示す。図10において、ピクチャの番号を表示順で0から順番に振り、Iピクチャには「I」、Pピクチャには「P」、Bピクチャには「B」の接頭語を付けている。
例えば、トップフィールドのピクチャであるP6ピクチャは、過去のI0又はP1のピクチャを参照画像として参照する(前方参照)。ボトムフィールドのピクチャであるB3ピクチャは、過去のI0及びP1(前方参照)と未来のP6及びP7のピクチャ(後方参照)とを参照する。図10においては、Bピクチャが4フィールドの場合を示しているが、2フィールドや6フィールドあるいはそれ以上の場合であってもよい。PピクチャはBピクチャをまたがって参照するので、規格上決められているようにデュアルプライム予測は使用されない。
2.3.2 H.264
図11に、H.264フィールド構造の場合のマクロブロックの参照モードを示す。H.264においては、16×16参照から4×4参照まで様々な参照モードが存在するが、図11では8×8参照未満の大きさの参照モードについては省略している。
図11(a)に16×16参照を示す。16×16参照の場合、1本又は2本の動きベクトルで1枚又は2枚の参照画像を参照する。具体的には、Pピクチャであれば1本、Bピクチャであれば2本の動きベクトルを用いる。
図11(b)に16×8参照を示す。16×8参照の場合、1マクロブロックを上下に二つに分割し、1枚又は2枚の参照画像を2本又は4本の動きベクトルで参照する。具体的には、Pピクチャであれば2本、Bピクチャであれば4本の動きベクトルを用いる。
図11(c)に8×16参照を示す。8×16参照の場合、1マクロブロックを左右に二つに分割し、1枚又は2枚の参照画像を2本又は4本の動きベクトルで参照する。
図11(d)に8×8参照を示す。8×8参照の場合、1マクロブロックを上下左右に四つに分割し、1枚又は2枚の参照画像を4本又は8本の動きベクトルで参照する。
図11(e)にイントラMBを示す。イントラMBの場合、参照画像を参照せず、H.264規格においては、空間的に周辺に位置する画素の値から、16×16参照から4×4参照までの9つのモードのいずれかを用いて参照画像が生成される。
図12に、H.264フィールド構造の参照の例を示す。図12のH.264フィールド構造の参照関係は、図10に示すMPEG2フィールド構造の参照関係に対応させている。各ピクチャの記号(I,P,B)が示す意味は、図10と同じである。図12において、トップフィールドのピクチャであるP6ピクチャは、過去のI0又はP1のピクチャをそれぞれrefidx_L0=「0」又は「1」として参照する(L0参照)。ここで、「refidx_」は、H.264規格で定義されている参照である。「refidx_L0」が前方参照を意味し、「refidx_L1」が後方参照を意味する。ボトムフィールドのピクチャであるB3ピクチャは、過去のI0及びP1と未来のP6及びP7のピクチャを、それぞれrefidx_L0=「0」又は「1」(L0参照)、refidx_L1=「0」又は「1」(L1参照)として参照する。本実施形態において、図10に示すMPEG2フィールド構造の参照関係は、図12に示すH.264フィールド構造の参照となるように変換される。
2.4 フレーム構造
2.4.1 MPEG2
図13に、MPEG2フレーム構造の場合のマクロブロックの分類のタイプと、各分類のタイプに対応する参照モードとを示す。マクロブロックの種類は、フィールド構造と同様に、MPEG2規格で定義される「frame_motion_type」と「macroblock_motion_forward」と「macroblock_motion_backward」と「macroblock_intra」とによって分類される。
「frame_motion_type」は、Frame−basedとField−basedとDualPrimeとを含む。「macroblock_motion_forward」と「macroblock_motion_backward」と「macroblock_intra」は図8と同じである。
「frame_motion_type」と「macroblock_motion_forward」と「macroblock_motion_backward」と「macroblock_intra」とによって分類された各マクロブロックに対応する参照モードは、イントラMB、フレーム参照、フィールド参照の3つに大別される。なお、「frame_motion_type」がDualPrimeの場合は、参照モードはデュアルプライムに分類されるが、デュアルプライムについては、本実施形態において対象とするGOP(Group of Picture)構造には存在しないため、対象外とする。
図14(a)〜(c)に、フレーム参照、フィールド参照及びイントラMBの具体例をそれぞれ示す。
図14(a)に示すフレーム参照の場合、1枚又は2枚の参照画像を1本又は2本の動きベクトルで参照する。
図14(b)に示すフィールド参照の場合、1マクロブロックを、偶数ラインを含むトップフィールドと奇数ラインを含むボトムフィールドの二つに分割する。各フィールドは16×8サイズとなる。フィールド参照では、トップフィールドとボトムフィールドにそれぞれ有する1本又は2本の動きベクトルで、1枚又は2枚の参照画像を参照する。
図14(c)に示すイントラMBの場合、参照画像を参照しない。MPEG2規格においてはマクロブロックの画素値が、そのまま量子化・周波数変換・可変長符号化される。
図15に、フレーム参照とフィールド参照による、参照の例を示す。図15において、ピクチャの番号を表示順で0から順番に振り、Iピクチャには「I」、Pピクチャには「P」、Bピクチャには「B」の接頭語を付けている。P3ピクチャは、過去のI0のピクチャを参照する(前方参照)。B1ピクチャは、過去のI0のピクチャ(前方参照)と未来のP3のピクチャ(後方参照)とを参照する。図15においては、Bピクチャが2フレームを参照する場合を示しているが、1フレームや3フレーム、あるいはそれ以上のフレームを参照してもよい。PピクチャはBピクチャをまたがって参照するので、規格上決められているようにデュアルプライム予測は使用されない。
2.4.2 H.264
図16Aと図16Bに、H.264フレーム構造におけるMBAFF(Macro Block Adaptive Field Frame)構造のマクロブロックペアを示す。
図16Aは、フレームMBペアを示している。この場合は16×32のブロックを空間的に垂直方向に2つの16×16のマクロブロックに分割し、それぞれがフレーム構造を持つマクロブロックとして扱う。図16Aにおいて、(a)は上側のマクロブロックと下側のマクロブロックの両方が16×16参照であり、(b)は上側のマクロブロックが16×16参照で下側がイントラMBであり、(c)は上側のマクロブロックがイントラMBであり下側のマクロブロックが16×16参照であり、(d)は上下のマクロブロックがイントラMBである。
図16Bは、フィールドMBペアを示している。この場合は16×32の大きさのブロックを偶数ラインを含むトップフィールドと奇数ラインを含むボトムフィールドの2つの16×16のマクロブロックに分割し、それぞれがフィールド構造を持つマクロブロックとして扱う。
フレームMBペアとフィールドMBペアにそれぞれ含まれる各マクロブロックの参照モードは、図11のフィールド構造と同じように、16×16参照から4×4参照又はイントラMBを使用することが可能である。本実施形態のMPEG2からH.264への変換においては、後述するように16×16参照、16×8参照、及びイントラMBが用いられる。
図17に、H.264フレーム構造の参照の例を示す。図17は、図15に示すMPEG2フレーム構造の参照関係に対応させている。各ピクチャの記号が示す意味は、図15と同じである。P3ピクチャは、過去のI0ピクチャをrefidx_L0=0又は1として参照する(L0参照)。B1ピクチャは、過去のI0と未来のP3のピクチャを、それぞれrefidx_L0=0又は1(L0参照)、refidx_L1=0又は1(L1参照)として参照する。具体的には、参照先がフレームMBペアの場合はrefidx_L0=0とrefidx_L1=0を使用する。参照先がフィールドMBペアのトップフィールドであるときは、refidx_L0=0とrefidx_L1=0を使用する。参照先がボトムフィールドを参照するときは、refidx_L0=1とrefidx_L1=1を使用する。図15に示すMPEG2フレーム構造の参照関係は、図17に示すH.264フレーム構造の参照関係に変換される。
図6〜図17に示したように、MPEG2とH.264には、参照画像を参照するインターMBと、参照画像を参照しないイントラMBとを有する。よって、図3に示すMPEG2デコーダ203と図5に示すH.264エンコーダ206は、イントラMBかインターMBかによって異なる動作をする。
3.1 MPEG2のデコーダの動作
図3のMPEG2デコーダ203の動作を、イントラMBとインターMBとの場合に分けてそれぞれ説明する。
可変長復号部301に入力されたMPEG2ストリームがイントラMBの場合、可変長復号されたヘッダ情報とマクロブロック情報は、情報変換部204に出力され、DCT係数は逆量子化部303に出力される。逆量子化部303は、取得したDCT係数を逆量子化し、逆周波数変換部304に出力する。逆周波数変換部304は、取得した係数を逆周波数変換し、再構成部306に出力する。再構成部306は、取得したデータをそのまま復号画像として復号用フレームメモリ205に出力する。
可変長復号部301に入力されたストリームがPピクチャ又はBピクチャのインターMBの場合、可変長復号されたデータのうち、ヘッダ情報とマクロブロック情報は情報変換部204に出力される。可変長復号されたデータのうち、動きベクトル情報に含まれる動きベクトル値は、動きベクトル算出部302において、予測値を用いて実際の動きベクトル値に変換される。その後、動きベクトル情報は、情報変換部204及び動き補償部305に出力される。また、可変長復号されたDCT係数は、逆量子化部303で逆量子化され、逆周波数変換部304で逆周波数変換される。一方、動き補償部305は、動きベクトル算出部302が算出した動きベクトル情報が指し示す参照画像を復号用フレームメモリ205から読み出し、ハーフペル演算やBピクチャにおける2枚の参照画像の平均値算出処理を行った後に、再構成部306に参照画像を出力する。再構成部306は、逆周波数変換部304から取得したデータと動き補償部305から取得した参照画像とを加算することによって得た復号画像を復号用フレームメモリ205に出力する。
3.2 H.264エンコーダの動作
図5のH.264エンコーダ206の動作を、イントラMBとインターMBとの場合に分けてそれぞれ説明する。
情報変換部204により、H.264のヘッダ情報とH.264のマクロブロック情報とを用いてイントラMBでのエンコードが指示された場合、まず、イントラ予測部402は、復号用フレームメモリ205から復号画像を取得し、H.264規格で定義されるイントラ予測をする。次に、イントラ予測部402は、予測方向を決定すると共に予測画像を再構成部405に出力し、予測画像と復号画像の差分データを量子化・周波数変換部403に出力する。量子化・周波数変換部403は、量子化及び周波数変換の処理を行い、可変長符号化部406に周波数変換された差分データを出力する。可変長符号化部406は、周波数変換された差分信号を符号化し、出力ストリームバッファ208に出力する。
一方、量子化・周波数変換部403において量子化及び周波数変換されたデータは、逆量子化・逆周波数変換部404で逆量子化及び逆周波数変換され、再構成部405に出力される。再構成部405は、イントラ予測を行った際の予測画像と逆量子化及び逆周波数変換された差分画像を加算し、元の画像の再構成を行い、デブロックフィルタ部407に出力する。デブロックフィルタ部407は、再構成された元の画像に対して、H.264規格に定められたデブロックフィルタの処理を行う。デブロックフィルタの処理が施された画像は、ローカル復号画像として、符号化用フレームメモリ207に出力される。
情報変換部204により、H.264のヘッダ情報とH.264のマクロブロック情報とを用いてインターMBでエンコードが指示された場合、例えば、インターMBの16×16参照が指示された場合、動き補償部401は、情報変換部204から指示された16×16参照及びH.264の動きベクトル情報を用いて、符号化用フレームメモリ207から動きベクトル情報が指す位置の画像データを取得し、H.264規格で定められたフィルタ演算を行い、小数精度位置の参照画像を算出する。
動き補償部401、さらに、算出した参照画像と復号画像の差分データを量子化・周波数変換部403に出力すると共に、参照画像を再構成部405に出力する。量子化・周波数変換部403は、量子化及び周波数変換の処理を行い、可変長符号化部406に周波数変換された差分信号を出力する。可変長符号化部406は、周波数変換された差分信号を符号化し、出力ストリームバッファ208に出力する。
一方、量子化・周波数変換部403において量子化及び周波数変換されたデータは、逆量子化・逆周波数変換部404で逆量子化及び逆周波数変換され、再構成部405に出力される。再構成部405は、動き補償を行った際の参照画像と逆量子化及び逆周波数変換された差分画像を加算し、元の画像の再構成を行い、デブロックフィルタ部407に出力する。デブロックフィルタ部407は、H.264規格に定められたデブロックフィルタの処理を行う。デブロックフィルタの処理が行われた画像は、ローカル復号画像として、符号化用フレームメモリ207に出力される。
情報変換部204が、H.264エンコーダ206に対して、16×8参照など、他のサイズでのエンコードを指示した場合も、16×16参照のときと同様に処理される。
MPEG2規格からH.264規格への変換は、上述したように、MPEG2デコーダ203により復号されたMPEG2規格の画像が、H.264エンコーダ206によってH.264規格に符号化されることによって行われる。この符号化は、画像のヘッダ情報、マクロブロック情報及び動きベクトル情報が、MPEG2規格からH.264規格に変更されることに基づいて、実行される。情報変換部204によるMPEG2からH.264への、ヘッダ情報、マクロブロック情報、及び動きベクトル情報の変換の詳細について以下に説明する。
4. 情報変換部の動作(MPEG2からH.264への変換)
4.1 MPEG2とH.264のヘッダ情報、マクロブロック情報及び動きベクトル情報
MPEG2デコーダ203から情報変換部204に出力されるMPEG2のヘッダ情報は、ピクチャ構造に関する情報である。ピクチャ構造に関する情報は、MPEG2規格で定義されるピクチャヘッダのうち、フィールド構造かフレーム構造かを示す。この情報は、MPEG2規格において「picture_structure」で指定される。マクロブロック情報は、MPEG2規格で定義される、マクロブロック単位に付加される情報であり、マクロブロックの分割方法(分割サイズ)及び参照モードを示す。特に、MPEG2規格で定義される情報のうち、「macroblock_type」、「frame_motion_type」及び「field_motion_type」で指定される情報を指す。動きベクトル情報は、どの参照画像を参照しているかを示す参照情報と、参照位置を示す動きベクトル値とを含む。
また、情報変換部204からH.264エンコーダ206に出力されるH.264ヘッダ情報は、H.264規格で定義されるピクチャヘッダのうち、フィールド構造かフレーム構造かを示す情報を指す。このヘッダ情報は、H.264規格において「field_pic_flag」及び「mb_adaptive_frame_field_flag」により指定される。H.264マクロブロック情報は、H.264規格で定義される、マクロブロック単位に付加される情報である。本実施形態においては、H.264で定義される情報のうち、マクロブロックの分割方法及び参照モードを示す情報及びフレームMBペアとフィールドMBペアのいずれを使用するかを決める情報である。マクロブロック情報は、H.264規格においてそれぞれ「mb_type」「mb_field_decoding_flag」により指定される。H.264動きベクトル情報は、どの参照画像を参照しているかを示す「refidx」情報と参照位置を示す動きベクトル値とを含む。
4.2 ヘッダ情報の変換
情報変換部204のヘッダ情報変換部501は、図18に示すフローチャートに従って、MPEG2のヘッダ情報をH.264のヘッダ情報に変換する。ヘッダ情報変換部501は、MPEG2のヘッダ情報に基づいて、MPEG2のピクチャ構造がフィールド構造かどうかを判断する(S181)。
MPEG2のピクチャ構造がフィールド構造であれば(S181でYes)、H.264のピクチャ構造をフィールド構造に設定する(S182)。すなわち、H.264規格において、「field_pic_flag=1」に設定する。重み予測をデフォルトモードに設定する(S183)。すなわち、すなわち、H.264規格において、「weighted_pred_flag=0」「weighted_bipred_idc=0」に設定する。
MPEG2のピクチャ構造がフィールド構造でなければ(S181でNo)、すなわちフレーム構造であれば、H.264のピクチャ構造をH.264のフレーム構造のMBAFF構造に設定する(S184)。すなわち、H.264規格において、「field_pic_flag=0」と「mb_adaptive_frame_field_flag=1」に設定する。重み予測をデフォルトモードに設定する(S185)。すなわち、H.264規格において、「weighted_pred_flag=0」及び「weighted_bipred_idc=0」に設定する。
以上のように各値を設定することにより、MPEG2のヘッダ情報からH.264のヘッダ情報に書き換えられる。
マクロブロック情報と動きベクトル情報の変換については、MPEG2がフィールド構造かフレーム構造かによって異なるため、フィールド構造の場合とフレーム構造の場合とに分けて以下に説明する。
4.3 フィールド構造の場合
MPEG2のマクロブロックがフィールド構造の場合における、マクロブロック情報変換部502及び動きベクトル情報変換部503の変換動作を説明する。
4.3.1 マクロブロック情報の変換
図19に、マクロブロック情報変換部502によるマクロブロック情報の変換を示す。図19(a)はMPEG2の参照モードからH.264の参照モードに変換する場合の、MPEG2の参照モードとH.264の参照モードとの対応関係を表で示したものであり、各変換の具体例を図19(b)〜(d)に示す。図19(b)は16×16参照、図19(c)は16×8参照、図19(c)はイントラMBの場合における変換をそれぞれ示している。
フィールド構造の場合、MPEG2のマクロブロックの分割方法と同一の分割方法がH.264に存在し、MPEG2とH.264は、いずれも、16ピクセル×16ピクセルのマクロブロックに分割されうる。よって、MPEG2の16×16のマクロブロックは、H.264の16×16のマクロブロックに変換される。
また、MPEG2のマクロブロックの参照モードと同一の参照モードがH.264に存在する。図19(a)〜(d)に示すようによって、MPEG2の16×16参照は、H.264の16×16参照に変換し、MPEG2の16×8参照は、H.264の16×8参照に変換し、MPEG2のイントラMBは、H.264のイントラMBに変換する。
このように変換した結果をマクロブロック情報に反映させることによって、MPEG2のマクロブロック情報からH.264のマクロブロック情報に変更する。
4.3.2 動きベクトル情報の変換
動きベクトル情報には、どの参照画像を参照しているかを示す参照情報と、参照位置を示す動きベクトル値とが含まれるが、上述したようにMPEG2の参照モードは、H.264の同一の参照モードに変換されるため、MPEG2の動きベクトル値をそのまま利用することができる。従って、動きベクトル値については、変換不要である。
参照情報については、H.264規格に変換する必要がある。図20に、動きベクトル情報変換部503における参照情報の変換動作を示す。動きベクトル情報変換部503は、MPEG2の参照元の画像と参照先の画像が同じフィールドであるか否かを判断する(S201)。具体的には、参照元の画像と参照先の画像が共にトップフィールド又はボトムフィールドであるか否かを判断する。同じフィールドである場合、H.264では「refidx_L0=0」又は「refidx_L1=0」となるピクチャを参照画像として選択するように参照情報を設定する(S202)。異なるフィールドである場合、例えば参照元の画像がトップフィールドで参照先の画像がボトムフィールドである場合、「refidx_L0=1」又は「refidx_L1=1」を参照情報として選択する(S203)。このように、MPEG2での参照画像と、H.264の参照画像とが同じになるように、参照情報を設定する。
以上のように、変換不要のMPEG2の動きベクトル値と、変換した参照情報とにより、H.264の動きベクトル情報を生成する。
4.4. フレーム構造の場合
MPEG2のマクロブロックがフレーム構造の場合における、マクロブロック情報変換部502及び動きベクトル情報変換部503の変換動作を説明する。
図7Bに示すように、フレーム構造の場合、MPEG2とH.264とでは分割サイズや参照モードが異なる。具体的には、図14(b)と図16Bとを比較すると分かるように、MPEG2の16×16サイズのフィールド参照と同一サイズの参照モードがH.264規格には存在しない。図14(b)に示すように、MPEG2のフレーム構造のフィールド参照の場合、16×8のトップフィールドと、16×8のボトムフィールドとに分けてそれぞれ符号化できる。しかし、H.264には、16×8のトップフィールドと16×8のボトムフィールドに分けて符号化できるような、フィールド参照が存在しない。H.264では、図16Bに示すように、MBAFF構造のフィールドMBペア(32×16)を使用することによって、16×16のトップフィールドと16×16のボトムフィールドに分けて符号化できるようにしている。このように、フレーム構造の場合、MPEG2と同一サイズの同一の参照モードがH.264に存在しない場合があるため、MPEG2からH.264への変換は、フィールド構造の場合と比較して複雑になる。
4.4.1 マクロブロック情報と動きベクトル情報の動きベクトル値の変換
図21に、フレーム構造の場合における、MPEG2からH.264への参照モードの変換の一覧を示す。H.264ではMBAFF構造を採用しているため、MPEG2からH.264への変換は、MPEG2の上下に隣接された2つのマクロブロックを単位として行う。図21における(注1)は、後述の図23(a)に示すように、動きベクトルをコピーして、MPEG2フレーム参照をH.264規格の16×8参照に変換することを意味している。また、図21の(注2)は、後述の図23(c)に示すように、「refidx=1」を指定して、MPEG2のイントラ予測をH.264の16×8参照に変換することを意味している。図21の一覧表に対応する具体的な変換方法を図22及び図23に示す。
図22に、MPEG2の上下のマクロブロックが同一の参照モードである場合を示す。図22(a)は、MPEG2の上下のマクロブロックがフレーム参照である場合を示している。この場合、H.264の上下のマクロブロックとして、それぞれ16×16参照のマクロブロックが選択される。よって、動きベクトル値はそのまま利用できる。
図22(b)は、MPEG2の上下のマクロブロックがフィールド参照である場合を示している。この場合、MPEG2の上側マクロブロックの偶数ラインのトップフィールドとMPEG2の下側マクロブロックの偶数ラインのトップフィールドが、H.264の16×16のトップフィールドに変換される。また、MPEG2の上側マクロブロックの奇数ラインのボトムフィールドとMPEG2の下側マクロブロックの奇数ラインのボトムフィールドとによって、H.264の16×16のボトムフィールドに変換される。すなわち、トップフィールドとボトムフィールドにおいて、それぞれ16×8参照が選択される。動きベクトル値は、元のMPEG2の動きベクトル値がそのまま利用できる。
図22(c)は、MPEG2の上下のマクロブロックがイントラMBである場合を示している。この場合、H.264の上下のマクロブロックとして、それぞれイントラMBが選択される。
図23に、MPEG2の上下のマクロブロックが異なる参照モードである場合を示す。図23(a)は、MPEG2の上側のマクロブロックがフレーム参照で、下側のマクロブロックがフィールド参照の場合を示している。この場合、フィールド毎に分けようとすると、H.264では16×8のフレーム参照と16×8のトップフィールドとの組み合わせ、及び16×8のフレーム参照と16×8のボトムフィールドとの組み合わせになるが、H.264規格においては、16×8のトップフィールド又はボトムフィールドは存在しない。そのため、まず、MPEG2のフレーム参照のマクロブロックを、トップフィールドとボトムフィールドにまったく同一の動きベクトル値を持つフィールド参照に変換する。すなわち、フレーム参照の動きベクトル値をそのままトップフィールドとボトムフィールドの動きベクトル値に換算する。このように変換を行うと、図22(b)と同じように、上下共にフィールド参照のマクロブロックとなる。よって、H.264のフィールドMPペアの16×8参照に変換できる。具体的には、MPEG2の上下のマクロブロックのそれぞれの16×8のトップフィールドをH.264のトップフィールドに変換する。また、MPEG2の上下のマクロブロックのそれぞれの16×8のボトムフィールドをH.264のボトムフィールドに変換する。
なお、MPEG2の上側のマクロブロックがフィールド参照で下側のマクロブロックがフレーム参照の場合も同様に、フレーム参照をフィールド参照に変換することによって、H.264のトップフィールドとボトムフィールドに変換することができる。
図23(b)は、MPEG2の上側のマクロブロックがフレーム参照で、下側のマクロブロックがイントラMBの場合を示している。この場合、H.264においては、上側のマクロブロックが16×16参照で、下側のマクロブロックがイントラMBとなるように変換する。この場合、フレーム参照の動きベクトル値をそのまま利用できる。なお、上側マクロブロックがイントラMBで下側マクロブロックがフレーム参照の場合も同様である。
図23(c)は、MPEG2の上側のマクロブロックがフィールド参照で、下側のマクロブロックがイントラMBの場合を示している。上述したように、MPEG2のフィールド参照では16×8のサイズでそれぞれトップフィールドとボトムフィールドに分けることができるが、H.264規格においては、16×8のサイズのトップフィールドとボトムフィールドは存在しない。よって、16×8のトップフィールド又はボトムフィールドと16×8のイントラMBとの組み合わせでマクロブロックを構成することはできない。そこで、まず、動き検出を行わずに、MPEG2のイントラMBに動きベクトルを付加することにより、イントラMBをインターMBのフィールド参照に変換する。このときの動きベクトルは任意の値でよい。例えば、0MVであっても良いし、pMV(動きベクトル予測値)であっても良い。pMVと等しい動きベクトルを持つインターMBにすると、符号量を最も小さくすることができる。
動き検出を行わずにインターMBに変換すると、変換後のインターMBの16×8ブロックの符号量は大きくなり、ビットレートが増大する可能性がある。しかし、規格上の問題はない。イントラMBをインターMBのフィールド参照に変換することによって、MPEG2の上下のマクロブロックがフィールド参照となる。よって、図22(b)と同様に、H.264のトップフィールドとボトムフィールドに変換できる。上側マクロブロックがイントラMBで下側マクロブロックがフィールド参照の場合も同様に考えることができる。
4.4.2 動きベクトル情報の参照情報の変換
図24に、動きベクトル情報変換部503による動きベクトル情報の参照情報の変換方法を示す。動きベクトル情報変換部503は、H.264においてフレームMBペアに変換されたかどうかを判断する(S241)。フレームMBペアに変換された場合は、「refidx_L0=0」又は「refidx_L1=0」となるピクチャを参照画像として選択するように、参照情報を設定する(S244)。フレームMBペアに変換されなかった場合、すなわち、フィールドMBペアに変換された場合は、参照先の画像である参照画像がトップフィールドか否かを判断する(S242)。トップフィールドである場合は、参照情報を「refidx_L0=0」又は「refidx_L1=0」に設定する(S244)。トップフィールドでない場合、すなわち、ボトムフィールドである場合は、参照情報を「refidx_L0=1」又は「refidx_L1=1」に設定する(S243)。以上の処理によって、参照情報の変換を終了する。
以上のように、本実施形態によれば、MPEG2のフィールド構造とフレーム構造のそれぞれにおいて、MPEG2ストリームのマクロブロックに対するヘッダ情報、マクロブロック情報、及び動きベクトル情報の全てを、マクロブロックの分割方法や参照モードに応じて、H.264のヘッダ情報、マクロブロック情報、及び動きベクトル情報に変換している。すなわち、変換前の動きベクトル情報に含まれる動きベクトル値を、そのまま変換後の動きベクトル値に利用している。よって、変換後のH.264規格において、画質が劣化することはない。また、変換前の動きベクトル値をそのまま利用できるため、演算量が大きい動き検出処理を行わなくて良い。よって、回路規模を削減でき、低コストを実現できる。
また、フレーム構造のように、MPEG2とH.264とで同一の参照モードが存在しない場合、MPEG2の上下のマクロブロックの一方だけがフィールド参照のときに、そのままでは、MPEG2からH.264に変換することができない。しかし、本実施形態によれば、フィールド参照とフレーム参照との組み合わせ、又はフィールド参照とイントラMBの組み合わせのときに、フレーム参照やイントラMBをフィールド参照に変換している。そのため、上下のマクロブロックのいずれか一方のみがフィールド参照であっても、MPEG2からH.264に変換することができる。フレーム参照をフィールド参照に変換するときには、フレーム参照の動きベクトル値を利用しているため、動き検出を行う必要はなく、回路規模を削減できる。また、インターMBをフィールド参照に変換するときも動き検出を行っていないため、回路規模を削減できる。
5. 変形例
なお、本実施形態では、参照画像は、前方参照の場合に「refidx_L0=0」又は「refidx_L0=1」を使用するとしているが、これらに限定されるものではない。同様に、後方参照の場合も「refidx_L1=0」又は「refidx_L1=1」に限定されるものではない。H.264規格で規定される範囲において、必要に応じて自由な値を使用してもよい。
なお、H.264エンコーダ206は可変長符号化部406を備えて可変長符号化を行ったが、可変長符号化の代わりに、H.264規格で規定される算術符号化を用いてもよい。
なお、トランスコーダ104の構成において、トランスコーダ104内の全てをソフトウェアで構成しても良いし、全てハードウェアで構成しても構わない。また、トランスコーダ104内の構成のうち、ソフトウェアで構成する部分は限定しない。
本実施形態では、図1の記憶装置101からMPEG2ストリーム読み出して、トランスコードを行い、H.264ストリームを記憶装置101に書き込む構成を示したが、放送などの通信路からMPEG2ストリームを取得して、トランスコードを行ってもよい。H.264ストリームを、記憶装置101に書き込むのではなく、LAN(ローカルエリアネットワーク)に送出してもよい。
《実施形態2》
図2のトランスコーダ104内のH.264エンコーダ206の別の例について説明する。実施形態1のH.264エンコーダ206は、動き検出を行わなかったが、本実施形態のH.264エンコーダは、画素の精度を向上させるために、動きベクトル情報が指す位置の近傍のみ、動き検出を行う。
図25に、本実施形態のH.264エンコーダ250の構成を示す。本実施形態のH.264エンコーダ250は、動き検出部251を有することと、実施形態1と動きが異なる動き補償部252を有することが、実施形態1のH.264エンコーダ206と異なる。本実施形態のH.264エンコーダ250において、実施形態1のH.264エンコーダ206と同一の動作をする構成要素には同じ符号を付し、その説明を省略する。動き検出部251及び動き補償部252について以下に説明する。
動き検出部251は、情報変換部204からヘッダ情報、マクロブロック情報及び動きベクトル情報を受け取る。動き検出部251は、情報変換部204からインターMBでのエンコードを指示された場合、例えば16×16参照を指示された場合、符号化用フレームメモリ207から動きベクトル情報が指す参照画像を選択すると共に、動きベクトル情報が指す位置の周辺の画像データを取得する。また、同時に復号用フレームメモリ205から読み出した復号画像と、最も相関の高い位置を計算する。相関の大小は、SAD(Sum of Absolute Difference)が最も小さくなる位置である。計算した結果に基づくマクロブロック情報及び動きベクトル情報を動き補償部252に出力する。
動き補償部252は、動き検出部251から受け取ったマクロブロック情報及び動きベクトル情報に基づいて、符号化用フレームメモリ207から動きベクトル情報が指す位置の画像データを取得して、H.264規格で定められたフィルタ演算を行い、小数精度位置の参照画像を算出する。さらに、動き補償部252は、この参照画像と、復号用フレームメモリ205から読み出した復号画像の差分データを量子化・周波数変換部403に出力すると共に、得られた参照画像を再構成部405に出力する。
動き検出部251と動き補償部252による処理は、情報変換部204がH.264エンコーダ250に対してインターMBでのエンコードを指示した場合に行われる。情報変換部204が16×8参照など、他の参照モードを指定した場合の動作も同様である。なお、情報変換部204が、H.264エンコーダ250に対してイントラMBでのエンコードを指示した場合の動作は、実施形態1の図4と同じである。
MPEG2では0.5画素精度の動きベクトル情報までしかないため、その動きベクトル情報を流用するだけでは、H.264でも0.5画素精度までしか利用できない。すなわち、実施形態1においては、H.264でも0.5画素精度となる。しかし、実施形態2では、動き検出部251によりMPEG2での動きベクトル情報が指す位置の近傍のみを探索することにより、H.264規格で用いられる0.25画素の動きベクトル情報を利用できるようになる。よって、精度のよい動き検出の初期探索位置を設定できる。また、実施形態1と同様に、動きベクトル情報を利用しているため、広い範囲の動き検出を行う必要はない。よって、回路規模を小さく、低コストを実現することができる。
また、0.5画素精度を算出する場合、MPEG2では2タップフィルタで行い、H.264では6タップフィルタで行われる。よって、MPEG2において最適な動きベクトルであっても、H.264では最適ではない場合が存在する。しかし、本実施形態のように動き検出を行うことにより、最適な動きベクトルを算出できるようになる。
なお、本実施形態では、動き検出部251と動き補償部252とを分けて設けたが、動き検出部251が動き補償部252の機能を含んでもよい。
《実施形態3》
1. トランスコーダの構成
図1のトランスコーダ104の別の例について説明する。実施形態1のトランスコーダ104は、MPEG2の画像を復号して差分画像から元の画像に戻した後にH.264で符号化しなおしたが、本実施形態のトランスコーダ104は、復号及び符号化の演算処理を削減するために、MPEG2の画像を元の画像に戻さない状態で差分画像のままH.264に変換する。
図26に、本実施形態のトランスコーダ104の内部構成を示す。図26において、実施形態1と同じ動作をする構成要素には同じ符号を付し、その説明は省略する。実施形態1のトランスコーダ104は、復号用フレームメモリ205と符号化用フレームメモリ207を有していたが、本実施形態のトランスコーダ104は、復号用フレームメモリ205と符号化用フレームメモリ207の代わりに、差分値メモリ261を有する。差分値メモリ261には、MPEG2デコーダ203によって可変長復号、逆量子化、逆周波数変換された後の差分データが格納される。また、H.264エンコーダ263によって、差分値メモリ261に格納された差分データが読み出される。また、本実施形態のMPEG2デコーダ262とH.264エンコーダ263は、実施形態1のMPEG2デコーダ203とH.264エンコーダ206と異なる内部構成を有する。MPEG2デコーダ262とH.264エンコーダ263の内部構成については後述する。
本実施形態のトランスコーダ104の動作について説明する。MPEG2デコーダ262は入力ストリームバッファ202からストリームを読み出して、復号処理を行う。MPEG2デコーダ262によって可変長復号、逆量子化、逆周波数変換された後の差分データは差分値メモリ261に格納される。同時にMPEG2デコーダ262は各マクロブロックのマクロブロック情報、動きベクトル情報及びヘッダ情報を情報変換部204に出力する。
情報変換部204は、MPEG2のマクロブロック情報、動きベクトル情報及びヘッダ情報から、H.264規格のマクロブロック情報、動きベクトル情報及びヘッダ情報に変換し、H.264エンコーダ263に入力する。この変換動作の詳細は後述する。
H.264エンコーダ263は差分値メモリ261から、可変長復号、逆量子化、逆周波数変換された後の差分データを読み出し、H.264規格でエンコードを行い、符号化済みのH.264ストリームを出力ストリームバッファ208に出力する。出力ストリームバッファ208は、ストリームをシステムエンコーダ105に出力する。
1.1 MPEG2デコーダの内部構成
図27に、図26のMPEG2デコーダ262の内部構成を示す。本実施形態のMPEG2デコーダの内部構成は、実施形態1のMPEG2デコーダ203と対比すると、動き補償部305と再構成部306とを有しない。その他の構成は、実施形態1のMPEG2デコーダ203と同じである。本実施形態のMPEG2デコーダ262の動作について説明する。
イントラMBの場合、ヘッダ情報と、可変長復号されたマクロブロック情報は情報変換部204に出力される。可変長復号されたDCT係数は、逆量子化部303で逆量子化され、逆周波数変換部304で、逆周波数変換され、差分値メモリ261に出力される。MPEG2の場合、イントラMBでは、予測画像が存在しないので、差分値メモリ261に出力される値は画素データそのものである。
一方、PピクチャおよびBピクチャのインターMBの場合、ヘッダ情報と、可変長復号されたデータのうち、マクロブロック情報は情報変換部204に出力される。動きベクトル情報の動きベクトル値は、動きベクトル算出部302において、予測値を用いて実際の動きベクトル値に変換された後、情報変換部204に出力される。可変長復号されたDCT係数は、逆量子化部303で逆量子化され、逆周波数変換部304で逆周波数変換され、差分値メモリ261に出力される。
1.2 H.264エンコーダの内部構成
図28に、図26のH.264エンコーダ263の内部構成を示す。本実施形態のH.264エンコーダ263は、実施形態1のH.264エンコーダ206と対比すると、動き補償部401、再構成部405、デブロックフィルタ部407、及び逆量子化・逆周波数変換部404を有しない。
H.264エンコーダ263は、情報変換部204から、H.264ヘッダ情報及び符号化を行うマクロブロックのH.264マクロブロック情報とH.264動きベクトル情報を入力される。
イントラ予測においては、符号化するイントラMBに隣接するマクロブロックの画素から予測した差分を符号化するが、本実施形態においては差分値メモリ261に格納される画像は、インターMBの場合、差分画像であるため、イントラ予測においてインターMBを使用することができない。そのため、インターMBの画素をイントラ予測に用いないようにする。よって、制約付イントラ予測モード、すなわち「constrained_intra_prediction_flag=1」で動作する。この制約付イントラ予測モードでは、イントラ予測に使用される画素はイントラMBの画素値のみで、インターMBの画素値は使用されない。
情報変換部204が、H.264エンコーダ263に対してイントラMBでのエンコードを指示した場合、差分値メモリ261から読み出された差分データはイントラ予測部402に入力されて、イントラ予測される。情報変換部204がイントラMBでのエンコードをH.264エンコーダ263に指示する場合は、MPEG2においても必ずイントラMBであるので、この差分値メモリ261から読み出された差分データは画素値そのものである。本実施形態ではインターMBでは画素値データが復号されないが、H.264エンコーダ263は制約付イントラ予測モードを用いるので、このイントラ予測に用いられるのは符号化するイントラMBの周辺及び符号化するイントラMBのそのものの画素値のみである。
イントラ予測部402は、H.264規格で定義されるイントラ予測を行い、予測方向を決定すると共に予測画像と復号画像の差分データを量子化・周波数変換部403に出力する。量子化・周波数変換部403は、量子化及び周波数変換の処理を行い、可変長符号化部406に出力する。可変長符号化部406は、周波数変換された差分信号を符号化し、出力ストリームバッファ208に出力する。
2.1 ヘッダ情報の変換
情報変換部204のヘッダ情報変換部501は、MPEG2のヘッダ情報を図29に示すフローチャートに従って、H.264のヘッダ情報に変換する。
ヘッダ情報変換部501は、常に、制約付イントラ予測モード、すなわち「constrained_intra_prediction_flag=1」を使用する(S291)。ヘッダ情報変換部501は、MPEG2ピクチャ構造がフィールド構造か否かを判断する(S292)。
MPEG2ピクチャ構造がフィールド構造の場合、H.264のピクチャ構造はフィールド構造に変換される(S293)。すなわち、H.264規格において「field_pic_flag=1」に設定される。重み予測は、デフォルトモードに変換される(S294)。すなわち、H.264規格において「weighted_pred_flag=0」及び「weighted_bipred_idc=0」に設定される。
MPEG2ピクチャ構造がフィールド構造でない場合、すなわち、フレーム構造である場合は、H.264のピクチャ構造としてフレーム構造でMBAFF(Macro Block Adaptive Field Frame)構造が選択される(S295)。すなわち、H.264規格において「field_pic_flag=0」及び「mb_adaptive_frame_field_flag=1」に設定される。重み予測はExplicitモードに選択される(S296)。すなわち、H.264規格においては、「weighted_pred_flag=1」及び「weighted_bipred_idc=1」に設定される。
2.2 マクロブロック情報と動きベクトル情報の変換
マクロブロック情報変換部502及び動きベクトル情報変換部503による、変換動作について説明する。MPEG2フィールド構造の場合は、実施形態1と同じであるため、説明を省略する。
MPEG2フレーム構造の場合について、ピクチャの参照関係を説明する。図15に示すMPEG2フレーム構造は、図30に示すH.264フレーム構造のピクチャに変換される。各ピクチャの記号が示す意味は図15と同じである。
図30において、P3ピクチャは、過去のI0ピクチャをrefidx_L0=0、1、2又は3として参照する。B1ピクチャは、過去のI0と未来のP3のピクチャを、それぞれrefidx_L0=0、1、2又は3、refidx_L1=0、1、2又は3として参照する。具体的には、フレームMBペアの場合はrefidx_L0=0、2又はrefidx_L1=0、2を使用する。フィールドMBペアの場合でトップフィールドを参照するときは、refidx_L0=0、2又はrefidx_L1=0、2を使用し、ボトムフィールドを参照するときは、refidx_L0=1、3、又はrefidx_L1=1、3を使用する。
同一の参照画像にもかかわらず異なるrefidxの値を割り当てているのは、重み予測としてExplicitモードを使用し、同一の参照画像に対して、異なる重み付けをするためである。重み予測を用いる場合は「(参照画像)×(重み)」が参照画像の画素値となる。
refidx_L0=0又は1、refidx_L1=0又は1が使用される場合、重みがデフォルトモードと同じようになるように次のように設定される。PピクチャやBピクチャの片方向の参照の場合、重み=1に設定される。Bピクチャの双方向参照の場合、それぞれの方向についての参照が、重み=0.5になるように設定される。
refidx_L0=2又は3、refidx_L1=2又は3が使用される場合、重み=0が設定される。この結果、refidx_L0、refidx_L1=2又は3が使用される場合は、参照画像の画素値は常に0となる。
MPEG2フレーム構造からの変換は、上下のMBの組み合わせがイントラMBとフィールド参照の場合以外は、全て実施形態1の変換と同じである。以下、実施形態1と異なる変換を行う、上側マクロブロックがフィールド参照で、下側マクロブロックがイントラMBの場合について説明する。
図31(a)に、上側マクロブロックがフィールド参照で、下側マクロブロックがイントラMBの場合の変換を示し、図31(b)にMPEG2におけるイントラMBからフィールド参照への変換を示す。16×16のフィールド参照をトップフィールドとボトムフィールドとに分けて符号化しようとすれば、H.264においてマクロブロックの上半分の16×8がイントラMB(トップフィールド又はボトムフィールド)となり、下半分がインターMBとなる。しかし、このようなマクロブロックの構成は、H.264規格に存在しない。そこで、図31(a)に示すように、参照画像を持たないイントラMBに動きベクトル情報を付加することによって、参照画像を持つインターMBに変換する。このとき、使用する動きベクトル値は任意の値でよいが、H.264では、pMV(動きベクトル予測値)と等しい動きベクトルを持つインターMBを選択することで符号量を最も小さくすることができる。
本実施形態においては、実施形態1と異なり、トランスコーダ104が符号化用フレームメモリ207を備えていない。すなわち、過去のフレームのローカル復号画像が存在しない。よって、ローカル復号画像を参照画像として取得することができない。また、復号用フレームメモリ205も備えていない。そのため、復号用フレームメモリ205から復号画像(符号化する画像)を読み出すこともできない。そのため、復号画像と参照画像の差分値を生成することができない。すなわち、イントラMBをフィールド参照にするための動きベクトル情報を生成することができず、そのままでは、イントラMBをインターMBに変換することができない。
そこで、本実施形態においては、重みW=0となる参照を使用して、イントラMBをインターMBに変換する。具体的にはrefidx_L0及びrefidx_L1=2又は3を使用する。差分値メモリ261に格納されている差分データは、「差分データ=復号画像−参照画像×重みW」により得られるデータである。よって、重みW=0とすると、「差分データ=復号画像」となる。この差分データに動きベクトルを付加することによって、イントラMBをフィールド参照に変換することができる。重みW=0にすると、MPEG2の差分データ(=復号画像)が、H.264の差分データと一致する。
以上により、フィールドMBペアは上下ともフィールド参照となり、MPEG2の上下のマクロブロックをH.264のトップフィールドとボトムフィールドとにそれぞれ変換することができる。上側マクロブロックがイントラMBで下側マクロブロックがフィールド参照の場合も同様である。
このように、本実施形態は、MPEG2で符号化されたデータに対して逆周波数変換を行った後の差分データを記憶し、情報変換部において変換されたH.264のマクロブロックの分割方法や参照モードに応じて、記憶した差分データをH.264規格で符号化する構成としている。この場合、MPEG2の上下のマクロブロックがフィールド参照とイントラMBの組み合わせであっても、重みをゼロにして、動きベクトル情報に簡単な変換を施すことにより、参照画像を用いることなくトランスコードすることができる。
《実施形態4》
トランスコード装置の実装例について説明する。図32に、本実施形態におけるトランスコード装置の実装例を示す。図32において、図1及び図2と同一の構成要素は同一の符号を付けている。本実施形態においては、システムデコーダ102、MPEG2デコーダ203、H.264エンコーダ206、及びシステムエンコーダ105を1つのLSI322に実装し、比較的大容量のメモリ容量が必要となるオーディオバッファ103、復号用フレームメモリ205、符号化用フレームメモリ207、入力ストリームバッファ202及び出力ストリームバッファ208を1つのDRAM321上に実装する。
なお、システムデコーダ102、MPEG2デコーダ203、H.264エンコーダ206、及びシステムエンコーダ105の各機能ブロックは、典型的に、集積回路であるLSIとして実現される。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定が再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。例えば、バイオ技術の適応等が可能性としてありえる。
なお、本実施形態においては、MPEG2からH.264への符号化規格のトランスコードについて説明したが、この符号化規格に限られることはなく、MPEG2と同様のデータ構造を有する符号化規格からH.264と同様のデータ構造を有する符号化規格へのトランスコードに変換する場合も本発明に含まれる。