以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面のプログラムまたは情報処理方法は、ビットストリームのうち、前方向予測符号化フレーム(例えば、Pピクチャ)を復号する前方向予測符号化フレーム復号ステップ(例えば、図11のステップS5の処理)と、前方向予測符号化フレーム復号ステップの処理により復号された前方向予測符号化フレームをフレーム内符号化する符号化ステップ(例えば、図11のステップS7の処理)と、ビットストリームを解析する解析ステップ(例えば、図11のステップS3の処理)と、符号化ステップの処理により生成された符号化データに関する符号化情報(例えば、図3のProxy File Picture Size、Proxy File Address)と解析ステップの処理による解析結果とを基に、ビットストリームを復号するために利用可能な属性情報(例えば、インデックスファイル)を生成する属性情報生成ステップ(例えば、図11のステップS11の処理)とを含む処理をコンピュータに実行させる。
符号化ステップの処理により符号化された符号化データ、および、属性情報生成ステップの処理により生成された属性情報を基に、ビットストリームを復号するビットストリーム復号ステップ(例えば、図12のステップS43乃至ステップS50の処理)を更に含むことができる。
ビットストリーム復号ステップの処理は、復号されるフレームの符号化タイプを判断する判断ステップ(例えば、図12のステップS43またはステップS44の処理)と、判断ステップの処理により、復号されるフレームがビットストリームのうちのフレーム内符号化フレーム(例えば、Iピクチャ)であると判断された場合、ビットストリームのうちの復号されるフレーム内符号化フレームを復号する第1の復号ステップ(図12のステップS46の処理)と、判断ステップの処理により、復号されるフレームがビットストリームのうちの前方向予測符号化フレーム(例えば、Pピクチャ)であると判断された場合、符号化ステップの処理により符号化された符号化データのうち、復号される前方向予測符号化フレームに対応する符号化データを復号する第2の復号ステップ(図12のステップS45の処理)と、判断ステップの処理により、復号されるフレームがビットストリームのうちの両方向予測符号化フレーム(例えば、Bピクチャ)であると判断された場合、両方向予測符号化フレームの復号に必要なビットストリームのうちのフレーム内符号化フレームを復号して参照画像を生成するか、または、符号化ステップの処理により符号化された符号化データのうち、両方向予測符号化フレームの復号に必要なビットストリームの前方向予測符号化フレームに対応する符号化データを復号して参照画像を生成する参照画像生成ステップ(図12のステップS48の処理)と、参照画像生成ステップの処理により生成された参照画像を参照して、ビットストリームのうちの両方向予測符号化フレームを復号する第3の復号ステップ(図12のステップS49の処理)とを含むことができる。
符号化ステップの処理では、前方向予測符号化フレーム復号ステップの処理により復号された前方向予測符号化フレームを、固定レートのフレーム内符号化データに符号化する(例えば、図4に示されるようにして符号化する)ことができる。
符号化ステップの処理では、前方向予測符号化フレーム復号ステップの処理により復号された前方向予測符号化フレームを、変動レートのフレーム内符号化データに符号化する(例えば、図5に示されるようにして符号化する)ことができる。
前方向予測符号化フレーム復号ステップの処理では、ビットストリームのうち、所定数の前方向予測符号化フレームを選択的に(例えば、図14乃至図18を用いて説明したように)復号し、符号化ステップの処理では、前方向予測符号化フレーム復号ステップの処理により復号された所定数の前方向予測符号化フレームをフレーム内符号化することができる。
1フレームに対応する画像の表示内に復号処理を実行することが可能なフレーム数(例えば、デコード可能フレーム数)と、前方向予測符号化フレームの数を基に、前方向予測符号化フレーム復号ステップの処理により選択的に復号される所定数の前方向予測符号化フレームを設定する設定ステップ(例えば、図19に示される処理)を更に含むことができる。
1フレームに対応する画像の表示時間内に復号処理を実行することが可能なフレーム数(例えば、デコード可能フレーム数)を算出する算出ステップ(例えば、図19のステップS81の処理)を更に含むことができる。
前方向予測符号化フレーム復号ステップの処理では、ビットストリームのうち、所定数の前方向予測符号化フレームの連続数が最も小さくなるように(例えば、図14乃至図18を用いて説明したように)、復号される前方向予測符号化フレームを所定数選択的に復号することができる。
本発明の一側面の情報処理装置は、ビットストリームを復号するために利用可能な情報を生成する情報処理装置(たとえば、図1の再生装置1または図9のパーソナルコンピュータ201)であって、ビットストリームのうち、前方向予測符号化フレーム(Pピクチャ)を復号する前方向予測符号化フレーム復号手段(例えば、図2のデコーダ34)と、前方向予測符号化フレーム復号手段により復号された前方向予測符号化フレームをフレーム内符号化する符号化手段(例えば、図2のエンコーダ36)と、ビットストリームを解析し、ビットストリームの解析結果および符号化手段により生成された符号化データに関する符号化情報(例えば、図3のProxy File Picture Size、Proxy File Address)を基に、ビットストリームを復号するために利用可能な属性情報(例えば、インデックスファイル)を生成する属性情報生成手段(例えば、図2のビットストリーム解析部32)とを備える。
符号化手段により生成された符号化データ、および、属性情報生成手段により生成された属性情報を基に、ビットストリームを復号するビットストリーム復号手段(例えば、図6の再生部12)を更に備えることができる。
以下、図を参照して、本発明の実施の形態について説明する。
図1に、本発明を適用した再生装置1の構成例を示す。
再生装置1は、変換部11と再生部12とにより構成されている。
変換部11は、例えば、Mpeg2 LongGOPストリームなどのフレーム間参照符号化によって符号化されたビットストリーム(Iピクチャ(フレーム内符号化フレーム)、Pピクチャ(前方向予測符号化フレーム)、および、Bピクチャ(両方向予測符号化フレーム)により構成されているビットストリーム)の供給を受け、再生部12においてデコード(復号)される場合に参照されるインデックスファイルを生成するとともに、供給されたビットストリームのうちのPピクチャをエンコード(符号化)してIピクチャに変換することによってプロクシファイルを生成し、インデックスファイルおよびプロクシファイルを再生部12に供給する。変換部11の詳細については、図2を用いて後述する。
再生部12は、Iピクチャ、Pピクチャ、および、Bピクチャが含まれているビットストリームの供給を受けるとともに、変換部11からインデックスファイルおよびプロクシファイルの供給を受け、ユーザの操作入力に基づいて、ビットストリームをデコードし、ユーザの所望の位置から再生する。再生部12の詳細については、図6を用いて後述する。
図2は、図1の変換部11の更に詳細な構成例を示すブロック図である。
ビットストリーム取得部31は、Iピクチャ、Pピクチャ、および、Bピクチャが含まれているビットストリームの供給を受け、ビットストリーム解析部32に供給する。
ビットストリーム解析部32は、Iピクチャ、Pピクチャ、および、Bピクチャが含まれているビットストリームの供給を受け、このうち、IピクチャおよびPピクチャを、デコーダ34に供給する。
また、ビットストリーム解析部32は、デコーダ34、エンコーダ36、および、プロクシファイル記憶部37を制御する。また、ビットストリーム解析部32は、供給されたビットストリームを解析するとともに、エンコーダ36により実行される処理の結果、および、後述するプロクシインデックス記憶部38に記憶される情報を解析し、図3に示されるインデックス(index)ファイルを生成し、インデックスファイル記憶部33に供給する。
図3に示されるインデックスファイルには、ビットストリーム取得部31により取得され、ビットストリーム解析部32に供給されたオリジナルのビットストリームをデコードする場合に参照される情報が記載されている。具体的には、インデックスファイルには、ディスプレイオーダ(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)が記載されている。
更に、インデックスファイルには、プロクシファイルに含まれている、オリジナルストリームにおけるPピクチャに対応するフレームであってエンコーダ36によりエンコードされたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とが記載されている。これらの情報は、後述するプロクシインデックス記憶部38に記憶されている。
プロクシファイルの詳細については後述する。
インデックスファイル記憶部33は、ビットストリーム解析部32から供給される、図3を用いて説明したインデックスファイルを記憶し、再生部12に出力する。
デコーダ34は、ビットストリーム解析部32から供給されたIピクチャおよびPピクチャをデコードして、非圧縮ベースバンド画像を生成し、Pピクチャに対応する非圧縮ベースバンド画像データをエンコーダ36に供給する。このとき、デコーダ34は、生成された非圧縮ベースバンド画像が、その後デコードされるフレームの参照画像として必要となる場合、生成された非圧縮ベースバンド画像を参照画像用メモリ35にも供給して記憶させ、Pピクチャをデコードする場合、参照画像用メモリ35に記憶されている参照用画像を適宜参照する。
エンコーダ36は、供給されたPピクチャに対応する非圧縮ベースバンド画像データを、フレーム内符号化によりIピクチャとしてエンコードし、生成されたIピクチャをプロクシファイル記憶部37に供給する。また、エンコーダ36は、圧縮処理時(Iピクチャ生成時)のパラメータとして、例えば、圧縮レートなどを設定することができる。
図4を参照して、エンコーダ36から出力されるIピクチャのビットレートを固定にする場合について説明する。
エンコーダ36は、出力されるIピクチャのビットレートを固定にする場合、例えば、プロクシファイル記憶部37の記憶容量などに応じた所定のビットレートとなるように、Iピクチャを生成する。一般的に、Iピクチャよりも、前方参照を使ったPピクチャの方が、情報量が少ないので、Pピクチャを再圧縮してIピクチャにエンコードする場合のビットレートは、変換前(Pピクチャ)のビットレートよりも大きなビットレートとする方が、画質が維持しやすく、好適である。また、このビットレートを、ユーザにより設定可能なようにしても良い。
次に、図5を参照して、エンコーダ36から出力されるIピクチャのビットレートを変動とする場合について説明する。
エンコーダ36は、ビットストリーム解析部32、または、デコーダ34から、オリジナルのビットストリームのIピクチャ(GOP単位で先頭のIピクチャ)のレートを取得し、その値に応じたビットレートとなるように、Iピクチャを生成する。一般に、オリジナルの圧縮ストリームのIピクチャのビットレートは、そのGOPにおける映像の複雑さを反映している。したがって、Pピクチャから変換されて生成されるIピクチャのビットレートも、GOPにおける映像の複雑さを反映している先頭のIピクチャのビットレートに応じて変動させることにより、画質の劣化を防止することが可能となる。
そして、プロクシファイル記憶部37は、エンコーダ36から供給された、図4または図5を用いて説明したようにして生成され、エンコーダ36から供給されたIピクチャのデータを基に、プロクシファイル(proxy、すなわち、代理データファイル)を生成して記憶し、再生部12に出力する。
プロクシインデックス記憶部38は、エンコーダ36から、供給されたPピクチャに対応する非圧縮ベースバンド画像データがフレーム内符号化によりIピクチャとしてエンコードされてIピクチャが生成されるごとに、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とをプロクシインデックスとして取得して記憶し、ビットストリーム解析部32に供給する。
図6は、図1の再生部12の更に詳細な構成例を示すブロック図である。
再生部12は、操作入力取得部51、デコード処理部52、および、再生映像出力部53により構成されている。
操作入力取得部51は、ユーザの操作入力を受け、ユーザの操作入力を示す信号を、デコード処理部52に供給する。
デコード処理部52は、インデックスファイル取得部61、デコード制御部62、ビットストリーム取得部63、プロクシファイル取得部64、スイッチ65、デコーダ66、および、参照画像用メモリ67で構成され、操作入力取得部51から供給されるユーザの操作入力に基づいて、デコード処理を実行し、再生映像出力部53に供給する。
インデックスファイル取得部61は、変換部11のインデックスファイル記憶部33から出力されるインデックスファイルを取得し、デコード制御部62に供給する。
ビットストリーム取得部63は、再生装置1に供給されたオリジナルのビットストリームを取得して、操作入力取得部51から供給されるユーザの操作入力に基づいて、再生出力されるフレーム、または、再生出力されるフレームのデコードに必要なフレームを、スイッチ65に出力する。
プロクシファイル取得部64は、変換部11のプロクシファイル記憶部37から出力されたプロクシファイル、すなわち、Pピクチャから変換されて生成されたIピクチャのデータを取得し、操作入力取得部51から供給されるユーザの操作入力に基づいて、再生出力されるフレーム、または、再生出力されるフレームのデコードに必要なフレームを、スイッチ65に出力する。
スイッチ65は、デコード制御部62の制御に基づいて、ビットストリーム取得部63から供給されたオリジナルのビットストリーム、または、プロクシファイル取得部64から供給されたPピクチャから変換されて生成されたIピクチャのいずれかをデコーダ66に供給する。
デコード制御部62は、インデックスファイル取得部61から供給されたインデックスファイルを基に、スイッチ65を切り替えて、デコーダ66に供給されるビットストリームを制御する。具体的には、デコード制御部62は、再生出力したいフレームが、オリジナルのビットストリームにおけるIピクチャである場合、ビットストリーム取得部63により供給される、再生装置1に供給されたオリジナルのビットストリームのIピクチャがデコーダ66に供給されるようにスイッチ65を制御する。また、デコード制御部62は、再生出力したいフレームが、オリジナルのビットストリームにおけるPピクチャである場合、プロクシファイル取得部64から供給される、Pピクチャから変換されて生成されたIピクチャのデータがデコーダ66に供給されるようにスイッチ65を制御する。また、デコード制御部62は、再生出力したいフレームが、オリジナルのビットストリームにおけるBピクチャである場合、プロクシファイル取得部64から供給される、Pピクチャから変換されて生成されたIピクチャのデータがデコーダ66に供給されるようにスイッチ65を制御し、これらがデコードされて参照画像が生成された後、オリジナルのビットストリームのBピクチャがデコーダ66に供給されるようにスイッチ65を制御する。
デコーダ66は、スイッチ65から供給された圧縮フレーム画像データをデコードして、非圧縮ベースバンド画像を生成し、再生映像出力部53に供給する。このとき、デコーダ34は、生成された非圧縮ベースバンド画像が、その後デコードされるフレームの参照画像として必要となる場合、生成された非圧縮ベースバンド画像を参照画像用メモリ67にも供給して記憶させ、PピクチャまたはBピクチャをデコードする場合、参照画像用メモリ67に記憶されている参照用画像を適宜参照する。
再生映像出力部53は、デコーダ66から供給された、デコード済みの非圧縮の画像データ(ベースバンド画像データ)に対して、必要に応じて、例えば、色補正やサイズ補正、スロー再生時におけるフィールドコントロールなど、デコードされた画像が正しく再生出力されるように各種補正を行って、補正後の出力ベースバンド画像データを出力する。
次に、図7を参照して、再生部12において、オリジナルのビットストリームでのPピクチャをデコードする場合について説明する。
例えば、Mpeg2 LongGOPのビットストリームにおいて、P11フレームを再生出力する場合、従来においては、図7Aに示されるように、P11をふくむGOPの先頭のIピクチャであるI2フレームをデコードし、次いで、P5,P8フレームをデコードして参照フレーム画像データを生成した後、目的となるP11フレームをデコードすることができるようになされていた。
これに対して、本発明を適用した再生部12においてP11フレームを再生出力する場合、図7Bに示されるように、P11フレームに対応するフレーム内圧縮されたIピクチャであるI11フレームをプロクシファイルから抽出してデコードし、再生出力すればよい。
したがって、本発明を適用した再生部12においてP11フレームを再生出力する場合、従来のデコード回数4回と比較して、デコード回数は1回のみとなり、高速に指定されたフレームを再生出力することができる。
次に、図8を参照して、再生部12において、オリジナルのビットストリームでのBピクチャをデコードする場合について説明する。
例えば、Mpeg2 LongGOPのビットストリームにおいて、B12フレームを再生出力する場合、従来においては、図8Aに示されるように、B12をふくむGOPの先頭のIピクチャであるI2フレームをデコードし、次いで、P5,P8,P11,P14フレームをデコードして参照フレーム画像データを生成した後、目的となるB12フレームをデコードすることができるようになされていた。
これに対して、本発明を適用した再生部12においてB12フレームを再生出力する場合、図8Bに示されるように、B12フレームの参照画像として必要なP11フレームおよびP14フレームに対応する、フレーム内圧縮されたIピクチャであるI11フレームおよびI14フレームをデコードし、これらを参照画像として目的となるB12フレームをデコードして再生出力すればよい。
したがって、本発明を適用した再生部12においてB12フレームを再生出力する場合、従来のデコード回数6回と比較して、デコード回数は3回となり、高速に指定されたフレームを再生出力することができる。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、再生装置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に示す。
なお、図2、図6または図9における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
CPU221が所定のプログラムを実行することによって、パーソナルコンピュータ201は、図2のビットストリーム解析部32、デコーダ34、および、エンコーダ36、並びに、図6のデコード制御部62、スイッチ65、デコーダ66、および、再生映像出力部53と同等の機能を有する。
CPU221は、マウス202またはキーボード203などの入力デバイスによって入力されたユーザの操作を基に、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するビットストリーム記憶部281に記録されているビットストリームのうちのIピクチャおよびPピクチャを、参照画像用メモリ35に対応するRAM223の領域を利用してデコードし、PピクチャのみをIピクチャとしてエンコードすることにより、プロクシファイルを生成して、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部37に記憶させる。
更に、CPU221は、Pピクチャに対応する非圧縮ベースバンド画像データがフレーム内符号化によりIピクチャとしてエンコードされてIピクチャが生成されるごとに、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とを、プロクシインデックスとしてプロクシインデックス記憶部38に対応するRAM223の領域に保存させるとともに、ビットストリームを解析し、プロクシインデックス記憶部38に保存されていたプロクシインデックスを取得して、図3を用いて説明したインデックスファイルを生成し、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部33に記憶させる。
そして、CPU221は、マウス202またはキーボード203などの入力デバイスによって入力されたユーザの操作を基に、再生出力させるフレームの指令を受け、記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部33に記憶されているインデックスファイルを参照して、図7および図8を用いて説明した場合と同様にして、参照画像用メモリ67に対応するRAM223の領域を利用してデコードを実行する。
具体的には、CPU221のデコード制御部62は、再生出力されるフレームがオリジナルのビットストリームにおけるIピクチャである場合、ビットストリーム記憶部381に記憶されているビットストリームのうちの対応するIピクチャを、デコーダ66に供給してデコードさせる。そして、CPU221のデコード制御部62は、再生出力されるフレームがオリジナルのビットストリームにおけるPピクチャである場合、プロクシファイル記憶部37に記憶されているプロクシファイルのうちの対応するIピクチャを、デコーダ66に供給してデコードさせる。また、CPU221のデコード制御部62は、再生出力されるフレームがオリジナルのビットストリームにおけるBピクチャである場合、ビットストリーム記憶部381に記憶されているビットストリームのうち再生されるBピクチャの前後のIピクチャ、または、プロクシファイル記憶部37に記憶されているプロクシファイルのうち再生されるBピクチャの前後のPピクチャに対応するIピクチャを、デコーダ66に供給してデコードさせて、参照画像用メモリ67に対応するRAM223の領域に記憶させ、それらを参照画像として、オリジナルのビットストリームにおける再生されるBピクチャをデコーダ66に供給してデコードさせる。
そして、デコードされたフレーム画像データは、CPU221の再生映像出力部53により各種処理が施されて、ディスプレイ229に出力されて表示される。
次に、図11のフローチャートを参照して、図1の再生装置1のうちの図2を用いて説明した変換部11、または、図9および図10を用いて説明したパーソナルコンピュータのCPU221において実行されるプロクシファイル生成処理1について説明する。
ステップS1において、ビットストリーム取得部31(CPU221)は、オリジナルのビットストリームを取得し、ビットストリーム解析部32(CPU221のビットストリーム解析部32)に供給する。
ステップS2において、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、供給されたオリジナルのビットストリームのうちの1ピクチャを読み込む。
ステップS3において、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、読み込んだピクチャを解析する。すなわち、ビットストリーム解析部32は、図3を用いて説明したインデックスファイルのうちの対応するピクチャの情報を取得する。
ステップS4において、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、読み込んだピクチャは、IピクチャまたはPピクチャであるか否かを判断する。ステップS4において、IピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、処理は、後述するステップS10に進む。
ステップS4において、IピクチャまたはPピクチャであると判断された場合、ステップS5において、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、読み込んだIピクチャまたはPピクチャをデコーダ34に供給する。デコーダ34は、供給されたIピクチャまたはPピクチャをデコードして、参照画像用メモリ35に格納する。
ステップS6において、デコーダ34(CPU221のデコーダ34)は、デコードされたピクチャは、Pピクチャであるか否かを判断する。ステップS6において、デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、処理は、後述するステップS10に進む。
ステップS6において、デコードされたピクチャは、Pピクチャであると判断された場合、ステップS7において、デコーダ34(CPU221のデコーダ34)は、デコードしたPピクチャに対応する非圧縮画像フレームをエンコーダ36(CPU221のエンコーダ36)に供給する。エンコーダ36は、供給された非圧縮画像フレームをIピクチャとしてエンコードし、プロクシファイル記憶部37(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部37)に供給する。
ステップS8において、プロクシファイル記憶部37(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部37)は、エンコードされて生成されたIピクチャにより構成されるプロクシファイルを記憶する。
ステップS9において、エンコーダ36は、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とのインデックス情報、すなわち、プロクシインデックスを、プロクシインデックス記憶部38に供給する。プロクシインデックス記憶部38は、該当するピクチャのプロクシインデックスを記憶する。
ステップS4において、読み込んだピクチャはIピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、ステップS6において、デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、または、ステップS9の処理の終了後、ステップS10において、ビットストリーム解析部32(CPU221)は、全てのピクチャの処理が終了したか否かを判断する。ステップS10において、全てのピクチャの処理が終了していないと判断された場合、処理は、ステップS2に戻り、それ以降の処理が繰り返される。
ステップS10において、全てのピクチャの処理が終了したと判断された場合、ステップS11において、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、それぞれのピクチャの解析結果と、プロクシインデックス記憶部38に記憶されている、エンコーダ36によってIピクチャとしてエンコードされたフレーム、すなわち、PピクチャからIピクチャに変換されたフレームのピクチャサイズ(Proxy File Picture Size)とアドレス(Proxy File Address)を基に、図3を用いて説明したインデックスファイルを生成し、インデックスファイル記憶部33(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部33)に供給して記憶させ、処理が終了される。
このような処理により、オリジナルのビットストリームにおけるPピクチャがデコードされたのち、Iピクチャとしてエンコードされることによって生成されたIピクチャによるプロクシファイルと、オリジナルのビットストリームおよびプロクシファイルに含まれるIピクチャ(オリジナルのビットストリームではPピクチャ)に関する情報が記載されたインデックスファイルとが生成される。
次に、図12のフローチャートを参照して、図1の再生装置1のうちの図6を用いて説明した再生部12、または、図9および図10を用いて説明したパーソナルコンピュータのCPU221において実行されるランダム再生処理1について説明する。
ステップS41において、ビットストリーム取得部63(CPU221)は、オリジナルのビットストリームを取得し、プロクシファイル取得部64(CPU221)は、変換部11において生成されたプロクシファイルを取得し、インデックスファイル取得部61(CPU221)は、変換部11において生成されたインデックスファイルを取得する。
ステップS42において、デコード制御部62(CPU221のデコード制御部62)は、操作入力取得部51により取得されたユーザの操作入力を基に、次に再生される1ピクチャ分のインデックスデータを読み込む。
ステップS43において、デコード制御部62(CPU221のデコード制御部62)は、次に再生されるピクチャは、Bピクチャであるか否かを判断する。
ステップS43において、次に再生されるピクチャはBピクチャではない、すなわち、IピクチャまたはPピクチャであると判断された場合、ステップS44において、デコード制御部62(CPU221のデコード制御部62)は、次に再生されるピクチャは、オリジナルストリームにおけるPピクチャであるか否かを判断する。
ステップS44において、次に再生されるピクチャはオリジナルストリームにおけるPピクチャであると判断された場合、ステップS45において、デコード制御部62(CPU221のデコード制御部62)は、スイッチ65(CPU221のスイッチ65)を制御して、プロクシファイル取得部64により取得されたプロクシファイルに含まれるIピクチャ、すなわち、オリジナルストリームのPピクチャに対応するIピクチャをデコーダ66(CPU221のデコーダ66)に供給する。デコーダ66は、供給されたIピクチャをデコードし、再生映像出力部53(CPU221の再生映像出力部53)に供給して出力させ、処理は、後述するステップS50に進む。
ステップS44において、次に再生されるピクチャはオリジナルストリームにおけるPピクチャではない、すなわち、オリジナルストリームにおけるIピクチャであると判断された場合、ステップS46において、デコード制御部62(CPU221のデコード制御部62)は、スイッチ65を制御して、ビットストリーム取得部63により取得されたオリジナルのビットストリームのうち、対応するIピクチャをデコーダ66に供給する。デコーダ66は、供給されたIピクチャをデコードし、再生映像出力部53(CPU221の再生映像出力部53)に供給して出力させ、処理は、後述するステップS50に進む。
ステップS43において、次に再生されるピクチャはBピクチャであると判断された場合、ステップS47において、デコード制御部62(CPU221のデコード制御部62)は、インデックスファイル取得部61により取得されたインデックスファイルを参照して、デコードするべきBピクチャの前後のオリジナルのビットストリームIピクチャ、または、プロクシファイルのIピクチャを、スイッチ65を制御して、デコーダ66に供給する。デコーダ66は、供給されたIピクチャを読み込む。
ステップS48において、デコーダ66(CPU221のデコーダ66)は、読み込まれたIピクチャをデコードして、参照画像用メモリ67(RAM223の参照画像用メモリ67に対応する領域)に格納する。
ステップS49において、デコード制御部62(CPU221のデコード制御部62)は、スイッチ65を制御して、ビットストリーム取得部63により取得されたオリジナルのビットストリームのうち、再生するべきBピクチャをデコーダ66に供給する。デコーダ66は、供給されたBピクチャを、参照画像用メモリ67に格納されている参照画像を参照してデコードし、再生映像出力部53(CPU221の再生映像出力部53)に供給して出力させる。
ステップS45、ステップS46、または、ステップS49の処理の終了後、ステップS50において、デコード制御部62(CPU221のデコード制御部62)は、再生の指令を受けた全てのピクチャの処理が終了したか否かを判断する。ステップS50において、再生の指令を受けた全てのピクチャの処理が終了していないと判断された場合、処理は、ステップS42に戻り、それ以降の処理が繰り返される。ステップS50において、再生の指令を受けた全てのピクチャの処理が終了したと判断された場合、処理は終了される。
このような処理により、PピクチャやBピクチャをデコードするためにかかる時間は、図7および図8を用いて説明した様に、従来における場合よりも短縮される。
このように、本発明を適用した再生装置1は、圧縮されたビットストリームの供給を受け、これを解析してインデックスファイルを生成するとともに、PピクチャをIピクチャに変換してプロクシファイルを生成する変換部11と、圧縮されたビットストリーム、インデックスファイル、および、プロクシファイルを基に、ユーザの操作入力にしたがって、所定のフレームのデコード処理を高速に実現する再生部12とで構成されている。
また、本発明を適用したパーソナルコンピュータ201は、所定のプログラムを実行することによって、図1の再生装置1と同様の変換部11および再生部12の機能を有することができる。
変換部11においては、供給されたオリジナルのビットストリームから、IピクチャとPピクチャのみがデコードされて、Pピクチャに対応するフレームのみが、再度、Iピクチャとしてエンコードされることにより、プロクシファイルが生成される。
そのとき、生成されるプロクシファイルのIピクチャのデータレートは、固定レートであっても良いし、オリジナルのビットストリームの対応するGOPの先頭のIピクチャのフレームレートに応じて変動させても(可変レートとしても)良い。
そして、変換部11において生成されるインデックスファイルには、オリジナルのビットストリームのデコードに必要な情報のみならず、プロクシファイルに含まれるIピクチャ、すなわち、オリジナルのビットストリームにおいてPピクチャであったフレームが、Iピクチャとしてエンコードされたフレームに関するピクチャサイズやアドレスなどの情報が含まれる。
再生部12においては、インデックスファイルが参照されて、オリジナルのビットストリームにおけるIピクチャをデコードして再生出力する場合には、オリジナルのビットストリームの対応するIピクチャがデコードされ、オリジナルのビットストリームにおけるPピクチャをデコードして再生出力する場合には、プロクシファイルの対応するIピクチャ(オリジナルのビットストリームにおけるPピクチャ)がデコードされ、オリジナルのビットストリームにおけるBピクチャをデコードして再生出力する場合には、再生出力されるBピクチャの前後のオリジナルのビットストリームのIピクチャ、または、プロクシファイルのIピクチャ(オリジナルのビットストリームにおけるPピクチャ)がデコードされて参照画像として用いられ、オリジナルのビットストリームのBピクチャがデコードされるようになされている。
これにより、ランダム生成におけるデコード時間を短縮することが可能となる。
また、上述したように、PピクチャをIピクチャに変換するPI変換を行い、変換前のストリームと変換された部分とを切り替えながらデコード処理に用いるようにすることにより、デコード時間を短縮しランダムアクセス性能を向上することが出来る。しかしながら、編集や再生を行う前に、元々のストリームのうちPピクチャの部分をIピクチャに変換する処理のために時間がかかってしまう。例えば、1GOPが15フレームのストリームのうちPピクチャが5フレームあったとすると、その5フレーム分を全てデコードして、Iピクチャに変換する(デコードした後再エンコードする)ための時間がかかってしまう。
そこで、図2のビットストリーム解析部32は、PI変換を行うときに、全てのPピクチャをIピクチャに変換するのではなく、必要に応じて、一部のPピクチャのみをIピクチャに変換してプロクシファイルを生成して記憶するように、デコーダ34、エンコーダ36、プロクシファイル記憶部37を制御するようにしてもよい。
PI変換を行う処理時間は、Iピクチャに変換する(デコードした後再エンコードする)Pピクチャの個数に依存するため、変換するピクチャの枚数を減らすことができれば、処理時間(プロクシファイルの生成時間)を短縮することができる。ビットストリーム解析部32は、変換後のストリームをデコードするのに必要な最長フレーム数がデコーダの能力を超えないことを、変換するピクチャの枚数を決定するための判断基準とすると好適である。変換後のストリームをデコードするのに必要な最長フレーム数(以下、デコード可能フレーム数とも称する)は、例えば、再生モードがスクラブ再生であるか、通常再生であるかによっても異なる。
具体的には、デコード可能フレーム数は、例えば、予め設定されて(フレーム数が直接指定されて)いてもよいし、上位アプリケーションにより指定されるようになされていてもよい。例えば、デコード可能フレーム数は、デコード処理に用いられるデコーダやCPUの数やクロック周波数によって、設定されるようにしてもよい。このような場合、ビットストリーム解析部32は、デコード可能フレーム数を算出する必要は無く、指定されるデコード可能フレーム数を取得するようにすればよい。
これに対して、例えば、上位アプリケーションからデコード処理に与えることができる時間配分T(例えば、20ms)のみが指定された場合には、ビットストリーム解析部32は、デコード可能フレーム数を算出する必要がある。
また、このとき、ビットストリーム解析部32は、変換するPピクチャができるだけ連続しないようにIピクチャに変換されるPピクチャを選択するようにすると、デコード可能フレーム数に対するIピクチャに変換されるPピクチャの数が少なくなるため、好適である。
図13を参照して、1GOP15フレーム、Pピクチャの数N=4の場合(IBBPBBPBBPBBPBB)におけるPI変換のバリエーションについて説明する。
例えば、PI変換を行わなかった場合、有効なシーケンス(Bピクチャを除くIピクチャおよびPピクチャの5フレームのピクチャタイプ)は、IPPPPとなり、最長デコード時間は、Open GOPであり、かつ、ストリームの先頭のGOPではない場合の、ストリームオーダにおいてIピクチャに続く2枚のBピクチャ(例えば、図7や図8におけるB0B1)をデコードする場合の7フレーム分のデコードにかかる時間となる。
そして、上述したように、4枚のPピクチャをすべてPI変換した場合、有効なシーケンスは、IIIIIとなり、最長デコード時間は、いずれかのBピクチャをデコードする場合の3フレーム分のデコードにかかる時間となる。
これに対して、変換する対象のPピクチャを全て変換するのでなく、一定数に減らすことにより、ランダムデコードの最長デコード時間が、図13に示されるように変動する。すなわち、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ピクチャを選択した場合、すなわち、図13に示される有効なシーケンスにおける場合のみであり、例えば2ピクチャをPI変換する場合であれば、変換後のシーケンスにおいてPピクチャが2フレーム連続しないように変換されるPピクチャを選んだ場合であり、1ピクチャをPI変換する場合であれば、変換後のシーケンスにおいてPピクチャが3フレーム連続しないように変換されるPピクチャを選んだ場合である。
次に、図14乃至図18を参照して、変換する対象のPピクチャを全て変換するのでなく、一定数に減らした場合の具体的なデコード処理について説明する。
図14を参照して、4枚のPピクチャのうちの1枚のみをPI変換し、有効シーケンスをIPIPPとした場合のデコード処理について説明する。
図14Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP8ピクチャをIピクチャに変換して、プロクシファイルとしてI8ピクチャを用意した場合、デコード時間が最長になるのはB0またはB1をデコードする場合であり、そのときにデコードする必要があるのは、図14Bに示されるように、参照画像であるI8,P11,P14,I2に加えて、B0またはB1(図14Bにおいては、B0と図示されている)の5ピクチャ分である。
次に、図15を参照して、同様に4枚のPピクチャのうちの1枚のみをPI変換し、有効シーケンスをIPPIPとした場合のデコード処理について説明する。
図15Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP11ピクチャをIピクチャに変換して、プロクシファイルとしてI11ピクチャを用意した場合、デコード時間が最長になるのはB9またはB10をデコードする場合であり、そのときにデコードする必要があるのは、図15Bに示されるように、参照画像であるI2,P5,P8,I11に加えて、B9またはB10(図15Bにおいては、B9と図示されている)の5ピクチャ分である。
なお、4枚のPピクチャのうちの1枚のみをPI変換した全ての場合において最長デコード時間が5ピクチャ分になるわけでない。すなわち、最長デコード時間が5ピクチャ分になるのは、図14および図15に示されるように、変換後のPピクチャが3枚連続しないようにした場合のみである。それ以外の場合、例えば、変換後のシーケンスがIIPPPとなった場合やIPPPIとなった場合などは、最長デコード時間が6ピクチャ分必要なケースが発生してしまい、PI変換の効果が減少してしまう。
次に、図16を参照して、4枚のPピクチャのうちの2枚をPI変換し、有効シーケンスをIPIIPとした場合のデコード処理について説明する。
図16Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP8ピクチャおよびP11ピクチャをIピクチャに変換して、プロクシファイルとしてI8ピクチャおよびI11ピクチャを用意した場合、デコード時間が最長になるのはB6またはB7、もしくは、B0またはB1をデコードする場合であり、そのときにデコードする必要があるのは、図16Bに示されるように、参照画像であるI2,P5,I8に加えて、B6またはB7(図16Bにおいては、B6と図示されている)の4ピクチャ分となるか、参照画像であるI11,P14,I2に加えて、B0またはB1(図16Bにおいては、B0と図示されている)の4ピクチャ分となる。
同様に、図17は、4枚のPピクチャのうちの2枚をPI変換し、有効シーケンスをIIPIPとした場合のデコード処理について説明するための図であり、図18は、4枚のPピクチャのうちの2枚をPI変換し、有効シーケンスをIPIPIとした場合のデコード処理について説明するための図である。
図17Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP5ピクチャおよびP11ピクチャをIピクチャに変換して、プロクシファイルとしてI5ピクチャおよびI11ピクチャを用意した場合、デコード時間が最長になるのはB9またはB10、もしくは、B0またはB1をデコードする場合であり、そのときにデコードする必要があるのは、図17Bに示されるように、参照画像であるI5,P8,I11に加えて、B9またはB10(図17Bにおいては、B9と図示されている)の4ピクチャ分となるか、参照画像であるI11,P14,I2に加えて、B0またはB1(図17Bにおいては、B0と図示されている)の4ピクチャ分となる。
また、図18Aに示されるように、ディスプレイオーダにおいて、B0,B1,I2,B3,B4,P5,B6,B7,P8,B9・・・と並んでいる15枚のフレームに含まれる4枚のPピクチャのうちのP8ピクチャおよびP14ピクチャをIピクチャに変換して、プロクシファイルとしてI8ピクチャおよびI14ピクチャを用意した場合、デコード時間が最長になるのはB6またはB7、もしくは、B12またはB13をデコードする場合であり、そのときにデコードする必要があるのは、図18Bに示されるように、参照画像であるI2,P5,I8に加えて、B6またはB7(図18Bにおいては、B6と図示されている)の4ピクチャ分となるか、参照画像であるI8,P11,I14に加えて、B12またはB13(図18Bにおいては、B12と図示されている)の4ピクチャ分となる。
なお、この場合においても同様に、4枚のPピクチャのうちの2枚をPI変換した全ての場合において最長デコード時間が4ピクチャ分になるわけでない。すなわち、最長デコード時間が4ピクチャ分になるのは、図16乃至図18に示されるように、変換後のPピクチャが2枚連続しないようにした場合のみである。それ以外の場合、例えば、変換後のシーケンスがIIPPIとなった場合やIPPIIとなった場合などは、PI変換の効果が減少してしまう。
また、図14乃至図18においては、IピクチャまたはPピクチャの間のBピクチャの数がそれぞれ2である場合について説明したが、IピクチャまたはPピクチャの間のBピクチャの数が2以上のいかなる数であっても、連続するBピクチャのデコードのために必要となる参照画像の枚数は同一であるので、それぞれの場合における最長デコード時間は同様であることは言うまでもない。
次に、図19のフローチャートを参照して、変換するPピクチャの設定処理について説明する。
ステップS81において、図20を用いて後述するデコード可能フレーム数算出処理が実行されて、デコード可能フレーム数が求められる。
なお、変換部11のビットストリーム解析部32は、例えば、デコード可能フレーム数が、予め定められていたり、上位アプリケーションから指定されるようになされている場合、ステップS81においてデコード可能フレーム数算出処理を実行することなく、予め定められている、または、上位アプリケーションから指定されるデコード可能フレーム数を取得するようにすればよい。
ステップS82において、変換部11のビットストリーム解析部32は、ビットストリーム取得部31により取得されるビットストリームの1GOP中のPピクチャの数をN、デコード可能フレーム数をXとして、N+3>Xであるか否かを判断する。
ステップS82において、N+3>Xではないと判断された場合、ステップS83において、ビットストリーム解析部32は、PI変換を行わないものとして、処理が終了される。
N+3≦Xである場合、PI変換を行わないビットストリームにおいて最もデコード時間がかかってしまうフレームのデコード処理のために必要となる時間は、デコード可能フレーム数Xをデコードするために必要となる時間よりも短い。すなわち、このような場合は、PI変換を行う必要がない。
ステップS82において、N+3>Xであると判断された場合、換言すれば、PI変換を行わないビットストリームにおいて最もデコード時間がかかってしまうフレームのデコード処理のために必要となる時間は、デコード可能フレーム数Xをデコードするために必要となる時間よりも長いと判断された場合、ステップS84において、ビットストリーム解析部32は、PI変換後のシーケンスにおいてデコード処理が間に合うPピクチャの最大連続数であるPIスキップ数Sを、仮に、X−3とする。
ステップS85において、ビットストリーム解析部32は、S=X−3である場合において、N/S>1であるか否かを判断する。
ステップS85において、N/S>1であると判断された場合、ステップS86において、ビットストリーム解析部32は、PIスキップ数Sを、X−3とする。
ステップS85において、N/S>1ではないと判断された場合、ステップS87において、ビットストリーム解析部32は、PIスキップ数Sを、N/2(ただし、整数でない場合は、近い値の整数)とする。
ステップS86またはステップS87の処理の終了後、ステップS88において、ビットストリーム解析部32は、PIスキップ数Sを基に、変換するPピクチャを設定し、処理が終了される。
このような処理により、デコード可能フレーム数と1GOP中のPピクチャの数を基に、PI変換後のシーケンスにおいてデコード処理が間に合うPピクチャの最大連続数であるPIスキップ数が求められ、これを基に、Iピクチャに変換されるPピクチャが設定される。このようにして、PI変換されるPピクチャの数をできるだけ減少させた場合、すべてのPピクチャをIピクチャに返還する場合と比較して、プロクシファイルを生成するための時間を削減することが可能となる。Iピクチャに変換されるPピクチャの具体的な設定の例については、図21を用いて後述する。
次に、図20のフローチャートを参照して、図19のステップS81において実行されるデコード可能フレーム数算出処理について説明する。
ステップS101において、ビットストリーム解析部32は、例えば、1秒間30フレームや1秒間15フレームなど、単位時間当たりの表示フレーム数を設定する。
ステップS102において、ビットストリーム解析部32は、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と設定される。
ステップS103において、ビットストリーム解析部32は、デコード対象ストリームを1GOP以上デコードし、平均1フレームデコード時間Aを計測する。
そして、ステップS104において、ビットストリーム解析部32は、T÷Aを演算し、T÷A以下の整数の最大値をデコード可能フレーム数Xとし、処理は、図19のステップS81に戻り、ステップS82に進む。
このような処理により、デコード可能フレーム数Xが算出され、PI変換されるPピクチャの設定に用いられる。
図21を用いて、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の場合、上述したステップS85において、N/S>1であると判断されるので、ビットストリーム解析部32は、PIスキップ数Sを、N/2(ただし、整数でない場合は、近い値の整数)よりS=5とする。なお、14(=N+3)>X≧10の場合においても、上述したステップS85においてN/S>1であると判断されるので、ビットストリーム解析部32は、PIスキップ数SをS=5とする。このとき、PI変換後のシーケンスは、IPPPPPIPPPPPとなる。
また、X≧14(=N+3)である場合、PI変換の必要はないと判断される。
次に、図22のフローチャートを参照して、図1の再生装置1のうちの図2を用いて説明した変換部11、または、図9および図10を用いて説明したパーソナルコンピュータのCPU221において実行されるプロクシファイル生成処理2について説明する。
ステップS131乃至ステップS136において、図11を用いて説明したステップS1乃至ステップS6と同様の処理が実行される。
すなわち、ビットストリーム取得部31(CPU221)は、オリジナルのビットストリームを取得し、ビットストリーム解析部32(CPU221のビットストリーム解析部32)に供給する。ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、供給されたオリジナルのビットストリームのうちの1ピクチャを読み込んで解析する。すなわち、ビットストリーム解析部32は、図3を用いて説明したインデックスファイルのうちの対応するピクチャの情報を取得する。
そして、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、読み込んだピクチャは、IピクチャまたはPピクチャであるか否かを判断する。IピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、処理は、後述するステップS141に進む。
IピクチャまたはPピクチャであると判断された場合、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、読み込んだIピクチャまたはPピクチャをデコーダ34に供給する。デコーダ34は、供給されたIピクチャまたはPピクチャをデコードして、参照画像用メモリ35に格納する。
そして、デコーダ34(CPU221のデコーダ34)は、デコードされたピクチャは、Pピクチャであるか否かを判断する。デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、処理は、後述するステップS141に進む。
ステップS136において、デコードされたピクチャは、Pピクチャであると判断された場合、ステップS137において、デコーダ34(CPU221のデコーダ34)は、ビットストリーム解析部32の制御に基づいて、そのPピクチャは、上述した、変換するPピクチャの設定処理においてIピクチャへ変換されると設定された、変換の必要なPピクチャであるか否かを判断する。ステップS137において、変換の必要なPピクチャではないと判断された場合、処理は、後述するステップS141に進む。
ステップS137において、変換の必要なPピクチャであると判断された場合、ステップS138において、デコーダ34(CPU221のデコーダ34)は、デコードしたPピクチャに対応する非圧縮画像フレームをエンコーダ36(CPU221のエンコーダ36)に供給する。エンコーダ36は、供給された非圧縮画像フレームをIピクチャとしてエンコードし、プロクシファイル記憶部37(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部37)に供給する。
ステップS139において、プロクシファイル記憶部37(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するプロクシファイル記憶部37)は、エンコードされて生成されたIピクチャにより構成されるプロクシファイルを記憶する。
ステップS140において、エンコーダ36は、生成されたIピクチャに関する符号化情報として、ピクチャサイズ(Proxy File Picture Size)と、それらのフレームのアドレス(Proxy File Address)とのインデックス情報、すなわち、プロクシインデックスを、プロクシインデックス記憶部38に供給する。プロクシインデックス記憶部38は、該当するピクチャのプロクシインデックスを記憶する。
ステップS134において、読み込んだピクチャはIピクチャまたはPピクチャではない、すなわち、Bピクチャであると判断された場合、ステップS136において、デコードされたピクチャは、Pピクチャではない、すなわち、Iピクチャであると判断された場合、ステップS137において、変換の必要なPピクチャではないと判断された場合、または、ステップS140の処理の終了後、ステップS141において、ビットストリーム解析部32(CPU221)は、全てのピクチャの処理が終了したか否かを判断する。ステップS141において、全てのピクチャの処理が終了していないと判断された場合、処理は、ステップS132に戻り、それ以降の処理が繰り返される。
ステップS141において、全てのピクチャの処理が終了したと判断された場合、ステップS142において、ビットストリーム解析部32(CPU221のビットストリーム解析部32)は、それぞれのピクチャの解析結果と、プロクシインデックス記憶部38に記憶されている、エンコーダ36によってIピクチャとしてエンコードされたフレーム、すなわち、PピクチャからIピクチャに変換されたフレームのピクチャサイズ(Proxy File Picture Size)とアドレス(Proxy File Address)を基に、図3を用いて説明したインデックスファイルを生成し、インデックスファイル記憶部33(記憶装置204、外部映像記録再生装置205、または、HDD226のうちのいずれかの領域に対応するインデックスファイル記憶部33)に供給して記憶させ、処理が終了される。
このような処理により、オリジナルのビットストリームにおけるPピクチャのうち、Iピクチャへ変換されると設定されたPピクチャがデコードされたのち、Iピクチャとしてエンコードされることによって生成されたIピクチャによるプロクシファイルと、オリジナルのビットストリームおよびプロクシファイルに含まれるIピクチャ(オリジナルのビットストリームではPピクチャ)に関する情報が記載されたインデックスファイルとが生成される。
次に、図23のフローチャートを参照して、図1の再生装置1のうちの図6を用いて説明した再生部12、または、図9および図10を用いて説明したパーソナルコンピュータのCPU221において実行されるランダム再生処理2について説明する。
ステップS171乃至ステップS174において、図12を用いて説明したステップS41乃至ステップS44と同様の処理が実行される。
すなわち、ビットストリーム取得部63(CPU221)は、オリジナルのビットストリームを取得し、プロクシファイル取得部64(CPU221)は、変換部11において生成されたプロクシファイルを取得し、インデックスファイル取得部61(CPU221)は、変換部11において生成されたインデックスファイルを取得する。
そして、デコード制御部62(CPU221のデコード制御部62)は、操作入力取得部51により取得されたユーザの操作入力を基に、次に再生される1ピクチャ分のインデックスデータを読み込み、次に再生されるピクチャは、Bピクチャであるか否かを判断する。Bピクチャではないと判断された場合、処理は、後述するステップS178に進む。
次に再生されるピクチャはBピクチャではない、すなわち、IピクチャまたはPピクチャであると判断された場合、デコード制御部62(CPU221のデコード制御部62)は、次に再生されるピクチャは、オリジナルストリームにおけるPピクチャであるか否かを判断する。オリジナルストリームにおけるPピクチャではないと判断された場合、処理は、後述するステップS177に進む。
そして、ステップS174において、次に再生されるピクチャはオリジナルストリームにおけるPピクチャであると判断された場合、ステップS175において、デコード制御部62(CPU221のデコード制御部62)は、次に再生されるPピクチャは、プロクシファイルの作成時にIピクチャに変換されたPピクチャであるか否かを判断する。
ステップS175において、次に再生されるPピクチャは、プロクシファイルの作成時にIピクチャに変換されたPピクチャであると判断された場合、ステップS176において、デコード制御部62(CPU221のデコード制御部62)は、スイッチ65(CPU221のスイッチ65)を制御して、プロクシファイル取得部64により取得されたプロクシファイルに含まれるIピクチャ、すなわち、オリジナルストリームのPピクチャに対応するIピクチャをデコーダ66(CPU221のデコーダ66)に供給する。デコーダ66は、供給されたIピクチャをデコードし、再生映像出力部53(CPU221の再生映像出力部53)に供給して出力させ、処理は、後述するステップS181に進む。
ステップS174において、次に再生されるピクチャはオリジナルストリームにおけるPピクチャではない、すなわち、オリジナルストリームにおけるIピクチャであると判断された場合、または、ステップS175において、次に再生されるPピクチャは、プロクシファイルの作成時にIピクチャに変換されたPピクチャではない(すなわち、プロクシファイルの作成時にIピクチャに変換されていないPピクチャである)と判断された場合、ステップS177において、デコード制御部62(CPU221のデコード制御部62)は、スイッチ65を制御して、ビットストリーム取得部63により取得されたオリジナルのビットストリームのうち、対応するIピクチャまたはPピクチャをデコーダ66に供給する。デコーダ66は、供給されたIピクチャまたはPピクチャをデコードし、再生映像出力部53(CPU221の再生映像出力部53)に供給して出力させ、処理は、後述するステップS181に進む。
なお、Pピクチャをデコードするために参照されるべきPピクチャが、プロクシファイルの作成時にIピクチャに変換されたPピクチャである場合、参照画像として、プロクシファイルに含まれるIピクチャが用いられることは、言うまでもない。
ステップS173において、次に再生されるピクチャはBピクチャであると判断された場合、ステップS178において、デコード制御部62(CPU221のデコード制御部62)は、インデックスファイル取得部61により取得されたインデックスファイルを参照して、デコードするべきBピクチャの前後のオリジナルのビットストリームIピクチャ、または、Pピクチャ、もしくは、プロクシファイルのIピクチャを、スイッチ65を制御して、デコーダ66に供給する。デコーダ66は、供給されたIピクチャ、または、Pピクチャを読み込む。
ステップS179において、デコーダ66(CPU221のデコーダ66)は、読み込まれたIピクチャ、または、Pピクチャをデコードして、参照画像用メモリ67(RAM223の参照画像用メモリ67に対応する領域)に格納する。
ステップS180において、デコード制御部62(CPU221のデコード制御部62)は、スイッチ65を制御して、ビットストリーム取得部63により取得されたオリジナルのビットストリームのうち、再生するべきBピクチャをデコーダ66に供給する。デコーダ66は、供給されたBピクチャを、参照画像用メモリ67に格納されている参照画像を参照してデコードし、再生映像出力部53(CPU221の再生映像出力部53)に供給して出力させる。
ステップS176、ステップS177、または、ステップS180の処理の終了後、ステップS181において、デコード制御部62(CPU221のデコード制御部62)は、再生の指令を受けた全てのピクチャの処理が終了したか否かを判断する。ステップS181において、再生の指令を受けた全てのピクチャの処理が終了していないと判断された場合、処理は、ステップS172に戻り、それ以降の処理が繰り返される。ステップS181において、再生の指令を受けた全てのピクチャの処理が終了したと判断された場合、処理は終了される。
このような処理により、プロクシファイルの生成にかかった時間は、図11および図12を用いて説明した場合と比較して短いのにもかかわらず、PピクチャやBピクチャをデコードするためにかかる時間は、従来における場合よりも短縮されるため、デコード処理に破綻が生じない。
このようにすることにより、デコード可能フレーム数に応じて、PI変換されるPピクチャ(デコードされた後、Iピクチャに再エンコードされるPピクチャ)の数が求められて、いずれのPピクチャが変換されるかが設定されるので、PピクチャをIピクチャに変換するために必要となる変換時間(換言すれば、プロクシファイルの生成時間)を減少させながら、プロクシファイルを利用して、デコード処理における最長デコード時間を少なくすることが可能になる。
なお、ここでは、変換部11および再生部12を有する再生装置1が1つの装置として構成されているものとして説明したが、変換部11および再生部12は、それぞれ異なる装置として構成されていても良いことは言うまでもない。
また、上述した一連の処理は、上述したように、ハードウエアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図9に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア206により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM222や、HDD226に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 再生装置, 11 変換部, 12 再生部, 31 ビットストリーム取得部, 32 ビットストリーム解析部, 33 インデックスファイル記憶部, 34 デコーダ, 35 参照画像用メモリ, 36 エンコーダ, 37 プロクシファイル記憶部, 51 操作入力取得部, 52 デコード処理部, 53 再生映像出力部, 61 インデックスファイル取得部, 62 デコード制御部, 63 ビットストリーム取得部, 64 プロクシファイル取得部, 65 スイッチ, 66 デコーダ, 67 参照画像用メモリ, 201 パーソナルコンピュータ, 202 マウス, 203 キーボード, 204 記憶装置, 205 外部映像記録再生装置, 221 CPU, 222 ROM, 223 RAM, 226 HDD