以下、図を参照して、本発明の実施の形態について説明する。
図4は本発明を適用した編集装置1のハードウェア構成を示すブロック図である。
CPU(Central Processing Unit)11は、ノースブリッジ12に接続され、例えば、HDD(Hard disk Drive)16に記憶されているデータの読み出しなどの処理を制御したり、CPU20が実行する編集処理を制御するためのコマンドを生成し、出力する。ノースブリッジ12は、PCIバス(Peripheral Component Interconnect/Interface)14に接続され、例えば、CPU11の制御に基づいて、サウスブリッジ15を介して、HDD16に記憶されているデータの供給を受けて、PCIバス14、PCIブリッジ17を介して、メモリ18に供給する。また、ノースブリッジ12は、メモリ13とも接続されており、CPU11の処理に必要なデータを授受する。
メモリ13は、CPU11が実行する処理に必要なデータを保存する。サウスブリッジ15は、HDD16のデータの書き込みおよび読み出しを制御する。HDD16には、圧縮符号化された編集用の素材が記憶されている。
PCIブリッジ17は、メモリ18のデータの書き込みおよび読み出しを制御したり、デコーダ22乃至24、または、ストリームスプライサ25への圧縮符号化データの供給を制御するとともに、PCIバス14およびコントロールバス19のデータの授受を制御する。メモリ18は、PCIブリッジ17の制御に基づいて、HDD16により読み出された、編集用素材である圧縮符号化データや、ストリームスプライサ25から供給される編集後の圧縮符号化データを記憶する。
CPU20は、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU11から供給されたコマンドにしたがって、PCIブリッジ17、デコーダ22乃至24、ストリームスプライサ25、エフェクト/スイッチ26、エンコーダ27、および、シンタクス更新部28が実行する処理を制御する。メモリ21は、CPU20の処理に必要なデータを記憶する。
デコーダ22乃至デコーダ24は、CPU20の制御に基づいて、供給された圧縮符号化データをデコードし、非圧縮の映像信号を出力する。ストリームスプライサ25は、CPU20の制御に基づいて、供給された圧縮映像データを、所定のフレームで結合する。また、デコーダ72乃至デコーダ74は、編集装置1に含まれない独立した装置として設けられていても良い。例えば、デコーダ74が、独立した装置として設けられている場合、デコーダ74は、後述する処理により編集されて生成された圧縮編集映像データの供給を受け、復号し、出力することができるようになされる。
エフェクト/スイッチ26は、CPU20の制御に基づいて、デコーダ22またはデコーダ23から供給される、非圧縮の映像信号出力を切り替える、すなわち、供給された非圧縮の映像信号を所定のフレームで結合するとともに、必要に応じて、所定の範囲にエフェクトを施して、エンコーダ27に供給する。エンコーダ27は、CPU20の制御に基づいて、供給された非圧縮の映像信号をエンコードして、圧縮符号化された圧縮映像データを、ストリームスプライサ25に出力する。
シンタクス更新部28は、CPU20の制御に基づいて、ストリームスプライサ25に供給された圧縮符号化された映像データのシンタクスを更新する。
次に、第1の実施の形態における編集装置1の動作について説明する。
HDD16には、図5に示されるLong GOPのOpen GOP方式で圧縮された圧縮素材映像1および圧縮素材映像2のデータが記憶されている。図5において、圧縮された圧縮素材映像1および圧縮素材映像2は、表示されるピクチャ順(display order)で記載されている。
CPU11は、サウスブリッジ15を制御して、図示しない操作入力部から供給されたユーザの操作入力を基に、HDD16から、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータを読み出させ、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介して、メモリ18に供給させて記憶させるとともに、編集点を示す情報と、編集開始を示すコマンドを、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU20に供給する。
CPU20は、CPU11から供給された編集点を示す情報を基に、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータのうち、再エンコードを行う範囲を決定する。そして、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化された圧縮素材映像1のデータのうち、再エンコードを行う範囲のピクチャと、参照する必要があるピクチャに対応する圧縮素材映像1のデータをデコーダ22に供給させるとともに、圧縮素材映像2のデータのうち、再エンコードを行う範囲のピクチャと、参照する必要があるピクチャに対応する圧縮素材映像2のデータをデコーダ23に供給させる。
すなわち、このとき、圧縮素材映像1のうち、Bピクチャ36およびBピクチャ37が再エンコードを行う範囲に含まれている場合、Bピクチャ36およびBピクチャ37をデコードするために、Iピクチャ31、および、Pピクチャ32乃至Pピクチャ35もデコードされる。また、同様に、圧縮素材映像2のうち、Bピクチャ38およびBピクチャ39が再エンコードを行う範囲に含まれている場合、Bピクチャ38およびBピクチャ39をデコードするために、Iピクチャ40もデコードされる。
また、このとき、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化された圧縮素材映像1および圧縮素材映像2のデータのうちの再エンコードを行わない範囲のピクチャを、ストリームスプライサ25に供給させる。
CPU20は、デコーダ22およびデコーダ23を制御して、供給された圧縮符号化されたデータをデコードさせる。
デコーダ22およびデコーダ23は、CPU20の制御に基づいて、供給されたデータをデコードし、復号されて得られた素材映像1および素材映像2の信号をエフェクト/スイッチ26に供給する。エフェクト/スイッチ26は、CPU20の制御に基づいて、所定のカット(Cut)編集点(スプライス点)で、非圧縮の復号素材映像1と復号素材映像2の信号を接続して、必要に応じて、エフェクトを施し、再エンコード用の非圧縮の編集映像信号を生成し、再エンコードに必要な再エンコード用参照画像(図5においては、Bピクチャ42およびBピクチャ43のエンコードに必要なPピクチャ41に対応する画像データ)とともに、エンコーダ27に供給する。
また、デコーダ22およびデコーダ23は、後段のエンコーダ27によるエンコード処理に必要な情報を抽出し、コントロールバス19を介して、CPU20に供給することができる。CPU20は、デコーダ22またはデコーダ23から供給された、後段のエンコーダ27によるエンコード処理に必要な情報を、コントロールバス19を介して、エンコーダ27に供給する。
エンコーダ27は、CPU20の制御に基づいて、エフェクト/スイッチ26から供給された、再エンコード用の非圧縮の編集映像信号をエンコードする。
そのとき、エンコーダ27は、図5に示されるように、双方向予測符号化を行うBピクチャ42およびBピクチャ43をエンコードするために、参照画として、一つ前のPピクチャ41を用いなければならない。また、ディスプレイオーダにおいて、再エンコードの最後のピクチャがPピクチャとなるように、ピクチャタイプを決定することにより、再エンコードの最後のピクチャ以降のピクチャをエンコードのための参照画として用いなくてもよいようにすることができる。
換言すれば、再エンコード終了点がGOPの切れ目(すなわち、Bピクチャ以外)となるようなピクチャタイプで再エンコードを行うようにすることにより、編集用の圧縮素材映像データがOpenGOPであっても、再エンコードの最後のピクチャ以降のピクチャをエンコードのための参照画として用いる必要がなくなる。
そして、エンコーダ27において再エンコードされた映像データは、ストリームスプライサ25に供給される。シンタクス更新部28は、CPU20の制御に基づいて、必要に応じて、ストリームスプライサ25に供給された圧縮符号化された素材映像データのシンタクスを更新する。シンタクス更新部28により、シンタクスが更新される場合については、後述する。そして、ストリームスプライサ25は、CPU20の制御に基づいて、PCIブリッジ17から供給された、圧縮素材映像1および圧縮素材映像2のデータのうちの再エンコードを行わない範囲の圧縮素材映像1および圧縮素材映像2と、エンコーダ27から供給されたエンコードされた映像データとを接続し、圧縮編集映像データを生成する。
具体的には、ストリームスプライサ25は、CPU20の制御に基づいて、PCIブリッジ17から供給された、圧縮素材映像1のPピクチャ46とエンコーダ27から供給されたエンコードされた映像データのBピクチャ42とがディスプレイオーダで連続するように接続され、エンコーダ27から供給されたエンコードされた映像データのPピクチャ45と、PCIブリッジ17から供給された、圧縮素材映像2のIピクチャ47とがディスプレイオーダで連続するように接続されるように、ストリームをつなぎ合わせる。
そして、ストリームスプライサ25は、CPU20の制御に基づいて、作成した圧縮編集映像データをPCIブリッジ17に供給して、メモリ18に保存させるとともに、デコーダ24に供給してデコードさせ、編集結果確認用のモニタなどに出力させて表示させたり、デコードされて生成されたベースバンド信号を、他の装置に出力させる。
図示しない操作入力部から、編集されて生成された圧縮編集映像データの保存が指令された場合、CPU11は、PCIブリッジ17を制御して、メモリ18に保存されている圧縮編集映像データを読み出させ、PCIバス14およびノースブリッジ12を介して、サウスブリッジ15に供給させるとともに、サウスブリッジ15を制御して、供給された圧縮編集映像データをHDD16に供給させて保存させる。
実際のエンコードはコーディングオーダ(coding order)で行われ、エンコーダ27においてエンコードされた圧縮映像も、コーディングオーダで出力される。図5を用いて説明した場合に対応させて、圧縮された信号におけるピクチャの並びをコーディングオーダで示したものを図6に示す。
編集対象である圧縮素材映像1および編集対象である圧縮素材映像2のそれぞれのデータにおいて、編集点を含む再エンコード範囲が決定され、再エンコード範囲の圧縮素材映像1および圧縮素材映像2がデコードされて、非圧縮の素材映像1の信号および素材映像2の信号が生成される。そして、カット(Cut)編集点において、非圧縮の素材映像1の信号と素材映像2とが接続されて、接続された素材映像1および素材映像2が、最後のピクチャがPピクチャ(またはIピクチャ)となるように部分再エンコードされて、圧縮映像データが生成され、再エンコードしない部分の圧縮映像データと接続されて、圧縮された編集映像データが生成される。
接続された素材映像1および素材映像2が部分再エンコードされて生成された圧縮映像データと、再エンコードしない部分の圧縮映像データとは、再エンコードしない部分の圧縮素材映像1のデータにおいて、コーディングオーダで最後のピクチャであって、ディスプレイオーダ14番目のピクチャであるB13ピクチャと、再エンコードされて生成された圧縮映像データにおいて、コーディングオーダで先頭のピクチャであって、ディスプレイオーダ3番目のピクチャであるI2ピクチャとが接続される。そして、再エンコードされて生成された圧縮映像データにおいて、コーディングオーダで最後のピクチャであって、ディスプレイオーダ16番目のピクチャであるP15ピクチャ(Pピクチャ45)と、再エンコードしない部分の圧縮素材映像2において、コーディングオーダで先頭のピクチャであって、データのディスプレイオーダ3番目のピクチャであるI0ピクチャ(Iピクチャ47)とが接続される。すなわち、接続された素材映像1および素材映像2が部分再エンコードされて生成された圧縮映像データと、再エンコードしない部分の圧縮映像データとは、GOPの切替え部分に関係なく接続されて、圧縮された編集映像データが生成される。
このように、ディスプレイオーダにおいて、再エンコードの最後のピクチャであるP15ピクチャ(Pピクチャ45)は、コーディングオーダでも再エンコードの最後のピクチャとなる。このようにして、ピクチャタイプを決定することにより、再エンコードの最後のピクチャ以降のピクチャをエンコードのための参照画として用いなくてもよいようにすることができる。
このとき、VBV(Video Buffering Verifier)バッファも考慮して再エンコードを行う必要がある。図7を用いて、編集を行う場合のVBVバッファについて説明する。
エンコードを行うにあたっては、VBVバッファがオーバーフロー(over flow)、または、アンダーフロー(under flow)しないようにそれぞれのピクチャに発生符号量を割り当てることで、後段のデコーダが正常にデコードを行えるように制御されなくてはならない。特に、編集のための部分的な再エンコードを行う場合、部分再エンコードしない部分に関して(特に、再エンコードを行う部分と再エンコードを行わない部分の接続点付近において)も、VBVバッファがオーバーフローまたはアンダーフローしないように再エンコードを行う必要がある。
再エンコードされた圧縮映像データのバッファの状態により影響を受けるのは、再エンコードされた圧縮映像信号の後に結合される再エンコードしない部分の圧縮映像データである。この再エンコードしない部分の圧縮映像データが、オーバーフローまたはアンダーフローしないための十分条件は、再エンコードされた圧縮映像信号の後に結合される再エンコードしない部分の圧縮編集映像データの最初のIピクチャまたはPピクチャ、すなわち、図7において、Aで示されるIピクチャに続く、図7においてDで示されるPピクチャのOccupancy(オキュパンシ)が、圧縮素材映像2データの図7においてBで示されるIピクチャ次のIピクチャまたはPピクチャ、すなわち、図7において、Cで示されるPピクチャのOccupancyに等しくなることである。よって再エンコードを行う場合は、上記条件を満たす値になるように、再エンコード終了時点(図7のAで示される部分)のバッファのOccupancyを制御する必要がある。
このようにすることにより、VBVバッファの破綻をできるだけ防止するようにすることができる。
しかしながら、Aで示されるIピクチャおよびその次のIまたはPピクチャの発生符号量によっては、Aで示されるIピクチャのOccupancyを制御するだけでは、図7を用いて説明したように、Dで示されるPピクチャのOccupancyが、圧縮素材映像2データの図7においてCで示されるPピクチャのOccupancyに等しくなるようにすることができず、VBVバッファが破綻してしまう恐れがある。
図8を用いて、VBVバッファが破綻してしまう場合について説明する。
一般的に、Iピクチャの発生符号量およびPピクチャの発生符号量は、Bピクチャの発生符号量よりも大きい。例えば、再エンコードして生成された圧縮映像データの後に結合される、再エンコードしない圧縮素材映像2のデータの先頭のIピクチャであるI2ピクチャの発生符号量B、および、次のPピクチャであるP5ピクチャの発生符号量Cが大きい場合について考える。
このとき、編集されて生成される圧縮編集映像のうちの、部分エンコードされた部分に続く部分エンコードされない部分の先頭のIピクチャに続くPピクチャにおけるDで示される部分のOccupancyが、編集前の圧縮素材映像2データのCで示される部分のOccupancyに等しくなるように、Aで示されるIピクチャのOccupancyを制御しようとしても、連続するPピクチャの符号発生量が多いために、図中Dに示されるように、バッファをアンダーフローしてしまう。この例では、編集後のI0ピクチャにおけるAで示されるIピクチャのOccupancyは、ほぼ、バッファの最大値であるため、再エンコード部分において、発生符号量をどのように制御しても、図中Dに示される部分でバッファのアンダーフローを避けることができない。すなわち、図5および図6を用いて説明した方法では、デコーダでの復号処理を100%保障することができない。
そこで、CPU20は、VBVバッファが破綻しない条件を守って再エンコードが行われるように、デコーダ22およびデコーダ23、ストリームスプライサ25、エフェクト/スイッチ26、並びに、エンコーダ27が実行する処理を制御するようにすることができる。
次に、Long GOPのOpen GOP方式で圧縮された映像信号において、VBVバッファが破綻しない条件を守って編集することができる、第2の実施の形態について説明する。
第2の実施の形態における編集装置1の動作について説明する。
CPU11は、サウスブリッジ15を制御して、図示しない操作入力部から供給されたユーザの操作入力を基に、HDD16から、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータを読み出させ、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介して、メモリ18に供給させて記憶させるとともに、編集点を示す情報と、編集開始を示すコマンドを、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU20に供給する。
CPU20は、CPU11から供給された編集点を示す情報を基に、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータのうち、再エンコードを行う範囲を決定する。
具体的には、CPU20は、圧縮素材映像1において、再エンコードする区間の開始点を、部分再エンコードされた圧縮映像の前に結合する、再エンコードしない部分の圧縮映像のディスプレイオーダで最後のピクチャのピクチャタイプが、IピクチャまたはPピクチャになるように決定する。
すなわち、CPU20は、例えば、図9に示されるように、再エンコードしない部分の圧縮素材映像1のディスプレイオーダで最後のピクチャのピクチャタイプがPピクチャ46になるように、再エンコードする区間の開始点を、圧縮素材映像1において、Pピクチャ35の次のBピクチャ36に決定する。換言すれば、CPU20は、再エンコードしない部分の圧縮映像がGOPの終了位置となるようにすることにより、エンコード処理が行いやすいようにすることができる。
また、CPU20は、圧縮素材映像2において、再エンコードする区間の終了点を、部分再エンコードされた圧縮映像の後に結合する、再エンコードしない部分の圧縮映像のディスプレイオーダで最初のピクチャのピクチャタイプがIピクチャになるように決定する。
すなわち、CPU20は、例えば、図9に示されるように、再エンコードしない部分の圧縮素材映像2のディスプレイオーダで最初のピクチャのピクチャタイプがIピクチャ47になるように、再エンコードする区間の終了点を、圧縮素材映像2において、Iピクチャ40の前のBピクチャ39に決定する。
そして、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化された圧縮素材映像1のデータのうち、再エンコードを行う範囲のピクチャと、Bピクチャ36およびBピクチャ37をデコードするために参照する必要があるピクチャである、Iピクチャ31、Pピクチャ32、Pピクチャ33、Pピクチャ34、および、Pピクチャ35のデータをデコーダ22に供給させるとともに、圧縮素材映像2のデータのうち、再エンコードを行う範囲のピクチャと、Bピクチャ38およびBピクチャ39をデコードするために参照する必要があるピクチャである、Iピクチャ40のデータをデコーダ23に供給させる。
また、このとき、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化された圧縮素材映像1および圧縮素材映像2のデータのうちの再エンコードを行わない範囲のピクチャを、ストリームスプライサ25に供給させる。
CPU20は、デコーダ22およびデコーダ23を制御して、供給された圧縮符号化されたデータをデコードさせる。
デコーダ22およびデコーダ23は、CPU20の制御に基づいて、供給されたデータをデコードし、復号されて得られた素材映像1および素材映像2の信号をエフェクト/スイッチ26に供給する。エフェクト/スイッチ26は、CPU20の制御に基づいて、所定のカット(Cut)編集点(スプライス点)で、非圧縮の復号素材映像1と復号素材映像2の信号を接続して、必要に応じて、エフェクトを施し、再エンコード用の非圧縮の編集映像信号を生成し、再エンコードに必要な再エンコード用参照画像(図9においては、Bピクチャ42およびBピクチャ43のエンコードに必要なPピクチャ41、並びに、Bピクチャ72およびBピクチャ73のエンコードに必要なIピクチャ74に対応する画像データ)とともに、エンコーダ27に供給する。
CPU20は、圧縮素材映像2のうち、再エンコードを行う部分において、ディスプレイオーダで最後に位置する連続するBピクチャの枚数nの情報を取得する。再エンコードしない部分の圧縮素材映像2のディスプレイオーダで最初のピクチャのピクチャタイプは、上述したように、Iピクチャになるように決定されているので、Bピクチャの枚数nは、すなわち、再エンコードしない部分の圧縮素材映像2のディスプレイオーダで最初のIピクチャと、編集後にそのIピクチャの直前に存在するIピクチャまたはPピクチャとの間にあるBピクチャの枚数である。図9における場合では、Bピクチャの枚数nは、Bピクチャ38およびBピクチャ39の2枚である。
更に、CPU20は、再エンコードしない部分の圧縮素材映像2のディスプレイオーダで最初のIピクチャの直前に存在するIピクチャまたはPピクチャ、換言すれば、再エンコードする範囲の最後に存在するIピクチャまたはPピクチャのピクチャタイプの情報を取得する。図9における場合では、再エンコードしない部分の圧縮素材映像2のディスプレイオーダで最初のIピクチャの直前に存在するIピクチャまたはPピクチャは、Pピクチャ61である。
そして、CPU20は、エンコーダ27が実行する処理において、再エンコード終了点付近のBピクチャタイプの枚数が編集前の圧縮素材映像2と同一となり、そのBピクチャの直前のピクチャのピクチャタイプがIピクチャまたはPピクチャとなるように、エンコーダ27を制御する。また、CPU20は、Bピクチャの直前のピクチャのピクチャタイプも、編集前の圧縮素材映像2と同一となるように制御すると好適である。
すなわち、CPU20は、図9における場合では、編集前の圧縮素材映像2のBピクチャ38およびBピクチャ39と、再エンコードにおけるBピクチャ72およびBピクチャ73のピクチャタイプをそろえ、再エンコードにおけるBピクチャ72およびBピクチャ73の直前をPピクチャ71とする。
エンコーダ27は、CPU20の制御に基づいて、エフェクト/スイッチ26から供給された、再エンコード用の非圧縮の編集映像信号をエンコードする。
そして、エンコーダ27において再エンコードされた映像データは、ストリームスプライサ25に供給される。シンタクス更新部28は、CPU20の制御に基づいて、必要に応じて、ストリームスプライサ25に供給された圧縮符号化された素材映像データのシンタクスを更新する。シンタクス更新部28により、シンタクスが更新される場合については、後述する。ストリームスプライサ25は、CPU20の制御に基づいて、PCIブリッジ17から供給された、圧縮素材映像1および圧縮素材映像2のデータのうちの再エンコードを行わない範囲の圧縮素材映像1および圧縮素材映像2と、エンコーダ27から供給されたエンコードされた映像データとを接続し、圧縮編集映像データを生成する。
具体的には、ストリームスプライサ25は、CPU20の制御に基づいて、PCIブリッジ17から供給された、圧縮素材映像1のPピクチャ46とエンコーダ27から供給されたエンコードされた映像データのBピクチャ42とがディスプレイオーダで連続するように接続され、エンコーダ27から供給されたエンコードされた映像データのBピクチャ73と、PCIブリッジ17から供給された、圧縮素材映像2のIピクチャ47とがディスプレイオーダで連続するように接続されるように、ストリームをつなぎ合わせる。
実際のエンコードはコーディングオーダで行われ、エンコーダ27においてエンコードされた圧縮映像も、コーディングオーダで出力される。図9を用いて説明した場合に対応させて、圧縮された信号におけるピクチャの並びをコーディングオーダで示したものを図10に示す。
すなわち、ストリームスプライサ25は、CPU20の制御に基づいて、再エンコードされた部分と再エンコードされていない部分の接続点において、エンコードされた映像データにおいて、コーディングオーダでPピクチャ71に続くBピクチャ81と、圧縮素材映像2のIピクチャ47(再エンコードされていないIピクチャ)とがコーディングオーダで連続するように接続され、圧縮素材映像2のIピクチャ47と、エンコードされた映像データのBピクチャ72とがコーディングオーダで連続するように接続され、エンコードされた映像データにおいて、コーディングオーダでBピクチャ72に続くBピクチャ73と、圧縮素材映像2のPピクチャ82とがコーディングオーダで連続するように接続されるように、ストリームをつなぎ合わせる。
換言すれば、ストリームスプライサ25は、コーディングオーダにおいて、再エンコードされた区間の最後のIピクチャまたはPピクチャに続く、n枚の再エンコードされたBピクチャの前に、再エンコードされていないIピクチャが入るように、ストリームをつなぎ合わせる。
そして、ストリームスプライサ25は、CPU20の制御に基づいて、作成した圧縮編集映像データをPCIブリッジ17に供給して、メモリ18に保存させるとともに、デコーダ24に供給してデコードさせ、編集結果確認用のモニタなどに出力させて表示させたり、デコードされて生成されたベースバンド信号を、他の装置に出力させる。デコーダ24が、独立した装置として構成されている場合、デコーダ24に対応する装置は、図9および図10を用いて説明したようにして生成された、換言すれば、再エンコードされた区間の最後のIピクチャまたはPピクチャに続く、n枚の再エンコードされたBピクチャの前に、再エンコードされていないIピクチャが入る編集後の圧縮映像データの供給を受けてこれをデコードし、デコードされて生成されたベースバンド信号を出力することができるようになされる。
次に、図11を用いて、図9および図10を用いて説明した、再エンコードを利用した編集処理を行う場合のVBVバッファについて説明する。
図9および図10を用いて説明した、再エンコードを利用した編集処理が行われた場合、コーディングオーダにおいて、再エンコードの最後のn枚のBピクチャの前に、再エンコードしないIピクチャが挿入される。したがって、図11に示されるように、再エンコード範囲から最後のn枚のBピクチャを除いた部分(図11のEで示される部分)は、再エンコードされないIピクチャのOccupancyが編集前と一致するように、再エンコードが行われ、その後、再エンコードされないIピクチャの発生符号量の情報(図11においては、Fで示される部分)が圧縮素材映像2の対応するIピクチャの発生符号量の情報(図11においては、Bで示される部分)から求められて、VBVバッファのOccupancyが計算される。
その後、再エンコードしない部分の圧縮映像のVBVバッファが、オーバーフローまたはアンダーフローしないようにするため、再エンコードしない部分の圧縮映像の先頭のIピクチャの次に位置するIピクチャまたはPピクチャのOccupancyが編集前後で一致するように、再エンコード部分の最後のn枚のBピクチャ(図11においては、Gで示される部分)において、発生符号量が制御されて、エンコードが行なわれる。すなわち、図11において、編集前のCで示される発生符号量と、編集後のHで示される発生符号量は同一であるため、編集前のIで示されるOccupancyに、編集後のJで示されるOccupancyが一致するように、n枚のBピクチャの再エンコードが行われる。これにより、図11において、KおよびLで示される部分でバッファのアンダーフローは発生しない。
この方法では、再エンコードが行われている部分と再エンコードが行われない部分の圧縮映像の結合部におけるピクチャタイプが、編集前後で保存されているので、図11に示されるように、再エンコードが行われている部分に接続される、再エンコードが行われない部分の先頭のIピクチャの発生符号量Fと、次のIピクチャまたはPピクチャの発生符号量Hが大きくても、編集前の圧縮素材映像2のデータでVBVバッファの制約が満たされていれば、編集後の圧縮映像でも制約を満たすようにエンコードが行われるようにすることが可能である。
以上、図4乃至図11を用いて、双方向のフレーム間予測を用いて圧縮した映像データを編集することができる編集装置1が実行する処理の第1の実施の形態および第2の実施の形態について説明した。この編集装置1が取り扱うMPEGのSyntaxでは、Qマトリクス(Q-Matrix:Quantiser Matrix)において、以下のようなルールがある。
1つ目のルールは、Sequence HeaderまたはQuant Matrix Extensionで、load flagが1に設定される場合、Qマトリクスがロードされ、次にQマトリクスがロードされるまで、そのQマトリクスが利用されるというものである。そして、2つ目のルールは、Sequence Headerを有するピクチャにおいては、ディフォルトのQマトリクスが利用されるというものである。3つ目のルールは、Bピクチャには、Sequence Headerを入れることができないというものである。
そして、Qマトリクスは、基本的に、前のピクチャにおいて使用されたものが次のピクチャにおいても利用される。したがって、編集において、再エンコードを行わない部分と再エンコードを行った部分の圧縮映像データが結合されることにより、利用するべきQマトリクスに不整合が発生し、不具合が発生する恐れがある。
Long GOP方式の圧縮においては、ある間隔でIピクチャが挿入されており、Iピクチャから次のIピクチャの直前のピクチャまでが1GOPとされている。一般的には、ランダムアクセスを可能にするため、Iピクチャの前にSequence Headerが挿入される。
図2を用いて説明したように、Closed GOP構造の圧縮映像データの編集処理において、GOP単位の圧縮映像データの結合により編集が行われる場合、編集素材となる圧縮映像データにおいて、GOP毎にSequence Headerが挿入されていれば、Qマトリクスが異なる圧縮映像データを編集しても、Sequence Headerの直前で、再エンコードされた部分と再エンコードされていない部分の圧縮映像データが結合される。したがって、編集後のデータにおいて、利用するべきQマトリクスに不整合は発生せず、不具合は発生しない。
これに対して、上述した第1の実施の形態、または、第2の実施の形態における場合のように、Closed GOP構造でないOpen GOP構造の圧縮映像データを、GOP単位とは関係なく接続して編集するとき、Sequence Headerの直前で、再エンコードされた部分と再エンコードされていない部分の圧縮映像データが結合されるとは限らない。したがって、Qマトリクスが異なる圧縮映像データを編集すると、編集の前後においてQマトリクスに不整合が発生してしまう。なお、Closed GOP構造であっても、Iピクチャの前にSequence Headerが挿入されていない場合、Open GOP構造における場合と同様に、編集の前後でQマトリクスに不整合が発生してしまう。
以下、図12乃至図21を用いて、編集前後においてQマトリクスに不整合を発生させることなく、LongGOPのOpenGOP方式の圧縮符号化データを編集するために実行される処理について説明する。
まず、図12を用いて、上述した第1の実施の形態における場合の、編集時の不具合の発生例について説明する。
なお、図12における各圧縮映像の並び順は、コーディングオーダで記載されており、このデータの並び順は、図6を用いて説明した場合と同一である。また、図12において、Qマトリクスとして記載されているアルファベットが同一であるピクチャは、同一のQマトリクスを用いているものとし、QマトリクスがAのとき、ディフォルトのQマトリクスが用いられているものとする。そして、図中の「1」の記載は、Qマトリクスロードフラグ(Load_Flag)が1となっているピクチャを示すものであり、Qマトリクスロードフラグが1となっているピクチャにおいて、Qマトリクスがロードされるように設定されているものとする。また、図12に示される部分のピクチャにおいては、Sequence Headerが挿入されているピクチャは存在しない。
第1の実施の形態においては、圧縮素材映像1および圧縮素材映像2のデータのそれぞれで、コーディングオーダにおいて、再エンコード部分の先頭がIピクチャとなり、再エンコード部分の終了点がGOPの切れ目、すなわち、Bピクチャ以外となるように、編集点付近の所定の範囲が再エンコード範囲として定められ、それらのデータがデコードされて、編集点で接続された後、再エンコードされる。そして、再エンコードされて生成された圧縮映像データは、デコードされていない圧縮素材映像1および圧縮素材映像2のデータと接続される。
すなわち、図12に示されるように、編集素材となる圧縮素材映像1のデータのBピクチャ101以前のピクチャは、再エンコードされないで用いられるデータとして、ストリームスプライサ25に供給される。また、編集素材となる圧縮素材映像1のデータのIピクチャ102からBピクチャ103以降の所定の範囲の部分は、再エンコードされる部分のデータとして、参照に必要なピクチャ(例えば、Iピクチャ31、Pピクチャ32乃至Pピクチャ35)とともに、デコーダ22に供給される。同様に、編集素材となる圧縮素材映像2のデータのBピクチャ104以前の適当なピクチャからBピクチャ105までのピクチャ、並びに、Bピクチャ38およびBピクチャ39は、再エンコードされる部分のデータとして、参照に必要なピクチャ(例えば、Iピクチャ40)とともに、デコーダ23に供給される。また、編集素材となる圧縮素材映像2のデータのIピクチャ40、および、Pピクチャ106以降のピクチャは、再エンコードされないで用いられるデータとして、ストリームスプライサ25に供給される。
ここで、編集素材である圧縮素材映像1のデータにおいて、Qマトリクスロードフラグに1がセットされているBピクチャ101の直前のピクチャまでのピクチャにおいては、ディフォルトの「A」で示されるQマトリクスが用いられ、Qマトリクスロードフラグに1がセットされているBピクチャ101から、次にQマトリクスロードフラグに1がセットされているBピクチャ121の直前のピクチャまでの範囲においては、「B」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ121以降、次にQマトリクスロードフラグに1がセットされているか、または、Sequence Headerが挿入されているピクチャまでの間の範囲においては、ディフォルトの「A」で示されるQマトリクスが用いられる。
また、編集素材である圧縮素材映像2のデータにおいて、Qマトリクスロードフラグに1がセットされているBピクチャ122の直前のピクチャであるBピクチャ104までのピクチャにおいては、「B」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ122から、次にQマトリクスロードフラグに1がセットされているBピクチャ39の直前のピクチャであるBピクチャ38までの範囲においては、「C」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ39から、次にQマトリクスロードフラグに1がセットされているBピクチャ123の直前のピクチャであるBピクチャ107までの範囲においては、「B」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ123以降、次にQマトリクスロードフラグに1がセットされているか、または、Sequence Headerが挿入されているピクチャまでの間の範囲においては、「D」で示されるQマトリクスが利用される。
このようにQマトリクスの利用が設定されている編集素材である圧縮素材映像1および圧縮素材映像2のデータが、上述した範囲でデコードされて編集点で接続された後、エンコードされて生成された圧縮映像データのそれぞれのピクチャのQマトリクスにおいて、先頭のIピクチャ108から、Qマトリクスロードフラグに1がセットされているBピクチャ110の直前であるBピクチャ109までのQマトリクスは、ディフォルトの「A」で示されるQマトリクスであり、Qマトリクスロードフラグに1がセットされているBピクチャ110以降最後のピクチャであるPピクチャ45までのピクチャにおけるQマトリクスは、「D」で示されるQマトリクスである。
しかしながら、再エンコードされていない部分と再エンコードされた部分とが接続された後の圧縮編集映像において、Qマトリクスが変わってしまう場合がある。例えば、Iピクチャ108から、Qマトリクスロードフラグに1がセットされているBピクチャ110の直前であるBピクチャ109までのQマトリクスは、編集前においては「A」であったにもかかわらず、編集後は、Iピクチャ108の直前のBピクチャ113と同一の「B」で示されるQマトリクスとなってしまい、不整合が発生している。また、再エンコードされた部分に接続された再エンコードされていない部分においては、Qマトリクスロードフラグに1がセットされているBピクチャ116の直前であるBピクチャ115までのQマトリクスは、編集前においては「C」または「B」であったにもかかわらず、編集後は、Pピクチャ45と同一の「D」で示されるQマトリクスとなってしまい、不整合が発生している。
このように、編集のために接続される部分において、接続点がSequence Headerの直前またはQマトリクスロードフラグが1のピクチャの直前でなければ不整合が発生してしまうので、次のデコード処理時に、エンコード時と異なるQマトリクスを使ってデコードしてしまい、正常な復号映像が得られなくなってしまう恐れがある。
したがって、Qマトリクスの不整合の発生を防止し、次のデコード処理時に正常な復号映像を得ることができるようにするためには、編集のために接続される部分の接続点の後となるピクチャのQマトリクスが編集の前後で変わらないようにする必要がある。
次に、図13を参照して、第1の実施の形態において、Qマトリクスの不整合の発生を防止し、次のデコード処理時に正常な復号映像を得ることができるようにするために実行される処理について説明する。
図13に示されるように、第1の実施の形態においては、再エンコードの開始点がGOPの先頭となるように、再エンコード範囲が決められている。したがって、CPU20は、エンコーダ27を制御して、再エンコード範囲の先頭のピクチャであるIピクチャ108にSequence Headerを挿入するか、または、Qマトリクスをロードするように、Qマトリクスロードフラグに1を設定する。エンコーダ27は、CPU20の制御に基づいて、再エンコード範囲の先頭のピクチャであるIピクチャ108にSequence Headerを挿入するか、または、Qマトリクスロードフラグに1を設定する。これにより、圧縮編集画像データにおいてIピクチャ108の直前のピクチャとなるBピクチャ113のQマトリクスの設定にかかわらず、編集前後でQマトリクスの不整合は発生しない。
また、図13に示されるように、第1の実施の形態においては、再エンコードの終了点のピクチャタイプがBピクチャ以外(ここでは、Pピクチャ45)となるようになされており、再エンコードの終了点に接続される再エンコードされない部分の先頭は、コーディングオーダにおいて、Iピクチャ47である。ここで、Iピクチャ47の前に、Sequence Headerが挿入されている場合、Qマトリクスの不整合は発生しない。上述したように、通常、ランダムアクセスのため、Iピクチャの前にはSequence Headerが挿入されている。また、Iピクチャ47の前に、Sequence Headerが挿入されていなくても、Iピクチャ47で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されている場合にも、Qマトリクスの不整合は発生しない。したがって、CPU20は、Iピクチャ47の前に、Sequence Headerが挿入されているか否か、および、Iピクチャ47で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されているか否かを判断する。
すなわち、CPU20は、Iピクチャ47に対応する圧縮素材映像2のIピクチャ40において、Sequence Headerが挿入されているか否か、および、Iピクチャ47で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されているか否かを判断する。なお、CPU20は、圧縮素材映像2のIピクチャ40において、Sequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を、デコーダ23から取得することができるようにしてもよいし、または、CPU11から取得することができるようにしてもよい。
例えば、デコーダ23が、圧縮素材映像2のデータをデコードするときに、Iピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を抽出して、CPU20に供給することができるようにしてもよいし、または、Iピクチャ40にいてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを検出して、CPU20に通知することができるようにしてもよい。または、CPU11が、サウスブリッジ15を制御して、圧縮素材映像2のデータをHDD16から読み出させ、ノースブリッジ12に供給させたとき、ノースブリッジ12の圧縮素材映像2のデータからIピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を抽出し、CPU20に供給することができるようにしてもよいし、または、Iピクチャ40にいてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを検出して、CPU20に通知することができるようにしてもよい。
Iピクチャ47の前に、Sequence Headerが挿入されておらず、かつ、Qマトリクスロードフラグに1が設定されていないと判断された場合、CPU20は、圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を取得し、エンコーダ27を制御して、このQマトリクスを用いてIピクチャ47の直前のPピクチャ45をエンコードさせる。エンコーダ27は、Iピクチャ47の前に、Sequence Headerが挿入されておらず、かつ、Qマトリクスロードフラグに1が設定されていない場合、CPU20の制御に基づいて、圧縮素材映像2のIピクチャ40におけるQマトリクスを用いて、Iピクチャ47の直前のPピクチャ45をエンコードするとともに、Qマトリクスロードフラグに1を設定する。なお、CPU20は、圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を、デコーダ23から取得することができるようにしてもよいし、または、CPU11から取得することができるようにしてもよい。
例えば、デコーダ23が、圧縮素材映像2のデータをデコードするときに、Iピクチャ40におけるQマトリクスの情報を抽出し、CPU20に供給することができるようにしてもよいし、CPU11が、サウスブリッジ15を制御して、圧縮素材映像2のデータをHDD16から読み出させ、ノースブリッジ12に供給させたとき、ノースブリッジ12の圧縮素材映像2のデータからIピクチャ40におけるQマトリクスの情報を抽出し、CPU20に供給することができるようにしてもよい。
また、Iピクチャ47の次のIピクチャまたはPピクチャ、すなわち、図13におけるPピクチャ114においてQマトリクスの不整合が発生するのは、編集前の圧縮素材映像2のIピクチャ40とPピクチャ106とのQマトリクスが異なり、かつ、Pピクチャ106でQマトリクスロードフラグに1が設定されていない場合である。したがって、CPU20は、編集前の圧縮素材映像2のIピクチャ40とPピクチャ106とのQマトリクスが異なっているか否か、および、Pピクチャ106で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されているか否かを判断する。
なお、CPU20は、編集前の圧縮素材映像2のIピクチャ40とPピクチャ106とのQマトリクスの情報、および、Pピクチャ106のQマトリクスロードフラグの値を示す情報を、CPU11から取得することができるようにしてもよい。
例えば、CPU11が、サウスブリッジ15を制御して、圧縮素材映像2のデータをHDD16から読み出させ、ノースブリッジ12に供給させたとき、ノースブリッジ12の圧縮素材映像2のデータから編集前の圧縮素材映像2のIピクチャ40とPピクチャ106とのQマトリクスの情報、および、Pピクチャ106のQマトリクスロードフラグの値を示す情報を抽出し、CPU20に供給することができるようにしてもよい。
Iピクチャ40とPピクチャ106とのQマトリクスが異なり、かつ、Pピクチャ106でQマトリクスロードフラグに1が設定されていない場合、CPU20は、シンタクス更新部28を制御して、Pピクチャ114にQuant Matrix Extensionを追加し、次のデコードにおいてQマトリクスをロードすることができるように、Qマトリクスロードフラグに1を設定させる。シンタクス更新部28は、CPU20の制御に基づいて、Pピクチャ114にQuant Matrix Extensionを追加し、Qマトリクスロードフラグに1を設定する。
次に、図14のフローチャートを参照して、OpenGOP構造の圧縮映像データを、VBVバッファをできるだけ破綻させることがないように編集し、かつ、編集前後でQマトリクスの不整合が起こらないようになされている、第1の実施の形態における編集処理1について説明する。
ステップS1において、CPU11は、図示しない操作入力部から、編集開始を指令するユーザからの操作入力を受け、サウスブリッジ15を制御して、図示しない操作入力部から供給されたユーザの操作入力を基に、HDD16から、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータを読み出させ、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介して、メモリ18に供給させて記憶させるとともに、編集点を示す情報と、編集開始を示すコマンドを、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU20に供給する。
なお、このとき、CPU11は、必要に応じて、後述する再エンコードおよび接続処理1において必要な情報、すなわち、圧縮素材映像2のデータにおいて、Iピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報、I編集前の圧縮素材映像2のピクチャ40におけるQマトリクスの情報、または、編集前の圧縮素材映像2のIピクチャ40とPピクチャ106とのQマトリクスの情報、および、Pピクチャ106のQマトリクスロードフラグの値を示す情報を、HDD16から読み出された、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータから抽出または検出し、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU20に供給または通知するようにしてもよい。
ステップS2において、メモリ18は、圧縮符号化された2つの編集素材データを取得する。
ステップS3において、CPU20は、CPU11から供給された、編集点を示す情報と、編集開始を示すコマンドを基に、再エンコードの開始点がGOPの先頭となり、再エンコードの終了点のピクチャタイプがBピクチャ以外(ここでは、Pピクチャ45)となるように、圧縮符号化された編集素材データのデコード範囲を決定する。
ステップS4において、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化された2つの編集素材データから、決定されたデコード範囲のデータをデコードおよび再エンコードするために必要なデータを抽出させ、デコーダ22およびデコーダ23にそれぞれ供給させる。また、このとき、CPU20は、PCIブリッジ17を制御して、再エンコードされない部分の圧縮符号化された編集素材データを、ストリームスプライサ25に供給させる。PCIブリッジ17は、CPU20の制御に基づいて、メモリ18に記憶されている圧縮符号化された2つの編集素材データから、決定されたデコード範囲のデータをデコードおよび再エンコードするために必要なデータを抽出し、デコーダ22およびデコーダ23にそれぞれ供給するとともに、再エンコードされない部分の圧縮符号化された編集素材データを、ストリームスプライサ25に供給する。
ステップS5において、CPU20は、デコーダ22およびデコーダ23を制御して、決定されたデコード範囲のデータをデコードさせる。デコーダ22およびデコーダ23は、CPU20の制御に基づいて、供給された圧縮符号化された編集素材データをデコードして、エフェクト/スイッチ26に供給する。
なお、このとき、デコーダ23は、必要に応じて、後述する再エンコードおよび接続処理1において必要な情報、すなわち、圧縮素材映像2のデータをデコードするときに、Iピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報、並びに、編集前の圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を抽出または検出し、コントロールバス19を介して、CPU20に供給または通知するようにしてもよい。
ステップS6において、CPU20は、エフェクト/スイッチ26を制御して、デコードされたデータを編集点で接続させて、必要に応じて、エフェクトをかけさせる。エフェクト/スイッチ26は、CPU20の制御に基づいて、供給された非圧縮の復号映像素材を編集点で接続して、必要に応じて、エフェクトをかけ、エンコーダ27に供給する。
ステップS7において、図15を用いて後述する、再エンコードおよび接続処理1が実行され、処理は終了される。
このような処理により、Long GOPのOpen GOP構造の圧縮映像データの編集点付近を部分的にデコードし、デコードされた非圧縮の映像信号を所定の編集点で接続した後、再エンコードを行い、デコードおよび再エンコードされていない部分の圧縮映像データと接続することにより、Long GOPのOpen GOP構造の圧縮映像データの編集を実現することができる。
次に、図15のフローチャートを参照して、図14のステップS7において実行される、再エンコードおよび接続処理1について説明する。
ステップS21において、エンコーダ27は、CPU20の制御に基づいて、コーディングオーダで再エンコードの開始点となるピクチャをIピクチャとし、シーケンスヘッダを挿入して、エンコードを行う。
ステップS22において、エンコーダ27は、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との接続点となるピクチャであるか否か、すなわち、図13における場合では、Pピクチャ45であるか否かを判断する。ステップS22において、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との接続点となるピクチャではないと判断された場合、処理は、後述するステップS25に進む。
ステップS22において、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との接続点となるピクチャであると判断された場合、ステップS23において、エンコーダ27は、CPU20に、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との接続点となるピクチャであることを通知する。CPU20は、CPU11、または、デコーダ23から供給された、圧縮素材映像2のIピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を基に、再エンコードの最後のピクチャに結合される再エンコードされない部分の先頭のピクチャ、すなわち、Iピクチャ47に、シーケンスヘッダが挿入されているか、または、Qマトリクスがロードされるように設定されているか否かを判断する。ステップS23において、再エンコードの最後のピクチャに結合される再エンコードされない部分の先頭のピクチャに、シーケンスヘッダが挿入されているか、または、Qマトリクスがロードされるように設定されていると判断された場合、処理は、後述するステップS25に進む。
ステップS23において、再エンコードの最後のピクチャに結合される再エンコードされない部分の先頭のピクチャに、シーケンスヘッダが挿入されておらず、かつ、Qマトリクスがロードされるように設定されていないと判断された場合、ステップS24において、CPU20は、デコーダ23またはCPU11から、編集前の圧縮素材映像2の対応するピクチャ、すなわち、圧縮素材映像2のIピクチャ40のQマトリクスを取得し、同一のQマトリクスを用いてPピクチャ45のエンコードが行われるように、エンコーダ27を制御する。エンコーダ27は、CPU20の制御に基づいて、再エンコードしない部分との接続点となるピクチャであるPピクチャ45を、圧縮素材映像2のIピクチャ40のQマトリクスを用いてエンコードするとともに、Qマトリクスロードフラグに1を設定する。
ステップS22において、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との接続点となるピクチャではないと判断された場合、もしくは、ステップS23において、再エンコードの最後のピクチャに結合される再エンコードされない部分の先頭のピクチャに、シーケンスヘッダが挿入されているか、または、Qマトリクスがロードされるように設定されていると判断された場合、ステップS25において、エンコーダ27は、CPU20の制御に基づいて、通常アルゴリズムで定められるQマトリクスを用いて、ピクチャのエンコードを行う。
ステップS24またはステップS25の処理の終了後、ステップS26において、エンコーダ27は、再エンコードが終了したか否かを判断する。ステップS26において、再エンコードが終了していないと判断された場合、処理は、ステップS22に戻り、それ以降の処理が繰り返される。
ステップS26において、再エンコードが終了したと判断された場合、ステップS27において、CPU20は、デコーダ23またはCPU11から供給される情報を基に、再エンコードされる部分に続く再エンコードされない部分の1つ目と2つ目のIピクチャまたはPピクチャ、すなわち、Iピクチャ47とPピクチャ114との編集前のQマトリクスは同一であるか否かを判断する。ステップS27において、再エンコードされる部分に続く再エンコードされない部分の1つ目と2つ目のIピクチャまたはPピクチャの編集前のQマトリクスは同一であると判断された場合、処理は、後述するステップS30に進む。
ステップS27において、再エンコードされる部分に続く再エンコードされない部分の1つ目と2つ目のIピクチャまたはPピクチャの編集前のQマトリクスは同一ではないと判断された場合、ステップS28において、CPU20は、デコーダ23またはCPU11から供給される情報を基に、再エンコードされる部分に続く再エンコードされない部分の2つ目のIピクチャまたはPピクチャ、すなわち、Pピクチャ114は、Qマトリクスがロードされるように設定されているか否かを判断する。ステップS28において、再エンコードされる部分に続く再エンコードされない部分の2つ目のIピクチャまたはPピクチャは、Qマトリクスがロードされるように設定されていると判断された場合、処理は、後述するステップS30に進む。
ステップS28において、再エンコードされる部分に続く再エンコードされない部分の2つ目のIピクチャまたはPピクチャは、Qマトリクスがロードされるように設定されていないと判断された場合、ステップS29において、CPU20は、シンタクス更新部28を制御して、再エンコードされる部分に続く再エンコードされない部分の2つ目のIピクチャまたはPピクチャ、すなわち、Pピクチャ114のシンタクスを更新させ、QuantMatrixExtentionを追加させ、次のデコード時にQマトリクスがロードされるように設定させる。シンタクス更新部28は、CPU20の制御に基づいて、再エンコードされる部分に続く再エンコードされない部分の2つ目のIピクチャまたはPピクチャ、すなわち、Pピクチャ114のシンタクスを更新して、QuantMatrixExtentionを追加して、次のデコード時にQマトリクスがロードされるように設定する。
ステップS27において、再エンコードされる部分に続く再エンコードされない部分の1つ目と2つ目のIピクチャまたはPピクチャの編集前のQマトリクスは同一であると判断された場合、ステップS28において、再エンコードされる部分に続く再エンコードされない部分の2つ目のIピクチャまたはPピクチャは、Qマトリクスがロードされるように設定されていると判断された場合、もしくは、ステップS29の処理の終了後、ステップS30において、CPU20は、ストリームスプライサ25を制御して、再エンコードされていない部分と、再エンコードをされていない部分とを接続させる。ストリームスプライサ25は、CPU20の制御に基づいて、再エンコードされていない部分と、再エンコードをされていない部分、すなわち、Bピクチャ113とIピクチャ108、および、Pピクチャ45とIピクチャ47とを接続し、生成された圧縮編集映像データをPCIブリッジ17およびデコーダ24に供給して、処理は、図14のステップS7に戻り、処理が終了される。
このような処理により、編集前後でQマトリクスに不整合が発生することがなくなるため、編集による画像の劣化を防止することができる。
次に、図16を用いて、上述した第2の実施の形態における場合の、編集時の不具合の例について説明する。
なお、図16における圧縮映像の並び順は、コーディングオーダで記載されており、このデータの並び順は、図10を用いて説明した場合と同一である。また、図16において、Qマトリクスとして記載されているアルファベットが同一であるピクチャは、同一のQマトリクスを用いているものとし、QマトリクスがAのとき、ディフォルトのQマトリクスが用いられているものとする。そして、Qマトリクスロードフラグが1となっているピクチャにおいて、Qマトリクスがロードされるように設定されているものとする。また、図16において、Sequence Headerが挿入されているピクチャには、丸印が記載されている。
第2の実施の形態においては、圧縮素材映像1において、再エンコードする区間の開始点は、部分再エンコードされた圧縮映像の前に結合する、再エンコードしない部分の圧縮映像のディスプレイオーダで最後のピクチャのピクチャタイプが、IピクチャまたはPピクチャになるように決定されている。例えば、図16にも示されるように、再エンコードしない部分の圧縮素材映像1のディスプレイオーダで最後のピクチャのピクチャタイプがPピクチャ(Pピクチャ46)になるように、再エンコードする区間のディスプレイオーダにおける開始点は、圧縮素材映像1において、Pピクチャ35の次のBピクチャ36に決定される。換言すれば、再エンコードしない部分の圧縮映像がGOPの終了位置となるので、エンコード処理が行いやすいようになされている。
また、圧縮素材映像2において、再エンコードする区間の終了点は、部分再エンコードされた圧縮映像の後に結合する再エンコードしない部分の圧縮映像のディスプレイオーダで最初のピクチャのピクチャタイプがIピクチャになるように決定される。また、図16にも示されるように、再エンコードにおいては、再エンコードする区間の終了点付近のBピクチャタイプの枚数が編集前の圧縮素材映像2と同一となり、そのBピクチャの直前のピクチャのピクチャタイプがIピクチャまたはPピクチャとなるようになされる。
すなわち、図16に示されるように、編集素材となる圧縮素材映像1のデータのBピクチャ151以前のピクチャは、再エンコードされないで用いられるデータとして、ストリームスプライサ25に供給される。また、編集素材となる圧縮素材映像1のデータのIピクチャ161からBピクチャ162以降の所定の範囲の部分は、再エンコードされる部分のデータとして、参照に必要なピクチャ(例えば、Iピクチャ31、Pピクチャ32乃至Pピクチャ35)とともに、デコーダ22に供給される。同様に、編集素材となる圧縮素材映像2のデータのBピクチャ39より前の、編集点を含む所定の範囲のピクチャは、再エンコードされる部分のデータとして、参照に必要なピクチャ(例えば、Iピクチャ40)とともに、デコーダ23に供給される。また、編集素材となる圧縮素材映像2のデータのIピクチャ40とPピクチャ152以降のピクチャは、再エンコードされないで用いられるデータとして、ストリームスプライサ25に供給される。
ここで、編集素材である圧縮素材映像1のデータにおいて、Qマトリクスロードフラグに1がセットされているBピクチャ151までのピクチャにおいては、ディフォルトの「A」で示されるQマトリクスが用いられ、Qマトリクスロードフラグに1がセットされているBピクチャ151からQマトリクスロードフラグに1がセットされているBピクチャ163の直前のピクチャまでの範囲においては、「B」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ163以降、次にQマトリクスロードフラグに1がセットされているか、または、Sequence Headerが挿入されているピクチャまでの間の範囲においては、ディフォルトの「A」で示されるQマトリクスが用いられる。
また、編集素材である圧縮素材映像2のデータにおいて、Qマトリクスロードフラグに1がセットされているとともに、Sequence Headerが挿入されているIピクチャ164から、Qマトリクスロードフラグに1がセットされているBピクチャ165の直前のピクチャまでのピクチャにおいては、「B」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ165から、次にQマトリクスロードフラグに1がセットされているBピクチャ166の直前のピクチャであるBピクチャ153までの範囲においては、「C」で示されるQマトリクスが利用され、Qマトリクスロードフラグに1がセットされているBピクチャ166以降、次にQマトリクスロードフラグに1がセットされているか、または、Sequence Headerが挿入されているピクチャまでの間の範囲においては、「D」で示されるQマトリクスが利用される。
このようにQマトリクスの利用が設定されている編集素材である圧縮素材映像1および圧縮素材映像2のデータが、上述した範囲でデコードされて編集点で接続された後、エンコードされて生成された圧縮映像データにおいて、先頭のIピクチャ154から、Qマトリクスロードフラグに1がセットされているBピクチャ167の直前のピクチャまでのQマトリクスは、ディフォルトの「A」で示されるQマトリクスであり、Qマトリクスロードフラグに1がセットされているBピクチャ167から、Bピクチャ73までのQマトリクスは、「D」で示されるQマトリクスとなる。
しかしながら、再エンコードされていない部分と接続された後の圧縮編集映像において、Iピクチャ154にSequence Headerが挿入されていないので、Iピクチャ154から、Qマトリクスロードフラグに1がセットされているBピクチャ167の直前のピクチャまでのQマトリクスは、編集前においては「A」であったにもかかわらず、編集後には、Iピクチャ154の直前のBピクチャ151と同一の「B」で示されるQマトリクスとなってしまい、不整合が発生している。また、再エンコードされた部分に接続された再エンコードされていないIピクチャ47は、図16に示される場合においては、Sequence Headerが挿入されておらず、Qマトリクスロードフラグが1でもないので、Iピクチャ47に対応する編集前のIピクチャ40のQマトリクスが「C」であるのにもかかわらず、直前のBピクチャ81と同一の「D」で示されるQマトリクスとなってしまい、不整合が発生している。その次のBピクチャ72のQマトリクスは、図16における場合では、編集前後において「D」で一致しており、不整合が生じていないが、Iピクチャ47にSequence Headerが挿入されているか、Qマトリクスロードフラグが1であった場合、編集後のQマトリクスは、Iピクチャ47と同一となってしまい、不整合が発生する可能性がある。そして、エンコードされる最後のピクチャであるBピクチャ73に接続されるPピクチャ82から、次にSequence Headerが挿入されているか、Qマトリクスロードフラグが1であるピクチャまでのピクチャ、すなわち、図16における場合においては、Pピクチャ82およびBピクチャ155のQマトリクスは、編集前においては「C」であったにもかかわらず、編集後には、Pピクチャ82の直前のBピクチャ73と同一の「D」で示されるQマトリクスとなってしまい、不整合が発生している。
このように、編集のために接続される部分の接続点前後でQマトリクスが異なる場合、接続点がSequence Headerの直前またはQマトリクスロードフラグが1のピクチャの直前でなければ不整合が発生するので、次のデコード処理時に、エンコード時と異なるQマトリクスを使ってデコードしてしまうので、正常な復号映像が得られなくなってしまう恐れがある。
したがって、Qマトリクスの不整合の発生を防止し、次のデコード処理時に正常な復号映像を得ることができるようにするためには、編集のために接続される部分の接続点の後となるピクチャのQマトリクスが編集の前後で変わらないようにする必要がある。
次に、図17を参照して、第2の実施の形態において、Qマトリクスの不整合の発生を防止し、次のデコード処理時に正常な復号映像を得ることができるようにするために実行される処理について説明する。
図17に示されるように、第2の実施の形態においては、再エンコードの開始点がGOPの先頭となるように、再エンコード範囲が決められている。したがって、CPU20は、エンコーダ27を制御して、再エンコード範囲の先頭のピクチャであるIピクチャ154にSequence Headerを挿入するか、または、Qマトリクスをロードするように、Qマトリクスロードフラグに1を設定する。エンコーダ27は、CPU20の制御に基づいて、再エンコード範囲の先頭のピクチャであるIピクチャ154にSequence Headerを挿入するか、または、Qマトリクスロードフラグに1を設定する。これにより、圧縮編集画像データにおいてIピクチャ154の直前のピクチャとなるBピクチャ151のQマトリクスの設定にかかわらず、編集前後でQマトリクスの不整合は発生しない。
また、図17に示されるように、第2の実施の形態においては、圧縮素材映像2において、再エンコードされる区間の終了点は、再エンコードされた圧縮映像の後に結合する再エンコードしない部分の圧縮映像のディスプレイオーダで最初のピクチャのピクチャタイプがIピクチャになるように決定され、再エンコードにおいては、再エンコードする区間の終了点付近のBピクチャタイプの枚数が編集前の圧縮素材映像2と同一となり、そのBピクチャの直前のピクチャのピクチャタイプがIピクチャまたはPピクチャとなるようになされる。そして、再エンコードされた部分と再エンコードされない圧縮素材映像2に対応する部分の接続は、コーディングオーダで、再エンコードする区間の終了点付近の連続するBピクチャ、すなわち、Bピクチャ72および73の直前に、再エンコードされない圧縮素材映像2に対応する部分の先頭のIピクチャ47が挿入され、Bピクチャ72およびBピクチャ73に続いて、圧縮素材映像2のPピクチャ152に対応するPピクチャ82が続くようになされている。
ここで、Iピクチャ47の前に、Sequence Headerが挿入されている場合、Iピクチャ47のQマトリクスの不整合は発生しない。上述したように、通常、ランダムアクセスのため、Iピクチャの前にはSequence Headerが挿入されている。また、Iピクチャ47の前に、Sequence Headerが挿入されていなくても、Iピクチャ47で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されている場合にも、Qマトリクスの不整合は発生しない。したがって、CPU20は、Iピクチャ47の前に、Sequence Headerが挿入されているか否か、および、Iピクチャ47で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されているか否かを判断する。
すなわち、CPU20は、Iピクチャ47に対応する圧縮素材映像2のIピクチャ40において、Sequence Headerが挿入されているか否か、および、Iピクチャ47で、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されているか否かを判断する。なお、CPU20は、圧縮素材映像2のIピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を、デコーダ23から取得することができるようにしてもよいし、または、CPU11から取得することができるようにしてもよい。
例えば、デコーダ23が、圧縮素材映像2のデータをデコードするときに、Iピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを検出するか、これらを示す情報を抽出し、CPU20に供給することができるようにしてもよいし、CPU11が、サウスブリッジ15を制御して、圧縮素材映像2のデータをHDD16から読み出させ、ノースブリッジ12に供給させたとき、ノースブリッジ12の圧縮素材映像2からIピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを検出するか、これらを示す情報を抽出し、CPU20に供給することができるようにしてもよい。
Iピクチャ47の前に、Sequence Headerが挿入されておらず、かつ、Qマトリクスロードフラグに1が設定されていないと判断された場合、CPU20は、圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を取得し、エンコーダ27を制御して、このQマトリクスを用いて、Iピクチャ47の直前となるBピクチャ81をエンコードさせるとともに、Qマトリクスロードフラグに1を設定させる。エンコーダ27は、Iピクチャ47の前に、Sequence Headerが挿入されておらず、かつ、Qマトリクスロードフラグに1が設定されていない場合、CPU20の制御に基づいて、圧縮素材映像2のIピクチャ40におけるQマトリクスを用いて、Bピクチャ81をエンコードするとともに、Qマトリクスロードフラグに1を設定する。なお、CPU20は、圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を、デコーダ23から取得することができるようにしてもよいし、または、CPU11から取得することができるようにしてもよい。
例えば、デコーダ23が、圧縮素材映像2のデータをデコードするときに、Iピクチャ40におけるQマトリクスの情報を抽出し、CPU20に供給することができるようにしてもよいし、CPU11が、サウスブリッジ15を制御して、圧縮素材映像2のデータをHDD16から読み出させ、ノースブリッジ12に供給させたとき、ノースブリッジ12の圧縮素材映像2からIピクチャ40におけるQマトリクスの情報を抽出し、CPU20に供給することができるようにしてもよい。
また、コーディングオーダで、Iピクチャ47の次に接続されるBピクチャ72においては、Iピクチャ47と同一のQマトリクスでエンコードされるようになされているか、または、Qマトリクスがロードされるように、Qマトリクスロードフラグに1が設定されていれば、Qマトリクスの不整合は発生しない。したがって、CPU20は、圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を取得し、Iピクチャ47の次に接続されるBピクチャ72は、Iピクチャ47に対応するIピクチャ40におけるQマトリクスと同一のQマトリクスでエンコードされるか否か、および、Qマトリクスロードフラグに1が設定されているか否かを判断する。なお、CPU20は、圧縮素材映像2のIピクチャ40におけるQマトリクスの情報を、上述した場合と同様にして、デコーダ23から取得することができるようにしてもよいし、または、CPU11から取得することができるようにしてもよい。
そして、CPU20は、Iピクチャ47の次に接続されるBピクチャ72は、Iピクチャ47に対応するIピクチャ40におけるQマトリクスと同一のQマトリクスでエンコードされておらず、かつ、Qマトリクスロードフラグに1が設定されていない場合、エンコーダ27を制御して、Bピクチャ72のQマトリクスロードフラグに1を設定させる。エンコーダ27は、CPU20の制御に基づいて、Bピクチャ72のQマトリクスロードフラグに1を設定する。
また、コーディングオーダで、再エンコードされる最後のピクチャに続くピクチャ、すなわち、Bピクチャ73の次に接続されるPピクチャ82でQマトリクスの不整合を発生させないためには、Bピクチャ73を、編集前の圧縮素材映像2のBピクチャ39と同一のQマトリクスでエンコードするようにすればよい。このようにすれば、圧縮素材映像2のPピクチャ82(編集前の圧縮素材映像2のBピクチャ39に続くPピクチャ152に対応するピクチャ)において、Qマトリクスロードフラグに1が設定されているか否かにかかわらず、Bピクチャ73の次に接続されるPピクチャ82でQマトリクスの不整合を発生させないようにすることができる。
すなわち、CPU20は、編集前の圧縮素材映像2のBピクチャ39におけるQマトリクスの情報を取得し、エンコーダ27を制御して、このQマトリクスを用いて、Bピクチャ73をエンコードさせるとともに、Qマトリクスロードフラグに1を設定させる。エンコーダ27は、CPU20の制御に基づいて、圧縮素材映像2のBピクチャ39におけるQマトリクスを用いて、Bピクチャ73をエンコードするとともに、Qマトリクスロードフラグに1を設定する。なお、CPU20は、圧縮素材映像2のBピクチャ39におけるQマトリクスの情報を、CPU11から取得することができる。
例えば、CPU11が、サウスブリッジ15を制御して、圧縮素材映像2のデータをHDD16から読み出させ、ノースブリッジ12に供給させたとき、ノースブリッジ12の圧縮素材映像2のデータからBピクチャ39におけるQマトリクスの情報を抽出し、CPU20に供給することができるようにすることができる。
すなわち、CPU20は、CPU112から供給されたBピクチャ39におけるQマトリクスの情報をエンコーダ27に供給する。エンコーダ27は、CPU20の制御に基づいて、このQマトリクスを用いて、Bピクチャ73をエンコードする。
次に、図18のフローチャートを参照して、OpenGOP構造の圧縮映像データを、VBVバッファを破綻させることがないように編集し、かつ、編集前後でQマトリクスの不整合が起こらないようになされている、第2の実施の形態における編集処理2について説明する。
ステップS41において、CPU11は、図示しない操作入力部から、編集開始を指令するユーザからの操作入力を受け、サウスブリッジ15を制御して、図示しない操作入力部から供給されたユーザの操作入力を基に、HDD16から、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータを読み出させ、ノースブリッジ12、PCIバス14、および、PCIブリッジ17を介して、メモリ18に供給させて記憶させるとともに、編集点を示す情報と、編集開始を示すコマンドを、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU20に供給する。
なお、このとき、CPU11は、必要に応じて、後述する再エンコードおよび接続処理1において必要な情報、すなわち、圧縮素材映像2のデータにおいて、Iピクチャ40にSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報、編集前の圧縮素材映像2のIピクチャ40のQマトリクスの情報、または、Bピクチャ39のQマトリクスの情報を、HDD16から読み出された、圧縮符号化された圧縮素材映像1のデータおよび圧縮素材映像2のデータから抽出または検出し、ノースブリッジ12、PCIバス14、PCIブリッジ17、および、コントロールバス19を介して、CPU20に供給するようにしてもよい。
ステップS42において、メモリ18は、圧縮符号化された2つの編集素材データを取得する。
ステップS43において、CPU20は、CPU11から供給された、編集点を示す情報と、編集開始を示すコマンドを基に、再エンコードしない部分の圧縮素材映像1のディスプレイオーダで最後のピクチャのピクチャタイプがPピクチャになり、再エンコードしない部分の圧縮素材映像2のディスプレイオーダで最初のピクチャのピクチャタイプがIピクチャになるように、圧縮符号化された編集素材データのデコード範囲を決定する。
ステップS44において、CPU20は、PCIブリッジ17を制御して、メモリ18に記憶されている圧縮符号化された2つの編集素材データから、決定されたデコード範囲のデータをデコードおよび再エンコードするために必要なデータを抽出させ、デコーダ22およびデコーダ23にそれぞれ供給させる。また、このとき、CPU20は、PCIブリッジ17を制御して、再エンコードされない部分の圧縮符号化された編集素材データを、ストリームスプライサ25に供給させる。PCIブリッジ17は、CPU20の制御に基づいて、メモリ18に記憶されている圧縮符号化された2つの編集素材データから、決定されたデコード範囲のデータをデコードおよび再エンコードするために必要なデータを抽出し、デコーダ22およびデコーダ23にそれぞれ供給するとともに、再エンコードされない部分の圧縮符号化された編集素材データを、ストリームスプライサ25に供給する。
ステップS45において、CPU20は、デコーダ22およびデコーダ23を制御して、決定されたデコード範囲のデータをデコードさせる。デコーダ22およびデコーダ23は、CPU20の制御に基づいて、供給された圧縮符号化された編集素材データをデコードして、エフェクト/スイッチ26に供給する。
なお、このとき、デコーダ23は、必要に応じて、後述する再エンコードおよび接続処理1において必要な情報、すなわち、圧縮素材映像2のデータをデコードするときに、Iピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報、または、編集前の圧縮素材映像2のIピクチャ40のQマトリクスの情報を抽出または検出し、コントロールバス19を介して、CPU20に供給するようにしてもよい。
ステップS46において、CPU20は、エフェクト/スイッチ26を制御して、デコードされたデータを編集点で接続させて、必要に応じて、エフェクトをかけさせる。エフェクト/スイッチ26は、CPU20の制御に基づいて、供給された非圧縮の復号映像素材を編集点で接続して、必要に応じて、エフェクトをかけ、エンコーダ27に供給する。
ステップS47において、図19および図20を用いて後述する、再エンコードおよび接続処理2が実行され、処理は終了される。
このような処理により、Long GOPのOpen GOP構造の圧縮映像データの編集点付近を部分的にデコードし、デコードされた非圧縮の映像信号を所定の編集点で接続した後、再エンコードを行い、デコードおよび再エンコードされていない部分の圧縮映像データと接続することにより、Long GOPのOpen GOP構造の圧縮映像データの編集を実現することができる。
次に、図19および図20を参照して、図18のステップS47において実行される、再エンコードおよび接続処理2について説明する。
ステップS61において、エンコーダ27は、CPU20の制御に基づいて、コーディングオーダで再エンコードの開始点となるピクチャを、Iピクチャとし、シーケンスヘッダを挿入して、エンコードを行う。
ステップS62において、エンコーダ27は、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との最初の接続点となるピクチャであるか否か、すなわち、図17における場合では、Bピクチャ81であるか否かを判断する。ステップS62において、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との最初の接続点となるピクチャではないと判断された場合、処理は、後述するステップS65に進む。
ステップS62において、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との最初の接続点となるピクチャであると判断された場合、ステップS63において、エンコーダ27は、CPU20に、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との最初の接続点となるピクチャであることを通知する。CPU20は、CPU11、または、デコーダ23から供給された、圧縮素材映像2のIピクチャ40においてSequence Headerが挿入されているか否か、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を基に、再エンコードの最後に連続するBピクチャの前に結合される再エンコードされない部分の先頭のIピクチャに、シーケンスヘッダが挿入されているか、または、Qマトリクスがロードされるように設定されているか否かを判断する。ステップS63において、再エンコードの最後に連続するBピクチャの前に結合される再エンコードされない部分の先頭のIピクチャに、シーケンスヘッダが挿入されているか、または、Qマトリクスがロードされるように設定されていると判断された場合、処理は、後述するステップS65に進む。
ステップS63において、再エンコードの最後に連続するBピクチャの前に結合される再エンコードされない部分の先頭のIピクチャに、シーケンスヘッダが挿入されておらず、かつ、Qマトリクスがロードされるように設定されていないと判断された場合、ステップS64において、CPU20は、デコーダ23またはCPU11から、編集前の圧縮素材映像2の対応するピクチャ、すなわち、圧縮素材映像2のIピクチャ40のQマトリクスを取得し、同一のQマトリクスを用いてBピクチャ81のエンコードが行われるように、エンコーダ27を制御する。エンコーダ27は、CPU20の制御に基づいて、再エンコードしない部分との最初の接続点となるピクチャ、すなわち、Bピクチャ81を、圧縮素材映像2のIピクチャ40のQマトリクスを用いてエンコードする。
ステップS62において、次にエンコードを行おうとしているピクチャは、再エンコードしない部分との最初の接続点となるピクチャではないと判断された場合、ステップS63において、再エンコードの最後に連続するBピクチャの前に結合される再エンコードされない部分の先頭のIピクチャに、シーケンスヘッダが挿入されているか、または、Qマトリクスがロードされるように設定されていると判断された場合、または、ステップS64の処理の終了後、ステップS65において、エンコーダ27は、次にエンコードを行おうとしているピクチャは、再エンコードされない部分の先頭のIピクチャに接続されるピクチャ、すなわち、図17におけるBピクチャ72であるか否かを判断する。ステップS65において、次にエンコードを行おうとしているピクチャは、再エンコードされない部分の先頭のIピクチャに接続されるピクチャではないと判断された場合、処理は、後述するステップS69に進む。
ステップS65において、次にエンコードを行おうとしているピクチャは、再エンコードされない部分の先頭のIピクチャに接続されるピクチャであると判断された場合、ステップS66において、エンコーダ27は、CPU20に、次にエンコードを行おうとしているピクチャは、再エンコードされない部分の先頭のIピクチャに接続されるピクチャであることを通知するとともに、このピクチャをエンコードするために用いようとしているQマトリクスに関する情報、および、Qマトリクスロードフラグに1が設定されているか否かを示す情報を供給する。CPU20は、エンコーダ27から供給された、Iピクチャに接続されるピクチャをエンコードするために用いようとしているQマトリクスに関する情報と、CPU11、または、デコーダ23から供給された、編集前の圧縮素材映像2の再エンコードされない部分の先頭のIピクチャに接続されるピクチャに対応するピクチャ、すなわち、圧縮素材映像2のIピクチャ40のQマトリクスに関する情報を基に、再エンコードされない部分の先頭のIピクチャと、これに接続されるピクチャのQマトリクスは同一であるか否かを判断する。ステップS66において、再エンコードされない部分の先頭のIピクチャと、これに接続されるピクチャのQマトリクスは同一であると判断された場合、処理は、後述するステップS69に進む。
ステップS66において、再エンコードされない部分の先頭のIピクチャと、これに接続されるピクチャのQマトリクスは同一ではないと判断された場合、ステップS67において、CPU20は、再エンコードされない部分の先頭のIピクチャに接続されるピクチャは、Qマトリクスがロードされるように設定されているか否かを判断する。ステップS67において、再エンコードされない部分の先頭のIピクチャに接続されるピクチャは、Qマトリクスがロードされるように設定されていると判断された場合、処理は、後述するステップS69に進む。
ステップS67において、再エンコードされない部分の先頭のIピクチャに接続されるピクチャは、Qマトリクスがロードされるように設定されていないと判断された場合、ステップS68において、CPU20は、エンコーダ27を制御して、再エンコードされない部分の先頭のIピクチャに接続されるピクチャ、すなわち、図17におけるBピクチャ72に、Qマトリクスがロードされるように設定させる。エンコーダ27は、CPU20の制御に基づいて、Qマトリクスがロードされるように設定して、再エンコードされない部分の先頭のIピクチャに接続されるピクチャ、すなわち、図17におけるBピクチャ72をエンコードする。
ステップS65において、次にエンコードを行おうとしているピクチャは、再エンコードされない部分の先頭のIピクチャに接続されるピクチャではないと判断された場合、ステップS66において、再エンコードされない部分の先頭のIピクチャと、これに接続されるピクチャのQマトリクスは同一であると判断された場合、ステップS67において、再エンコードされない部分の先頭のIピクチャに接続されるピクチャは、Qマトリクスがロードされるように設定されていると判断された場合、または、ステップS68の処理の終了後、ステップS69において、エンコーダ27は、次にエンコードするピクチャは、再エンコードする部分の最後のBピクチャ、すなわち、図17におけるBピクチャ73であるか否かを判断する。
ステップS69において、次にエンコードするピクチャは、再エンコードする部分の最後のBピクチャであると判断された場合、ステップS70において、エンコーダ27は、CPU20に、次にエンコードを行おうとしているピクチャは、再エンコードする部分の最後のBピクチャであることを通知する。CPU20は、CPU11から供給された、編集前の圧縮素材映像2の対応するBピクチャであるBピクチャ39のQマトリクスを取得し、エンコーダ27を制御して、取得したBピクチャ39のQマトリクスを用いて、再エンコードする部分の最後のBピクチャのエンコードを実行させる。エンコーダ27は、CPU20の制御に基づいて、Bピクチャ39のQマトリクスを用いて、再エンコードする部分の最後のBピクチャ、すなわち、図17におけるBピクチャ73のエンコードを行う。
ステップS69において、次にエンコードするピクチャは、再エンコードする部分の最後のBピクチャではない、すなわち、再エンコードされない部分と接続されないピクチャのうちのいずれかであると判断された場合、ステップS71において、エンコーダ27は、通常アルゴリズムで定められるQマトリクスを用いて、エンコードを行う。
ステップS70、または、ステップS71の処理の終了後、ステップS72において、エンコーダ27は、再エンコードされる部分の全てのデータが再エンコードされたか否かを判断する。ステップS72において、再エンコードされる部分の全てのデータが再エンコードされていないと判断された場合、処理は、ステップS62に戻り、それ以降の処理が実行される。
ステップS72において、再エンコードされる部分の全てのデータが再エンコードされたと判断された場合、ステップS73において、図21を用いて後述する接続処理が実行されて、処理は、図18のステップS47に戻り、処理が終了される。
このような処理により、再エンコードが行われた部分と再エンコードが行われていない部分の接続点において、編集前後でQマトリクスの不整合が発生しないようにすることができ、編集による画像の劣化を防止することができる。
次に、図21のフローチャートを参照して、図20のステップS73において実行される接続処理について説明する。
ステップS91において、ストリームスプライサ25は、PCIブリッジ17から供給された、再エンコードしない部分の圧縮素材映像1のデータ、すなわち、図9または図17における場合では、ディスプレイオーダにおいて時間的にPピクチャ35(すなわち、編集後のPピクチャ46)以前となるピクチャのデータを取得する。
ステップS92において、ストリームスプライサ25は、エンコーダ27から供給された、再エンコードされた編集点付近の圧縮映像データ、すなわち、図9における場合では、ディスプレイオーダにおいてBピクチャ41乃至Iピクチャ74に対応するピクチャを取得する。
ステップS93において、ストリームスプライサ25は、再エンコードされた編集点付近の圧縮映像データのうち、エンコードの参照のためにエンコードされた部分、すなわち、図9における場合では、Pピクチャ41およびIピクチャ74に対応するピクチャを破棄し、再エンコードしない部分の圧縮素材映像1のデータと、再エンコードされた圧縮映像データを接続する。すなわち、図9および図17における場合では、ストリームスプライサ25は、Pピクチャ46とBピクチャ42とがディスプレイオーダで連続するように接続する。
ステップS94において、ストリームスプライサ25は、PCIブリッジ17から供給された、再エンコードしない部分の圧縮素材映像2のデータ、すなわち、図9または図17における場合では、ディスプレイオーダにおいて時間的にIピクチャ40(すなわち、編集後のIピクチャ47)以降となるピクチャのデータを取得する。
ステップS95において、ストリームスプライサ25は、再エンコードされた編集点付近の圧縮映像データのうち、コーディングオーダで最後からn+1番目のピクチャ、すなわち、図9、図10または図17における場合では、B12ピクチャ81に対応するピクチャの次に、再エンコードしない部分の圧縮素材映像2のコーディングオーダで最初のIピクチャ、すなわち、図9、図10または図17における場合では、I2ピクチャ47に対応するピクチャを接続する
ステップS96において、ストリームスプライサ25は、再エンコードしない部分の圧縮素材映像2のコーディングオーダで最初のIピクチャ、すなわち、図9、図10または図17における場合では、I2ピクチャ47に対応するピクチャに、再エンコードされた編集点付近の圧縮映像データの最後からn枚のBピクチャ、すなわち、図9、図10または図17における場合では、B0ピクチャ72およびB1ピクチャ73を接続する。
そして、ステップS97において、ストリームスプライサ25は、再エンコードされた編集点付近の圧縮映像データの最後のBピクチャ、すなわち、図9、図10または図17における場合では、B1ピクチャ73の次に、再エンコードしない部分の圧縮素材映像2の2番目のIまたはPピクチャ、すなわち、図9、図10または図17における場合では、Pピクチャ82を接続し、処理は、図20のステップS73に戻り、処理が終了される。
このような処理により、LongGOPのOpenGOPの圧縮素材映像を編集するときに、VBVバッファを破綻させないように、発生符号量が制御され、再エンコード時のピクチャタイプが決定された再エンコード部分の圧縮符号化データと、再エンコードされていない部分の圧縮符号化データとを接続することが可能となる。
なお、第2の実施の形態においては、ディスプレイオーダで、最後からn+1番目のピクチャより後ろのピクチャのピクチャタイプが、編集前後で変更されないように制御されるものとして説明したが、再エンコードされる範囲の所定のIピクチャまたはPピクチャを含めてそれより後ろのピクチャのピクチャタイプが、編集前後で変更されないように制御された場合にも、本発明は適用可能である。
このように、本発明を適用することにより、Long GOPのOpen GOP方式で圧縮された映像素材を、部分的にデコード、再エンコードする方法を用いた編集において、編集前後でQマトリクスの整合性を保つようにすることができる。そして、Qマトリクスが異なる圧縮映像データの編集において、エンコード時に最適なQマトリクスを選択することが可能となるため、圧縮映像の高画質化を実現することができる。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。この場合、例えば、図4を用いて説明した編集装置1は、図22に示されるようなパーソナルコンピュータ301により構成される。
図22において、CPU(Central Processing Unit)311は、ROM(Read Only Memory)312に記憶されているプログラム、または記憶部318からRAM(Random Access Memory)313にロードされたプログラムにしたがって、各種の処理を実行する。RAM313にはまた、CPU311が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU311、ROM312、およびRAM313は、バス314を介して相互に接続されている。このバス314にはまた、入出力インタフェース315も接続されている。
入出力インタフェース315には、キーボード、マウスなどよりなる入力部316、ディスプレイやスピーカなどよりなる出力部317、ハードディスクなどより構成される記憶部318、モデム、ターミナルアダプタなどより構成される通信部319が接続されている。通信部319は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース315にはまた、必要に応じてドライブ320が接続され、磁気ディスク331、光ディスク332、光磁気ディスク333、もしくは、半導体メモリ334などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部318にインストールされる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図22に示されるように、装置本体とは別に、ユーザにプログラムを供給するために配布される、プログラムが記憶されている磁気ディスク331(フロッピディスクを含む)、光ディスク332(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク333(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリ334などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに供給される、プログラムが記憶されているROM312や、記憶部318に含まれるハードディスクなどで構成される。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、上述の実施の形態においては、編集装置1が、それぞれ、デコーダとエンコーダを有しているものとして説明したが、デコーダおよびエンコーダが、それぞれ、独立した装置として構成されている場合においても、本発明は適用可能である。例えば、図17に示されるように、ストリームデータを復号してベースバンド信号に変換する復号装置371、ベースバンド信号を符号化してストリームデータに変換する符号化装置372が、それぞれ独立した装置として構成されていても良い。
このとき、復号装置371は、映像素材である圧縮符号化データを復号し、符号化装置372に供給するのみならず、本発明を適用することにより符号化装置372により部分的に符号化されたのち、編集されて生成された圧縮符号化データの供給を受け、復号処理を行い、ベースバンド信号に変換することができる。ベースバンド信号に変換された編集後のストリームは、例えば、所定の表示装置に供給されて表示されたり、他の装置に出力されて、必要な処理が施される。
さらに、上述の実施の形態においては、デコーダ22乃至24が、供給された圧縮符号化データを完全にデコードせず、対応するエンコーダ27が、非完全に復号されたデータの対応する部分を部分的にエンコードする場合においても、本発明は適用可能である。
例えば、デコーダ22乃至24が、VLC符号に対する復号および逆量子化のみを行い、逆DCT変換を実行していなかった場合、エンコーダ27は、量子化および可変長符号化処理を行うが、DCT変換処理は行わない。このような部分的な符号化(中途段階からの符号化)を行うエンコーダにおいても、本発明を適用することができるのは言うまでもない。
さらに、上述の実施の形態においては、デコーダ22乃至24が完全に復号したベースバンド信号を、エンコーダ27が中途段階まで符号化する場合(例えば、DCT変換および量子化を行うが可変長符号化処理を行わないなど)や、デコーダ22乃至24が完全に復号していない(例えば、VLC符号に対する復号および逆量子化のみを行い、逆DCT変換を実行していない)ため、中途段階まで符号化されているデータに対して、エンコーダ27が更に中途段階まで符号化する場合など(例えば、量子化を行うが可変長符号化処理を行わないなど)においても、本発明は適用可能である。
更に、図17に示される復号装置371が、供給されたストリームデータを完全に復号せず、対応する符号化装置372が、非完全に復号されたデータの対応する部分を部分的に符号化する場合においても、本発明は適用可能である。
例えば、復号装置371が、VLC符号に対する復号および逆量子化のみを行い、逆DCT変換を実行していなかった場合、符号化装置372は、量子化および可変長符号化処理を行うが、DCT変換処理は行わない。このような部分的な復号処理(中途段階までの復号)を行う復号装置371のデコード処理、および、符号化(中途段階からの符号化)を行う符号化装置372のエンコード処理において、本発明を適用することができるのは言うまでもない。
更に、復号装置371が完全に復号したベースバンド信号を、符号化装置372が中途段階まで符号化する場合(例えば、DCT変換および量子化を行うが可変長符号化処理を行わないなど)や、復号装置371が完全に復号していない(例えば、VLC符号に対する復号および逆量子化のみを行い、逆DCT変換を実行していない)ため、中途段階まで符号化されているデータに対して、符号化装置372が更に中途段階まで符号化する場合など(例えば、量子化を行うが可変長符号化処理を行わないなど)においても、本発明は適用可能である。
更に、このような部分的な復号を行う(復号処理の工程のうちの一部を実行する)符号化装置351と部分的な符号化を行う(符号化処理の工程のうちの一部を実行する)符号化装置372で構成されたトランスコーダ381においても、本発明は適用可能である。このようなトランスコーダ381は、例えば、スプライシングなどの編集を行う編集装置382、すなわち、上述した編集装置1のストリームスプライサ25やエフェクト/スイッチ26が実行可能な機能を有する編集装置が利用される場合などに用いられる。
さらに、上述の実施の形態においては、CPU11およびCPU20がそれぞれ別の形態で構成されているが、これに限らず、編集装置1全体を制御する1つのCPUとして構成する形態も考えられる。同様に、上述の実施の形態においては、メモリ13およびメモリ21がそれぞれ別の形態で構成されているが、これに限らず、編集装置1において1つのメモリとして構成する形態も考えられる。
さらに、上述の実施の形態においては、HDD16、デコーダ22乃至24、ストリームスプライサ25、エフェクト/スイッチ26、および、エンコーダ27を、それぞれ、ブリッジおよびバスを介して接続し、編集装置として一体化されている場合について述べたが、本発明はこれに限らず、例えば、これらの構成要素のうちの一部が、外部から有線または無線で接続されるようにしても良いし、これらの構成要素は、この他、種々の接続形態で相互に接続されるようにしてもよい。
さらに、上述の実施の形態においては、圧縮された編集用の素材がHDDに記憶されている場合について述べたが、本発明はこれに限らず、例えば、光ディスク、光磁気ディスク、半導体メモリ、磁気ディスク等の種々の記録媒体に記録された編集用の素材を用いて編集処理を行う場合にも適用することができる。
さらに、上述の実施の形態においては、デコーダ22乃至24、ストリームスプライサ25、エフェクト/スイッチ26、および、エンコーダ27は、同一の拡張カード(例えば、PCIカード、PCI−Expressカード)に搭載する形態に限らず、例えばPCI−Expressなどの技術によりカード間の転送速度が高い場合には、それぞれ別の拡張カードに搭載してもよい。
1 編集装置, 11 CPU, 16 HDD, 20 CPU, 22乃至24 デコーダ, 25 ストリームスプライサ, 26 エフェクト/スイッチ, 27 エンコーダ, 28 シンタクス更新部