JP4906197B2 - 復号装置および方法、並びに記録媒体 - Google Patents

復号装置および方法、並びに記録媒体 Download PDF

Info

Publication number
JP4906197B2
JP4906197B2 JP2001147594A JP2001147594A JP4906197B2 JP 4906197 B2 JP4906197 B2 JP 4906197B2 JP 2001147594 A JP2001147594 A JP 2001147594A JP 2001147594 A JP2001147594 A JP 2001147594A JP 4906197 B2 JP4906197 B2 JP 4906197B2
Authority
JP
Japan
Prior art keywords
decoding
slice
motion compensation
data
encoded stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001147594A
Other languages
English (en)
Other versions
JP2002057986A (ja
Inventor
衛 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2001147594A priority Critical patent/JP4906197B2/ja
Publication of JP2002057986A publication Critical patent/JP2002057986A/ja
Application granted granted Critical
Publication of JP4906197B2 publication Critical patent/JP4906197B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Television Signal Processing For Recording (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、復号装置および方法、並びに記録媒体に関し、例えば、MPEG2ビデオビットストリームをデコードする場合に用いて好適な復号装置および方法、並びに記録媒体に関する。
【0002】
【従来の技術】
MPEG(Moving Picture Experts Group)2ビデオは、ISO/IEC(International Standards Organization/International Electrotechnical Commission)13818-2、およびITU-T(International Telecommunication Union-Telecommunication sector)勧告H.262に規定されているビデオ信号の高能率圧縮符号化方式である。
【0003】
MPEG2ビデオでは、ビデオ画像の各画像は符号化の効率が異なる3つのピクチャタイプ(フレーム内符号化画像(I(Intra)ピクチャ)、フレーム間順方向予測符号化画像(P(Predictive)ピクチャ)、および双方向予測符号化画像(B(Bidirectionally predictive)ピクチャ))のうちのいずれかに分類される。Iピクチャに分類された画像は、当該画像のフレーム内の空間的相関関係に基づいて符号化される。Pピクチャに分類された画像は、当該画像の前に存在するIピクチャまたはPピクチャからの動き補償予測によって符号化される。Bピクチャに分類された画像は、当該画像の前後に存在するIピクチャまたはPピクチャからの動き補償予測によって符号化される。したがって、符号化の効率は、Iピクチャ、Pピクチャ、Bピクチャの順に高くなる。
【0004】
図1を参照して具体的に説明する。ビデオ信号の画像がI1,B2,B3,P4、・・・、P13に分類された場合(下付の数字は表示順序を示す)、例えば、画像I1はフレーム内の空間的相関関係に基づいて符号化され、画像P4は、画像I1からの動き補償予測によって符号化され、画像P7は、画像P4からの動き補償予測によって符号化される。例えばまた、画像B2は、画像I1および画像P4からの動き補償予測によって符号化され、画像B5は、画像P4および画像P7からの動き補償予測によって符号化される。
【0005】
MPEG2符号化ストリームは、符号化の手法によって決まるプロファイルと、取り扱う画素数によって決まるレベルによってクラス分けされ、広範囲なアプリケーションに対応できるようになされている。例えば、MPEG2符号化ストリームのクラスのうちの1つであるMP@ML(メイン・プロファイル・メイン・レベル)は、DVB(Digital Video Broadcast)や、DVD(Digital Versatile Disk)に広く実用化されている。プロファイルおよびレベルは、図6を用いて後述するsequence_extensionに記述される。
【0006】
また、放送局における用途に適用させたMPEG2符号化ストリームのプロファイルとして、ビデオの色差信号を従来のベースバンドと同様に4:2:2方式で取り扱うことができるようにビットレートの上限を高く設定した4:2:2P(4:2:2プロファイル)が規定されている。さらに、MPEG2符号化ストリームのレベルとして、次世代の高解像度ビデオ信号に対応するHL(ハイ・レベル)が規定されている。
【0007】
図2は、MPEG2で規定されている代表的なクラスである、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フレームあたりのライン数、フレームの処理時間、およびサンプルの処理時間)の上限値を示している。
【0008】
図2に示すように、4:2:2P@HLのビットレートの上限値は、300(メガビット/秒)であり、処理する画素数の上限値は、62,668,800(画素/秒)である。一方、MP@MLのビットレートの上限値は、15(メガビット/秒)であり、処理する画素数の上限値は、10,368,000(画素/秒)である。すなわち、4:2:2P@HLをデコードするビデオデコーダは、MP@MLをデコードするビデオデコーダに比較して、ビットレートは20倍、処理する画素数は約6倍の処理能力が必要であることがわかる。
【0009】
ここで、MPEG2ビデオビットストリームのレベル構造について、図3を参照して説明する。最上位層であるピクチャ層の最初には、sequence_headerが記述されている。sequence_headerは、MPEGビットストリームのシーケンスのヘッダデータを定義するものである。シーケンス最初のsequence_headerに、sequence_extensionが続かない場合、当該ビットストリームには、ISO/IEC11172-2の規定が適応される。シーケンスの最初のsequence_headerに、sequence_extensionが続く場合、その後に発生する全てのsequence_headerの直後には、sequence_extensionが続く。すなわち、図3に示す場合においては、全てのsequence_headerの直後に、sequence_extensionが続く。
【0010】
sequence_extensionは、MPEGビットストリームのシーケンス層の拡張データを定義するものである。sequence_extensionは、sequence_headerの直後にのみ発生し、かつ、復号後、およびフレームリオーダリング後にフレームの損失がないようにするために、ビットストリームの最後に位置するsequence_end_codeの直前にきてはならない。また、ビットストリーム中に、sequence_extensionが発生した場合、それぞれのpicture_headerの直後にpicture_cording_extentionが続く。
【0011】
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の他、各種の拡張が定義されているが、ここでは図示、および説明は省略する。
【0012】
picture_headerは、MPEGビットストリームのピクチャ層のヘッダデータを定義するものであり、picture_coding_extensionは、MPEGビットストリームのピクチャ層の拡張データを定義するものである。
【0013】
picture_dataは、MPEGビットストリームのスライス層およびマクロブロック層に関するデータエレメントを記述するものである。picture_dataは、図3に示されるように、複数のslice(スライス)に分割され、スライスは、複数のmacro_block(マクロブロック)に分割される。
【0014】
マクロブロックは、16×16の画素データで構成されている。スライスの最初のマクロブロックおよび最後のマクロブロックは、スキップマクロブロック(情報を含まないマクロブロック)ではない。なお、フレームDCT(Discrete Cosine Transform:離散コサイン変換)符号化およびフィールドDCT符号化の使用が可能なフレーム画像においては、フレーム符号化が使用されたマクロブロックの内部構成とフィールド符号化が使用されたマクロブロックの内部構成が相違する。
【0015】
マクロブロックは、輝度成分および色差成分の1区画を含む。マクロブロックという用語は、情報源および復号データまたは対応する符号化データ成分のいずれかを示す。マクロブロックには、4:2:0、4:2:2および4:4:4の3つの色差フォーマットがある。マクロブロックにおけるブロックの順序は、それぞれの色差フォーマットによって異なる。
【0016】
図4(A)に、色差フォーマットが4:2:0方式である場合におけるマクロブロックを示す。4:2:0方式の場合、マクロブロックは、4個の輝度(Y)ブロックと、それぞれ1個の色差(Cb,Cr)ブロックで構成される。図4(B)に、色差フォーマットが4:2:2方式である場合におけるマクロブロックを示す。4:2:2方式の場合、マクロブロックは、4個の輝度(Y)ブロックと、それぞれ2個の色差(Cb,Cr)ブロックで構成される。
【0017】
各マクロブロックは、いくつかの方法により、予測符号化処理が可能である。予測モードは、フィールド予測とフレーム予測の2種類に大別される。フィールド予測においては、先に復号された、1つ、もしくは複数のフィールドのデータを使用し、各フィールドについて、独自に予測を行う。フレーム予測は、先に復号された、1つ、もしくは複数のフレームを使用してフレームの予測を行う。フィールド画像内では、予測は全てフィールド予測である。一方、フレーム画像においては、フィールド予測、またはフレーム予測のいずれかにより予測が可能であり、その予測方法は、マクロブロックごとに選択される。また、マクロブロックの予測符号化処理においては、フィールド予測およびフレーム予測以外に、16×8動き補償およびデュアルプライムの2種類の特別予測モードを使用することができる。
【0018】
動きベクトル情報、および他の周辺情報は、各マクロブロックの予測誤差信号とともに符号化される。動きベクトルの符号化については、可変長符号を使用して符号化された最後の動きベクトルを予測ベクトルとして、予測ベクトルとの差分ベクトルを符号化する。表示可能なベクトルの最大長は、画像毎にプログラムすることができる。また、適切な動きベクトルの計算は符号器により実行される。
【0019】
picture_dataの後には、次のsequence_headerとsequence_extensionが配置されている。このsequence_headerとsequence_extensionによって記述されたデータエレメントは、ビデオストリームのシーケンスの先頭に記述されたsequence_headerとsequence_extensionによって記述されたデータエレメントと全く同じである。このように、同じデータをストリーム中に記述することにより、ビットストリーム受信装置側において、データストリームの途中(例えばピクチャ層に対応するビットストリーム部分)から受信が開始された場合、シーケンス層のデータを受信できなくなってストリームをデコードできなくなることが抑止される。
【0020】
最後のsequence_headerとsequence_extensionとによって定義されたデータエレメントの次、つまり、データストリームの最後には、シーケンスの終わりを示す32ビットのsequence_end_codeが記述されている。
【0021】
次に、図5乃至12を用いて、それぞれのデータエレメントの詳細について説明する。
【0022】
図5に、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等から構成される。
【0023】
sequence_header_codeは、シーケンス層のスタート同期コードを表すデータである。horizontal_size_valueは、画像の水平方向の画素数の下位12ビットからなるデータである。vertical_size_valueは、画像の縦のライン数の下位12ビットからなるデータである。aspect_ratio_informationは、画素のアスペクト比(縦横比)または表示画面アスペクト比を表すデータである。frame_rate_codeは、画像の表示周期を表すデータである。bit_rate_valueは、発生ビット量に対する制限のためのビットレートの下位18ビットのデータである。
【0024】
marker_bitは、スタートコードエミュレーションを防止するために挿入されるビットデータである。vbv_buffer_size_valueは、発生符号量制御用の仮想バッファVBV(Video Buffering Verifier)の大きさを決める値の下位10ビットデータである。constrained_parameter_flagは、各パラメータが制限以内であることを示すデータである。load_non_intra_quantiser_matrixは、非イントラマクロブロック用量子化マトリックス・データの存在を示すデータである。load_intra_quantiser_matrixは、イントラマクロブロック用量子化マトリックス・データの存在を示すデータである。intra_quantiser_matrixは、イントラマクロブロック用量子化マトリックスの値を示すデータである。non_intra_quantiser_matrixは、非イントラマクロブロック用量子化マトリックスの値を表すデータである。
【0025】
図6に、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等のデータエレメントから構成されている。
【0026】
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ビットのデータである。
【0027】
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と組み合わせてフレームレートを得るためのデータである。
【0028】
図7に、GOP_headerのデータ構成を示す。GOP_headerを表わすデータエレメントは、group_start_code,time_code,closed_gop、およびbroken_linkから構成される。
【0029】
group_start_codeは、GOP層の開始同期コードを示すデータである。time_codeは、GOPの先頭ピクチャの時間を示すタイムコードである。closed_gopは、GOP内の画像が他のGOPから独立再生可能なことを示すフラグデータである。broken_linkは、編集などのためにGOP内の先頭のBピクチャが正確に再生できないことを示すフラグデータである。
【0030】
図8に、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等から構成される。
【0031】
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では使用されない固定データである。
【0032】
図9に、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等から構成される。
【0033】
extension_start_codeは、ピクチャ層のエクステンションデータ(拡張データ)のスタートを示す同期コードを表すデータである。extension_start_code_identifierは、拡張データの種類を示すデータである。f_code[0][0]は、フォワード方向の水平動きベクトル探索範囲を表すデータである。f_code[0][1]は、フォワード方向の垂直動きベクトル探索範囲を表すデータである。f_code[1][0]は、バックワード方向の水平動きベクトル探索範囲を表すデータである。f_code[1][1]は、バックワード方向の垂直動きベクトル探索範囲を表すデータである。
【0034】
intra_dc_precisionは、DC係数の精度を表すデータである。ブロック内の各画素の輝度および色差信号を表した行列fにDCTを施すと、8×8のDCT係数行列Fが得られる。DCT係数行列Fの左上隅の係数をDC係数と呼ぶ。DC係数はブロック内の平均輝度、平均色差を表わす信号である。picture_structureは、フレームストラクチャであるか、フィールドストラクチャであるかを示すデータであり、フィールドストラクチャであることを示している場合はさらに、上位フィールドであるか、下位フィールドであるかを示すデータを含んでいる。top_field_firstは、フレームストラクチャである場合において、最初のフィールドが上位であるか、下位であるかを示すデータである。frame_predictive_frame_dctは、フレームストラクチャである場合において、フレーム・モードDCTの予測がフレーム・モードだけであることを示すデータである。concealment_motion_vectorsは、イントラマクロブロックに伝送エラーを隠蔽するための動きベクトルがついていることを示すデータである。
【0035】
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と同じ値が記述され、色差フォーマットが4:2:0方式ではない場合には0が記述される。progressive_frameは、このピクチャが順次走査であるか否かを示すデータである。composite_display_flagは、ソース信号がコンポジット信号であったか否かを示すデータである。v_axis,field_sequence,sub_carrier,burst_amplitude、およびsub_carrier_phaseは、ソース信号がコンポジット信号であった場合に使われるデータである。
【0036】
図10に、picture_dataのデータ構成を示す。picture_data()関数によって定義されるデータエレメントは、slice()関数によって定義されるデータエレメントである。このslice()関数によって定義されるデータエレメントは、ビットストリーム中に少なくとも1個記述されている。
【0037】
slice()関数は、図11に示されるように、slice_start_code,quantiser_scale_code,intra_slice_flag,intra_slice,reserved_bits,extra_bit_slice,およびextra_information_slice等のデータエレメントと、macroblock()関数によって定義される。
【0038】
slice_start_codeは、slice()関数によって定義されるデータエレメントのスタートを示すスタートコードである。quantiser_scale_codeは、このスライス層に存在するマクロブロックに対して設定された量子化ステップサイズを示すデータであるが、マクロブロック毎に、quantiser_scale_codeが設定されている場合には、各マクロブロックに対して設定されたmacroblock_quantiser_scale_codeのデータが優先して使用される。
【0039】
intra_slice_flagは、ビットストリーム中にintra_sliceおよびreserved_bitsが存在するか否かを示すフラグである。intra_sliceは、スライス層中にノンイントラマクロブロックが存在するか否かを示すデータである。スライス層におけるマクロブロックのいずれかがノンイントラマクロブロックである場合には、intra_sliceは「0」となり、スライス層におけるマクロブロックの全てがイントラマクロブロックである場合には、intra_sliceは「1」となる。reserved_bitsは、7ビットの予備のデータ領域である。extra_bit_sliceは、追加の情報が存在するか否かを示すフラグであって、次にextra_information_sliceが存在する場合には「1」に設定され、追加の情報が存在しない場合には「0」に設定される。
【0040】
これらのデータエレメントの次には、macroblock()関数によって定義されたデータエレメントが記述されている。macroblock()関数は、図12に示すように、macroblock_escape,macroblock_address_increment,quantiser_scale_code、およびmarker_bit等のデータエレメントと、macroblock_modes()関数、motion_vectors()関数、およびcoded_block_pattern()関数によって定義されたデータエレメントを記述するための関数である。
【0041】
macroblock_escapeは、参照マクロブロックと前のマクロブロックとの水平方向の差が34以上であるか否かを示す固定ビット列である。参照マクロブロックと前のマクロブロックとの水平方向の差が34以上である場合、macroblock_address_incrementの値に33が加えられる。macroblock_address_incrementは、参照マクロブロックと前のマクロブロックとの水平方向の差を示すデータである。もし、macroblock_address_incrementの前にmacroblock_escapeが1つ存在するのであれば、このmacroblock_address_incrementの値に33を加えた値が、実際の参照マクロブロックと前のマクロブロックとの水平方向の差分を示すデータとなる。
【0042】
quantiser_scale_codeは、各マクロブロックに設定された量子化ステップサイズを示すデータであり、macroblock_quantが「1」のときだけ存在する。各スライス層には、スライス層の量子化ステップサイズを示すslice_quantiser_scale_codeが設定されているが、参照マクロブロックに対してscale_codeが設定されている場合には、この量子化ステップサイズを選択する。
【0043】
macroblock_address_incrementの次には、macroblock_modes()関数によって定義されるデータエレメントが記述されている。macroblock_modes()関数は、図13に示すように、macroblock_type,frame_motion_type,field_motion_type,dct_type等のデータエレメントを記述するための関数である。macroblock_typeは、マクログブロックの符号化タイプを示すデータである。
【0044】
macroblock_motion_forwardまたはmacroblock_motion_backwardが「1」であり、ピクチャ構造がフレームであり、さらにframe_pred_frame_dctが「0」である場合、macroblock_typeを表わすデータエレメントの次にframe_motion_typeを表わすデータエレメントが記述される。なお、このframe_pred_frame_dctは、frame_motion_typeがビットストリーム中に存在するか否かを示すフラグである。
【0045】
frame_motion_typeは、フレームのマクロブロックの予測タイプを示す2ビットのコードである。予測ベクトルが2個であって、フィールドベースの予測タイプである場合、frame_motion_typeには「00」が記述される。予測ベクトルが1個であって、フィールドベースの予測タイプでる場合、frame_motion_typeには「01」が記述される。予測ベクトルが1個であって、フレームベースの予測タイプである場合、frame_motion_typeには「10」が記述される。予測ベクトルが1個であって、デュアルプライムの予測タイプである場合、frame_motion_typeには「11」が記述される。
【0046】
field_motion_typeは、フィールドのマクロブロックの動き予測を示す2ビットのコードである。予測ベクトルが1個であって、フィールドベースの予測タイプである場合、field_motion_typeには「01」が記述される。予測ベクトルが2個であって、18×8マクロブロックベースの予測タイプである場合、field_motion_typeには「10」が記述される。予測ベクトルが1個であって、デュアルプライムの予測タイプである場合、field_motion_typeには「11」が記述される。
【0047】
ピクチャ構造がフレームであり、frame_pred_frame_dctが、そのビットストリーム中にframe_motion_typeが存在することを示し、frame_pred_frame_dctが、そのビットストリーム中にdct_typeが存在することを示している場合、macroblock_typeを表わすデータエレメントの次にはdct_typeを表わすデータエレメントが記述される。なお、dct_typeは、DCTがフレームDCTモードであるか、フィールドDCTモードであるかを示すデータである。
【0048】
MPEG2ビデオビットストリーム中の各データエレメントは、start codeと称される、特殊なビットパターンで開始される。これらのスタートコードは、別の状況では、ビデオストリーム中に現れない特定のビットパターンである。各スタートコードは、スタートコードプレフィクスと、それに続くスタートコード値から構成される。スタートコードプレフィクスは、ビット列“0000 0000 0000 0000 0000 0001”である。スタートコード値は、スタートコードのタイプを識別する8ビットのデータである。
【0049】
図14に、MPEG2のスタートコード値(Start code value)を示す。多くのスタートコードには、1個のスタートコード値が設定されている。しかしながら、slice_start_codeには、複数のスタートコード値(01乃至AF)が設定されており、このスタートコード値は、スライスに対する垂直位置を表わす。これらのスタートコードは、全てバイト単位であるため、スタートコードプレフィクスの最初のビットがバイトの最初のビットになるように、スタートコードプレフィクスの前に、複数のビット“0”が挿入され、スタートコードがバイト単位になるように調整される。
【0050】
次に、MP@MLのMPEG2ビデオビットストリームに対応した従来のMPEGビデオデコーダについて、図15を参照して説明する。図15は、当該MPEGビデオデコーダの構成の一例を示している。
【0051】
当該MPEGビデオデコーダは、ストリーム入力回路11、バッファ制御回路12、クロック発生回路13、スタートコード検出回路14、デコーダ15、動き補償回路16、および表示出力回路17から構成されるIC(Integrated Circuit)1と、ストリームバッファ21およびビデオバッファ22で構成され、例えば、DRAM(Dynamic Random Access Memory)からなるバッファ2により構成される。
【0052】
IC1のストリーム入力回路11は、高能率符号化された符号化ストリーム(MP@MLのMPEG2ビデオビットストリーム)の入力を受け付けて、バッファ制御回路12に供給する。バッファ制御回路12は、クロック発生回路13から供給される基本クロックに従って、入力された符号化ストリームをバッファ2のストリームバッファ21に入力する。ストリームバッファ21は、少なくとも、MP@MLのデコードに要求されるVBVバッファサイズである1,835,008ビットの容量を有する。ストリームバッファ21に保存されている符号化ストリームは、バッファ制御回路12の制御に従って、先に書き込まれたデータから順に読み出され、スタートコード検出回路14に供給される。スタートコード検出回路14は、入力されたストリームから、図14を用いて説明したスタートコードを検出し、検出したスタートコードおよび入力されたストリームをデコーダ15に出力する。
【0053】
デコーダ15は、入力されたストリームをMPEGシンタックスに基づいて、デコードする。デコーダ15は、入力されたスタートコードに従って、まず、ピクチャ層のヘッダパラメータをデコードし、それを基に、スライス層をマクロブロックに分離してマクロブロックをデコードし、その結果得られる予測ベクトルおよび画素を、動き補償回路16に出力する。
【0054】
圧縮符号化方式としてのMPEGでは、隣接した画像間の時間的冗長性を利用して、近接した画像間で動き補償した差分を得ることにより、符号化効率を改善している。当該MPEGビデオデコーダでは、動き補償を用いた画素に対しては、現在デコードしている画素にその動きベクトルが示す参照画像の画素データを加算することにより動き補償を行い、符号化前の画像データに復号する。
【0055】
デコーダ15から出力されるマクロブロックが動き補償を使用していない場合、動き補償回路16は、その画素データを、バッファ制御回路12を介してバッファ2のビデオバッファ22に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。
【0056】
デコーダ15から出力されるマクロブロックが動き補償を使用している場合、動き補償回路16は、デコーダ15から出力される予測ベクトルに従って、バッファ制御回路12を介して、バッファ2のビデオバッファ22から参照画素データを読み出す。そして、読み出した参照画素データを、デコーダ15から供給された画素データに加算し、動き補償を行う。動き補償回路16は、動き補償を行った画素データを、バッファ制御回路12を介してバッファ2のビデオバッファ22に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。
【0057】
表示出力回路17は、デコードした画像データを出力するための同期タイミング信号を発生し、このタイミングを基に、バッファ制御回路12を介して、ビデオバッファ22から画素データを読み出し、復号ビデオ信号として出力する。
【0058】
【発明が解決しようとする課題】
以上説明したように、MPEG2ストリームは階層構造を有している。図3を用いて説明したピクチャ層のsequence_header乃至picture_coding_extensionのデータは、図2を用いて説明したプロファイルおよびレベルから成るクラスが異なる場合においても、そのデータ量は、あまり変更されない。一方、スライス層以下のデータ量は、符号化する画素数に依存する。
【0059】
図2に示したように、HLにおいて1枚のピクチャで処理しなければならないマクロブロックの数は、MLのそれに対して約6倍になる。さらに、図4に示したように、4:2:2Pにおいて1個のマクロブロックで処理するブロックの数は、MPのそれに対して4/3倍になる。
【0060】
したがって、図15に示したMP@MLに対応する従来のMPEGビデオデコーダを用いて4:2:2P@HLの符号化ストリームを復号しようとした場合、VBVバッファサイズおよび画素数の増加に伴って、ストリームバッファ21のバッファサイズが不足する。また、ビットレートの増加に伴い、入力ストリームのストリームバッファ21へのアクセスが増加し、画素数の増加に伴って、動き補償回路16のビデオバッファ22へのアクセスが増加するため、バッファ制御回路12の制御が間に合わなくなる。さらに、ビットレートの増加、マクロブロックおよびブロック数の増加に伴って、デコーダ15の処理が間に合わなくなる。
【0061】
一般に、信号処理を高速で実行させようとした場合、回路規模が大幅に増加し、部品点数の増加および消費電力の増加を招いてしまう。したがって、MP@MLを復号する従来技術を用いて、4:2:2P@HLを復号する装置を実現しようとした場合、今日の半導体技術の進展によって信号処理回路、メモリ(バッファ)回路ともに、その動作速度は著しく向上し、その回路規模は縮小化されてはいるものの、実現可能な回路規模で実時間動作が可能な4:2:2P@HLに対応したビデオデコーダを実現することは困難である課題があった。
【0062】
ところで、MP@MLの符号化ストリームを、図15に示したMP@MLに対応する従来のMPEGビデオデコーダを用い、1倍速以上で高速再生させることを考えた場合、入力するMP@MLの符号化ストリームから画像を間引いて当該MPEGビデオデコーダに入力する方法が考えられる。
【0063】
しかしながら、MPEG方式においては、図1を用いて説明したように、近傍の画像を参照する予測符号化方式を採用しているので、任意の画像を間引いた場合、復号することができない画像が生じてしまう。例えば、図16に示すように、画像P10を間引いた場合、画像P10を参照して復号する画像B8,B9,B11,B12、およびP13を復号することができなくなってしまう。
【0064】
そこで、図17に示すように、他の画像に参照されるIピクチャおよびPピクチャは間引かず、他の画像に参照されることがないBピクチャだけを間引いたMP@MLの符号化ストリームを入力する方法が考えられる。しかしながら、Bピクチャだけを間引く方法は、Bピクチャだけを検出して間引く機能が必要になる上、Bピクチャだけしか間引かれないので、符号化ストリームの再生速度がIピクチャ、Pピクチャ、およびBピクチャの配置に依存して特定の速度となってしまう課題があった。
【0065】
また、復号したIピクチャ、およびPピクチャを適宜繰り返して表示することにより、見かけ上の再生速度は任意の速度に設定できるものの、そのような表示出力は画像の動きがギクシャクしたものとなってしまう課題があった。
【0066】
さらに、従来のMPEGビデオデコーダでは、複数の符号化ストリームを同時に入力したり、または、DVBで供給される多チャンネル分の複数の符号化ストリーム(エレメンタリストリーム)が多重化されているチャンネル多重ストリーム(トランスポートストリーム)を入力したりして、それらを同時にデコードし、得られる多チャンネル分の複数の復号ビデオ信号を同時に、あるいは、複数の復号ビデオ信号のうちの1つを選択して出力するようなことができない課題があった。
【0067】
本発明はこのような状況に鑑みてなされたものであり、実現可能な回路規模であって、4:2:2P@HLの符号化ストリームを実時間再生でき、且つ、MP@MLの符号化ストリームを高速再生できるビデオデコーダを実現することを目的とする。
【0068】
また、多チャンネル分の複数の符号化ストリームを平行してデコードすることができるビデオデコーダを実現することを目的とする。
【0069】
【課題を解決するための手段】
本発明復号装置は、符号化ストリームを入力する入力手段と、バッファリングされている符号化ストリームをスライス単位で読み出して復号する複数の復号手段と、複数の復号手段を並行して動作させるように制御する復号制御手段と、複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、複数の復号手段からの要求に対応したものを選択する選択手段と、選択された画像データに対して必要に応じて動き補償処理を施す動き補償手段と、必要に応じて動き補償処理が施された画像データを任意の再生速度で出力させる出力制御手段とを含み、復号制御手段は、復号手段がスライス単位で復号対象とする符号化ストリームがバッファリングされている位置を示す書き込みポインタを複数の復号手段のうちのいずれかに供給し、復号手段は、供給された書込みポインタに従い、バッファリングされている符号化ストリームをスライス単位で読み出して復号する。
【0070】
前記高速化された符号化ストリームは、ビットレートが所定数倍に高速化されたMPEG2ビデオビットストリームであるようにすることができる。
【0071】
前記出力制御手段は、ビットレートが所定数倍に高速化されたMPEG2ビデオビットストリームの復号結果である画像データを、0倍乃至所定数倍の再生速度で出力させるようにすることができる。
【0072】
前記復号手段は、復号処理の終了を示す信号を復号制御手段に出力するようにすることができ、前記復号制御手段は、復号処理の終了を示す信号を出力した復号手段に、新たな符号化ストリームを復号させるように制御するようにすることができる。
【0073】
本発明の第1の復号装置は、符号化ストリームをバッファリングする第1のバッファ手段と、符号化ストリームから、符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、第1のバッファ手段から、スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、読み出されたスタートコードおよび位置情報をバッファリングする第2のバッファ手段と、第1のバッファ手段による符号化ストリームのバッファリング、および第2のバッファ手段によるスタートコードおよび位置情報のバッファリングを制御するバッファリング制御手段とをさらに含むことができる。
【0074】
前記復号手段は、復号処理が終了したことを示す終了信号を前記選択手段に出力し、前記選択手段は、複数の復号手段それぞれの処理状態に対応する複数の処理状態値を記憶する記憶手段を含むことができ、記憶している全ての処理状態値が第1の値になった場合、終了信号を出力している復号手段に対応する処理状態値を、第1の値から第2の値に変更し、対応する処理状態値が第2の値である復号手段により復号された画像データのうち、いずれかの画像データを選択し、選択された画像データを復号した復号手段に対応する処理状態値を第1の値に変更するようにすることができる。
【0075】
本発明の第1の復号装置は、選択手段により選択された画像データ、または動き補償手段により動き補償が施された画像データを保持する保持手段と、選択手段により選択された画像データ、または動き補償手段により動き補償が施された画像データの保持手段による保持を制御する保持制御手段とをさらに含むことができる。
【0076】
前記保持手段は、画像データの輝度成分と色差成分をそれぞれ分けて保持するようにさうることができる。
【0077】
前記復号手段は、スライスデコーダとすることができる。
【0078】
本発明復号方法は、符号化ストリームを入力する入力ステップと、複数の復号手段を並行して動作させるように制御する復号制御ステップと、複数の復号手段により、バッファリングされている符号化ストリームをスライス単位で読み出して復号する復号ステップと、複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、複数の復号手段からの要求に対応したものを選択する選択ステップと、選択された画像データに対して必要に応じて動き補償処理を施す動き補償手段と、必要に応じて動き補償処理が施された画像データを任意の再生速度で出力させる出力制御ステップとを含み、復号制御ステップは、復号手段がスライス単位で復号対象とする符号化ストリームがバッファリングされている位置を示す書き込みポインタを複数の復号手段のうちのいずれかに供給し、復号ステップは、供給された書込みポインタに従い、バッファリングされている符号化ストリームをスライス単位で読み出して復号する。
【0079】
本発明記録媒体は、符号化ストリームを入力する入力ステップと、複数の復号手段を並行して動作させるように制御する復号制御ステップと、複数の復号手段により、バッファリングされている符号化ストリームをスライス単位で読み出して復号する復号ステップと、複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、複数の復号手段からの要求に対応したものを選択する選択ステップと、選択された画像データに対して必要に応じて動き補償処理を施す動き補償手段と、必要に応じて動き補償処理が施された画像データを任意の再生速度で出力させる出力制御ステップとを含み、復号制御ステップは、復号手段がスライス単位で復号対象とする符号化ストリームがバッファリングされている位置を示す書き込みポインタを複数の復号手段のうちのいずれかに供給し、復号ステップは、供給された書込みポインタに従い、バッファリングされている符号化ストリームをスライス単位で読み出して復号する処理をコンピュータに実行させるプログラムが記録されている。
【0080】
本発明復号装置および方法、並びに記録媒体のプログラムにおいては、符号化ストリームが入力され、複数の復号手段が並行して動作されるように制御されて、バッファリングされている符号化ストリームがスライス単位で読み出されて復号される。さらに、複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、複数の復号手段からの要求に対応したものが選択され、選択された画像データに対して必要に応じて動き補償処理が施され、必要に応じて動き補償処理が施された画像データが任意の再生速度で出力される。なお、復号制御の処理では、復号手段がスライス単位で復号対象とする符号化ストリームがバッファリングされている位置を示す書き込みポインタが複数の復号手段のうちのいずれかに供給され、復号の処理は、供給された書込みポインタに従い、バッファリングされている符号化ストリームがスライス単位で読み出されて復号される。
【0082】
前記符号化ストリームは、MPEG2ビデオビットストリームとすることができる。
【0083】
前記復号手段は、復号処理が終了したことを示す終了信号を前記復号制御手段に出力し、前記復号制御手段は、前記終了信号を出力した前記復号手段に対して、他の前記符号化ストリームを復号させるように制御するようにすることができる。
【0084】
本発明の第2の復号装置は、符号化ストリームをバッファリングする第1のバッファ手段と、符号化ストリームから、符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、第1のバッファ手段から、スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、読み出されたスタートコードおよび位置情報をバッファリングする第2のバッファ手段と、第1のバッファ手段による符号化ストリームのバッファリング、および第2のバッファ手段によるスタートコードおよび位置情報のバッファリングを制御するバッファリング制御手段とをさらに含むことができる。
【0085】
前記復号手段は、復号処理が終了したことを示す終了信号を前記選択手段に出力し、前記選択手段は、複数の復号手段それぞれの処理状態に対応する複数の処理状態値を記憶する記憶手段を含むことができ、記憶している全ての処理状態値が第1の値になった場合、終了信号を出力している復号手段に対応する処理状態値を、第1の値から第2の値に変更し、対応する処理状態値が第2の値である復号手段により復号された画像データのうち、いずれかの画像データを選択し、選択された画像データを復号した復号手段に対応する処理状態値を第1の値に変更するようにすることができる。
【0086】
本発明の第2の復号装置は、選択手段により選択された画像データ、または動き補償手段により動き補償が施された画像データを保持する保持手段と、選択手段により選択された画像データ、または動き補償手段により動き補償が施された画像データの保持手段による保持を制御する保持制御手段とをさらに含むことができる。
【0087】
前記保持手段は、画像データの輝度成分と色差成分をそれぞれ分けて保持するようにすることができる。
【0088】
本発明の第2の復号装置は、複数の符号化ストリームが多重化されている多重ストリームの入力を受け付ける受付手段と、多重ストリームを複数の符号化ストリームに分離して、入力手段に供給する供給手段とをさらに含むことができる。
【0089】
前記復号手段は、スライスデコーダとすることができる。
【0101】
【発明の実施の形態】
本発明を適用したMPEGビデオデコーダの第1の構成例について、図18を参照して説明する。
【0102】
このMPEGビデオデコーダ40は、ストリーム入力回路41、スタートコード検出回路42、ストリームバッファ制御回路43、クロック発生回路44、ピクチャデコーダ45、スライスデコーダ制御回路46、スライスデコーダ47乃至49、動き補償回路50、輝度バッファ制御回路51、色差バッファ制御回路52、および表示出力回路53から構成されるIC31、ストリームバッファ61およびスタートコードバッファ62で構成され、例えば、DRAMからなるバッファ32、例えば、DRAMからなる輝度バッファ71、例えば、DRAMからなる色差バッファ72、CPU(Central Processing Unit)などよりなるコントローラ34、並びに、ドライブ35で構成される。
【0103】
ストリーム入力回路41は、高能率符号化された符号化ストリーム(MPEG2ビデオビットストリーム)の入力を受け、スタートコード検出回路42に供給する。スタートコード検出回路42は、入力された符号化ストリームをストリームバッファ制御回路43に供給するとともに、図14を用いて説明したスタートコードを検出して、それを基に、そのスタートコードの種類と、ストリームバッファ61にそのスタートコードが書き込まれる位置を示す書き込みポインタとを含む、スタートコード情報を生成し、ストリームバッファ制御回路43に供給する。
【0104】
クロック発生回路44は、図15を用いて説明したクロック発生回路13の2倍の周期の基本クロックを発生し、ストリームバッファ制御回路43に供給する。ストリームバッファ制御回路43は、クロック発生回路44から供給される基本クロックに従って、入力された符号化ストリームを、バッファ32のストリームバッファ61に書き込み、入力されたスタートコード情報を、バッファ32のスタートコードバッファ62に書き込む。ストリームバッファ61は、少なくとも4:2:2P@HLのデコードに要求されるVBVバッファサイズである47,185,920ビットの容量を有している。
【0105】
ピクチャデコーダ45は、ストリームバッファ制御回路43を介して、スタートコードバッファ62からスタートコード情報を読み出す。例えば、デコード開始時は、図3を用いて説明したsequence_headerからデコードが開始されるので、ピクチャデコーダ45は、図14を用いて説明したスタートコードであるsequence_header_codeに対応する書き込みポインタをスタートコードバッファ62から読み出し、その書き込みポインタを基に、ストリームバッファ61からsequence_headerを読み出してデコードする。続いて、ピクチャデコーダ45は、sequence_headerの読み出しと同様に、sequence_extension,GOP_header,picture_coding_extension等をストリームバッファ61から読み出してデコードする。
【0106】
ピクチャデコーダ45が、スタートコードバッファ62から、最初のslice_start_codeを読み出した時点で、そのピクチャのデコードに必要な全てのパラメータが揃ったことになる。ピクチャデコーダ45は、デコードしたピクチャ層のパラメータを、スライスデコーダ制御回路46に出力する。
【0107】
スライスデコーダ制御回路46は、ピクチャ層のパラメータの入力を受け、符号化ストリームのクラス(4:2:2@ML、MP@ML等)を判別する。スライスデコーダ制御回路46はまた、ピクチャ層のパラメータの入力を受け、ストリームバッファ制御回路43を介して、スタートコードバッファ62から、対応するスライスのスタートコード情報を読み出す。さらに、スライスデコーダ制御回路46は、スライスデコーダ47乃至49のいずれかにデコードさせるスライスが、符号化ストリームに含まれる何番目のスライスであるかを示すレジスタを有し、そのレジスタを参照しながら、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスの書き込みポインタをスライスデコーダ47乃至49のいずれかに供給する。スライスデコーダ制御回路46が、スライスデコーダ47乃至49のうち、デコードを実行させるスライスデコーダを選択する処理については、図19および図20を用いて後述する。
【0108】
スライスデコーダ47は、マクロブロック検出回路81、ベクトル復号回路82、逆量子化回路83、および逆DCT回路84で構成され、スライスデコーダ制御回路46から入力されたスライスの書き込みポインタを基に、対応するスライスを、ストリームバッファ制御回路43を介してストリームバッファ61から読み出す。そして、スライスデコーダ制御回路46から入力されたピクチャ層のパラメータに従って、読み出したスライスをデコードして、動き補償回路50に出力する。
【0109】
マクロブロック検出回路81は、スライス層のマクロブロックを分離し、各マクロブロックのパラメータをデコードし、可変長符号化された各マクロブロックの予測モードおよび予測ベクトルをベクトル復号回路82に供給し、可変長符号化された係数データを逆量子化回路83に供給する。ベクトル復号回路82は、可変長符号化された、各マクロブロックの予測モードおよび予測ベクトルをデコードして、予測ベクトルを復元する。逆量子化回路83は、可変長符号化された係数データをデコードして逆DCT回路84に供給する。逆DCT回路84は、デコードされた係数データに逆DCTを施し、符号化前の画素データに復元する。
【0110】
スライスデコーダ47は、動き補償回路50に、デコードしたマクロブロックに対する動き補償の実行を要求し(すなわち、図中、REQで示される信号を1にする)、動き補償回路50から動き補償の実行要求に対する受付を示す信号(図中ACKで示される信号)を受けて、デコードされた予測ベクトルおよびデコードされた画素を動き補償回路50に供給する。スライスデコーダ47は、ACK信号の入力を受けて、デコードされた予測ベクトルおよびデコードされた画素を動き補償回路50に供給した後に、REQ信号を1から0に変更する。そして、次に入力されたマクロブロックのデコードが終了した時点で、REQ信号を、再び0から1に変更する。
【0111】
また、スライスデコーダ48のマクロブロック検出回路85乃至逆DCT回路88およびスライスデコーダ49のマクロブロック検出回路89乃至逆DCT回路92においても、スライスデコーダ47のマクロブロック検出回路81乃至逆DCT回路84と同様の処理が行われるので、その説明は省略する。
【0112】
動き補償回路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のいずれのデコーダの出力に対して動き補償を実行するかを選択する処理については、図21および図22を用いて後述する。
【0113】
スライスデコーダ47乃至49のいずれかから入力されるマクロブロックが動き補償を使用していない場合、動き補償回路50は、その画素データが輝度データであれば、輝度バッファ制御回路51を介して輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。
【0114】
また、スライスデコーダ47乃至49のいずれかから出力されるマクロブロックが動き補償を使用している場合、動き補償回路50は、スライスデコーダ47乃至49のうち対応するデコーダから入力される予測ベクトルに従って、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71から参照画素を読み込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72から参照画素データを読み込む。そして、動き補償回路50は、読み込んだ参照画素データを、スライスデコーダ47乃至49のいずれかから供給された画素データに加算し、動き補償を行う。
【0115】
動き補償回路50は、動き補償を行った画素データを、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。
【0116】
表示出力回路53は、デコードされた画像データを出力するための同期タイミング信号を発生し、このタイミングに従って、輝度バッファ制御回路51を介して、輝度バッファ71から輝度データを読み出し、色差バッファ制御回路52を介して、色差バッファ72から色差データを読み出して、復号ビデオ信号として出力する。
【0117】
ドライブ35は、コントローラ34に接続されており、必要に応じて装着される磁気ディスク101、光ディスク102、光磁気ディスク103、および半導体メモリ104などとデータの授受を行う。また、コントローラ34は、以上説明したIC31、およびドライブ35の動作を制御するものである。コントローラ34は、例えば、ドライブ35に装着されている磁気ディスク101、光ディスク102、光磁気ディスク103、および半導体メモリ104などに記録されているプログラムに従って、IC31に処理を実行させることができる。
【0118】
次に、図19のフローチャートを参照して、スライスデコーダ制御回路46の処理について説明する。
【0119】
ステップS1において、スライスデコーダ制御回路46は、画像の垂直方向のマクロブロック数を設定した後、処理するスライスが画像内の何番目のスライスであるかを表わすレジスタの値Nを1に初期化する。ステップS2において、スライスデコーダ制御回路46は、スライスデコーダ47が処理中であるか否かを判断する。
【0120】
ステップS2において、スライスデコーダ47が処理中ではないと判断された場合、ステップS3に進む。ステップS3において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスNの書き込みポインタをスライスデコーダ47に供給し、スライスデコーダ47にスライスNをデコードさせ、処理はステップS8に進む。
【0121】
ステップS2において、スライスデコーダ47が処理中であると判断された場合、ステップS4に進む。ステップS4において、スライスデコーダ制御回路46は、スライスデコーダ48が処理中であるか否かを判断する。ステップS4において、スライスデコーダ48が処理中ではないと判断された場合、ステップS5に進む。ステップS5において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスNの書き込みポインタをスライスデコーダ48に供給し、スライスデコーダ48にスライスNをデコードさせ、処理はステップS8に進む。
【0122】
ステップS4において、スライスデコーダ48が処理中であると判断された場合、ステップS6に進む。ステップS6において、スライスデコーダ制御回路46は、スライスデコーダ49が処理中であるか否かを判断する。ステップS6において、スライスデコーダ49が処理中であると判断された場合、ステップS2に戻り、それ以降の処理が繰り返される。
【0123】
ステップS6において、スライスデコーダ49が処理中ではないと判断された場合、ステップS7に進む。ステップS7において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライスNの書き込みポインタをスライスデコーダ49に供給し、スライスデコーダ49にスライスNをデコードさせ、処理はステップS8に進む。
【0124】
ステップS8において、スライスデコーダ制御回路46は、処理するスライスが符号化ストリームの何番目のスライスであるかを示すレジスタの値Nを1だけインクリメントする。ステップS9において、スライスデコーダ制御回路46は、全スライスのデコードが終了したか否かを判断する。ステップS9において、全スライスのデコードが終了されていないと判断された場合、ステップS2に戻り、それ以降の処理が繰り返される。ステップS9において、全スライスのデコードが終了されたと判断された場合、スライスデコーダ制御回路46の当該処理は終了される。
【0125】
図19を用いて説明したスライスデコーダ制御回路46の処理の具体例について、図20を参照して説明する。上述したように、ピクチャデコーダ45でピクチャ層のデータがデコードされ、そのパラメータがスライスデコーダ制御回路46に供給される。ここで、図19を用いて説明したステップS1において、スライスデコーダ制御回路46は、画像の垂直方向のマクロブロック数(レジスタの値Nが取り得る最大値)を設定した後、レジスタの値Nを1に初期化する。ステップS2において、スライスデコーダ47は処理中ではないと判断されるので、ステップS3において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スタートコード情報に含まれるスライス1の書き込みポインタをスライスデコーダ47に供給し、スライスデコーダ47にスライスN(N=1)をデコードさせ、ステップS8において、レジスタの値Nを1だけインクリメントする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0126】
ステップS2において、スライスデコーダ47は処理中であると判断される。そして、ステップS4において、スライスデコーダ48は処理中でないと判断されるので、ステップS5において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スライス2の書き込みポインタを、スライスデコーダ48に供給し、スライスデコーダ48にスライスN(N=2)をデコードさせ、ステップS8において、Nを1だけインクリメントする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0127】
ステップS2において、スライスデコーダ47は処理中であると判断され、ステップS4において、スライスデコーダ48は処理中であると判断される。そして、ステップS6において、スライスデコーダ49は処理中ではないと判断されるので、ステップS7において、スライスデコーダ制御回路46は、ピクチャ層のパラメータと、スライス3の書き込みポインタを、スライスデコーダ49に供給し、スライスデコーダ49にスライスN(N=3)をデコードさせ、ステップS8において、Nを1だけインクリメントする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0128】
スライスデコーダ47乃至49は、入力されたスライスのデコード処理を実施した後、デコード処理の完了を示す信号をスライスデコーダ制御回路46に出力する。すなわち、スライスデコーダ47乃至49のいずれかからスライスのデコードの完了を示す信号が入力されるまで、スライスデコーダ47乃至49は全て処理中であるので、ステップS2、ステップS4、およびステップS6の処理が繰り返される。そして、図20の図中Aで示されるタイミングで、スライスデコーダ48がデコード処理の完了を示す信号を、スライスデコーダ制御回路46に出力した場合、ステップS4において、スライスデコーダ48が処理中ではないと判断されるので、ステップS5において、スライスデコーダ制御回路46は、スライス4の書き込みポインタを、スライスデコーダ48に供給し、スライスデコーダ48に、スライスN(N=4)をデコードさせ、ステップS8において、Nを1だけインクリメントする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。
【0129】
そして、次にスライスデコーダ47乃至49のいずれかからデコード処理の完了を示す信号の入力を受けるまで、スライスデコーダ制御回路46は、ステップS2、ステップS4、およびステップS6の処理を繰り返す。図20においては、スライスデコーダ制御回路46は、図中Bで示されるタイミングで、スライスデコーダ49からスライス3のデコードの終了を示す信号の入力を受けるので、ステップS6において、スライスデコーダ49は処理中ではないと判断される。ステップS7において、スライスデコーダ制御回路46は、スライス5の書き込みポインタをスライスデコーダ49に供給し、スライスデコーダ49に、スライスN(N=5)をデコードさせ、ステップS8において、Nを1だけインクリメントする。そして、ステップS9において、全スライスのデコードが終了していないと判断されるため、処理はステップS2に戻る。以下、最後のスライスのデコードが終了されるまで、同様の処理が繰り返される。
【0130】
このように、スライスデコーダ制御回路46は、スライスデコーダ47乃至49の処理状況に対応してスライスのデコード処理を割り当てるので、スライスデコーダ47乃至49に効率よくデコード処理を実行させることが可能となる。
【0131】
次に、動き補償回路50のスライスデコーダ調停処理について、図21のフローチャートを参照して説明する。
【0132】
ステップS21において、動き補償回路50は、内部のレジスタReg_REQ_A,Reg_REQ_B、およびReg_REQ_Cを初期化する。すなわち、Reg_REQ_A=0,Reg_REQ_B=0、およびReg_REQ_C=0とする。
【0133】
ステップS22において、動き補償回路50は、レジスタの値が全て0であるか否かを判断する。ステップS22において、レジスタの値が全て0ではない(すなわち、1つでも1がある)と判断された場合、ステップS24に進む。
【0134】
ステップS22において、レジスタの値が全て0であると判断された場合、ステップS23に進む。ステップS23において、動き補償回路50は、スライスデコーダ47乃至49から入力されるREQ信号を基に、レジスタの値を更新する。すなわち、スライスデコーダ47からREQ信号が出力されている場合、Reg_REQ_A=1とし、スライスデコーダ48からREQ信号が出力されている場合、Reg_REQ_B=1とし、スライスデコーダ49からREQ信号が出力されている場合、Reg_REQ_C=1とする。そして、処理はステップS24に進む。
【0135】
ステップS24において、動き補償回路50は、Reg_REQ_A=1であるか否かを判断する。ステップS24において、Reg_REQ_A=1であると判断された場合、ステップS25に進む。ステップS25において、動き補償回路50は、スライスデコーダ47にACK信号を送信し、Reg_REQ_A=0とする。スライスデコーダ47は、動き補償回路50に、ベクトル復号回路82で復号された予測ベクトルと、逆DCT回路84で逆DCTされた画素を出力する。そして、処理はステップS30に進む。
【0136】
ステップS24において、Reg_REQ_A=1ではないと判断された場合、ステップS26に進む。ステップS26において、動き補償回路50は、Reg_REQ_B=1であるか否かを判断する。ステップS26において、Reg_REQ_B=1であると判断された場合、ステップS27に進む。ステップS27において、動き補償回路50は、スライスデコーダ48にACK信号を送信し、Reg_REQ_B=0とする。スライスデコーダ48は、動き補償回路50に、ベクトル復号回路86で復号された予測ベクトルと、逆DCT回路88で逆DCTされた画素を出力する。そして、処理はステップS30に進む。
【0137】
ステップS26において、Reg_REQ_B=1ではないと判断された場合、ステップS28に進む。ステップS28において、動き補償回路50は、Reg_REQ_C=1であるか否かを判断する。ステップS28において、Reg_REQ_C=1ではないと判断された場合、ステップS22に戻り、それ以降の処理が繰り返される。
【0138】
ステップS28において、Reg_REQ_C=1であると判断された場合、ステップS29に進む。ステップS29において、動き補償回路50は、スライスデコーダ49にACK信号を送信し、Reg_REQ_C=0とする。スライスデコーダ49は、動き補償回路50に、ベクトル復号回路90で復号された予測ベクトルと、逆DCT回路92で逆DCTされた画素を出力する。そして、処理はステップS30に進む。
【0139】
ステップS30において、動き補償回路50は、スライスデコーダ47乃至49のいずれかから入力されたマクロブロックは、動き補償を使用しているか否かを判断する。
【0140】
ステップS30において、マクロブロックが動き補償を使用していると判断された場合、ステップS31に進む。ステップS31において、動き補償回路50は、入力されたマクロブロックに動き補償処理を行う。すなわち、動き補償回路50は、スライスデコーダ47乃至49のうち対応するデコーダから出力される予測ベクトルに従って、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71から参照画素を読み出し、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72から参照画素データを読み出す。そして、動き補償回路50は、読み出した参照画素データを、スライスデコーダ47乃至49のいずれかから供給された画素データに加算し、動き補償を行う。
【0141】
動き補償回路50は、動き補償を行った画素データを、その画素データが輝度データであれば、輝度バッファ制御回路51を介して、輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して、色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画素の参照データとされる場合に備える。そして、ステップS22に戻り、それ以降の処理が繰り返される。
【0142】
ステップS30において、マクロブロックが動き補償を使用していないと判断された場合、ステップS32に進む。ステップS32において、動き補償回路50は、その画素データが輝度データであれば、輝度バッファ制御回路51を介して輝度バッファ71に書き込み、その画素データが色差データであれば、色差バッファ制御回路52を介して色差バッファ72に書き込み、表示出力に備えるとともに、この画素データが、他の画像の参照データとされる場合に備える。そして、ステップS22に戻り、それ以降の処理が繰り返される。
【0143】
図21を用いて説明した動き補償回路50によるデコーダの調停処理の具体例について、図22を参照して説明する。
【0144】
図22に示すタイミングCにおいて、図21のステップ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を行う。
【0145】
動き補償1が終了した後、すなわち、図22のDで示されるタイミングにおいて、処理は、再びステップS22に戻る。図中Dで示されるタイミングにおいては、スライスデコーダ47から、REQ信号が出力されている。しかし、レジスタの値は、Reg_REQ_A=0,Reg_REQ_B=1,Reg_REQ_C=1であり、ステップS22において、レジスタの値は、全て0ではないと判断されるため、処理は、ステップS24に進み、レジスタの値は更新されない。
【0146】
ステップS24において、Reg_REQ_A=0であると判断され、ステップS26において、Reg_REQ_B=1であると判断されるので、動き補償回路50は、ステップS27において、スライスデコーダ48にACK信号を出力して、Reg_REQ_B=0とし、スライスデコーダ48から予測ベクトルと画素の入力を受け、動き補償2を行う。
【0147】
動き補償2が終了した後、すなわち、図22のEで示されるタイミングにおいて、処理は再びステップS22に戻る。図中Eで示されるタイミングにおいても、スライスデコーダ47から、REQ信号が出力されている。しかし、レジスタの値は、Reg_REQ_A=0,Reg_REQ_B=0,Reg_REQ_C=1であるので、ステップS22において、レジスタの値は全て0ではないと判断されるので、図中Dで示されるタイミングのときと同様、レジスタの値は更新されない。
【0148】
そして、ステップ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を行う。
【0149】
動き補償3が終了した後、すなわち、図22の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となる。
【0150】
そして、ステップS24において、Reg_REQ_A=1であると判断され、同様の処理により、動き補償4が実行される。
【0151】
このような処理を繰り返すことにより、動き補償回路50は、スライスデコーダ47乃至49を調停しながら、動き補償を行う。
【0152】
以上説明したように、本発明を適用したMPEGビデオデコーダ40においては、スタートコードバッファ62を設けたことにより、ピクチャデコーダ45乃至スライスデコーダ49を、お互いの動作の終了を待つことなしに、ストリームバッファ61にアクセスさせることができる。また、スライスデコーダ47乃至49は、スライスデコーダ制御回路46の処理により、同時に動作させることができる。さらに、動き補償回路50は、適宜、スライスデコーダ47乃至49のうちの1つを選択し、それぞれ分離された輝度バッファ71および色差バッファ72にアクセスし、動き補償を行うことができる。このように、MPEGビデオデコーダ40は、デコード処理性能およびバッファへのアクセス性能が向上されているので、4:2:2P@HLのMPEG2ビデオビットストリームを実時間でデコードすることが可能となる。
【0153】
ところで、MP@MLのMPEG2ビデオビットストリームを実時間でデコードするために要する処理能力は、4:2:2P@HLのMPEG2ビデオビットストリームを実時間でデコードするために要する処理能力の1/6である。よって換言すれば、本発明を適用したMPEGビデオデコーダ40は、MP@MLのMPEG2ビデオビットストリームを最大6倍速で再生することが可能である。
【0154】
具体的には、例えば、図23に示すシステムにMPEGビデオデコーダ40を用いることにより、MP@MLのMPEG2ビデオビットストリームの高速再生が実現される。
【0155】
当該システムのハードディスクドライブ(HDD)111には、MP@MLのMPEG2ビデオビットストリームが記録されている。再生装置112は、MPEGビデオデコーダ40のコントローラ34からの制御に基づき、ハードディスクドライブ111に記録されているMP@MLのMPEG2ビデオビットストリームを、通常(1倍速)よりも高速(例えば6倍速)で読み出し、得られた高速再生ストリームをMPEGビデオデコーダ40に供給する。
【0156】
例えば、図24(A)に示すようなMP@MLのMPEG2ビデオビットストリームは、MPEGビデオデコーダ40により、一切の処理が省略されることなく完全にデコードされ、図24(B)に示すように輝度バッファ71および色差バッファ72に書き込まれる。輝度バッファ71および色差バッファ72に書き込まれた画像データを、表示出力回路53が画像のタイプに拘わりなく6枚当たり1枚の割合で読み出し、復号ビデオ出力として後段に出力することにより、6倍速の高速再生が実現される。
【0157】
なお、表示出力回路53が、輝度バッファ71および色差バッファ72に書き込まれた画像データを、例えば、画像のタイプに拘わりなく3枚当たり1枚の割合で読み出し、復号ビデオ出力として後段に出力すれば、3倍速の高速再生が実現される。
【0158】
すなわち、表示出力回路53が、輝度バッファ71および色差バッファ72に書き込まれた画像データを画像のタイプに拘わりなく、X(=0乃至6)枚当たり1枚の割合で読み出し、復号ビデオ出力として後段に出力すれば、X倍速の高速再生が実現される。ここで、X=0の場合、スチル再生となる。
【0159】
以上説明したように、MPEGビデオデコーダ40においては、表示出力回路53が、画像のタイプに拘わりなく一定の割合でデータを読み出すことによって、見た目にもギクシャクしていない自然な動きの画像を出力することが可能となる。
【0160】
このようにMP@MLのMPEG2ビデオビットストリームを高速再生できるMPEGビデオデコーダ40を映像編集等に用いれば、例えば、ビデオ信号の映像素材の内容を容易に理解することができ、さらに、編集点等を快適に検索することができるので、作業効率を向上させることが可能となる。
【0161】
ところでまた、図18に示したMPEGビデオデコーダ40に、さらに表示出力回路53と同様の回路を2個追加して表示出力を3系統とすれば、入力された6倍速のMP@MLのMPEG2ビデオビットストリームを3倍速で再生して、得られる復号ビデオ出力を当該3系統で順次出力するようにすることが可能である。
【0162】
また、本発明は、2:1インタレースであって30フレーム/秒のMP@MLのMPEG2ビデオビットストリームを2倍速で記録媒体から読み出し、ノンインタレースであって60フレーム/秒の画像として出力するような場合にも適用することが可能である。
【0163】
なお、図23に示したシステムにおいては、ハードディスクドライブ111にMP@MLのMPEG2ビデオビットストリームを記録するようにしたが、記録されているMP@MLのMPEG2ビデオビットストリームを6倍速で読み出せるものであれば、ハードディスクドライブ111の代わりに他の記録再生デバイスを用いてもよい。
【0164】
次に、本発明を適用したMPEGビデオデコーダの第2の構成例について、図25を参照して説明する。このMPEGビデオデコーダ130は、入力される多チャンネル分の符号化ストリーム(いまの場合、チャンネルCH1の符号化ストリーム入力、およびチャンネルCH2の符号化ストリーム入力)を平行してデコードし、得られるチャンネルCH1ビデオ出力、およびチャンネルCH2ビデオ出力を後段に供給するものである。また、MPEGビデオデコーダ130は、図18のMPEGビデオデコーダ40と同様に、図15に示した従来のMPEGビデオデコーダの6倍のデコード処理能力を有する。
【0165】
MPEGビデオデコーダ130とMPEGビデオデコーダ40との構成上の違いについて説明する。MPEGビデオデコーダ130においては、MPEGビデオデコーダ40のストリーム入力回路41、スタートコード検出回路42、および表示出力回路53が、それぞれ、チャンネルCH1用のストリーム入力回路41−1、スタートコード検出回路42−1、および表示出力回路53−1、並びにチャンネルCH2用のストリーム入力回路41−2、スタートコード検出回路42−2、および表示出力回路53−2に置換されている。さらに、MPEGビデオデコーダ130においては、バッファ32のストリームバッファ61およびスタートコードバッファ62、輝度バッファ71、および色差バッファ72に、それぞれチャンネルCH1用の領域とチャンネルCH2用の領域が設けられている。
【0166】
ストリーム入力回路41−1は、高能率符号化されたチャンネルCH1の符号化ストリーム(MPEG2ビデオビットストリーム)の入力を受け、スタートコード検出回路42−1に供給する。スタートコード検出回路42−1は、入力されたチャンネルCH1の符号化ストリームをストリームバッファ制御回路43に供給するとともに、図14を用いて説明したスタートコードを検出して、それを基に、そのスタートコードの種類と、ストリームバッファ61のチャンネルCH1用の領域にそのスタートコードが書き込まれる位置を示す書き込みポインタとを含む、スタートコード情報を生成し、ストリームバッファ制御回路43に供給する。
【0167】
同様に、ストリーム入力回路41−2は、高能率符号化されたチャンネルCH2の符号化ストリーム(MPEG2ビデオビットストリーム)の入力を受け、スタートコード検出回路42−2に供給する。スタートコード検出回路42−2は、入力されたチャンネルCH2の符号化ストリームをストリームバッファ制御回路43に供給するとともに、図14を用いて説明したスタートコードを検出して、それを基に、そのスタートコードの種類と、ストリームバッファ61のチャンネルCH2用の領域にそのスタートコードが書き込まれる位置を示す書き込みポインタとを含む、スタートコード情報を生成し、ストリームバッファ制御回路43に供給する。
【0168】
表示出力回路53−1は、デコードされたチャンネルCH1の画像データを出力するための同期タイミング信号を発生し、このタイミングに従って、輝度バッファ制御回路51を介して、輝度バッファ71から輝度データを読み出し、色差バッファ制御回路52を介して、色差バッファ72から色差データを読み出して、チャンネルCH1のビデオ出力として後段に供給する。
【0169】
同様に、表示出力回路53−2は、デコードされたチャンネルCH2の画像データを出力するための同期タイミング信号を発生し、このタイミングに従って、輝度バッファ制御回路51を介して、輝度バッファ71から輝度データを読み出し、色差バッファ制御回路52を介して、色差バッファ72から色差データを読み出して、チャンネルCH2のビデオ出力として供給する。
【0170】
なお、MPEGビデオデコーダ130を構成する他の回路については、同一の番号が付与されたMPEGビデオデコーダ40を構成する回路と同様であるので、それらの説明については省略する。
【0171】
次に、MPEGビデオデコーダ130がLチャンネル分(いまの場合、L=2)の符号化ストリームを平行してデコードするときのコントローラ34によるパラレルでコード制御処理について、図26のフローチャートを参照して説明する。
【0172】
ステップS51において、コントローラ34は、デコードするチャンネルを示す自己のレジスタCHを1に初期化する。ステップS52において、コントローラ34は、ピクチャデコーダ45に対して、レジスタCHの値に対応するチャンネルのピクチャ層のデコードを指示する。ステップS53において、コントローラ34は、ピクチャデコーダ45がレジスタCHの値に対応するチャンネル(いまの場合、チャンネルCH1)のピクチャ層のデコードを完了したか否かを判定し、デコードを完了したと判定するまで待機する。
【0173】
この待機の間、コントローラ34からの指示に対応して、ピクチャデコーダ45は、ストリームバッファ制御回路43を介してバッファ32のスタートコードバッファ62のチャンネルCH1の領域からスタートコード情報を読み出し、デコードの開始点を示すsequence_headerの書き込みポインタを検出する。また、ピクチャデコーダ45は、検出したチャンネルCH1のsequence_headerの書き込みポインタに基づき、ストリームバッファ制御回路43を介してバッファ32のストリームバッファ61のチャンネルCH1の領域からsequence_headerを読み出してデコードする。以降、同様にして、ストリームバッファ61のチャンネルCH1の領域からsequence_extension,GOP_header,picture_header、およびpicture_coding_extensionを読み出してデコードする。さらに、ピクチャデコーダ45は、スタートコードバッファ62のチャンネルCH1の領域からスタートコード情報を読み出し、最初のスライスの書き込みポインタを検出する。
【0174】
この段階、すなわち、チャンネルCH1のピクチャのデコードに必要な全てのピクチャ層パラメータがそろった段階において、ピクチャデコーダ45は、ピクチャ層のデコードが完了したことをコントローラ34に通知する。
【0175】
この通知に基づき、ステップS53において、コントローラ34は、ピクチャ層のデコードが完了したと判定する。処理は、ステップS54に進む。ステップS54において、コントローラ34は、ピクチャデコーダ45からデコードされたチャンネルCH1のピクチャ層パラメータを取得して保持する。ステップS55において、コントローラ34は、スライスデコーダ46が準備完了であるか否か(以前に指示した処理を完了しているか否かなど)を判定し、スライスデコーダ46が準備完了であると判定するまで待機する。スライスデコーダ46が準備完了であると判定された場合、処理はステップS56に進む。
【0176】
ステップS56において、コントローラ34は、ピクチャデコーダ45から取得して保持しているチャンネルCH1のピクチャ層パラメータをスライスデコーダ制御回路46に供給する。ステップS57において、コントローラ34は、スライスデコーダ制御回路46および動き補償回路50に対して、チャンネルCH1のスライス層のデコードを指示する。
【0177】
この指示に対応して、スライスデコーダ制御回路46は、チャンネルCH1の各スライスのデコードを、スライスデコーダ47乃至49に振り分ける。なお、その詳細は、図19および図20を参照して上述した処理と同様であるので説明を省略する。また、この指示に対応して、動き補償回路50は、スライスデコーダ47乃至49からの要求を調停する。なお、その詳細は、図21および図22を参照して上述した処理と同様であるので説明を省略する。
【0178】
以上のような制御によって、チャンネルCH1の1ピクチャ分のデコードが終了したとき、スライスデコーダ制御回路46は、1ピクチャ分のデコードが終了したことをコントローラ34に通知する。
【0179】
この通知に対応して、コントローラ34は、ステップS58において、レジスタCHの値を1だけインクリメントする。いまの場合、レジスタCHの値が1から2にインクリメントされる。ステップS59において、コントローラ34は、レジスタCHの値がLよりも大きいか否かを判定する。レジスタCHの値がLよりも大きいと判定されない場合、処理はステップS52に戻り、以降の処理が繰り返される。いまの場合、L=2であってレジスタCHの値は2であるから、処理はステップS52に戻り、チャンネルCH2が処理対象となって、ステップS52乃至ステップS57の処理が実行される。
【0180】
そして、再びステップS58において、レジスタCHの値が2から3にインクリメントされた場合、ステップS59において、レジスタCHの値がLよりも大きいと判定されて、処理はステップS60に進む。ステップS60において、コントローラ34は、レジスタCHを1に初期化する。処理は、52に戻り、以降の処理が繰り返される。
【0181】
以上説明したようにして、Lチャンネル分(いまの場合、2チャンネル分)の符号化ストリームが平行してデコードされる。
【0182】
なお、ステップS54乃至ステップS56において、コントローラ34がピクチャデコーダ45からピクチャ層パラメータを取得して保持し、保持したピクチャ層パラメータをスライスデコーダ制御回路46に供給する処理に関し、当該処理をコントローラ34の代わりに実行する回路をMPEGビデオデコーダ130に設けるようにしてもよい。
【0183】
MPEGビデオデコーダ130が1ピクチャ分のデコードに要する時間は、図15に示した従来のMPEGビデオデコーダが実時間で1ピクチャ分のデコードに要する時間(すなわち、1倍速による処理時間)の1/6で済むことになるので、最大で6チャンネル分の符号化データを平行してデコードすることができる。
【0184】
図27は、MPEGビデオデコーダ130を適用したMPEGビデオサーバ編集システムの構成例を示している。このMPEGビデオサーバ編集システムのハードディスクドライブ111には、多チャンネル分の複数のMPEG2ビデオビットストリームが記録されている。ただし、ハードディスクドライブ111の代わりに、光ディスクドライブ、光磁気ディスクドライブ、磁気テープドライブ、半導体メモリドライブなどの他の記録再生デバイスを用いてもよい。
【0185】
再生装置112は、コントローラ34からの制御に基づき、ハードディスクドライブ111に記録されている複数のMPEG2ビデオビットストリームのうち、例えば、2チャンネル分のMPEG2ビデオビットストリーム(図27におけるチャンネルCH1の符号化ストリーム、およびチャンネルCH2の符号化ストリーム)を読み出してMPEGビデオデコーダ130に供給する。MPEGビデオデコーダ130は、入力されたチャンネルCH1およびCH2の符号化ストリームを、上述したように平行してデコードし、得られたチャンネルCH1およびCH2のビデオ出力を後段に供給する。なお、デコードして得られたチャンネルCH1およびCH2のビデオ出力を適宜切り替えて後段に供給するようにしてもよい。
【0186】
次に、図28は、本発明を適用したMPEGビデオデコーダの第3の構成例を示している。このMPEGビデオデコーダ150は、多重ストリームを入力として、多重ストリームに含まれる多チャンネル分の符号化ストリーム(いまの場合、チャンネルCH1およびCH2の符号化ストリーム((MPEG2ビデオビットストリーム)))を平行してデコードし、得られるチャンネルCH1ビデオ出力、およびチャンネルCH2ビデオ出力を後段に供給するものである。
【0187】
MPEGビデオデコーダ150は、図23に示したMPEGビデオデコーダ130のストリーム入力回路41−1,41−2を、チャンネル分離回路151で置換したものである。チャンネル分離回路151は、入力される多重ストリーム(すなわち、MPEGビデオストリームが多重化されているトランストートストリーム)をチャンネルCH1の符号化ストリームとチャンネルCH2の符号化ストリームに分離して、チャンネルCH1の符号化ストリームをスタートコード検出回路42−1に供給し、チャンネルCH2の符号化ストリームをスタートコード検出回路42−2に供給する。
【0188】
なお、MPEGビデオデコーダ150を構成する他の回路については、同一の番号が付与されたMPEGビデオデコーダ130を構成する回路と同様であるので、それらの説明については省略する。また、MPEGビデオデコーダ150のスタートコード検出回路42−1,42−2以降の動作についても、MPEGビデオデコーダ130の動作と同様であるので、その説明は省略する。
【0189】
MPEGビデオデコーダ150の適用例について、図29を参照して説明する。MPEGビデオデコーダ150は、図25のMPEGビデオデコーダ130と同様に、図15に示した従来のMPEGビデオデコーダの6倍のデコード処理能力を有する。したがって、MPEGビデオデコーダ150は、入力される多重ストリームに多重化されている多チャンネル分の符号化ストリームのうち、最大で6チャンネル分の符号化ストリームを平行してデコードすることができる。
【0190】
よって、例えば図29に示すように、多重ストリームに含まれるチャンネルCH1およびCH2の符号化ストリームを選択して分離し、平行してデコードし、得られたチャンネルCH1およびチャンネルCH2ビデオ出力をビデオスイッチャ161に供給するようにすれば、チャンネルCH1ビデオ出力の映像が徐々にチャンネルCH2ビデオ出力に切り替えられるような、いわゆるワイプと呼ばれる映像合成に適用することが可能となる。
【0191】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0192】
この記録媒体は、図18に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク101(フレキシブルディスクを含む)、光ディスク102(CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)を含む)、光磁気ディスク103(MD(Mini Disk)を含む)、もしくは半導体メモリ104などよりなるパッケージメディアなどにより構成される。
【0193】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0194】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0195】
【発明の効果】
以上のように、本発明の第1の復号装置および方法、並びに記録媒体のプログラムによれば、現可能な回路規模であって、MP@MLのMPEG2ビデオビットストリームを任意の再生速度で再生できるビデオデコーダを実現することが可能となる。
【0197】
また、本発明の第の復号装置および方法、並びに記録媒体のプログラムによれば、チャンネル分の複数の符号化ストリームを平行してデコードすることができるビデオデコーダを実現することが可能となる。
【図面の簡単な説明】
【図1】 MPEG方式におけるピクチャタイプを説明するための図である。
【図2】 MPEG2で規定されたプロファイルおよびレベルにおける、各パラメータの上限値を示す図である。
【図3】 MPEG2ビットストリームの階層構造を説明するための図である。
【図4】マクロブロック層を説明するための図である。
【図5】 sequence_headerのデータ構造を説明するための図である。
【図6】 sequence_extensionのデータ構造を説明するための図である。
【図7】 GOP_headerのデータ構造を説明するための図である。
【図8】 picture_headerのデータ構造を説明するための図である。
【図9】 picture_coding_extensionのデータ構造を説明するための図である。
【図10】 picture_dataのデータ構造を説明するための図である。
【図11】 sliceのデータ構造を説明するための図である。
【図12】 macroblockのデータ構造を説明するための図である。
【図13】 macroblock_modesのデータ構造を説明するための図である。
【図14】スタートコードを説明するための図である。
【図15】 MP@MLの符号化ストリームをデコードする従来のMPEGビデオデコーダの構成例を示すブロック図である。
【図16】符号化ストリームからPピクチャを間引いた場合の問題点について説明するための図である。
【図17】符号化ストリームからBピクチャだけを間引いた場合の問題点について説明するための図である。
【図18】本発明を適応したMPEGビデオデコーダ40の構成例を示すブロック図である。
【図19】スライスデコーダ制御回路46の処理を説明するフローチャートである。
【図20】スライスデコーダ制御回路46の処理の具体例を説明するための図である。
【図21】動き補償回路50によるスライスデコーダの調停処理を説明するフローチャートである。
【図22】動き補償回路50によるスライスデコーダの調停処理の具体例を説明するための図である。
【図23】 MPEGビデオデコーダ40を用いてMP@MLの符号化ストリームを高速再生するシステムの構成例を示すブロック図である。
【図24】 MPEGビデオデコーダ40がMP@MLの符号化ストリームを高速再生する処理を説明するための図である。
【図25】本発明を適応したMPEGビデオデコーダ130の構成例を示すブロック図である。
【図26】 MPEGビデオデコーダ130のコントローラ34によるLチャンネル分のパラレルデコード制御処理を説明するフローチャートである。
【図27】 MPEGビデオデコーダ130を用いたMPEGビデオサーバ編集システムの構成例を示すブロック図である。
【図28】本発明を適応したMPEGビデオデコーダ150の構成例を示すブロック図である。
【図29】 MPEGビデオデコーダ150の適用例を説明するための図である。
【符号の説明】
31 IC, 32 バッファ, 34 コントローラ, 42 スタートコード検出回路, 43 ストリームバッファ制御回路, 45 ピクチャデコーダ, 46 スライスデコーダ制御回路, 47乃至49 スライスデコーダ,50 動き補償回路, 51 輝度バッファ制御回路, 52 色差バッファ制御回路, 61 ストリームバッファ, 62 スタートコードバッファ, 71 輝度バッファ, 72 色差バッファ, 101 磁気ディスク, 102 光ディスク, 103 光磁気ディスク, 104 半導体メモリ, 111 ハードディスク, 112 再生装置, 130 MPEGビデオデコーダ, 150 MPEGビデオデコーダ, 151 チャンネル分離回路

Claims (11)

  1. 符号化ストリームを入力する入力手段と、
    バッファリングされている前記符号化ストリームをスライス単位で読み出して復号する複数の復号手段と、
    前記複数の復号手段を並行して動作させるように制御する復号制御手段と、
    前記複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、前記複数の復号手段からの要求に対応したものを選択する選択手段と、
    選択された前記画像データに対して必要に応じて動き補償処理を施す動き補償手段と、
    必要に応じて動き補償処理が施された前記画像データを任意の再生速度で出力させる出力制御手段と
    を含み、
    前記復号制御手段は、前記復号手段がスライス単位で復号対象とする前記符号化ストリームがバッファリングされている位置を示す書き込みポインタを前記複数の復号手段のうちのいずれかに供給し、
    前記復号手段は、供給された前記書込みポインタに従い、バッファリングされている前記符号化ストリームをスライス単位で読み出して復号する
    復号装置。
  2. 前記符号化ストリームは、ビットレートが所定数倍に高速化されたMPEG2ビデオビットストリームである
    請求項1に記載の復号装置。
  3. 前記出力制御手段は、ビットレートが前記所定数倍に高速化された前記MPEG2ビデオビットストリームの復号結果である画像データを、0倍乃至前記所定数倍の再生速度で出力させる
    請求項2に記載の復号装置。
  4. 前記復号手段は、復号処理が終了したことを示す終了信号を前記復号制御手段に出力し、
    前記復号制御手段は、前記終了信号を出力した前記復号手段に対して、新たな前記符号化ストリームを復号させるように制御する
    請求項1に記載の復号装置。
  5. 前記符号化ストリームをバッファリングする第1のバッファ手段と、
    前記符号化ストリームから、前記符号化ストリームに含まれる所定の情報の単位の始まりを表わすスタートコードを読み出すとともに、前記第1のバッファ手段から、前記スタートコードが保持されている位置に関する位置情報を読み出す読み出し手段と、
    読み出された前記スタートコードおよび前記位置情報をバッファリングする第2のバッファ手段と、
    前記第1のバッファ手段による前記符号化ストリームのバッファリング、および前記第2のバッファ手段による前記スタートコードおよび前記位置情報のバッファリングを制御するバッファリング制御手段と
    をさらに含む請求項1に記載の復号装置。
  6. 前記復号手段は、復号処理が終了したことを示す終了信号を前記選択手段に出力し、
    前記選択手段は、
    複数の前記復号手段それぞれの処理状態に対応する複数の処理状態値を記憶する記憶手段を含み、
    記憶している全ての処理状態値が第1の値になった場合、前記終了信号を出力している前記復号手段に対応する前記処理状態値を、前記第1の値から第2の値に変更し、
    対応する前記処理状態値が前記第2の値である復号手段により復号された前記画像データのうち、いずれかの前記画像データを選択し、
    選択された前記画像データを復号した前記復号手段に対応する前記処理状態値を前記第1の値に変更する
    請求項1に記載の復号装置。
  7. 前記選択手段により選択された前記画像データ、または前記動き補償手段により動き補償が施された前記画像データを保持する保持手段と、
    前記選択手段により選択された前記画像データ、または前記動き補償手段により動き補償が施された前記画像データの前記保持手段による保持を制御する保持制御手段と
    をさらに含む請求項1に記載の復号装置。
  8. 前記保持手段は、前記画像データの輝度成分と色差成分をそれぞれ分けて保持する
    請求項7に記載の復号装置。
  9. 前記復号手段は、スライスデコーダであり、前記符号化ストリームのピクチャ層のデコード結果であるパラメータに従い、前記第1のバッファ手段からスライス単位で読み出した前記符号化ストリームを復号する
    請求項1に記載の復号装置。
  10. 復号装置による、
    符号化ストリームを入力する入力ステップと、
    複数の復号手段を並行して動作させるように制御する復号制御ステップと、
    前記複数の復号手段により、バッファリングされている前記符号化ストリームをスライス単位で読み出して復号する復号ステップと、
    前記複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、前記複数の復号手段からの要求に対応したものを選択する選択ステップと、
    選択された前記画像データに対して必要に応じて動き補償処理を施す動き補償手段と、
    必要に応じて動き補償処理が施された前記画像データを任意の再生速度で出力させる出力制御ステップと
    を含み、
    前記復号制御ステップは、前記復号手段がスライス単位で復号対象とする前記符号化ストリームがバッファリングされている位置を示す書き込みポインタを前記複数の復号手段のうちのいずれかに供給し、
    前記復号ステップは、供給された前記書込みポインタに従い、バッファリングされている前記符号化ストリームをスライス単位で読み出して復号する
    復号方法。
  11. 符号化ストリームを入力する入力ステップと、
    複数の復号手段を並行して動作させるように制御する復号制御ステップと、
    前記複数の復号手段により、バッファリングされている前記符号化ストリームをスライス単位で読み出して復号する復号ステップと、
    前記複数の復号手段のそれぞれから復号結果として出力された複数の画像データのうち、前記複数の復号手段からの要求に対応したものを選択する選択ステップと、
    選択された前記画像データに対して必要に応じて動き補償処理を施す動き補償手段と、
    必要に応じて動き補償処理が施された前記画像データを任意の再生速度で出力させる出力制御ステップと
    を含み、
    前記復号制御ステップは、前記復号手段がスライス単位で復号対象とする前記符号化ストリームがバッファリングされている位置を示す書き込みポインタを前記複数の復号手段のうちのいずれかに供給し、
    前記復号ステップは、供給された前記書込みポインタに従い、バッファリングされている前記符号化ストリームをスライス単位で読み出して復号する
    処理をコンピュータに実行させるプログラムが記録されている記録媒体。
JP2001147594A 2000-05-29 2001-05-17 復号装置および方法、並びに記録媒体 Expired - Fee Related JP4906197B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001147594A JP4906197B2 (ja) 2000-05-29 2001-05-17 復号装置および方法、並びに記録媒体

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2000158546 2000-05-29
JP2000-158546 2000-05-29
JP2000158546 2000-05-29
JP2001147594A JP4906197B2 (ja) 2000-05-29 2001-05-17 復号装置および方法、並びに記録媒体

Publications (2)

Publication Number Publication Date
JP2002057986A JP2002057986A (ja) 2002-02-22
JP4906197B2 true JP4906197B2 (ja) 2012-03-28

Family

ID=26592819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001147594A Expired - Fee Related JP4906197B2 (ja) 2000-05-29 2001-05-17 復号装置および方法、並びに記録媒体

Country Status (1)

Country Link
JP (1) JP4906197B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1981531B (zh) * 2004-05-04 2012-07-04 高通股份有限公司 构建用于时间可分级的双向预测帧的方法和装置
JP3919115B2 (ja) 2004-08-18 2007-05-23 ソニー株式会社 復号化装置、復号化方法、復号化プログラム及び復号化プログラムが記録された記録媒体、並びにリバース再生装置、リバース再生方法、リバース再生プログラム及びリバース再生プログラムが記録された記録媒体
JP4374548B2 (ja) 2005-04-15 2009-12-02 ソニー株式会社 復号装置および方法、記録媒体、並びに、プログラム
JP2009048469A (ja) * 2007-08-21 2009-03-05 Fujitsu Ltd 情報処理装置及び情報処理方法
JP4314315B1 (ja) 2008-03-31 2009-08-12 株式会社東芝 情報処理装置および復号制御方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3871348B2 (ja) * 1993-03-05 2007-01-24 ソニー株式会社 画像信号復号化装置及び画像信号復号化方法
JP3510433B2 (ja) * 1996-11-26 2004-03-29 シャープ株式会社 画像処理装置
JP3961654B2 (ja) * 1997-12-22 2007-08-22 株式会社東芝 画像データ復号化装置及び画像データ復号化方法
JPH11341489A (ja) * 1998-05-25 1999-12-10 Sony Corp 画像復号化装置とその方法
JP3457540B2 (ja) * 1998-07-28 2003-10-20 株式会社東芝 画像復号化装置及び方法
JP2000092493A (ja) * 1998-09-11 2000-03-31 Matsushita Electric Ind Co Ltd 映像復号装置及び映像復号方法

Also Published As

Publication number Publication date
JP2002057986A (ja) 2002-02-22

Similar Documents

Publication Publication Date Title
JP5041626B2 (ja) 復号装置、復号方法、およびプログラム
EP1161097B1 (en) MPEG decoder
US6917652B2 (en) Device and method for decoding video signal
KR100770704B1 (ko) 픽쳐 스킵 방법 및 장치
JP4838253B2 (ja) 画像符号化装置、画像符号化方法、画像復号化装置、画像復号化方法、および記録方法
KR101187550B1 (ko) 입체적 3d-비디오 이미지 디지털 코딩 시스템 및 방법
JP2000278692A (ja) 圧縮データ処理方法及び処理装置並びに記録再生システム
US5739862A (en) Reverse playback of MPEG video
JP2001285876A (ja) 画像符号化装置とその方法、ビデオカメラ、画像記録装置、画像伝送装置
KR100260475B1 (ko) 화상 데이타 부호화 방법 및 장치, 화상 데이타 복호화 방법 및 장치 및 화상 기록 매체
JPH11196411A (ja) 画像符号化装置、画像符号化方法、画像復号化装置、及び画像復号化方法
US20030016745A1 (en) Multi-channel image encoding apparatus and encoding method thereof
JP2001028748A (ja) データ再生伝送装置及びデータ再生伝送方法
JP3147792B2 (ja) 高速再生のためのビデオデータの復号化方法及びその装置
JP3852366B2 (ja) 符号化装置および方法、復号装置および方法、並びにプログラム
JP4906197B2 (ja) 復号装置および方法、並びに記録媒体
JP2005124091A (ja) 復号装置及び復号方法
JP3748234B2 (ja) Mpegデータ記録方法
US6128340A (en) Decoder system with 2.53 frame display buffer
JPH06268992A (ja) 画像符号化方法、画像復号化方法、画像符号化装置、画像復号化装置及び記録媒体
JP2001238167A (ja) 画像再生方法とこの方法を利用可能な画像再生装置およびテレビジョン受像機
JP3748240B2 (ja) Mpegデータ記録方法
TWI272849B (en) Decoder and decoding method, recording medium, and program
JP2001339726A (ja) 画像処理方法とこの方法を利用可能な画像処理装置およびテレビジョン受像機
JP2000333203A (ja) 圧縮符号化方法、圧縮復号化方法、圧縮符号化装置及び圧縮復号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100510

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100823

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100916

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20101015

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120110

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees