(57)【要約】【課題】プレイ・フロム・オフセット・モードでそれぞれの個別ビデオ・フレームに正確なフレームでランダム・アクセスするための、前に符号化済みのＭＰＥＧビデオ・ファイルの中に圧縮されたＧＯＰオフセット・テーブルを自動的に挿入するのを可能にする方法および装置を提供する。【解決手段】ＭＰＥＧビデオ・ファイルのすべてのビデオ・パケットの各ＧＯＰヘッダに関するエントリを有する圧縮されたＧＯＰオフセット・テーブルを作成し、前に少なくとも１つのパディング・パケットとして圧縮されたＧＯＰオフセット・テーブルを挿入することによってＭＰＥＧビデオ・ファイルを変更し、ＭＰＥＧ準拠および圧縮されたオーディオ／ビデオ・データを保つ。ＧＯＰオフセット・テーブルのために必要とされるパディング・パケットの数を推定し、ＭＰＥＧビデオ・ファイル読取りを１回の読取りに制限するためのステップをさらに有する。【選択図】図２
2004509580.tif 000002
【特許請求の範囲】
【請求項１】
プレイ・フロム・オフセット（ｐｌａｙ−ｆｒｏｍ−ｏｆｆｓｅｔ）モードでＭＰＥＧプレーヤ／復号器によってそれぞれの個別ビデオ・フレームに正確なフレームでランダム・アクセスするため、前に符号化済みのＭＰＥＧビデオ・ファイルの中に圧縮されたＧＯＰオフセット・テーブルを自動的に挿入するための方法であって、
（ａ）正確なＧＯＰヘッダＳＭＰＴＥタイムコードおよびＧＯＰアドレス・オフセットを獲得するため、前記ＭＰＥＧビデオ・ファイルのすべてのビデオ・パケットの各ＧＯＰヘッダに関するエントリを有する圧縮されたＧＯＰオフセット・テーブルを作成するステップと、
（ｂ）前記ＭＰＥＧビデオ・ファイルの前に少なくとも１つのパディング・パケットとして前記圧縮されたＧＯＰオフセット・テーブルを挿入しながらも、前記ＭＰＥＧビデオ・ファイルの元のフレーム・プレゼンテーションを維持し、これにより、前記ＭＰＥＧビデオ・ファイルのＭＰＥＧ準拠および圧縮されたオーディオ／ビデオ・データを保つことにより、前記ＭＰＥＧビデオ・ファイルを変更するステップとを含む方法。
【請求項２】
前記ＧＯＰオフセット・テーブルのために必要とされるパディング・パケットの数を推定し、これにより、前記ＭＰＥＧビデオ・ファイルの読取りを１回の読取りに制限するステップをさらに含む請求項１に記載の方法。
【請求項３】
少なくとも１つの圧縮されたＧＯＰオフセット・テーブル・パディング・パケットにシステム・クロック基準（ＳＣＲ）を有するパケット・ヘッダが先行する方法であって、
前記パケットが、
標準のＰＥＳヘッダと、
オフセット・テーブル署名と、
開始タイムコード・フィールドと、
開始ＧＯＰアドレス・フィールドとをさらに含む請求項１に記載の方法。
【請求項４】
前記ＧＯＰオフセット・テーブルの復号化に先立ってＭＰＥＧプレーヤ／復号器のクロックを同期しなおすため、また各ＧＯＰヘッダ・エントリのフレーム数およびアドレス・オフセットをそれぞれ、前記開始タイムコードおよび前記開始ＧＯＰアドレスに加算することによって前記ＭＰＥＧプレーヤ／復号器による圧縮解除中および復号化中に各ＧＯＰヘッダのタイムコードおよびアドレス・オフセットを再構成するため、またプレイ・フロム・オフセット・モードでそれぞれの個別ビデオ・フレームにランダム・アクセスを可能にするため、各前記ＧＯＰヘッダ・エントリが、
前のＧＯＰの中のフレーム数に関するフィールドと、
前記ＧＯＰヘッダに対応する前記パケット・ヘッダのオフセット・アドレスを有するＧＯＰアドレス・オフセットに関するフィールドとをさらに含む請求項３に記載の方法。
【請求項５】
前記ＧＯＰオフセット・テーブル挿入の後、適切なシステム・タイミングを維持するために前記ＳＣＲの時間を戻すように調整するステップをさらに含む請求項３に記載の方法。
【請求項６】
プレイ・フロム・オフセット・モードでＭＰＥＧプレーヤ／復号器によってそれぞれの個別ビデオ・フレームに正確なフレームでランダム・アクセスするため、前に符号化済みのＭＰＥＧビデオ・ファイルの中に圧縮されたＧＯＰオフセット・テーブルを自動的に挿入するためのシステムであって、
前記ＭＰＥＧビデオ・ファイルを記憶するための電子記憶デバイスに結合されたコンピュータと、
正確なＧＯＰヘッダＳＭＰＴＥタイムコードおよびＧＯＰアドレス・オフセットを獲得するため、前記ＭＰＥＧビデオ・ファイルのすべてのビデオ・パケットの各ＧＯＰヘッダに関するエントリを有する圧縮されたＧＯＰオフセット・テーブルを作成するための、前記コンピュータによって実行されるプログラミング手段と、
前記ＭＰＥＧビデオ・ファイルの前に少なくとも１つのパディング・パケットとして前記圧縮されたＧＯＰオフセット・テーブルを挿入しながらも、前記ＭＰＥＧビデオ・ファイルの元のフレーム・プレゼンテーションを維持し、これにより、前記ＭＰＥＧビデオ・ファイルのＭＰＥＧ準拠および圧縮されたオーディオ／ビデオ・データを保つことにより、前記ＭＰＥＧビデオ・ファイルを変更するための、前記コンピュータによって実行されるプログラミング手段とを含むシステム。
【請求項７】
前記ＧＯＰオフセット・テーブルのために必要とされるパディング・パケットの数を推定し、これにより、前記ＭＰＥＧビデオ・ファイルの読取りを１回の読取りに制限する手段をさらに含む請求項６に記載のシステム。
【請求項８】
少なくとも１つの圧縮されたＧＯＰオフセット・テーブル・パディング・パケットにシステム・クロック基準（ＳＣＲ）を有するパケット・ヘッダが先行するシステムであって、
前記パケットが、
標準のＰＥＳヘッダと、
オフセット・テーブル署名と、
開始タイムコード・フィールドと、
開始ＧＯＰアドレス・フィールドとをさらに含む請求項６に記載のシステム。
【請求項９】
前記ＧＯＰオフセット・テーブルの復号化に先立ってＭＰＥＧプレーヤ／復号器のクロックを同期しなおすため、また各ＧＯＰヘッダ・エントリのフレーム数およびアドレス・オフセットをそれぞれ、前記開始タイムコードおよび前記開始ＧＯＰアドレスに加算することによって前記ＭＰＥＧプレーヤ／復号器による圧縮解除中および復号化中に各ＧＯＰヘッダのタイムコードおよびアドレス・オフセットを再構成するため、またプレイ・フロム・オフセット・モードでそれぞれの個別ビデオ・フレームにランダム・アクセスを可能にするため、各前記ＧＯＰヘッダ・エントリが、
前のＧＯＰの中のフレーム数に関するフィールドと、
前記ＧＯＰヘッダに対応する前記パケット・ヘッダのオフセット・アドレスを有するＧＯＰアドレス・オフセットに関するフィールドとをさらに含む請求項８に記載のシステム。
【請求項１０】
前記ＧＯＰオフセット・テーブル挿入の後、適切なシステム・タイミングを維持するために前記ＳＣＲの時間を戻すように調整する手段をさらに含む請求項８に記載のシステム。
【請求項１１】
コンピュータが、プレイ・フロム・オフセット・モードでＭＰＥＧプレーヤ／復号器によってそれぞれの個別ビデオ・フレームに正確なフレームでランダム・アクセスするため、前記コンピュータに結合された電子記憶デバイスの中に記憶された前に符号化済みのＭＰＥＧビデオ・ファイルの中に圧縮されたＧＯＰオフセット・テーブルを自動的に挿入するための方法ステップを行うようにさせるコンピュータ可読プログラム手段を含むコンピュータ使用可能媒体上に記憶されたコンピュータ・プログラム製品であって、
前記方法が、
（ａ）正確なＧＯＰヘッダＳＭＰＴＥタイムコードおよびＧＯＰアドレス・オフセットを獲得するため、前記ＭＰＥＧビデオ・ファイルのすべてのビデオ・パケットの各ＧＯＰヘッダに関するエントリを有する圧縮されたＧＯＰオフセット・テーブルを作成するステップと、
（ｂ）前記ＭＰＥＧビデオ・ファイルの前に少なくとも１つのパディング・パケットとして前記圧縮されたＧＯＰオフセット・テーブルを挿入しながらも、前記ＭＰＥＧビデオ・ファイルの元のフレーム・プレゼンテーションを維持し、これにより、前記ＭＰＥＧビデオ・ファイルのＭＰＥＧ準拠および圧縮されたオーディオ／ビデオ・データを保つことにより、前記ＭＰＥＧビデオ・ファイルを変更するステップとを含む製品。
【請求項１２】
前記ＧＯＰオフセット・テーブルのために必要とされるパディング・パケットの数を推定し、これにより、前記ＭＰＥＧビデオ・ファイルの読取りを１回の読取りに制限するためのステップをさらに含む請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
少なくとも１つの圧縮されたＧＯＰオフセット・テーブル・パディング・パケットにシステム・クロック基準（ＳＣＲ）を有するパケット・ヘッダが先行するコンピュータ・プログラム製品であって、
前記パケットが、
標準のＰＥＳヘッダと、
オフセット・テーブル署名と、
開始タイムコード・フィールドと、
開始ＧＯＰアドレス・フィールドとをさらに含む請求項１１に記載の製品。
【請求項１４】
前記ＧＯＰオフセット・テーブルの復号化に先立ってＭＰＥＧプレーヤ／復号器のクロックを同期しなおすため、また各ＧＯＰヘッダ・エントリのフレーム数およびアドレス・オフセットをそれぞれ、前記開始タイムコードおよび前記開始ＧＯＰアドレスに加算することによって前記ＭＰＥＧプレーヤ／復号器による圧縮解除中および復号化中に各ＧＯＰヘッダのタイムコードおよびアドレス・オフセットを再構成するため、またプレイ・フロム・オフセット・モードでそれぞれの個別ビデオ・フレームにランダム・アクセスを可能にするため、各前記ＧＯＰヘッダ・エントリが、
前のＧＯＰの中のフレーム数に関するフィールドと、
前記ＧＯＰヘッダに対応する前記パケット・ヘッダのオフセット・アドレスを有するＧＯＰアドレス・オフセットに関するフィールドとをさらに含む請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
前記ＧＯＰオフセット・テーブル挿入の後、適切なシステム・タイミングを維持するために前記ＳＣＲの時間を戻すように調整するためのステップをさらに含む請求項１３に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、本出願と同じ発明者によって２０００年９月１５日に出願された「Ａｐｐａｒａｔｉａｎｄ Ｍｅｔｈｏｄ Ｆｏｒ Ｐｒｏｃｅｓｓｉｎｇ ＭＰＥＧ Ｓｔｒｅａｍｓ」という名称の米国仮出願第６０／２３２８９３号の利点を主張する。
【０００２】
本発明は、２００１年５月７日出願の「Ｓｙｓｔｅｍ ａｎｄ Ｍｅｔｈｏｄ ｏｆＰｒｏｃｅｓｓｉｎｇ ＭＰＥＧ Ｓｔｒｅａｍｓ Ｆｏｒ Ｔｉｍｅｃｏｄｅ Ｐａｃｋｅｔ Ｉｎｓｅｒｔｉｏｎ」という名称の同時係属米国出願第０９／８５０２０１号、２００１年５月７日出願の「Ｓｙｓｔｅｍａｎｄ Ｍｅｔｈｏｄ ｏｆ Ｔｉｍｅｃｏｄｅ Ｒｅｐａｉｒ ａｎｄ Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ ｉｎ ＭＰＥＧ Ｓｔｒｅａｍｓ」という名称の同時係属米国出願第０９／８５０２５３号、および２００１年５月７日出願の「Ｓｙｓｔｅｍａｎｄ Ｍｅｔｈｏｄ ｏｆ Ｐｒｏｃｅｓｓｉｎｇ ＭＰＥＧ Ｓｔｒｅａｍｓ Ｆｏｒ Ｓｔｏｒｙｂｏａｒｄ ａｎｄ Ｒｉｇｈｔｓ ＭｅｔａｄａｔａＩｎｓｅｒｔｉｏｎ」という名称の同時係属米国出願第０９／８５０５２２号に関連する。
【０００３】
本発明は、一般に、フルモーション・ビデオの圧縮、カタログ作成、および観覧に関し、より詳細には、圧縮されたビデオ・データの処理に関する。
【０００４】
【従来の技術】
デジタル分野においてビデオ・アーカイブを作成し、操作するのに必要とされるインフラストラクチャおよび処理は、放送ビデオ業界において周知である。アーカイブ化プロセスは、一般に、ＭＰＥＧ−１圧縮またはＭＰＥＧ−２圧縮を使用してアナログ・ビデオをデジタル化して圧縮することで始まり、次に、圧縮されたビデオ・ファイルを長期記憶に移動する。ビデオの貢献品質を保つため、放送事業者は、一般に、高い圧縮ビットレート（すなわち、１５〜４０Ｍｂｐｓ）を選択し、これにより、ＭＰＥＧ圧縮方式の損失率の高さにも関わらず、比較的高い忠実度で、元のビデオを回復することが可能になる。
【０００５】
ただし、圧縮されたビデオの高いビットレートは、ビデオを観覧および製作後の作業のために配信しなければならないとき、放送事業者のローカル・エリア・ネットワークおよびコンピュータ・ワークステーション・インフラストラクチャに相当な問題をもたらす。製作所全体にわたって資産を転送するのに必要とされる高いネットワーク帯域幅および時間量により、同時の転送の数に上限が課され、生産性がひどく制限される。この帯域幅の問題を受けて、放送事業者は、はるかに低い圧縮ビットレート（すなわち、１．５〜４Ｍｂｐｓ）でビデオの追加のコピーを作成する。「プロキシ」ファイルまたは「ブラウズ」ファイルと呼ばれるこの低いビットレートのファイルにより、ユーザは、ビデオを迅速にダウンロードする、またはストリーミング・ビデオ・サーバを利用することによってビデオをコンピュータ・モニタ上で直接に観覧することが可能になる。ローカル・エリア・ネットワークの外部におけるビデオ資産の閲覧を容易にするため、第２のプロキシ・ファイルが、しばしば、低速の地上回線を介してストリーミングするため、非常に低いビットレート（５６〜１０００Ｋｂｐｓ）で符号化される。
【０００６】
ビデオの取込みの後、アーカイビング・プロセスにおける次のステップは、ビデオ・ライブラリ・カタログの中でそのビデオに関するエントリを作成することである。このエントリは、そのビデオに関係のある情報であるメタデータを含む。通常、放送事業者に固有であるビデオ・カタログ・レコードの内容および形式により、放送事業者のビデオ・ライブラリの中でビデオ・クリップを探索し、取り出すことが容易になる。現在、音声認識技術を介して獲得される、クローズドキャプション・テキストおよび実際のオーディオ・プログラムのテキストなどのメタデータを、ＭＰＥＧ−１ビデオ・ファイルまたはＭＰＥＧ−２ビデオ・ファイルから自動的に抽出する市販のビデオ・カタログ・アプリケーション（カタロガ）が存在する。さらに、カタロガは、シーン変化分析を行い、各カット後または主要なシーン遷移後の第１のフレームのビットマップを作成することにより、ビデオからメタデータを抽出する。個々に「サムネール」、または集合で「ストーリーボード」と呼ばれるこのビットマップは、エンド・ユーザが、ビデオ内容を非常に迅速に判別することができるようにするので、必要不可欠なメタデータと考えられている。ストーリーボードがないと、エンド・ユーザは、ビデオを見て、または最低でも、ビデオを早送りして所望のビデオ・セグメントを探し出すことを余儀なくされる。
【０００７】
ビデオ・カタログ・アプリケーションの一般的な機能として、エンド・ユーザは、カタログ・レコードまたはメタデータを見る際、任意のサムネール上でダブル・クリックすることによってプロキシ・ファイルを再生することができる。アプリケーションのウインドウ内にネスト化されたＭＰＥＧプレーヤが、サムネールに関連するタイムコードからビデオの再生を開始する。プレーヤは、ストリーミング・ビデオ・サーバにプレイ・フロム・オフセット（ｐｌａｙ−ｆｒｏｍ−ｏｆｆｓｅｔ）要求を送ることによってこの機能を行う。ＭＰＥＧ構文の限界のため、グループ・オブ・ピクチャーズ（ＧＯＰ）ヘッダ・レベルにおいてだけ、ビデオにランダムにアクセスすることができる。より具体的には、ランダムに再生を開始するため、ＭＰＥＧファイルの中で、プレーヤは、パック・ヘッダを復号化してシステム・タイミングを獲得し、システム・ヘッダを復号化してオーディオ・ストリームおよびビデオ・ストリームを特定し、シーケンス・ヘッダを復号化してビデオ形式を構文解析し、シーケンス拡張子を復号化してさらなるビデオ形式情報を求め、またＧＯＰヘッダを復号化して「Ｉ」フレームで復号化を開始しなければならない。
【０００８】
他のブロック・ベースの圧縮アルゴリズムとは異なり、ＭＰＥＧにおけるフレーム・サイズは、可変であり、したがって、フレームは、ファイルを順次に読み取ることによって探し出さなければならない。プレイ・フロム・オフセット機能を実施するため、ＭＰＥＧプレーヤは、一般に、多重ビットレートに基づくおおよその計算を行わなければならない。例えば、８Ｍｂｐｓビデオのオフセット００：００：１０：１５（１５フレーム、１０秒）で再生を開始するため、プレーヤは、以下の公式を使用する。
【数１】
2004509580.tif 000003
2004509580.tif 000004
【０００９】
上記の公式は、単に近似であり、またプレーヤは、ＧＯＰ境界がどこにあるのかについて知識を有していないので、プレーヤは、再生が、目標フレームの前で開始されるのを確実にするため、上記の結果から数バイトを恣意的に引く。この粗雑な方法は、符号器が、完全な誤りのないビデオ・フレームを構成することができるまでに、最高で１５フレームの壊れたビデオが再生される可能性があるので、見た目がよくない。さらに、この公式は、ビデオが、一定のビットレートで圧縮されたものと想定している。可変ビットレート圧縮方式が使用された場合、ビットレート、ファイル・サイズ、およびビデオ持続時間の間に相関が存在しない。
【００１０】
プレイ・フロム・オフセットを実施する別の従来の技術は、ビデオ・サーバが、ビデオの中の各ＧＯＰのオフセットを含む索引ファイルを構築することである。次に、プレーヤが、ストリーミング・サーバに時間オフセットを渡し、サーバは、テーブル・ルックアップを行ってファイル・バイト・オフセットを決定する。この方法の欠点は、サーバが、各ビデオに関して追加のファイルを構築し、管理しなければならないことである。ビデオＭＰＥＧファイルが、ニア・ライン・テープ記憶装置に移動された場合、両方のファイルをテープに書き込み、またテープから復元しなければならない。これは、負荷バランシングを保つため、またはビデオ・ファイルを他のコンテンツ・プロバイダからインポートするために一般に行われるビデオのサーバ間転送も複雑にする。
【００１１】
プレイ・フロム・オフセットのサーバ・ベースの実施が抱えるさらに別の問題は、ユーザによって要求されたフレームが、ＧＯＰ境界と一致しない可能性が極めて高いことに起因して生じる。プレーヤは、タイムコードの開始フレームについて知識を有しておらず、したがって、ＧＯＰの第１のフレームのところでキューを出し、エンド・ユーザは、意図するフレームまでシングル・ステップを行うことを余儀なくされる。この挙動は、放送ビデオ業界にとって許容することができない。非線形ビデオ・デバイスが、最小の遅延で目標フレームのところでキューを出すものと予期される。
【００１２】
【発明が解決しようとする課題】
したがって、既存のＭＰＥＧビデオ・ファイルの中にファイル索引情報を自動的に挿入して、ＭＰＥＧプレーヤが、正確なプレイ・フロム・オフセット機能のためにＧＯＰ　ＳＭＰＴＥタイムコードおよびファイル・オフセットの先験的な知識を有するようにするためのシステムおよび方法の必要性が存在する。このシステムおよび方法は、別個の索引ファイルを使用することなく、ＭＰＥＧビデオ・ファイルが、任意の規格対応のＭＰＥＧ復号化エンジンによって誤りなく復号化可能であることに変わりないのを確実にするように機能しなければならない。
【００１３】
【課題を解決するための手段】
本発明の以上の目的およびその他の目的、特徴、ならびに利点は、いくつかの図面を参照する好ましい実施形態の以下の詳細な説明から明白となる。
【００１４】
本発明の１つの好ましい実施形態は、プレイ・フロム・オフセット・モードでそれぞれの個別ビデオ・フレームに正確なフレームでランダム・アクセスするため、前に符号化済みのＭＰＥＧビデオ・ファイルの中に圧縮されたＧＯＰオフセット・テーブルを自動的に挿入するための方法である。この方法は、ＭＰＥＧビデオ・ファイルのすべてのビデオ・パケットの各ＧＯＰヘッダに関するエントリを有する圧縮されたＧＯＰオフセット・テーブルを作成し、少なくとも１つのパディング・パケットとしてＭＰＥＧビデオ・ファイルの前にその圧縮されたＧＯＰオフセット・テーブルを挿入することによってＭＰＥＧビデオ・ファイルを変更し、これにより、ＭＰＥＧビデオ・ファイルのＭＰＥＧ準拠および圧縮されたオーディオ／ビデオ・データを保つ。この方法は、ＧＯＰオフセット・テーブルに必要とされるパディング・パケットの数を推定し、これにより、１回の読取りにＭＰＥＧビデオ・ファイルの読取りを制限するステップをさらに有する。一部の圧縮されたＧＯＰオフセット・テーブル・パディング・パケットには、システム・クロック基準（ＳＣＲ）を有するパケット・ヘッダが先行する。パディング・パケットは、標準のＰＥＳヘッダ、オフセット・テーブル署名、開始タイムコード・フィールド、および開始ＧＯＰアドレス・フィールドをさらに有する。
【００１５】
各ＧＯＰヘッダ・エントリは、前のＧＯＰの中のフレーム数に関するフィールド、およびそのＧＯＰヘッダに対応するパケット・ヘッダのオフセット・アドレスを有するＧＯＰアドレス・オフセットに関するフィールドをさらに有する。以上のフィールドは、ＧＯＰオフセット・テーブルを復号化するのに先立ってＭＰＥＧ復号器クロックを同期しなおすため、また各ＧＯＰヘッダ・エントリのフレーム数およびアドレス・オフセットをそれぞれ、開始タイムコードおよび開始ＧＯＰアドレスに加えることにより、圧縮解除中および復号化中に各ＧＯＰヘッダのタイムコードおよびアドレス・オフセットを再構成し、これにより、プレイ・フロム・オフセット・モードでそれぞれ個別ビデオ・フレームのランダム・アクセスを可能にするために使用する。この方法は、適切なシステム・タイミングを維持するため、ＧＯＰオフセット・テーブル挿入後、ＳＣＲの時間を戻すように調整するステップをさらに有する。
【００１６】
本発明の別の好ましい実施形態は、本発明の前述した方法の実施形態を実施する装置である。
【００１７】
本発明のさらに別の好ましい実施形態は、本発明の前述した方法の実施形態の方法ステップを行うようにコンピュータによって実行可能な命令のプログラムを実体として実現するコンピュータによって読取り可能なプログラム記憶デバイスである。
【００１８】
【発明の実施の形態】
好ましい実施形態の以下の説明では、この説明の一部を成す添付の図面を参照する。図面では、本発明を実施することができる特定の実施形態を例として示している。本発明の範囲を逸脱することなく、他の実施形態を利用することができ、また構造上および機能上の変更を加えることができることを理解されたい。
【００１９】
本発明は、ＭＰＥＧ−１ビデオ・ファイルまたはＭＰＥＧ−２ビデオ・ファイルを処理して、完全なＭＰＥＧ準拠を保ちながら、元の圧縮済みビデオ／オーディオ・データを変更または改変することなく、正確なプレイ・フロム・オフセット機能のために、ＧＯＰ　ＳＭＰＴＥタイムコードおよびＧＯＰバイト・オフセットを含むＧＯＰオフセット・テーブルの形態でファイル索引情報を既存のＭＰＥＧファイルに自動的に挿入し、放送事業者の通常の取込み手続きおよびカタログ作成手続きが、変わらないままであるようにするための方法、プログラム記憶デバイス、およびシステムを対象とする。本発明は、ＭＰＥＧ符号器／復号器の製造業者に関係なく、あらゆる既存の規格対応のＭＰＥＧ−１システム・ストリーム、ＭＰＥＧ−２プログラム・ストリームまたはＭＰＥＧ−２トランスポート・ストリームにＧＯＰオフセット・テーブルを挿入することができる。
【００２０】
さらに、本発明の好ましい実施形態は、ＧＯＰオフセット・テーブルの存在を、ＧＯＰオフセット・テーブルを抽出することができるようにされていないＭＰＥＧ復号器にとってトランスペアレントであるようにし、変更されたＭＰＥＧファイルの長さおよび再生遅延の増加を最小限に抑えることができる。好ましい実施形態は、遠隔通信網を介してＭＰＥＧビデオをストリーミングしている間に導入されたビット誤りを検出し、この誤りから回復することができ、またＭＰＥＧビデオ・ファイルを効率的に処理することができ、ファイルの１回の読取りだけしか必要としない。さらに、好ましい実施形態は、別個の索引ファイルを使用することなく、ＭＰＥＧビデオ・ファイルが、任意の規格準拠のＭＰＥＧ復号器エンジンによって誤りなく復号化可能であることに変わりがないのを確実にするように機能する。
【００２１】
図１は、従来技術による従来のビデオ取込み／カタログ作成システムを示す図である。図１では、ビデオ・テープレコーダ１００が、符号化のためのソース・ビデオを提供する。取込み／カタログ・アプリケーション１２５が、高解像度ビデオ・ファイルおよび２つのプロキシを生成する３つのＭＰＥＧ符号器１０５、１１５、１２０を並列で制御する。高解像度ＭＰＥＧ符号器１０５は、放送ビデオ・サーバ１１０と統合されている。取込み／カタログ・アプリケーション１２５が、ＭＰＥＧファイル１２８および関連するメタデータ１３５を作成すると、ビデオ・ライブラリ・アプリケーション１４０を使用してビデオ・ライブラリ・カタログ１３０の中でカタログ・レコードが作成されるか、または更新される。ビデオ・ファイルのカタログ作成および索引付けにより、後の探索および取出しが可能になる。
【００２２】
符号化が完了すると、圧縮済みファイルが、ＭＰＥＧ復号器／プレーヤ１６０へのファイルＦＴＰストリーミングまたは等時性ストリーミングを行うことができるストリーミング・ビデオ・サーバ１４５上に移動される。すべてのビデオ内容が、長期記憶のためにテープ・ライブラリ／アーカイブ１５０にコピーされ、必要に応じて取り出される。エンド・ユーザは、カタログ探索エンジン１５５を介してビデオ・ライブラリ・カタログ１３０の中の内容を探し出す。探索クエリで戻された候補のカタログ・レコードが、カタロガ／メタデータ・ビューア１６５を使用して個々に検査される。完全なビデオ、またはビデオの任意の部分をＭＰＥＧプレーヤ１６０を介して見ることができる。
【００２３】
図２は、本発明の好ましい実施形態によるビデオ取込み／カタログ作成システムを示す図である。本発明の方法およびシステムは、既存のＭＰＥＧ−１ビデオ・ファイルまたはＭＰＥＧ−２ビデオ・ファイルを処理し、ＧＯＰオフセット・テーブルをそのストリームの開始パケットとして挿入する。ＧＯＰオフセット・テーブルは、ＭＰＥＧパディング・パケット（例えば、開始コード０ｘＢＥを有する）として挿入される。パディング・パケットは、通常、符号器によって作成されて、無関係の空のデータをストリームに埋め込んで一定のビットレートを維持する。パディング・パケットは、通常、ＭＰＥＧ復号器によって廃棄される。本発明は、この挿入されるＧＯＰオフセット・テーブル・パディング・パケットに、そのＧＯＰオフセット・テーブルを抽出することができるようにされたあらゆるＭＰＥＧ復号器によって認識される署名で一意的にマークを付ける。
【００２４】
ＧＯＰオフセット・テーブル・パディング・パケットは、ＭＰＥＧストリームを再び多重化することなく、またプレゼンテーション・タイムスタンプ（ＰＴＳ）、復号化タイムスタンプ（ＤＴＳ）、システム・クロック基準（ＳＣＲ）、または元のビデオ・ファイルの他のどのＭＰＥＧデータ構造も変更することなく挿入される。もたらされるビデオ・ファイルは、完全にＭＰＥＧ準拠のままであり、挿入されたＧＯＰオフセット・テーブルは、他のＭＰＥＧハードウェア復号器またはＭＰＥＧソフトウェア復号器の動作に全く悪影響を与えない。このＧＯＰオフセット・テーブル挿入技術は、符号器ベンダに依存することなく、あらゆるＭＰＥＧ準拠のプログラム・ストリーム・ファイルまたはＭＰＥＧ準拠のトランスポート・ストリーム・ファイルに対して機能する。
【００２５】
ファイルが、関連するＭＰＥＧプレーヤによって復号化されたとき、ＧＯＰオフセット・テーブルが、抽出され、そのファイルが、アクティブなビデオでありつづける期間中、メモリの中に記憶される。ビデオ・ロケーションのランダムなジャンプがユーザによって命令されたとき、プレーヤは、ＧＯＰオフセット・テーブルの中に記憶されたタイムコードを参照する効率的な２進探索を使用して、最も近接した先行するＧＯＰヘッダを探し出す。ビデオの等時性ストリーミングが、ビデオ・サーバによって行われている場合、プレーヤは、目標ＧＯＰヘッダのアドレスをサーバに送り、サーバは、現行ファイル読取りポインタを更新して、ビデオ・ストリームをリスタートする。プレーヤは、ローカルで記憶されたＭＰＥＧファイルを復号化している場合、対応するファイル読取りポインタが、自ら更新されるようにする。
【００２６】
本発明は、ＧＯＰ索引付けデータを含む別個のファイルを作成し、管理する必要性を除外することで、従来技術に優る利点を提供する。埋め込まれたＧＯＰオフセット・テーブルは、ビデオ・アーカイブの中に常駐するプロキシ・ビデオ・ファイルの永久的部分となる。さらなる利点が、ＭＰＥＧサーバ・ソフトウェアを変更する必要性が回避されることから得られる。
【００２７】
次に、図２を参照すると、２つの低解像度符号器２０５、２１０によって生成されたプロキシ・ファイルが、別個のマシン２６５のハード・ドライブ２６０上に記憶されて、本発明の好ましい実施形態によるＧＯＰオフセット挿入アプリケーション（ＧＯＴＩＡ）２６５によって処理される。ＧＯＴＩＡ２６５の起動は、符号化作業が完了したという取込み／カタログ作成アプリケーション２３０からの通知が受け取られたとき、ワークフロー・マネージャ２３５によって自動的にトリガされる。取込み／カタログ作成アプリケーション２３０が、ジョブ完了をワークフロー・マネージャ２３５に通知すると、ワークフロー・マネージャは、ＧＯＴＩＡ２６５を起動し、ＧＯＴＩＡ２６５は、ＧＯＰオフセット・テーブル・パケットをＭＰＥＧビデオ・ファイルに付加し、次に、変更されたＭＰＥＧファイル２５８をストリーミング・ビデオ・サーバ２５０にコピーする。
【００２８】
また、図２は、符号化のためにソース・ビデオを提供するビデオ・テープレコーダ２００も示している。取込み／カタログ作成アプリケーション２３０は、高解像度のビデオ・ファイルおよび２つのプロキシを生成する３つのＭＰＥＧ符号器２０５、２１５、２１０を並列に制御する。高解像度ＭＰＥＧ符号器２１５は、放送で再生を行うために放送ビデオ・サーバ２２０に統合される。取込み／カタログ作成アプリケーション２３０がメタデータ・ファイル２４５を作成すると、ビデオ・ライブラリ・カタログ２４０の中でカタログ・レコードが、ビデオ・ライブラリ・アプリケーション２５５を使用して作成されるか、または更新される。ビデオ・ファイルのカタログ作成および索引付けにより、後の探索および取出しが可能になる。
【００２９】
符号器２０５からの完全なプロキシ・ビデオ・ファイル、またはこのファイルの任意の部分、ならびに取り出されたカタログ・レコードおよび探索クエリで戻されたメタデータをＭＰＥＧプレーヤ−メタデータ・ビューア２７５を介して見ることができ、ＭＰＥＧプレーヤ−メタデータ・ビューア２７５は、プレイ・アット・オフセット（ｐｌａｙ−ａｔ−ｏｆｆｓｅｔ）要求をストリーミング・ビデオ・サーバ２５０に送ることができる。また、図２のシステムは、Ｗｅｂブラウザ１ＭＰＥＧプレーヤ・プラグイン２７０も組み込むことができ、プラグイン２７０は、プレイ・アット・オフセット要求をストリーミング・ビデオ・サーバ２５０に送り、サーバ２５０から、もともとプロキシ符号器２１０によって符号化されたストリーミング・ビデオを受け取ることができる。
【００３０】
図３は、本発明に従って再フォーマットされ、本発明の好ましい実施形態に従って挿入されたＧＯＰオフセット・テーブル３４０を有するオーディオ・パケット３０５、ビデオ・パケット３１０、およびパディング・パケット３１５、およびＭＰＥＧビデオ・ファイル３０８を伴う、元に符号化されたとおりのＭＰＥＧファイル３００のフォーマットを示している。したがって、図３は、ＧＯＰオフセット・テーブル３４０挿入の前と後のＭＰＥＧファイル形式を高レベルでスケーリングなしに示している。ＧＯＰオフセット・テーブル３４０は、一続きのＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０としてＭＰＥＧファイル３０８の先頭に付加され、ＭＰＥＧプレーヤが、メモリ（図示せず）の中で、ビデオ再生の開始前にＧＯＰオフセット・テーブル３４０全体を構築することができるようになる。ＧＯＰオフセット・テーブル３４０は、復号器によって通常、廃棄されることになるパディング・パケット３４５、３５０の中に組み込まれる。ただし、ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０は、パケット３４５、３５０を他のパディング・パケット３６５と区別して一義化する識別オフセット・テーブル署名、ならびにＧＯＰオフセット・テーブル３４０を有するパディング・パケットのシーケンス全体が生成されたとき、ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０の最後のパケットを知らせるようにリセットされるパディング・パケット順序番号を含む。
【００３１】
また、パディング・パケット３４５、３５０は、ビット誤り検出のための３２ビット・チェックサムも含む。誤りが検出された場合、ＭＰＥＧプレーヤは、サーバに再生を再要求して、ＧＯＰオフセット・テーブル３４０を有するＭＰＥＧビデオ・ファイル３０８を最小の遅延で再伝送させるオプションを有する。ＧＯＰオフセット・テーブルは、ＭＰＥＧプレーヤのメモリの中で構築されると、ビデオが、始まりからリスタートされた場合でも、ＭＰＥＧプレーヤの中で再構築されない。別のＭＰＥＧビデオ・ファイルのロードだけによって、ＧＯＰオフセット・テーブルが、廃棄され、再構築されることが生じる。
【００３２】
図３で見られるとおり、ＧＯＰオフセット・テーブル３４０は、元のＭＰＥＧファイルの先頭に配置される一続きのＭＰＥＧパディング・パケット３４５、３５０として符号化される。ＭＰＥＧ準拠を維持し、適切な復号化を容易にするため、ファイル３０８は、パケット・ヘッダ３２０およびシステム・ヘッダ３２５で開始する。パディング・パケット・ヘッダ３３０、３４８が、一部の、またはすべてのＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０の直前に配置される。プログラム基本ストリーム（ＰＥＳ）ヘッダ３３５、３４９が、各ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０の先頭に配置される。それぞれの新たに作成されたファイル・パケット・ヘッダ（３２０、３３０、３４８）に含まれるシステム・クロック基準（ＳＣＲ）が、時間を戻すように調整されて、適切なシステム・タイミングが維持される。処理されたＭＰＥＧビデオ・ファイル３０８の残りの部分は、元のＭＰＥＧビデオ・ファイル３００と同じオーディオ・パケット３５５およびビデオ・パケット３６０を有する。
【００３３】
好ましい実施形態では、各ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０が、２４８０バイトのサイズに設定されて、最高で８００の圧縮されたオフセット・テーブルの３バイト・エントリがバッファに入れられるが、各パケット３４５、３５０は、異なる値を有することも可能である。これは、１５ピクチャのＧＯＰ長の場合、６分４０秒のビデオ時間になる。３Ｍｂｐｓのストリーミング・ビットレートを想定すると、単一のオフセット・テーブル・パディング・パケット３４５、３５０により、ビデオ・ダウンロード時間は、６．６ミリ秒だけ長くなる。したがって、２０分間のビデオの開始が、２０ミリ秒より短い時間だけ遅延される。
【００３４】
図４は、本発明の好ましい実施形態によるＧＯＰオフセット・テーブル情報を符号化し、伝送するのに使用される圧縮されたＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０のデータ構造を示している。第１に、このデータ構造は、パディング開始コード４００、パケットＰＥＳ長４０５、およびヘッダ終了マーカ４１０から成る従来のプログラム基本ストリーム（ＰＥＳ）ヘッダ３３５、３４９を有する。標準のＰＥＳヘッダの後に続いて、本発明の図４の圧縮されたＧＯＰオフセット・テーブル・パディング・パケットは、以下のものをさらに含む。すなわち、パディング・パケット順序番号４１５、オフセット・テーブル署名４２０、このパディング・パケットの中のＧＯＰオフセット・テーブル・エントリの数を含むフィールド４２５、フラグ・フィールド４３０、高解像度デルタ・フィールド４３５、開始タイムコード・フィールド４４０、および開始ＧＯＰアドレス・フィールド４４５である。圧縮されたＧＯＰオフセット・テーブル・パディング・パケットは、図４で示すとおり、圧縮されたＧＯＰオフセット・テーブル４５０、およびチェックサム・フィールド４５５をさらに有する。
【００３５】
オフセット・テーブル署名４２０は、ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０を、復号器によって通常、廃棄される普通のパディング・パケット３６５から区別して一義化する４バイトの固有署名である。パディング・パケット順序番号４１５が提供されて、復号器が、欠落しているＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０を検出できるようにし、またゼロの順序番号が与えられている最後のＧＯＰオフセット・テーブル・パディング・パケットを知らせる。同様に、３２ビットのチェックサム・フィールド４５５により、復号器が、パディング・パケット・ビット誤りを検出することができるようになる。誤りがあった場合、本発明では、復号器が、ＭＰＥＧファイルを読み取る新しい要求をサーバに発行して、誤りのあったＧＯＰオフセット・テーブル・パディング・パケットを最小の遅延で再伝送させる。また、本発明により、誤ったパケットを、ＧＯＰオフセット・テーブル３４０の残りの部分に影響を与えることなく廃棄することが可能になる。ただし、廃棄されたパケットは、ＧＯＰオフセット・テーブル３４０の中に「穴」を生じさせ、これにより、欠落しているタイムコードのどれかにクエリが行われた場合、誤ったＧＯＰオフセットがもたらされる。
【００３６】
また、図４は、ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０の長さを最小化するように３バイトに圧縮された圧縮済みＧＯＰオフセット・テーブル・エントリ４５０も有する。それぞれのそのようなエントリ４５０が、ビデオ・パケットの中の１つのＧＯＰヘッダを表し、図４で示すとおり、次の２つのフィールドを有する。すなわち、前のＧＯＰ４６０の中のフレーム数を示すフィールド、および最後のパケット・ヘッダ・アドレスから、前のＧＯＰに関してテーブル・エントリ４５０の中で見出された前のパケット・ヘッダ・アドレスを引くことによって計算されたアドレス・オフセットを有するＧＯＰアドレス・オフセットの２０ビットのフィールドである。各パディング・パケットが、ＭＰＥＧ復号器によって圧縮解除されると、復号器は、各ＧＯＰエントリのフレーム数４６０およびアドレス・オフセット４６５をそれぞれ、開始タイムコード４４０および開始ＧＯＰアドレス４４５に足すことにより、各ＧＯＰのタイムコードおよびアドレス・オフセットを再構成することができる。各ＧＯＰタイムコードおよびＧＯＰアドレス・オフセットに関するこれらの合計が、メモリの中に一時的な変数として保存される。
【００３７】
（ＭＰＥＧファイルの分析および処理）
図５は、本発明の好ましい実施形態によるＧＯＰオフセット・テーブル挿入アプリケーションのメイン・ソフトウェア・ルーチンの論理を示す流れ図である。ステップ５００で、ＭＰＥＧビデオ・ファイルを開いた後、ステップ５０５で、アプリケーションは、図６のＭＰＥＧファイル分析ルーチンを呼び出して、フレームおよびＧＯＰヘッダの数を推定するため、また元のＭＰＥＧビデオ・ファイルの第１のパケット・ヘッダおよびシステム・ヘッダのコピーを保存するため、元のビデオ・ファイルの最初の１０秒間を分析する。図６で、最初に見出されたパケット・ヘッダが、ステップ６００で復号化され、ステップ６０５で、ストリーム多重ビットレートが抽出される。ステップ６１０で、パケット・ヘッダが、またステップ６１５で、システム・ヘッダがともに、コピーされ、後の使用のためにメモリの中に記憶される。ステップ６０５で獲得された多重ビットレートを使用して、ビデオ・ファイルの中のビデオ・フレームの数（フレーム・カウント）が、ファイル・サイズをビットレートで割ることによってステップ６２０で推定される。ステップ６２５で、ビデオの最初の２０秒が分析されて最大ＧＯＰ長が判定され、またＧＯＰ長が、可変であるか、または固定であるかが判定される。ステップ６３０で、ＧＯＰ長が可変であることが判明した場合、最大ＧＯＰ長は、ステップ６６０で、２フレームだけ短縮されてから、ステップ６３５で、ファイルの中のＧＯＰの数が推定される。この数は、ビデオ・フレームの数（フレーム・カウント）をＧＯＰ長で割ることによって計算される。ＧＯＰの数は、推定された後、ステップ６４０で、８００で割られて、ＧＯＰオフセット・テーブル・エントリをバッファに入れるのに必要とされるパディング・パケットの数が計算される。剰余が、６００以上である場合、ステップ６６５でカウントが、１だけ増分されて安全マージンが提供される。ルーチンは、ステップ６５０で、ＧＯＰオフセット・テーブルの推定の合計サイズを計算することで終了し、ステップ６５５で、メイン・アプリケーション・ルーチンに戻る。ＧＯＰオフセット・テーブルの推定の合計サイズは、各ＧＯＰオフセット・テーブル・パディング・パケット・サイズ（２４８０）をパケット・ヘッダ・サイズに加え、この合計にパディング・パケット・カウンタを掛けたものをパケット・ヘッダ・サイズおよびシステム・ヘッダ・サイズに足すことによって計算される。パケット・ヘッダ３２０およびシステム・ヘッダ３２５は、ＭＰＥＧファイルの先頭に挿入され、これにより、ＭＰＥＧ復号器が、ファイルをＭＰＥＧプログラム・ストリームとして適切に識別することができるようになる。次に、パケット・ヘッダ３３０、３４８が、各ＧＯＰオフセット・テーブル・パディング・パケット３４５、３５０の先頭の前に挿入される。各ＰＥＳヘッダ３３５、３４９は、それぞれのパディング・パケットの一部分と見なされる。
【００３８】
アプリケーション・パフォーマンスを最大限に高めるため、本発明は、ＭＰＥＧビデオ・ファイルを一回限り読み取る。ファイル読取りを１回の読取りに制限するため、再処理されたＭＰＥＧファイルの中で十分なストレージをＧＯＰオフセット・テーブル・パディング・パケットに割り振るようにＧＯＰの数を推定しなければならない。最大ＧＯＰ長がフレーム数に分割される前に引かれる２フレームは、割り振られたＧＯＰオフセット・テーブル・ストレージを超過することに対する妥当な安全マージンを提供する。実験で引き出された値であるＧＯＰの実際の数が、推定された値を大幅に超えた場合、ＧＯＴＩＡは、ＭＰＥＧビデオ・ファイルの現在の処理を打ち切り、より大きいＧＯＰカウント推定値でリスタートする。
【００３９】
次に、図５を参照すると、ＭＰＥＧファイルを分析した後、図７および８のＭＰＥＧファイル処理ルーチンが、ステップ５１０で呼び出されて、各ＧＯＰのアドレス・オフセットおよびサイズが抽出され、ＧＯＰアドレス・オフセット・エントリのアレイがコンパイルされる。図９は、ＧＯＰオフセット・テーブルの未圧縮のバージョンを示している。ＧＯＴＩＡが、ＭＰＥＧファイルを構文解析しながらこのテーブルを構築して、一時的なデータ構造としてメモリの中に記憶する。ＭＰＥＧファイルが完全に構文解析された後、このテーブルが、パディング・パケットの中に記憶される図４の圧縮されたＧＯＰオフセット・テーブルを構築するのに使用される。ＭＰＥＧ復号器は、ＭＰＥＧストリームからパディング・パケットを抽出したとき、ＧＯＰオフセット・テーブルを圧縮解除し、これにより、ＧＯＰオフセット・テーブルの元のバージョンを再現して、メモリの中に記憶する。図９の構造は、ＧＯＰオフセット・テーブルを適切に再構成するため図４の圧縮されたＧＯＰオフセット・テーブル・パディング・パケットのフィールド４３０を介してＭＰＥＧプレーヤに渡される１組のフラグ８００を保持する。
【００４０】
図７および８を参照すると、ルーチンが、ステップ７００で、処理され、変更されたＭＰＥＧファイルを記憶するためのファイルを作成し、ＧＯＰオフセット・テーブル・パケットに割り振られた区域を越えたところに書込みポインタを設定することで開始する。次に、論理は、ステップ７０２でループに入ってＭＰＥＧファイルの各パケットを処理する。オーディオ・パケットおよびビデオ・パケットに加えて、さらなる処理なしにステップ７０６で検出され、ファイルに書き込まれる種々のシステム・パケットおよびパディング・パケットが存在する。ステップ７０４で、ファイルが、順次に復号化されて、各ＭＰＥＧビデオ・パケット開始コードが探し出され、処理される。ステップ７０８で、開始コードが、ビデオ・シーケンス・ヘッダ３７０であることが判明した場合、ビデオ・フレーム速度が、ステップ７１２で抽出され、ステップ７１６で記憶されて、図９の未圧縮のＧＯＰオフセット・テーブルの中で秒フラグ当り３０フレーム８２５、または秒フラグ当り２５フレーム８３５に設定される。さらに、ビデオ・シーケンス・パケットが、ドロップ・モード・フレーム・カウントを示す場合、それに応じてドロップ・フレーム・フラグ８２０が設定される。
【００４１】
ステップ７１６でフレーム速度が記憶された後、ステップ７０６で、パケット・データが、処理されたＭＰＥＧファイルに書き出され、ループが反復される。ステップ７２０で、ピクチャ開始ヘッダが見出されたとき、ステップ７２４で、ピクチャ・カウントが増分され、ステップ７２８で、ＳＭＰＴＥタイムコード・フレーム・カウントが増分される。両方の値が、一時的な変数としてメモリの中に記憶される。次に、ステップ７０６で、ＭＰＥＧパケット・データが、処理されたＭＰＥＧファイルに書き込まれ、ループが継続する。パケット・ヘッダが、ステップ７３２で見出されたとき、図６のステップ６５０で獲得された推定のオフセット・テーブル・サイズが、ステップ７３６でパケット・ヘッダ・アドレスに加算され、ステップ７４０で、結果が、最後のパケット・ヘッダ・アドレスとしてメモリの中の一時的な変数に保存される。次のＧＯＰヘッダが最終的に見出されたとき、ステップ７８０で、最終のパケット・ヘッダ・アドレスは、一時的な未圧縮のＧＯＰオフセット・テーブルの関連するＧＯＰアドレス・オフセット・フィールド８６５の中に記憶される。実際のＧＯＰヘッダ・アドレスの代わりに最終のパケット・ヘッダ・アドレスが記録されるのは、ＭＰＥＧ復号器が、ＧＯＰオフセット・テーブルを復号化するのに先立って自らのクロックを同期しなおすことができるようにするためである。次に、ステップ７０６で、パケット・データが、処理されたＭＰＥＧファイルに書き込まれ、ループが継続する。
【００４２】
ステップ７４４で見出された現在の開始コードが、ＧＯＰヘッダではない場合、ステップ７０６で、パケット・データが、処理されたＭＰＥＧファイルに書き込まれ、ループが継続する。ＧＯＰヘッダである場合、そのＧＯＰヘッダに含まれるタイムコードに対して一連の試験が行われる。ステップ７４８で、タイムコードが全く見出されない場合、図９の「Ｎｏ　ＴＣ」フラグ８４５が、ステップ７５２で設定される。タイムコードは、存在する場合、ステップ７５６で連続性に関して試験され、ステップ７６４で増分に関して試験される。どちらかの試験に不合格であった場合、それぞれステップ７６０、７６８で、図９の「非連続ＴＣ」８４０フラグおよび／または「非増分ＴＣ」８５０フラグが設定される。すべてのケースで、論理は、ステップ７７２に進み、ＧＯＰヘッダから抽出されたタイムコードが、フィールド８５５の中に記憶され、またステップ７７６で、前のＧＯＰに含まれるフレームのカウントが、ステップ７２４で、メモリの中に保存された変数から、図９の一時的な未圧縮のＧＯＰオフセット・テーブルのフィールド８６０の中に復元される。ＧＯＰオフセット・テーブル・フィールド・エントリは、一時的な変数として保持される最後のパケット・ヘッダ・アドレスを図９のフィールド８６５の中に記憶することによってステップ７８０で完了する。次に、ステップ７８４で、ピクチャ・カウント変数がゼロにされ、ステップ７８８で、ＧＯＰオフセット・エントリ８１０の数が増分され、ステップ７０６で、パケット・データが、処理されたＭＰＥＧファイルに書き込まれる。ループは、ＭＰＥＧファイルの中の各パケットを処理し、ステップ７０２で元のＭＰＥＧファイルの終端に達したときにエグジットして、その時点で、サブルーチンが、ステップ７９２で、図５のメイン・アプリケーション・ルーチンに制御を戻す。
【００４３】
（ＧＯＰオフセット・テーブル・パケット作成）
図９の未圧縮ＧＯＰオフセット・テーブルが、構築された後、図５のメイン・ルーチンが、ステップ５１５で、図１０および１１のサブルーチンを呼び出して圧縮されたＧＯＰオフセット・テーブル・パディング・パケットをフォーマットする。図１０および１１で示すとおり、サブルーチンは、ステップ９００でループに入って、図４で描いた圧縮されたオフセット・テーブル・パケット形式に従って図９のすべての記録されたＧＯＰオフセット・テーブル・エントリを圧縮し、パケット化する。ステップ９０４で、残りのＧＯＰオフセット・テーブル・エントリの数が、８００を超えることが判明した場合、ステップ９０８で、ＧＯＰオフセット・テーブル・エントリの数４２５が、８００に設定され、ステップ９１２で、残りのエントリの数が、８００だけ減らされる。８００を超えていない場合、エントリの数４２５は、ステップ９１６で残りのＧＯＰオフセット・テーブル・エントリの数に設定され、ステップ９１８で、残りのＧＯＴエントリの数がクリアされる。論理は、ステップ９２０で、ＰＥＳヘッダ４００、４０５、４１０を構築し、ステップ９２４で、署名４２０を挿入し、またステップ９２８で、パケット順序番号４１５を増分することに進む。次に、ステップ９３２で、２次ループに入り、圧縮されたＧＯＰオフセット・エントリでパディング・パケットが埋められる。ステップ９４４で、第１のエントリが処理される際、ステップ９３６で、ＧＯＰタイムコード８５５が、図４のパディング・パケットの中に、フィールド４４０の中で開始タイムコードとして記憶される。このパディング・パケットの中のすべてのＧＯＰオフセット・テーブル・エントリは、タイムコードが、開始タイムコード４４０からのオフセットとして、フレーム数４６０で符号化されている。ステップ９４０で、第１のＧＯＰアドレス・オフセット８６５が、開始アドレス・オフセットとしてフィールド４４５の中に記憶される。このパディング・パケットの中の他のすべての圧縮されたオフセット・テーブル・エントリ４５０は、ＧＯＰアドレス・オフセット４６５が、前のＧＯＰに関するテーブル・エントリ８６５の中で見出された前のＧＯＰアドレス・オフセット８６５からこのＧＯＰアドレス・オフセット８６５を引くことによってオフセットとして計算される。
【００４４】
次に、ＧＯＰオフセット・テーブル・エントリ４５０のそれぞれが、ステップ９４８で行われる圧縮によって３バイトのＧＯＰオフセット・テーブル・エントリとして構築される。すべてのエントリが処理されたとき、ループは、ステップ９３２で「いいえ」の条件でエグジットし、図７および８の処理したＭＰＥＧファイル・ルーチンで設定されたヘッダ・フラグ８００が、ステップ９５２で、図４のフラグ・フィールド４３０の中に記憶される。ステップ９５６で、最後のパケットがフォーマットされている場合、ステップ９６０で、パディング・パケット順序番号４１５がクリアされる。パケットの構築は、ステップ９６４でパケット・チェックサム４５５を計算し、記憶し、ステップ９６８で、メモリの中に一時的な変数として保存されるパディング・パケット・カウントを増分することによって完了する。
【００４５】
９００で開始する１次ループは、ＧＯＰオフセット・テーブル・エントリのすべてがパケット化されたとき、「いいえ」の条件でエグジットする。パディング・パケットを処理されたＭＰＥＧファイルに書き込む前に、ステップ９７２で、ＧＯＰオフセット・テーブル・パディング・パケットの実際の数が、このパケットのために確保されているストレージの量を超えているかどうかを判定する検査が行われる。「はい」である場合、ステップ９８４で、ＧＯＴＩＡが、ＧＯＰヘッダの実際の数でリスタートされる。ＧＯＰパケットの数が、推定よりも少ない場合、論理は、ステップ９７６で、ループに入り、このループは、ステップ９８０で、ダミー・パディング・パケットを追加してＧＯＰオフセット・テーブルを埋める。ステップ９７６の「いいえ」の条件である、パケットの数が、推定された数に等しい場合、ステップ９８８で、サブルーチンは、図５のメイン・ルーチンに戻る。
【００４６】
（ＧＯＰオフセット・テーブル挿入）
再び図５に戻ると、ステップ５２０で、図１２のＧＯＰオフセット・テーブル・パディング・パケット挿入サブルーチンが呼び出されて、ＧＯＰオフセット・テーブルを有するパディング・パケットが、処理されたＭＰＥＧファイルに書き出される。次に、図１２を参照すると、処理されたＭＰＥＧファイルの書込みポインタが、ステップ１０００でゼロにリセットされ、図６のステップ６１０および６１５で保存されたパケット・ヘッダおよびシステム・ヘッダが、ステップ１００５でファイルに書き込まれる。ステップ１０１０で、パケット・ヘッダ、システム・ヘッダ、およびＧＯＰオフセット・テーブルの遅延が、パケット・ヘッダとシステム・ヘッダとすべてのパディング・パケットのサイズを合計し、結果をストリーム多重速度で割ることによって計算される。この結果が、９０ｋＨｚクロック・サイクルの等価の数に変換され、ステップ１０１５で、パケット・ヘッダに含まれるＳＣＲから引かれる。各パディング・パケットを通るループは、ステップ１０２０で開始する。現在のパディング・パケットおよび後続のパディング・パケットに関して被る遅延が、ステップ１０２５で計算され、ステップ１０３０で、前のパケット・ヘッダのＳＣＲから引かれる。ステップ１０２５で、パディング・パケット・サイズは、ＰＥＳヘッダを含む。低い開始ＳＣＲ値を有するＭＰＥＧストリームの場合、この減算により、３３ビットのＳＣＲレジスタのアンダーフローがもたらされ、モジュロ加算のさらなる演算が必要とされる。次にステップ１０３５で、パケット・ヘッダとパディング・パケットがともに、ファイルに書き込まれ、ステップ１０４０で、パケット・カウントが減分される。パディング・パケットが全く残っていないとき、ループは、ステップ１０２０で、「いいえ」の条件でエグジットし、ステップ１０４５で、処理されたＭＰＥＧファイルが閉じられ、またステップ１０５０で、サブルーチンが、図５の呼出し元に戻る。次に、ステップ５２５で、図５のメイン・ルーチンが終了し、アプリケーションが停止される。
【００４７】
図１３および１４は、本発明の好ましい実施形態による着信するＭＰＥＧストリームからＧＯＰオフセット・テーブルを抽出するためにＭＰＥＧプレーヤによって使用されるソフトウェア・ルーチンの論理フローを示している。ファイルが受け取られるにつれ、ＧＯＰオフセット・テーブルが、ＭＰＥＧ復号器／プレーヤによって抽出され、次に、圧縮解除されて、ＡＰＩ起動を介してあらゆるアプリケーションが参照することのできるグローバルＧＯＰオフセット・テーブルの中に記憶される。例えば、グローバルＧＯＰオフセット・テーブルは、ビデオ・ライブラリ・アプリケーションに含まれるＥＤＬビルダ・アプリケーションおよびカタロガ・アプリケーションによって参照されることが可能である。圧縮解除されたＧＯＰオフセット・テーブル・データ構造は、図９で示したテーブルと同一である。
【００４８】
図１３および１４によれば、ルーチンは、ステップ１１００で即時にループに入り、ファイルが受け取られるにつれて各パケットを処理する。ステップ１１０５で、各開始コードが復号化され、ステップ１１１０で検査されて、パケットが、ビデオ・パケットまたはオーディオ・パケットであるかが調べられる。「はい」である場合、ステップ１１９０で、サブルーチンは戻る。というのは、オーディオ・パケットまたはビデオ・パケットの存在により、回復すべきＧＯＰオフセット・テーブル・パディング・パケットがそれ以上存在しないことが示されるからである。パケットが、パディング・パケットではない場合、ステップ１１１５に従って、ループは、「いいえ」の条件を介して反復してステップ１１００に戻る。そうではない場合、パケットは、パディング・パケットであり、パケットは、ステップ１１２０で署名に関して試験され、またステップ１１２５で、チェックサムに関して試験される。どちらかの試験に不合格であった場合、ループは、反復してステップ１１００に戻り、次のパケットを処理する。パディング・パケットが、両方の条件を満たす場合、ステップ１１３０で、フラグが抽出されて記憶され、論理は、ステップ１１３５で開始する２次ループに入り、各オフセット・テーブル・エントリを処理する。ステップ１１４０の第１の反復で、パディング・パケット・ヘッダから、ステップ１１４５で、開始タイムコードがロードされ、またステップ１１５０で、現在のパディング・パケットの中に符号化されているすべてのＧＯＰヘッダに関する開始アドレス・オフセットがロードされる。両方が、それぞれの圧縮されたテーブル・エントリのタイムコードおよびアドレスを解決するのに使用される。ステップ１１５５および１１６０で、２０ビットのアドレス・オフセットが、パケットから読み取られ、開始アドレスに加えられ、テーブルの中で６４ビットのＧＯＰアドレス・オフセットがもたらされる。ステップ１１６５および１１７０で、タイムコードも同様に処理されて、ステップ１１４５でロードされた開始タイムコードにフレーム数が加算される。タイムコードは、各ＧＯＰヘッダ・エントリに関してパディング・パケットの中に累積する。最後のエントリが圧縮解除されたとき、ステップ１１３５で「いいえ」の条件で、２次ループがエグジットし、ステップ１１８０で、オフセット・パディング・パケットが最終のものであるかどうかを判定する試験が行われる。「はい」である場合、完了フラグが、ステップ１１８５で設定され、ルーチンは、ステップ１１９０で戻る。そうではない場合、１次ループが、再び反復されてステップ１１００に戻り、残りのオフセット・テーブル・パディング・パケットを扱う。
【００４９】
（ビデオ製作者のＭＰＥＧプレーヤ／メタデータ・ビューア）
図１５は、本発明の好ましい実施形態によるビデオ・カタログ作成のためにストリーム・ビデオおよびメタデータを表示するのにビデオ製作専門家によって使用されるＭＰＥＧプレーヤ−メタデータ・ビューア１２００のグラフィカル・ユーザ・インターフェース（ＧＵＩ）を示す図である。図１５のビデオ製作者のＭＰＥＧプレーヤ−メタデータ・ビューアのレイアウトでは、ＶＣＲコントロール１２０２が提供され、ビデオ表示領域１２１０が、００：０２：２６：０７という現在の位置で一時停止されたビデオを反映している。ウインドウの下部は、ビデオ・ライブラリ・アプリケーションから要求されたカタログ・レコードに関するカタログ・レコードのための表示領域１２５０を提供する。
【００５０】
現在のフレームの相対タイムコード１２１５、絶対タイムコード１２２０、および持続時間１２２５が、表示される。また、ジャンプする先の所望のビデオ・クリップに関するインディケータ１２３５上に示されるタイムコードを選択するジャンプ先ボタン１２３０も存在する。ストーリーボード・サムネール表示ウインドウ１２４０の中に、１２のサムネールが存在する。ダブル・クリックでハイライトされた第３の行１２８０の第３のサムネールが、０９：１７：４５：１７の絶対タイムコード１２２０から００：０２：２６：０７のオフセットにある相対タイムコード１２１５からの再生をコマンドしている。
【００５１】
エンド・ユーザが、ＭＰＥＧファイルを見る要求を発行したとき、ＭＰＥＧプレーヤは、ファイルを開き、オフセット０からストリーミングを開始する要求をビデオ・サーバに送る。これにより、ビデオ・サーバが、ＧＯＰオフセット・テーブルを含むパディング・パケットをストリーミングすることがもたらされ、ＭＰＥＧ復号器が、ＧＯＰオフセット・テーブルを構築することができるようになる。最後のＧＯＰオフセット・テーブル・パディング・パケットが受け取られ、図９で定義したＧＯＰオフセット・テーブルが完全に構築されると、プレーヤは、そのＭＰＥＧビデオ・ファイルの中の任意のフレームにランダムにアクセスすることができるようになる。
【００５２】
エンド・ユーザが、インディケータ１２３５上に示されたオフセットを選択するジャンプ先ボタン１２３０を介してプレイ・フロム・オフセット要求を発行したとき、プレーヤは、ユーザによって要求されたタイムコードに先立つ第１のＧＯＰヘッダからストリーミングを開始するプレイ・フロム・オフセット要求をビデオ・サーバに即時に送る。第１に、プレーヤは、ＧＯＰオフセット・テーブル・エントリ８１５のアレイを探索する２進探索を使用して、要求されたタイムコードをＧＯＰオフセット・アドレスに変換しなければならない。要求されたタイムコードに関連するＧＯＰオフセット・テーブル・エントリは、要求されたタイムコードをテーブルからの各ＧＯＰタイムコード８５５と比較することによって探し出される。関連するＧＯＰオフセット・テーブル・エントリが見出されたとき、そのＧＯＰアドレス・オフセット８６５が読み取られ、ビデオ・サーバに渡される。そのＧＯＰタイムコード８５５が、要求されたタイムコードではない場合、プレーヤは、そのＧＯＰタイムコード８５５を要求されたタイムコードから引いて、要求されたフレームでキューを出すためにスキップすべきビデオ・フレームの数を計算する。プレーヤは、フレームをスキップしている間、要求されたフレームに達するまでビデオ表示を抑止する。プレーヤは、ローカルで記憶されているＭＰＥＧファイルを復号化している場合、対応するファイル読取りポインタが、自ら更新されるようにする。
【００５３】
ビデオが、ストリーミングを開始する前に、エンド・ユーザが、インディケータ１２３５上で示されるオフセットを選択するジャンプ先ボタン１２３０を介してプレイ・フロム・オフセットを発行した場合、プレーヤは、まず、プレイ・フロム・オフセット０要求をビデオ・サーバに発行する。これにより、ビデオ・サーバが、ＭＰＥＧ復号器がＧＯＰオフセット・テーブルを構築することができるようにするＧＯＰオフセット・テーブルを含むパディング・パケットをストリーミングすることがもたらされる。テーブルが構築されると、プレーヤは、要求されたタイムコードに先立つ第１のＧＯＰヘッダからストリーミングを開始するプレイ・フロム・オフセット・コマンドをビデオ・サーバに即時に再発行する。
【００５４】
本発明の好ましい実施形態の以上の説明は、例示および説明を目的として提供してきた。以上の説明は、すべてを網羅するもの、または本発明を開示した形態そのものに限定するものではない。以上の教示に鑑みて、多くの変更形態および変形形態が可能である。本発明の範囲は、以上の詳細な説明によってではなく、頭記の特許請求の範囲によって限定されるものとする。
【図面の簡単な説明】
【図１】
従来技術による従来のビデオ取込み／カタログ作成システムを示す図である。
【図２】
本発明の好ましい実施形態による既存のビデオ・カタログ作成システム内部におけるＧＯＰオフセット・テーブル挿入アプリケーションの配置を示す図である。
【図３】
本発明の好ましい実施形態による元に符号化されたとおりの、ＧＯＰオフセット・テーブルが挿入されたＭＰＥＧファイルのフォーマットを示す図である。
【図４】
本発明の好ましい実施形態によるＧＯＰオフセット・テーブル情報を符号化し、伝送するのに使用される圧縮されたＧＯＰオフセット・テーブル・パディング・パケットのデータ構造を示す図である。
【図５】
本発明の好ましい実施形態によるＧＯＰオフセット・テーブル挿入アプリケーションのメイン・ソフトウェア・ルーチンの論理を示す流れ図である。
【図６】
本発明の好ましい実施形態によるＭＰＥＧビデオ・ファイルを分析してフレーム・カウントおよびＧＯＰカウントを推定するためのソフトウェア・ルーチンの論理を示す流れ図である。
【図７】
本発明の好ましい実施形態によるＭＰＥＧファイルを処理して各ＧＯＰのアドレス・オフセットおよびサイズを抽出するためのソフトウェア・ルーチンの論理を示す流れ図である。
【図８】
本発明の好ましい実施形態によるＭＰＥＧファイルを処理して各ＧＯＰのアドレス・オフセットおよびサイズを抽出するためのソフトウェア・ルーチンの論理を示す流れ図である。
【図９】
本発明の好ましい実施形態によるＧＯＰオフセット・テーブル・データ構造を示す図である。
【図１０】
本発明の好ましい実施形態によるＧＯＰオフセット・テーブル情報を含む圧縮されたＭＰＥＧパケットをフォーマットするためのソフトウェア・ルーチンの論理を示す流れ図である。
【図１１】
本発明の好ましい実施形態によるＧＯＰオフセット・テーブル情報を含むＭＰＥＧパケットを圧縮するフォーマットするためのソフトウェア・ルーチンの論理を示す流れ図である。
【図１２】
本発明の好ましい実施形態による既存の圧縮されたＭＰＥＧデータを乱すことなく、ＧＯＰオフセット・パケットをＭＰＥＧファイルに挿入するためのソフトウェア・ルーチンの論理を示す流れ図である。
【図１３】
本発明の好ましい実施形態による着信するＭＰＥＧストリームからＧＯＰオフセット・テーブルを抽出するためにＭＰＥＧプレーヤによって使用されるソフトウェア・ルーチンの論理を示す流れ図である。
【図１４】
本発明の好ましい実施形態による着信するＭＰＥＧストリームからＧＯＰオフセット・テーブルを抽出するためにＭＰＥＧプレーヤによって使用されるソフトウェア・ルーチンの論理を示す流れ図である。
【図１５】
本発明の好ましい実施形態によるビデオ・カタログ作成のために使用されてストリーミング・ビデオおよびメタデータを表示するＭＰＥＧプレーヤ−カタロガのグラフィカル・ユーザ・インターフェース（ＧＵＩ）を示す図である。
【図１】
2004509580.tif 000005
【図２】
2004509580.tif 000006
【図３】
2004509580.tif 000007
【図４】
2004509580.tif 000008
【図５】
2004509580.tif 000009
【図６】
2004509580.tif 000010
【図７】
2004509580.tif 000011
【図８】
2004509580.tif 000012
【図９】
2004509580.tif 000013
【図１０】
2004509580.tif 000014
【図１１】
2004509580.tif 000015
【図１２】
2004509580.tif 000016
【図１３】
2004509580.tif 000017
【図１４】
2004509580.tif 000018
【図１５】
2004509580.tif 000019
【国際公開パンフレット】
2004509580.tif 000020
2004509580.tif 000021
2004509580.tif 000022
2004509580.tif 000023
2004509580.tif 000024
2004509580.tif 000025
2004509580.tif 000026
2004509580.tif 000027
2004509580.tif 000028
2004509580.tif 000029
2004509580.tif 000030
2004509580.tif 000031
2004509580.tif 000032
2004509580.tif 000033
2004509580.tif 000034
2004509580.tif 000035
2004509580.tif 000036
2004509580.tif 000037
2004509580.tif 000038
2004509580.tif 000039
2004509580.tif 000040
2004509580.tif 000041
2004509580.tif 000042
2004509580.tif 000043
2004509580.tif 000044
2004509580.tif 000045
2004509580.tif 000046
2004509580.tif 000047
2004509580.tif 000048
2004509580.tif 000049
2004509580.tif 000050
2004509580.tif 000051
2004509580.tif 000052
2004509580.tif 000053
2004509580.tif 000054
2004509580.tif 000055
2004509580.tif 000056
2004509580.tif 000057
2004509580.tif 000058
2004509580.tif 000059
2004509580.tif 000060
2004509580.tif 000061
2004509580.tif 000062
2004509580.tif 000063
2004509580.tif 000064
2004509580.tif 000065
2004509580.tif 000066
2004509580.tif 000067
2004509580.tif 000068
2004509580.tif 000069
2004509580.tif 000070
2004509580.tif 000071
2004509580.tif 000072
2004509580.tif 000073
2004509580.tif 000074
【国際公開パンフレット（コレクトバージョン）】
2004509580.tif 000075
2004509580.tif 000076
【国際調査報告】
2004509580.tif 000077
2004509580.tif 000078