以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面のプログラムまたは復号方法は、符号化ストリームの再生状態を示す再生情報(例えば、再生されるフレームの指定や、再生速度または再生モード)の入力を受ける再生情報入力ステップ(例えば、図11のステップS41の処理)と、再生情報入力ステップの処理により入力された再生情報を基に、符号化ストリームの対象ピクチャを復号処理するのに必要な参照ピクチャを示す参照ピクチャ情報を取得する参照ピクチャ情報取得ステップ(例えば、図11のステップS46の処理)と、参照ピクチャ情報取得ステップの処理により取得された参照ピクチャ情報に基づいて、参照ピクチャが所定の記憶領域(例えば、図10のRAM223のベースバンド画像データ用メモリ223)に記憶されているかを判定する判定ステップ(例えば、図11のステップS47の処理)と、判定ステップの処理により、参照ピクチャが記憶領域に記憶されていないと判定された場合、符号化ストリームから記憶領域に記憶されていない参照ピクチャを取得して復号処理し、記憶領域への記憶を制御する参照ピクチャ復号ステップ(例えば、図11のステップS48の処理)と、記憶領域に記憶されている参照ピクチャを利用して、符号化ストリームの対象ピクチャを復号処理することにより画像データを生成して、記憶領域への記録を制御する復号ステップ(例えば、図11のステップS49の処理)とを含む処理をコンピュータに実行させる。
参照ピクチャ復号ステップおよび復号ステップの処理では、複数の復号方法で復号処理を実行することができ、再生情報入力ステップの処理により入力された再生情報を基に、符号化ストリームの復号順および復号方法を決定する第1の決定ステップ(例えば、図11のステップS44の処理)を更に含ませることができ、参照ピクチャ復号ステップおよび復号ステップの処理では、第1の決定ステップの処理により決定された復号順および復号方法に基づいて復号処理を実行することができる。
参照ピクチャ復号ステップおよび復号ステップの処理では、第1の決定ステップの処理による決定に基づいて、複数の符号化方式に対応する復号処理(例えば、所定のピクチャタイプ専用の復号処理やMPEG以外の復号処理)のうちのいずれかが実行可能であるものとすることができる。
符号化ストリームには、フレーム内符号化されたピクチャ(例えば、Iピクチャ)、および、フレーム間予測符号化されたピクチャ(例えば、PピクチャまたはBピクチャ)が含まれているものとすることができ、復号ステップの処理では、符号化ストリームの対象ピクチャがフレーム間予測符号化されたピクチャである場合、対象ピクチャに対して時間的に近傍に存在するフレーム内符号化されたピクチャを復号することができる。
参照ピクチャ情報に含まれる過去側の参照フレーム数(例えば、深さ情報に対応する値)、および、1フレームに対応する画像の表示内に復号処理を実行することが可能なフレーム数(例えば、デコード可能フレーム数)を基に、符号化ストリームの復号方法を決定する第2の決定ステップ(例えば、図13のステップS127の処理、すなわち、図14に示される処理)を更に含ませることができる。
1フレームに対応する画像の表示時間内に復号処理を実行することが可能なフレーム数(例えば、デコード可能フレーム数)を算出する算出ステップ(例えば、図14のステップS164の処理)を更に含ませることができる。
参照ピクチャ情報に含まれる過去側の参照フレーム数(例えば、深さ情報に対応する値)を算出する算出ステップ(例えば、図12を用いて説明した処理)を更に含ませることができる。
本発明の一側面の復号装置(例えば、図4の再生装置または図9のパーソナルコンピュータ201)は、符号化ストリームの再生状態を示す再生情報(例えば、再生されるフレームの指定や、再生速度または再生モード)の入力を受ける再生情報入力手段(例えば、図4の操作入力取得部21)と、符号化ストリームの対象ピクチャを復号処理するために必要な参照ピクチャを示す参照ピクチャ情報を管理する参照ピクチャ情報管理手段(例えば、図4のインデックス管理部24)と、符号化ストリームを復号処理して画像データを生成する復号手段(例えば、図4のデコード処理部76)と、復号手段により生成された画像データを記憶する記憶手段(例えば、図4のベースバンド画像データ用メモリ31)と、記憶手段により記憶された画像データの記憶状態を管理する記憶管理手段(例えば、図4のベースバンドメモリ管理部73)と、参照ピクチャ情報管理手段により管理された参照ピクチャ情報、および、記憶管理手段により管理される記憶状態を参照することによって、復号手段による復号処理を制御する復号制御手段(例えば、図4のデコード制御部72)とを備え、復号手段は、記憶手段により記憶されている画像データのうちのいずれかを参照ピクチャとして符号化ストリームを復号処理し、復号された対象ピクチャを記憶手段に供給して記憶させる。
以下、図を参照して、本発明の実施の形態について説明する。
図4は、本発明を適用した再生装置61の構成例を示すブロック図である。
なお、従来の場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
すなわち、図4の再生装置61は、ストリーム供給制御部23に代わって、ストリーム供給制御部74が設けられ、デコーダ28に代わって、デコード処理部76が設けられ、ベースバンド画像データ用メモリ制御部30に代わって、ベースバンド画像データ用メモリ制御部77が設けられ、参照ベースバンド画像用メモリ29が省略され、新たに、GUI表示制御部71、デコード制御部72、ベースバンドメモリ管理部73、および、参照画像指示部75が設けられている以外は、図1を用いて説明した再生装置1と基本的に同様の構成を有している。
GUI表示制御部71は、ユーザに操作入力を促すためのGUI(Graphical User Interface)を提供したり、処理結果を表示出力するための画面の表示を制御するものであり、例えば、図5に示されるような編集画面の表示を制御する。
図5に示される編集画面101は、例えば、複数のストリームデータをランダムに再生させて所望の編集点を検出し、所望の編集点において、異なるストリームデータを接続させるなどの編集処理を実行するための、各種GUIを提供するものである。
例えば、ユーザにより選択されたストリームデータは、デコード処理部76においてデコード(復号)され、ベースバンド画像データ用メモリ制御部77を介して、ベースバンド画像データ用メモリ31に記憶され、ベースバンド信号処理部32において所定の処理がなされた後、GUI表示制御部71の処理により、再生ウィンドウ111において表示される。すなわち、ベースバンド信号処理部32において処理された再生用の出力ベースバンド画像データがGUI表示制御部71に供給され、GUI表示制御部71より表示が制御されている編集画面101の再生ウィンドウ111に表示される。
ストリームデータの再生位置は、ユーザの操作入力に基づいて、再生ウィンドウ111の下部に設けられているスクラブバー121のポインタ122の位置が移動されることにより設定される。また、タイムラインウィンドウ112にも、例えば、ビデオストリームやオーディオストリーム中の時間軸における再生位置をユーザに通知したり、ユーザが再生位置を指令することができるようになされているタイムライン131が設けられており、ユーザの操作入力に基づいて、タイムライン131のポインタ132の位置が移動されることにより、再生位置を設定することができるようになされている。
操作入力取得部21は、図5を用いて説明した編集画面101を参照したユーザによる操作入力を取得する。操作入力取得部21は、ユーザから、デコード対象ストリームの選択と、再生開始位置の指定、すなわち、スクラブバー121のポインタ122、または、タイムライン131のポインタ132の操作を受けるとともに、再生モードや再生速度などの指令を受け、ストリーム復号位置検出処理部22に供給する。ストリーム復号位置検出処理部22は、操作入力取得部21から供給されたデコード対象ストリームの選択と、再生開始位置の指定を基に、再生されるストリームのStreamNo.と、再生開始位置のFrameNo.を求め、再生速度などの指令とともに、デコード制御部72に供給する。
再生モードには、例えば、所定再生位置からの通常再生、早送り、早巻き戻し、正逆方向のコマ送り、静止画像の表示などがあり、早送りや早巻き戻しなどのスピードや、コマ送りのコマ間隔なども、それぞれ設定可能なようになされている。
デコード制御部72は、ストリーム復号位置検出処理部22から供給された、再生されるストリームのStreamNo.と再生開始位置のFrameNo.、および、再生速度や再生モードなどの指令内容を基に、インデックス管理部24に記憶されている対応するストリームのデコードに必要な各種情報が記載されているインデックステーブル(図6)を取得し、更に、ベースバンドメモリ管理部73により管理されている、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データの情報を取得する。そして、デコード制御部72は、これらの情報を基に、デコードに用いるデコーダとデコード順を決定する。
インデックス管理部24に記憶されているインデックステーブルの一例を、図6に示す。
図6に示されるインデックステーブルには、ディスプレイオーダ(Display Order)におけるピクチャの並び順と、ストリームオーダ(Stream Order)におけるピクチャの並び順、そして、ディスプレイオーダからストリームオーダへピクチャの並びを変換させるためのピクチャのずれ量(Temporal Offset)が記載されている。また、インデックステーブルには、ストリームオーダにおけるシーケンスヘッダ(Sequence Header)の位置を示す情報が、図中では、シーケンスヘッダありを1、なしを0として記載され、前方向または後ろ方向への参照画像の有無を示す情報(Forward/Backward Prediction(Picture Type))が記載されている。
なお、前方向または後ろ方向への参照画像の有無を示す情報は、この例においては、供給されるビットストリームがOpenGOP形式であるものとして、前方向予測符号化フレーム(すなわちPピクチャ)を「10」、両方向予測符号化フレーム(すなわちBピクチャ)を「11」、そして、フレーム内符号化フレーム(すなわちIピクチャ)を「00」として記載されるものとする。なお、供給されるビットストリームがClosedGOP形式である場合、フレーム内符号化データ(すなわちIピクチャ)に続く2枚のBピクチャは、後ろ方向のみを参照するので、「01」が記載されるものとする。
そして、インデックステーブルには、それぞれのピクチャのピクチャサイズ(Picture Size)と、ピクチャのストリーム内または記録領域内でのアドレス(Address)が記載されている。また、インデックステーブルには、そのピクチャとキーフレームとなるピクチャ(ここでは、フレーム内符号化処理が行われているIピクチャ)との距離を示す情報(Key Frame Offset(decimal))や、デコーダの仮想入力バッファの蓄積量を90KHzクロックの時間で示すVbvDelay(VBV:Video buffer verifier)が記載されている。さらに、インデックステーブルには、そのピクチャをデコードするために必要となる前方向画像のうち、最も再生フレームから遠いフレームとの間のフレーム数(深さ)を示す深さ情報(Depth of Past Frames for Decoding)が記載されている。
すなわち、デコード制御部72は、インデックステーブルを基に、指定された再生開始位置のフレームをデコードするために必要なIフレーム(キーフレーム)の位置と、ストリーム用メモリ26に記憶されているストリームのアドレスやピクチャサイズなどを検索する。また、デコード制御部72は、ユーザにより指令された再生速度などの情報を基に、デコードに必要な品質を決定する。
具体的には、デコード制御部72は、例えば、再生装置61内の各部の処理速度や、扱うストリームのデータレートなどに応じて、最終的に出力される表示フレームの表示品質や表示コマ数などを保持するために、デコード順を、以下の(1)乃至(3)に示すいずれかの方法で制御する。
(1)レイテンシ(Latency:待ち時間)が最短となるように、再生されるように指示されたフレームを順にデコードする。(2)再生されるように指示されたフレームのピクチャタイプがBピクチャの場合には、近傍のIピクチャまたはPピクチャをデコードして出力する。(3)再生されるように指示されたフレームの近傍のIピクチャだけをデコード出力する。
具体的には、デコード制御部72は、例えば、(1)の方法によってデコード順を制御することができる場合は、(1)に示される方法を取るものとし、ある程度高速の早送りまたは巻き戻しなどが指令されており、(1)に示される方法では、最終的に出力される表示フレームの表示コマ数を確保することができないような場合、(2)に示される方法で、デコード順を制御するものとし、(2)に示される方法でも、最終的に出力される表示フレームの表示コマ数を確保することができないような場合、(3)に示される方法で、デコード順を制御するものとすればよい。
また、デコード制御部72は、指令されている再生モードや、再生装置61内の各部の処理速度、および、扱うストリームのデータレートなどに応じて、最終的に出力される表示フレームの表示品質や表示コマ数などを保持するために、デコード処理部76に含まれる複数のデコードのうちの最も適したデコーダを、デコード処理を実行するデコーダとして選択することができる。
具体的には、デコード制御部72は、例えば、上述した(1)の方法によってデコード順を制御する場合、表示速度が一定以上に遅かったり、静止画像を表示させるようなとき、すなわち、表示される画像の解像度がユーザによって充分認識可能なような再生モードであるときには、高解像度のデコーダを選択するようにしたり、(1)の方法によってデコード順を制御する場合であっても、表示速度が一定以上に速い場合など、表示される画像の解像度がユーザによって確認しにくいような再生モードであるときには、低解像度のデコーダを選択するようにすることができる。
また、デコード制御部72は、同一の速度で再生が指令されているとしても、例えば、(1)の方法によってデコード順を制御する場合、最終的に出力される表示フレームの表示コマ数を確保することができるように、低解像度のデコーダを選択するようにし、一方、(2)の方法によってデコード順を制御する場合、最終的に出力される表示フレームの表示コマ数は充分確保することができるので、高解像度のデコーダを選択するようにすることができる。
更に、デコード制御部72は、例えば、(3)の方法によってデコード順を制御する場合など、特定のピクチャタイプ専用のデコーダ(ここでは、Iピクチャ専用のデコーダ)を選択するようにしても良い。
また、デコード制御部72は、MPEG以外の圧縮方法で圧縮された圧縮ストリームをデコードすることが可能なデコーダを備えるようにすることができ、例えば、MPEG以外の圧縮方法で圧縮された圧縮ストリームが供給された場合、その圧縮ストリームをデコードすることが可能なデコーダを選択し、デコード処理を実行させるようにすることができる。
また、デコード制御部72は、デコード順やデコーダの選択を、ストリームまたはフレームごとに切り替えるようにしても良い。
また、デコード制御部72は、インデックスデータを基に、指定されたフレームをデコードするために必要な参照フレームを決定し、ベースバンドメモリ管理部73から取得された、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データの情報を基に、必要な参照フレームはデコード済みであるか否かを判断する。そして、デコード制御部72は、その判断結果を基に、デコードが必要なフレームのデコード順とデコードを実施するデコーダを決定する。そして、デコード制御部72は、ストリーム供給制御部74に、デコードされるストリームのStreamNo.とデコードされるフレームのFrameNo.を供給し、参照画像指示部75に、デコードされるストリームのStreamNo.と参照画像としてベースバンド画像データ用メモリ31から読み出す必要のあるフレーム(1枚の再生フレームに対して、0乃至2枚のフレーム)のFrameNo.を供給し、デコード処理部76に、処理に用いられるデコーダの選択結果と、デコード処理を制御するための制御信号とを供給する。
ベースバンドメモリ管理部73は、ベースバンド画像データ用メモリ制御部77を介して、ベースバンド画像データ用メモリ31に保持されているベースバンド画像データを監視し、ベースバンド画像データ用メモリ31に保持されているベースバンド画像データのフレーム情報を、デコード制御部72に供給する。
ストリーム供給制御部74は、デコード制御部72から供給された、再生されるストリームのStreamNo.と、デコードされるフレームのFrameNo.を基に、ストリームメモリ制御部25に、デコードに必要なストリームデータを要求し、ストリームメモリ制御部25から供給されたストリームデータを、デコード処理部76に供給する。
ストリームメモリ制御部25は、ストリーム用メモリ26によるストリームデータの記憶を制御するものであり、ストリーム供給制御部74から要求されたストリームデータを、ストリーム用メモリ26から読み出して、ストリーム供給制御部74に出力する。
ストリーム用メモリ26は、それぞれ、ストリームデータを記憶するものであり、ストリームメモリ制御部25の制御に基づいて、所定のストリームデータを出力する。
参照画像指示部75は、デコード制御部72から供給された、復号されるストリームのStreamNo.と参照画像としてベースバンド画像データ用メモリ31から読み出す必要のあるフレームのFrameNo.を基に、ベースバンド画像データ用メモリ制御部77に、参照画像としてベースバンド画像データ用メモリ31から読み出す必要のあるフレームのデコード処理部76への供給を要求し、参照画像として用いられるベースバンド画像データを、デコード処理部76に供給させる。
デコード処理部76は、複数のデコーダ(デコーダ0乃至デコーダn)から構成されており、デコード制御部72の制御に基づいて、ストリーム供給制御部74から供給されたストリームデータを適するデコーダによりデコードし、デコード済みのベースバンド画像データを、ベースバンド画像データ用メモリ制御部77に供給する。
具体的には、デコード処理部76は、例えば、高解像度デコーダ、低解像度デコーダ、特定のピクチャ専用のデコーダ、または、MPEG以外の圧縮方法により圧縮されたストリームデータをデコード可能なデコーダなどを含んで構成され、デコード制御部72の制御に基づいて選択されたデコーダによって、必要に応じてベースバンド画像データ用メモリ制御部77から供給されるベースバンド画像データを参照画像として参照することにより、ストリーム供給制御部74から供給された圧縮されたストリームデータをデコードする。
ベースバンド画像データ用メモリ制御部77は、デコード処理部76から供給された、デコード済みのベースバンド画像データを、ベースバンド画像データ用メモリ31に供給するとともに、参照画像指示部75から、参照画像としてベースバンド画像データ用メモリ31から読み出す必要のあるフレームの供給の要求を受け、指定された参照画像をベースバンド画像データ用メモリ31から読み出して、デコード処理部76に供給する。
また、ベースバンド画像データ用メモリ制御部77は、ベースバンド信号処理部32から要求されたStreamNo.とFrameNo.により示されるフレームのベースバンド画像データをベースバンド画像データ用メモリ31から読み出して、ベースバンド信号処理部32に供給する。ベースバンド画像データ用メモリ制御部77は、例えば、ジョグ再生などの変速再生が指令された場合においても、ユーザの操作入力に基づいた所定のフレームをベースバンド画像データ用メモリ31から読み出して、ベースバンド信号処理部32に供給して再生出力させるようにすることができる。
ベースバンド信号処理部32は、供給されたベースバンド画像データに対して、例えば、色補正やサイズ補正、スロー再生時におけるフィールドコントロールなど、デコードされた画像が正しく再生出力されるように各種補正を行って、生成された出力ベースバンド画像データを、GUI表示制御部71に出力する。
以上説明した様に、本発明を適用した再生装置61においては、デコード処理部76のうちのいずれかのデコーダによりデコードされたベースバンド画像データは、全て、ベースバンド画像データ用メモリ31に記憶され、参照画像も、ベースバンド画像データ用メモリ31から読み出されるものとされる。図1を用いて説明した再生装置1の参照ベースバンド画像用メモリ29は、デコーダ28のメモリ制御部41にのみ制御され、デコーダ28のみデータを授受しており、図1を用いて説明した再生装置1のベースバンド画像データ用メモリ31は、ベースバンド画像データ用メモリ制御部30の制御に基づいて、デコーダ28から供給されたベースバンド画像データをベースバンド信号処理部32に供給するものであった。これに対して、本発明を適用した再生装置61のベースバンド画像データ用メモリ31は、ベースバンド画像データ用メモリ制御部77の制御に基づいて、デコード処理部76と参照画像データの授受を行うとともに、従来における場合と同様に、ベースバンド信号処理部32にベースバンド画像データを供給する。
本発明を適用した再生装置61においては、ベースバンド画像データ用メモリ31に参照画像データとして利用可能なベースバンド画像データが記憶されているとき、参照画像として、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データが用いられるので、デコード処理部76には、参照画像を生成するためのフレームが新たに供給されない。すなわち、デコード処理部76に供給されるフレームは、通常のフレームどおりの順番でなくても良い場合がある。
または、本発明を適用した再生装置61においては、ベースバンド画像データ用メモリ31に参照画像データとして利用可能なベースバンド画像データが記憶されているとき、参照画像として、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データが用いられるので、デコード処理部76は、供給された時間順のビットストリームをその順番に従ってデコードしない(参照画像がある場合は、対応するフレームをデコードしないでスキップする)場合がある。
したがって、本発明を適用した再生装置61には、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データを監視するベースバンドメモリ管理部73が設けられ、ベースバンドメモリの状態を基にデコードの順番とデコーダの選択を行うデコード制御部72が設けられ、参照画像のデコード処理部76への供給の指示をベースバンド画像データ用メモリ制御部77に与える参照画像指示部75が設けられている。
次に、図7を用いて、B13フレームとB3フレームを順に出力する場合を例として、ユーザの指定した所望のフレームを再生するスクラブ再生について説明する。
ストリーム復号位置検出処理部22は、操作入力取得部21より、デコード対象のストリームのストリームNo.と、再生出力するフレームとして指定されたB13およびB3のフレームNo.の入力を受けるとともに、再生速度や再生モードなどの指令を受け、デコード制御部72に供給する。
デコード制御部72は、ストリーム復号位置検出処理部22から供給された、再生されるストリームのStreamNo.と再生出力するフレームとして指定されたB13およびB3のフレームNo.、並びに、再生速度や再生モードなどの指令内容を基に、インデックス管理部24に記憶されている図6を用いて説明したインデックステーブルを取得して、対応するストリームのデコードに必要な各種情報を得、更に、ベースバンドメモリ管理部73により管理されている、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データの情報を取得する。ここでは、ベースバンド画像データ用メモリ31には、再生出力するフレームとして指定されたB13およびB3をデコードするために必要となる参照画像に対応するフレームが保持されていなかったものとして説明する。
デコード制御部72は、これらの情報を基に、デコードに用いるデコーダとデコード順を決定する。すなわち、デコード制御部72は、例えば、再生モードがこれら2枚のフレームの静止画像の連続再生である場合、高解像度のデコーダをデコード処理部76から選択し、B13をデコードするために参照画像として必要なフレームであるI2,P5,P8,P11、および、P14をデコードして、参照画像P11とP14を用いてB13をデコードし、次に、B13のデコードのために、既にデコードされてベースバンド画像データ用メモリ31に保存されているI2およびP5を用いて、B3をデコードすることを決定する。
デコード制御部72は、デコード処理部76に供給する必要があるフレームのフレームNo.、すなわち、1枚目に出力するB13をデコードするために参照画像として必要なフレームであるI2,P5,P8,P11、および、P14、並びに、再生出力されるフレームであるB13およびB3のフレームのフレームNo.を、ストリームNo.とともに、ストリーム供給制御部74に供給する。
ストリーム供給制御部74は、まず、1枚目に出力するB13をデコードするために参照画像として必要なフレームであるI2,P5,P8,P11、および、P14、並びに、再生出力されるフレームであるB13、および、B3を、ストリームメモリ制御部25に要求して、デコード処理部76に順次供給する。
デコード処理部76のうち、デコード制御部72によって選択されたデコーダは、デコード制御部72の制御に基づいて、供給されたデータをI2ピクチャからデコードし、デコードして生成したベースバンド画像データをベースバンド画像データ用メモリ制御部77に供給して、ベースバンド画像データ用メモリ31に保存させるとともに、それ以降、P5,P8,P11、および、P14のデコード時に、ベースバンド画像データ用メモリ制御部77を介して、ベースバンド画像データ用メモリ31に保存されたベースバンド画像データのうち、参照画像に対応するフレームのベースバンド画像データの供給を受け、それを基に、デコードを実行する。
そして、デコード処理部76のうち、デコード制御部72によって選択されたデコーダは、デコード制御部72の制御に基づいて、B13をデコードするとき、P11およびP14に対応するベースバンド画像データの供給を受け、これらを参照画像として、B13をデコードし、デコードされたB13に対応するベースバンド画像データを、ベースバンド画像データ用メモリ制御部77を介してベースバンド画像データ用メモリ31に保存させた後、ベースバンド信号処理部32に供給する。そして、ベースバンド信号処理部32において、各種補正(ベースバンド処理)が行われて、出力ベースバンド画像データが出力される。
そして、デコード処理部76のうち、デコード制御部72によって選択されたデコーダは、次に、B3をデコードするとき、デコード制御部72の制御に基づいて、既にベースバンド画像データ用メモリ31に記憶されているI2およびP5に対応するベースバンド画像信号の供給を受け、これらを参照画像として、B3をデコードし、デコードされたB3に対応するベースバンド画像データをベースバンド画像データ用メモリ制御部77を介してベースバンド画像データ用メモリ31に保存させた後、ベースバンド信号処理部32に供給する。そして、ベースバンド信号処理部32において、各種補正が行われて(ベースバンド処理)出力ベースバンド画像データが出力される。
このように、デコード済みのベースバンド画像データの保存と、参照画像の保存とを1つのメモリで行うようにしたので、出力処理のためのメモリコピーの動作が必要なくなり、また、スクラブ再生において、参照画像を生成するために、同一フレームを重複してデコードする必要がなくなるため、高速に再生フレームをデコードすることができる。
また、参照画像の保存を行うメモリを、デコーダから独立させて、デコーダ以外の部分から制御させるようにしたので、デコード順の制御の自由度が増し、また、入力ストリームを1フレームごとに切り替えたり、デコーダを1フレームごとに切り替えることが可能となるので、さまざまなデコードアルゴリズムに対応することができる。
図7を用いて説明した処理を行うために、ベースバンドメモリ管理部73は、図8に示されるような情報を管理する。すなわち、ベースバンドメモリ管理部73は、それぞれのフレームが、ベースバンド画像データ用メモリ31にデコード済で存在しているか否かを示すフラグ(Exist:1がベースバンド画像データ用メモリ31にデコード済で存在していることを示す)のほかに、これらのデコード済みのフレームが、デコード処理部76のうちのいずれのデコーダによってデコードされたかを示す値(Decoder Type:例えば、図8に示される場合、高解像度デコーダが1、低解像度デコーダが2など)を管理する。
デコード制御部72は、高解像度のデコーダを用いてデコードを実行する場合、画像の劣化を防ぐため、参照画像として用いられるベースバンド画像データが低解像度でデコードされてベースバンド画像データ用メモリ31に保持されていても、この参照画像データを用いずに、対応する圧縮画像フレームを高解像度のデコーダでデコードして参照画像として用いるようにすることができる。
また、ベースバンドメモリ管理部73は、フレームごとに、Horizontal SizeやVertical Size、Chroma Formatなども管理しており、ベースバンド信号処理部32は、これらの情報を基に、出力フォーマットに基づいて、供給されたベースバンド画像信号をリサイズするようにしても良い。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、再生装置61は、図9に示されるようなパーソナルコンピュータ201により構成される。
図9において、CPU(Central Processing Unit)221は、ROM(Read Only Memory)222に記憶されているプログラム、またはHDD226からRAM(Random Access Memory)223にロードされたプログラムに従って各種の処理を実行する。RAM223にはまた、CPU221が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU221、ROM222、およびRAM223は、バス224を介して相互に接続されている。このバス224にはまた、インタフェース(I/F)225−1乃至225−3、HDD(hard Disc Drive)226、映像特殊効果音声ミキシング処理部227、および、信号処理部228も接続されている。
インタフェース225−1には、キーボード202、マウス203などの入力デバイスが接続されている。インタフェース225−2には、記憶装置204が接続され、情報を授受することができるようになされている。また、インタフェース225−3には、外部映像記録再生装置205−1乃至205−mが接続され、情報を授受することができるようになされている。HDD226は、ハードディスクをドライブし、各種情報を記憶することができるようになされている。
映像特殊効果音声ミキシング処理部227は、信号処理部228、並びに、記憶装置204および映像記録再生装置205−1乃至205−mとも接続され、記憶装置204および映像記録再生装置205−1乃至205−mのいずれかから供給された、または、バス224を介して、HDD226から供給された映像信号に特殊効果を施したり、音声をミキシングするなどして、信号処理部228に供給させて出力させたり、記憶装置204および映像記録再生装置205−1乃至205−mのうちのいずれかに供給させて保存させる。
信号処理部228は、ディスプレイ229およびスピーカ230とも接続され、例えば、映像特殊効果音声ミキシング処理部227などから供給された映像信号を、ディスプレイ229に供給して表示させたり、音声信号を、スピーカ230に供給して音声出力させる。
ディスプレイ229は、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなり、信号処理部228から供給される映像を表示する。スピーカは、信号処理部228から供給される音声を再生出力する。
バス224にはまた、必要に応じてドライブ231が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア206が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてHDD226にインストールされる。
図9を用いて説明したパーソナルコンピュータ201において、ソフトウェアにより、本発明を適用した処理が実行される場合の機能の一例について説明するための機能ブロック図を図10に示す。
なお、図4または図9における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
CPU221が所定のプログラムを実行することによって、パーソナルコンピュータ201は、図4の操作入力取得部21およびGUI表示制御部71と基本的に同等の機能を有するGUI制御部251、図4のストリーム供給制御部74およびストリームメモリ制御部25と基本的に同等の機能を有するストリーム供給制御部252、図4の参照画像指示部75およびベースバンド画像データ用メモリ制御部77と基本的に同等の機能を有する参照画像指示部253の機能を有するとともに、図4を用いて説明した、ストリーム復号位置検出処理部22、デコード制御部72、デコード処理部76、ベースバンド信号処理部32と同等の機能を有する。
CPU221は、マウス202またはキーボード203などの入力デバイスによって入力されたユーザの操作を基に、記憶装置204、外部映像記録再生装置205、または、HDD226に記録されているインデックステーブルを参照するとともに、RAM223のうちの所定の記憶領域をベースバンド画像データ用メモリ31として利用し、ベースバンド画像データ用メモリ31に記憶されているベースバンド画像データを参照して、記憶装置204、外部映像記録再生装置205、または、HDD226に記憶されているストリームデータのうち、ユーザが指定したストリームに含まれるフレームのデコードの順番と、デコードの方法を決定する。
CPU221は、RAM223のうちの所定の記憶領域をベースバンド画像データ用メモリ31として利用するので、デコードされたベースバンド画像データを、RAM223に供給して記憶させるとともに、RAM223に記憶されたべースバンド画像データを参照画像としてデコードに利用する。そして、CPU221は、RAM223に記憶されたべースバンド画像データを読み出して、例えば、例えば、色補正やサイズ補正、スロー再生時におけるフィールドコントロールなど、デコードされた画像が正しく再生出力されるように各種補正を行って、生成された出力ベースバンド画像データを、ディスプレイ229に供給して表示させる。
すなわち、CPU221は、RAM223のうちの所定の記憶領域をベースバンド画像データ用メモリ31として利用し、デコード済みのベースバンド画像データを、参照画像用と出力信号用とに区別せずに記憶させ、これらのベースバンド画像データを、参照画像および出力信号として利用する。
次に、図11のフローチャートを参照して、図4を用いて説明した再生装置61または図9および図10を用いて説明したパーソナルコンピュータ201によって実行される、デコード処理1について説明する。
ステップS41において、ストリーム復号位置検出処理部22(CPU221のストリーム復号位置検出処理部22)は、操作入力取得部21(CPU221のGUI制御部251)より、再生位置の指定(ストリームNo.フレームNo.)の入力を受け、デコード制御部72(CPU221のデコード制御部72)に供給する。
ステップS42において、デコード制御部72(CPU221のデコード制御部72)は、供給されたストリームNo.に対応するインデックステーブルを、インデックス管理部24(記憶装置204、外部映像記録再生装置205、または、HDD226)から取得する。
ステップS43において、デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルから、デコードに必要な情報である、例えば、ピクチャタイプ、参照画像に関する情報、データ長、または、メモリ内のアドレスなどの情報を抽出する。
ステップS44において、デコード制御部72(CPU221のデコード制御部72)は、ユーザからの指令を基に、再生出力されるフレームのデコード順とデコーダ(デコードの方法)を決定する。
具体的には、例えば、ユーザにより、低速の再生が指令されている場合、デコード制御部72(CPU221のデコード制御部72)は、レイテンシが最短となるように、再生が指示されたフレームを、順に高解像度のデコーダを用いてデコードさせることができる。しかしながら、ある程度高速の早送りまたは巻き戻しなどが指令されている場合、デコード制御部72(CPU221のデコード制御部72)は、再生されるフレームを順に高解像度のデコーダを用いてデコードする方法では、最終的に出力される表示フレームの表示コマ数を確保することができないので、再生されるように指示されたフレームの近傍のIピクチャまたはPピクチャをデコードさせて出力させたり、低解像度のデコーダを用いてデコードしたりすることができる。そして、更に、高速で画質を求めない再生モードにおいては、再生が指令されたフレームの近傍のIピクチャだけをIピクチャ専用のデコーダでデコードさせて出力させるようにすることができる。
ステップS45において、デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルに記載された情報を参照して、デコードに必要な前方向画像のうち、最も再生フレームから遠いフレームとの間のフレーム数(深さ)(Depth of Past Frames for Decoding)を検出する。
ステップS46において、デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルに記載された情報を参照して、指定されたフレームNo.のフレームをデコードするために参照画像として必要なフレーム(デコードするフレームとして指定されているフレームがIピクチャではなかった場合は、直前のIピクチャを含む少なくとも1つのフレーム)のフレームNo.を取得する。デコード制御部72(CPU221のデコード制御部72)は、例えば、図7を用いて説明した様に、B13フレームの再生出力が指令されている場合、参照画像として、I2,P5,P8,P11、および、P14が必要であることを取得し、B3フレームの再生出力が指令されている場合、参照画像として、I2およびP5が必要であることを取得する。
ステップS47において、デコード制御部72(CPU221のデコード制御部72)は、ベースバンドメモリ管理部73により管理されるベースバンド画像データ用メモリ31に記憶されているベースバンド画像データを参照して(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域に記憶されているベースバンド画像データを参照して)、ベースバンド画像データ用メモリ31に、必要な参照画像が、必要な品質で、全て存在するか否かを判断する。
ステップS47において、ベースバンド画像データ用メモリ31に、必要な参照画像が、必要な品質で、全て存在していないと判断された場合、換言すれば、必要な参照画像のうち、ベースバンド画像データ用メモリ31に、必要な品質で存在していないものがあると判断された場合、ステップS48において、デコード制御部72(CPU221のデコード制御部72)は、ベースバンド画像データ用メモリ31に存在しない参照画像を、対応するデコーダ(デコード方法)でデコードする。
すなわち、デコード制御部72(CPU221のデコード制御部72)は、ストリーム供給制御部74に、ストリームメモリ25を介してストリーム用メモリ26から、ベースバンド画像データ用メモリ31に存在しない参照画像に対応する圧縮画像フレームを読み出させ、デコード処理部76に供給させてデコードさせ、ベースバンド画像データ用メモリ制御部77を介してベースバンド画像データ用メモリ31に供給させて、保存させ(CPU221のストリーム供給制御部252に、記憶装置204、外部映像記録再生装置205、または、HDD226に記憶されているストリームデータを読み出させ、デコード処理部76に供給させてデコードさせ、RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域に供給させて、保存させ)、処理は、ステップS47に戻り、それ以降の処理が繰り返される。
ステップS47において、ベースバンド画像データ用メモリ31に、必要な参照画像が、必要な品質で、全て存在していると判断された場合、ステップS49において、デコード処理部76(CPU221のデコード処理部76)は、デコード制御部72の制御に基づいて、ベースバンド画像データ用メモリ31(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域)に記憶されている参照画像を利用して、再生されるフレームを対応するデコーダ(デコード方法)でデコードし、ベースバンド画像データ用メモリ31(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域)に供給する。
ステップS50において、ベースバンド信号処理部32(CPU221のベースバンド信号処理部32)は、デコード制御部72によりデコードされ、ベースバンド画像データ用メモリ31(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域)により記憶されているベースバンド画像データを取得し、各種補正(ベースバンド処理)を施し、生成された出力ベースバンド画像データフレームを出力して、GUI表示制御部71の処理により表示させ(CPU221のGUI制御部251の処理によりディスプレイ229に出力して表示させ)、処理が終了される。
このような処理により、スクラブ再生において、参照画像を生成するために、同一フレームを重複してデコードする必要がなくなるため、高速に再生フレームをデコードすることができる。
すなわち、上述したようにして、デコード順を制御することにより、例えば、スクラブ再生(ランダム再生)などの特定位置からの再生時や、いわゆるトリック再生のレイテンシを短縮し、遅延時間最短で所望のフレームを再生出力することが可能となる。
更に、参照画像用のメモリと出力画像用のメモリを同一のものとしたことにより、装置全体のメモリ数を減少させることができ、更に、デコードされたデータが出力されるまでのメモリコピー回数を減らすことができるので、レイテンシを短くすることができる。
また、参照画像の保存を行うメモリを、デコーダから独立させて、デコーダ以外の部分から制御させるようにしたので、デコード順の制御の自由度が増し、また、入力ストリームを1フレームごとに切り替えたり、デコーダを1フレームごとに切り替えることが可能となるので、さまざまなデコードアルゴリズムに対応することができるようになる。
また、このような構成をとることにより、装置の処理能力と、再生速度や求められる画質に応じて、デコーダやデコード方法を選択することができる。例えば、通常は、高解像度のデコードを再生出力の順に基づいて行うようにしておき、これに対して、再生出力の速度や、必要な画質に対応するように、必要に応じて、低解像度のデコードを行ったり、Bピクチャのデコードを行わずに、IピクチャまたはPピクチャのみデコードを行ったり、更に、Iピクチャなど特定のピクチャタイプのデコード(フレーム内圧縮方式のデコード)のみを行うようにすることができる。
したがって、従来の再生装置においては高速で再生出力を追従させることができなかった、スクラブ再生などの複雑な再生指示に対しても、再生出力される画像の画質とデコード時間とのバランスを考慮して、最適な、デコードアルゴリズムやデコーダ(デコード方法)を選択ことができ、無駄のない最短遅延のデコードが実現できる。
更に、このような構成にすることにより、例えば、MPEG方式によって圧縮されたストリームをデコード可能なデコーダとそれ以外の方式において圧縮されたストリームをデコード可能なデコーダとをそれぞれ備えさせ、適宜切り替えてデコードさせることも可能となる。
また、本発明が適用された場合、複数のデコーダまたはデコード方法によってデコードされた後のベースバンド画像データを、参照画像用と出力用とで区別せずに記憶するようにしたので、デコードされた後のベースバンド画像データがいかなるデコード方法によってデコードされたかの情報が管理される。いかなるデコード方法によってデコードされたかの情報は、例えば、図8を用いて説明したデコーダタイプ(Decoder Type)のフラグ情報である。
例えば、低速再生や静止画の表示など、高解像度のデコードが実行される場合、画像の劣化を防ぐため、デコードされた後のベースバンド画像データがいかなるデコード方法によってデコードされたかの情報を参照することにより、低解像度でデコードされたベースバンド画像データを参照画像データとして用いることなく、高解像度でデコードされたベースバンド画像データのみを参照画像として用いるようにすることができる。
なお、ここでは、主に、Iピクチャ、Pピクチャ、および、BピクチャからなるMPEG2 LongGOPにおける場合について説明したが、本発明は、フレーム間参照によりデコードされた圧縮符号化データを再生する場合に適用可能である。
このように、例えば、スクラブ再生時などにおいては、再生出力の速度や、必要な画質に対応するように、必要に応じて、低解像度のデコードを行ったり、Bピクチャのデコードを行わずに、IピクチャまたはPピクチャのみデコードを行ったり、更に、Iピクチャなど特定のピクチャタイプのデコード(フレーム内圧縮方式のデコード)のみを行うようになされているなど、再生出力される画像の画質とデコード時間とのバランスを考慮して、最適な、デコードアルゴリズムやデコーダ(デコード方法)を選択することができ、無駄のない最短遅延のデコードが実現できるようになされていた。
また、更に、図6を用いて説明したインデックステーブルのデコード深さ情報(Depth of Past Frames for Decoding)を利用することにより、更に、できるだけ画像の品質がよい、最短遅延のデコード処理が可能となる。
次に、図4または図10のデコード制御部72において実行されるデコード処理の制御において、インデックステーブルのデコード深さ情報(Depth of Past Frames for Decoding)を利用する方法について、具体的に説明する。
図6を用いて説明したインデックステーブルのデコード深さ情報(Depth of Past Frames for Decoding)は、上述したように、過去側の参照フレームを得るために必要なデコードの回数を表したものである。未来側のフレームを参照するのは、Bピクチャのみであるが、Bピクチャの未来側の参照フレーム数は、1フレームである。すなわち、Bピクチャのすべての参照フレームを得るために必要なデコードの回数を得るには、「過去側のデコードの回数+1」とすればよい。したがって、インデックステーブルとしては、過去のデコードの深さだけを所持していれば十分である。
すなわち、GOPの先頭のIピクチャをデコードするためには過去側の参照フレームを必要としないため、深さの値は0となる。そして、それぞれのPピクチャの深さの値は、GOPの先頭から数えて、Pピクチャが来るたびに1インクリメントした値となり、そして、ストリームの先頭、または、Closed GOP先頭の2枚のBピクチャをデコードするためには、過去側の参照フレームを必要としないため、深さの値は0となり、Open GOPであり、かつ、ストリームの先頭ではないIピクチャの直後の2枚のBピクチャの深さの値は、Iピクチャの直前のPピクチャの深さの値に1を加えたものとなり、それ以外のBピクチャの深さの値は、直前のPピクチャの深さの値と等しい。
図4または図10のデコード制御部72においては、図6を用いて説明したインデックステーブルのデコード深さ情報(Depth of Past Frames for Decoding)を利用して、デコード処理の制御を行うことができる。
図12のフローチャートを参照して、ストリームを先頭からパースして、深さ情報を作成する、深さ情報算出処理について説明する。
なお、例えば、図4を用いて説明した再生装置61において再生処理が実行される場合、深さ情報算出処理は、インデックステーブルを記憶するインデックス管理部24において実行されてもよいし、再生装置61以外の装置(例えば、一般的なパーソナルコンピュータ、具体的には、図10を用いて説明した機能ブロック図に示される機能を有さないものを含むパーソナルコンピュータ201など)において実行され、生成されたインデックステーブルが再生装置61に供給されて、インデックス管理部24に記憶されるものとしてもよい。
また、図9および図10を用いて説明したパーソナルコンピュータ201において再生処理が実行される場合、深さ情報算出処理は、CPU221(ただし、図10を用いて説明した機能ブロック図に示されない機能を用いて処理が実行される)において実行されてもよいし、パーソナルコンピュータ201以外の装置(例えば、一般的なパーソナルコンピュータ、具体的には、図10を用いて説明した機能ブロック図に示される機能を有さないものを含むパーソナルコンピュータなど)において実行され、生成されたインデックステーブルがパーソナルコンピュータ201に供給されて、HDD226に記憶されてもよいし、生成されたインデックステーブルが記憶装置204または外部映像記録再生装置205に記憶されて、パーソナルコンピュータ201に供給されるものとしてもよい。
図12のフローチャートにおいては、深さ情報算出処理は、パーソナルコンピュータ201のCPU221(ただし、図10を用いて説明した機能ブロック図に示されない機能を用いて処理が実行される)において実行されるものとして説明するが、上述したように、パーソナルコンピュータ201のCPU221以外において実行されるものとしてもよい。
ステップS81において、パーソナルコンピュータ201のCPU221は、インデックステーブルを生成するストリームのStream Orderの入力を受ける。
ステップS82において、CPU221は、次のピクチャのピクチャタイプはIであるか否かを判断する。ステップS82において、次のピクチャのピクチャタイプはIではないと判断された場合、処理は、後述するステップS85に進む。
ステップS82において、次のピクチャのピクチャタイプはIであると判断された場合、ステップS83において、CPU221は、デコード深さを算出するための第1のカウンタであるdepthの値を、depth=depth+1とし、更に、デコード深さを算出するための第2のカウンタであるprev_depthの値をprev_depth=depthとする。
ここで、デコード深さを算出するための第1のカウンタであるdepthは、GOP内のPピクチャ、および、GOP先頭の2枚のBピクチャ以外のBピクチャのデコード深さを算出するために用いられるカウンタであり、デコード深さを算出するための第2のカウンタであるprev_depthは、GOP先頭の2枚のBピクチャのデコード深さを算出するために用いられるカウンタである。
ステップS84において、CPU221は、第1のカウンタであるdepthの値を、depth=0とし、処理は、後述するステップS89に進む。
ステップS82において、次のピクチャのピクチャタイプはIではないと判断された場合、ステップS85において、CPU221は、次のピクチャのピクチャタイプはPであるか否かを判断する。ステップS85において、次のピクチャのピクチャタイプはPではないと判断された場合、処理は、後述するステップS88に進む。
ステップS85において、次のピクチャのピクチャタイプはPであると判断された場合、ステップS86において、CPU221は、デコード深さを算出するための第2のカウンタであるprev_depthの値をリセットして、Prev_depth=0とする
ステップS87において、CPU221は、デコード深さを算出するための第1のカウンタであるdepthの値を、depth=depth+1とし、処理は、後述するステップS89に進む。
ステップS85において、次のピクチャのピクチャタイプはPではない、すなわち、Bピクチャであると判断された場合、ステップS88において、CPU221は、depth=0であるか否か、換言すれば、GOP先頭2枚のBピクチャであるか否かを判断する。
ステップS84、または、ステップS87の処理の終了後、もしくは、ステップS88において、depth=0ではないと判断された場合、ステップS89において、CPU221は、デコード深さdepth of Past Frames for Decodingの値を、depth of Past Frames for Decoding=depthとし、処理は、後述するステップS93に進む。
具体的には、ピクチャタイプがIである場合、ステップS84において、デコード深さを算出するための第1のカウンタであるdepthの値は、depth=0となっているので、Iピクチャのデコード深さdepth of Past Frames for Decodingの値は0となり、ピクチャタイプがPである場合、ステップS87において、デコード深さを算出するための第1のカウンタであるdepthの値は、1づつインクリメントされるので、Pピクチャのデコード深さdepth of Past Frames for Decodingの値は、それぞれ、GOPの先頭(Iピクチャ)から数えて、Pピクチャが来るたびに1インクリメントした値となり、ピクチャタイプがBであり、かつ、GOP先頭2枚のBピクチャ以外のBピクチャである場合、デコード深さdepth of Past Frames for Decodingの値は、直前のPピクチャと等しいものとなる。
ステップS88において、depth=0である、すなわち、GOP先頭2枚のBピクチャであると判断された場合、ステップS90において、CPU221は、このBピクチャに対して、過去参照画像が存在しないか否か、換言すれば、このBピクチャは、ストリームの先頭、または、Closed GOP先頭の2枚のBピクチャのうちのいずれかであるか否かを判断する。
ステップS90において、過去参照画像が存在しない、すなわち、このBピクチャは、ストリームの先頭、または、Closed GOP先頭の2枚のBピクチャのうちのいずれかであると判断された場合、ステップS91において、CPU221は、デコード深さdepth of Past Frames for Decodingの値を、depth of Past Frames for Decoding=0とし、処理は、後述するステップS93に進む。
ステップS90において、過去参照画像が存在すると判断された場合、すなわち、このBピクチャは、ストリームの先頭、または、Closed GOPのいずれとも異なるGOPの先頭の2枚のBピクチャのうちのいずれかである場合、ステップS92において、CPU221は、デコード深さdepth of Past Frames for Decodingの値を、depth of Past Frames for Decoding=prev_depthとし、処理は、後述するステップS93に進む。
具体的には、ステップS86、すなわち、Pピクチャが来たときにprev_depthの値はリセットされ、ステップS83、すなわち、Iピクチャが来たときにprev_depthの値はdepth+1とされているので、GOP先頭であり、かつ、ストリームの先頭、または、Closed GOPではないGOPのBピクチャは、その直前のPピクチャのdepth of Past Frames for Decodingの値に1を加えた値となる。
ステップS89、ステップS91、または、ステップS92の処理の終了後、ステップS93において、CPU221は、ストリームが終了したか否かを判断する。ステップS93において、ストリームが終了していないと判断された場合、処理は、ステップS82に戻り、それ以降の処理が繰り返される。ステップS93において、ストリームが終了したと判断された場合、処理が終了される。
このような処理により、図6を用いて説明したインデックステーブルのdepth of Past Frames for Decodingの値が算出され、デコード処理の制御に用いられる。
次に、図13のフローチャートを参照して、図12の深さ情報算出処理により算出されたdepth of Past Frames for Decodingの値を用いて、図4を用いて説明した再生装置61または図9および図10を用いて説明したパーソナルコンピュータ201によって実行される、デコード処理2について説明する。
ステップS121乃至ステップS126において、図11のステップS41乃至ステップS46と基本的に同様の処理が実行される。
すなわち、ストリーム復号位置検出処理部22(CPU221のストリーム復号位置検出処理部22)は、操作入力取得部21(CPU221のGUI制御部251)より、再生位置の指定(ストリームNo.フレームNo.)の入力を受け、デコード制御部72(CPU221のデコード制御部72)に供給する。デコード制御部72(CPU221のデコード制御部72)は、供給されたストリームNo.に対応するインデックステーブルを、インデックス管理部24(記憶装置204、外部映像記録再生装置205、または、HDD226)から取得する。
デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルから、デコードに必要な情報である、例えば、ピクチャタイプ、参照画像に関する情報、データ長、または、メモリ内のアドレスなどの情報を抽出し、ユーザからの指令を基に、再生出力されるフレームのデコード順とデコーダ(デコードの方法)を決定する。
そして、デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルに記載された情報を参照して、デコードに必要な前方向画像のうち、最も再生フレームから遠いフレームとの間のフレーム数(深さ)(Depth of Past Frames for Decoding)を検出し、インデックステーブルに記載された情報を参照して、指定されたフレームNo.のフレームをデコードするために参照画像として必要なフレーム(デコードするフレームとして指定されているフレームがIピクチャではなかった場合は、直前のIピクチャを含む少なくとも1つのフレーム)のフレームNo.を取得する。
そして、ステップS127において、図14を用いて後述するデコード切り替え決定処理が実行される。
すなわち、通常再生モードの場合や、スクラブ再生であっても既にベースバンド画像データ用メモリ31に参照フレームが存在している場合には、この後のデコード処理が短いと予測できるので、深さ情報を使った処理は行わず、通常のデコード処理(ステップS130乃至ステップS133の処理)が行なわれる。一方、スクラブモードで過去参照画像もない場合、すなわち、ランダムに再生中で周囲のフレームがデコードされていない場合、インデックステーブルに記載されている深さ情報を利用して、通常デコードを行っても処理が間に合うか否かを判断し、デコード処理を通常デコード処理(ステップS130乃至ステップS133の処理)とするか、代替の処理(ステップS129の処理)とするかが決定される。
ステップS128において、デコード制御部72(CPU221のデコード制御部72)は、ステップS127において実行されたデコード切り替え決定処理において、代替表示を実行すると決定されたか否かを判断する。
ステップS128において、代替表示を実行すると決定されたと判断された場合、ステップS129において、デコード制御部72(CPU221のデコード制御部72)は、低解像度画像または近傍画像を用いた代替表示を実行させて、処理が終了される。
具体的には、代替の方法としては、例えば、Bピクチャのデコードを行わずに、IピクチャまたはPピクチャのみデコードを行ったり、Iピクチャなど特定のピクチャタイプのデコード(フレーム内圧縮方式のデコード)のみを行ったり、デコード自体を高速に処理することを目的として低解像度のデコードを行うなど、必要に応じて、再生出力される画像の画質とデコード時間とのバランスを考慮して、最適な、デコードアルゴリズムやデコーダ(デコード方法)が選択されるようになされている。
更に、代替の方法として、例えば、プロクシファイルとして、PピクチャおよびBピクチャ、または、Pピクチャのうちの少なくともいずれか1フレームを一旦デコードしてIピクチャに再エンコードしたものを別途用意し、このIピクチャを用いて画像を表示するようにしてもよい。プロクシファイルの詳細については後述する。
ステップS128において、代替表示を実行しないと決定されたと判断された場合、ステップS130乃至ステップS133において、図11のステップS47乃至ステップS50と同様の処理が実行されて、処理が終了される。
すなわち、デコード制御部72(CPU221のデコード制御部72)は、ベースバンドメモリ管理部73により管理されるベースバンド画像データ用メモリ31に記憶されているベースバンド画像データを参照して(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域に記憶されているベースバンド画像データを参照して)、ベースバンド画像データ用メモリ31に、必要な参照画像が、必要な品質で、全て存在するか否かを判断する。
ベースバンド画像データ用メモリ31に、必要な参照画像が、必要な品質で、全て存在していないと判断された場合、換言すれば、必要な参照画像のうち、ベースバンド画像データ用メモリ31に、必要な品質で存在していないものがあると判断された場合、ベースバンド画像データ用メモリ31に存在しない参照画像が、対応するデコーダ(デコード方法)でデコードされ、処理は、ステップS130に戻り、それ以降の処理が繰り返される。
そして、ベースバンド画像データ用メモリ31に、必要な参照画像が、必要な品質で、全て存在していると判断された場合、デコード制御部72の制御に基づいて、ベースバンド画像データ用メモリ31(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域)に記憶されている参照画像を利用して、再生されるフレームが、対応するデコーダ(デコード方法)でデコードされ、ベースバンド画像データ用メモリ31(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域)に供給される。
そして、ベースバンド信号処理部32(CPU221のベースバンド信号処理部32)は、デコード制御部72によりデコードされ、ベースバンド画像データ用メモリ31(RAM223のベースバンド画像データ用メモリ31として利用されている記憶領域)により記憶されているベースバンド画像データを取得し、各種補正(ベースバンド処理)を施し、生成された出力ベースバンド画像データフレームを出力して、GUI表示制御部71の処理により表示させ(CPU221のGUI制御部251の処理によりディスプレイ229に出力して表示させ)、処理が終了される。
このような処理により、スクラブ再生において、参照画像を生成するために、同一フレームを重複してデコードする必要がなくなるため、高速に再生フレームをデコードすることができるとともに、後述するデコード切り替え処理により、例えば、スクラブモードで過去参照画像もない場合、すなわち、ランダムに再生中で周囲のフレームがデコードされていない場合などにおいて、インデックステーブルに記載されている深さ情報が利用されて、通常デコードを行っても処理が間に合うか否かが判断され、デコードを切り替えて代替表示を行うか否かが判断されて、必要に応じて、代替表示が行われる。
すなわち、上述したようにして、デコード順を制御することにより、例えば、スクラブ再生(ランダム再生)などの特定位置からの再生時や、いわゆるトリック再生のレイテンシを短縮し、遅延時間最短で所望のフレームを再生出力することが可能となるばかりでなく、通常デコードを行うと処理が間に合わないような場合には、デコードを切り替えて代替表示が実行される。
次に、図14のフローチャートを参照して、図13のステップS127において実行される、デコード切り替え決定処理について説明する。
ステップS161において、デコード制御部72(CPU221のデコード制御部72)は、現在の再生モードは、スクラブモードであるか否かを判断する。ステップS161において、スクラブモードではないと判断された場合、処理は、後述するステップS170に進む。
ステップS161において、スクラブモードであると判断された場合、ステップS162において、デコード制御部72(CPU221のデコード制御部72)は、ベースバンド画像データ用メモリ31に、過去参照フレームが存在するか否かを判断する。ステップS162において、過去参照フレームが存在すると判断された場合、処理は、後述するステップS170に進む。
ステップS162において、過去参照フレームが存在しないと判断された場合、ステップS163において、デコード制御部72(CPU221のデコード制御部72)は、デコード可能フレーム数があらかじめ決められているか、または、上位アプリケーションから指定されるかなどの条件設定を基に、デコード可能フレーム数の算出の必要があるか否かを判断する。
具体的には、デコード可能フレーム数は、例えば、予め設定されて(フレーム数が直接指定されて)いてもよいし、上位アプリケーションにより指定されるようになされていてもよい。例えば、デコード可能フレーム数は、デコード処理に用いられるデコーダやCPUの数やクロック周波数によって、設定されるようにしてもよい。このような場合は、デコード可能フレーム数の算出の必要は無く、指定されるデコード可能フレーム数を取得するようにすればよい。
これに対して、例えば、上位アプリケーションからデコード処理に与えることができる時間配分T(例えば、20ms)のみが指定された場合には、デコード可能フレーム数の算出の必要がある。
ステップS163において、デコード可能フレーム数の算出の必要があると判断された場合、ステップS164において、図15を用いて後述するデコード可能フレーム数算出処理が実行される。
ステップS163において、デコード可能フレーム数の算出の必要がないと判断された場合、ステップS165において、デコード制御部72(CPU221のデコード制御部72)は、上位アプリケーションにより指定された、または、あらかじめ設定されているデコード可能フレーム数を取得する。
ステップS164、または、ステップS165の処理の終了後、ステップS166において、デコード制御部72(CPU221のデコード制御部72)は、処理するフレームはBピクチャであるか否かを判断する。
ステップS166においてBピクチャであると判断された場合、ステップS167において、デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルの深さ情報(depth of Past Frames for Decodingの値)を参照し、過去参照フレーム数(深さ)+2>デコード可能フレーム数であるか否かを判断する。
ここで、過去参照フレーム数(深さ)+2は、参照画像フレームが全く存在しない場合に、対応するBピクチャをデコードするために必要なデコード回数である。具体的には、対応するBピクチャをデコードするために必要なデコード回数は、過去の参照画像のフレーム数(depth of Past Frames for Decodingの値)と、未来側(時間的に後のフレーム)の参照フレーム数1と、自分自身のデコードのための1回との合計となる。
ステップS167において、過去参照フレーム数(深さ)+2>デコード可能フレーム数であると判断された場合、処理は、後述するステップS169に進み、過去参照フレーム数(深さ)+2>デコード可能フレーム数ではないと判断された場合、処理は、後述するステップS170に進む。
ステップS166においてBピクチャではないと判断された場合、ステップS168において、デコード制御部72(CPU221のデコード制御部72)は、インデックステーブルの深さ情報(depth of Past Frames for Decodingの値)を参照し、過去参照フレーム数(深さ)+1>デコード可能フレーム数であるか
否かを判断する。
ここで、過去参照フレーム数(深さ)+1は、参照画像フレームが全く存在しない場合に、対応するPピクチャまたはIピクチャをデコードするために必要なデコード回数である。具体的には、対応するPピクチャまたはIピクチャをデコードするために必要なデコード回数は、過去の参照画像のフレーム数(depth of Past Frames for Decodingの値)に、自分自身のデコードのための1回を加えた回数となる。Iピクチャの過去参照フレーム数(深さ)は0であるので、Iピクチャをデコードするために必要なデコード回数は1回となるのはもちろんである。
ステップS168において、過去参照フレーム数(深さ)+1>デコード可能フレーム数であると判断された場合、処理は、後述するステップS169に進み、過去参照フレーム数(深さ)+1>デコード可能フレーム数ではないと判断された場合、処理は、後述するステップS170に進む。
ステップS167において、過去参照フレーム数(深さ)+2>デコード可能フレーム数であると判断された場合、または、ステップS168において、過去参照フレーム数(深さ)+1>デコード可能フレーム数であると判断された場合、ステップS169において、デコード制御部72(CPU221のデコード制御部72)は、代替表示を行うものと決定し、処理は、図13のステップS127に戻り、ステップS128に進む。
ここで、代替表示とは、具体的には、例えば、上述したように、Bピクチャのデコードを行わずに、IピクチャまたはPピクチャのみデコードを行ったり、Iピクチャなど特定のピクチャタイプのデコード(フレーム内圧縮方式のデコード)のみを行ったり、デコード自体を高速に処理することを目的として低解像度のデコードを行うなどのほかに、プロクシファイルとして、PピクチャおよびBピクチャ、または、Pピクチャのうちの少なくともいずれか1フレームを一旦デコードしてIピクチャに再エンコードしたものを別途用意し、このIピクチャを用いて画像を表示することにより、代替表示を行わない場合と比較して、高速に所望の画像を表示することができるようにするものである。プロクシファイルの詳細については、後述する。代替表示としては、これらの表示方法以外であっても、必要に応じて、再生出力される画像の画質とデコード時間とのバランスを考慮して、最適な、デコードアルゴリズムやデコーダ(デコード方法)が選択されるようにすればよい。
ステップS167において、過去参照フレーム数(深さ)+2>デコード可能フレーム数ではないと判断された場合、または、ステップS168において、過去参照フレーム数(深さ)+1>デコード可能フレーム数ではないと判断された場合、ステップS170において、デコード制御部72(CPU221のデコード制御部72)は、代替表示を行わないものと決定し、処理は、図13のステップS127に戻り、ステップS128に進む。
このような処理により、インデックステーブルに記載されている深さ情報が利用されて、通常デコードを行っても処理が間に合うか否かが判断され、デコードを切り替えて代替表示を行うか否かが判断されて、必要に応じて、代替表示が行われる。
次に、図15のフローチャートを参照して、図14のステップS164において実行されるデコード可能フレーム数算出処理について説明する。
ステップS201において、デコード制御部72(CPU221のデコード制御部72)は、例えば、1秒間30フレームや1秒間15フレームなど、単位時間当たりの表示フレーム数を設定する。
ステップS202において、デコード制御部72(CPU221のデコード制御部72)は、1フレーム表示サイクルのうち、他の処理に使う時間を引いて、1フレームの表示に対してデコード処理に与えられる時間Tを設定する。
具体的には、例えば、デコード以外の処理に1フレームあたり13ms使われるとすると、1秒30フレーム表示の場合、1/30=33ms,33-13=20msとなり、20msが1フレームの表示に対してデコード処理に与えられる時間Tと設定され、1秒15フレーム表示の場合、1/15=66ms,66−13=53msとなり、53msが1フレームの表示に対してデコード処理に与えられる時間Tと設定される。
ステップS203において、デコード制御部72(CPU221のデコード制御部72)は、デコード対象ストリームを1GOP以上デコードし、平均1フレームデコード時間Aを計測する。
そして、ステップS204において、デコード制御部72(CPU221のデコード制御部72)は、T÷Aを演算し、T÷A以下の整数の最大値をデコード可能フレーム数Xとし、処理は、図14のステップS164に戻り、ステップS166に進む。
このような処理により、デコード可能フレーム数Xが算出され、インデックステーブルに記載されている深さ情報との比較が行われることにより、通常デコードを行っても処理が間に合うか否かが判断され、デコードを切り替えて代替表示を行うか否かが判断されて、必要に応じて、代替表示が行われる。
このようにして、本発明が適用されることにより、深さ情報を使って、デコード切り替えを行うかどうかを決定することが可能となる。すなわち、通常再生モードの場合や、スクラブ再生モードであってもデコード済みの参照フレームが存在している場合には、この後のデコード処理が短いと予測できるので、深さ情報を使った処理は行わず、通常のデコード処理を行う。一方、スクラブモードであり、かつ、過去参照画像もない場合、即ち、ランダムに再生中で周囲のフレームがデコードされていない場合、通常デコードを行うと処理が間に合わなくなり表示できなくなると予測されるか否かを判断するため、デコード可能フレーム数Xが算出または取得され、インデックステーブルに記載されている深さ情報との比較が行われることにより、デコード切り替えを行うかどうかが決定される。
デコード可能フレーム数は、フレーム数が指定されていてもよいし、デコード時間最大値が指定され、これを基に算出されるようにしてもよい。フレーム数が指定される場合、例えば、上位アプリケーションで直接、最大デコードフレーム数が指定されるものとしてもよいし、CPUなどの処理能力(数や処理クロック速度など処理の速さを推し量れる情報)から、いくつかの要素パラメータを組み合わせて決定される(例えば、DualCoreCPUの3.6GHzならばデコード可能フレーム数は5フレームだが、SingleCoreCPUの2GHzならばデコード可能フレーム数は2フレームであるというように)ものとしてもよい。一方、時間が指定された場合、アプリケーションがデコード処理に与えることができる時間Tと1フレームの平均デコード時間AからT/Aの値が求められて、デコード可能フレーム数が算出される。
また、デコード可能フレーム数は、例えば、代替表示において、近傍のIピクチャおよびPピクチャを用いて、または、Iピクチャのみを用いてデコード処理が実行されるような場合においても有効に利用することが可能である。即ち、デコード処理を行う近傍画像フレームを選択する場合の代替対象の制限に使用することが出来る。例えば、デコード可能フレーム数が4フレームであり、1GOP15フレーム(ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・P14)の場合I2,P5,P8,P11はデコードし、P14はPピクチャであってもデコード対象から外されることにより、スクラブ再生などにおける高速デコード処理が可能となる。
このように、本発明が適用された場合、スクラブ再生などの特殊再生においても、デコードの難しさに応じて、復号方法を自動的に切り替えることにより、GOP後半のフレームまでも快適に表示することが可能となる。また、デコーダの能力に応じて、柔軟にデコード方式を切り替えることができ、能力の低いデコーダ使用時にも、高いスクラブ表示性能を維持することができる。
また、代替表示が実行される場合には、例えば、上述したように、Bピクチャのデコードを行わずに、IピクチャまたはPピクチャのみデコードを行ったり、Iピクチャなど特定のピクチャタイプのデコード(フレーム内圧縮方式のデコード)のみを行ったり、デコード自体を高速に処理することを目的として低解像度のデコードを行うなどのほかに、プロクシファイルとして、PピクチャおよびBピクチャ、または、Pピクチャのうちの少なくともいずれか1フレームを一旦デコードしてIピクチャに再エンコードしたものを別途用意し、このIピクチャを用いて画像を表示するなど、必要に応じて、再生出力される画像の画質とデコード時間とのバランスを考慮して、最適な、デコードアルゴリズムやデコーダ(デコード方法)が選択される。
次に、代替表示の一例として上述したプロクシファイルについて説明する。
プロクシファイルは、再生装置61またはパーソナルコンピュータ201により生成されてもよいが、これらの装置とは独立して構成されている変換装置311により生成されてもよい。
変換装置311は、例えば、Mpeg2 LongGOPストリームなどのフレーム間参照符号化によって符号化されたビットストリーム(Iピクチャ(フレーム内符号化フレーム)、Pピクチャ(前方向予測符号化フレーム)、および、Bピクチャ(両方向予測符号化フレーム)により構成されているビットストリーム)の供給を受け、供給されたビットストリームのうちのPピクチャをエンコード(符号化)してIピクチャに変換することによって、図13のステップS129において代替表示が実行される場合に利用されるプロクシファイルを生成することができる。
図16は、変換装置311の構成例を示すブロック図である。
ビットストリーム取得部331は、Iピクチャ、Pピクチャ、および、Bピクチャが含まれているビットストリームの供給を受け、ビットストリーム解析部332に供給する。
ビットストリーム解析部332は、Iピクチャ、Pピクチャ、および、Bピクチャが含まれているビットストリームの供給を受け、このうち、IピクチャおよびPピクチャを、デコーダ334に供給する。また、ビットストリーム解析部332は、デコーダ334、エンコーダ336、および、プロクシファイル記憶部337を制御する。
また、ビットストリーム解析部332は、供給されたビットストリームを解析するとともに、エンコーダ336により実行される処理の結果を解析し、図6を用いて説明したインデックスファイルを生成し、インデックスファイル記憶部333に供給することができるものとしてもよい。
更に、インデックスファイルには、後述するプロクシインデックス記憶部338により記憶される情報を基に、図6を用いて説明した情報以外にも、例えば、図17に示されるように、プロクシファイルに含まれている、オリジナルストリームにおけるPピクチャに対応するフレームであってエンコーダ336によりエンコードされたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とが記載されるものとすると好適である。これらの情報は、エンコーダ336により後述するプロクシインデックス記憶部338に記憶される。
インデックスファイル記憶部333は、ビットストリーム解析部332から供給される、図17を用いて説明したインデックスファイルを記憶する。
デコーダ334は、ビットストリーム解析部332から供給されたIピクチャおよびPピクチャをデコードして、非圧縮ベースバンド画像を生成し、Pピクチャに対応する非圧縮ベースバンド画像データをエンコーダ336に供給する。このとき、デコーダ334は、生成された非圧縮ベースバンド画像が、その後デコードされるフレームの参照画像として必要となる場合、生成された非圧縮ベースバンド画像を参照画像用メモリ335にも供給して記憶させ、Pピクチャをデコードする場合、参照画像用メモリ335に記憶されている参照用画像を適宜参照する。
エンコーダ336は、供給されたPピクチャに対応する非圧縮ベースバンド画像データを、フレーム内符号化によりIピクチャとしてエンコードし、生成されたIピクチャをプロクシファイル記憶部337に供給する。また、エンコーダ336は、圧縮処理時(Iピクチャ生成時)のパラメータとして、例えば、圧縮レートなどを設定することができる。
図18を参照して、エンコーダ336から出力されるIピクチャのビットレートを固定にする場合について説明する。
エンコーダ336は、出力されるIピクチャのビットレートを固定にする場合、例えば、プロクシファイル記憶部337の記憶容量などに応じた所定のビットレートとなるように、Iピクチャを生成する。一般的に、Iピクチャよりも、前方参照を使ったPピクチャの方が、情報量が少ないので、Pピクチャを再圧縮してIピクチャにエンコードする場合のビットレートは、変換前(Pピクチャ)のビットレートよりも大きなビットレートとする方が、画質が維持しやすく、好適である。また、このビットレートを、ユーザにより設定可能なようにしても良い。
次に、図19を参照して、エンコーダ336から出力されるIピクチャのビットレートを変動とする場合について説明する。
エンコーダ336は、ビットストリーム解析部332、または、デコーダ334から、オリジナルのビットストリームのIピクチャ(GOP単位で先頭のIピクチャ)のレートを取得し、その値に応じたビットレートとなるように、Iピクチャを生成する。一般に、オリジナルの圧縮ストリームのIピクチャのビットレートは、そのGOPにおける映像の複雑さを反映している。したがって、Pピクチャから変換されて生成されるIピクチャのビットレートも、GOPにおける映像の複雑さを反映している先頭のIピクチャのビットレートに応じて変動させることにより、画質の劣化を防止することが可能となる。
そして、プロクシファイル記憶部337は、エンコーダ336から供給された、図18または図19を用いて説明したようにして生成され、エンコーダ336から供給されたIピクチャのデータを基に、プロクシファイル(proxy、すなわち、代理データファイル)を生成して記憶する。
プロクシインデックス記憶部338は、エンコーダ336から、供給されたPピクチャに対応する非圧縮ベースバンド画像データがフレーム内符号化によりIピクチャとしてエンコードされてIピクチャが生成されるごとに、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とをプロクシインデックスとして取得して記憶し、ビットストリーム解析部332に供給する。
次に、図20を参照して、オリジナルのビットストリームにおいてPピクチャをデコードする場合について説明する。
例えば、Mpeg2 LongGOPのビットストリームにおいて、P11フレームを再生出力する場合、従来においては、図20Aに示されるように、P11をふくむGOPの先頭のIピクチャであるI2フレームをデコードし、次いで、P5,P8フレームをデコードして参照フレーム画像データを生成した後、目的となるP11フレームをデコードすることができるようになされていた。
これに対して、プロクシファイルを利用してP11フレームを再生出力する場合、図20Bに示されるように、P11フレームに対応するフレーム内圧縮されたIピクチャであるI11フレームをプロクシファイルから抽出してデコードし、再生出力すればよい。
したがって、プロクシファイルを利用してP11フレームを再生出力する場合、従来のデコード回数4回と比較して、デコード回数は1回のみとなり、高速に指定されたフレームを再生出力することができる。
次に、図21を参照して、オリジナルのビットストリームでのBピクチャをデコードする場合について説明する。
例えば、Mpeg2 LongGOPのビットストリームにおいて、B12フレームを再生出力する場合、従来においては、図21Aに示されるように、B12をふくむGOPの先頭のIピクチャであるI2フレームをデコードし、次いで、P5,P8,P11,P14フレームをデコードして参照フレーム画像データを生成した後、目的となるB12フレームをデコードすることができるようになされていた。
これに対して、プロクシファイルを利用してB12フレームを再生出力する場合、図21Bに示されるように、B12フレームの参照画像として必要なP11フレームおよびP14フレームに対応する、フレーム内圧縮されたIピクチャであるI11フレームおよびI14フレームをデコードし、これらを参照画像として目的となるB12フレームをデコードして再生出力すればよい。
したがって、プロクシファイルを利用してB12フレームを再生出力する場合、従来のデコード回数6回と比較して、デコード回数は3回となり、高速に指定されたフレームを再生出力することができる。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、変換装置311と同様の機能を、図9を用いて説明したパーソナルコンピュータ201により実現させることができる。
図9を用いて説明したパーソナルコンピュータ201において、ソフトウェアにより、変換装置311と同様の機能が実現される場合の機能の一例について説明するための機能ブロック図を図22に示す。
なお、図16、または、図9における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
CPU221が所定のプログラムを実行することによって、パーソナルコンピュータ201は、図16のビットストリーム解析部332、デコーダ334、および、エンコーダ336と同等の機能を有する。
CPU221は、マウス202またはキーボード203などの入力デバイスによって入力されたユーザの操作を基に、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するビットストリーム記憶部281に記録されているビットストリームのうちのIピクチャおよびPピクチャを、参照画像用メモリ335に対応するRAM223の領域を利用してデコードし、PピクチャのみをIピクチャとしてエンコードすることにより、プロクシファイルを生成して、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337に記憶させる。
更に、CPU221は、Pピクチャに対応する非圧縮ベースバンド画像データがフレーム内符号化によりIピクチャとしてエンコードされてIピクチャが生成されるごとに、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とを、プロクシインデックスとしてプロクシインデックス記憶部338に対応するRAM223の領域に保存させるとともに、ビットストリームを解析し、プロクシインデックス記憶部338に保存されていたプロクシインデックスを取得してインデックスファイルを生成し、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部333に記憶させる。
再生装置61のデコード制御部72は、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部333に記録されているインデックスファイルを、所定の伝送媒体を介して取得する。また、デコード制御部72またはデコード処理部76は、図13のステップS129においてプロクシファイルを利用して代替表示を実行する場合、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337に記憶されているプロクシファイルを、所定の伝送媒体を介して取得し、デコード処理を実行する。
なお、例えば、図9を用いて説明したパーソナルコンピュータ201が、図22に示される機能に加えて図10を用いて説明したデコード処理を実行する機能を有していた場合、図10のパーソナルコンピュータ201のデコード制御部72は、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部333からインデックスファイルを取得する。また、デコード制御部72またはデコード処理部76は、図13のステップS129においてプロクシファイルを利用して代替表示を実行する場合、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337からプロクシファイルを取得し、デコード処理を実行する。
次に、図23のフローチャートを参照して、図16を用いて説明した変換装置311、または、図9および図22を用いて説明したパーソナルコンピュータのCPU221において実行されるプロクシファイル生成処理1について説明する。
ステップS221において、ビットストリーム取得部331(CPU221)は、オリジナルのビットストリームを取得し、ビットストリーム解析部332(CPU221のビットストリーム解析部332)に供給する。
ステップS222において、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、供給されたオリジナルのビットストリームのうちの1ピクチャを読み込む。
ステップS223において、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、読み込んだピクチャを解析する。すなわち、ビットストリーム解析部332は、図17を用いて説明したインデックスファイルのうちの対応するピクチャの情報を取得する。
ステップS224において、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、読み込んだピクチャは、IピクチャまたはPピクチャであるか否かを判断する。ステップS224において、IピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、処理は、後述するステップS230に進む。
ステップS224において、IピクチャまたはPピクチャであると判断された場合、ステップS225において、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、読み込んだIピクチャまたはPピクチャをデコーダ334に供給する。デコーダ334は、供給されたIピクチャまたはPピクチャをデコードして、参照画像用メモリ335に格納する。
ステップS226において、デコーダ334(CPU221のデコーダ334)は、デコードされたピクチャは、Pピクチャであるか否かを判断する。ステップS226において、デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、処理は、後述するステップS230に進む。
ステップS226において、デコードされたピクチャは、Pピクチャであると判断された場合、ステップS227において、デコーダ334(CPU221のデコーダ334)は、デコードしたPピクチャに対応する非圧縮画像フレームをエンコーダ336(CPU221のエンコーダ336)に供給する。エンコーダ336は、供給された非圧縮画像フレームをIピクチャとしてエンコードし、プロクシファイル記憶部337(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337)に供給する。
ステップS228において、プロクシファイル記憶部337(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337)は、エンコードされて生成されたIピクチャにより構成されるプロクシファイルを記憶する。
ステップS229において、エンコーダ336は、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とのインデックス情報、すなわち、プロクシインデックスを、プロクシインデックス記憶部338に供給する。プロクシインデックス記憶部338は、該当するピクチャのプロクシインデックスを記憶する。
ステップS224において、読み込んだピクチャはIピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、ステップS226において、デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、または、ステップS229の処理の終了後、ステップS230において、ビットストリーム解析部332(CPU221)は、全てのピクチャの処理が終了したか否かを判断する。ステップS230において、全てのピクチャの処理が終了していないと判断された場合、処理は、ステップS222に戻り、それ以降の処理が繰り返される。
ステップS230において、全てのピクチャの処理が終了したと判断された場合、ステップS231において、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、それぞれのピクチャの解析結果と、プロクシインデックス記憶部338に記憶されている、エンコーダ336によってIピクチャとしてエンコードされたフレーム、すなわち、PピクチャからIピクチャに変換されたフレームのピクチャサイズ(Proxy File Picture Size)とアドレス(Proxy File Address)を基に、図17を用いて説明したインデックスファイルを生成し、インデックスファイル記憶部333(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部333)に供給して記憶させ、処理が終了される。
このような処理により、オリジナルのビットストリームにおけるPピクチャがデコードされたのち、Iピクチャとしてエンコードされることによって生成されたIピクチャによるプロクシファイルと、オリジナルのビットストリームおよびプロクシファイルに含まれるIピクチャ(オリジナルのビットストリームではPピクチャ)に関する情報が記載されたインデックスファイルとが生成される。
このように、変換装置311は、圧縮されたビットストリームの供給を受け、これを解析してインデックスファイルを生成するとともに、PピクチャをIピクチャに変換してプロクシファイルを生成する。
また、本発明を適用したパーソナルコンピュータ201は、所定のプログラムを実行することによって、変換装置311と同様の機能を有することができる。
変換装置311においては、供給されたオリジナルのビットストリームから、IピクチャとPピクチャのみがデコードされて、Pピクチャに対応するフレームのみが、再度、Iピクチャとしてエンコードされることにより、プロクシファイルが生成される。
そのとき、生成されるプロクシファイルのIピクチャのデータレートは、固定レートであっても良いし、オリジナルのビットストリームの対応するGOPの先頭のIピクチャのフレームレートに応じて変動させても(可変レートとしても)良い。
そして、変換装置311において生成されるインデックスファイルには、オリジナルのビットストリームのデコードに必要な情報のみならず、プロクシファイルに含まれるIピクチャ、すなわち、オリジナルのビットストリームにおいてPピクチャであったフレームが、Iピクチャとしてエンコードされたフレームに関するピクチャサイズやアドレスなどの情報が含まれる。
プロクシファイルがストリームのデコードに利用されることにより、ランダム生成におけるデコード時間を短縮することが可能となる。
また、上述したように、PピクチャをIピクチャに変換するPI変換を行い、変換前のストリームと変換された部分とを切り替えながらデコード処理に用いるようにすることにより、デコード時間を短縮しランダムアクセス性能を向上することが出来る。しかしながら、編集や再生を行う前に、元々のストリームのうちPピクチャの部分をIピクチャに変換する処理のために時間がかかってしまう。例えば、1GOPが15フレームのストリームのうちPピクチャが5フレームあったとすると、その5フレーム分を全てデコードして、Iピクチャに変換する(デコードした後再エンコードする)ための時間がかかってしまう。
そこで、図16のビットストリーム解析部332は、PI変換を行うときに、全てのPピクチャをIピクチャに変換するのではなく、必要に応じて、一部のPピクチャのみをIピクチャに変換してプロクシファイルを生成して記憶するように、デコーダ334、エンコーダ336、プロクシファイル記憶部337を制御するようにしてもよい。
PI変換を行う処理時間は、Iピクチャに変換する(デコードした後再エンコードする)Pピクチャの個数に依存するため、変換するピクチャの枚数を減らすことができれば、処理時間(プロクシファイルの生成時間)を短縮することができる。ビットストリーム解析部332は、変換後のストリームをデコードするのに必要な最長フレーム数がデコーダの能力を超えないことを、変換するピクチャの枚数を決定するための判断基準とすると好適である。変換後のストリームをデコードするのに必要な最長フレーム数(以下、デコード可能フレーム数とも称する)は、例えば、再生モードがスクラブ再生であるか、通常再生であるかによっても異なる。
具体的には、デコード可能フレーム数は、例えば、予め設定されて(フレーム数が直接指定されて)いてもよいし、上位アプリケーションにより指定されるようになされていてもよい。例えば、デコード可能フレーム数は、デコード処理に用いられるデコーダやCPUの数やクロック周波数によって、設定されるようにしてもよい。このような場合、ビットストリーム解析部332は、デコード可能フレーム数を算出する必要は無く、指定されるデコード可能フレーム数を取得するようにすればよい。
これに対して、例えば、上位アプリケーションからデコード処理に与えることができる時間配分T(例えば、20ms)のみが指定された場合には、ビットストリーム解析部332は、デコード可能フレーム数を算出する必要がある。
また、このとき、ビットストリーム解析部332は、変換するPピクチャができるだけ連続しないようにIピクチャに変換されるPピクチャを選択するようにすると、デコード可能フレーム数に対するIピクチャに変換されるPピクチャの数が少なくなるため、好適である。
図24を参照して、1GOP15フレーム、Pピクチャの数N=4の場合(IBBPBBPBBPBBPBB)におけるPI変換のバリエーションについて説明する。
例えば、PI変換を行わなかった場合、有効なシーケンス(Bピクチャを除くIピクチャおよびPピクチャの5フレームのピクチャタイプ)は、IPPPPとなり、最長デコード時間は、Open GOPであり、かつ、ストリームの先頭のGOPではない場合の、ストリームオーダにおいてIピクチャに続く2枚のBピクチャ(例えば、図20や図21におけるB0B1)をデコードする場合の7フレーム分のデコードにかかる時間となる。
そして、上述したように、4枚のPピクチャをすべてPI変換した場合、有効なシーケンスは、IIIIIとなり、最長デコード時間は、いずれかのBピクチャをデコードする場合の3フレーム分のデコードにかかる時間となる。
これに対して、変換する対象のPピクチャを全て変換するのでなく、一定数に減らすことにより、ランダムデコードの最長デコード時間が、図24に示されるように変動する。すなわち、4枚のPピクチャのうちの1枚のみをPI変換した場合、変換するPピクチャができるだけ連続しないようにIピクチャに変換されるPピクチャを選択することにより、有効なシーケンスは、IPIPPまたはIPPIPとなり、最長デコード時間は、5フレーム分のデコードにかかる時間となる。また、4枚のPピクチャのうちの2枚のみをPI変換した場合、変換するPピクチャができるだけ連続しないようにIピクチャに変換されるPピクチャを選択することにより、有効なシーケンスは、IPIIP、IIPIP、または、IPIPIとなり、最長デコード時間は、4フレーム分のデコードにかかる時間となる。
なお、4枚のPピクチャのうちの1枚のみをPI変換した場合、および、4枚のPピクチャのうちの2枚のみをPI変換した場合において、最長デコード時間が短くなるのは、変換するPピクチャができるだけ連続しないようにIピクチャに変換されるPピクチャを選択した場合、すなわち、図24に示される有効なシーケンスにおける場合のみであり、例えば2ピクチャをPI変換する場合であれば、変換後のシーケンスにおいてPピクチャが2フレーム連続しないように変換されるPピクチャを選んだ場合であり、1ピクチャをPI変換する場合であれば、変換後のシーケンスにおいてPピクチャが3フレーム連続しないように変換されるPピクチャを選んだ場合である。
次に、図25乃至図29を参照して、変換する対象のPピクチャを全て変換するのでなく、一定数に減らした場合の具体的なデコード処理について説明する。
図25を参照して、4枚のPピクチャのうちの1枚のみをPI変換し、有効シーケンスをIPIPPとした場合のデコード処理について説明する。
図25Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP8ピクチャをIピクチャに変換して、プロクシファイルとしてI8ピクチャを用意した場合、デコード時間が最長になるのはB0またはB1をデコードする場合であり、そのときにデコードする必要があるのは、図25Bに示されるように、参照画像であるI8,P11,P14,I2に加えて、B0またはB1(図25Bにおいては、B0と図示されている)の5ピクチャ分である。
次に、図26を参照して、同様に4枚のPピクチャのうちの1枚のみをPI変換し、有効シーケンスをIPPIPとした場合のデコード処理について説明する。
図26Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP11ピクチャをIピクチャに変換して、プロクシファイルとしてI11ピクチャを用意した場合、デコード時間が最長になるのはB9またはB10をデコードする場合であり、そのときにデコードする必要があるのは、図26Bに示されるように、参照画像であるI2,P5,P8,I11に加えて、B9またはB10(図26Bにおいては、B9と図示されている)の5ピクチャ分である。
なお、4枚のPピクチャのうちの1枚のみをPI変換した全ての場合において最長デコード時間が5ピクチャ分になるわけでない。すなわち、最長デコード時間が5ピクチャ分になるのは、図25および図26に示されるように、変換後のPピクチャが3枚連続しないようにした場合のみである。それ以外の場合、例えば、変換後のシーケンスがIIPPPとなった場合やIPPPIとなった場合などは、最長デコード時間が6ピクチャ分必要なケースが発生してしまい、PI変換の効果が減少してしまう。
次に、図27を参照して、4枚のPピクチャのうちの2枚をPI変換し、有効シーケンスをIPIIPとした場合のデコード処理について説明する。
図27Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP8ピクチャおよびP11ピクチャをIピクチャに変換して、プロクシファイルとしてI8ピクチャおよびI11ピクチャを用意した場合、デコード時間が最長になるのはB6またはB7、もしくは、B0またはB1をデコードする場合であり、そのときにデコードする必要があるのは、図27Bに示されるように、参照画像であるI2,P5,I8に加えて、B6またはB7(図27Bにおいては、B6と図示されている)の4ピクチャ分となるか、参照画像であるI11,P14,I2に加えて、B0またはB1(図27Bにおいては、B0と図示されている)の4ピクチャ分となる。
同様に、図28は、4枚のPピクチャのうちの2枚をPI変換し、有効シーケンスをIIPIPとした場合のデコード処理について説明するための図であり、図29は、4枚のPピクチャのうちの2枚をPI変換し、有効シーケンスをIPIPIとした場合のデコード処理について説明するための図である。
図28Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP5ピクチャおよびP11ピクチャをIピクチャに変換して、プロクシファイルとしてI5ピクチャおよびI11ピクチャを用意した場合、デコード時間が最長になるのはB9またはB10、もしくは、B0またはB1をデコードする場合であり、そのときにデコードする必要があるのは、図28Bに示されるように、参照画像であるI5,P8,I11に加えて、B9またはB10(図28Bにおいては、B9と図示されている)の4ピクチャ分となるか、参照画像であるI11,P14,I2に加えて、B0またはB1(図28Bにおいては、B0と図示されている)の4ピクチャ分となる。
また、図29Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP8ピクチャおよびP14ピクチャをIピクチャに変換して、プロクシファイルとしてI8ピクチャおよびI14ピクチャを用意した場合、デコード時間が最長になるのはB6またはB7、もしくは、B12またはB13をデコードする場合であり、そのときにデコードする必要があるのは、図29Bに示されるように、参照画像であるI2,P5,I8に加えて、B6またはB7(図29Bにおいては、B6と図示されている)の4ピクチャ分となるか、参照画像であるI8,P11,I14に加えて、B12またはB13(図29Bにおいては、B12と図示されている)の4ピクチャ分となる。
なお、この場合においても同様に、4枚のPピクチャのうちの2枚をPI変換した全ての場合において最長デコード時間が4ピクチャ分になるわけでない。すなわち、最長デコード時間が4ピクチャ分になるのは、図27乃至図29に示されるように、変換後のPピクチャが2枚連続しないようにした場合のみである。それ以外の場合、例えば、変換後のシーケンスがIIPPIとなった場合やIPPIIとなった場合などは、PI変換の効果が減少してしまう。
また、図25乃至図29においては、IピクチャまたはPピクチャの間のBピクチャの数がそれぞれ2である場合について説明したが、IピクチャまたはPピクチャの間のBピクチャの数が2以上のいかなる数であっても、連続するBピクチャのデコードのために必要となる参照画像の枚数は同一であるので、それぞれの場合における最長デコード時間は同様であることは言うまでもない。
次に、図30のフローチャートを参照して、変換するPピクチャの設定処理について説明する。
ステップS281において、図15を用いて説明した場合と同様のデコード可能フレーム数算出処理が実行されて、デコード可能フレーム数が求められる。
なお、変換装置311のビットストリーム解析部332は、例えば、デコード可能フレーム数が、予め定められていたり、上位アプリケーションから指定されるようになされている場合、ステップS281においてデコード可能フレーム数算出処理を実行することなく、予め定められている、または、上位アプリケーションから指定されるデコード可能フレーム数を取得するようにすればよい。
ステップS282において、変換装置311のビットストリーム解析部332は、ビットストリーム取得部331により取得されるビットストリームの1GOP中のPピクチャの数をN、デコード可能フレーム数をXとして、N+3>Xであるか否かを判断する。
ステップS282において、N+3>Xではないと判断された場合、ステップS283において、ビットストリーム解析部332は、PI変換を行わないものとして、処理が終了される。
N+3≦Xである場合、PI変換を行わないビットストリームにおいて最もデコード時間がかかってしまうフレームのデコード処理のために必要となる時間は、デコード可能フレーム数Xをデコードするために必要となる時間よりも短い。すなわち、このような場合は、PI変換を行う必要がない。
ステップS282において、N+3>Xであると判断された場合、換言すれば、PI変換を行わないビットストリームにおいて最もデコード時間がかかってしまうフレームのデコード処理のために必要となる時間は、デコード可能フレーム数Xをデコードするために必要となる時間よりも長いと判断された場合、ステップS284において、ビットストリーム解析部332は、PI変換後のシーケンスにおいてデコード処理が間に合うPピクチャの最大連続数であるPIスキップ数Sを、仮に、X−3とする。
ステップS285において、ビットストリーム解析部332は、S=X−3である場合において、N/S>1であるか否かを判断する。
ステップS285において、N/S>1であると判断された場合、ステップS286において、ビットストリーム解析部332は、PIスキップ数Sを、X−3とする。
ステップS285において、N/S>1ではないと判断された場合、ステップS287において、ビットストリーム解析部332は、PIスキップ数Sを、N/2(ただし、整数でない場合は、近い値の整数)とする。
ステップS286またはステップS287の処理の終了後、ステップS288において、ビットストリーム解析部332は、PIスキップ数Sを基に、変換するPピクチャを設定し、処理が終了される。
このような処理により、デコード可能フレーム数と1GOP中のPピクチャの数を基に、PI変換後のシーケンスにおいてデコード処理が間に合うPピクチャの最大連続数であるPIスキップ数が求められ、これを基に、Iピクチャに変換されるPピクチャが設定される。このようにして、PI変換されるPピクチャの数をできるだけ減少させた場合、すべてのPピクチャをIピクチャに返還する場合と比較して、プロクシファイルを生成するための時間を削減することが可能となる。
図31を用いて、Iピクチャに変換されるPピクチャの具体的な設定の例、すなわち、1GOPに含まれるPピクチャの数NがN=11である場合におけるデコード可能フレーム数Xと、PIスキップ数Sとの関係、および、Iピクチャに変換されるPピクチャの設定について説明する。
例えば、X=4,S=1の場合、PI変換後のPピクチャは連続して存在してはいけないため、PI変換後のシーケンスは、IPIPIPIPIPIPとなる。また、例えば、X=5,S=2の場合、PI変換後のPピクチャは2枚しか連続させることができないため、PI変換後のシーケンスは、IPPIPPIPPIPPとなる。また、例えば、X=6,S=3の場合、PI変換後のPピクチャは3つまでしか連続させることができないため、PI変換後のシーケンスは、IPPPIPPPIPPPとなる。
また、例えば、X=7,S=4の場合、PI変換後のPピクチャは4枚まで連続させることができるため、PI変換後のシーケンスは、単純には、IPPPPIPPPPIPとしてもよく、Pピクチャの連続数が4枚以下で、かつ、Iピクチャへの変換数が2枚以下であれば、これ以外のシーケンス(例えば、IPPPPIPPPIPPなど)としてもよい。ただし、連続するPピクチャの数は、できるだけ少ないほうが好ましいため、X=7,S=4における場合は、X=6,S=3における場合と同様にして、有効シーケンスをIPPPIPPPIPPPとしたほうが、PI変換されるピクチャ数が同一であって最長のデコード時間をより短縮することができ、好適である。
また、例えば、X=8,S=5の場合、PI変換後のPピクチャは5枚まで連続させることができるため、PI変換後のシーケンスは、IPPPPPIPPPPPとなる。更に、例えば、X=9,S=5の場合、上述したステップS285において、N/S>1であると判断されるので、ビットストリーム解析部332は、PIスキップ数Sを、N/2(ただし、整数でない場合は、近い値の整数)よりS=5とする。なお、14(=N+3)>X≧10の場合においても、上述したステップS285においてN/S>1であると判断されるので、ビットストリーム解析部332は、PIスキップ数SをS=5とする。このとき、PI変換後のシーケンスは、IPPPPPIPPPPPとなる。
また、X≧14(=N+3)である場合、PI変換の必要はないと判断される。
次に、図32のフローチャートを参照して、図16を用いて説明した変換装置311、または、図9および図22を用いて説明したパーソナルコンピュータのCPU221において実行されるプロクシファイル生成処理2について説明する。
ステップS331乃至ステップS336において、図23を用いて説明したステップS221乃至ステップS226と同様の処理が実行される。
すなわち、ビットストリーム取得部331(CPU221)は、オリジナルのビットストリームを取得し、ビットストリーム解析部332(CPU221のビットストリーム解析部332)に供給する。ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、供給されたオリジナルのビットストリームのうちの1ピクチャを読み込んで解析する。すなわち、ビットストリーム解析部332は、図17を用いて説明したインデックスファイルのうちの対応するピクチャの情報を取得する。
そして、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、読み込んだピクチャは、IピクチャまたはPピクチャであるか否かを判断する。IピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、処理は、後述するステップS341に進む。
IピクチャまたはPピクチャであると判断された場合、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、読み込んだIピクチャまたはPピクチャをデコーダ334に供給する。デコーダ334は、供給されたIピクチャまたはPピクチャをデコードして、参照画像用メモリ335に格納する。
そして、デコーダ334(CPU221のデコーダ334)は、デコードされたピクチャは、Pピクチャであるか否かを判断する。デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、処理は、後述するステップS341に進む。
ステップS336において、デコードされたピクチャは、Pピクチャであると判断された場合、ステップS337において、デコーダ334(CPU221のデコーダ334)は、ビットストリーム解析部332の制御に基づいて、そのPピクチャは、上述した、変換するPピクチャの設定処理においてIピクチャへ変換されると設定された、変換の必要なPピクチャであるか否かを判断する。ステップS337において、変換の必要なPピクチャではないと判断された場合、処理は、後述するステップS341に進む。
ステップS337において、変換の必要なPピクチャであると判断された場合、ステップS338において、デコーダ334(CPU221のデコーダ334)は、デコードしたPピクチャに対応する非圧縮画像フレームをエンコーダ336(CPU221のエンコーダ336)に供給する。エンコーダ336は、供給された非圧縮画像フレームをIピクチャとしてエンコードし、プロクシファイル記憶部337(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337)に供給する。
ステップS339において、プロクシファイル記憶部337(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部337)は、エンコードされて生成されたIピクチャにより構成されるプロクシファイルを記憶する。
ステップS340において、エンコーダ336は、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とのインデックス情報、すなわち、プロクシインデックスを、プロクシインデックス記憶部338に供給する。プロクシインデックス記憶部338は、該当するピクチャのプロクシインデックスを記憶する。
ステップS334において、読み込んだピクチャはIピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、ステップS336において、デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、ステップS337において、変換の必要なPピクチャではないと判断された場合、または、ステップS340の処理の終了後、ステップS341において、ビットストリーム解析部332(CPU221)は、全てのピクチャの処理が終了したか否かを判断する。ステップS341において、全てのピクチャの処理が終了していないと判断された場合、処理は、ステップS332に戻り、それ以降の処理が繰り返される。
ステップS341において、全てのピクチャの処理が終了したと判断された場合、ステップS342において、ビットストリーム解析部332(CPU221のビットストリーム解析部332)は、それぞれのピクチャの解析結果と、プロクシインデックス記憶部338に記憶されている、エンコーダ336によってIピクチャとしてエンコードされたフレーム、すなわち、PピクチャからIピクチャに変換されたフレームのピクチャサイズ(Proxy File Picture Size)とアドレス(Proxy File Address)を基に、図17を用いて説明したインデックスファイルを生成し、インデックスファイル記憶部333(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部333)に供給して記憶させ、処理が終了される。
このような処理により、オリジナルのビットストリームにおけるPピクチャのうち、Iピクチャへ変換されると設定されたPピクチャがデコードされたのち、Iピクチャとしてエンコードされることによって生成されたIピクチャによるプロクシファイルと、オリジナルのビットストリームおよびプロクシファイルに含まれるIピクチャ(オリジナルのビットストリームではPピクチャ)に関する情報が記載されたインデックスファイルとが生成される。
なお、ここでは、プロクシファイルは、図13のステップS129の処理において代替表示が実行される場合に利用可能であるものとして説明したが、例えば、図11のステップS44または図13のステップS124の処理において、近傍のIピクチャおよびPピクチャを用いて、または、Iピクチャのみを用いてデコード処理が実行されると決定された場合にも、プロクシファイルは利用可能であることは言うまでもない。更に、代替表示が実行されずに、参照画像のデコードが実行されて、所望のフレームが再生出力されるような場合も、適宜、プロクシファイルを利用することにより、デコードにかかる時間が短縮されて、スクラブ再生などにおける高速デコード処理が可能となる。
なお、ここでは、主に、Iピクチャ、Pピクチャ、および、BピクチャからなるMPEG2 LongGOPにおける場合について説明したが、本発明は、フレーム間参照によりデコードされた圧縮符号化データを再生する場合に適用可能である。
上述した一連の処理は、上述したように、ハードウエアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図9に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア206により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM222や、HDD226に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
21 操作入力取得部, 24 インデックス管理部, 31 ベースバンド画像データ用メモリ, 32 ベースバンド信号処理部, 61 再生装置, 71 GUI表示制御部, 72 デコード制御部, 73 ベースバンドメモリ管理部, 74 ストリーム供給制御部, 75 参照画像指示部, 76 デコード処理部, 77 ベースバンド画像データ用メモリ制御部, 121 スクラブバー, 131 タイムライン, 201 パーソナルコンピュータ, 202 マウス, 203 キーボード, 204 記憶装置, 205 外部映像記録再生装置, 221 CPU, 222 ROM, 223 RAM, 226 HDD, 229 ディスプレイ, 251 GUI制御部, 252 ストリーム供給制御部, 253 参照画像指示部