(57)【要約】【課題】ＭＰＥＧ符号化の結果得られたビットストリームＡおよびＢの少なくとも一部ずつを接続したビットストリームＣを編集により構成する場合において、その編集を高速に行うことができるようにする。【解決手段】ビットストリームＡの一部のシーンＡ’の終了点ＡoutまたはビットストリームＢの一部のシーンＢ’の開始点ＢinにおけるＶＢＶバッファのデータ蓄積量ＤAまたはＤBがそれぞれ算出され、そのデータ蓄積量どうしの差に基づいて、ビットストリームＣにおける、ビットストリームＡ’およびＢ’の接続点に相当する部分のデータ量が調整される。即ち、ＤA＞ＤBのとき、終了点Ａoutのピクチャにスタッフィングコードが追加される。一方、ＤA＜ＤBのとき、終了点Ａoutのピクチャの直後に、スキップトＰピクチャが挿入される。【選択図】図３
2007235974.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集装置であって、
前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、
前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出するデータ蓄積量算出手段と、
前記データ蓄積量算出手段により算出された前記第１および第２の接続点における前記データ蓄積量どうしの差に基づいて、前記第３のビットストリームにおける、前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整するデータ量調整手段と
を備えることを特徴とする画像編集装置。
【請求項２】
前記第１および第２のビットストリームは、少なくとも画像をＭＰＥＧ（Moving Picture Experts Group）の規格に準拠して圧縮符号化したものであり、
前記蓄積量情報は、ＶＢＶ（Video Buffering Verifier）バッファのデータ蓄積量に相当する、ピクチャヘッダに含まれるＶＤ（VBV Delay）である
ことを特徴とする請求項１に記載の画像編集装置。
【請求項３】
前記データ量調整手段は、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より多い場合、前記第１の接続点におけるピクチャのデータにスタッフィング（Stuffing）コードを挿入する
ことを特徴とする請求項２に記載の画像編集装置。
【請求項４】
前記データ量調整手段は、前記第１と第２の接続点におけるデータ蓄積量が等しくなるように、前記スタッフィングコードを挿入する
ことを特徴とする請求項３に記載の画像編集装置。
【請求項５】
前記データ量調整手段は、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、前記第１の接続点におけるピクチャのデータの後に、スキップトＰピクチャ（Skipped P-picture）についてのデータを挿入する
ことを特徴とする請求項２に記載の画像編集装置。
【請求項６】
前記データ量調整手段は、前記スキップトＰピクチャを挿入した後における前記データ蓄積量が、第２の接続点におけるデータ蓄積量以上となるまで、前記スキップトＰピクチャを挿入する
ことを特徴とする請求項５に記載の画像編集装置。
【請求項７】
前記データ量調整手段は、前記スキップトＰピクチャを挿入することにより、その挿入後における前記データ蓄積量が、第２の接続点におけるデータ蓄積量より多くなった場合、それらのデータ蓄積量が等しくなるように、スタッフィング（Stuffing）コードを挿入する
ことを特徴とする請求項６に記載の画像編集装置。
【請求項８】
前記第１および第２のビットストリームのビットレートを推定するビットレート推定手段をさらに備え、
前記データ蓄積量算出手段は、前記ビットレート推定手段により推定された前記ビットレートおよび前記蓄積量情報ＶＤに基づいて、前記ＶＢＶバッファのデータ蓄積量を算出する
ことを特徴とする請求項２に記載の画像編集装置。
【請求項９】
少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集方法であって、
前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、
前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出し、
その第１および第２の接続点における前記データ蓄積量どうしの差に基づいて、前記第３のビットストリームにおける、前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整する
ことを特徴とする画像編集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像編集装置および画像編集方法に関し、特に、例えば、画像をＭＰＥＧ（Moving Picture Experts Group）符号化して得られるビットストリームを、いわゆるカット編集する場合などに用いて好適な画像編集装置および画像編集方法に関する。
【背景技術】
【０００２】
図１１は、従来の画像編集装置の一例の構成を示している。
【０００３】
データ記憶装置２１は、例えばハードディスクなどで構成され、例えば、ISO-11172-2（いわゆるＭＰＥＧ１）の規格に準拠して圧縮符号化された画像データのビットストリームＡおよびＢが、編集対象の素材として記録されている。また、データ記憶装置２１には、コントローラ１２４の指示の下、ビットストリームＡおよびＢを編集することにより得られる、それらのビットストリームＡおよびＢビットストリームの少なくとも一部ずつを接続したビットストリームＣなども記録されるようになされている。
【０００４】
ビットカウンタ２２は、データ記憶装置２１から読み出されるビットストリームのデータ量（ビット量）をカウントし、コントローラ１２４から指示されたタイミングで、コントローラ１２４に供給するようになされている。また、ビットカウンタ２２は、データ記憶装置２１からのビットストリームを、そのままデコーダ２３に出力するようにもなされている。デコーダ２３は、コントローラ１２４の制御の下、ビットカウンタ２２を介して供給されるビットストリームに含まれる各種のパラメータをデコードし、コントローラ１２４に出力するようになされている。即ち、デコーダ２３は、ビットストリームに含まれる、例えば、シーケンスヘッダ（Sequence Header）、ＧＯＰ（Group Of Picture）ヘッダ（GOP Header）、およびピクチャヘッダ（Picture Header）をデコードし、各ヘッダに配置されている情報（パラメータ）を、コントローラ１２４に出力するようになされている。
【０００５】
コントローラ１２４は、ビットカウンタ２２およびデコーダ２３の出力に基づき、必要に応じてメモリ２５を用いて、データ記憶装置２１に記録されているビットストリームＡおよびＢからビットストリームＣを構成し、データ記憶（記録）装置２１に記録するようになされている。
【０００６】
次に、その動作について説明する。
【０００７】
なお、ここでは、例えば、図１２に示すように、ビットストリームＡから一部のシーンＡ’を切り出すとともに、ビットストリームＢから一部のシーンＢ’を切り出し、シーンＡ’の後にシーンＢ’を接続することで、ビットストリームＣが構成されるものとする。
【０００８】
また、シーンＡ’の開始点または終了点をそれぞれＡinまたはＡoutと、シーンＢ’の開始点または終了点をそれぞれＢinまたはＢoutと記述する。
【０００９】
さらに、ＭＰＥＧ１では、画像のビットストリームの編集は、ＧＯＰを１単位として行わなければならない旨が規定されているため、開始点ＡinおよびＢinはＧＯＰの先頭のピクチャを、終了点ＡoutおよびＢoutはＧＯＰの最後のピクチャを指すように、あらかじめ設定されているものとする。
【００１０】
従って、開始点ＡinおよびＢin、並びに終了点ＡoutおよびＢoutの検出には、ＧＯＰを検出することが必要となるが、ＧＯＰの検出は、例えば、その先頭に配置されているＧＳＣ（Group Start Code）によって行われるものとする。但し、終了点ＡoutまたはＢoutが、ビットストリームＡまたはＢの最後に設定されている場合は、次のＧＯＰが存在しないが、ここでは、存在すると仮定して処理を行うものとする。
【００１１】
コントローラ１２４においては、図１３のフローチャートに示すように、まず最初に、ステップＳ１０１において、ビットストリームＡおよびＢのシーケンスヘッダが読み出される。即ち、コントローラ１２４は、データ記憶装置２１を制御することにより、ビットストリームＡを、ビットカウンタ２２を介してデコーダ２３に供給させ、その中のシーケンスヘッダをデコードさせる。コントローラ１２４は、同様にしてビットストリームＢについても、そのシーケンスヘッダをデコードさせる。
【００１２】
デコードされたビットストリームＡおよびＢのシーケンスヘッダは、コントローラ１２４を介してメモリ２５に供給されて記憶される。
【００１３】
その後、コントローラ１２４は、ステップＳ１０２において、メモリ２５に記憶されたビットストリームＡおよびＢについてのシーケンスヘッダを比較することにより、その２つのビットストリームＡおよびＢをカット編集して、ビットストリームＣとすることが可能かどうかを判定する。即ち、ビットストリームＡおよびＢについてのシーケンスヘッダに配置されているパラメータのうち、ＬＩＱＭ（Load Intra Quantize Matrix）の前までのものが一致していない場合には、編集することができないため、ステップＳ１０２では、それらのパラメータが一致しているかどうかが判定される。
【００１４】
ステップＳ１０２において、ビットストリームＡおよびＢの編集ができないと判定された場合、即ち、ビットストリームＡおよびＢについてのシーケンスヘッダに配置されているパラメータのうち、ＬＩＱＭの前までのものが一致していない場合、コントローラ１２４は、編集ができない旨を、図示せぬモニタに表示して処理を終了する。
【００１５】
また、ステップＳ１０２において、ビットストリームＡおよびＢの編集ができると判定された場合、即ち、ビットストリームＡおよびＢについてのシーケンスヘッダに配置されているパラメータのうち、ＬＩＱＭの前までのものが一致している場合、ステップＳ１０３に進み、コントローラ１２４は、データ記憶装置２１からビットストリームＡを、例えば、ピクチャ単位などで読み出し、ビットカウンタ２２、さらにはデコーダ２３に供給させる。
【００１６】
ビットカウンタ２２では、ビットストリームＡのビット量がカウントされ、デコーダ２３では、供給されたビットストリームＡにシーケンスヘッダが含まれる場合には、それがデコードされ、いずれもコントローラ１２４に供給される。
【００１７】
コントローラ１２４は、デコーダ２３の出力を監視しており、ステップＳ１０４において、デコーダ２３からシーケンスヘッダが出力されたかどうかを判定する。ステップＳ１０４において、シーケンスヘッダが出力されたと判定された場合、ステップＳ１０５に進み、メモリ２５に記憶されているビットストリームＡについてのシーケンスヘッダを、デコーダ２３が出力した最新のシーケンスヘッダに更新し、ステップＳ１０６に進む。
【００１８】
また、ステップＳ１０４において、シーケンスヘッダが出力されていないと判定された場合、ステップＳ１０５をスキップして、ステップＳ１０６に進み、コントローラ１２４において、データ記憶装置２１から、開始点Ａinのピクチャが読み出されたかどうかが判定される。ステップＳ１０６において、開始点Ａinのピクチャが、まだ読み出されていないと判定された場合、ステップＳ１０３に戻り、コントローラ１２４は、ビットストリームＡの読み出しを継続する。
【００１９】
また、ステップＳ１０６において、開始点Ａinのピクチャが読み出されたと判定された場合、ステップＳ１０７に進み、コントローラ１２４は、メモリ２５に記憶されているビットストリームＡについての最新のシーケンスヘッダを、ビットストリームＣについての先頭のシーケンスヘッダとして、データ記憶装置２１に記録し、ステップＳ１０８に進む。ステップＳ１０８では、コントローラ１２４は、開始点Ａinのピクチャが属するＧＯＰのＧＯＰヘッダをデータ記憶装置２１から読み出し、デコーダ２３にデコードさせて、そのデコード結果を受信する。
【００２０】
そして、コントローラ１２４は、ステップＳ１０９に進み、デコーダ２３から受信したＧＯＰヘッダに配置されているＣＧ（Closed GOP）が０であるかどうかを判定する。ステップＳ１０９において、ＣＧが０であると判定された場合、即ち、ＧＯＰが、いわゆるオープンＧＯＰである場合、ステップＳ１１０に進み、ＧＯＰヘッダに配置されているＢＬ（Broken Link）が１にセットされ、ステップＳ１１２に進む。
【００２１】
即ち、開始点Ａinのピクチャを含むＧＯＰが、オープンＧＯＰである場合、編集により、その前のＧＯＰとのリンクが切断されるため、そのＧＯＰにおける、表示順で最初のＢピクチャは、再生時に正しくデコードすることができない。そこで、その旨を表すＢＬが１にセットされる。
【００２２】
一方、ステップＳ１０９において、ＣＧが０でないと判定された場合、即ち、ＧＯＰが、いわゆるクローズドＧＯＰである場合、ステップＳ１１１に進み、ＧＯＰヘッダに配置されているＢＬが０にセットされ、ステップＳ１１２に進む。
【００２３】
即ち、ＧＯＰがクローズドＧＯＰである場合、そのＧＯＰにおける、表示順で最初のピクチャは、Ｉピクチャか、または前方予測がされないＢピクチャであるから、そのデコードに、先行するＧＯＰは用いられない。従って、ＢＬは０とされる。
【００２４】
ステップＳ１１２では、コントローラ１２４において、ステップＳ１１０またはＳ１１１でＢＬがセットされたＧＯＰヘッダが、ビットストリームＣについてのＧＯＰヘッダとして、ステップＳ１０７で記録されたシーケンスヘッダに続けて記録され、ステップＳ１１３に進む。
【００２５】
ステップＳ１１３では、コントローラ１２４によるビットストリームＡの読み出しが継続され、ステップＳ１１４に進み、データ記憶装置２１から、終了点Ａoutのピクチャが読み出されたかどうかが判定される。ステップＳ１１４において、終了点Ａoutのピクチャが、まだ読み出されていないと判定された場合、ステップＳ１１５に進み、コントローラ１２４において、ステップＳ１１３で読み出されたデータが、ビットストリームＣについてのデータとして、データ記憶装置２１に記録される。
【００２６】
そして、ステップＳ１１６に進み、コントローラ１２４において、ステップＳ１１３で読み出されたデータが、シーケンスヘッダであるかどうかが、デコーダ２３の出力を参照することにより判定される。ステップＳ１１６において、ステップＳ１１３で読み出されたデータがシーケンスヘッダであると判定された場合、ステップＳ１１７に進み、メモリ２５に記憶されたビットストリームＡについてのシーケンスヘッダが、デコーダ２３が出力する最新のシーケンスヘッダ（ステップＳ１１３で読み出されたシーケンスヘッダ）に更新される。そして、ステップＳ１１３に戻り、ビットストリームＡの読み出しが継続される。
【００２７】
また、ステップＳ１１６において、ステップＳ１１３で読み出されたデータがシーケンスヘッダでないと判定された場合、ステップＳ１１７をスキップして、ステップＳ１１３に戻り、ビットストリームＡの読み出しが継続される。
【００２８】
一方、ステップＳ１１４において、終了点Ａoutのピクチャが読み出されたと判定された場合、図１４のステップＳ１２１に進み、ステップＳ１１３で読み出されたデータが、ビットストリームＣについてのデータとして、データ記憶装置２１に記録され、ステップＳ１２２に進む。ステップＳ１２２では、ビットストリームＡの読み出しが継続され、ステップＳ１２３に進み、コントローラ１２４は、ステップＳ１２２で読み出されたデータが、シーケンスヘッダ、ＧＯＰヘッダ、またはＳＥＣ（Sequence End of Code）のうちのいずれかであるかを、デコーダ２３の出力を参照することにより判定する。
【００２９】
ステップＳ１２３において、ステップＳ１２２で読み出されたデータが、シーケンスヘッダ、ＧＯＰヘッダ、またはＳＥＣのうちのいずれでもないと判定された場合、ステップＳ１２１に戻り、上述の処理が繰り返される。
【００３０】
また、ステップＳ１２３において、ステップＳ１２２で読み出されたデータが、シーケンスヘッダ、ＧＯＰヘッダ、またはＳＥＣのうちのいずれかであると判定された場合、コントローラ１２４は、そのデータの記録を行わずに、ステップＳ１２４に進み、データ記憶装置２１からのビットストリームＢの、例えばピクチャ単位での読み出しを開始する。
【００３１】
そして、コントローラ１２４は、ステップＳ１２５において、デコーダ２３の出力を参照することにより、ステップＳ１２４で読み出されたデータがシーケンスヘッダであるかどうかを判定し、シーケンスヘッダであると判定した場合、ステップＳ１２６に進み、メモリ２５に記憶されているビットストリームＢについてのシーケンスヘッダを、デコーダ２３が出力した最新のシーケンスヘッダに更新し、ステップＳ１２７に進む。
【００３２】
また、ステップＳ１２５において、ステップＳ１２４で読み出されたデータがシーケンスヘッダでないと判定された場合、ステップＳ１２６をスキップして、ステップＳ１２７に進み、コントローラ１２４において、データ記憶装置２１から、開始点Ｂinのピクチャが読み出されたかどうかが判定される。ステップＳ１２７において、開始点Ｂinのピクチャが、まだ読み出されていないと判定された場合、ステップＳ１２４に戻り、コントローラ１２４は、ビットストリームＢの読み出しを継続する。
【００３３】
また、ステップＳ１２７において、開始点Ｂinのピクチャが読み出されたと判定された場合、ステップＳ１２８に進み、コントローラ１２４は、メモリ２５に記憶されているビットストリームＡおよびＢについての最新のシーケンスヘッダどうしを比較し、それらのＬＩＱＭが一致しないかどうか、およびＬＮＩＱＭ（Load Non Intra Quantizer Matrix）が一致しないかどうかを判定する。
【００３４】
ステップＳ１２８において、ビットストリームＡおよびＢについての最新のシーケンスヘッダに配置されたＬＩＱＭどうしが一致しないか、またはＬＮＩＱＭどうしが一致しないと判定された場合、ステップＳ１２９に進み、コントローラ１２４は、メモリ２５に記憶されたビットストリームＢについての最新のシーケンスヘッダを、ビットストリームＣのシーケンスヘッダとして、データ記録装置２１に記録し、ステップＳ１３０に進む。
【００３５】
また、ステップＳ１２８において、ビットストリームＡおよびＢについての最新のシーケンスヘッダに配置されたＬＩＱＭどうしも、また、ＬＮＩＱＭどうしもいずれも一致すると判定された場合、ステップＳ１２９をスキップして、ステップＳ１３０に進み、コントローラ１２４は、ステップＳ１２４で読み出した開始点Ｂinのピクチャについて、ＭＰＥＧにおいて受信側（デコーダ側）に想定することが規定されているＶＢＶ（Video Buffering Verifier）バッファのデータ蓄積量に対応するＶＤ（VBV Delay）を算出する。
【００３６】
ここで、ＶＤについては後述する。
【００３７】
そして、ステップＳ１３１に進み、コントローラ１２４は、ステップＳ１３０で算出したＶＤの値が不適当であるかどうかを判定する。ステップＳ１３１において、ＶＤの値が不適当であると判定された場合、ビットストリームＡとＢは、ＭＰＥＧ復号化してからでないと編集することができないため、処理を終了する。
【００３８】
また、ステップＳ１３１において、ＶＤの値が不適当でないと判定された場合、ステップＳ１３２に進み、ステップＳ１２４で読み出された開始点Ｂinのピクチャのピクチャヘッダに、ステップＳ１３０で算出されたＶＤが上書きされ、ステップＳ１３３に進む。ステップＳ１３３では、ピクチャヘッダのＶＤが書き換えられたピクチャ（ここでは、ステップＳ１２４で読み出された開始点Ｂinのピクチャ）が、ビットストリームＣについてのデータとして、データ記憶装置２１に記録される。
【００３９】
その後、コントローラ１２４では、ステップＳ１３４において、データ記憶装置２１からのビットストリームＢの読み出しが継続され、ステップＳ１３５に進み、データ記憶装置２１から、終了点Ｂoutのピクチャが読み出されたかどうかが判定される。ステップＳ１３５において、終了点Ｂoutのピクチャが、まだ読み出されていないと判定された場合、ステップＳ１３０に戻り、上述した場合と同様の処理が行われる。
【００４０】
即ち、ステップＳ１３０において、ステップＳ１３４で読み出したピクチャについて、ＶＢＶバッファのデータ蓄積量に対応するＶＤ（VBV Delay）が算出され、ステップＳ１３１に進み、そのＶＤの値が不適当であるかどうかを判定される。ステップＳ１３１において、ＶＤの値が不適当であると判定された場合は、処理を終了し、ＶＤの値が不適当でないと判定された場合は、ステップＳ１３２に進み、ステップＳ１３４で読み出されたピクチャのピクチャヘッダに、ステップＳ１３０で算出されたＶＤが上書きされ、ステップＳ１３３に進む。そして、ステップＳ１３３において、ピクチャヘッダのＶＤが書き換えられたピクチャ（ここでは、ステップＳ１３４で読み出されたピクチャ）が、ビットストリームＣについてのデータとして、データ記憶装置２１に記録される。
【００４１】
一方、ステップＳ１３５において、終了点Ｂoutのピクチャが読み出されたと判定された場合、ステップＳ１３６に進み、そのピクチャ（ここでは、終了点Ｂoutのピクチャ）が、ビットストリームＣについてのデータとして、データ記憶装置２１に記録される。なお、このステップＳ１３６の処理においても、ステップＳ１３０乃至Ｓ１３２における場合と同様の処理（ＶＤを算出し、それが不適当であるかどうかを判定し、不適当でなければ、ピクチャヘッダのＶＤを更新する処理）が行われる。
【００４２】
その後、ステップＳ１３７に進み、ビットストリームＣについての最後のデータとして、ＳＥＣが記録され、処理を終了する。
【００４３】
ところで、ＭＰＥＧでは、ＶＢＶバッファがオーバーフローおよびアンダーフローのいずれもしないように、ビットストリームを構成しなければならないことが規定されている。
【００４４】
ここで、図１５は、ＶＢＶバッファのデータ蓄積量の推移の一例を示している。なお、同図において、横軸または縦軸は、時間またはデータ蓄積量をそれぞれ示している。
【００４５】
ＶＢＶバッファには、所定の一定のビットレートで、ＭＰＥＧ符号化の結果得られたビットストリームが蓄積されていく。この一定のビットレートの４００ｂｐｓ（Bit Per Seconds）以下の値を切り上げ、４００で除算した値が、ＢＲ（Bit Rate）として、ビットストリームのシーケンスヘッダに配置されている。
【００４６】
ＶＢＶバッファからのビットストリームの読み出し（即ち、デコーダへの入力）は、シーケンスヘッダに配置されているＰＲ（Picture Rate）にしたがって行われる。即ち、ＰＲにしたがって一定周期で訪れる復号時刻となると、その復号時刻に復号すべきピクチャについてのデータが、ＶＢＶバッファから瞬時に読み出され、デコーダに供給される。
【００４７】
従って、あるピクチャが読み出されてから次のピクチャが読み出されるまでの間においては、ＶＢＶバッファには、ビットレート／ピクチャレートだけのデータ量が蓄積される。即ち、例えば、図１５おいてＤ1で示すデータ量は、ビットレート／ピクチャレートで表される。
【００４８】
また、ある復号時刻においては、シーケンスヘッダの始まりを表すＳＨＣ（Sequence Header Code）（ＭＰＥＧ１では、１６進数で０００００１Ｂ３）、ＧＯＰヘッダの始まりを表すＧＳＣ（Group Start Code）（ＭＰＥＧ１では、１６進数で０００００１Ｂ８）、またはピクチャヘッダの始まりを表すＰＳＣ（Picture Start Code）（ＭＰＥＧ１では、１６進数で０００００１００）のうちのいずれかの最初のビットから、次のＳＨＣ，ＧＳＣ、またはＰＳＣのうちの直前のビットまでのデータが、ＶＢＶバッファから瞬時に読み出される。なお、図１５においてＤ2で示す部分は、ＳＨＣの最初のビットからデータが読み出される様子を示している。
【００４９】
ＶＢＶバッファのデータの蓄積量は、上述したピクチャヘッダに配置されるＶＤから認識することができるようになされている。即ち、ＶＤは、ＰＳＣの最後のビットまでがＶＢＶバッファから読み出されたと仮定した場合において、ＢＲに対応するビットレートでデータを蓄積し、そのデータ蓄積量を元の状態とするのに要する時間を、９０ｋＨｚのクロックでカウントしたときの、そのカウント値を表している。
【００５０】
上述したような編集を行う場合において、ビットストリームＡの終了点ＡoutにおけるＶＢＶバッファのデータ蓄積量と、ビットストリームＢの開始点ＢinにおけるＶＢＶバッファのデータ蓄積量との間には、通常、例えば、図１６に示すようなギャップが存在する。従って、そのギャップを補正するために、開始点ＢinのピクチャについてのＶＤを、終了点Ａoutと開始点Ｂinとにおけるデータ蓄積量が整合するように変更する必要がある。
【００５１】
具体的には、開始点ＢinのピクチャについてのＶＤは、次式で表されるＶＤ’（Ｂin）とする必要がある。
【００５２】
ＶＤ’（Ｂin）＝ＶＤ（Ａout）
＋（ＨＬ（Ｂin）−ＨＬ（Ａout））
×９００００／ｂｒ
・・・（１）
但し、式（１）において、ＶＤ（Ａout）は、終了点ＡoutにおけるＶＤを表し、ＨＬ（Ｂin）またはＨＬ（Ａout）は、開始点Ｂinまたは終了点Ａoutのピクチャについてのシーケンスヘッダ若しくはＧＯＰヘッダの最初のビットからＰＳＣの最後のビットまでのビット量をそれぞれ表す。また、ｂｒは、ＢＲから求められるビットレートを表す。
【００５３】
ここで、図１４のステップＳ１３０では、式（１）にしたがって、開始点ＢinのピクチャについてのＶＤ（ＶＤ’（Ｂin））が算出される。
【００５４】
開始点ＢinのピクチャについてのＶＤを、式（１）により求められるＶＤ’（Ｂin）に変更した場合、その後のビットストリームＢに含まれるＶＤも変更する必要がある。これは、元のＶＤに、ＶＤ’（Ｂin）−ＶＤ（Ｂin）を加算し、この加算値に変更される。
【００５５】
ここで、図１４のステップＳ１３０では、開始点Ｂinのピクチャ以外についてのＶＤは、このようにして求められる。
【００５６】
なお、ＶＢＶバッファの容量をＳVBVと表すとき、変更後のＶＤが、０以下の値になったり、９００００×ＳVBV／ｂｒまたは１６進数でＦＦＦＥを越えるような値になることは、ＶＢＶバッファがアンダーフローまたはオーバーフローすることになるため許されない。ここで、図１４のステップＳ１３１では、ステップＳ１３０で算出されたＶＤが、そのような値になっていないかどうかが判定される。
【発明の開示】
【発明が解決しようとする課題】
【００５７】
ところで、上述のような編集を行う場合においては、基本的に、開始点Ｂin以降のＶＤをすべて書き換える必要があり、処理の高速化の妨げになっていた。
【００５８】
さらに、ＶＤが上述のような値になった場合には、ビットストリームを復号化しなければ編集することができず、面倒であった。
【００５９】
また、ＶＤの算出にあたっては、ビットレートｂｒが必要となるが、このビットレートｂｒは、シーケンスヘッダに配置されているＢＲから求められる。しかしながら、ＢＲは、上述したように、真のビットレートを４００ｂｐｓ単位で、いわば丸めたものとなっているため、ＶＤを精度良く求めることができない場合があった。
【００６０】
本発明は、このような状況に鑑みてなされたものであり、圧縮符号化されたビットストリームの編集を、その状態で高速に行うことができるようにするものである。
【課題を解決するための手段】
【００６１】
本発明の一側面の画像編集装置は、少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集装置であって、前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出するデータ蓄積量算出手段と、前記データ蓄積量算出手段により算出された前記第１および第２の接続点における前記データ蓄積量どうしの差に基づいて、前記第３のビットストリームにおける、前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整するデータ量調整手段とを備える。
【００６２】
前記第１および第２のビットストリームは、少なくとも画像をＭＰＥＧ（Moving Picture Experts Group）の規格に準拠して圧縮符号化したものであり、前記蓄積量情報は、ＶＢＶ（Video Buffering Verifier）バッファのデータ蓄積量に相当する、ピクチャヘッダに含まれるＶＤ（VBV Delay）である。
【００６３】
前記データ量調整手段には、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より多い場合、前記第１の接続点におけるピクチャのデータにスタッフィング（Stuffing）コードを挿入させることができる。
【００６４】
前記データ量調整手段には、前記第１と第２の接続点におけるデータ蓄積量が等しくなるように、前記スタッフィングコードを挿入させることができる。
【００６５】
前記データ量調整手段には、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、前記第１の接続点におけるピクチャのデータの後に、スキップトＰピクチャ（Skipped P-picture）についてのデータを挿入させることができる。
【００６６】
前記データ量調整手段には、前記スキップトＰピクチャを挿入した後における前記データ蓄積量が、第２の接続点におけるデータ蓄積量以上となるまで、前記スキップトＰピクチャを挿入させることができる。
【００６７】
前記データ量調整手段には、前記スキップトＰピクチャを挿入することにより、その挿入後における前記データ蓄積量が、第２の接続点におけるデータ蓄積量より多くなった場合、それらのデータ蓄積量が等しくなるように、スタッフィング（Stuffing）コードを挿入させることができる。
【００６８】
前記画像編集装置には、前記第１および第２のビットストリームのビットレートを推定するビットレート推定手段をさらに設け、前記データ蓄積量算出手段には、前記ビットレート推定手段により推定された前記ビットレートおよび前記蓄積量情報ＶＤに基づいて、前記ＶＢＶバッファのデータ蓄積量を算出させることができる。
【００６９】
本発明の一側面の画像編集方法は、少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集方法であって、前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出し、その第１および第２の接続点における前記データ蓄積量どうしの差に基づいて、前記第３のビットストリームにおける、前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整するステップを含む。
【００７０】
本発明の一側面においては、第１のビットストリームの、第２のビットストリームと接続する第１の接続点、および第２のビットストリームの、第１のビットストリームと接続する第２の接続点における仮想バッファのデータ蓄積量が、蓄積量情報に基づいて算出され、その第１および第２の接続点におけるデータ蓄積量どうしの差に基づいて、第３のビットストリームにおける、第１と第２のビットストリームの接続点に相当する部分のデータ量が調整される。
【発明の効果】
【００７１】
以上のように、本発明の一側面によれば、圧縮符号化されたビットストリームを編集することができ、特に、例えば、圧縮符号化されたビットストリームの編集を、その状態で高速に行うことができる。
【発明を実施するための最良の形態】
【００７２】
図１は、本発明を適用したノンリニア編集装置の一実施の形態の構成例を示している。
【００７３】
このノンリニア編集装置は、例えば、コンピュータをベースとして構成されている。即ち、マイクロプロセッサ１は、ハードディスク１２に記録されたオペレーティングシステムの制御の下、同じくハードディスク１２に記録されたアプリケーションプログラムを実行することで、画像や音声の編集処理や編集後の画像や音声の再生処理などの所定の処理を行う。メインメモリ２は、マイクロプロセッサ１が実行するプログラムや、マイクロプロセッサ１の動作上必要なデータを記憶する。フレームバッファ３は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）などで構成され、マイクロプロセッサ１が生成した画像などを記憶する。バスブリッジ４は、内部バスと、例えばＰＣＩ（Peripheral Component Interconnect）ローカルバスなどの拡張バスとの間でのデータのやりとりを制御する。
【００７４】
以上のマイクロプロセッサ１、メインメモリ２、フレームバッファ３、およびバスブリッジ４は、相互に、内部バスを介して接続されており、残りのブロックは、拡張バスを介して相互に接続されている。なお、バスブリッジ４は、内部バスと拡張バスとの両方に接続されている。
【００７５】
チューナ５は、例えば、地上波や衛星回線、ＣＡＴＶ網を利用して放送されているテレビジョン放送信号を受信する。ここで、チューナ５において受信した画像や音声なども編集の対象とすることができる。モデム６は、電話回線を介しての通信を制御する。ここで、モデム６において、例えば、インターネットなどから受信した画像や音声なども編集の対象とすることができるし、また、編集した画像や音声などを、外部に送信することもできる。
【００７６】
Ｉ／Ｏ（Input/Output）インターフェイス７は、キーボード８やマウス９の操作に対応した操作信号を出力する。キーボード８は、所定のデータやコマンドを入力するときに、マウス９は、ディスプレイ（コンピュータディスプレイ）１７に表示されるカーソルを移動させたり、また、位置を指示したりするときなどに、それぞれ操作される。
【００７７】
補助記憶インターフェイス１０は、ＣＤ−Ｒ（Compact Disc Recodable）１１やハードディスク（ＨＤ（Hard Disk））１２などに対するデータの読み書きを制御する。ＣＤ−Ｒ１１には、例えば、編集後の画像や音声などが記録される。ハードディスク１２には、オペレーティングシステムや、ノンリニア編集その他の処理をマイクロプロセッサ１に実行させるためのアプリケーションプログラムなどが記憶されている。さらに、ハードディスク１２には、編集対象の画像や音声、編集後の画像や音声なども記録される。
【００７８】
圧縮部１３は、そこに入力される画像や音声を、例えば、ＭＰＥＧの規格に準拠して圧縮符号化する。なお、圧縮部１３では、拡張バスを介して供給されるデータや、伸張部１５を介して供給されるデータ、さらには、外部の装置である、例えば、ビデオカメラ１４から供給されるデータなども圧縮することができるようになされている。
【００７９】
ビデオカメラ１４では、例えば、編集対象とする画像や音声が記録される。圧縮部１３は、ビデオカメラ１４とのインターフェイスを有しており、これにより、ビデオカメラ１４で記録された画像や音声を圧縮部１３に入力することができるようになされている。
【００８０】
伸張部１５は、圧縮部１３で符号化（圧縮）されたデータを復号化（伸張）して出力する。なお、伸張部１５は、必要に応じて、フレームバッファ３に記憶された画像に、復号化した画像をオーバレイして出力する。ここで、フレームバッファ３から伸張部１５への画像データの供給は、図１の実施の形態では、それらの間で直接行われるようになされているが、その他、内部バス、バスブリッジ４、および拡張バスを介して行うことも可能である。但し、フレームバッファ３から伸張部１５への画像データの供給を、内部バス、バスブリッジ４、および拡張バスを介して行う場合には、内部バスや拡張バスの能力が低いと、データが渋滞するおそれがある。
【００８１】
ＶＴＲ１６は、伸張部１５が出力する画像や音声を、必要に応じて記録する。ディスプレイ１７は、伸張部１５が出力する画像を、必要に応じて表示する。なお、伸張部１５が出力する画像の表示は、コンピュータ用のディスプレイであるディスプレイ１７の他、ＴＶモニタなどによっても行うことができるようになされている。
【００８２】
次に、図２は、図１の編集装置の機能的構成例を表すブロック図である。なお、図中、図１１における場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。即ち、この編集装置は、コントローラ１２４に代えてコントローラ２４（データ蓄積量算出手段）が設けられているとともに、ビットレート推定装置２６（ビットレート推定手段）およびバッファ蓄積量調整装置２７（データ量調整手段）が新たに設けられている他は、図１１における場合と基本的に同様に構成されている。
【００８３】
コントローラ２４は、基本的に、図１１のコントローラ１２４と同様に、データ記憶装置２１、ビットカウンタ２２、およびデコーダ２３を制御する他、ビットレート推定装置２６およびバッファ蓄積量調整装置２７も制御するようになされている。ビットレート推定装置２６は、ビットカウンタ２２が出力するビット量、およびコントローラ２４が出力する情報に基づいて、データ記憶装置２１に記録されている、編集対象の素材としてのビットストリームＡおよびＢのビットレートを精度良く推定し、コントローラ２４に出力するようになされている。バッファ蓄積量調整装置２７は、ビットストリームＡおよびＢの編集結果としてのビットストリームＣのデータ量を調整するようになされている。
【００８４】
なお、図２において、データ記憶装置２１は図１の補助記憶インターフェイス１０およびハードディスク１２に、ビットカウンタ２２は図１のマイクロプロセッサ１に、デコーダ２３は図１の伸張部１５に、コントローラ２４は図１のマイクロプロセッサ１に、メモリ２５は図１のメインメモリ２に、ビットレート推定装置２６およびバッファ蓄積量調整装置２７は図１のマイクロプロセッサ１に、それぞれ相当する。
【００８５】
次に、その動作について説明する。
【００８６】
なお、ここでも、例えば、図１２と同様の図３に示すように、ビットストリームＡから一部のシーンＡ’を切り出すとともに、ビットストリームＢから一部のシーンＢ’を切り出し、シーンＡ’の後にシーンＢ’を接続することで、ビットストリームＣが構成されるものとする。また、データ記憶装置２１には、圧縮部１３において、ＭＰＥＧ１の規格に準拠して圧縮符号化されたビットストリームＡおよびＢが、既に記録されているものとする。
【００８７】
コントローラ２４は、データ記憶装置２１からビットストリームＡおよびＢを読み出し、ビットカウンタ２２、さらにはデコーダ２３に供給する。ビットカウンタ２２では、データ記憶装置２１からのビットストリームのビット量が算出され、ビットレート推定装置２６に供給される。さらに、コントローラ２４は、ビットレート推定装置２６に必要な情報を供給する。ビットレート推定装置２６では、ビットカウンタ２２からのビット量と、コントローラ２４からの情報とに基づいて、ビットレートＡおよびＢのビットレートを精度良く推定し、コントローラ２４に出力する。
【００８８】
ここで、ビットレート推定装置２６における処理の詳細については後述する。
【００８９】
コントローラ２４は、ビットレート推定装置２６からビットレートの推定結果を受信すると、以下の処理において、ビットレートが必要な場合は、ビットレート推定装置２６からのビットレートの推定結果を用いて処理を行う。
【００９０】
その後、コントローラ２４では、図４のフローチャートに示すように、ステップＳ１乃至Ｓ１７において、図１３のステップＳ１０１乃至Ｓ１１７における場合とそれぞれ同様の処理が行われる。
【００９１】
ここで、ステップＳ６における開始点Ａinであるかどうかの判断は、例えば、次のようにして行われる。即ち、ここでは、前述したように、開始点Ａinとすることができるのは、ＧＯＰの先頭であり、ＧＯＰはグループスタートコードＧＳＣで始まる。また、ＧＯＰヘッダの前には、シーケンスヘッダコードＳＨＣで始まるシーケンスヘッダが付加されている場合がある。従って、まず最初に、ＳＨＣおよびＧＳＣの検出が行われる。
【００９２】
開始点Ａinの指定が、例えばタイムコードで行われている場合、タイムコードは、ＧＯＰヘッダのＴＣ（Time Code）に配置されているから、コントローラ２４は、デコーダ２３からＴＣを受信し、それに基づいて、開始点Ａinかどうかを判断する。また、開始点Ａinの指定が、例えば、ビットストリームＡを構成する先頭のピクチャからのピクチャ数で行われている場合、コントローラ２４は、デコーダ２３からピクチャヘッダに配置されているピクチャスタートコードＰＳＣを受信し、さらに、その後に配置されているテンポラルリファレンスＴＲ（Temporal Reference）を受信する。ＴＲは、ＧＯＰ単位でリセットされ、ＧＯＰを構成するピクチャの、いわゆる通し番号を表すから、ＧＯＰ内のＴＲの最大値を求めれば、そのＧＯＰを構成するピクチャ数を認識することができる。なお、ＴＲは０から開始されるため、ＴＲの最大値に１を加算した値が、ＧＯＰを構成するピクチャ数ということになる。コントローラ２４は、以上のようにしてピクチャ数をカウントし、それに基づいて、開始点Ａinかどうかを判断する。
【００９３】
なお、開始点Ｂin、並びに終了点ＡoutおよびＢoutの検出も同様に行われる。但し、終了点ＡoutまたはＢoutは、それらの指定がタイムコードでされている場合において、ビットストリームＡまたはＢの最後に設定されているときには、それぞれに対応するタイムコードを検出することができない。そこで、シーケンスエンドコードＳＥＣが検出されるまでに、終了点ＡoutまたはＢoutに対応するタイムコードと一致するタイムコードを検出することができなかった場合には、最後のＧＯＰで得られたタイムコードＴＣに、そのＧＯＰ内のテンポラルリファレンスＴＲの最大値＋１に対応する時間を加算した加算値が、終了点ＡoutまたはＢoutに対応するタイムコードと一致するときには、シーケンスエンドコードＳＥＣの直前のピクチャを、終了点ＡoutまたはＢoutとするようにする。
【００９４】
コントローラ２４において、図４のステップＳ１乃至Ｓ１７の処理が行われ、そのうちのステップＳ１４において、終了点Ａoutのピクチャが読み出されたと判定された場合、図５のステップＳ２１に進み、ステップＳ１３で読み出されたデータが、ビットストリームＣについてのデータとして、データ記憶装置２１に記録され、ステップＳ２２に進む。
【００９５】
ステップＳ２２では、コントローラ２４において、終了点ＡoutにおけるＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ａout）が、次式にしたがって算出される。
【００９６】
Ｂｕｆ（Ａout）＝ＶＤ（Ａout）×Ｒ／９００００＋ＨＬ（Ａout）
・・・（２）
但し、式（２）において、ＶＤ（Ａout）は、終了点ＡoutのピクチャのＶＤを表し、ＨＬ（Ａout）は、終了点Ａoutのピクチャについてのシーケンスヘッダ若しくはＧＯＰヘッダの最初のビット（シーケンスヘッダコードＳＨＣ若しくはグループスタートコードＧＳＣの先頭ビット）からピクチャスタートコードＰＳＣの最後のビットまでのビット量を表す。また、Ｒは、ビットレート推定装置２６からのビットレートの推定値を表す。
【００９７】
なお、終了点ＡoutがビットストリームＡの最後に設定されている場合には、ＶＤ（Ａout）は得られないため、終了点ＡoutにおけるＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ａout）は、式（２）ではなく、次式にしたがって算出される。
【００９８】
Ｂｕｆ（Ａout）＝Ｂｕｆ（Ａout’）−ＤＬ（Ａout’）
・・・（３）
但し、式（３）において、Ａout’は、終了点Ａoutのピクチャの１つ前のピクチャを意味し、従って、Ｂｕｆ（Ａout’）は、終了点Ａoutのピクチャの１つ前のピクチャにおけるＶＢＶバッファのデータ蓄積量で、式（２）にしたがって算出される。また、ＤＬ（Ａout’）は、ピクチャＡout’についてのシーケンスヘッダコードＳＨＣ、グループスタートコードＧＳＣ、またはピクチャスタートコードＰＳＣのうちのいずれかの最初のビットから、次のピクチャ、即ち、ここでは、終了点ＡoutのピクチャについてのシーケンスヘッダコードＳＨＣ、グループスタートコードＧＳＣ、またはピクチャスタートコードＰＳＣのうちのいずれかの直前のビットまでのビット量を表し、ビットカウンタ２２の出力に基づいて求められる。
【００９９】
終了点ＡoutにおけるＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ａout）の算出後は、ステップＳ２３乃至Ｓ２６において、図１４のステップＳ１２４乃至Ｓ１２７における場合とそれぞれ同様の処理が行われる。
【０１００】
そして、ステップＳ２６において、開始点Ｂinのピクチャが読み出されたと判定された場合、ステップＳ２７に進み、コントローラ２４は、メモリ２５に記憶されているビットストリームＡおよびＢについての最新のシーケンスヘッダどうしを比較し、それらが一致しているかどうかを判定する。ステップＳ２７において、ビットストリームＡおよびＢについての最新のシーケンスヘッダどうしが一致していないと判定された場合、ステップＳ２８に進み、コントローラ２４は、メモリ２５に記憶されたビットストリームＢについての最新のシーケンスヘッダを、ビットストリームＣのシーケンスヘッダとして、データ記録装置２１に記録し、ステップＳ２９に進む。また、ステップＳ２７において、ビットストリームＡおよびＢについての最新のシーケンスヘッダどうしが一致していると判定された場合、ステップＳ２８をスキップして、ステップＳ２９に進む。
【０１０１】
なお、ステップＳ２７において、ビットストリームＡおよびＢについての最新のシーケンスヘッダどうしが一致していると判定された場合においても、メモリ２５に記憶されたビットストリームＢについての最新のシーケンスヘッダを、ビットストリームＣのシーケンスヘッダとして、データ記録装置２１に記録するようにしても良い。
【０１０２】
ステップＳ２９では、コントローラ２４において、ステップＳ２２における場合と同様にして、開始点ＢinにおけるＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ｂin）が算出され、ステップＳ３０に進み、終了点ＡoutにおけるＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ａout）と、開始点ＢinにおけるＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ｂin）とが一致しているかどうかが判定される。
【０１０３】
ステップＳ３０において、Ｂｕｆ（Ａout）とＢｕｆ（Ｂin）とが一致していると判定された場合、即ち、終了点ＡoutにおけるＶＤと開始点ＢinにおけるＶＤとが一致している場合、後述するステップＳ３１乃至Ｓ３６の、ビットストリームＡとＢとの接続点におけるＶＤの整合性をとるための処理を行う必要はないので、これらの処理をスキップして、図６のステップＳ４１に進む。
【０１０４】
また、ステップＳ３０において、Ｂｕｆ（Ａout）とＢｕｆ（Ｂin）とが一致していないと判定された場合（前述したように、通常は一致しない）、ステップＳ３１に進み、以下、ＶＤの整合性をとるためのデータ量を調整する処理が行われる。
【０１０５】
即ち、ステップＳ３１では、コントローラ２４において、Ｂｕｆ（Ａout）がＢｕｆ（Ｂin）より大きいかどうか判定される。ステップＳ３１において、Ｂｕｆ（Ａout）がＢｕｆ（Ｂin）より大きいと判定された場合、ＶＢＶバッファから、Ｂｕｆ（Ａout）−Ｂｕｆ（Ｂin）だけ多くのデータ量が読み出されるようにするための処理が行われる。
【０１０６】
具体的には、この場合、ステップＳ３２に進み、コントローラ２４の制御の下、バッファ蓄積量調整装置２７によって、スタッフィングコードが、ビットストリームＣを構成するデータとして、データ記憶装置２１に記録され、図６のステップＳ４１に進む。
【０１０７】
ここで、スタッフィングコードとは、スタートコードの前に配置することが可能なバイト単位の、値が０のデータを意味する。ＭＰＥＧでは、スタッフィングコードは、デコード時には読み飛ばされるため、復号画像に影響はないが、ＶＢＶバッファの管理上はビットストリームを構成するデータとしてカウントされる。従って、スタッフィングコードを、終了点Ａoutにおけるピクチャのデータとして記録することで、終了点Ａoutにおけるピクチャのデコード時に、ＶＢＶバッファから読み出されるデータ量を増加させることができ、これにより、Ｂｕｆ（Ａout）とＢｕｆ（Ｂin）とを一致させることができる。
【０１０８】
即ち、ステップＳ３２では、次式で示されるバイト数Ｃだけのスタッフィングコードが記録される。
【０１０９】
Ｃ＝ＩＮＴ（（Ｂｕｆ（Ａout）−Ｂｕｆ（Ｂin））／８）
・・・（４）
但し、式（４）において、ＩＮＴ（）は、括弧（）内の値以下の最大の整数を意味する。
【０１１０】
一方、ステップＳ３１において、Ｂｕｆ（Ａout）がＢｕｆ（Ｂin）より大きくないと判定された場合、即ち、Ｂｕｆ（Ａout）がＢｕｆ（Ｂin）より小さい場合、Ｂｕｆ（Ｂin）−Ｂｕｆ（Ａout）だけデータ蓄積量を増加させるための処理が行われる。
【０１１１】
即ち、この場合、ステップＳ３３に進み、コントローラ２４の制御の下、バッファ蓄積量調整装置２７によって、スキップトＰピクチャについてのデータが、ビットストリームＣを構成するデータとして、終了点Ａoutのピクチャのデータの後に記録される。
【０１１２】
ここで、スキップトＰピクチャ（Skipped P-picture）とは、動きベクトルが０（（０，０））で、先行してデコードされるＩピクチャまたはＰピクチャを参照画像としてデコードされる、いわゆる予測誤差が０のピクチャであり、そのデータ量は非常に小さなものとなる。例えば、ピクチャが、横３５２画素×縦２４０画素で構成される場合、スキップトＰピクチャをＭＰＥＧ符号化して得られるデータ量は２３２ビット（２９バイト）となる。
【０１１３】
一方、前述の図１５で説明したように、ＶＢＶバッファから、あるピクチャのデータが読み出された後、次のピクチャが読み出されるまでの間には、ビットレート／ピクチャレート分のデータが蓄積される。従って、スキップトＰピクチャのようなデータ量の小さいピクチャを挿入することで、一定のビットレートでデータが蓄積されるＶＢＶバッファのデータ蓄積量を、大きく増加させることができ、これにより、そのスキップトＰピクチャを追加したときのＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ｐ）を、Ｂｕｆ（Ｂin）以上とすることが可能となる。
【０１１４】
スキップトＰピクチャの挿入（記録）後は、ステップＳ３４に進み、コントローラ２４において、そのスキップトＰピクチャの挿入後のＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ｐ）が算出され、ステップＳ３５に進む。なお、スキップトＰピクチャの挿入前のデータ蓄積量をＢｕｆ（Ｐ-1）とするとき、その挿入後のデータ蓄積量Ｂｕｆ（Ｐ）は、次式にしたがって算出される。
【０１１５】
Ｂｕｆ（Ｐ）＝Ｂｕｆ（Ｐ-1）＋Ｒ／ｐｒ−Ｄp
・・・（５）
但し、式（５）において、Ｒは、ビットレート推定装置２６から得られるビットレートの推定値を、ｐｒは、シーケンスヘッダに配置されているピクチャレートＰＲから求められるピクチャレートを、Ｄpは、スキップトＰピクチャのデータ量を、それぞれ意味する。
【０１１６】
ステップＳ３５では、スキップトＰピクチャの挿入後のＶＢＶバッファのデータ蓄積量Ｂｕｆ（Ｐ）が、Ｂｕｆ（Ｂin）以上となったかどうかが、コントローラ２４によって判定される。ステップＳ３５において、Ｂｕｆ（Ｐ）がＢｕｆ（Ｂin）以上となっていないと判定された場合、ステップＳ３３に戻り、さらに、スキップトＰピクチャが挿入され、ＶＢＶバッファのデータ蓄積量が、さらに増加される。
【０１１７】
また、ステップＳ３５において、Ｂｕｆ（Ｐ）がＢｕｆ（Ｂin）以上となったと判定された場合、ステップＳ３６に進み、コントローラ２４の制御の下、バッファ蓄積量調整装置２７によって、ステップＳ３２における場合と同様に、最後に挿入されたスキップトＰピクチャについて、そのデータ蓄積量が、Ｂｕｆ（Ｂin）と一致するように、スタッフィングコードが記録され、図６のステップＳ４１に進む。
【０１１８】
なお、ステップＳ３６においてスタッフィングコードが記録されるのは、Ｂｕｆ（Ｐ）がＢｕｆ（Ｂin）より大きくなった場合で、それらが一致するようになっている場合は、ステップＳ３６の処理はスキップされる。
【０１１９】
図６のステップＳ４１、さらにはその後に続くステップＳ４２乃至Ｓ４５では、図１４のステップＳ１３３乃至Ｓ１３７における場合とそれぞれ同様の処理が行われ、編集処理を終了する。
【０１２０】
以上のように、ＭＰＥＧ符号化の結果得られたビットストリームＡおよびＢ（第１および第２のビットストリーム）の少なくとも一部ずつを接続したビットストリーム（第３のビットストリーム）を編集により構成する場合において、ビットストリームＡの終了点Ａout（第１の接続点）、およびビットストリームＢの開始点Ｂin（第２の接続点）におけるＶＢＶバッファのデータ蓄積量を、ＶＤに基づいて算出し、そのデータ蓄積量どうしの差に基づいて、ビットストリームＣにおける、ビットストリームＡおよびＢ（Ａ’およびＢ’）の接続点に相当する部分のデータ量を調整するようにしたので、その接続点におけるＶＤの整合を、ビットストリームＢのＶＤを書き換えることなくとることができる。その結果、ビットストリームＡおよびＢの編集を高速に行うことができる。さらに、ビットストリームＡおよびＢを、一旦ＭＰＥＧ復号化する必要もなくなる。
【０１２１】
なお、上述の場合においては、Ｂｕｆ（Ａout）がＢｕｆ（Ｂin）より小さいときに、ステップＳ３３乃至Ｓ３６において、スキップトＰピクチャを挿入するとともに、スタッフィングコードを記録して、ＶＢＶバッファのデータ蓄積量を、Ｂｕｆ（Ｂin）−Ｂｕｆ（Ａout）だけ増加させるようにしたが、これは、例えば、次のようにして行うことも可能である。
【０１２２】
即ち、ＶＢＶバッファのデータ蓄積量を、Ｂｕｆ（Ｂin）−Ｂｕｆ（Ａout）だけ増加させるには、終了点Ａoutのピクチャのデコード時に、ＶＢＶバッファから読み出されるデータ量を、Ｂｕｆ（Ｂin）−Ｂｕｆ（Ａout）だけ少なくしてやれば良い。従って、これは、終了点Ａoutのピクチャのデータとしてスタッフィングコードが存在する場合には、そのスタッフィングを削除することで行うことができる。但し、この方法によりデータ蓄積量の調整を行うには、終了点Ａoutのピクチャのデータとして存在するスタッフィングコードのデータ量が、Ｂｕｆ（Ｂin）−Ｂｕｆ（Ａout）以上になっている必要がある。
【０１２３】
また、終了点Ａoutの後に、スキップトＰピクチャを挿入すると、デコード時において、その終了点Ａoutのピクチャと同一の画像が連続することになる。このような同一の画像が、ある１シーンの途中に存在すると、画像の動きがぎこちなくなり、視聴者に違和感を感じさせることがあるが、ここでは、そのような同一の画像が連続する点が、ビットストリームＡおよびＢの接続点である、いわゆる編集点であるため、画像の動きのぎこちなさは目立たず、視聴者にそれほど違和感を感じさせることはない。
【０１２４】
次に、図５のステップＳ３３において挿入されるスキップトＰピクチャのシンタクスを、以下に示す。なお、ここでは、ピクチャが、横３５２画素×縦２４０画素で構成されるものとする。
【０１２５】
picture(){
picture_start_code      0x0000010
temporal_reference      10 bit unsigned int
picture_coding_type     010
vbv_delay               （計算により求める）
full_pel_forward_vector 0
forward_f_code          001
extra_bit_picture       0
byte_alignment          000000
slice(){
slice_start_code        0x00000101
quantizer_scale         11111
extra_bit_slice         0
macroblock(){
macroblock_address_increment    1
macroblock_type                 001
motion_horizontal_forward_code  1
motion_vertical_forward_code    1
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_escape               0000 0001 000
macroblock_address_increment    0000 0011 001
macroblock_type                 001
motion_horizontal_forward_code  1
motion_vertical_forward_code    1
}
}
byte alinment   0
}
【０１２６】
なお、テンポラルリファレンスtemporal_referenceは、終了点ＡoutのピクチャがＩピクチャまたはＰピクチャの場合は、そのＩピクチャまたはＰピクチャのテンポラルリファレンスtemporal_referenceに１を加えた値に、また、終了点ＡoutのピクチャがＢピクチャの場合は、そのＢピクチャのテンポラルリファレンスtemporal_referenceに２を加えた値に、それぞれする。即ち、例えば、図７（Ａ）に示すように、終了点ＡoutのピクチャがＰピクチャで、そのtemporal_referenceが１９の場合、スキップトＰピクチャのtemporal_referenceは、１９に１を加えた２０とする。また、例えば、同図（Ｂ）に示すように、終了点ＡoutのピクチャがＢピクチャで、そのtemporal_referenceが１７の場合、スキップトＰピクチャのtemporal_referenceは、１７に２を加えた１９とする。
【０１２７】
また、ＶＢＶディレイvbv_delayは、次式により求める。
【０１２８】
VD[N]=INT(VD[N-1]+90000×(1/pr-BC[N-1,N]/R)
・・・（６）
但し、式（６）において、VD[N]は、第ＮピクチャのＶＢＶディレイを意味し、BC[N-1,N]は、図８に示すように、第Ｎ−１ピクチャのデータ量を意味する。なお、BC[N-1,N]は、例えば、第Ｎ−１ピクチャのピクチャスタートコードＰＳＣの次のビットから第ＮピクチャのスタートコードＰＳＣの最後のビットまでのビット量を、ビットカウンタ２２でカウントすることにより得るものとする。また、各ヘッダに配置されているスタートコード（start_code）の前にスタッフィングコードが存在する場合があるが、これもヘッダの長さに含めるものとする。さらに、prは、後述するようにして求められるピクチャレートを表す。
【０１２９】
また、上述の場合においては、macroblock_escapeが９回繰り返されているが、これは、ピクチャが、横３５２画素×縦２４０画素で構成されている場合で、一般には、macroblock_escapeは、次式で示される回数ＭＥＣだけ繰り返される。
【０１３０】
ＭＥＣ＝ＩＮＴ（（ピクチャのマクロブロック数−１）／３３）
・・・（７）
【０１３１】
さらに、上述の場合では、macroblock_address_incrementが、0000 0011 001とされているが、これも、ピクチャが、横３５２画素×縦２４０画素で構成されている場合で、一般には、macroblock_address_incrementは、ピクチャのマクロブロック数を３３で除算したときの余りを、ISO-11172-2で規定されているTable B.1にしたがって変換した値となる。
【０１３２】
次に、図２のビットレート推定装置２６において行われる、シーケンスヘッダに配置されているビットレートＢＲから、精度の良いビットレートを推定する処理について、図９のフローチャートを参照して説明する。
【０１３３】
ビットレート推定装置２６では、ビットストリームの２点間のデータ量と、ビットレートＢＲとから、精度の良いビットレートが推定されるようになされており、まず最初に、この２点Ｐ1およびＰ2が、ステップＳ５１において設定される。なお、点Ｐ1またはＰ2としては、例えば、ビットストリームＡについては開始点Ａinまたは終了点Ａoutが、ビットストリームＢについては開始点Ｂinまたは終了点Ｂoutが、それぞれ設定される。但し、点Ｐ1およびＰ2は、それらの間隔（ピクチャ数）が後述するような条件を満足するものであれば、どこに設定しても良い。
【０１３４】
ここで、この２点Ｐ1およびＰ2の設定後に、ビットカウンタ２２およびコントローラ２４からビットレート推定装置２６に対して、所定の情報が供給される。
【０１３５】
即ち、ビットカウンタ２２からは、例えば図１０に示すように、点Ｐ1におけるピクチャスタートコードＰＳＣの次のビットから、点Ｐ2におけるピクチャスタートコードＰＳＣの最後のビットまでのデータ量ＢＣ［Ｐ1，Ｐ2］が供給される。なお、図１０では、シーケンスヘッダＳＨやＧＯＰヘッダＧＨがある位置に点Ｐ1およびＰ2が設定されているが、点Ｐ1およびＰ2は、シーケンスヘッダＳＨ、またはシーケンスヘッダＳＨおよびＧＯＰヘッダＧＨがない位置であっても設定可能である。
【０１３６】
また、コントローラ２４からは、デコーダ２３でデコードされた情報のうち、シーケンスヘッダに配置されているピクチャレートＰＲおよびビットレートＢＲ、ピクチャヘッダに配置されている点Ｐ1およびＰ2におけるＶＢＶディレイＶＤ［Ｐ1］およびＶＤ［Ｐ2］が供給される。
【０１３７】
なお、ビットレート推定装置２６では、ピクチャレートＰＲおよびビットレートＢＲは、次のように変換される。即ち、ピクチャレートＰＲは、ＭＰＥＧ１の規格にしたがい、その値が１乃至８のとき、２３．９７６Ｈｚ，２４．０００Ｈｚ，２５．０００Ｈｚ，２９，９７０Ｈｚ，３０．０００Ｈｚ，５０．０００Ｈｚ，５９．９４０Ｈｚ，６０．０００Ｈｚにそれぞれ変換され、ピクチャレートｐｒとされる。また、ビットレートＢＲは、それを４００倍したビットレートｂｒに変換される。ここで、ＢＲは、前述したように、実際のビットレートの４００ｂｐｓ以下の値を切り上げ、４００で除算した値であるから、その実際のビットレートは、ｂｒ−３９９乃至ｂｒの範囲の値ということになる。
【０１３８】
ビットレート推定装置２６は、ステップＳ５１の処理後、必要な情報を、ビットカウンタ２２およびコントローラ２４から受信すると、ステップＳ５２に進み、点Ｐ1とＰ2との間に存在するピクチャ数ｎの候補が算出される。
【０１３９】
ここで、点Ｐ1とＰ2との間に存在するピクチャ数ｎは、次式にしたがって求めることができる。
【０１４０】
ｎ＝（（ＶＤ［Ｐ2］−ＶＤ［Ｐ1］＋Ｅ２−Ｅ１）／９００００
＋ＢＣ［Ｐ1，Ｐ2］／ｂｒ）×ｐｒ
・・・（８）
但し、式（８）において、Ｅ２またはＥ１は、ＶＤ［Ｐ2］またはＶＤ［Ｐ1］の丸め誤差をそれぞれ表し、いずれも０以上１未満の値である。また、ｐｒは、ピクチャレートＰＲから上述したようにして求められるピクチャレートを表す。なお、整数でないｐｒは、次のように表される。即ち、ＰＲが１、４、または７のとき、ピクチャレートｐｒは、２４０００／１００１，３００００／１００１、または６００００／１００１とされる。
【０１４１】
ＶＤ［Ｐ2］またはＶＤ［Ｐ1］がそれぞれ丸め誤差Ｅ２またはＥ１を有し、また、ビットレートｂｒも４００ｂｐｓ未満の丸め誤差を有するため、ピクチャ数ｎは、ある範囲内の値として得られる。但し、ｎは整数でなければならないため、ある程度の数の候補に限定される。ステップＳ５２では、そのようなピクチャ数ｎの候補が求められる。
【０１４２】
その後、ビットレート推定装置２６では、ステップＳ５３において、ステップＳ５２で求められたピクチャ数ｎの候補を用いて、ビットレートＲ（ビットレートの推定値の候補）が算出される。
【０１４３】
ここで、ビットレートＲの候補は、式（８）におけるｂｒをＲに置き換えて変形した次式にしたがって求めることができる。
【０１４４】
Ｒ＝ＢＣ［Ｐ1，Ｐ2］／（ｎ／ｐｒ
−（ｄＶＤ［Ｐ2，Ｐ1］＋Ｅ2-1）／９００００）
・・・（９）
但し、式（９）において、ｄＶＤ［Ｐ2，Ｐ1］はＶＤ［Ｐ2］−ＶＤ［Ｐ1］を、Ｅ2-1はＥ２−Ｅ１を、それぞれ表す。
【０１４５】
上述したように、ピクチャ数ｎには複数の候補が存在するため、ビットレートＲにも幾つかの候補が生じる。また、ｄＶＤ［Ｐ2，Ｐ1］は丸め誤差を有するため、ビットレートＲの候補数は、さらに拡大する。但し、ビットレートＲは、ＢＲを４００倍した値ｂｒ−３９９からｂｒまでの範囲の値であるため、ある程度の数の候補に限定される。ステップＳ５２では、そのようなビットレートＲの候補が求められる。なお、この限定により、ピクチャ数ｎの候補は、さらに限定される。
【０１４６】
以上のようにして、ピクチャ数ｎの候補およびビットレートＲの候補が求められた後は、ステップＳ５４に進み、それらの候補の中から、確からしいピクチャ数ｎとビットレートＲとの組合せが求められる。
【０１４７】
即ち、ステップＳ５４では、まず最初に、点Ｐ1およびＰ2以外の第３の点Ｐ3がビットストリーム上に設定される。この場合、点Ｐ3におけるＶＢＶディレイＶＤ［Ｐ3］は、次式にしたがって求めることができる。
【０１４８】
ＶＤ［Ｐ3］＝ＩＮＴ（ＶＤ［Ｐ1］＋Ｅ１
＋９００００×（ｎ／ｐｒ−ＢＣ［Ｐ1，Ｐ3］／Ｒ））
・・・（１０）
但し、式（１０）において、ＢＣ［Ｐ1，Ｐ3］は、図１０で説明した場合と同様にして求められる点Ｐ1とＰ3との間のデータ量を表す。
【０１４９】
ステップＳ５４では、式（１０）に、ステップＳ５２またはＳ５３でそれぞれ求められたピクチャ数ｎの候補またはビットレートＲの候補を代入するとともに、実際のビットストリームに配置されている点Ｐ3におけるＶＢＶディレイＶＤ［Ｐ3］を代入し、その右辺と左辺との差をより０に近くするピクチャ数ｎおよびビットレートＲの組合せが求められる。
【０１５０】
そして、ステップＳ５５に進み、ステップＳ５４で求められたビットレートＲから、そのビットレートＲと真のビットレートとの誤差を所定の範囲内に収めるピクチャ数Ｎが求められる。
【０１５１】
即ち、いま、式（８）について、ビットレートｂｒを真のビットレートｒに置き換えて変形すると、次式が得られる。
【０１５２】
ｎ＝（ｄＶＤ［Ｐ2，Ｐ1］／９００００＋Ｅ2-1／９００００
＋ＢＣ［Ｐ1，Ｐ2］／ｒ）×ｐｒ
・・・（１１）
【０１５３】
ｄＶＤ［Ｐ2，Ｐ1］＝０と仮定すると、式（１１）は次のようになる。
【０１５４】
ｎ＝（Ｅ2-1／９００００＋ＢＣ［Ｐ1，Ｐ2］／ｒ）×ｐｒ
・・・（１２）
【０１５５】
一方、データ量ＢＣ［Ｐ1，Ｐ2］を、ビットレートの推定値Ｒで表すと、次のようになる。
【０１５６】
ＢＣ［Ｐ1，Ｐ2］＝ｎ／ｐｒ×Ｒ
・・・（１３）
【０１５７】
式（１３）を式（１２）に代入すると、次式が得られる。
【０１５８】
ｎ＝（Ｅ2-1／９００００＋ｎ／ｐｒ×Ｒ／ｒ）×ｐｒ
＝ｒ×Ｅ2-1／（ｒ−Ｒ）×９００００×ｐｒ
・・・（１４）
【０１５９】
｜Ｅ2-1｜は１未満の値であるから、ｎは最大の場合で、次式で示されるようになる。
【０１６０】
ｎ＝ｒ／（ｒ−Ｒ）×９００００×ｐｒ
・・・（１５）
【０１６１】
例えば、ＮＴＳＣ方式の画像の場合、式（１５）は次のようになる。
【０１６２】
ｎ＝ｒ／（（ｒ−Ｒ）×３００３．０）
・・・（１６）
【０１６３】
この場合、ビットレートの推定値Ｒの誤差、即ち、ｒ−Ｒが、例えば１ｂｐｓ以下となるためのピクチャ数ｎは、ｒ／３００３ということになる。
【０１６４】
以上は、ｄＶＤ［Ｐ2，Ｐ1］＝０と仮定した場合であり、例えば、ＶＤ［Ｐ2］＞ＶＤ［Ｐ1］の場合などのように、ＶＤ［Ｐ2］とＶＤ［Ｐ1］とが等しくない場合は、点Ｐ2およびＰ1は、ｄＶＤ［Ｐ2，Ｐ1］／９００００×ｐｒ以上のピクチャ数に相当する間隔をとって設定する必要がある。
【０１６５】
いま、誤差を有するビットレートをｒ’と表し、そのビットレートｒ’の誤差が、終了点Ａoutや開始点ＢinにおけるＶＢＶディレイＶＤ［Ａout］やＶＤ［Ｂin］の算出に与える影響を考えてみると、式（１０）から、次式が得られる。
【０１６６】
ＥVBV＝９００００×ＢＣ［Ｐ1，Ｐ2］×（ｒ’−ｒ）／ｒ×ｒ’
・・・（１７）
但し、式（１７）において、ＥVBVは、ＶＢＶディレイの誤差を表す。
【０１６７】
簡単化のために、ＢＣ［Ｐ1，Ｐ2］＝ｒ×ｔと表すと（但し、ｔは、点Ｐ1とＰ2との間の間隔に相当する時間を表す）、式（１７）は、次のように変形することができる。
【０１６８】
ｔ＝１／（ｒ’−ｒ）×ＥVBV／９００００×ｒ’
・・・（１８）
【０１６９】
ＥVBVは整数に丸められるから、その最小値は１であり、これを、式（１８）に代入すると、次のようになる。
【０１７０】
ｔ＝１／（ｒ’−ｒ）×ｒ’／９００００
・・・（１９）
【０１７１】
従って、ビットレートの誤差、即ち、ｒ’−ｒが、例えば、１ｂｐｓであるとすると、ＶＢＶディレイの算出に影響が生じるのは、時間ｔが次式で表される時間よりも短い場合ということになる。
【０１７２】
ｔ＝ｒ’／９００００
・・・（２０）
【０１７３】
従って、例えば、ビデオＣＤ（Compact Disc）の場合、そのビットレートは１．１５Ｍｂｐｓ程度であるが、この場合に、ビットレートの誤差を１ｂｐｓとするには、点Ｐ1とＰ2との間隔を、約１２．８秒以上とする必要がある。また、この場合に、例えば、ビットレートの誤差を２ｂｐｓとするには、点Ｐ1とＰ2との間隔を、上述の半分の約６．４秒以上とする必要がある。
【０１７４】
よって、そのような間隔以上とって、点Ｐ1とＰ2を設定すれば、ステップＳ５４で求められるビットレートの推定値Ｒの誤差は、その影響を無視することができるほど小さくなる。
【０１７５】
なお、点Ｐ1とＰ2との間隔およびビットレートの誤差だけを考慮すれば、上述の通りであるが、ステップＳ５４で用いる式（１０）では、点Ｐ1におけるＶＢＶディレイＶＤ［Ｐ1］の丸め誤差があり、この誤差の影響の方が大きい。
【０１７６】
ステップＳ５５では、以上のようにして、ステップＳ５４で求められたビットレートＲの誤差を無視することができるような時間に相当するピクチャ数Ｎが求められる。
【０１７７】
そして、ステップＳ５６に進み、ステップＳ５４で求められた点Ｐ1とＰ2との間のピクチャ数ｎが、ステップＳ５５で求められたピクチャ数Ｎ以上であるかどうかが判定される。ステップＳ５６において、ピクチャ数ｎがＮ以上でないと判定された場合、ステップＳ５７に進み、点Ｐ1とＰ2との間のピクチャ数がＮ以上となるように、その点Ｐ1およびＰ2が再設定される。そして、ステップＳ５２に進み、上述の処理が繰り返される。
【０１７８】
一方、ステップＳ５６において、ピクチャ数ｎがＮ以上であると判定された場合、ステップＳ５５で得られたビットレートの推定値Ｒが、コントローラ２４に出力され、処理を終了する。
【０１７９】
コントローラ２４では、このようにして得られたビットレートの推定値Ｒを用いて、上述した処理が行われる。
【０１８０】
以上のように、ビットレートを精度良く推定するようにしたので、コントローラ２４における処理精度を向上させることができる。
【０１８１】
なお、ビットレート推定装置２６では、上述のようにして、ビットストリームＡおよびＢの両方について、それぞれのビットレートの確からしい候補（推定値）が求められ、コントローラ２４に供給される。そして、コントローラ２４では、ビットストリームＡおよびＢの両方のビットレートの候補の、例えば、重複部分の平均値などが、上述した処理を行うのに用いられる。
【０１８２】
但し、ビットストリームＡおよびＢの両方のビットレートの候補に重複部分がなく、著しく差異がある場合には、それらの符号化時におけるビットレートが異なると考えられる。この場合、ＭＰＥＧ１の規格上、編集を行うことはできないため、編集処理は中止される。
【０１８３】
以上、本発明を、ＭＰＥＧ１の規格に準拠して符号化を行うことにより得られたビットストリームを編集する編集装置に適用した場合について説明したが、本発明は、ＭＰＥＧ１符号化の他、ＭＰＥＧ２符号化や、その他の受信側に仮想バッファを想定して符号化を行うことにより得られたビットストリームを編集する場合に適用可能である。
【０１８４】
また、本発明は、画像の他に、例えば音声などを含むビットストリームの編集を行う場合にも適用可能である。
【図面の簡単な説明】
【０１８５】
【図１】本発明を適用した編集装置の一実施の形態の構成例を示すブロック図である。
【図２】図１の編集装置の機能的構成例を示すブロック図である。
【図３】ビットストリームＡおよびＢを編集して、ビットストリームＣが構成される様子を示す図である。
【図４】図２の編集装置の動作を説明するためのフローチャートである。
【図５】図４のフローチャートに続くフローチャートである。
【図６】図５のフローチャートに続くフローチャートである。
【図７】スキップトＰピクチャを挿入した場合のテンポラルリファレンスの付け方を説明するための図である。
【図８】スキップトＰピクチャのＶＢＶディレイの求め方を説明するための図である。
【図９】図２のビットレート推定装置２６の動作を説明するためのフローチャートである。
【図１０】ビットレートの推定値の求め方を説明するための図である。
【図１１】従来の編集装置の一例の構成を示すブロック図である。
【図１２】ビットストリームＡおよびＢを編集して、ビットストリームＣが構成される様子を示す図である。
【図１３】図１１の編集装置の動作を説明するためのフローチャートである。
【図１４】図１３のフローチャートに続くフローチャートである。
【図１５】ＶＢＶバッファのデータ蓄積量の推移を示す図である。
【図１６】ビットストリームＡとＢとを接続した場合に、ＶＢＶバッファのデータ蓄積量に不整合が生じる様子を示す図である。
【符号の説明】
【０１８６】
１  マイクロプロセッサ，  ２  メインメモリ，  ３  フレームバッファ，  ４  バスブリッジ，  ５  チューナ，  ６  モデム，  ７  Ｉ／Ｏインターフェイス，  ８  キーボード，  ９  マウス，  １０  補助記憶インターフェイス，  １１  ＣＤ−Ｒ，  １２  ハードディスク，  １３  圧縮部，  １４  ビデオカメラ，  １５  伸張部，  １６  ＶＴＲ，  １７  コンピュータディスプレイ，  ２１  データ記憶装置，  ２２  ビットカウンタ，  ２３  デコーダ，  ２４  コントローラ（データ蓄積量算出手段），  ２５  メモリ，  ２６  ビットレート推定装置（ビットレート推定手段），  ２７  バッファ蓄積量調整装置（データ量調整手段）
【図１】
2007235974.tif 000003
【図２】
2007235974.tif 000004
【図３】
2007235974.tif 000005
【図４】
2007235974.tif 000006
【図５】
2007235974.tif 000007
【図６】
2007235974.tif 000008
【図７】
2007235974.tif 000009
【図８】
2007235974.tif 000010
【図９】
2007235974.tif 000011
【図１０】
2007235974.tif 000012
【図１１】
2007235974.tif 000013
【図１２】
2007235974.tif 000014
【図１３】
2007235974.tif 000015
【図１４】
2007235974.tif 000016
【図１５】
2007235974.tif 000017
【図１６】
2007235974.tif 000018
【手続補正書】
【提出日】平成19年4月26日(2007.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集装置であって、
前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、
前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出するデータ蓄積量算出手段と、
前記データ蓄積量算出手段により算出された前記第１および第２の接続点における前記データ蓄積量どうしの差に基づいて、前記第３のビットストリームにおける、前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整するデータ量調整手段とを備え、
前記データ量調整手段は、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、前記第１の接続点におけるピクチャのデータのスタッフィング（Stuffing）コードを削除する
ことを特徴とする画像編集装置。
【請求項２】
前記第１および第２のビットストリームは、少なくとも画像をＭＰＥＧ（Moving Picture Experts Group）の規格に準拠して圧縮符号化したものであり、
前記蓄積量情報は、ＶＢＶ（Video Buffering Verifier）バッファのデータ蓄積量に相当する、ピクチャヘッダに含まれるＶＤ（VBV Delay）である
ことを特徴とする請求項１に記載の画像編集装置。
【請求項３】
少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集方法であって、
前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、
前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出し、
前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、前記第１の接続点におけるピクチャのデータのスタッフィング（Stuffing）コードを削除して前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整する
ことを特徴とする画像編集方法。
【請求項４】
前記第１および第２のビットストリームは、少なくとも画像をＭＰＥＧ（Moving Picture Experts Group）の規格に準拠して圧縮符号化したものであり、
前記蓄積量情報は、ＶＢＶ（Video Buffering Verifier）バッファのデータ蓄積量に相当する、ピクチャヘッダに含まれるＶＤ（VBV Delay）である
ことを特徴とする請求項３に記載の画像編集方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
本発明の一側面の画像編集装置は、少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集装置であって、前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出するデータ蓄積量算出手段と、前記データ蓄積量算出手段により算出された前記第１および第２の接続点における前記データ蓄積量どうしの差に基づいて、前記第３のビットストリームにおける、前記第１と第２のビットストリームの接続点に相当する部分のデータ量を調整するデータ量調整手段とを備え、前記データ量調整手段は、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、前記第１の接続点におけるピクチャのデータのスタッフィング（Stuffing）コードを削除する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
本発明の一側面の画像編集方法は、少なくとも画像について圧縮符号化を行うことにより得られた第１および第２のビットストリームを編集し、その第１および第２のビットストリームの少なくとも一部ずつを接続した第３のビットストリームを構成する画像編集方法であって、前記圧縮符号化が、受信側に想定された仮想バッファのデータ蓄積量を考慮して行われ、そのデータ蓄積量に関する蓄積量情報が前記第１および第２のビットストリームに含まれる場合において、前記第１のビットストリームの、前記第２のビットストリームと接続する第１の接続点、および前記第２のビットストリームの、前記第１のビットストリームと接続する第２の接続点における前記仮想バッファのデータ蓄積量を、前記蓄積量情報に基づいて算出し、前記第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、前記第１の接続点におけるピクチャのデータのスタッフィング（Stuffing）コードを削除して第１と第２のビットストリームの接続点に相当する部分のデータ量を調整するステップを含む。
前記第１および第２のビットストリームは、少なくとも画像をＭＰＥＧ（Moving Picture Experts Group）の規格に準拠して圧縮符号化したものであり、前記蓄積量情報は、ＶＢＶ（Video Buffering Verifier）バッファのデータ蓄積量に相当する、ピクチャヘッダに含まれるＶＤ（VBV Delay）である。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
本発明の一側面においては、第１のビットストリームの、第２のビットストリームと接続する第１の接続点、および第２のビットストリームの、第１のビットストリームと接続する第２の接続点における仮想バッファのデータ蓄積量が、蓄積量情報に基づいて算出され、その第１および第２の接続点におけるデータ蓄積量どうしの差に基づいて、第３のビットストリームにおける、第１と第２のビットストリームの接続点に相当する部分のデータ量が調整され、第１の接続点におけるデータ蓄積量が、第２の接続点におけるデータ蓄積量より少ない場合、第１の接続点におけるピクチャのデータのスタッフィング（Stuffing）コードが削除される。