説明

復号装置、および復号情報処理方法

【課題】複数のスライスデコーダの動作を制御する。
【解決手段】ピクチャ層のパラメータの入力を受けたスライスデコーダ制御回路46は、スライスデコーダ47にピクチャ層のパラメータとスライス1の書き込みポインタを、スライスデコーダ48にピクチャ層のパラメータとスライス2の書き込みポインタを、スライスデコーダ49にピクチャ層のパラメータとスライス3の書き込みポインタを、それぞれ順番に供給してデコードさせる。スライスデコーダ制御回路46は、スライスデコーダ47乃至49から入力されるデコード処理の完了を示す信号の入力を基に、タイミングAで、スライスデコーダ48にスライス4の書き込みポインタを供給してデコードさせ、タイミングBで、スライスデコーダ49にスライス5の書き込みポインタを供給してデコードさせ、以下、最後のスライスのデコードが終了されるまで同様の処理が繰り返される。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、復号装置および復号方法に関し、特に、実現可能な回路規模で実時間動作が可能な4:2:2P@HLに対応したビデオデコーダを実現することができる復号装置および復号方法に関する。
【背景技術】
【0002】
MPEG2(Moving Picture Coding Experts Group / Moving Picture Experts Group2)ビデオは、ISO/IEC(International Standards Organization / International Electrotechnical Commission)13818−2、およびITU‐T (International Telecommunication Union−Telecommunication sector)勧告H.262に規定されているビデオ信号の高能率符号化方式である。
【0003】
MPEG2の符号化ストリームは、符号化の手法によって決まるプロファイルと、取り扱う画素数によって決まるレベルによってクラス分けされ、広範囲なアプリケーションに対応できるようになされている。例えば、MP@ML(メイン・プロファイル・メイン・レベル)は、そのクラスの1つであり、DVB(Digital Video Broadcast)や、DVD(Digital Versatile Disk)に広く実用化されている。プロファイルおよびレベルは、図5を用いて後述するsequence_extensionに記述される。
【0004】
また、放送局におけるビデオ信号の制作には、ビデオの色差信号を、従来のベースバンドと同様の4:2:2方式で取り扱い、ビットレートの上限を増加した4:2:2P(4:2:2プロファイル)が規定されている。更に、次世代の高解像度ビデオ信号に対応するために、HL(ハイ・レベル)が規定されている。
【0005】
図1に、MPEG2の代表的なクラスと、それぞれのクラスにおける、各種パラメータの上限値を示す。図1には、4:2:2P@HL(4:2:2プロファイル・ハイ・レベル)、4:2:2P@ML(4:2:2:プロファイル・メイン・レベル)、MP@HL(メイン・プロファイル・ハイ・レベル)、MP@HL‐1440(メイン・プロファイル・ハイ・レベル‐1440)、MP@ML(メイン・プロファイル・メイン・レベル)、MP@LL(メイン・プロファイル・ロー・レベル)、および、SP@ML(シンプル・プロファイル・メイン・レベル)について、ビットレート、1ラインあたりのサンプル数、1フレームあたりのライン数、フレーム周波数、およびサンプルの処理時間の上限値がそれぞれ示されている。
【0006】
図1から、4:2:2P@HLのビットレートの上限値は、300(Mbit/sec)であり、処理する画素数の上限値は、62,668,800(samples/sec)である。一方、MP@MPのビットレートの上限値は、15(Mbit/sec)であり、処理する画素数の上限値は、10,368,000(samples/sec)である。すなわち、4:2:2P@HLをデコードするビデオデコーダは、MP@MLをデコードするビデオデコーダと比較して、ビットレートで20倍、処理する画素数で約6倍の処理能力が必要であることがわかる。
【0007】
図2に、MPEG2ビデオビットストリームのレベル構造を示す。
【0008】
最上位層であるピクチャ層の最初には、sequence_headerが記述されている。sequence_headerは、MPEGビットストリームのシーケンスのヘッダデータを定義するものである。シーケンス最初のsequence_headerに、sequence_extensionが続かない場合、このビットストリームには、ISO/IEC11172−2の規定が適応される。シーケンスの最初のsequence_headerに、sequence_extensionが続く場合、その後発生する全てのsequence_headerの直後には、sequence_extensionが続く。すなわち、図2に示す場合においては、全てのsequence_headerの直後に、sequence_extensionが続く。
【0009】
sequence_extensionは、MPEGビットストリームのシーケンス層の拡張データを定義するものである。sequence_extensionは、sequence_headerの直後にのみ発生し、かつ、復号後、およびフレームリオーダリング後にフレームの損失がないようにするために、ビットストリームの最後に位置するsequence_end_codeの直前にきてはならない。また、ビットストリーム中に、sequence_extensionが発生した場合、それぞれのpicture_headerの直後にpicture_cording_extentionが続く。
【0010】
GOP(group_of_picture)内には、複数の画像(picture)が含まれる。GOP_headerは、MPEGビットストリームのGOP層のヘッダデータを定義するものであり、更に、このビットストリーム中には、picture_headerとpicture_coding_extensionによって定義されたデータエレメントが記述されている。1枚の画像は、picture_headerおよびpicture_coding_extensionに続くpicture_dataとして符号化される。また、GOP_headerに続く最初の符号化フレームは、符号化されたIフレームである(すなわち、GOP_headerの最初の画像はIピクチャである)。ITU‐T勧告H.262には、sequence_extensionおよびpicture_cording_extentionの他、各種の拡張が定義されているが、ここでは図示、および説明は省略する。
【0011】
picture_headerは、MPEGビットストリームのピクチャ層のヘッダデータを定義するものであり、picture_coding_extensionは、MPEGビットストリームのピクチャ層の拡張データを定義するものである。
【0012】
picture_dataは、MPEGビットストリームのスライス層およびマクロブロック層に関するデータエレメントを記述するものである。picture_dataは、図2に示されるように、複数のslice(スライス)に分割され、スライスは、複数のmacro_block(マクロブロック)に分割される。
【0013】
macro_blockは、16×16の画素データで構成されている。スライスの最初のマクロブロックおよび最後のマクロブロックは、スキップマクロブロック(情報を含まないマクロブロック)ではない。マクロブロックは、16×16の画素データで構成されている。また、各ブロックは、8×8の画素データで構成されている。また、フレームDCT(Discrete Cosine Transform:離散コサイン変換)符号化およびフィールドDCT符号化の使用が可能なフレーム画像においては、フレーム符号化とフィールド符号化の場合で、マクロブロックの内部構成が相違する。
【0014】
マクロブロックは、輝度成分および色差成分の1区画を含む。マクロブロックという用語は、情報源および復号データまたは対応する符号化データ成分のいずれかを示す。マクロブロックには、4:2:0、4:2:2および4:4:4の3つの色差フォーマットがある。マクロブロックにおけるブロックの順序は、それぞれの色差フォーマットによって異なる。
【0015】
図3(A)に、4:2:0:方式の場合におけるマクロブロックを示す。4:2:0方式の場合、マクロブロックは、4個の輝度(Y)ブロックと、それぞれ1個の色差(Cb,Cr)ブロックで構成される。図3(B)に、4:2:2方式の場合におけるマクロブロックを示す。4:2:2方式の場合、マクロブロックは、4個の輝度(Y)ブロックと、それぞれ2個の色差(Cb,Cr)ブロックで構成される。
【0016】
各マクロブロックは、いくつかの方法により、予測符号化処理が可能である。予測モードは、フィールド予測とフレーム予測の2種類に大別される。フィールド予測においては、先に復号された、1つ、もしくは複数のフィールドのデータを使用し、各フィールドについて、独自に予測を行う。フレーム予測は、先に復号された、1つ、もしくは複数のフレームを使用してフレームの予測を行う。フィールド画像内では、予測は全てフィールド予測である。一方、フレーム画像においては、フィールド予測、またはフレーム予測のいずれかにより予測が可能であり、その予測方法は、マクロブロックごとに選択される。また、マクロブロックの予測符号化処理においては、フィールド予測およびフレーム予測以外に、16×8動き補償およびデュアルプライムの2種類の特別予測モードを使用することができる。
【0017】
動きベクトル情報、および他の周辺情報は、各マクロブロックの予測誤差信号とともに符号化される。動きベクトルの符号化については、可変長符号を使用して符号化された最後の動きベクトルを予測ベクトルとして、予測ベクトルとの差分ベクトルを符号化する。表示可能なベクトルの最大長は、画像毎にプログラムすることができる。また、適切な動きベクトルの計算は、符号器が行う。
【0018】
そして、picture_dataの次には、sequence_headerとsequence_extensionが配置されている。このsequence_headerとsequence_extensionによって記述されたデータエレメントは、ビデオストリームのシーケンスの先頭に記述されたsequence_headerとsequence_extensionによって記述されたデータエレメントと全く同じである。このように同じデータをストリーム中に記述する理由は、ビットストリーム受信装置側でデータストリームの途中(例えばピクチャ層に対応するビットストリーム部分)から受信が開始された場合に、シーケンス層のデータを受信できなくなり、ストリームをデコード出来なくなることを防止するためである。
【0019】
最後のsequence_headerとsequence_extensionとによって定義されたデータエレメントの次、つまり、データストリームの最後には、シーケンスの終わりを示す32ビットのsequence_end_codeが記述されている。
【0020】
次に、図4乃至12を用いて、それぞれのデータエレメントの詳細について説明する。
【0021】
図4に、sequence_headerのデータ構成を示す。sequence_headerに含められるデータエレメントは、sequence_header_code、horizontal_size_value、vertical_size_value、aspect_ratio_information、frame_rate_code、bit_rate_value、marker_bit、vbv_buffer_size_value、constrained_parameter_flag、load_intra_quantiser_matrix、intra_quantiser_matrix、load_non_intra_quantiser_matrix、およびnon_intra_quantiser_matrix等から構成される。
【0022】
sequence_header_codeは、シーケンス層のスタート同期コードを表すデータである。horizontal_size_valueは、画像の水平方向の画素数の下位12ビットからなるデータである。vertical_size_valueは、画像の縦のライン数の下位12ビットからなるデータである。aspect_ratio_informationは、画素のアスペクト比(縦横比)または表示画面アスペクト比を表すデータである。frame_rate_codeは、画像の表示周期を表すデータである。bit_rate_valueは、発生ビット量に対する制限のためのビットレートの下位18ビットのデータである。
【0023】
そして、marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。vbv_buffer_size_valueは、発生符号量制御用の仮想バッファVBV(Video Buffering Verifier)の大きさを決める値の下位10ビットデータである。constrained_parameter_flagは、各パラメータが制限以内であることを示すデータである。load_non_intra_quantiser_matrixは、非イントラMB用量子化マトリックス・データの存在を示すデータである。load_intra_quantiser_matrixは、イントラMB用量子化マトリックス・データの存在を示すデータである。intra_quantiser_matrixは、イントラMB用量子化マトリックスの値を示すデータである。non_intra_quantiser_matrixは、非イントラMB用量子化マトリックスの値を表すデータである。
【0024】
図5に、sequence_extensionのデータ構成を示す。sequence_extensionは、 extension_start_code、extension_start_code_identifier、profile_and_level_indication、progressive_sequence、chroma_format、horizontal_size_extension、vertical_size_extension、bit_rate_extension、marker_bit、vbv_buffer_size_extension、low_delay、frame_rate_extension_n 、および frame_rate_extension_d等のデータエレメントから構成されている。
【0025】
extension_start_codeは、エクステンションデータのスタート同期コードを表すデータである。extension_start_code_identifierは、どの拡張データが送られるかを示すデータである。profile_and_level_indicationは、ビデオデータのプロファイルとレベルを指定するためのデータである。progressive_sequenceは、ビデオデータが順次走査(プログレッシブ画像)であることを示すデータである。chroma_formatは、ビデオデータの色差フォーマットを指定するためのデータである。horizontal_size_extensionは、シーケンスヘッダのhorizntal_size_valueに加える上位2ビットのデータである。vertical_size_extensionは、シーケンスヘッダのvertical_size_valueに加える上位2ビットのデータである。
【0026】
そして、bit_rate_extensionは、シーケンスヘッダのbit_rate_valueに加える上位12ビットのデータである。marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。vbv_buffer_size_extensionは、シーケンスヘッダのvbv_buffer_size_valueに加える上位8ビットのデータである。low_delayは、Bピクチャを含まないことを示すデータである。frame_rate_extension_nは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。frame_rate_extension_dは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。
【0027】
図6に、GOP_headerのデータ構成を示す。GOP_headerを表わすデータエレメントは、group_start_code、time_code、closed_gop、およびbroken_linkから構成される。
【0028】
group_start_codeは、GOP層の開始同期コードを示すデータである。time_codeは、GOPの先頭ピクチャの時間を示すタイムコードである。closed_gopは、GOP内の画像が他のGOPから独立再生可能なことを示すフラグデータである。broken_linkは、編集などのためにGOP内の先頭のBピクチャが正確に再生できないことを示すフラグデータである。
【0029】
図7に、picture_headerのデータ構成を示す。picture_headerに関するデータエレメントは、picture_start_code、temporal_reference、picture_coding_type、vbv_delay、full_pel_forward_vector、forward_f_code、full_pel_backward_vector、および backward_f_code等から構成される。
【0030】
picture_start_codeは、ピクチャ層の開始同期コードを表すデータである。temporal_referenceは、ピクチャの表示順を示す番号でGOPの先頭でリセットされるデータである。picture_coding_typeは、ピクチャタイプを示すデータである。vbv_delayは、ランダムアクセス時の仮想バッファの初期状態を示すデータである。full_pel_forward_vector、forward_f_code、full_pel_backward_vector、およびbackward_f_codeは、MPEG2では使用されない固定データである。
【0031】
図8に、picture_coding_extensionのデータ構成を示す。picture_coding_extensionは、extension_start_code、extension_start_code_identifier、f_code[0][0]、f_code[0][1]、f_code[1][0]、f_code[1][1]、intra_dc_precision、picture_structure、top_field_first、frame_pred_frame_dct、concealment_motion_vectors、q_scale_type、intra_vlc_format、alternate_scan、repeat_firt_field、chroma_420_type、progressive_frame、composite_display_flag、v_axis、field_sequence、sub_carrier、burst_amplitude、およびsub_carrier_phase等から構成される。
【0032】
extension_start_codeは、ピクチャ層のエクステンションデータのスタートを示す開始コードである。extension_start_code_identifierは、どの拡張データが送られるかを示すコードである。 f_code[0][0]は、フォワード方向の水平動きベクトル探索範囲を表すデータである。f_code[0][1]は、フォワード方向の垂直動きベクトル探索範囲を表すデータである。f_code[1][0]は、バックワード方向の水平動きベクトル探索範囲を表すデータである。f_code[1][1]は、バックワード方向の垂直動きベクトル探索範囲を表すデータである。
【0033】
intra_dc_precisionは、DC係数の精度を表すデータである。ブロック内の各画素の輝度および色差信号を表した行列fに、DCTを施すと、8×8のDCT係数行列Fが得られる。この行列Fの左上隅の係数をDC係数と呼ぶ。DC係数はブロック内の平均輝度、平均色差を表わす信号である。picture_structureは、フレームストラクチャかフィールドストラクチャかを示すデータであり、フィールドストラクチャの場合は、上位フィールドか下位フィールドかもあわせて示すデータである。top_field_firstは、フレームストラクチャの場合、最初のフィールドが上位か下位かを示すデータである。frame_predictive_frame_dctは、フレームストラクチャの場合、フレーム・モードDCTの予測がフレーム・モードだけであることを示すデータである。concealment_motion_vectorsは、イントラマクロブロックに伝送エラーを隠蔽するための動きベクトルがついていることを示すデータである。
【0034】
q_scale_typeは、線形量子化スケールを利用するか、非線形量子化スケールを利用するかを示すデータである。intra_vlc_formatは、イントラマクロブロックに、別の2次元VLC(Variable Length Cording)を使うか否かを示すデータである。alternate_scanは、ジグザグスキャンを使うか、オルタネート・スキャンを使うかの選択を表すデータである。repeat_firt_fieldは、2:3プルダウンの際に使われるデータである。chroma_420_typeは、信号フォーマットが4:2:0の場合、次のprogressive_frame と同じ値であり、そうでない場合は0を表すデータである。progressive_frameは、このピクチャが、順次走査かインタレースフィールドかを示すデータである。composite_display_flagは、ソース信号がコンポジット信号であったかどうかを示すデータである。v_axis、field_sequence、sub_carrier、burst_amplitude、およびsub_carrier_phaseは、ソース信号がコンポジット信号の場合に使われるデータである。
【0035】
図9に、picture_dataのデータ構成を示す。picture_data()関数によって定義されるデータエレメントは、slice()関数によって定義されるデータエレメントである。このslice()関数によって定義されるデータエレメントは、ビットストリーム中に少なくとも1個記述されている。
【0036】
slice()関数は、図10に示されるように、slice_start_code、quantiser_scale_code、intra_slice_flag、intra_slice、reserved_bits、extra_bit_slice、およびextra_information_slice等のデータエレメントと、macroblock()関数によって定義される。
【0037】
slice_start_codeは、slice()関数によって定義されるデータエレメントのスタートを示すスタートコードである。quantiser_scale_codeは、このスライス層に存在するマクロブロックに対して設定された量子化ステップサイズを示すデータであるが、マクロブロック毎に、quantiser_scale_codeが設定されている場合には、各マクロブロックに対して設定されたmacroblock_quantiser_scale_codeのデータが優先して使用される。
【0038】
intra_slice_flagは、ビットストリーム中にintra_sliceおよびreserved_bitsが存在するか否かを示すフラグである。intra_sliceは、スライス層中にノンイントラマクロブロックが存在するか否かを示すデータである。スライス層におけるマクロブロックのいずれかがノンイントラマクロブロックである場合には、intra_sliceは「0」となり、スライス層におけるマクロブロックの全てがノンイントラマクロブロックである場合には、intra_sliceは「1」となる。reserved_bitsは、7ビットのデータであって「0」の値を取る。extra_bit_sliceは、追加の情報が存在することを示すフラグであって、次にextra_information_sliceが存在する場合には「1」に設定され、追加の情報が存在しない場合には「0」に設定される。
【0039】
これらのデータエレメントの次には、macroblock()関数によって定義されたデータエレメントが記述されている。macroblock()関数は、図11に示すように、macroblock_escape、macroblock_address_increment、およびquantiser_scale_code、およびmarker_bit等のデータエレメントと、macroblock_modes()関数、motion_vectors(s)関数、およびcoded_block_pattern()関数によって定義されたデータエレメントを記述するための関数である。
【0040】
macroblock_escapeは、参照マクロブロックと前のマクロブロックとの水平方向の差が34以上であるか否かを示す固定ビット列である。参照マクロブロックと前のマクロブロックとの水平方向の差が34以上の場合には、macroblock_address_incrementの値に33が加えられる。macroblock_address_incrementは、参照マクロブロックと前のマクロブロックとの水平方向の差を示すデータである。もし、macroblock_address_incrementの前にmacroblock_escapeが1つ存在するのであれば、このmacroblock_address_incrementの値に33を加えた値が、実際の参照マクロブロックと前のマクロブロックとの水平方向の差分を示すデータとなる。
【0041】
quantiser_scale_codeは、各マクロブロックに設定された量子化ステップサイズを示すデータであり、macroblock_quantが「1」のときだけ存在する。各スライス層には、スライス層の量子化ステップサイズを示すslice_quantiser_scale_codeが設定されているが、参照マクロブロックに対してscale_codeが設定されている場合には、この量子化ステップサイズを選択する。
【0042】
macroblock_address_incrementの次には、macroblock_modes()関数によって定義されるデータエレメントが記述されている。macroblock_modes()関数は、図12に示すように、macroblock_type、frame_motion_type、field_motion_type、dct_type等のデータエレメントを記述するための関数である。macroblock_typeは、マクログブロックの符号化タイプを示すデータである。
【0043】
macroblock_motion_forward又はmacroblock_motion_backwardが「1」であり、ピクチャ構造がフレームであり、更にframe_pred_frame_dctが「0」である場合には、macroblock_typeを表わすデータエレメントの次にframe_motion_typeを表わすデータエレメントが記述されている。なお、このframe_pred_frame_dctは、 frame_motion_typeがビットストリーム中に存在するか否かを示すフラグである。
【0044】
frame_motion_typeは、フレームのマクロブロックの予測タイプを示す2ビットのコードである。予測ベクトルが2個で、フィールドベースの予測タイプであれば、frame_motion_typeは「00」であり、予測ベクトルが1個で、フィールドベースの予測タイプであれば、frame_motion_typeは「01」であり、予測ベクトルが1個で、フレームベースの予測タイプであれば、frame_motion_typeは「10」であり、予測ベクトルが1個で、デュアルプライムの予測タイプであれば、frame_motion_typeは「11」である。
【0045】
field_motion_typeは、フィールドのマクロブロックの動き予測を示す2ビットのコードである。予測ベクトルが1個でフィールドベースの予測タイプであれば「01」であって、予測ベクトルが2個で18×8マクロブロックベースの予測タイプであれば「10」であって、予測ベクトルが1個でデュアルプライムの予測タイプであれば「11」である。
【0046】
ピクチャ構造がフレームであり、frame_pred_frame_dctが、そのビットストリーム中にframe_motion_typeが存在することを示し、frame_pred_frame_dctが、そのビットストリーム中にdct_typeが存在することを示している場合、macroblock_typeを表わすデータエレメントの次にはdct_typeを表わすデータエレメントが記述されている。なお、dct_typeは、DCTがフレームDCTモードか、フィールドDCTモードかを示すデータである。
【0047】
MPEG2のストリームにおいて、以上説明したそれぞれのデータエレメントは、start codeと称される、特殊なビットパターンで開始される。これらのスタートコードは、別の状況では、ビデオストリーム中に現れない特定のビットパターンである。各スタートコードは、スタートコードプレフィクスと、それに続くスタートコード値から構成される。スタートコードプレフィクスは、ビット列“0000 0000 0000 0000 0000 0001”である。スタートコード値は、スタートコードのタイプを識別する8ビットの整数である。
【0048】
図13に、MPEG2の各start codeの値を示す。多くのスタートコードは、1個のスタートコード値より示される。しかし、slice_start_codeは、01乃至AFの複数のスタートコード値により示され、このスタートコード値は、スライスに対する垂直位置を表わす。これらのスタートコードは、全てバイト単位であるため、スタートコードプレフィクスの最初のビットがバイトの最初のビットになるように、スタートコードプレフィクスの前に、複数のビット“0”が挿入され、スタートコードがバイト単位になるように調整される。
【0049】
図14は、従来のMP@MLに対応したMPEGビデオデコーダの回路構成を示すブロック図である。
【0050】
MPEGビデオデコーダは、ストリーム入力回路11、バッファ制御回路12、クロック発生回路13、スタートコード検出回路14、デコーダ15、動き補償回路16、および表示出力回路17から構成されるIC(integrated circuit)1と、ストリームバッファ21およびビデオバッファ22で構成され、例えば、DRAM(Dynamic Random Access Memory)からなるバッファ2により構成される。
【0051】
IC1のストリーム入力回路11は、高能率符号化された符号化ストリームの入力を受け、バッファ制御回路12に供給する。バッファ制御回路12は、クロック発生回路13から供給される基本クロックに従って、入力された符号化ストリームをバッファ2のストリームバッファ21に入力する。ストリームバッファ21は、MP@MLのデコードに要求されるVBVバッファサイズである1,835,008ビットの容量を有する。ストリームバッファ21に保存されている符号化ストリームは、バッファ制御回路12の制御に従って、先に書き込まれたデータから順に読み出され、スタートコード検出回路14に供給される。スタートコード検出回路14は、入力されたストリームから、図13を用いて説明したスタートコードを検出し、検出したスタートコードおよび入力されたストリームをデコーダ15に出力する。
【0052】
デコーダ15は、入力されたストリームをMPEGシンタックスに基づいて、デコードする。デコーダ15は、入力されたスタートコードに従って、まず、ピクチャ層のヘッダパラメータをデコードし、それを基に、スライス層をマクロブロックに分離してマクロブロックをデコードし、その結果得られる予測ベクトルおよび画素を、動き補償回路16に出力する。
【0053】
MPEGでは、画像の時間的冗長性を利用して、近接した画像間で動き補償した差分を得ることにより、符号化効率を改善している。MPEGビデオデコーダでは、動き補償を用いた画素に対しては、現在デコードしている画素にその動きベクトルが示す参照画像の画素データを加算することにより動き補償を行い、符号化前の画像データに復号する。
【0054】
デコーダ15から出力されるマクロブロックが動き補償を使用していない場合、動き補償回路16は、その画素データを、バッファ制御回路12を介して、バッファ2のビデオバッファ22に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。
【0055】
デコーダ15から出力されるマクロブロックが動き補償を使用している場合、動き補償回路16は、デコーダ15から出力される予測ベクトルに従って、バッファ制御回路12を介して、バッファ2のビデオバッファ22から参照画素データを読み出す。そして、読み出した参照画素データを、デコーダ15から供給された画素データに加算し、動き補償を行う。動き補償回路16は、動き補償を行った画素データを、バッファ制御回路12を介してバッファ2のビデオバッファ22に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。
【0056】
表示出力回路17は、デコードした画像データを出力するための同期タイミング信号を発生し、このタイミングを基に、バッファ制御回路12を介して、ビデオバッファ22から画素データを読み出し、復号ビデオ信号として出力する。
【発明の概要】
【発明が解決しようとする課題】
【0057】
以上説明したように、MPEG2ストリームは階層構造を有している。図2を用いて説明したピクチャ層のsequence_header乃至picture_coding_extensionのデータは、図1を用いて説明したプロファイルおよびレベルが異なる場合においても、そのデータ量は、あまり変更されない。一方、スライス層以下のデータ量は、符号化する画素数に依存する。
【0058】
図1より、HLにおいて、1枚のピクチャで処理しなければならないマクロブロックの数は、MLに対して約6倍になる。更に、図3より、4:2:2Pにおいて、1個のマクロブロックで処理するブロックの数は、MPの4/3倍になる。
【0059】
すなわち、図14を用いて説明したMP@MLに対応したビデオデコーダで、4:2:2P@HLの符号化ストリームを復号しようとした場合、VBVバッファサイズおよび画素数の増加に伴って、ストリームバッファ21のバッファサイズが不足する。また、ビットレートの増加に伴い、入力ストリームのストリームバッファ21へのアクセスが増加し、画素数の増加に伴って、動き補償回路16のビデオバッファ22へのアクセスが増加するため、バッファ制御回路12の制御が間に合わなくなる。更に、ビットレートの増加、マクロブロックおよびブロック数の増加に伴って、デコーダ15の処理が間に合わなくなる。
【0060】
今日の半導体技術の進展により、信号処理回路、メモリ(バッファ)回路とも、その動作速度は著しく向上している。しかしながら、現在のML@MPの復号技術では、4:2:2P@HLを復号するまでには至っていない。一般に、このような高速の信号処理を行おうとした場合、回路規模が大幅に増加し、部品点数の増加および消費電力の増加を招いてしまう。
【0061】
本開示はこのような状況に鑑みてなされたものであり、回路規模の拡大を抑止しつつ、実時間動作が可能な4:2:2P@HLに対応したビデオデコーダを実現できるようにするものである。
【課題を解決するための手段】
【0062】
本開示の一側面である復号装置は、符号化ストリームを復号する復号装置において、前記符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御手段と、複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段と、複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停手段と、画像データを保持する保持手段とを備える。
【0063】
本開示の一側面である復号装置は、前記符号化ストリームをバッファリングする第1のバッファ手段と、前記符号化ストリームから、前記符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、前記スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、読み出された前記スタートコードおよび前記位置情報をバッファリングする第2のバッファ手段と、前記第1のバッファ手段による前記符号化ストリームのバッファリング、および前記第2のバッファ手段による前記スタートコードおよび前記位置情報のバッファリングを制御するバッファリング制御手段とをさらに備えることができる。
【0064】
前記保持手段は、前記画像データの輝度成分と色差成分をそれぞれ分けて保持することができる。
【0065】
本開示の一側面である復号装置は、前記復号手段に供給される前記符号化ストリームのフレームの順番を変更する変更手段をさらに備えることができ、前記保持手段は、画像シーケンス内のイントラ符号化フレームおよび前方向予測符号化フレームを合計したフレーム数より少なくとも2フレーム多い数のフレームを保持し、前記変更手段は、前記符号化ストリームを逆転再生させるための所定の順番になるように、前記符号化ストリームのフレームの順番を変更することができる。
【0066】
本開示の一側面である復号装置は、前記保持手段により保持されている前記画像データを読み出して出力する出力手段をさらに備えることができ、前記復号手段は、前記符号化ストリームを通常再生に必要な処理速度のN倍速で復号し、前記出力手段は、前記保持手段により保持されている前記画像データのうちNフレーム毎の前記画像データを出力することができる。
【0067】
本開示の一側面である復号方法は、符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段とを備える復号装置の復号方法において、前記復号装置による、複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御ステップと、複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停ステップと、画像データを保持手段に保持させる保持制御ステップとを含む。
【0068】
本開示の一側面においては、複数の復号手段がそれぞれ独立して並行動作するように制御され、複数の前記復号手段のそれぞれから出力される複数の画像データが動き補償手段に入力されるタイミングが調停される。
【発明の効果】
【0069】
本開示の一側面によれば、回路規模の拡大を抑止しつつ、実時間動作が可能な4:2:2P@HLに対応したビデオデコーダを実現することが可能となる。
【図面の簡単な説明】
【0070】
【図1】MPEG2の、プロファイルとレベルによる、各パラメータの上限値を説明するための図である。
【図2】MPEG2ビットストリームの階層構造を説明するための図である。
【図3】マクロブロック層を説明するための図である。
【図4】sequence_headerのデータ構造を説明するための図である。
【図5】sequence_extensionのデータ構造を説明するための図である。
【図6】GOP_headerのデータ構造を説明するための図である。
【図7】picture_headerのデータ構造を説明するための図である。
【図8】picture_coding_extensionのデータ構造を説明するための図である。
【図9】picture_dataのデータ構造を説明するための図である。
【図10】sliceのデータ構造を説明するための図である。
【図11】macroblockのデータ構造を説明するための図である。
【図12】macroblock_modesのデータ構造を説明するための図である。
【図13】スタートコードを説明するための図である。
【図14】従来のML@MPの符号化ストリームをデコードするビデオデコーダの構成を示すブロック図である。
【図15】実施の形態であるビデオデコーダの構成を示すブロック図である。
【図16】スライスデコーダ制御回路の処理について説明するためのフローチャートである。
【図17】スライスデコーダ制御回路の処理の具体例を説明するための図である。
【図18】動き補償回路によるスライスデコーダの調停処理を説明するためのフローチャートである。
【図19】動き補償回路によるスライスデコーダの調停処理の具体例を説明するための図である。
【図20】図15のMPEGビデオデコーダを備えた再生装置の構成を示すブロック図である。
【図21】エンコーダに入力されて符号化されるMPEGビデオ信号のピクチャ構成を示す図である。
【図22】フレーム間予測を用いたMPEGの画像符号化の例を示す図である。
【図23】MPEG符号化ストリームが順方向に再生される場合の復号処理について説明するための図である。
【図24】MPEG符号化ストリームが逆転再生される場合の復号処理について説明するための図である。
【発明を実施するための形態】
【0071】
以下、図を参照して、実施の形態について説明する。
【0072】
図15は、実施の形態であるMPEGビデオデコーダの回路構成を示すブロック図である。
【0073】
図15のMPEGビデオデコーダは、ストリーム入力回路41、スタートコード検出回路42、ストリームバッファ制御回路43、クロック発生回路44、ピクチャデコーダ45、スライスデコーダ制御回路46、スライスデコーダ47乃至49、動き補償回路50、輝度バッファ制御回路51、色差バッファ制御回路52、および表示出力回路53から構成されるIC31、ストリームバッファ61およびスタートコードバッファ62で構成され、例えば、DRAMからなるバッファ32、輝度バッファ71および色差バッファ72で構成され、例えば、DRAMからなるビデオバッファ33、コントローラ34、並びに、ドライブ35で構成される。
【0074】
ストリーム入力回路41は、高能率符号化された符号化ストリームの入力を受け、スタートコード検出回路42に供給する。スタートコード検出回路42は、入力された符号化ストリームをストリームバッファ制御回路43に供給するとともに、図13を用いて説明したスタートコードを検出して、それを基に、そのスタートコードの種類と、ストリームバッファ61にそのスタートコードが書き込まれる位置を示す書き込みポインタとを含む、スタートコード情報を生成し、ストリームバッファ制御回路43に供給する。
【0075】
クロック発生回路44は、図14を用いて説明したクロック発生回路13の2倍の基本クロックを発生し、ストリームバッファ制御回路43に供給する。ストリームバッファ制御回路43は、クロック発生回路44から供給される基本クロックに従って、入力された符号化ストリームを、バッファ32のストリームバッファ61に書き込み、入力されたスタートコード情報を、バッファ32のスタートコードバッファ62に書き込む。
【0076】
MPEGビデオデコーダが、4:2:2P@HLのMPEG符号化ストリームを順方向に再生することができるようになされている場合、ストリームバッファ61は、少なくとも、4:2:2P@HLのデコードに要求されるVBVバッファサイズである47,185,920ビットの容量を有している。また、MPEGビデオデコーダが、逆転再生を実行することができるようになされている場合、ストリームバッファ61は、少なくとも、2GOP分のデータを記録することができる容量を有している。
【0077】
ピクチャデコーダ45は、ストリームバッファ制御回路43を介して、スタートコードバッファ62からスタートコード情報を読み出す。例えば、デコード開始時は、図2を用いて説明したsequence_headerからデコードが開始されるので、ピクチャデコーダ45は、図4を用いて説明したスタートコードであるsequence_header_codeに対応する書き込みポインタをスタートコードバッファ62から読み出し、その書き込みポインタを基に、ストリームバッファ61からsequence_headerを読み出してデコードする。続いて、ピクチャデコーダ45は、sequence_headerの読み出しと同様に、sequence_extension、GOP_header、picture_coding_extension等をストリームバッファ61から読み出してデコードする。
【0078】
ピクチャデコーダ45が、スタートコードバッファ62から、最初のslice_start_codeを読み出した時点で、そのピクチャのデコードに必要な全てのパラメータが揃ったことになる。ピクチャデコーダ45は、デコードしたピクチャ層のパラメータを、スライスデコーダ制御回路46に出力する。
【0079】
スライスデコーダ制御回路46は、ピクチャ層のパラメータの入力を受け、ストリームバッファ制御回路43を介して、スタートコードバッファ62から、対応するスライスのスタートコード情報を読み出す。また、スライスデコーダ制御回路46は、スライスデコーダ47乃至49のいずれかにデコードさせるスライスが、符号化ストリームに含まれる何番目のスライスであるかを示すレジスタを有し、そのレジスタを参照しながら、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスの書き込みポインタをスライスデコーダ47乃至49のいずれかに供給する。スライスデコーダ制御回路46が、スライスデコーダ47乃至49のうち、デコードを実行させるスライスデコーダを選択する処理については、図16および図17を用いて後述する。
【0080】
スライスデコーダ47は、マクロブロック検出回路81、ベクトル復号回路82、逆量子化回路83、および逆DCT回路84で構成され、スライスデコーダ制御回路46から入力されたスライスの書き込みポインタを基に、対応するスライスを、ストリームバッファ制御回路43を介してストリームバッファ61から読み出す。そして、スライスデコーダ制御回路46から入力されたピクチャ層のパラメータに従って、読み出したスライスをデコードして、動き補償回路50に出力する。
【0081】
マクロブロック検出回路81は、スライス層のマクロブロックを分離し、各マクロブロックのパラメータをデコードし、可変長符号化された各マクロブロックの予測モードおよび予測ベクトルをベクトル復号回路82に供給し、可変長符号化された係数データを逆量子化回路83に供給する。ベクトル復号回路82は、可変長符号化された、各マクロブロックの予測モードおよび予測ベクトルをデコードして、予測ベクトルを復元する。逆量子化回路83は、可変長符号化された係数データをデコードして逆DCT回路84に供給する。逆DCT回路84は、デコードされた係数データに逆DCTを施し、符号化前の画素データに復元する。
【0082】
スライスデコーダ47は、動き補償回路50に、デコードしたマクロブロックに対する動き補償の実行を要求し(すなわち、図中、REQで示される信号を1にする)、動き補償回路50から動き補償の実行要求に対する受付を示す信号(図中ACKで示される信号)を受けて、デコードされた予測ベクトルおよびデコードされた画素を動き補償回路50に供給する。スライスデコーダ47は、ACK信号の入力を受けて、デコードされた予測ベクトルおよびデコードされた画素を動き補償回路50に供給した後に、REQ信号を1から0に変更する。そして、次に入力されたマクロブロックのデコードが終了した時点で、REQ信号を、再び0から1に変更する。
【0083】
また、スライスデコーダ48のマクロブロック検出回路85乃至逆DCT回路88およびスライスデコーダ49のマクロブロック検出回路89乃至逆DCT回路92においても、スライスデコーダ47のマクロブロック検出回路81乃至逆DCT回路84と同様の処理が行われるので、その説明は省略する。
【0084】
動き補償回路50は、スライスデコーダ47乃至49から入力されたデータの動き補償が終了したか否かを示すReg_REQ_A、Reg_REQ_BおよびReg_REQ_Cの3つのレジスタを有し、これらのレジスタの値を参照しながら、適宜、スライスデコーダ47乃至49のうちの1つを選んで、動き補償実行要求を受け付け(すなわち、REQ信号に対して、ACK信号を出力して、予測ベクトルと画素の入力を受ける)、動き補償処理を実行する。このとき、動き補償回路50は、スライスデコーダ47乃至49のうち、所定のタイミングにおいてREQ信号が1であるスライスデコーダ47乃至49に対する動き補償が、それぞれ1回ずつ終了した後に、次の動き補償要求を受け付ける。例えば、スライスデコーダ47が連続して動き補償要求を出しても、スライスデコーダ48およびスライスデコーダ49の動き補償が終了するまで、スライスデコーダ47の2つ目の動き補償要求は受け付けられない。動き補償回路50が、スライスデコーダ47乃至49のいずれのデコーダの出力に対して動き補償を実行するかを選択する処理については、図18および図19を用いて後述する。
【0085】
スライスデコーダ47乃至49のいずれかから入力されるマクロブロックが動き補償を使用していない場合、動き補償回路50は、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、ビデオバッファ33の輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、ビデオバッファ33の色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。
【0086】
また、スライスデコーダ47乃至49のいずれかから出力されるマクロブロックが動き補償を使用している場合、動き補償回路50は、スライスデコーダ47乃至49のうち対応するデコーダから入力される予測ベクトルに従って、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71から参照画素を読み込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72から参照画素データを読み込む。そして、動き補償回路50は、読み込んだ参照画素データを、スライスデコーダ47乃至49のいずれかから供給された画素データに加算し、動き補償を行う。
【0087】
動き補償回路50は、動き補償を行った画素データを、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。
【0088】
表示出力回路53は、デコードした画像データを出力するための同期タイミング信号を発生し、このタイミングに従って、輝度バッファ制御回路51を介して、輝度バッファ71から輝度データを読み出し、色差バッファ制御回路52を介して、色差バッファ72から色差データを読み出して、復号ビデオ信号として出力する。
【0089】
ドライブ35は、コントローラ34に接続されており、必要に応じて装着される磁気ディスク101、光ディスク102、光磁気ディスク103、および半導体メモリ104などとデータの授受を行う。また、コントローラ34は、以上説明したIC31、およびドライブ35の動作を制御するものである。コントローラ34は、例えば、ドライブに装着されている磁気ディスク101、光ディスク102、光磁気ディスク103、および半導体メモリ104などに記録されているプログラムに従って、IC31に処理を実行させることができる。
【0090】
次に、図16のフローチャートを参照して、スライスデコーダ制御回路46の処理について説明する。
【0091】
ステップS1において、スライスデコーダ制御回路46は、処理するスライスが、符号化ストリームの何番目のスライスであるかを表わすレジスタの値をN=1とする。ステップS2において、スライスデコーダ制御回路46は、スライスデコーダ47が処理中であるか否かを判断する。
【0092】
ステップS2において、スライスデコーダ47が処理中ではないと判断された場合、ステップS3において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスNの書き込みポインタをスライスデコーダ47に供給し、スライスデコーダ47にスライスNをデコードさせ、処理はステップS8に進む。
【0093】
ステップS2において、スライスデコーダ47が処理中であると判断された場合、ステップS4において、スライスデコーダ制御回路46は、スライスデコーダ48が処理中であるか否かを判断する。ステップS4において、スライスデコーダ48が処理中ではないと判断された場合、ステップS5において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスNの書き込みポインタをスライスデコーダ48に供給し、スライスデコーダ48にスライスNをデコードさせ、処理はステップS8に進む。
【0094】
ステップS4において、スライスデコーダ48が処理中であると判断された場合、ステップS6において、スライスデコーダ制御回路46は、スライスデコーダ49が処理中であるか否かを判断する。ステップS6において、スライスデコーダ49が処理中であると判断された場合、処理は、ステップS2に戻り、それ以降の処理が繰り返される。
【0095】
ステップS6において、スライスデコーダ49が処理中ではないと判断された場合、ステップS7において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスNの書き込みポインタをスライスデコーダ49に供給し、スライスデコーダ49にスライスNをデコードさせ、処理はステップS8に進む。
【0096】
ステップS8において、スライスデコーダ制御回路46は、処理するスライスが符号化ストリームの何番目のスライスであるかを示すレジスタの値をN=N+1とする。ステップS9において、スライスデコーダ制御回路46は、全スライスのデコードが終了したか否かを判断する。ステップS9において、全スライスのデコードが終了されていないと判断された場合、処理は、ステップS2に戻り、それ以降の処理が繰り返される。ステップS9において、全スライスのデコードが終了されたと判断された場合、処理が終了される。
【0097】
図17は、図16を用いて説明したスライスデコーダ制御回路46の処理の具体例を示す図である。上述したように、ピクチャデコーダ45でピクチャ層のデータがデコードされ、そのパラメータがスライスデコーダ制御回路46に供給される。ここで、図16を用いて説明したステップS1において、スライスデコーダ制御回路46は、レジスタの値をN=1とする。ステップS2において、スライスデコーダ47は処理中ではないと判断されるので、ステップS3において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライス1の書き込みポインタをスライスデコーダ47に供給し、スライスデコーダ47にスライスN(N=1)をデコードさせ、ステップS8において、レジスタの値をN=N+1とする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0098】
ステップS2において、スライスデコーダ47は処理中であると判断される。そして、ステップS4において、スライスデコーダ48は処理中でないと判断されるので、ステップS5において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スライス2の書き込みポインタを、スライスデコーダ48に供給し、スライスデコーダ48にスライスN(N=2)をデコードさせ、ステップS8において、N=N+1とする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0099】
ステップS2において、スライスデコーダ47は処理中であると判断され、ステップS4において、スライスデコーダ48は処理中であると判断される。そして、ステップS6において、スライスデコーダ49は処理中ではないと判断されるので、ステップS7において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スライス3の書き込みポインタを、スライスデコーダ49に供給し、スライスデコーダ49にスライスN(N=3)をデコードさせ、ステップS8において、N=N+1とする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0100】
スライスデコーダ47乃至49は、入力されたスライスのデコード処理を実施した後、デコード処理の完了を示す信号をスライスデコーダ制御回路46に出力する。すなわち、スライスデコーダ47乃至49のいずれかからスライス2のデコードの完了を示す信号が入力されるまで、スライスデコーダ47乃至49は全て処理中であるので、ステップS2、ステップS4、およびステップS6の処理が繰り返される。そして、図17の図中Aで示されるタイミングで、スライスデコーダ48がデコード処理の完了を示す信号を、スライスデコーダ46に出力した場合、ステップS4において、スライスデコーダ48が処理中ではないと判断されるので、ステップS5において、スライスデコーダ制御回路46は、スライス4の書き込みポインタを、スライスデコーダ48に供給し、スライスデコーダ48に、スライスN(N=4)をデコードさせ、ステップS8において、N=N+1とする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0101】
そして、次にスライスデコーダ47乃至49のいずれかからデコード処理の完了を示す信号の入力を受けるまで、スライスデコーダ制御回路46は、ステップS2、ステップS4、およびステップS6の処理を繰り返す。図17においては、スライスデコーダ制御回路46は、図中Bで示されるタイミングで、スライスデコーダ49からスライス3のデコードの終了を示す信号の入力を受けるので、ステップS6において、スライスデコーダ49は処理中ではないと判断される。ステップS7において、スライスデコーダ制御回路46は、スライス5の書き込みポインタをスライスデコーダ49に供給し、スライスデコーダ49に、スライスN(N=5)をデコードさせ、ステップS8において、N=N+1とする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。以下、最後のスライスのデコードが終了されるまで、同様の処理が繰り返される。
【0102】
このように、スライスデコーダ制御回路46は、スライスデコーダ47乃至49の処理状況を参照しながら、スライスのデコード処理を割り当てるので、複数のデコーダを効率よく使用することができる。
【0103】
次に、図18のフローチャートを参照して、動き補償回路50による、スライスデコーダの調停処理について説明する。
【0104】
ステップS21において、動き補償回路50は、内部のレジスタReg_REQ_A、Reg_REQ_BおよびReg_REQ_Cを初期化する。すなわち、Reg_REQ_A=0、Reg_REQ_B=0、Reg_REQ_C=0とする。
【0105】
ステップS22において、動き補償回路50は、レジスタの値が全て0であるか否かを判断する。ステップS22において、レジスタの値が全て0ではない(すなわち、1つでも1がある)と判断された場合、処理は、ステップS24に進む。
【0106】
ステップS22において、レジスタの値が全て0であると判断された場合、ステップS23において、動き補償回路50は、スライスデコーダ47乃至49から入力されるREQ信号を基に、レジスタの値を更新する。すなわち、スライスデコーダ47からREQ信号が出力されている場合、Reg_REQ_A=1とし、スライスデコーダ48からREQ信号が出力されている場合、Reg_REQ_B=1とし、スライスデコーダ49からREQ信号が出力されている場合、Reg_REQ_C=1とする。そして処理は、ステップS24に進む。
【0107】
ステップS24において、動き補償回路50は、Reg_REQ_A=1であるか否かを判断する。ステップS24において、Reg_REQ_A=1であると判断された場合、ステップS25において、動き補償回路50は、スライスデコーダ47にACK信号を送信し、Reg_REQ_A=0とする。スライスデコーダ47は、動き補償回路50に、ベクトル復号回路82で復号された予測ベクトルと、逆DCT回路84で逆DCTされた画素を出力する。そして処理は、ステップS30に進む。
【0108】
ステップS24において、Reg_REQ_A=1ではないと判断された場合、ステップS26において、動き補償回路50は、Reg_REQ_B=1であるか否かを判断する。ステップS26において、Reg_REQ_B=1であると判断された場合、ステップS27において、動き補償回路50は、スライスデコーダ48にACK信号を送信し、Reg_REQ_B=0とする。スライスデコーダ48は、動き補償回路50に、ベクトル復号回路86で復号された予測ベクトルと、逆DCT回路88で逆DCTされた画素を出力する。そして処理は、ステップS30に進む。
【0109】
ステップS26において、Reg_REQ_B=1ではないと判断された場合、ステップS28において、動き補償回路50は、Reg_REQ_C=1であるか否かを判断する。ステップS28において、Reg_REQ_C=1ではないと判断された場合、処理は、ステップS22に戻り、それ以降の処理が繰り返される。
【0110】
ステップS28において、Reg_REQ_C=1であると判断された場合、ステップS29において、動き補償回路50は、スライスデコーダ49にACK信号を送信し、Reg_REQ_C=0とする。スライスデコーダ49は、動き補償回路50に、ベクトル復号回路90で復号された予測ベクトルと、逆DCT回路92で逆DCTされた画素を出力する。そして処理は、ステップS30に進む。
【0111】
ステップS30において、動き補償回路50は、スライスデコーダ47乃至49のいずれかから入力されたマクロブロックは、動き補償を使用しているか否かを判断する。
【0112】
ステップS30において、マクロブロックが動き補償を使用していると判断された場合、ステップS31において、動き補償回路50は、入力されたマクロブロックに動き補償処理を行う。すなわち、動き補償回路50は、スライスデコーダ47乃至49のうち対応するデコーダから出力される予測ベクトルに従って、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71から参照画素を読み出し、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72から参照画素データを読み出す。そして、動き補償回路50は、読み出した参照画素データを、スライスデコーダ47乃至49のいずれかから供給された画素データに加算し、動き補償を行う。
【0113】
動き補償回路50は、動き補償を行った画素データを、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。そして、処理は、ステップS22に戻り、それ以降の処理が繰り返される。
【0114】
ステップS30において、マクロブロックが動き補償を使用していないと判断された場合、ステップS32において、動き補償回路50は、その画素データが輝度データであれば、輝度バッファ制御回路51を介して輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。そして、処理は、ステップS22に戻り、それ以降の処理が繰り返される。
【0115】
図19は、図18を用いて説明した動き補償回路50によるデコーダの調停処理の具体例を示す図である。
【0116】
図19に示すタイミングCにおいて、図18のステップS22の処理により、動き補償回路50のレジスタが全て0であると判断された場合、スライスデコーダ47乃至49は、全て、REQ信号を出力しているため、ステップS23の処理により、それぞれのレジスタの値は、Reg_REQ_A=1、Reg_REQ_B=1、Reg_REQ_C=1に更新される。そして、ステップS24の処理により、Reg_REQ_A=1であると判断されるため、ステップS25において、動き補償回路50は、スライスデコーダ47にACK信号を出力して、Reg_REQ_A=0とし、スライスデコーダ47から予測ベクトルと画素の入力を受け、動き補償1を行う。
【0117】
動き補償1が終了した後、すなわち、図19のDで示されるタイミングにおいて、処理は、再びステップS22に戻る。図中Dで示されるタイミングにおいては、スライスデコーダ47から、REQ信号が出力されている。しかし、レジスタの値は、Reg_REQ_A=0、Reg_REQ_B=1、Reg_REQ_C=1であり、ステップS22において、レジスタの値は、全て0ではないと判断されるため、処理は、ステップS24に進み、レジスタの値は更新されない。
【0118】
ステップS24において、Reg_REQ_A=0であると判断され、ステップS26において、Reg_REQ_B=1であると判断されるので、動き補償回路50は、ステップS27において、スライスデコーダ48にACK信号を出力して、Reg_REQ_B=0とし、スライスデコーダ48から予測ベクトルと画素の入力を受け、動き補償2を行う。
【0119】
動き補償2が終了した後、すなわち、図19のEで示されるタイミングにおいて、処理は、再びステップS22に戻る。図中Eで示されるタイミングにおいても、スライスデコーダ47から、REQ信号が出力されている。しかし、レジスタの値は、Reg_REQ_A=0、Reg_REQ_B=0、Reg_REQ_C=1であるので、ステップS22において、レジスタの値は全て0ではないと判断されるので、図中Dで示されるタイミングのときと同様、レジスタの値は更新されない。
【0120】
そして、ステップS24において、Reg_REQ_A=0であると判断され、ステップS26において、Reg_REQ_B=0であると判断され、ステップS28において、Reg_REQ_C=1であると判断されるので、動き補償回路50は、ステップS29において、スライスデコーダ49にACK信号を出力して、Reg_REQ_C=0とし、スライスデコーダ49から予測ベクトルと画素の入力を受け、動き補償3を行う。
【0121】
動き補償3が終了した後、すなわち、図19のFで示されるタイミングにおいて、処理は、再びステップS22に戻る。Fで示されるタイミングにおいては、レジスタの値は、Reg_REQ_A=0、Reg_REQ_B=0、Reg_REQ_C=0であるので、ステップS23において、レジスタの値が更新され、Reg_REQ_A=1、Reg_REQ_B=1、Reg_REQ_C=0となる。
【0122】
そして、ステップS24において、Reg_REQ_A=1であると判断され、同様の処理により、動き補償4が実行される。
【0123】
このような処理を繰り返すことにより、動き補償回路50は、スライスデコーダ47乃至49を調停しながら、動き補償を行う。
【0124】
以上説明したように、図15のMPEGビデオデコーダにおいては、スタートコードバッファ62を設けたことにより、ピクチャデコーダ45乃至スライスデコーダ49を、お互いの動作の終了を待つことなしに、ストリームバッファ61にアクセスさせることができる。また、スライスデコーダ47乃至49は、スライスデコーダ制御回路46の処理により、同時に動作させることができる。更に、動き補償回路30は、適宜、1つのスライスデコーダを選択し、それぞれ分離された輝度バッファ71および色差バッファ72にアクセスし、動き補償を行うことができる。したがって、図15のMPEGビデオデコーダにおいては、デコード処理性能およびバッファへのアクセス性能が向上され、2:4:4P@HLに対するデコード処理が可能となる。
【0125】
次に、図15のMPEGビデオデコーダに入力されたMPEGストリームが復号されて再生される場合の、フレームのバッファリングについて説明する。
【0126】
図20は、図15のMPEGビデオデコーダを備えた再生装置の構成を示すブロック図である。なお、図15における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
【0127】
ハードディスク112には、MPEG符号化ストリームが記録されている。サーボ回路111は、コントローラ34の制御に基づいて、ハードディスク112を駆動し、図示しないデータ読み取り部により読み出されたMPEGストリームがIC31の再生回路121に入力される。
【0128】
再生回路121は、図15を用いて説明したストリーム入力回路41乃至クロック発生回路44を含む回路であり、順方向の再生時には、入力された順番にMPEGストリームを再生ストリームとしてMPEGビデオデコーダ122に出力する。そして、逆方向の再生(逆転再生)時には、ストリームバッファ61を用いて、入力されたMPEG符号化ストリームを、逆転再生に適した順番に並べ替えた後、再生ストリームとしてMPEGビデオデコーダ122に出力する。
【0129】
MPEGビデオデコーダ122は、図15を用いて説明したピクチャデコーダ45乃至表示出力回路53を含む回路であり、動き補償回路50の処理により、必要に応じて、ビデオバッファ33に蓄積された復号されたフレームを参照画像として読み出し、動き補償を実行して、入力された再生ストリームの各ピクチャ(フレーム)を、上述した方法で復号し、ビデオバッファ33に蓄積するとともに、表示出力回路53の処理により、ビデオバッファ33に蓄積されたフレームを順次読み出して、図示しない表示部もしくは表示装置に出力し、表示させる。
【0130】
ここでは、ハードディスク112に蓄積されたMPEG符号化ストリームを復号して出力し、表示させる場合を例にあげて説明したが、図15のMPEGビデオデコーダを備えた再生装置、もしくは録画再生装置は、図20で示す構成と異なる構成(例えば、ストリームバッファ61と同様に、符号化ストリームを保持する機能、および再生回路121と同様に、フレームを並べ替える機能をMPEGビデオデコーダ122に備えさせているような構成)であっても、基本的に同様の処理により、入力されたMPEG符号化ストリームが復号されて、出力される。
【0131】
また、符号化ストリームを蓄積する蓄積媒体は、ハードディスク112以外にも、光ディスク、磁気ディスク、光磁気ディスク、半導体メモリ、磁気テープなど、様々な記録媒体を用いることが可能であることは言うまでもない。
【0132】
図21および図22を用いて、MPEG予測符号化画像のピクチャ構成について説明する。
【0133】
図21は、図示しないエンコーダ(符号化装置)に入力されて符号化されるMPEGビデオ信号のピクチャ構成を示す図である。
【0134】
フレームI2は、イントラ符号化フレーム(Iピクチャ)であり、他の画像を参照することなく、符号化(エンコード)が行われる。このようなフレームは、復号の開始点である符号化シーケンスのアクセスポイントを提供するが、その圧縮率は、余り高くない。
【0135】
フレームP5、フレームP8、フレームPb、およびフレームPeは、前方向予測符号化フレーム(Pピクチャ)であり、過去のIピクチャまたはPピクチャからの動き補償予測により、Iピクチャより効率的な符号化が行われる。Pピクチャ自身も、予測の参照として使用される。フレームB3,フレームB4・・・フレームBdは、双方向予測符号化フレームであり、Iピクチャ、Pピクチャと比較して、より効率的に圧縮が行われるが、動き補償のためには、過去および将来の双方の参照画像を必要とする。Bピクチャが、予測の参照として使用されることはない。
【0136】
図22に、図21を用いて説明したMPEG符号化画像を生成するために、図示しないエンコーダで実行される、フレーム間予測を用いたMPEGビデオ信号の符号化の例を示す。
【0137】
入力されたビデオ信号は、例えば15フレーム毎にGOP(Group of Pictures)に分割され、各GOPのはじめから3番目がIピクチャとされ、以下、3フレーム毎に出現するフレームがPピクチャとされ、それ以外のフレームがBピクチャとされる(M=15,N=3)。そして、符号化に後方予測を必要とするBピクチャであるフレームB10およびフレームB11がバッファに一時保存され、IピクチャであるフレームI12が最初に符号化される。
【0138】
フレームI12の符号化の終了後、バッファに一時保存されたフレームB10およびフレームB11が、フレームI12を参照画像として符号化される。Bピクチャは、本来、過去と将来の両方の参照画像を参照して符号化されるべきであるが、フレームB10およびフレームB11のように、前方向に参照可能な画像がない場合、Closed GOPフラグを立てて、前方向予測をせずに後方向の予測のみで符号化が行われる。
【0139】
フレームB10およびフレームB11の符号化が行われている間に入力されたフレームB13およびフレームB14は、ビデオバッファに蓄えられ、次に入力されたフレームP15が、フレームI12を前方向予測画像として参照して、符号化される。そして、ビデオバッファから読み出されたフレームB13およびフレームB14は、フレームI12を前方向予測画像として参照し、フレームP15を後方向予測画像として参照して符号化される。
【0140】
続いて、フレームB16およびフレームB17がビデオバッファに蓄えられ、以下、順次同様にして、Pピクチャは、前回符号化されたIピクチャ、もしくはPピクチャを前方向予測画像として参照して符号化され、Bピクチャは、一旦ビデオバッファに蓄えられた後、以前に符号化されたIピクチャ、もしくはPピクチャを、前方向予測画像もしくは後方向予測画像として参照して符号化される。
【0141】
このようにして、複数のGOPに渡って、画像データが符号化され、符号化ストリームが生成される。図20のハードディスク112には、上述した方法で符号化されたMPEG符号化ストリームが記録される。
【0142】
符号化時に、DCT変換により得られたDCT係数行列は、通常の画像をDCT変換した場合、低周波成分において大きく、高周波成分では小さいという特徴がある。この特徴を利用し情報の圧縮を図るのが量子化(各DCT係数に対してある量子化単位で割り、小数点以下を丸める)である。量子化単位は8×8の量子化テーブルとして設定され、低周波成分に対しては小さい値、高周波成分に対しては大きい値が設定される。量子化の結果、行列の左上以外の成分はほとんど0になる。そして、量子化マトリクスに対応する量子化IDが、圧縮データに付加されて復号側に渡される。すなわち、図20のMPEGビデオデコーダ122は、量子化IDから量子化マトリクスを参照して、MPEG符号化ストリームを復号する。
【0143】
次に、図23を用いて、ハードディスク112から、順方向にビデオデータを再生する場合に、GOP1乃至GOP3の符号化ストリームが再生回路121に入力され、MPEGビデオデコーダ122の処理により復号される処理について説明する。
【0144】
順方向再生のためにハードディスク112から再生回路121に入力されるMPEGビデオストリームは、再生回路121の処理により、入力された順番と同一のピクチャ配列の再生ストリームとして、MPEGビデオデコーダ122に出力される。MPEGビデオデコーダ122において、再生ストリームは、図15乃至図19を用いて説明した手順に従って復号され、ビデオバッファ33に蓄積される。
【0145】
最初に入力されたフレームI12は、Iピクチャであるので、復号に参照画像を必要としない。MPEGビデオデコーダ122において復号されたフレームI12が蓄積されるビデオバッファ33内のバッファ領域をバッファ1とする。
【0146】
次にMPEGビデオデコーダ122に入力されるフレームB10およびフレームB11は、Bピクチャであるが、Closed GOPフラグが立っているので、ビデオバッファ33のバッファ1に蓄積されているフレームI12を後方向参照画像として参照して復号され、ビデオバッファ33に蓄積される。復号されたフレームB10が蓄積されるバッファ領域をバッファ3とする。
【0147】
そして、表示出力回路53の処理により、ビデオバッファ33のバッファ3からフレームB10が読み出されて、図示しない表示部に出力されて表示される。そして、次に復号されたフレームB11が、ビデオバッファ33のバッファ3に蓄積(すなわち、バッファ3に上書き)されたのち、読み出されて、図示しない表示部に出力されて、表示される。
【0148】
その次に、バッファ1からフレームI12が読み出されて、図示しない表示部に出力されて、表示され、そのタイミングで、次のフレームP15が、ビデオバッファ33のバッファ1に蓄積されているフレームI12を参照画像として復号され、ビデオバッファ33のバッファ2に蓄積される。
【0149】
フレームB10およびフレームB11にClosed GOPフラグが立っていない場合、前方向に参照できる画像がないため、フレームB10およびフレームB11は、復号されない。そのような場合、フレームI12が一番初めに表示出力回路53から出力され、表示される。
【0150】
次に入力されるフレームB13は、ビデオバッファ33のバッファ1に蓄積されているフレームI12を前方向参照画像とし、バッファ2に蓄積されているフレームP15を後方向参照画像として参照して復号され、バッファ3に蓄積される。そして、表示出力回路53の処理により、ビデオバッファ33のバッファ3からフレームB13が読み出されて、出力表示処理が実行されている間に、次に入力されるフレームB14が、ビデオバッファ33のバッファ1に蓄積されているフレームI12を前方向参照画像とし、バッファ2に蓄積されているフレームP15を後方向参照画像として参照して復号され、バッファ3に蓄積される。そして、表示出力回路53の処理により、ビデオバッファ33のバッファ3からフレームB14が読み出されて、出力され、表示される。
【0151】
次に入力されるフレームP18は、バッファ2に蓄積されているフレームP15を前方向参照画像として復号される。フレームB14の復号が終われば、バッファ1に蓄積されているフレームI12は、その後、参照されることがないので、復号されたフレームP18は、ビデオバッファ33のバッファ1に蓄積される。そして、バッファ1にフレームP18が蓄積されるタイミングで、バッファ2からフレームP15が読み出されて、出力され、表示される。
【0152】
以下、同様にして、GOP1のフレームが、順次復号され、バッファ1乃至3に蓄積され、順次、読み出されて表示される。
【0153】
GOP2の先頭のフレームI22が入力されたとき、IピクチャであるフレームI22は、復号時に参照画像を必要としないので、そのまま復号され、バッファ2に蓄積される。そのタイミングで、GOP1のフレームP1eが読み出されて、出力され、表示される。
【0154】
続いて入力されるGOP2のフレームB20およびフレームB21は、バッファ1のフレームP1eを前方向参照画像、バッファ2のフレームI22を後方向参照画像として復号され、バッファ3に順次蓄積され、読み出されて、表示される。このように、GOPの先頭にあるBピクチャは、前のGOPのPピクチャを前方向参照画像として復号される。
【0155】
以下、同様にして、GOP2のフレームが、順次復号され、バッファ1乃至3に蓄積され、順次、読み出されて表示される。そして、同様にして、GOP3以下のそれぞれのフレームが順次復号され、バッファ1乃至3に蓄積され、順次、読み出されて表示される。
【0156】
以上の処理において、MPEGビデオデコーダ122は、量子化IDを参照して復号処理を実行する。
【0157】
次に、図20を用いて説明した再生装置において、逆転再生を実施する場合について説明する。
【0158】
従来の逆転再生においては、Iピクチャのみを取り出して復号を実行していたので、15フレーム中の1フレームしか表示されない、不自然な再生画像しか得ることができなかった。
【0159】
それに対して、図20の再生回路121には、スタートコードバッファ62に記録されたスタートコードに基づいて、ストリームバッファ61に入力されたGOPのフレームの順番を変更して再生ストリームを生成させることができ、MPEGビデオデコーダ122には、15フレーム全てを復号させることができる。
【0160】
しかしながら、再生回路121は、逆転再生を行うために、スタートコードバッファ62に記録されたスタートコードに基づいて、ストリームバッファ61に入力されたGOPのフレームの順番を単純に逆転させて再生ストリームを生成すればいいのではない。
【0161】
例えば、図22を用いて説明したMPEG符号化ストリームのGOP2およびGOP1を逆転再生させる場合、最初に出力されて表示されるフレームは、フレームP2eでなければならないが、フレームP2eを復号するためには、前方向参照画像として、フレームP2bを参照する必要があり、更にフレームP2bを復号するためには、前方向参照画像としてフレームP28が必要である。フレームP28を復号するためにも前方向参照画像が必要であるので、結局、フレームP2eを復号し、出力して表示させるためには、GOP2のIピクチャおよびPピクチャが全て復号されていなければならない。
【0162】
逆転再生時に最初に表示されるフレームP2eを復号するために、GOP2を全て復号させてビデオバッファ33に蓄積させ、後のフレームから順に読み出す方法も考えられるが、その場合、ビデオバッファ33には、1GOP(15フレーム)分のバッファ領域が必要となる。
【0163】
また、この方法では、フレームP2eから、フレームI22までは復号して再生することが可能であるが、GOP2のはじめの2フレーム、すなわち、逆転再生時に最後に表示されるべきフレームであるフレームB21およびフレームB20を復号するためには、前方向参照画像としてGOP1のフレームP1eが必要である。GOP1のフレームP1eを復号するためには、GOP1の全てのIピクチャおよびPピクチャが必要である。
【0164】
すなわち、この方法では、ビデオバッファ33に15フレーム分のバッファ領域を必要としながら、1GOP分の全てのフレームの逆転再生ができない。
【0165】
図22を用いて説明したように、M=15、N=3で符号化を行った場合、1GOP内には、合計5フレームのIピクチャもしくはPピクチャが含まれる。
【0166】
そこで、ストリームバッファ61に、少なくとも2GOP分のフレームを蓄積することが可能なようにし、再生回路121において生成される再生ストリームのフレームの順番を、MPEGビデオデコーダ122の逆転再生のためのデコードの順番に基づいて決定し、ビデオバッファ33に、少なくとも、「1GOPに含まれるIピクチャおよびPピクチャの合計数+2」で表わされる数のフレーム(例えば、M=15、N=3のMPEG符号化ストリームを逆転再生する場合、7フレーム)を蓄積することが可能なようにすることにより、GOPをまたいだ部分も連続して、全てのフレームを逆転再生することができる。
【0167】
図24を用いて、ハードディスク112から、GOP1乃至GOP3の画像データが逆転再生される場合の復号処理について説明する。
【0168】
コントローラ34は、サーボ回路111を制御して、ハードディスク112から、まずGOP3、次いでGOP2のMPEG符号化ストリームを再生回路121に出力させる。再生回路121は、ストリームバッファ61に、GOP3、次いでGOP2のMPEG符号化ストリームを蓄積させる。
【0169】
再生回路121は、ストリームバッファ61からGOP3の先頭フレームI32を読み出し、再生ストリームの最初のフレームとして、MPEGビデオデコーダ122に出力する。フレームI32はIピクチャであるから、復号のために参照画像を必要としないので、MPEGビデオデコーダ122において復号され、ビデオバッファ33に蓄積される。ビデオバッファ33において、復号されたフレームI32が蓄積される領域を、バッファ1とする。
【0170】
ここで、それぞれのフレームのデータは、図2を用いて説明したヘッダーおよび拡張データに記載されたパラメータを基に復号される。上述したように、MPEGビデオデコーダ122のピクチャデコーダ45において、それぞれのパラメータがデコードされ、スライスデコーダ制御回路46に供給されて、復号処理に用いられる。GOP1が復号される場合、GOP1のsequence_header、sequence_extension、およびGOP_headerに記載されている上位層のパラメータ(例えば、上述した量子化マトリクス)を用いて復号が実施され、GOP2が復号される場合、GOP2のsequence_header、sequence_extension、およびGOP_headerに記載されている上位層のパラメータを用いて復号が実施され、GOP3が復号される場合、GOP3のsequence_header、sequence_extension、およびGOP_headerに記載されている上位層のパラメータを用いて復号が実施される。
【0171】
しかしながら、逆転再生時においては、GOP毎に復号が実施されないので、MPEGビデオデコーダ122は、それぞれのGOPにおいて、最初にIピクチャがデコードされた時に、上位層パラメータをコントローラ34に供給する。コントローラ34は、内部に有する図示しないメモリに、供給された上位層パラメータを保持する。
【0172】
コントローラ34は、MPEGビデオデコーダ122において実行される復号処理を監視し、復号処理中のフレームに対応する上位層パラメータを内部のメモリから読み出してMPEGビデオデコーダ122に供給し、適切な復号処理がなされるようにする。
【0173】
図24中、再生ストリームのフレーム番号の上部に示される数字は、量子化IDであり、再生ストリームの各フレームは、図23を用いて説明した順方向の復号と同様に、量子化IDを基に復号される。
【0174】
なお、本実施の形態においては、コントローラ34がその内部にメモリを有し、上位層符号化パラメータを保持するものとして説明しているが、コントローラ34に接続されたメモリを設けるようにし、コントローラ34が内部にメモリを保有せずに、外部のメモリに上位層符号化パラメータを保持し、必要に応じて読み出して、MPEGビデオデコーダ122に供給することができるようにしても良い。
【0175】
また、MPEGビデオデコーダ122に、GOPの上位層符号化パラメータを保持するためのメモリを備えさせるようにしてもよい。更に、上位層符号化パラメータなどの符号化条件が既知である場合、MPEGビデオデコーダ122に、符号化条件を予め設定しても良いし、上位層符号化パラメータがGOPによって変化しないことが既知である場合、コントローラ34によって、GOP毎に上位層符号化パラメータを読み出して、フレーム毎にMPEGビデオデコーダ122に設定するのではなく、動作開始時に一度だけ、MPEGビデオデコーダ122に符号化パラメータを設定するようにしても良い。
【0176】
再生回路121は、ストリームバッファ61からフレームP35を読み出し、再生ストリームの次のフレームとして、MPEGビデオデコーダ122に出力する。MPEGビデオデコーダ122において、フレームP35は、バッファ1に記録されているフレームI32を前方向参照画像として復号され、ビデオバッファ33に蓄積される。ビデオバッファ33において、復号されたフレームP35が蓄積される領域を、バッファ2とする。
【0177】
再生回路121は、ストリームバッファ61からフレームP38、フレームP3b、およびフレームP3eを順次読み出し、再生ストリームとして出力する。これらのPピクチャは、MPEGビデオデコーダ122において、一つ前に復号されたPピクチャを前方向参照画像として復号され、ビデオバッファ33に蓄積される。ビデオバッファ33において、復号されたこれらのPピクチャのフレームが蓄積される領域を、バッファ3乃至バッファ5とする。
【0178】
このとき、GOP3のIピクチャおよびPピクチャは、全て復号され、ビデオバッファ33に蓄積されている状態である。
【0179】
続いて、再生回路121は、ストリームバッファ61からGOP2のフレームI22を読み出し、再生ストリームとして出力する。MPEGデコーダ122において、IピクチャであるフレームI22は、参照画像を必要とせずに復号され、ビデオバッファ33に蓄積される。復号されたフレームI22が蓄積される領域をバッファ6とする。また、バッファ6にフレームI22が蓄積されるタイミングで、バッファ5から、GOP3のフレームP3eか読み出されて、出力され、逆転再生の最初の画像として表示される。
【0180】
再生回路121は、ストリームバッファ61から、GOP3のフレームB3d、すなわち、GOP3のBピクチャの中で、初めに逆転再生されるべきフレームを読み出し、再生ストリームとして出力する。MPEGデコーダ122において、フレームB3dは、バッファ4のフレームP3bを前方向参照画像、バッファ5のフレームP3eを後方向参照画像として復号され、ビデオバッファ33に蓄積される。復号されたフレームB3dが蓄積される領域をバッファ7とする。
【0181】
バッファ7に蓄積されたフレームB3dは、フレーム/フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。フレームB3dの表示と同一のタイミングで、再生回路121は、ストリームバッファ61から、GOP3のフレームB3cを読み出して、MPEGビデオデコーダ122に出力する。MPEGビデオデコーダ122において、フレームB3cは、フレームB3dと同様に、バッファ4のフレームP3bを前方向参照画像、バッファ5のフレームP3eを後方向参照画像として復号される。
【0182】
先に復号され、出力されたフレームB3dは、Bピクチャであるので、他のフレームの復号のために参照されることはない。したがって、復号されたフレームP3cは、フレームB3dに代わって、バッファ7に蓄積(すなわち、バッファ7に上書き)され、フレーム/フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【0183】
再生回路121は、ストリームバッファ61から、GOP2のフレームP25を読み出して、MPEGビデオデコーダ122に出力する。MPEGビデオデコーダ122において、GOP2のフレームP25は、バッファ6のフレームI22を前方向参照画像として復号される。バッファ5に蓄積されているフレームP3eは、これ以降、参照画像として利用されることはないので、復号されたフレームP25は、フレームP3eに代わって、バッファ5に蓄積される。そして、バッファ5にフレームP25が蓄積されるのと同一のタイミングで、バッファ4のフレームP3bが読み出され、表示される。
【0184】
再生回路121は、ストリームバッファ61から、GOP3のフレームB3aを読み出し、再生ストリームとして出力する。MPEGデコーダ122において、フレームB3aは、バッファ3のフレームP38を前方向参照画像、バッファ4のフレームP3bを後方向参照画像として復号され、ビデオバッファ33のバッファ7に蓄積される。
【0185】
バッファ7に蓄積されたフレームB3aは、フレーム/フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。フレームB3aの表示と同一のタイミングで、再生回路121は、ストリームバッファ61から、GOP3のフレームB39を読み出して、MPEGビデオデコーダ122に出力する。MPEGビデオデコーダ122において、フレームB39は、フレームB3aと同様に、バッファ3のフレームP38を前方向参照画像、バッファ4のフレームP3bを後方向参照画像として復号され、フレームB3aに代わって、バッファ7に蓄積され、フレーム/フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【0186】
再生回路121は、ストリームバッファ61から、GOP2のフレームP28を読み出して、MPEGビデオデコーダ122に出力する。MPEGビデオデコーダ122において、GOP2のフレームP28は、バッファ5のフレームP25を前方向参照画像として復号される。バッファ4に蓄積されているフレームP3bは、これ以降、参照画像として利用されることはないので、復号されたフレームP28は、フレームP3bに代わって、バッファ4に蓄積される。そして、バッファ4にフレームP28が蓄積されるのと同一のタイミングで、バッファ3のフレームP38が読み出され、表示される。
【0187】
このように、GOP2のIピクチャもしくはPピクチャが復号され、バッファ33に蓄積されるタイミングで、GOP3のIピクチャもしくはPピクチャが、バッファ33から読み出されて、表示される。
【0188】
以下、同様にして、図24に示されるように、GOP3の残りのBピクチャ、およびGOP2の残りのPピクチャが、B37,B36,P2b,B34,B33,P2eの順に復号される。復号されたBピクチャは、バッファ7に蓄積され、順次読み出されて表示される。復号されたGOP2のPピクチャは、順次、参照が終了したフレームが蓄積されていたバッファ1乃至6のいずれかに蓄積され、バッファ1乃至6のいずれかに既に蓄積されているGOP3のPピクチャが、そのタイミングで、逆転再生の順番にかなうように、Bピクチャの間に読み出されて出力される。
【0189】
再生回路121は、ストリームバッファ61から、GOP3のフレームB31、次いで、フレームB30を読み出して、MPEGビデオデコーダ122に出力する。MPEGビデオデコーダ122において、フレームB31およびフレームB30の復号に必要な前方向参照画像であるフレームP2eはバッファ2に、後方向参照画像であるI32は、バッファ1にそれぞれ蓄積されているので、GOP3のはじめの2フレーム、すなわち、逆転再生時に最後に表示されるべきフレームも、復号することが可能となる。
【0190】
復号されたフレームB31およびフレームB30は、順次、バッファ7に蓄積され、フレーム/フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【0191】
GOP3の全てのフレームがストリームバッファ61から読み出された後、コントローラ34は、サーボ回路111を制御して、ハードディスク112からGOP1を読み出させ、再生回路121に供給させる。再生回路121は、所定の処理を実行し、GOP1のスタートコードを抽出して、スタートコードバッファ62に記録させるとともに、GOP1の符号化ストリームをストリームバッファ61に供給して蓄積させる。
【0192】
次に、再生回路121は、ストリームバッファ61から、GOP1のフレームI12を読み出し、再生ストリームとして、MPEGビデオデコーダ122に出力する。フレームI12は、Iピクチャであるから、MPEGビデオデコーダ122において、他の画像を参照せずに復号され、この後の処理で参照されることのないバッファ1のフレームI32に代わって、バッファ1に出力され、蓄積される。このとき、バッファ2から、フレームP2eが読み出されて、出力され、GOP2の逆転再生表示が開始される。
【0193】
次に、再生回路121は、ストリームバッファ61から、GOP2のフレームB2d、すなわち、GOP2のBピクチャの中で、初めに逆転再生されるべきフレームを読み出し、再生ストリームとして出力する。MPEGデコーダ122において、フレームB2dは、バッファ3のフレームP2bを前方向参照画像、バッファ2のフレームP2eを後方向参照画像として復号され、ビデオバッファ33に蓄積される。復号されたフレームB2dは、バッファ7に蓄積され、フレーム/フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【0194】
以下、同様にして、GOP2の、残りのBピクチャ、およびGOP1の残りのPピクチャが、B2c,P15,B2a,B29,P18,B27,B26,P1b,B24,B23,P1e,P21、P20の順に復号され、順次、参照が終了したフレームが蓄積されていたバッファ1乃至7のいずれかに蓄積され、逆転再生の順番で読み出されて出力される。そして、図示はされていないが、最後に、GOP1の残りのBピクチャが復号され、順次、バッファ7に蓄積され、逆転再生の順番で読み出されて出力される。
【0195】
図24を用いて説明した処理においては、通常再生と同一速度の逆転再生を実行したが、再生回路121が、再生ストリームを通常再生時の3分の1の速度でMPEGビデオデコーダ122に出力し、MPEGビデオデコーダ122が、通常の3フレームの処理時間で1フレームのみの復号処理を実行して、図示しない表示部、もしくは表示装置に、通常の3フレームの表示時間に、同一のフレームを表示させるようにすることにより、3分の1倍速の順方向再生、および逆転再生が、同様の処理によって可能となる。
【0196】
また、表示出力回路53が、同一のフレームを繰り返して出力することにより、いわゆるスチル再生も可能となる。なお、再生装置121からMPEGビデオデコーダ122へのデータ出力速度、およびMPEGビデオデコーダ122の処理速度を変更することにより、任意のnで、n分の1倍速の順方向再生、および逆転再生が、同様の処理によって可能となる。
【0197】
すなわち、本開示を用いた再生装置においては、等倍速の逆転再生、n分の1倍速の逆転再生、スチル再生、n分の1倍速の順方向再生、等倍速の順方向再生の間での任意の速度において、滑らかなトリック再生が可能となる。
【0198】
また、MPEGビデオデコーダ122は、MPEG2 4:2:2P@HL対応のデコーダであるので、MPEG2 MP@MLの符号化ストリームを6倍速で復号する能力を有する。したがって、再生回路121が、MPEG2 MP@MLの符号化ストリームから生成した再生ストリームを、通常再生時の6倍の速度でMPEGビデオデコーダ122に出力すれば、MPEGビデオデコーダ122は、MPEG2 MP@MLの符号化ストリームを6倍速で復号する能力を有するので、図示しない表示部、もしくは表示装置に、6フレーム毎に抽出されたフレームを表示させるようにすることにより、6倍速の順方向再生、および逆転再生が、同様の処理によって可能となる。
【0199】
すなわち、本開示を用いた再生装置においては、MPEG2 MP@MLの符号化ストリームを、6倍速の逆転再生、等倍速の逆転再生、n分の1倍速の逆転再生、スチル再生、n分の1倍速の順方向再生、等倍速の順方向再生、6倍速の順方向再生の間での任意の速度において、滑らかなトリック再生が可能となる。
【0200】
なお、MPEGビデオデコーダ122が、N倍速の復号能力を備えている場合、本開示の再生装置は、同様の処理により、N倍速の順方向再生、および逆転再生が可能であり、N倍速の逆転再生、等倍速の逆転再生、n分の1倍速の逆転再生、スチル再生、n分の1倍速の順方向再生、等倍速の順方向再生、N倍速の順方向再生の間での任意の速度において、滑らかなトリック再生が可能となる。
【0201】
これにより、例えば、映像信号の検証時において、映像素材の内容を容易に検証することができ、映像素材検証作業の効率を改善したり、映像信号の編集作業において、編集点を快適に検索することができ、編集作業の効率を改善することができる。
【0202】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0203】
この記録媒体は、図15もしくは図20に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク101(フロッピーディスクを含む)、光ディスク102(CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)を含む)、光磁気ディスク103(MD(Mini Disk)を含む)、もしくは半導体メモリ104などよりなるパッケージメディアなどにより構成される。
【0204】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【符号の説明】
【0205】
31 IC, 32 バッファ, 33 ビデオバッファ, 34 コントローラ, 42 スタートコード検出回路, 43 ストリームバッファ制御回路, 45 ピクチャデコーダ, 46 スライスデコーダ制御回路, 47乃至49 スライスデコーダ, 50 動き補償回路, 51 輝度バッファ制御回路, 52 色差バッファ制御回路, 61 ストリームバッファ, 62 スタートコードバッファ, 71 輝度バッファ, 72 色差バッファ, 111 サーボ回路, 112 ハードディスク, 121 再生回路, 122 MPEGビデオデコーダ

【特許請求の範囲】
【請求項1】
符号化ストリームを復号する復号装置において、
前記符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、
複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御手段と、
複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段と、
複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停手段と、
画像データを保持する保持手段と
を備える復号装置。
【請求項2】
前記符号化ストリームをバッファリングする第1のバッファ手段と、
前記符号化ストリームから、前記符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、前記スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、
読み出された前記スタートコードおよび前記位置情報をバッファリングする第2のバッファ手段と、
前記第1のバッファ手段による前記符号化ストリームのバッファリング、および前記第2のバッファ手段による前記スタートコードおよび前記位置情報のバッファリングを制御するバッファリング制御手段と
をさらに備える請求項1に記載の復号装置。
【請求項3】
前記保持手段は、前記画像データの輝度成分と色差成分をそれぞれ分けて保持する
請求項1に記載の復号装置。
【請求項4】
前記復号手段に供給される前記符号化ストリームのフレームの順番を変更する変更手段を
さらに備え、
前記保持手段は、画像シーケンス内のイントラ符号化フレームおよび前方向予測符号化フレームを合計したフレーム数より少なくとも2フレーム多い数のフレームを保持し、
前記変更手段は、前記符号化ストリームを逆転再生させるための所定の順番になるように、前記符号化ストリームのフレームの順番を変更する
請求項1に記載の復号装置。
【請求項5】
前記保持手段により保持されている前記画像データを読み出して出力する出力手段を
さらに備え、
前記復号手段は、前記符号化ストリームを通常再生に必要な処理速度のN倍速で復号し、
前記出力手段は、前記保持手段により保持されている前記画像データのうちNフレーム毎の前記画像データを出力する
請求項1に記載の復号装置。
【請求項6】
符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、
複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段と
を備える復号装置の復号方法において、
前記復号装置による、
複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御ステップと、
複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停ステップと、
画像データを保持手段に保持させる保持制御ステップと
を含む復号方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2011−172243(P2011−172243A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2011−60652(P2011−60652)
【出願日】平成23年3月18日(2011.3.18)
【分割の表示】特願2001−114698(P2001−114698)の分割
【原出願日】平成13年4月13日(2001.4.13)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】