(57)【要約】【課題】複数のスライスデコーダの動作を制御する。【解決手段】ピクチャ層のパラメータの入力を受けたスライスデコーダ制御回路４６は、スライスデコーダ４７にピクチャ層のパラメータとスライス１の書き込みポインタを、スライスデコーダ４８にピクチャ層のパラメータとスライス２の書き込みポインタを、スライスデコーダ４９にピクチャ層のパラメータとスライス３の書き込みポインタを、それぞれ順番に供給してデコードさせる。スライスデコーダ制御回路４６は、スライスデコーダ４７乃至４９から入力されるデコード処理の完了を示す信号の入力を基に、タイミングＡで、スライスデコーダ４８にスライス４の書き込みポインタを供給してデコードさせ、タイミングＢで、スライスデコーダ４９にスライス５の書き込みポインタを供給してデコードさせ、以下、最後のスライスのデコードが終了されるまで同様の処理が繰り返される。【選択図】図１７
2011172243.tif 000002
【特許請求の範囲】
【請求項１】
符号化ストリームを復号する復号装置において、
前記符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、
複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御手段と、
複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段と、
複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停手段と、
画像データを保持する保持手段と
を備える復号装置。
【請求項２】
前記符号化ストリームをバッファリングする第１のバッファ手段と、
前記符号化ストリームから、前記符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、前記スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、
読み出された前記スタートコードおよび前記位置情報をバッファリングする第２のバッファ手段と、
前記第１のバッファ手段による前記符号化ストリームのバッファリング、および前記第２のバッファ手段による前記スタートコードおよび前記位置情報のバッファリングを制御するバッファリング制御手段と
をさらに備える請求項１に記載の復号装置。
【請求項３】
前記保持手段は、前記画像データの輝度成分と色差成分をそれぞれ分けて保持する
請求項１に記載の復号装置。
【請求項４】
前記復号手段に供給される前記符号化ストリームのフレームの順番を変更する変更手段を
さらに備え、
前記保持手段は、画像シーケンス内のイントラ符号化フレームおよび前方向予測符号化フレームを合計したフレーム数より少なくとも２フレーム多い数のフレームを保持し、
前記変更手段は、前記符号化ストリームを逆転再生させるための所定の順番になるように、前記符号化ストリームのフレームの順番を変更する
請求項１に記載の復号装置。
【請求項５】
前記保持手段により保持されている前記画像データを読み出して出力する出力手段を
さらに備え、
前記復号手段は、前記符号化ストリームを通常再生に必要な処理速度のＮ倍速で復号し、
前記出力手段は、前記保持手段により保持されている前記画像データのうちＮフレーム毎の前記画像データを出力する
請求項１に記載の復号装置。
【請求項６】
符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、
複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段と
を備える復号装置の復号方法において、
前記復号装置による、
複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御ステップと、
複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停ステップと、
画像データを保持手段に保持させる保持制御ステップと
を含む復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、復号装置および復号方法に関し、特に、実現可能な回路規模で実時間動作が可能な４：２：２Ｐ@HLに対応したビデオデコーダを実現することができる復号装置および復号方法に関する。
【背景技術】
【０００２】
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に規定されているビデオ信号の高能率符号化方式である。
【０００３】
MPEG2の符号化ストリームは、符号化の手法によって決まるプロファイルと、取り扱う画素数によって決まるレベルによってクラス分けされ、広範囲なアプリケーションに対応できるようになされている。例えば、MP@ML（メイン・プロファイル・メイン・レベル）は、そのクラスの１つであり、DVB（Digital Video Broadcast）や、DVD（Digital Versatile Disk）に広く実用化されている。プロファイルおよびレベルは、図５を用いて後述するsequence_extensionに記述される。
【０００４】
また、放送局におけるビデオ信号の制作には、ビデオの色差信号を、従来のベースバンドと同様の４：２：２方式で取り扱い、ビットレートの上限を増加した４：２：２Ｐ（４：２：２プロファイル）が規定されている。更に、次世代の高解像度ビデオ信号に対応するために、HL（ハイ・レベル）が規定されている。
【０００５】
図１に、MPEG2の代表的なクラスと、それぞれのクラスにおける、各種パラメータの上限値を示す。図１には、４：２：２Ｐ@HL（４：２：２プロファイル・ハイ・レベル）、４：２：２Ｐ@ML（４：２：２：プロファイル・メイン・レベル）、MP@HL（メイン・プロファイル・ハイ・レベル）、MP@HL‐1440（メイン・プロファイル・ハイ・レベル‐１４４０）、MP@ML（メイン・プロファイル・メイン・レベル）、MP@LL（メイン・プロファイル・ロー・レベル）、および、SP@ML（シンプル・プロファイル・メイン・レベル）について、ビットレート、１ラインあたりのサンプル数、１フレームあたりのライン数、フレーム周波数、およびサンプルの処理時間の上限値がそれぞれ示されている。
【０００６】
図１から、４：２：２Ｐ@HLのビットレートの上限値は、３００（Mbit/sec）であり、処理する画素数の上限値は、62,668,800（samples/sec）である。一方、MP@MPのビットレートの上限値は、１５（Mbit/sec）であり、処理する画素数の上限値は、10,368,000（samples/sec）である。すなわち、４：２：２Ｐ@HLをデコードするビデオデコーダは、MP@MLをデコードするビデオデコーダと比較して、ビットレートで２０倍、処理する画素数で約６倍の処理能力が必要であることがわかる。
【０００７】
図２に、MPEG2ビデオビットストリームのレベル構造を示す。
【０００８】
最上位層であるピクチャ層の最初には、sequence_headerが記述されている。sequence_headerは、MPEGビットストリームのシーケンスのヘッダデータを定義するものである。シーケンス最初のsequence_headerに、sequence_extensionが続かない場合、このビットストリームには、ISO/IEC11172−2の規定が適応される。シーケンスの最初のsequence_headerに、sequence_extensionが続く場合、その後発生する全てのsequence_headerの直後には、sequence_extensionが続く。すなわち、図２に示す場合においては、全てのsequence_headerの直後に、sequence_extensionが続く。
【０００９】
sequence_extensionは、MPEGビットストリームのシーケンス層の拡張データを定義するものである。sequence_extensionは、sequence_headerの直後にのみ発生し、かつ、復号後、およびフレームリオーダリング後にフレームの損失がないようにするために、ビットストリームの最後に位置するsequence_end_codeの直前にきてはならない。また、ビットストリーム中に、sequence_extensionが発生した場合、それぞれのpicture_headerの直後にpicture_cording_extentionが続く。
【００１０】
GOP（group_of_picture）内には、複数の画像（picture）が含まれる。GOP_headerは、MPEGビットストリームのGOP層のヘッダデータを定義するものであり、更に、このビットストリーム中には、picture_headerとpicture_coding_extensionによって定義されたデータエレメントが記述されている。１枚の画像は、picture_headerおよびpicture_coding_extensionに続くpicture_dataとして符号化される。また、GOP_headerに続く最初の符号化フレームは、符号化されたIフレームである（すなわち、GOP_headerの最初の画像はIピクチャである）。ITU‐T勧告H.262には、sequence_extensionおよびpicture_cording_extentionの他、各種の拡張が定義されているが、ここでは図示、および説明は省略する。
【００１１】
picture_headerは、MPEGビットストリームのピクチャ層のヘッダデータを定義するものであり、picture_coding_extensionは、MPEGビットストリームのピクチャ層の拡張データを定義するものである。
【００１２】
picture_dataは、MPEGビットストリームのスライス層およびマクロブロック層に関するデータエレメントを記述するものである。picture_dataは、図２に示されるように、複数のslice（スライス）に分割され、スライスは、複数のmacro_block（マクロブロック）に分割される。
【００１３】
macro_blockは、１６×１６の画素データで構成されている。スライスの最初のマクロブロックおよび最後のマクロブロックは、スキップマクロブロック（情報を含まないマクロブロック）ではない。マクロブロックは、１６×１６の画素データで構成されている。また、各ブロックは、８×８の画素データで構成されている。また、フレームＤＣＴ（Discrete Cosine Transform：離散コサイン変換）符号化およびフィールドＤＣＴ符号化の使用が可能なフレーム画像においては、フレーム符号化とフィールド符号化の場合で、マクロブロックの内部構成が相違する。
【００１４】
マクロブロックは、輝度成分および色差成分の1区画を含む。マクロブロックという用語は、情報源および復号データまたは対応する符号化データ成分のいずれかを示す。マクロブロックには、４：２：０、４：２：２および４：４：４の3つの色差フォーマットがある。マクロブロックにおけるブロックの順序は、それぞれの色差フォーマットによって異なる。
【００１５】
図３（Ａ）に、４：２：０：方式の場合におけるマクロブロックを示す。４：２：０方式の場合、マクロブロックは、４個の輝度（Y）ブロックと、それぞれ１個の色差（Cb，Cr）ブロックで構成される。図３（Ｂ）に、４：２：２方式の場合におけるマクロブロックを示す。４：２：２方式の場合、マクロブロックは、４個の輝度（Y）ブロックと、それぞれ２個の色差（Cb，Cr）ブロックで構成される。
【００１６】
各マクロブロックは、いくつかの方法により、予測符号化処理が可能である。予測モードは、フィールド予測とフレーム予測の２種類に大別される。フィールド予測においては、先に復号された、１つ、もしくは複数のフィールドのデータを使用し、各フィールドについて、独自に予測を行う。フレーム予測は、先に復号された、１つ、もしくは複数のフレームを使用してフレームの予測を行う。フィールド画像内では、予測は全てフィールド予測である。一方、フレーム画像においては、フィールド予測、またはフレーム予測のいずれかにより予測が可能であり、その予測方法は、マクロブロックごとに選択される。また、マクロブロックの予測符号化処理においては、フィールド予測およびフレーム予測以外に、１６×８動き補償およびデュアルプライムの２種類の特別予測モードを使用することができる。
【００１７】
動きベクトル情報、および他の周辺情報は、各マクロブロックの予測誤差信号とともに符号化される。動きベクトルの符号化については、可変長符号を使用して符号化された最後の動きベクトルを予測ベクトルとして、予測ベクトルとの差分ベクトルを符号化する。表示可能なベクトルの最大長は、画像毎にプログラムすることができる。また、適切な動きベクトルの計算は、符号器が行う。
【００１８】
そして、picture_dataの次には、sequence_headerとsequence_extensionが配置されている。このsequence_headerとsequence_extensionによって記述されたデータエレメントは、ビデオストリームのシーケンスの先頭に記述されたsequence_headerとsequence_extensionによって記述されたデータエレメントと全く同じである。このように同じデータをストリーム中に記述する理由は、ビットストリーム受信装置側でデータストリームの途中（例えばピクチャ層に対応するビットストリーム部分）から受信が開始された場合に、シーケンス層のデータを受信できなくなり、ストリームをデコード出来なくなることを防止するためである。
【００１９】
最後のsequence_headerとsequence_extensionとによって定義されたデータエレメントの次、つまり、データストリームの最後には、シーケンスの終わりを示す３２ビットのsequence_end_codeが記述されている。
【００２０】
次に、図４乃至１２を用いて、それぞれのデータエレメントの詳細について説明する。
【００２１】
図４に、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等から構成される。
【００２２】
sequence_header_codeは、シーケンス層のスタート同期コードを表すデータである。horizontal_size_valueは、画像の水平方向の画素数の下位１２ビットからなるデータである。vertical_size_valueは、画像の縦のライン数の下位１２ビットからなるデータである。aspect_ratio_informationは、画素のアスペクト比（縦横比）または表示画面アスペクト比を表すデータである。frame_rate_codeは、画像の表示周期を表すデータである。bit_rate_valueは、発生ビット量に対する制限のためのビットレートの下位18ビットのデータである。
【００２３】
そして、marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。vbv_buffer_size_valueは、発生符号量制御用の仮想バッファＶＢＶ（Video Buffering Verifier）の大きさを決める値の下位10ビットデータである。constrained_parameter_flagは、各パラメータが制限以内であることを示すデータである。load_non_intra_quantiser_matrixは、非イントラＭＢ用量子化マトリックス・データの存在を示すデータである。load_intra_quantiser_matrixは、イントラＭＢ用量子化マトリックス・データの存在を示すデータである。intra_quantiser_matrixは、イントラＭＢ用量子化マトリックスの値を示すデータである。non_intra_quantiser_matrixは、非イントラＭＢ用量子化マトリックスの値を表すデータである。
【００２４】
図５に、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等のデータエレメントから構成されている。
【００２５】
extension_start_codeは、エクステンションデータのスタート同期コードを表すデータである。extension_start_code_identifierは、どの拡張データが送られるかを示すデータである。profile_and_level_indicationは、ビデオデータのプロファイルとレベルを指定するためのデータである。progressive_sequenceは、ビデオデータが順次走査（プログレッシブ画像）であることを示すデータである。chroma_formatは、ビデオデータの色差フォーマットを指定するためのデータである。horizontal_size_extensionは、シーケンスヘッダのhorizntal_size_valueに加える上位２ビットのデータである。vertical_size_extensionは、シーケンスヘッダのvertical_size_valueに加える上位２ビットのデータである。
【００２６】
そして、bit_rate_extensionは、シーケンスヘッダのbit_rate_valueに加える上位１２ビットのデータである。marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。vbv_buffer_size_extensionは、シーケンスヘッダのvbv_buffer_size_valueに加える上位８ビットのデータである。low_delayは、Ｂピクチャを含まないことを示すデータである。frame_rate_extension_nは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。frame_rate_extension_dは、シーケンスヘッダのframe_rate_codeと組み合わせてフレームレートを得るためのデータである。
【００２７】
図６に、GOP_headerのデータ構成を示す。GOP_headerを表わすデータエレメントは、group_start_code、time_code、closed_gop、およびbroken_linkから構成される。
【００２８】
group_start_codeは、GOP層の開始同期コードを示すデータである。time_codeは、GOPの先頭ピクチャの時間を示すタイムコードである。closed_gopは、GOP内の画像が他のGOPから独立再生可能なことを示すフラグデータである。broken_linkは、編集などのためにGOP内の先頭のＢピクチャが正確に再生できないことを示すフラグデータである。
【００２９】
図７に、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等から構成される。
【００３０】
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では使用されない固定データである。
【００３１】
図８に、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等から構成される。
【００３２】
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は、DC係数の精度を表すデータである。ブロック内の各画素の輝度および色差信号を表した行列fに、ＤＣＴを施すと、８×８のＤＣＴ係数行列Ｆが得られる。この行列Ｆの左上隅の係数をDC係数と呼ぶ。DC係数はブロック内の平均輝度、平均色差を表わす信号である。picture_structureは、フレームストラクチャかフィールドストラクチャかを示すデータであり、フィールドストラクチャの場合は、上位フィールドか下位フィールドかもあわせて示すデータである。top_field_firstは、フレームストラクチャの場合、最初のフィールドが上位か下位かを示すデータである。frame_predictive_frame_dctは、フレームストラクチャの場合、フレーム・モードＤＣＴの予測がフレーム・モードだけであることを示すデータである。concealment_motion_vectorsは、イントラマクロブロックに伝送エラーを隠蔽するための動きベクトルがついていることを示すデータである。
【００３４】
q_scale_typeは、線形量子化スケールを利用するか、非線形量子化スケールを利用するかを示すデータである。intra_vlc_formatは、イントラマクロブロックに、別の２次元VLC（Variable Length Cording）を使うか否かを示すデータである。alternate_scanは、ジグザグスキャンを使うか、オルタネート・スキャンを使うかの選択を表すデータである。repeat_firt_fieldは、２：３プルダウンの際に使われるデータである。chroma_420_typeは、信号フォーマットが４：２：０の場合、次のprogressive_frame と同じ値であり、そうでない場合は０を表すデータである。progressive_frameは、このピクチャが、順次走査かインタレースフィールドかを示すデータである。composite_display_flagは、ソース信号がコンポジット信号であったかどうかを示すデータである。v_axis、field_sequence、sub_carrier、burst_amplitude、およびsub_carrier_phaseは、ソース信号がコンポジット信号の場合に使われるデータである。
【００３５】
図９に、picture_dataのデータ構成を示す。picture_data（）関数によって定義されるデータエレメントは、slice（）関数によって定義されるデータエレメントである。このslice（）関数によって定義されるデータエレメントは、ビットストリーム中に少なくとも１個記述されている。
【００３６】
slice（）関数は、図１０に示されるように、slice_start_code、quantiser_scale_code、intra_slice_flag、intra_slice、reserved_bits、extra_bit_slice、およびextra_information_slice等のデータエレメントと、macroblock（）関数によって定義される。
【００３７】
slice_start_codeは、slice（）関数によって定義されるデータエレメントのスタートを示すスタートコードである。quantiser_scale_codeは、このスライス層に存在するマクロブロックに対して設定された量子化ステップサイズを示すデータであるが、マクロブロック毎に、quantiser_scale_codeが設定されている場合には、各マクロブロックに対して設定されたmacroblock_quantiser_scale_codeのデータが優先して使用される。
【００３８】
intra_slice_flagは、ビットストリーム中にintra_sliceおよびreserved_bitsが存在するか否かを示すフラグである。intra_sliceは、スライス層中にノンイントラマクロブロックが存在するか否かを示すデータである。スライス層におけるマクロブロックのいずれかがノンイントラマクロブロックである場合には、intra_sliceは「０」となり、スライス層におけるマクロブロックの全てがノンイントラマクロブロックである場合には、intra_sliceは「１」となる。reserved_bitsは、７ビットのデータであって「０」の値を取る。extra_bit_sliceは、追加の情報が存在することを示すフラグであって、次にextra_information_sliceが存在する場合には「１」に設定され、追加の情報が存在しない場合には「０」に設定される。
【００３９】
これらのデータエレメントの次には、macroblock（）関数によって定義されたデータエレメントが記述されている。macroblock（）関数は、図１１に示すように、macroblock_escape、macroblock_address_increment、およびquantiser_scale_code、およびmarker_bit等のデータエレメントと、macroblock_modes（）関数、motion_vectors（s）関数、およびcoded_block_pattern（）関数によって定義されたデータエレメントを記述するための関数である。
【００４０】
macroblock_escapeは、参照マクロブロックと前のマクロブロックとの水平方向の差が３４以上であるか否かを示す固定ビット列である。参照マクロブロックと前のマクロブロックとの水平方向の差が３４以上の場合には、macroblock_address_incrementの値に３３が加えられる。macroblock_address_incrementは、参照マクロブロックと前のマクロブロックとの水平方向の差を示すデータである。もし、macroblock_address_incrementの前にmacroblock_escapeが１つ存在するのであれば、このmacroblock_address_incrementの値に３３を加えた値が、実際の参照マクロブロックと前のマクロブロックとの水平方向の差分を示すデータとなる。
【００４１】
quantiser_scale_codeは、各マクロブロックに設定された量子化ステップサイズを示すデータであり、macroblock_quantが「１」のときだけ存在する。各スライス層には、スライス層の量子化ステップサイズを示すslice_quantiser_scale_codeが設定されているが、参照マクロブロックに対してscale_codeが設定されている場合には、この量子化ステップサイズを選択する。
【００４２】
macroblock_address_incrementの次には、macroblock_modes（）関数によって定義されるデータエレメントが記述されている。macroblock_modes（）関数は、図１２に示すように、macroblock_type、frame_motion_type、field_motion_type、dct_type等のデータエレメントを記述するための関数である。macroblock_typeは、マクログブロックの符号化タイプを示すデータである。
【００４３】
macroblock_motion_forward又はmacroblock_motion_backwardが「１」であり、ピクチャ構造がフレームであり、更にframe_pred_frame_dctが「０」である場合には、macroblock_typeを表わすデータエレメントの次にframe_motion_typeを表わすデータエレメントが記述されている。なお、このframe_pred_frame_dctは、 frame_motion_typeがビットストリーム中に存在するか否かを示すフラグである。
【００４４】
frame_motion_typeは、フレームのマクロブロックの予測タイプを示す２ビットのコードである。予測ベクトルが２個で、フィールドベースの予測タイプであれば、frame_motion_typeは「００」であり、予測ベクトルが１個で、フィールドベースの予測タイプであれば、frame_motion_typeは「０１」であり、予測ベクトルが１個で、フレームベースの予測タイプであれば、frame_motion_typeは「１０」であり、予測ベクトルが１個で、デュアルプライムの予測タイプであれば、frame_motion_typeは「１１」である。
【００４５】
field_motion_typeは、フィールドのマクロブロックの動き予測を示す２ビットのコードである。予測ベクトルが１個でフィールドベースの予測タイプであれば「０１」であって、予測ベクトルが２個で１８×８マクロブロックベースの予測タイプであれば「１０」であって、予測ベクトルが１個でデュアルプライムの予測タイプであれば「１１」である。
【００４６】
ピクチャ構造がフレームであり、frame_pred_frame_dctが、そのビットストリーム中にframe_motion_typeが存在することを示し、frame_pred_frame_dctが、そのビットストリーム中にdct_typeが存在することを示している場合、macroblock_typeを表わすデータエレメントの次にはdct_typeを表わすデータエレメントが記述されている。なお、dct_typeは、ＤＣＴがフレームＤＣＴモードか、フィールドＤＣＴモードかを示すデータである。
【００４７】
MPEG2のストリームにおいて、以上説明したそれぞれのデータエレメントは、start codeと称される、特殊なビットパターンで開始される。これらのスタートコードは、別の状況では、ビデオストリーム中に現れない特定のビットパターンである。各スタートコードは、スタートコードプレフィクスと、それに続くスタートコード値から構成される。スタートコードプレフィクスは、ビット列“0000 0000 0000 0000 0000 0001”である。スタートコード値は、スタートコードのタイプを識別する8ビットの整数である。
【００４８】
図１３に、MPEG2の各start codeの値を示す。多くのスタートコードは、１個のスタートコード値より示される。しかし、slice_start_codeは、０１乃至AFの複数のスタートコード値により示され、このスタートコード値は、スライスに対する垂直位置を表わす。これらのスタートコードは、全てバイト単位であるため、スタートコードプレフィクスの最初のビットがバイトの最初のビットになるように、スタートコードプレフィクスの前に、複数のビット“0”が挿入され、スタートコードがバイト単位になるように調整される。
【００４９】
図１４は、従来のMP@MLに対応したMPEGビデオデコーダの回路構成を示すブロック図である。
【００５０】
MPEGビデオデコーダは、ストリーム入力回路１１、バッファ制御回路１２、クロック発生回路１３、スタートコード検出回路１４、デコーダ１５、動き補償回路１６、および表示出力回路１７から構成されるＩＣ（integrated circuit）１と、ストリームバッファ２１およびビデオバッファ２２で構成され、例えば、DRAM（Dynamic Random Access Memory）からなるバッファ２により構成される。
【００５１】
ＩＣ１のストリーム入力回路１１は、高能率符号化された符号化ストリームの入力を受け、バッファ制御回路１２に供給する。バッファ制御回路１２は、クロック発生回路１３から供給される基本クロックに従って、入力された符号化ストリームをバッファ２のストリームバッファ２１に入力する。ストリームバッファ２１は、MP@MLのデコードに要求されるＶＢＶバッファサイズである１,８３５,００８ビットの容量を有する。ストリームバッファ２１に保存されている符号化ストリームは、バッファ制御回路１２の制御に従って、先に書き込まれたデータから順に読み出され、スタートコード検出回路１４に供給される。スタートコード検出回路１４は、入力されたストリームから、図１３を用いて説明したスタートコードを検出し、検出したスタートコードおよび入力されたストリームをデコーダ１５に出力する。
【００５２】
デコーダ１５は、入力されたストリームをMPEGシンタックスに基づいて、デコードする。デコーダ１５は、入力されたスタートコードに従って、まず、ピクチャ層のヘッダパラメータをデコードし、それを基に、スライス層をマクロブロックに分離してマクロブロックをデコードし、その結果得られる予測ベクトルおよび画素を、動き補償回路１６に出力する。
【００５３】
MPEGでは、画像の時間的冗長性を利用して、近接した画像間で動き補償した差分を得ることにより、符号化効率を改善している。MPEGビデオデコーダでは、動き補償を用いた画素に対しては、現在デコードしている画素にその動きベクトルが示す参照画像の画素データを加算することにより動き補償を行い、符号化前の画像データに復号する。
【００５４】
デコーダ１５から出力されるマクロブロックが動き補償を使用していない場合、動き補償回路１６は、その画素データを、バッファ制御回路１２を介して、バッファ２のビデオバッファ２２に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。
【００５５】
デコーダ１５から出力されるマクロブロックが動き補償を使用している場合、動き補償回路１６は、デコーダ１５から出力される予測ベクトルに従って、バッファ制御回路１２を介して、バッファ２のビデオバッファ２２から参照画素データを読み出す。そして、読み出した参照画素データを、デコーダ１５から供給された画素データに加算し、動き補償を行う。動き補償回路１６は、動き補償を行った画素データを、バッファ制御回路１２を介してバッファ２のビデオバッファ２２に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。
【００５６】
表示出力回路１７は、デコードした画像データを出力するための同期タイミング信号を発生し、このタイミングを基に、バッファ制御回路１２を介して、ビデオバッファ２２から画素データを読み出し、復号ビデオ信号として出力する。
【発明の概要】
【発明が解決しようとする課題】
【００５７】
以上説明したように、MPEG2ストリームは階層構造を有している。図２を用いて説明したピクチャ層のsequence_header乃至picture_coding_extensionのデータは、図１を用いて説明したプロファイルおよびレベルが異なる場合においても、そのデータ量は、あまり変更されない。一方、スライス層以下のデータ量は、符号化する画素数に依存する。
【００５８】
図１より、HLにおいて、１枚のピクチャで処理しなければならないマクロブロックの数は、MLに対して約６倍になる。更に、図３より、４：２：２Ｐにおいて、１個のマクロブロックで処理するブロックの数は、MPの４／３倍になる。
【００５９】
すなわち、図１４を用いて説明したMP@MLに対応したビデオデコーダで、４：２：２Ｐ@HLの符号化ストリームを復号しようとした場合、ＶＢＶバッファサイズおよび画素数の増加に伴って、ストリームバッファ２１のバッファサイズが不足する。また、ビットレートの増加に伴い、入力ストリームのストリームバッファ２１へのアクセスが増加し、画素数の増加に伴って、動き補償回路１６のビデオバッファ２２へのアクセスが増加するため、バッファ制御回路１２の制御が間に合わなくなる。更に、ビットレートの増加、マクロブロックおよびブロック数の増加に伴って、デコーダ１５の処理が間に合わなくなる。
【００６０】
今日の半導体技術の進展により、信号処理回路、メモリ（バッファ）回路とも、その動作速度は著しく向上している。しかしながら、現在のML@MPの復号技術では、４：２：２Ｐ@HLを復号するまでには至っていない。一般に、このような高速の信号処理を行おうとした場合、回路規模が大幅に増加し、部品点数の増加および消費電力の増加を招いてしまう。
【００６１】
本開示はこのような状況に鑑みてなされたものであり、回路規模の拡大を抑止しつつ、実時間動作が可能な４：２：２Ｐ@HLに対応したビデオデコーダを実現できるようにするものである。
【課題を解決するための手段】
【００６２】
本開示の一側面である復号装置は、符号化ストリームを復号する復号装置において、前記符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御手段と、複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段と、複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停手段と、画像データを保持する保持手段とを備える。
【００６３】
本開示の一側面である復号装置は、前記符号化ストリームをバッファリングする第１のバッファ手段と、前記符号化ストリームから、前記符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、前記スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、読み出された前記スタートコードおよび前記位置情報をバッファリングする第２のバッファ手段と、前記第１のバッファ手段による前記符号化ストリームのバッファリング、および前記第２のバッファ手段による前記スタートコードおよび前記位置情報のバッファリングを制御するバッファリング制御手段とをさらに備えることができる。
【００６４】
前記保持手段は、前記画像データの輝度成分と色差成分をそれぞれ分けて保持することができる。
【００６５】
本開示の一側面である復号装置は、前記復号手段に供給される前記符号化ストリームのフレームの順番を変更する変更手段をさらに備えることができ、前記保持手段は、画像シーケンス内のイントラ符号化フレームおよび前方向予測符号化フレームを合計したフレーム数より少なくとも２フレーム多い数のフレームを保持し、前記変更手段は、前記符号化ストリームを逆転再生させるための所定の順番になるように、前記符号化ストリームのフレームの順番を変更することができる。
【００６６】
本開示の一側面である復号装置は、前記保持手段により保持されている前記画像データを読み出して出力する出力手段をさらに備えることができ、前記復号手段は、前記符号化ストリームを通常再生に必要な処理速度のＮ倍速で復号し、前記出力手段は、前記保持手段により保持されている前記画像データのうちＮフレーム毎の前記画像データを出力することができる。
【００６７】
本開示の一側面である復号方法は、符号化ストリームをスライス単位で復号し、復号結果として得られる画像データを出力する複数の復号手段と、複数の前記復号手段の復号結果である画像データに対して必要に応じて動き補償処理を施す動き補償手段とを備える復号装置の復号方法において、前記復号装置による、複数の前記復号手段をそれぞれ独立して並行動作させるように制御する復号制御ステップと、複数の前記復号手段のそれぞれから出力される複数の画像データを前記動き補償手段に入力するタイミングを調停する調停ステップと、画像データを保持手段に保持させる保持制御ステップとを含む。
【００６８】
本開示の一側面においては、複数の復号手段がそれぞれ独立して並行動作するように制御され、複数の前記復号手段のそれぞれから出力される複数の画像データが動き補償手段に入力されるタイミングが調停される。
【発明の効果】
【００６９】
本開示の一側面によれば、回路規模の拡大を抑止しつつ、実時間動作が可能な４：２：２Ｐ@HLに対応したビデオデコーダを実現することが可能となる。
【図面の簡単な説明】
【００７０】
【図１】MPEG2の、プロファイルとレベルによる、各パラメータの上限値を説明するための図である。
【図２】MPEG2ビットストリームの階層構造を説明するための図である。
【図３】マクロブロック層を説明するための図である。
【図４】sequence_headerのデータ構造を説明するための図である。
【図５】sequence_extensionのデータ構造を説明するための図である。
【図６】GOP_headerのデータ構造を説明するための図である。
【図７】picture_headerのデータ構造を説明するための図である。
【図８】picture_coding_extensionのデータ構造を説明するための図である。
【図９】picture_dataのデータ構造を説明するための図である。
【図１０】sliceのデータ構造を説明するための図である。
【図１１】macroblockのデータ構造を説明するための図である。
【図１２】macroblock_modesのデータ構造を説明するための図である。
【図１３】スタートコードを説明するための図である。
【図１４】従来のML@MPの符号化ストリームをデコードするビデオデコーダの構成を示すブロック図である。
【図１５】実施の形態であるビデオデコーダの構成を示すブロック図である。
【図１６】スライスデコーダ制御回路の処理について説明するためのフローチャートである。
【図１７】スライスデコーダ制御回路の処理の具体例を説明するための図である。
【図１８】動き補償回路によるスライスデコーダの調停処理を説明するためのフローチャートである。
【図１９】動き補償回路によるスライスデコーダの調停処理の具体例を説明するための図である。
【図２０】図１５のMPEGビデオデコーダを備えた再生装置の構成を示すブロック図である。
【図２１】エンコーダに入力されて符号化されるMPEGビデオ信号のピクチャ構成を示す図である。
【図２２】フレーム間予測を用いたMPEGの画像符号化の例を示す図である。
【図２３】MPEG符号化ストリームが順方向に再生される場合の復号処理について説明するための図である。
【図２４】MPEG符号化ストリームが逆転再生される場合の復号処理について説明するための図である。
【発明を実施するための形態】
【００７１】
以下、図を参照して、実施の形態について説明する。
【００７２】
図１５は、実施の形態であるMPEGビデオデコーダの回路構成を示すブロック図である。
【００７３】
図１５のMPEGビデオデコーダは、ストリーム入力回路４１、スタートコード検出回路４２、ストリームバッファ制御回路４３、クロック発生回路４４、ピクチャデコーダ４５、スライスデコーダ制御回路４６、スライスデコーダ４７乃至４９、動き補償回路５０、輝度バッファ制御回路５１、色差バッファ制御回路５２、および表示出力回路５３から構成されるＩＣ３１、ストリームバッファ６１およびスタートコードバッファ６２で構成され、例えば、DRAMからなるバッファ３２、輝度バッファ７１および色差バッファ７２で構成され、例えば、DRAMからなるビデオバッファ３３、コントローラ３４、並びに、ドライブ３５で構成される。
【００７４】
ストリーム入力回路４１は、高能率符号化された符号化ストリームの入力を受け、スタートコード検出回路４２に供給する。スタートコード検出回路４２は、入力された符号化ストリームをストリームバッファ制御回路４３に供給するとともに、図１３を用いて説明したスタートコードを検出して、それを基に、そのスタートコードの種類と、ストリームバッファ６１にそのスタートコードが書き込まれる位置を示す書き込みポインタとを含む、スタートコード情報を生成し、ストリームバッファ制御回路４３に供給する。
【００７５】
クロック発生回路４４は、図１４を用いて説明したクロック発生回路１３の２倍の基本クロックを発生し、ストリームバッファ制御回路４３に供給する。ストリームバッファ制御回路４３は、クロック発生回路４４から供給される基本クロックに従って、入力された符号化ストリームを、バッファ３２のストリームバッファ６１に書き込み、入力されたスタートコード情報を、バッファ３２のスタートコードバッファ６２に書き込む。
【００７６】
MPEGビデオデコーダが、４：２：２Ｐ@HLのMPEG符号化ストリームを順方向に再生することができるようになされている場合、ストリームバッファ６１は、少なくとも、４：２：２Ｐ@HLのデコードに要求されるＶＢＶバッファサイズである47,185,920ビットの容量を有している。また、MPEGビデオデコーダが、逆転再生を実行することができるようになされている場合、ストリームバッファ６１は、少なくとも、２GOP分のデータを記録することができる容量を有している。
【００７７】
ピクチャデコーダ４５は、ストリームバッファ制御回路４３を介して、スタートコードバッファ６２からスタートコード情報を読み出す。例えば、デコード開始時は、図２を用いて説明したsequence_headerからデコードが開始されるので、ピクチャデコーダ４５は、図４を用いて説明したスタートコードであるsequence_header_codeに対応する書き込みポインタをスタートコードバッファ６２から読み出し、その書き込みポインタを基に、ストリームバッファ６１からsequence_headerを読み出してデコードする。続いて、ピクチャデコーダ４５は、sequence_headerの読み出しと同様に、sequence_extension、GOP_header、picture_coding_extension等をストリームバッファ６１から読み出してデコードする。
【００７８】
ピクチャデコーダ４５が、スタートコードバッファ６２から、最初のslice_start_codeを読み出した時点で、そのピクチャのデコードに必要な全てのパラメータが揃ったことになる。ピクチャデコーダ４５は、デコードしたピクチャ層のパラメータを、スライスデコーダ制御回路４６に出力する。
【００７９】
スライスデコーダ制御回路４６は、ピクチャ層のパラメータの入力を受け、ストリームバッファ制御回路４３を介して、スタートコードバッファ６２から、対応するスライスのスタートコード情報を読み出す。また、スライスデコーダ制御回路４６は、スライスデコーダ４７乃至４９のいずれかにデコードさせるスライスが、符号化ストリームに含まれる何番目のスライスであるかを示すレジスタを有し、そのレジスタを参照しながら、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスの書き込みポインタをスライスデコーダ４７乃至４９のいずれかに供給する。スライスデコーダ制御回路４６が、スライスデコーダ４７乃至４９のうち、デコードを実行させるスライスデコーダを選択する処理については、図１６および図１７を用いて後述する。
【００８０】
スライスデコーダ４７は、マクロブロック検出回路８１、ベクトル復号回路８２、逆量子化回路８３、および逆ＤＣＴ回路８４で構成され、スライスデコーダ制御回路４６から入力されたスライスの書き込みポインタを基に、対応するスライスを、ストリームバッファ制御回路４３を介してストリームバッファ６１から読み出す。そして、スライスデコーダ制御回路４６から入力されたピクチャ層のパラメータに従って、読み出したスライスをデコードして、動き補償回路５０に出力する。
【００８１】
マクロブロック検出回路８１は、スライス層のマクロブロックを分離し、各マクロブロックのパラメータをデコードし、可変長符号化された各マクロブロックの予測モードおよび予測ベクトルをベクトル復号回路８２に供給し、可変長符号化された係数データを逆量子化回路８３に供給する。ベクトル復号回路８２は、可変長符号化された、各マクロブロックの予測モードおよび予測ベクトルをデコードして、予測ベクトルを復元する。逆量子化回路８３は、可変長符号化された係数データをデコードして逆ＤＣＴ回路８４に供給する。逆ＤＣＴ回路８４は、デコードされた係数データに逆ＤＣＴを施し、符号化前の画素データに復元する。
【００８２】
スライスデコーダ４７は、動き補償回路５０に、デコードしたマクロブロックに対する動き補償の実行を要求し（すなわち、図中、ＲＥＱで示される信号を１にする）、動き補償回路５０から動き補償の実行要求に対する受付を示す信号（図中ＡＣＫで示される信号）を受けて、デコードされた予測ベクトルおよびデコードされた画素を動き補償回路５０に供給する。スライスデコーダ４７は、ＡＣＫ信号の入力を受けて、デコードされた予測ベクトルおよびデコードされた画素を動き補償回路５０に供給した後に、ＲＥＱ信号を１から０に変更する。そして、次に入力されたマクロブロックのデコードが終了した時点で、ＲＥＱ信号を、再び０から１に変更する。
【００８３】
また、スライスデコーダ４８のマクロブロック検出回路８５乃至逆ＤＣＴ回路８８およびスライスデコーダ４９のマクロブロック検出回路８９乃至逆ＤＣＴ回路９２においても、スライスデコーダ４７のマクロブロック検出回路８１乃至逆ＤＣＴ回路８４と同様の処理が行われるので、その説明は省略する。
【００８４】
動き補償回路５０は、スライスデコーダ４７乃至４９から入力されたデータの動き補償が終了したか否かを示すReg_REQ_A、Reg_REQ_BおよびReg_REQ_Cの３つのレジスタを有し、これらのレジスタの値を参照しながら、適宜、スライスデコーダ４７乃至４９のうちの１つを選んで、動き補償実行要求を受け付け（すなわち、ＲＥＱ信号に対して、ＡＣＫ信号を出力して、予測ベクトルと画素の入力を受ける）、動き補償処理を実行する。このとき、動き補償回路５０は、スライスデコーダ４７乃至４９のうち、所定のタイミングにおいてＲＥＱ信号が１であるスライスデコーダ４７乃至４９に対する動き補償が、それぞれ１回ずつ終了した後に、次の動き補償要求を受け付ける。例えば、スライスデコーダ４７が連続して動き補償要求を出しても、スライスデコーダ４８およびスライスデコーダ４９の動き補償が終了するまで、スライスデコーダ４７の２つ目の動き補償要求は受け付けられない。動き補償回路５０が、スライスデコーダ４７乃至４９のいずれのデコーダの出力に対して動き補償を実行するかを選択する処理については、図１８および図１９を用いて後述する。
【００８５】
スライスデコーダ４７乃至４９のいずれかから入力されるマクロブロックが動き補償を使用していない場合、動き補償回路５０は、その画素データが輝度データであれば、輝度バッファ制御回路５１を介して、ビデオバッファ３３の輝度バッファ７１に書き込み、その画素データが色差データであれば、色差バッファ制御回路５２を介して、ビデオバッファ３３の色差バッファ７２に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。
【００８６】
また、スライスデコーダ４７乃至４９のいずれかから出力されるマクロブロックが動き補償を使用している場合、動き補償回路５０は、スライスデコーダ４７乃至４９のうち対応するデコーダから入力される予測ベクトルに従って、その画素データが輝度データであれば、輝度バッファ制御回路５１を介して、輝度バッファ７１から参照画素を読み込み、その画素データが色差データであれば、色差バッファ制御回路５２を介して、色差バッファ７２から参照画素データを読み込む。そして、動き補償回路５０は、読み込んだ参照画素データを、スライスデコーダ４７乃至４９のいずれかから供給された画素データに加算し、動き補償を行う。
【００８７】
動き補償回路５０は、動き補償を行った画素データを、その画素データが輝度データであれば、輝度バッファ制御回路５１を介して、輝度バッファ７１に書き込み、その画素データが色差データであれば、色差バッファ制御回路５２を介して、色差バッファ７２に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。
【００８８】
表示出力回路５３は、デコードした画像データを出力するための同期タイミング信号を発生し、このタイミングに従って、輝度バッファ制御回路５１を介して、輝度バッファ７１から輝度データを読み出し、色差バッファ制御回路５２を介して、色差バッファ７２から色差データを読み出して、復号ビデオ信号として出力する。
【００８９】
ドライブ３５は、コントローラ３４に接続されており、必要に応じて装着される磁気ディスク１０１、光ディスク１０２、光磁気ディスク１０３、および半導体メモリ１０４などとデータの授受を行う。また、コントローラ３４は、以上説明したＩＣ３１、およびドライブ３５の動作を制御するものである。コントローラ３４は、例えば、ドライブに装着されている磁気ディスク１０１、光ディスク１０２、光磁気ディスク１０３、および半導体メモリ１０４などに記録されているプログラムに従って、ＩＣ３１に処理を実行させることができる。
【００９０】
次に、図１６のフローチャートを参照して、スライスデコーダ制御回路４６の処理について説明する。
【００９１】
ステップＳ１において、スライスデコーダ制御回路４６は、処理するスライスが、符号化ストリームの何番目のスライスであるかを表わすレジスタの値をＮ＝１とする。ステップＳ２において、スライスデコーダ制御回路４６は、スライスデコーダ４７が処理中であるか否かを判断する。
【００９２】
ステップＳ２において、スライスデコーダ４７が処理中ではないと判断された場合、ステップＳ３において、スライスデコーダ制御回路４６は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスＮの書き込みポインタをスライスデコーダ４７に供給し、スライスデコーダ４７にスライスＮをデコードさせ、処理はステップＳ８に進む。
【００９３】
ステップＳ２において、スライスデコーダ４７が処理中であると判断された場合、ステップＳ４において、スライスデコーダ制御回路４６は、スライスデコーダ４８が処理中であるか否かを判断する。ステップＳ４において、スライスデコーダ４８が処理中ではないと判断された場合、ステップＳ５において、スライスデコーダ制御回路４６は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスＮの書き込みポインタをスライスデコーダ４８に供給し、スライスデコーダ４８にスライスＮをデコードさせ、処理はステップＳ８に進む。
【００９４】
ステップＳ４において、スライスデコーダ４８が処理中であると判断された場合、ステップＳ６において、スライスデコーダ制御回路４６は、スライスデコーダ４９が処理中であるか否かを判断する。ステップＳ６において、スライスデコーダ４９が処理中であると判断された場合、処理は、ステップＳ２に戻り、それ以降の処理が繰り返される。
【００９５】
ステップＳ６において、スライスデコーダ４９が処理中ではないと判断された場合、ステップＳ７において、スライスデコーダ制御回路４６は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスＮの書き込みポインタをスライスデコーダ４９に供給し、スライスデコーダ４９にスライスＮをデコードさせ、処理はステップＳ８に進む。
【００９６】
ステップＳ８において、スライスデコーダ制御回路４６は、処理するスライスが符号化ストリームの何番目のスライスであるかを示すレジスタの値をＮ＝Ｎ＋１とする。ステップＳ９において、スライスデコーダ制御回路４６は、全スライスのデコードが終了したか否かを判断する。ステップＳ９において、全スライスのデコードが終了されていないと判断された場合、処理は、ステップＳ２に戻り、それ以降の処理が繰り返される。ステップＳ９において、全スライスのデコードが終了されたと判断された場合、処理が終了される。
【００９７】
図１７は、図１６を用いて説明したスライスデコーダ制御回路４６の処理の具体例を示す図である。上述したように、ピクチャデコーダ４５でピクチャ層のデータがデコードされ、そのパラメータがスライスデコーダ制御回路４６に供給される。ここで、図１６を用いて説明したステップＳ１において、スライスデコーダ制御回路４６は、レジスタの値をＮ＝１とする。ステップＳ２において、スライスデコーダ４７は処理中ではないと判断されるので、ステップＳ３において、スライスデコーダ制御回路４６は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライス１の書き込みポインタをスライスデコーダ４７に供給し、スライスデコーダ４７にスライスＮ（Ｎ＝１）をデコードさせ、ステップＳ８において、レジスタの値をＮ＝Ｎ＋１とする。そして、ステップＳ９において、全スライスのデコードが終了していないと判断されるため、処理はステップＳ２に戻る。
【００９８】
ステップＳ２において、スライスデコーダ４７は処理中であると判断される。そして、ステップＳ４において、スライスデコーダ４８は処理中でないと判断されるので、ステップＳ５において、スライスデコーダ制御回路４６は、ピクチャ層のパラメータと、スライス２の書き込みポインタを、スライスデコーダ４８に供給し、スライスデコーダ４８にスライスＮ（Ｎ＝２）をデコードさせ、ステップＳ８において、Ｎ＝Ｎ＋１とする。そして、ステップＳ９において、全スライスのデコードが終了していないと判断されるため、処理はステップＳ２に戻る。
【００９９】
ステップＳ２において、スライスデコーダ４７は処理中であると判断され、ステップＳ４において、スライスデコーダ４８は処理中であると判断される。そして、ステップＳ６において、スライスデコーダ４９は処理中ではないと判断されるので、ステップＳ７において、スライスデコーダ制御回路４６は、ピクチャ層のパラメータと、スライス３の書き込みポインタを、スライスデコーダ４９に供給し、スライスデコーダ４９にスライスＮ（Ｎ＝３）をデコードさせ、ステップＳ８において、Ｎ＝Ｎ＋１とする。そして、ステップＳ９において、全スライスのデコードが終了していないと判断されるため、処理はステップＳ２に戻る。
【０１００】
スライスデコーダ４７乃至４９は、入力されたスライスのデコード処理を実施した後、デコード処理の完了を示す信号をスライスデコーダ制御回路４６に出力する。すなわち、スライスデコーダ４７乃至４９のいずれかからスライス２のデコードの完了を示す信号が入力されるまで、スライスデコーダ４７乃至４９は全て処理中であるので、ステップＳ２、ステップＳ４、およびステップＳ６の処理が繰り返される。そして、図１７の図中Ａで示されるタイミングで、スライスデコーダ４８がデコード処理の完了を示す信号を、スライスデコーダ４６に出力した場合、ステップＳ４において、スライスデコーダ４８が処理中ではないと判断されるので、ステップＳ５において、スライスデコーダ制御回路４６は、スライス４の書き込みポインタを、スライスデコーダ４８に供給し、スライスデコーダ４８に、スライスＮ（Ｎ＝４）をデコードさせ、ステップＳ８において、Ｎ＝Ｎ＋１とする。そして、ステップＳ９において、全スライスのデコードが終了していないと判断されるため、処理はステップＳ２に戻る。
【０１０１】
そして、次にスライスデコーダ４７乃至４９のいずれかからデコード処理の完了を示す信号の入力を受けるまで、スライスデコーダ制御回路４６は、ステップＳ２、ステップＳ４、およびステップＳ６の処理を繰り返す。図１７においては、スライスデコーダ制御回路４６は、図中Ｂで示されるタイミングで、スライスデコーダ４９からスライス３のデコードの終了を示す信号の入力を受けるので、ステップＳ６において、スライスデコーダ４９は処理中ではないと判断される。ステップＳ７において、スライスデコーダ制御回路４６は、スライス５の書き込みポインタをスライスデコーダ４９に供給し、スライスデコーダ４９に、スライスＮ（Ｎ＝５）をデコードさせ、ステップＳ８において、Ｎ＝Ｎ＋１とする。そして、ステップＳ９において、全スライスのデコードが終了していないと判断されるため、処理はステップＳ２に戻る。以下、最後のスライスのデコードが終了されるまで、同様の処理が繰り返される。
【０１０２】
このように、スライスデコーダ制御回路４６は、スライスデコーダ４７乃至４９の処理状況を参照しながら、スライスのデコード処理を割り当てるので、複数のデコーダを効率よく使用することができる。
【０１０３】
次に、図１８のフローチャートを参照して、動き補償回路５０による、スライスデコーダの調停処理について説明する。
【０１０４】
ステップＳ２１において、動き補償回路５０は、内部のレジスタReg_REQ_A、Reg_REQ_BおよびReg_REQ_Cを初期化する。すなわち、Reg_REQ_A＝０、Reg_REQ_B＝０、Reg_REQ_C＝０とする。
【０１０５】
ステップＳ２２において、動き補償回路５０は、レジスタの値が全て０であるか否かを判断する。ステップＳ２２において、レジスタの値が全て０ではない（すなわち、１つでも１がある）と判断された場合、処理は、ステップＳ２４に進む。
【０１０６】
ステップＳ２２において、レジスタの値が全て０であると判断された場合、ステップＳ２３において、動き補償回路５０は、スライスデコーダ４７乃至４９から入力されるＲＥＱ信号を基に、レジスタの値を更新する。すなわち、スライスデコーダ４７からＲＥＱ信号が出力されている場合、Reg_REQ_A＝１とし、スライスデコーダ４８からＲＥＱ信号が出力されている場合、Reg_REQ_B＝１とし、スライスデコーダ４９からＲＥＱ信号が出力されている場合、Reg_REQ_C＝１とする。そして処理は、ステップＳ２４に進む。
【０１０７】
ステップＳ２４において、動き補償回路５０は、Reg_REQ_A＝１であるか否かを判断する。ステップＳ２４において、Reg_REQ_A＝１であると判断された場合、ステップＳ２５において、動き補償回路５０は、スライスデコーダ４７にＡＣＫ信号を送信し、Reg_REQ_A＝０とする。スライスデコーダ４７は、動き補償回路５０に、ベクトル復号回路８２で復号された予測ベクトルと、逆ＤＣＴ回路８４で逆ＤＣＴされた画素を出力する。そして処理は、ステップＳ３０に進む。
【０１０８】
ステップＳ２４において、Reg_REQ_A＝１ではないと判断された場合、ステップＳ２６において、動き補償回路５０は、Reg_REQ_B＝１であるか否かを判断する。ステップＳ２６において、Reg_REQ_B＝１であると判断された場合、ステップＳ２７において、動き補償回路５０は、スライスデコーダ４８にＡＣＫ信号を送信し、Reg_REQ_B＝０とする。スライスデコーダ４８は、動き補償回路５０に、ベクトル復号回路８６で復号された予測ベクトルと、逆ＤＣＴ回路８８で逆ＤＣＴされた画素を出力する。そして処理は、ステップＳ３０に進む。
【０１０９】
ステップＳ２６において、Reg_REQ_B＝１ではないと判断された場合、ステップＳ２８において、動き補償回路５０は、Reg_REQ_C＝１であるか否かを判断する。ステップＳ２８において、Reg_REQ_C＝１ではないと判断された場合、処理は、ステップＳ２２に戻り、それ以降の処理が繰り返される。
【０１１０】
ステップＳ２８において、Reg_REQ_C＝１であると判断された場合、ステップＳ２９において、動き補償回路５０は、スライスデコーダ４９にＡＣＫ信号を送信し、Reg_REQ_C＝０とする。スライスデコーダ４９は、動き補償回路５０に、ベクトル復号回路９０で復号された予測ベクトルと、逆ＤＣＴ回路９２で逆ＤＣＴされた画素を出力する。そして処理は、ステップＳ３０に進む。
【０１１１】
ステップＳ３０において、動き補償回路５０は、スライスデコーダ４７乃至４９のいずれかから入力されたマクロブロックは、動き補償を使用しているか否かを判断する。
【０１１２】
ステップＳ３０において、マクロブロックが動き補償を使用していると判断された場合、ステップＳ３１において、動き補償回路５０は、入力されたマクロブロックに動き補償処理を行う。すなわち、動き補償回路５０は、スライスデコーダ４７乃至４９のうち対応するデコーダから出力される予測ベクトルに従って、その画素データが輝度データであれば、輝度バッファ制御回路５１を介して、輝度バッファ７１から参照画素を読み出し、その画素データが色差データであれば、色差バッファ制御回路５２を介して、色差バッファ７２から参照画素データを読み出す。そして、動き補償回路５０は、読み出した参照画素データを、スライスデコーダ４７乃至４９のいずれかから供給された画素データに加算し、動き補償を行う。
【０１１３】
動き補償回路５０は、動き補償を行った画素データを、その画素データが輝度データであれば、輝度バッファ制御回路５１を介して、輝度バッファ７１に書き込み、その画素データが色差データであれば、色差バッファ制御回路５２を介して、色差バッファ７２に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。そして、処理は、ステップＳ２２に戻り、それ以降の処理が繰り返される。
【０１１４】
ステップＳ３０において、マクロブロックが動き補償を使用していないと判断された場合、ステップＳ３２において、動き補償回路５０は、その画素データが輝度データであれば、輝度バッファ制御回路５１を介して輝度バッファ７１に書き込み、その画素データが色差データであれば、色差バッファ制御回路５２を介して色差バッファ７２に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。そして、処理は、ステップＳ２２に戻り、それ以降の処理が繰り返される。
【０１１５】
図１９は、図１８を用いて説明した動き補償回路５０によるデコーダの調停処理の具体例を示す図である。
【０１１６】
図１９に示すタイミングＣにおいて、図１８のステップＳ２２の処理により、動き補償回路５０のレジスタが全て０であると判断された場合、スライスデコーダ４７乃至４９は、全て、ＲＥＱ信号を出力しているため、ステップＳ２３の処理により、それぞれのレジスタの値は、Reg_REQ_A＝１、Reg_REQ_B＝１、Reg_REQ_C＝１に更新される。そして、ステップＳ２４の処理により、Reg_REQ_A＝１であると判断されるため、ステップＳ２５において、動き補償回路５０は、スライスデコーダ４７にＡＣＫ信号を出力して、Reg_REQ_A＝０とし、スライスデコーダ４７から予測ベクトルと画素の入力を受け、動き補償１を行う。
【０１１７】
動き補償１が終了した後、すなわち、図１９のＤで示されるタイミングにおいて、処理は、再びステップＳ２２に戻る。図中Ｄで示されるタイミングにおいては、スライスデコーダ４７から、ＲＥＱ信号が出力されている。しかし、レジスタの値は、Reg_REQ_A＝０、Reg_REQ_B＝１、Reg_REQ_C＝１であり、ステップＳ２２において、レジスタの値は、全て０ではないと判断されるため、処理は、ステップＳ２４に進み、レジスタの値は更新されない。
【０１１８】
ステップＳ２４において、Reg_REQ_A＝０であると判断され、ステップＳ２６において、Reg_REQ_B＝１であると判断されるので、動き補償回路５０は、ステップＳ２７において、スライスデコーダ４８にＡＣＫ信号を出力して、Reg_REQ_B＝０とし、スライスデコーダ４８から予測ベクトルと画素の入力を受け、動き補償２を行う。
【０１１９】
動き補償２が終了した後、すなわち、図１９のＥで示されるタイミングにおいて、処理は、再びステップＳ２２に戻る。図中Ｅで示されるタイミングにおいても、スライスデコーダ４７から、ＲＥＱ信号が出力されている。しかし、レジスタの値は、Reg_REQ_A＝０、Reg_REQ_B＝０、Reg_REQ_C＝１であるので、ステップＳ２２において、レジスタの値は全て０ではないと判断されるので、図中Ｄで示されるタイミングのときと同様、レジスタの値は更新されない。
【０１２０】
そして、ステップＳ２４において、Reg_REQ_A＝０であると判断され、ステップＳ２６において、Reg_REQ_B＝０であると判断され、ステップＳ２８において、Reg_REQ_C＝１であると判断されるので、動き補償回路５０は、ステップＳ２９において、スライスデコーダ４９にＡＣＫ信号を出力して、Reg_REQ_C＝０とし、スライスデコーダ４９から予測ベクトルと画素の入力を受け、動き補償３を行う。
【０１２１】
動き補償３が終了した後、すなわち、図１９のＦで示されるタイミングにおいて、処理は、再びステップＳ２２に戻る。Ｆで示されるタイミングにおいては、レジスタの値は、Reg_REQ_A＝０、Reg_REQ_B＝０、Reg_REQ_C＝０であるので、ステップＳ２３において、レジスタの値が更新され、Reg_REQ_A＝１、Reg_REQ_B＝１、Reg_REQ_C＝０となる。
【０１２２】
そして、ステップＳ２４において、Reg_REQ_A＝１であると判断され、同様の処理により、動き補償４が実行される。
【０１２３】
このような処理を繰り返すことにより、動き補償回路５０は、スライスデコーダ４７乃至４９を調停しながら、動き補償を行う。
【０１２４】
以上説明したように、図１５のMPEGビデオデコーダにおいては、スタートコードバッファ６２を設けたことにより、ピクチャデコーダ４５乃至スライスデコーダ４９を、お互いの動作の終了を待つことなしに、ストリームバッファ６１にアクセスさせることができる。また、スライスデコーダ４７乃至４９は、スライスデコーダ制御回路４６の処理により、同時に動作させることができる。更に、動き補償回路３０は、適宜、１つのスライスデコーダを選択し、それぞれ分離された輝度バッファ７１および色差バッファ７２にアクセスし、動き補償を行うことができる。したがって、図１５のMPEGビデオデコーダにおいては、デコード処理性能およびバッファへのアクセス性能が向上され、２：４：４Ｐ@HLに対するデコード処理が可能となる。
【０１２５】
次に、図１５のMPEGビデオデコーダに入力されたMPEGストリームが復号されて再生される場合の、フレームのバッファリングについて説明する。
【０１２６】
図２０は、図１５のMPEGビデオデコーダを備えた再生装置の構成を示すブロック図である。なお、図１５における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
【０１２７】
ハードディスク１１２には、MPEG符号化ストリームが記録されている。サーボ回路１１１は、コントローラ３４の制御に基づいて、ハードディスク１１２を駆動し、図示しないデータ読み取り部により読み出されたMPEGストリームがＩＣ３１の再生回路１２１に入力される。
【０１２８】
再生回路１２１は、図１５を用いて説明したストリーム入力回路４１乃至クロック発生回路４４を含む回路であり、順方向の再生時には、入力された順番にMPEGストリームを再生ストリームとしてMPEGビデオデコーダ１２２に出力する。そして、逆方向の再生（逆転再生）時には、ストリームバッファ６１を用いて、入力されたMPEG符号化ストリームを、逆転再生に適した順番に並べ替えた後、再生ストリームとしてMPEGビデオデコーダ１２２に出力する。
【０１２９】
MPEGビデオデコーダ１２２は、図１５を用いて説明したピクチャデコーダ４５乃至表示出力回路５３を含む回路であり、動き補償回路５０の処理により、必要に応じて、ビデオバッファ３３に蓄積された復号されたフレームを参照画像として読み出し、動き補償を実行して、入力された再生ストリームの各ピクチャ（フレーム）を、上述した方法で復号し、ビデオバッファ３３に蓄積するとともに、表示出力回路５３の処理により、ビデオバッファ３３に蓄積されたフレームを順次読み出して、図示しない表示部もしくは表示装置に出力し、表示させる。
【０１３０】
ここでは、ハードディスク１１２に蓄積されたMPEG符号化ストリームを復号して出力し、表示させる場合を例にあげて説明したが、図１５のMPEGビデオデコーダを備えた再生装置、もしくは録画再生装置は、図２０で示す構成と異なる構成（例えば、ストリームバッファ６１と同様に、符号化ストリームを保持する機能、および再生回路１２１と同様に、フレームを並べ替える機能をMPEGビデオデコーダ１２２に備えさせているような構成）であっても、基本的に同様の処理により、入力されたMPEG符号化ストリームが復号されて、出力される。
【０１３１】
また、符号化ストリームを蓄積する蓄積媒体は、ハードディスク１１２以外にも、光ディスク、磁気ディスク、光磁気ディスク、半導体メモリ、磁気テープなど、様々な記録媒体を用いることが可能であることは言うまでもない。
【０１３２】
図２１および図２２を用いて、MPEG予測符号化画像のピクチャ構成について説明する。
【０１３３】
図２１は、図示しないエンコーダ（符号化装置）に入力されて符号化されるMPEGビデオ信号のピクチャ構成を示す図である。
【０１３４】
フレームＩ２は、イントラ符号化フレーム（Ｉピクチャ）であり、他の画像を参照することなく、符号化（エンコード）が行われる。このようなフレームは、復号の開始点である符号化シーケンスのアクセスポイントを提供するが、その圧縮率は、余り高くない。
【０１３５】
フレームＰ５、フレームＰ８、フレームＰｂ、およびフレームＰｅは、前方向予測符号化フレーム（Ｐピクチャ）であり、過去のＩピクチャまたはＰピクチャからの動き補償予測により、Ｉピクチャより効率的な符号化が行われる。Ｐピクチャ自身も、予測の参照として使用される。フレームＢ３，フレームＢ４・・・フレームＢｄは、双方向予測符号化フレームであり、Ｉピクチャ、Ｐピクチャと比較して、より効率的に圧縮が行われるが、動き補償のためには、過去および将来の双方の参照画像を必要とする。Ｂピクチャが、予測の参照として使用されることはない。
【０１３６】
図２２に、図２１を用いて説明したMPEG符号化画像を生成するために、図示しないエンコーダで実行される、フレーム間予測を用いたMPEGビデオ信号の符号化の例を示す。
【０１３７】
入力されたビデオ信号は、例えば１５フレーム毎にGOP（Group of Pictures）に分割され、各GOPのはじめから３番目がＩピクチャとされ、以下、３フレーム毎に出現するフレームがＰピクチャとされ、それ以外のフレームがＢピクチャとされる（Ｍ＝１５，Ｎ＝３）。そして、符号化に後方予測を必要とするＢピクチャであるフレームＢ１０およびフレームＢ１１がバッファに一時保存され、ＩピクチャであるフレームＩ１２が最初に符号化される。
【０１３８】
フレームＩ１２の符号化の終了後、バッファに一時保存されたフレームＢ１０およびフレームＢ１１が、フレームＩ１２を参照画像として符号化される。Ｂピクチャは、本来、過去と将来の両方の参照画像を参照して符号化されるべきであるが、フレームＢ１０およびフレームＢ１１のように、前方向に参照可能な画像がない場合、Closed GOPフラグを立てて、前方向予測をせずに後方向の予測のみで符号化が行われる。
【０１３９】
フレームＢ１０およびフレームＢ１１の符号化が行われている間に入力されたフレームＢ１３およびフレームＢ１４は、ビデオバッファに蓄えられ、次に入力されたフレームＰ１５が、フレームＩ１２を前方向予測画像として参照して、符号化される。そして、ビデオバッファから読み出されたフレームＢ１３およびフレームＢ１４は、フレームＩ１２を前方向予測画像として参照し、フレームＰ１５を後方向予測画像として参照して符号化される。
【０１４０】
続いて、フレームＢ１６およびフレームＢ１７がビデオバッファに蓄えられ、以下、順次同様にして、Ｐピクチャは、前回符号化されたＩピクチャ、もしくはＰピクチャを前方向予測画像として参照して符号化され、Ｂピクチャは、一旦ビデオバッファに蓄えられた後、以前に符号化されたＩピクチャ、もしくはＰピクチャを、前方向予測画像もしくは後方向予測画像として参照して符号化される。
【０１４１】
このようにして、複数のGOPに渡って、画像データが符号化され、符号化ストリームが生成される。図２０のハードディスク１１２には、上述した方法で符号化されたMPEG符号化ストリームが記録される。
【０１４２】
符号化時に、ＤＣＴ変換により得られたＤＣＴ係数行列は、通常の画像をＤＣＴ変換した場合、低周波成分において大きく、高周波成分では小さいという特徴がある。この特徴を利用し情報の圧縮を図るのが量子化（各ＤＣＴ係数に対してある量子化単位で割り、小数点以下を丸める）である。量子化単位は８×８の量子化テーブルとして設定され、低周波成分に対しては小さい値、高周波成分に対しては大きい値が設定される。量子化の結果、行列の左上以外の成分はほとんど０になる。そして、量子化マトリクスに対応する量子化ＩＤが、圧縮データに付加されて復号側に渡される。すなわち、図２０のMPEGビデオデコーダ１２２は、量子化ＩＤから量子化マトリクスを参照して、MPEG符号化ストリームを復号する。
【０１４３】
次に、図２３を用いて、ハードディスク１１２から、順方向にビデオデータを再生する場合に、GOP１乃至GOP３の符号化ストリームが再生回路１２１に入力され、MPEGビデオデコーダ１２２の処理により復号される処理について説明する。
【０１４４】
順方向再生のためにハードディスク１１２から再生回路１２１に入力されるMPEGビデオストリームは、再生回路１２１の処理により、入力された順番と同一のピクチャ配列の再生ストリームとして、MPEGビデオデコーダ１２２に出力される。MPEGビデオデコーダ１２２において、再生ストリームは、図１５乃至図１９を用いて説明した手順に従って復号され、ビデオバッファ３３に蓄積される。
【０１４５】
最初に入力されたフレームＩ１２は、Ｉピクチャであるので、復号に参照画像を必要としない。MPEGビデオデコーダ１２２において復号されたフレームＩ１２が蓄積されるビデオバッファ３３内のバッファ領域をバッファ１とする。
【０１４６】
次にMPEGビデオデコーダ１２２に入力されるフレームＢ１０およびフレームＢ１１は、Ｂピクチャであるが、Closed GOPフラグが立っているので、ビデオバッファ３３のバッファ１に蓄積されているフレームＩ１２を後方向参照画像として参照して復号され、ビデオバッファ３３に蓄積される。復号されたフレームＢ１０が蓄積されるバッファ領域をバッファ３とする。
【０１４７】
そして、表示出力回路５３の処理により、ビデオバッファ３３のバッファ３からフレームＢ１０が読み出されて、図示しない表示部に出力されて表示される。そして、次に復号されたフレームＢ１１が、ビデオバッファ３３のバッファ３に蓄積（すなわち、バッファ３に上書き）されたのち、読み出されて、図示しない表示部に出力されて、表示される。
【０１４８】
その次に、バッファ１からフレームＩ１２が読み出されて、図示しない表示部に出力されて、表示され、そのタイミングで、次のフレームＰ１５が、ビデオバッファ３３のバッファ１に蓄積されているフレームＩ１２を参照画像として復号され、ビデオバッファ３３のバッファ２に蓄積される。
【０１４９】
フレームＢ１０およびフレームＢ１１にClosed GOPフラグが立っていない場合、前方向に参照できる画像がないため、フレームＢ１０およびフレームＢ１１は、復号されない。そのような場合、フレームＩ１２が一番初めに表示出力回路５３から出力され、表示される。
【０１５０】
次に入力されるフレームＢ１３は、ビデオバッファ３３のバッファ１に蓄積されているフレームＩ１２を前方向参照画像とし、バッファ２に蓄積されているフレームＰ１５を後方向参照画像として参照して復号され、バッファ３に蓄積される。そして、表示出力回路５３の処理により、ビデオバッファ３３のバッファ３からフレームＢ１３が読み出されて、出力表示処理が実行されている間に、次に入力されるフレームＢ１４が、ビデオバッファ３３のバッファ１に蓄積されているフレームＩ１２を前方向参照画像とし、バッファ２に蓄積されているフレームＰ１５を後方向参照画像として参照して復号され、バッファ３に蓄積される。そして、表示出力回路５３の処理により、ビデオバッファ３３のバッファ３からフレームＢ１４が読み出されて、出力され、表示される。
【０１５１】
次に入力されるフレームＰ１８は、バッファ２に蓄積されているフレームＰ１５を前方向参照画像として復号される。フレームＢ１４の復号が終われば、バッファ１に蓄積されているフレームＩ１２は、その後、参照されることがないので、復号されたフレームＰ１８は、ビデオバッファ３３のバッファ１に蓄積される。そして、バッファ１にフレームＰ１８が蓄積されるタイミングで、バッファ２からフレームＰ１５が読み出されて、出力され、表示される。
【０１５２】
以下、同様にして、ＧＯＰ１のフレームが、順次復号され、バッファ１乃至３に蓄積され、順次、読み出されて表示される。
【０１５３】
ＧＯＰ２の先頭のフレームＩ２２が入力されたとき、ＩピクチャであるフレームＩ２２は、復号時に参照画像を必要としないので、そのまま復号され、バッファ２に蓄積される。そのタイミングで、ＧＯＰ１のフレームＰ１ｅが読み出されて、出力され、表示される。
【０１５４】
続いて入力されるＧＯＰ２のフレームＢ２０およびフレームＢ２１は、バッファ１のフレームＰ１ｅを前方向参照画像、バッファ２のフレームＩ２２を後方向参照画像として復号され、バッファ３に順次蓄積され、読み出されて、表示される。このように、GOPの先頭にあるＢピクチャは、前のGOPのＰピクチャを前方向参照画像として復号される。
【０１５５】
以下、同様にして、ＧＯＰ２のフレームが、順次復号され、バッファ１乃至３に蓄積され、順次、読み出されて表示される。そして、同様にして、ＧＯＰ３以下のそれぞれのフレームが順次復号され、バッファ１乃至３に蓄積され、順次、読み出されて表示される。
【０１５６】
以上の処理において、MPEGビデオデコーダ１２２は、量子化ＩＤを参照して復号処理を実行する。
【０１５７】
次に、図２０を用いて説明した再生装置において、逆転再生を実施する場合について説明する。
【０１５８】
従来の逆転再生においては、Ｉピクチャのみを取り出して復号を実行していたので、１５フレーム中の１フレームしか表示されない、不自然な再生画像しか得ることができなかった。
【０１５９】
それに対して、図２０の再生回路１２１には、スタートコードバッファ６２に記録されたスタートコードに基づいて、ストリームバッファ６１に入力されたGOPのフレームの順番を変更して再生ストリームを生成させることができ、MPEGビデオデコーダ１２２には、１５フレーム全てを復号させることができる。
【０１６０】
しかしながら、再生回路１２１は、逆転再生を行うために、スタートコードバッファ６２に記録されたスタートコードに基づいて、ストリームバッファ６１に入力されたGOPのフレームの順番を単純に逆転させて再生ストリームを生成すればいいのではない。
【０１６１】
例えば、図２２を用いて説明したMPEG符号化ストリームのGOP２およびGOP１を逆転再生させる場合、最初に出力されて表示されるフレームは、フレームＰ２ｅでなければならないが、フレームＰ２ｅを復号するためには、前方向参照画像として、フレームＰ２ｂを参照する必要があり、更にフレームＰ２ｂを復号するためには、前方向参照画像としてフレームＰ２８が必要である。フレームＰ２８を復号するためにも前方向参照画像が必要であるので、結局、フレームＰ２ｅを復号し、出力して表示させるためには、GOP２のＩピクチャおよびＰピクチャが全て復号されていなければならない。
【０１６２】
逆転再生時に最初に表示されるフレームＰ２ｅを復号するために、GOP２を全て復号させてビデオバッファ３３に蓄積させ、後のフレームから順に読み出す方法も考えられるが、その場合、ビデオバッファ３３には、１GOP（１５フレーム）分のバッファ領域が必要となる。
【０１６３】
また、この方法では、フレームＰ２ｅから、フレームＩ２２までは復号して再生することが可能であるが、GOP２のはじめの２フレーム、すなわち、逆転再生時に最後に表示されるべきフレームであるフレームＢ２１およびフレームＢ２０を復号するためには、前方向参照画像としてGOP１のフレームＰ１ｅが必要である。GOP１のフレームＰ１ｅを復号するためには、GOP１の全てのＩピクチャおよびＰピクチャが必要である。
【０１６４】
すなわち、この方法では、ビデオバッファ３３に１５フレーム分のバッファ領域を必要としながら、１GOP分の全てのフレームの逆転再生ができない。
【０１６５】
図２２を用いて説明したように、Ｍ＝１５、Ｎ＝３で符号化を行った場合、１GOP内には、合計５フレームのＩピクチャもしくはＰピクチャが含まれる。
【０１６６】
そこで、ストリームバッファ６１に、少なくとも２GOP分のフレームを蓄積することが可能なようにし、再生回路１２１において生成される再生ストリームのフレームの順番を、MPEGビデオデコーダ１２２の逆転再生のためのデコードの順番に基づいて決定し、ビデオバッファ３３に、少なくとも、「１GOPに含まれるＩピクチャおよびＰピクチャの合計数＋２」で表わされる数のフレーム（例えば、Ｍ＝１５、Ｎ＝３のMPEG符号化ストリームを逆転再生する場合、７フレーム）を蓄積することが可能なようにすることにより、GOPをまたいだ部分も連続して、全てのフレームを逆転再生することができる。
【０１６７】
図２４を用いて、ハードディスク１１２から、GOP１乃至GOP３の画像データが逆転再生される場合の復号処理について説明する。
【０１６８】
コントローラ３４は、サーボ回路１１１を制御して、ハードディスク１１２から、まずGOP３、次いでGOP２のMPEG符号化ストリームを再生回路１２１に出力させる。再生回路１２１は、ストリームバッファ６１に、GOP３、次いでGOP２のMPEG符号化ストリームを蓄積させる。
【０１６９】
再生回路１２１は、ストリームバッファ６１からGOP３の先頭フレームＩ３２を読み出し、再生ストリームの最初のフレームとして、MPEGビデオデコーダ１２２に出力する。フレームＩ３２はＩピクチャであるから、復号のために参照画像を必要としないので、MPEGビデオデコーダ１２２において復号され、ビデオバッファ３３に蓄積される。ビデオバッファ３３において、復号されたフレームＩ３２が蓄積される領域を、バッファ１とする。
【０１７０】
ここで、それぞれのフレームのデータは、図２を用いて説明したヘッダーおよび拡張データに記載されたパラメータを基に復号される。上述したように、MPEGビデオデコーダ１２２のピクチャデコーダ４５において、それぞれのパラメータがデコードされ、スライスデコーダ制御回路４６に供給されて、復号処理に用いられる。GOP１が復号される場合、GOP１のsequence_header、sequence_extension、およびGOP_headerに記載されている上位層のパラメータ（例えば、上述した量子化マトリクス）を用いて復号が実施され、GOP２が復号される場合、GOP２のsequence_header、sequence_extension、およびGOP_headerに記載されている上位層のパラメータを用いて復号が実施され、GOP３が復号される場合、GOP３のsequence_header、sequence_extension、およびGOP_headerに記載されている上位層のパラメータを用いて復号が実施される。
【０１７１】
しかしながら、逆転再生時においては、GOP毎に復号が実施されないので、MPEGビデオデコーダ１２２は、それぞれのGOPにおいて、最初にＩピクチャがデコードされた時に、上位層パラメータをコントローラ３４に供給する。コントローラ３４は、内部に有する図示しないメモリに、供給された上位層パラメータを保持する。
【０１７２】
コントローラ３４は、MPEGビデオデコーダ１２２において実行される復号処理を監視し、復号処理中のフレームに対応する上位層パラメータを内部のメモリから読み出してMPEGビデオデコーダ１２２に供給し、適切な復号処理がなされるようにする。
【０１７３】
図２４中、再生ストリームのフレーム番号の上部に示される数字は、量子化ＩＤであり、再生ストリームの各フレームは、図２３を用いて説明した順方向の復号と同様に、量子化ＩＤを基に復号される。
【０１７４】
なお、本実施の形態においては、コントローラ３４がその内部にメモリを有し、上位層符号化パラメータを保持するものとして説明しているが、コントローラ３４に接続されたメモリを設けるようにし、コントローラ３４が内部にメモリを保有せずに、外部のメモリに上位層符号化パラメータを保持し、必要に応じて読み出して、MPEGビデオデコーダ１２２に供給することができるようにしても良い。
【０１７５】
また、MPEGビデオデコーダ１２２に、GOPの上位層符号化パラメータを保持するためのメモリを備えさせるようにしてもよい。更に、上位層符号化パラメータなどの符号化条件が既知である場合、MPEGビデオデコーダ１２２に、符号化条件を予め設定しても良いし、上位層符号化パラメータがGOPによって変化しないことが既知である場合、コントローラ３４によって、GOP毎に上位層符号化パラメータを読み出して、フレーム毎にMPEGビデオデコーダ１２２に設定するのではなく、動作開始時に一度だけ、MPEGビデオデコーダ１２２に符号化パラメータを設定するようにしても良い。
【０１７６】
再生回路１２１は、ストリームバッファ６１からフレームＰ３５を読み出し、再生ストリームの次のフレームとして、MPEGビデオデコーダ１２２に出力する。MPEGビデオデコーダ１２２において、フレームＰ３５は、バッファ１に記録されているフレームＩ３２を前方向参照画像として復号され、ビデオバッファ３３に蓄積される。ビデオバッファ３３において、復号されたフレームＰ３５が蓄積される領域を、バッファ２とする。
【０１７７】
再生回路１２１は、ストリームバッファ６１からフレームＰ３８、フレームＰ３ｂ、およびフレームＰ３ｅを順次読み出し、再生ストリームとして出力する。これらのＰピクチャは、MPEGビデオデコーダ１２２において、一つ前に復号されたＰピクチャを前方向参照画像として復号され、ビデオバッファ３３に蓄積される。ビデオバッファ３３において、復号されたこれらのＰピクチャのフレームが蓄積される領域を、バッファ３乃至バッファ５とする。
【０１７８】
このとき、GOP３のＩピクチャおよびＰピクチャは、全て復号され、ビデオバッファ３３に蓄積されている状態である。
【０１７９】
続いて、再生回路１２１は、ストリームバッファ６１からGOP２のフレームＩ２２を読み出し、再生ストリームとして出力する。MPEGデコーダ１２２において、ＩピクチャであるフレームＩ２２は、参照画像を必要とせずに復号され、ビデオバッファ３３に蓄積される。復号されたフレームＩ２２が蓄積される領域をバッファ６とする。また、バッファ６にフレームＩ２２が蓄積されるタイミングで、バッファ５から、ＧＯＰ３のフレームＰ３ｅか読み出されて、出力され、逆転再生の最初の画像として表示される。
【０１８０】
再生回路１２１は、ストリームバッファ６１から、GOP３のフレームＢ３ｄ、すなわち、GOP３のＢピクチャの中で、初めに逆転再生されるべきフレームを読み出し、再生ストリームとして出力する。MPEGデコーダ１２２において、フレームＢ３ｄは、バッファ４のフレームＰ３ｂを前方向参照画像、バッファ５のフレームＰ３ｅを後方向参照画像として復号され、ビデオバッファ３３に蓄積される。復号されたフレームＢ３ｄが蓄積される領域をバッファ７とする。
【０１８１】
バッファ７に蓄積されたフレームＢ３ｄは、フレーム／フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。フレームＢ３ｄの表示と同一のタイミングで、再生回路１２１は、ストリームバッファ６１から、ＧＯＰ３のフレームＢ３ｃを読み出して、MPEGビデオデコーダ１２２に出力する。MPEGビデオデコーダ１２２において、フレームＢ３ｃは、フレームＢ３ｄと同様に、バッファ４のフレームＰ３ｂを前方向参照画像、バッファ５のフレームＰ３ｅを後方向参照画像として復号される。
【０１８２】
先に復号され、出力されたフレームＢ３ｄは、Ｂピクチャであるので、他のフレームの復号のために参照されることはない。したがって、復号されたフレームＰ３ｃは、フレームＢ３ｄに代わって、バッファ７に蓄積（すなわち、バッファ７に上書き）され、フレーム／フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【０１８３】
再生回路１２１は、ストリームバッファ６１から、GOP２のフレームＰ２５を読み出して、MPEGビデオデコーダ１２２に出力する。MPEGビデオデコーダ１２２において、GOP２のフレームＰ２５は、バッファ６のフレームＩ２２を前方向参照画像として復号される。バッファ５に蓄積されているフレームＰ３ｅは、これ以降、参照画像として利用されることはないので、復号されたフレームＰ２５は、フレームＰ３ｅに代わって、バッファ５に蓄積される。そして、バッファ５にフレームＰ２５が蓄積されるのと同一のタイミングで、バッファ４のフレームＰ３ｂが読み出され、表示される。
【０１８４】
再生回路１２１は、ストリームバッファ６１から、GOP３のフレームＢ３ａを読み出し、再生ストリームとして出力する。MPEGデコーダ１２２において、フレームＢ３ａは、バッファ３のフレームＰ３８を前方向参照画像、バッファ４のフレームＰ３ｂを後方向参照画像として復号され、ビデオバッファ３３のバッファ７に蓄積される。
【０１８５】
バッファ７に蓄積されたフレームＢ３ａは、フレーム／フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。フレームＢ３ａの表示と同一のタイミングで、再生回路１２１は、ストリームバッファ６１から、ＧＯＰ３のフレームＢ３９を読み出して、MPEGビデオデコーダ１２２に出力する。MPEGビデオデコーダ１２２において、フレームＢ３９は、フレームＢ３ａと同様に、バッファ３のフレームＰ３８を前方向参照画像、バッファ４のフレームＰ３ｂを後方向参照画像として復号され、フレームＢ３ａに代わって、バッファ７に蓄積され、フレーム／フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【０１８６】
再生回路１２１は、ストリームバッファ６１から、GOP２のフレームＰ２８を読み出して、MPEGビデオデコーダ１２２に出力する。MPEGビデオデコーダ１２２において、GOP２のフレームＰ２８は、バッファ５のフレームＰ２５を前方向参照画像として復号される。バッファ４に蓄積されているフレームＰ３ｂは、これ以降、参照画像として利用されることはないので、復号されたフレームＰ２８は、フレームＰ３ｂに代わって、バッファ４に蓄積される。そして、バッファ４にフレームＰ２８が蓄積されるのと同一のタイミングで、バッファ３のフレームＰ３８が読み出され、表示される。
【０１８７】
このように、GOP２のＩピクチャもしくはＰピクチャが復号され、バッファ３３に蓄積されるタイミングで、GOP３のＩピクチャもしくはＰピクチャが、バッファ３３から読み出されて、表示される。
【０１８８】
以下、同様にして、図２４に示されるように、GOP３の残りのＢピクチャ、およびＧＯＰ２の残りのＰピクチャが、Ｂ３７，Ｂ３６，Ｐ２ｂ，Ｂ３４，Ｂ３３，Ｐ２ｅの順に復号される。復号されたＢピクチャは、バッファ７に蓄積され、順次読み出されて表示される。復号されたGOP２のＰピクチャは、順次、参照が終了したフレームが蓄積されていたバッファ１乃至６のいずれかに蓄積され、バッファ１乃至６のいずれかに既に蓄積されているGOP３のＰピクチャが、そのタイミングで、逆転再生の順番にかなうように、Ｂピクチャの間に読み出されて出力される。
【０１８９】
再生回路１２１は、ストリームバッファ６１から、GOP３のフレームＢ３１、次いで、フレームＢ３０を読み出して、MPEGビデオデコーダ１２２に出力する。MPEGビデオデコーダ１２２において、フレームＢ３１およびフレームＢ３０の復号に必要な前方向参照画像であるフレームＰ２ｅはバッファ２に、後方向参照画像であるＩ３２は、バッファ１にそれぞれ蓄積されているので、GOP３のはじめの２フレーム、すなわち、逆転再生時に最後に表示されるべきフレームも、復号することが可能となる。
【０１９０】
復号されたフレームＢ３１およびフレームＢ３０は、順次、バッファ７に蓄積され、フレーム／フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【０１９１】
GOP３の全てのフレームがストリームバッファ６１から読み出された後、コントローラ３４は、サーボ回路１１１を制御して、ハードディスク１１２からGOP１を読み出させ、再生回路１２１に供給させる。再生回路１２１は、所定の処理を実行し、GOP１のスタートコードを抽出して、スタートコードバッファ６２に記録させるとともに、GOP１の符号化ストリームをストリームバッファ６１に供給して蓄積させる。
【０１９２】
次に、再生回路１２１は、ストリームバッファ６１から、GOP１のフレームＩ１２を読み出し、再生ストリームとして、MPEGビデオデコーダ１２２に出力する。フレームＩ１２は、Ｉピクチャであるから、MPEGビデオデコーダ１２２において、他の画像を参照せずに復号され、この後の処理で参照されることのないバッファ１のフレームＩ３２に代わって、バッファ１に出力され、蓄積される。このとき、バッファ２から、フレームＰ２ｅが読み出されて、出力され、GOP２の逆転再生表示が開始される。
【０１９３】
次に、再生回路１２１は、ストリームバッファ６１から、GOP２のフレームＢ２ｄ、すなわち、GOP２のＢピクチャの中で、初めに逆転再生されるべきフレームを読み出し、再生ストリームとして出力する。MPEGデコーダ１２２において、フレームＢ２ｄは、バッファ３のフレームＰ２ｂを前方向参照画像、バッファ２のフレームＰ２ｅを後方向参照画像として復号され、ビデオバッファ３３に蓄積される。復号されたフレームＢ２ｄは、バッファ７に蓄積され、フレーム／フィールド変換および出力ビデオ同期タイミングへのタイミング合わせが行われたあと、出力され、表示される。
【０１９４】
以下、同様にして、GOP２の、残りのＢピクチャ、およびＧＯＰ１の残りのＰピクチャが、Ｂ２ｃ，Ｐ１５，Ｂ２ａ，Ｂ２９，Ｐ１８，Ｂ２７，Ｂ２６，Ｐ１ｂ，Ｂ２４，Ｂ２３，Ｐ１ｅ，Ｐ２１、Ｐ２０の順に復号され、順次、参照が終了したフレームが蓄積されていたバッファ１乃至７のいずれかに蓄積され、逆転再生の順番で読み出されて出力される。そして、図示はされていないが、最後に、GOP１の残りのＢピクチャが復号され、順次、バッファ７に蓄積され、逆転再生の順番で読み出されて出力される。
【０１９５】
図２４を用いて説明した処理においては、通常再生と同一速度の逆転再生を実行したが、再生回路１２１が、再生ストリームを通常再生時の３分の１の速度でMPEGビデオデコーダ１２２に出力し、MPEGビデオデコーダ１２２が、通常の３フレームの処理時間で１フレームのみの復号処理を実行して、図示しない表示部、もしくは表示装置に、通常の３フレームの表示時間に、同一のフレームを表示させるようにすることにより、３分の１倍速の順方向再生、および逆転再生が、同様の処理によって可能となる。
【０１９６】
また、表示出力回路５３が、同一のフレームを繰り返して出力することにより、いわゆるスチル再生も可能となる。なお、再生装置１２１からMPEGビデオデコーダ１２２へのデータ出力速度、およびMPEGビデオデコーダ１２２の処理速度を変更することにより、任意のｎで、ｎ分の１倍速の順方向再生、および逆転再生が、同様の処理によって可能となる。
【０１９７】
すなわち、本開示を用いた再生装置においては、等倍速の逆転再生、ｎ分の１倍速の逆転再生、スチル再生、ｎ分の１倍速の順方向再生、等倍速の順方向再生の間での任意の速度において、滑らかなトリック再生が可能となる。
【０１９８】
また、MPEGビデオデコーダ１２２は、MPEG２  ４：２：２Ｐ@HL対応のデコーダであるので、MPEG２  MP@MLの符号化ストリームを６倍速で復号する能力を有する。したがって、再生回路１２１が、MPEG２  MP@MLの符号化ストリームから生成した再生ストリームを、通常再生時の６倍の速度でMPEGビデオデコーダ１２２に出力すれば、MPEGビデオデコーダ１２２は、MPEG２  MP@MLの符号化ストリームを６倍速で復号する能力を有するので、図示しない表示部、もしくは表示装置に、６フレーム毎に抽出されたフレームを表示させるようにすることにより、６倍速の順方向再生、および逆転再生が、同様の処理によって可能となる。
【０１９９】
すなわち、本開示を用いた再生装置においては、MPEG２  MP@MLの符号化ストリームを、６倍速の逆転再生、等倍速の逆転再生、ｎ分の１倍速の逆転再生、スチル再生、ｎ分の１倍速の順方向再生、等倍速の順方向再生、６倍速の順方向再生の間での任意の速度において、滑らかなトリック再生が可能となる。
【０２００】
なお、MPEGビデオデコーダ１２２が、Ｎ倍速の復号能力を備えている場合、本開示の再生装置は、同様の処理により、Ｎ倍速の順方向再生、および逆転再生が可能であり、Ｎ倍速の逆転再生、等倍速の逆転再生、ｎ分の１倍速の逆転再生、スチル再生、ｎ分の１倍速の順方向再生、等倍速の順方向再生、Ｎ倍速の順方向再生の間での任意の速度において、滑らかなトリック再生が可能となる。
【０２０１】
これにより、例えば、映像信号の検証時において、映像素材の内容を容易に検証することができ、映像素材検証作業の効率を改善したり、映像信号の編集作業において、編集点を快適に検索することができ、編集作業の効率を改善することができる。
【０２０２】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２０３】
この記録媒体は、図１５もしくは図２０に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１０１（フロッピーディスクを含む）、光ディスク１０２（CD−ROM（Compact Disk Read Only Memory）、DVD（Digital Versatile Disk）を含む）、光磁気ディスク１０３（ＭＤ(Mini Disk)を含む）、もしくは半導体メモリ１０４などよりなるパッケージメディアなどにより構成される。
【０２０４】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【符号の説明】
【０２０５】
３１  ＩＣ，  ３２  バッファ，  ３３  ビデオバッファ，  ３４  コントローラ，  ４２  スタートコード検出回路，  ４３  ストリームバッファ制御回路，  ４５  ピクチャデコーダ，  ４６  スライスデコーダ制御回路，  ４７乃至４９  スライスデコーダ，  ５０  動き補償回路，  ５１  輝度バッファ制御回路，  ５２  色差バッファ制御回路，  ６１  ストリームバッファ，  ６２  スタートコードバッファ，  ７１  輝度バッファ，  ７２  色差バッファ，  １１１  サーボ回路，  １１２  ハードディスク，  １２１  再生回路，  １２２  MPEGビデオデコーダ
【図１】
2011172243.tif 000003
【図２】
2011172243.tif 000004
【図３】
2011172243.tif 000005
【図４】
2011172243.tif 000006
【図５】
2011172243.tif 000007
【図６】
2011172243.tif 000008
【図７】
2011172243.tif 000009
【図８】
2011172243.tif 000010
【図９】
2011172243.tif 000011
【図１０】
2011172243.tif 000012
【図１１】
2011172243.tif 000013
【図１２】
2011172243.tif 000014
【図１３】
2011172243.tif 000015
【図１４】
2011172243.tif 000016
【図１５】
2011172243.tif 000017
【図１６】
2011172243.tif 000018
【図１７】
2011172243.tif 000019
【図１８】
2011172243.tif 000020
【図１９】
2011172243.tif 000021
【図２０】
2011172243.tif 000022
【図２１】
2011172243.tif 000023
【図２２】
2011172243.tif 000024
【図２３】
2011172243.tif 000025
【図２４】
2011172243.tif 000026