(57)【特許請求の範囲】
【請求項１】
メディアサンプルを提供するステップと、
前記メディアサンプルと関連付けられた複数のタイムコードパラメータを決定するステップであって、前記複数のタイムコードパラメータは、前記メディアサンプルと関連付けられたタイムスタンプを少なくとも部分的に指定する１又は複数の時間測度パラメータと、フレーム番号を示すフレーム番号パラメータと、オフセットを指定するオフセットパラメータとを含んでおり、前記オフセットパラメータが１秒当たりのタイムベース中の基本時間単位数で除算されると、その商が前記タイムスタンプと前記メディアサンプルのための真の時間測度との間のドリフトを低減するのに用いることができる時間量を指定し、前記１秒当たりのタイムベース中の基本時間単位数は１又は複数の値を有することがあり、前記１又は複数の値の中の少なくとも１つは３００００の倍数である、ステップと、
前記複数のタイムコードパラメータを告知するステップとを含む、
方法。
【請求項２】
請求項１記載の方法であって、前記オフセットパラメータは、複数の異なるサンプリングレートを用いてメディアサンプルに対するドリフトを低減するのに用いることができる、方法。
【請求項３】
請求項２記載の方法であって、前記サンプリングレートは、毎秒２４０００／１００１フレーム、毎秒２４フレーム、毎秒３００００／１００１フレーム、毎秒３０フレーム、毎秒６００００／１００１フレーム、毎秒６０フレーム、及び毎秒２５フレームから構成されるグループから選択されたレートを含む、方法。
【請求項４】
請求項１記載の方法であって、前記タイムコード・パラメータは、一般的な整数値を有しうる１フレーム当たりのタイムベース中の基本時間単位数を更に含む、方法。
【請求項５】
請求項１記載の方法であって、前記タイムコード・パラメータは、少なくとも１つは１００１の整数倍である１又は複数の値を有しうる１フレーム当たりのタイムベース中の基本時間単位数を更に含む、方法。
【請求項６】
請求項１記載の方法であって、前記タイムコード・パラメータは、フィールド番号を示すフィールド番号パラメータと、１フレーム当たりのフィールド数を指定するフィールド／フレームパラメータとを更に含む、方法。
【請求項７】
請求項６記載の方法であって、１フレーム当たりのフィールド数は、一般的な整数値を有しうる、方法。
【請求項８】
請求項６記載の方法であって、１フレーム当たりのフィールド数は、少なくとも１つが２である１又は複数の値を有しうる、方法。
【請求項９】
メディアサンプルを受け取るステップと、
前記メディアサンプルと関連付けられた複数のタイムコードパラメータを決定するステップであって、前記複数のタイムコードパラメータは、前記メディアサンプルと関連付けられたタイムスタンプを少なくとも部分的に指定する１又は複数の時間測度パラメータと、フレーム番号を示すフレーム番号パラメータと、オフセットを指定するオフセットパラメータとを含んでおり、前記オフセットパラメータが１秒当たりのタイムベース中の基本時間単位数で除算されると、その商が前記タイムスタンプと前記メディアサンプルのための真の時間測度との間のドリフトを低減するのに用いることができる時間量を指定し、前記１秒当たりのタイムベース中の基本時間単位数は１又は複数の値を有することがあり、前記１又は複数の値の中の少なくとも１つは３００００の倍数である、ステップと、
前記タイムスタンプと前記真の時間測度との間のドリフトを低減するように調節される時間値を計算するステップとを含む、
方法。
【請求項１０】
請求項９記載の方法であって、前記計算された時間値に従ってメディアサンプルを提供するステップを更に含む、方法。
【請求項１１】
請求項９記載の方法であって、前記複数のタイムコードパラメータは、一般的な整数値を有しうる１フレーム当たりのタイムベース中の基本時間単位数を更に含む、方法。
【請求項１２】
メディアサンプルをタイムコーディングする方法であって、
非整数フレームレートを有する１又は複数のメディアサンプルを提供するステップと、
前記非整数フレームレートを有する前記メディアサンプルによるドリフト量を含むタイムコードで、前記メディアサンプルをタイムコーディングするステップと、
前記タイムコードから直接得られる時間測度よりも正確である低減ドリフト時間測度を計算するのに用いることができる調節可能なオフセットパラメータを、前記タイムコードに組み込むステップとを含む、
方法。
【請求項１３】
請求項１２記載の方法であって、前記タイムコーディングするステップは、メディアサンプルフレームを含む１又は複数のフィールドと関連付けられたフィールドパラメータを含めるステップを含む、方法。
【請求項１４】
請求項１２記載の方法であって、前記オフセットパラメータはドリフト解消時間測度を計算するのに用いることができる、方法。
【請求項１５】
請求項１２記載の方法であって、前記メディアサンプルのうちの少なくとも一部に関する前記オフセットパラメータを調節するステップを更に含む、方法。
【請求項１６】
請求項１５記載の方法であって、前記調節するステップは、所定の条件が生じたかどうかを判定し当該判定に応答して前記オフセットパラメータを調節するステップを含む、方法。
【請求項１７】
請求項１６記載の方法であって、前記所定の条件は秒カウンタのロールオーバと関連付けられている、方法。
【請求項１８】
請求項１６記載の方法であって、前記所定の条件は、いずれかのフレームが抜かされているかどうかと関連付けられている、方法。
【請求項１９】
請求項１６記載の方法であって、前記調節するステップは、定義された量だけ前記オフセットパラメータを増分するステップを含む、方法。
【請求項２０】
請求項１６記載の方法であって、前記調節するステップは、定義された量だけ前記オフセットパラメータを減分するステップを含む、方法。
【請求項２１】
請求項１６記載の方法であって、前記調節するステップは、定義された量だけ前記オフセットパラメータを増分し、別の時刻に、別の定義された量だけ前記オフセットパラメータを減分するステップを含む、方法。
【請求項２２】
請求項１２記載の方法であって、前記タイムコードはＳＭＰＴＥ非ドロップカウントタイムコードを含む、方法。
【請求項２３】
請求項１２記載の方法であって、前記タイムコードはＳＭＰＴＥドロップカウントタイムコードを含む、方法。
【請求項２４】
メディアサンプルを処理する方法であって、
非整数フレームレートを有する前記メディアサンプルによるドリフト量を含むタイムコードでタイムコード化された複数のメディアサンプルを受け取るステップであって、前記タイムコードは、前記タイムコードから直接得られる時間測度よりも正確な低減ドリフト時間測度を計算するのに用いることができる調節可能なオフセットパラメータを更に含む、ステップと、
前記オフセットパラメータを用いて、前記タイムコードから直接得られる時間測度よりも正確な時間測度を計算するステップと、
前記時間測度を１又は複数のメディアサンプルに適用するステップとを含む、
方法。
【請求項２５】
請求項２４記載の方法であって、前記タイムコードはＳＭＰＴＥタイムコードパラメータを含む、方法。
【発明の詳細な説明】
【０００１】
(関連出願)
本出願は、２０００年８月１５日出願の米国仮出願第６０/２２５４９８号に由来し、その優先権を主張するものであり、その開示は、参照により本明細書に組み込まれる。
【０００２】
(技術分野)
本発明は、メディアサンプルをタイムコーディングする方法、システム、およびデータ構造に関する。
【０００３】
(発明の背景)
タイミング情報を記録および使用する概念は、マルチメディアアプリケーションのニーズにとって基本的なものである。ピクチャ、ビデオ、テキスト、グラフィックス、およびサウンドは、メディアストリームの各サンプルに関連する時間の何らかの理解と共に記録する必要がある。このことは、ユーザに対してメディアストリームを再生するときにメディアの元のタイミングを保持するための情報を搬送し、メディアストリーム内の特定の位置を識別し、さらには科学的記録または履歴を作成するためにメディアサンプルに関連する時間を記録する目的で、様々なマルチメディアストリームを互いに同期するのに有用である。例えば、オーディオやビデオが一緒に記録されるが、別々のメディアデータのストリームとして処理される場合、２つ(または３つ以上)のストリームの同期を調整するためにタイミング情報が必要である。
【０００４】
通常、メディアストリーム(記録したオーディオトラック、あるいは記録したビデオまたはフィルムショット)は、タイミング情報にそれぞれ(暗示的または明示的に)関連付けられるメディアサンプルのシーケンスとして表される。このことの良い例はビデオや映画である。ビデオや映画は、通常は画像すなわちフレームのシーケンスとして作成される。フレームはそれぞれ、特定の短い時間間隔(例えば、通常は映画フィルムの各フレームについて１/２４秒)についてのカメラビューを表す。毎秒当たり、記録の過程で使用したのと同じフレーム数(フレームレートと呼ばれる)でこのピクチャのシーケンスが再生されるとき、閲覧者に対して、シーンに描写される物体が自然に移動しているかのような錯覚を生み出すことができる。
【０００５】
同様に、サウンドはしばしば、オーディオ波形を定期的にサンプリングし、デジタルサンプルのシーケンスを(例えば毎秒当たり４８０００サンプルを使用して)作成し、デジタル圧縮符号化またはパケットネットワーク伝送(インターネット伝送など)などの次の処理のためにこれらのサンプルの組をフレームと呼ばれる処理単位(例えば１フレーム当たり６４サンプル)にグループ化することによって記録される。次いでオーディオデータの受信機は、受信したオーディオのフレームを再度組み上げ、それを復号化し、得られるデジタルサンプルのシーケンスを、電気音響技術を使用してサウンドに戻す。
【０００６】
ビデオと、関連するオーディオコンテンツとを同期するなど、複数のメディアサンプルのストリームを整合させるために、タイミング情報を適切に記録および制御することが必要である。サンプルの推移が経時的に自然に表示されないメディアの使用でさえ、しばしばマルチメディアシステムでタイミング情報を使用することが必要となる。例えば、静止画像(写真、絵画、または文書など)を、あるオーディオ(画像の内容または歴史の説明など)と共に表示すべき場合、静止画像(時間的に１つのフレームまたはサンプルだけからなる実体)の表示タイミングを、関連するオーディオトラックのタイミングと整合させる必要のあることがある。
【０００７】
このようなタイミング情報の有用性の他の例には、写真を撮影した日付または時刻を記録できること、またはメディアストリーム内の編集点または閲覧点(例えばカメラがローリングを開始してから５分後)を指定できることが含まれる。
【０００８】
上記の各ケースでは、メディアストリームのサンプルまたは時間的なサンプルのグループは、フレーム、すなわち基本的処理単位として識別することができる。フレームが時間的に複数のサンプルからなる場合、フレームに関して表されるタイミング情報が、最初のサンプル、最後のサンプル、または中間のサンプルの時間など、フレーム内のある基準点の時間に対応するという規約を確立することができる。
【０００９】
ある場合には、フィールドと呼ばれるさらに小さい処理単位にフレームをさらに細分することができる。この一例は、インタレース化スキャンビデオを使用する場合である。この場合、ピクチャ中の交互の線のサンプリングが分離され、それによって各ピクチャの線の半分がある瞬間に第１フィールドとしてサンプリングされ、次いで短時間の後に、ピクチャの線の他の半分が第２フィールドとしてサンプリングされる。例えば、線１、３、５などをピクチャの第１フィールドとしてサンプリングすることができ、次いでピクチャの線０、２、４などを短時間の後に(例えば１/５０秒後)第２フィールドとしてサンプリングすることができる。このようなインタレース化スキャンビデオでは、各フレームは、一般に２つのフィールドに分離することができる。
【００１０】
同様に、データ圧縮またはパケットネットワーク伝送のための、オーディオ波形の６４サンプルのグループ化をフレームと見て、かつそのフレーム内の８つのサンプルの各グループをフィールドと見ることができる。この例では、各フレーム内に８つのフィールドがあり、フィールドはそれぞれ８つのサンプルを含むことになる。
【００１１】
当技術分野で周知のサンプル化メディアストリームを使用するいくつかの方法では、フレームまたはフィールドが、重複する数組のサンプル、または重複する数組のサンプルの変換からなることがある。この挙動の２つの例は、重複直交変換[１)Henrique Sarmento Malvar,Signal Processing with Lapped Transforms、Boston、MA、Artech House、１９９２;２)H.S.Malvar and D.H.Staelin、「The LOT:transform coding without blocking effects」、IEEE Transactions on Acoustics,Speech,and Signal Processing、vol.３７、pp.５５３-５５９、Apr.１９８９;３)H.S.Malvar、Method and system for adapting a digitized signal processing system for block processing with minimal blocking artifacts、U.S.Patent No.４,７５４,４９２、June １９８８]や、オーディオ冗長度コーディング[１)J.C.Bolot、H.Crepin、A.Vega-Garcia:「Analysis of Audio Packet Loss in the Internet」、Proceedings of the ５th International Workshop on Network and Operating System Support for Digital Audio and Video、pp.１６３-１７４、Durham、April １９９５;２)C.Perkins、I.Kouvelas、O.Hodson、V.Hardman、M.Handley、J.C.Bolot、A.Vega-Garcia、S.Fosse-Parisis:「RTP Payload for Redundant Audio Data」、Internet Engineering Task Force Request for Comments RFC２１９８,１９９７]を使用することである。このような場合であってもやはり、時間をサンプルのフレームまたはフィールドと関連付ける規約を確立することは可能である。
【００１２】
ある場合には、正確なクロック信号で制御される固定ステップの時間ですべてのサンプルが作成される典型的なオーディオ処理などのように、サンプリングパターンが時間的に非常に規則的となる。しかし別の場合には、シーケンス中の隣接するサンプル間の時間が、シーケンス中の位置ごとに異なる可能性がある。
【００１３】
このような挙動の一例は、パケット損失を伴うパケットネットワークを介してオーディオを送信するときである。これにより、一部のフレームがデコーダで受信されないのに、他のフレームは、パケットの元の相対的タイミングで使用するように再生すべきことになる可能性がある。このような挙動の別の例は低ビットレートビデオカンファレンシングである。低ビットレートビデオカンファレンシングでは、毎秒当たり送信されるフレーム数が、シーン中の動きの量に応じてしばしば変化する(変化が小さいと、変化が大きい場合よりも送信するデータが少なくなり、ビット/秒単位の全チャネルデータレートは通常固定されているからである)。
【００１４】
基礎となるサンプリング構造が、基本フレームまたはフィールド処理単位サンプリングレートである(しかし、ある処理単位はスキップされる可能性がある)と理解される場合、時間表現での別のカウント単位として処理単位を識別できることは有用である。これを設計に組み込む場合、処理単位のスキップが生じたことは、カウント単位の値が欠けていることによって確認することができる(例えば、処理単位のカウントが１、２、３、４、６、７、８、９、．．．続く場合、カウント番号５が欠けていることは明らかである)。
【００１５】
基礎となるサンプリング構造が、サンプリングが非常に不規則であるので基本処理単位サンプリングレートが存在しないようなものである場合、必要なのは、単に各処理単位についての真の時間の良好な表現だけである。しかし通常は、このような場合、処理単位の位置の基準とすることができる共通時間クロックが少なくとも存在すべきである。
【００１６】
(規則的なサンプリング時間、または不規則なサンプリング時間の)いずれの場合にも、マルチメディアシステムが、メディアコンテンツの各処理単位のサンプルまたはフレームまたはフィールドについてのタイミング情報を記録および使用することは有用である。
【００１７】
異なるタイプのメディアでは、異なるサンプリングレートが必要となる可能性がある。しかしタイミング情報が同じ精度で常に格納されている場合、ある量の丸め誤差が、時間を表すために使用する方法によって導入される可能性がある。各サンプルに関連する記録時間を、丸め誤差をほとんどまたは全く伴わずにシステムで正確に表すことが望ましい。例えば、メディアストリームが毎秒当たり３００００/１００１フレームで運用され(北米規格NTSC放送ビデオの典型的なフレームレート-毎秒約２９.９７フレーム)、システムで使用する時間値の精度を部分的に１０-6秒以内にすべき場合、人間の観点からはこの時間値は非常に正確であるかもしれないが、システム内の処理要素にとっては、厳密に規則的なサンプルタイミング(例えば１サンプル当たり１００１/３００００秒)が厳密に規則的ではないように見える可能性がある(例えば、サンプル間の３３３６６クロック増分カウントの後に、３３３６７の増分が続き、次いで３３３６７の増分、次いで再び３３３６６の増分が続く場合)。これにより、システムでメディアサンプルを適切に処理する方法を決定するのが困難となる。
【００１８】
時間を表す方法を見つける際の別の問題は、完全に理想的な「ウォールクロック（wall clock）」で測定されることになる真の時間に対して、表示が「ドリフト」する可能性があることである。例えば、厳密に規則的な、１サンプル当たり１００１/３００００秒のサンプルタイミングをシステムで用い、かつサンプル間で３３３６７の増分である増分時間間隔ですべてのサンプルが表される場合、このようなサンプルのロングシーケンスに対して使用される全時間は、真の時間間隔よりも幾分長くなり、１日当たり合計約１フレーム時間となり、１年の期間の後、５分を超える誤りが蓄積されることになる。
【００１９】
したがって、ドリフトを、サンプリング時間のタイムコード表現中の何らかの誤りと定義する。ドリフトは、(補正しない場合)サンプルのシーケンスが推移するにつれて大きさが増大する傾向がある。
【００２０】
タイミング情報を表す方法の一例は、SMPTE １２M設計[Society of Motion Picture and Television Engineers、Recommended Practice １２M:１９９９]から得られる(以後「SMPTEタイムコード」と呼ぶ)。SMPTEタイムコードは通常、米国のNational Television Standards Committee(NTSC)テレビジョン伝送フォーマット、または欧州のPhase Alternating Line(PAL)テレビジョン伝送フォーマットで規定されるタイミングを有するテレビジョンビデオデータ用に使用される。
【００２１】
SMPTEタイムコードに関する背景
SMPTEタイムコードは、当初はテレビジョン業界や映画業界でビデオテープ技術を扱う際に使用するために開発された同期信号方法である。ビデオテープで当初直面した問題は、ビデオまたはサウンドトラックの編集用の装置を同期するための「フレームアキュレット(frame accurate)な」方式が存在しなかったことである。初期にはいくつかの方法が利用されたが、すべったり延びたりする、テープ固有の特性のために、フレームの正確な同期の達成は限られたものであった。SMPTEタイムコードの導入により、このフレーム精度が実現され、追加の機能が組み込まれた。SMPTEに関する追加の情報源には、Cipher Digital Inc.による「The Time Code Handbook」が含まれる。ここには、この問題の完全な扱い方や、ANSI規格SMPTE １２M-１９８６を含む付録が与えられている。加えて、Gary Davis and Ralph Jones for Yamahaによる「The Sound Reinforcement Handbook」と題するテキストには、タイムコード理論と応用例に関するセクションが含まれている。
【００２２】
SMPTEタイムコードの主な目的は、様々な装置を同期することである。タイムコード信号は、他のすべてが基準とするシステムワイドクロックを提供するようにフォーマットされる。信号は通常、ビデオ信号で直接符号化され、または標準オーディオ装置を介して配布される。SMPTEタイムコードではビデオの術語を数多く参照するが、オーディオ専用応用例のために使用されることもある。
【００２３】
多くの応用例では、タイムコード源が信号を供給し、一方システム内の残りの装置は、それに同期し、追従する。タイムコード源は専用タイムコードジェネレータでよく、または(しばしばそうであるが)主機能に加えてタイムコードを供給する１つの生成装置でよい。この一例は、あるトラックに対するタイムコードと、別のトラックに対して生成するためのサウンドを供給しているマルチトラックオーディオテープデッキである。ビデオテープは、タイムコードを記録および再生するために、しばしばキュートラック、またはそのオーディオサウンドトラックのうちの１つを同様に利用する。
【００２４】
他の応用例、すなわちビデオでは、この装置は、複数のタイムコード源を１つに同期するために、タイムコードを内部で使用する。一例は、いくつかの事前記録したシーンからのタイムコードと同期するビデオエディタである。各シーンが互いに組み合わされて最終的な製品が作成されるとき、それぞれのタイムコードは、最終的な製品に記録される新しいタイムコードと同期される。
【００２５】
SMPTEタイムアドレス
SMPTEタイムコードは、ビデオ信号の各フレームに対する固有のアドレスを供給する。このアドレスは、２４時間クロックおよびビデオフレームレートに基づく、時、分、秒、およびフレームを以下のフォーマットで表す８桁の数である。HH:MM:SS:FF
【００２６】
これらのフィールドの値は、HHに関しては００から２３の範囲で変化し、MMに関しては００から５９、SSに関しては００から５９、FFに関しては００から２４または２９の範囲で変化する(ただし２４は、PAL ２５フレーム/秒ビデオに対する最大値であり、２９は、NTSC ３００００/１００１フレーム/秒ビデオに対する最大値である)。慣例により、一日の最初のフレームは００:００:００:０１とマークされるとみなし、最後のフレームは００:００:００:００とマークされるとみなす(このフレームの１つ前のフレームは、PALの場合２３:５９:５９:２４とマークされ、NTSCの場合２３:５９:５９:２９とマークされる)。このフォーマットは、公称クロック時間や、シーンまたはプログラム素材の公称期間を表し、このフォーマットにより、近似時間計算が容易になり、直接的になる。
【００２７】
SMPTEフレームレート
フレームはSMPTEタイムコード内の測度の最小の単位であり、フィルムまたはビデオの個々の「ピクチャ」に対する直接的な基準である。レートは、動きのレンディションが得られるようにピクチャが表示される、毎秒当たりの時間数である。SMPTEタイムコードで一般に使用する標準的フレームレート(フレーム/秒)には２つある。それは、毎秒当たり２５フレームのフレームレートと、毎秒当たり３００００/１００１フレーム(毎秒当たり約２９.９７フレーム)のフレームレートである。毎秒当たり２５フレームのレートは、SMPTE EBU(PAL/SECAMカラーおよび白黒)とも呼ばれる欧州のビデオに基づいている。毎秒当たり３００００/１００１フレーム(大雑把に毎秒３０フレームと呼ばれることもある)は、米国のNTSCカラービデオ放送に基づいている。毎秒当たり２９.９７フレームを使用する場合、SMPTEタイムコードを使用する方法には２つある。それは「非ドロップ」と「ドロップフレーム」である。
【００２８】
フレーム値は、フィルムまたはビデオのフレームごとに１カウント増加し、それによってユーザが、イベントの時間間隔を１秒の１/２５または１００１/３００００にすることが可能となる。
【００２９】
SMPTEタイムコードもまた、厳密な毎秒当たり３０フレーム/秒のフレームレートのために使用されることがある。しかしユーザは、これを使用することと、わずかに低速な、米国のNTSCカラー放送ビデオの毎秒当たり３００００/１００１フレームのレートとを区別するように注意しなければならない(調節因子１０００/１００１は、現代のカラービデオと、モノクロームビデオを毎秒当たり３０フレームで放送するための以前の設計との間の互換性を実現するようにテレビジョン信号が調節される方法に由来する)。
【００３０】
したがって、SMPTEタイムコードは、ビデオピクチャに関するパラメータHours、Minutes、Seconds、およびFramesのそれぞれの整数の数を記録することからなる。フレーム番号の各増分は、NTSCシステムでの時間の増分１００１/３００００秒と、PALシステムでの時間の増分１/２５秒を表すと理解される。
【００３１】
しかし、NTSCシステムでの毎秒当たりのフレーム数(３００００/１００１)は整数でないので、SMPTE １２Mタイムコードの時間表現と真の「ウォールクロック」時間との間のドリフトの問題がある。このドリフトは、SMPTE「ドロップフレーム」カウントと呼ばれる特別なフレームカウント方法によって著しく低減することができる。SMPTEドロップフレームカウントを使用しないと、SMPTEタイムコードの値Hours、Minutes、およびSecondsと、真の「ウォールクロック」で測定される値との間のドリフトにより、１日当たり８６秒を超えるエラーが累積することになる。SMPTEドロップフレームカウントを使用するとき、ドリフトの蓄積量は、約１０００分の１に低減することができる(しかし、ドリフトはまだ完全には解消されず、残りのドリフトはまだ２フレームサンプリング期間を超える)。
【００３２】
SMPTEタイムコードは、ビデオ製作業界で非常に広く用いられている(例えば、SMPTEタイムコードは、多くのビデオテープレコーダの設計に組み込まれている)。したがって、一般的などんなメディアタイムコード設計でもこのSMPTEタイムコードと最大限に互換であるなら、非常に有用である。このような互換性を達成することができる場合、これにより、メディアタイムコード用に設計された装置が、具体的にはSMPTEタイムコードを使用するように設計された他の装置と共に良好に動作することが可能となる。
【００３３】
この文書中では、以下の術語を使用する。タイムコードは、メディアサンプル、フレーム、またはフィールドに関連する時間を表すのに使用されるデータを含む。タイムコードのデータを、タイムベースとタイムスタンプの２つの別々のタイプに分離することは有用である。タイムスタンプは、特定の処理単位(サンプル、フレーム、またはフィールド)についてのタイミングを表すのに使用される情報を含む。タイムベースは、タイムスタンプで使用される測度単位の基礎を確立する情報を含む。言い換えれば、タイムベースは、タイムスタンプを適切に解釈するのに必要な情報である。メディアストリームについてのタイムベースは通常、サンプルの全シーケンス、または少なくとも非常に大きな１組のサンプルついてのタイムベースと同じままである。
【００３４】
例えば、SMPTEタイムコードを、以下のものからなるタイムベースを有するものとして解釈することができる。
・システムがNTSCであるか、それともPALであるかについての知識(または表示)、および
・システムがドリフトを部分的に補償するためにSMPTE「ドロップフレーム」カウントを使用するかどうかについての知識(または表示)
【００３５】
上記が与えられると、タイムスタンプは、特定のビデオフレームごとのパラメータHours、Minutes、Seconds、およびFramesの表現からなる。
【００３６】
本発明は、様々なメディアに関連する改良型のタイミングシステム、方法、および構造を提供することに関連する問題から生まれたものである。本発明はまた、現在使用されているタイムコード、具体的にはSMPTEタイムコードと互換の、改良型のタイミングシステム、方法、および構造を提供することに関連する問題から生まれたものでもある。
【００３７】
(発明の概要)
いくつかの実施形態において、非整数フレームレートを有することから生じる可能性のある、ある量のドリフトをタイムコードが含むメディアサンプルから、真の時間を確認することが可能なタイムコーディングシステム、方法、およびデータ構造を説明する。本発明の方法は、メディアサンプルに関連する、タイムコードと真の時間との時間差を記述するオフセットパラメータの使用を組み込む。本発明の手法は、SMPTEなどの現行のタイムコーディングパラダイムと共に組み込むことができ、かつそれと互換に使用することができる。別の実施形態では、フレームのフィールドレベルでタイムコーディングを行うことが可能となる。これにより、真の時間の計算を行って、フレームの個々のフィールドに関連する真の時間を確認することが可能となる。
【００３８】
加えて、他の実施形態では、非整数フレームレートでサンプリングされるメディアサンプルに関連する可能性があるドリフトを低減することを対象とする新規なカウント補償方法が提供される。
【００３９】
(好ましい実施形態の詳細な説明)
概要
様々なメディアで使用するためのタイミングシステム、方法、および構造を説明する。様々な実施形態により、メディアサンプルに関連するタイムコードで「真の時間」に対する正確な基準を提供することができる手段が提供される。以下で説明する様々な実施形態は、特定のサンプル、フレーム、またはフィールドに関連する真の時間を確認するために既存のタイムコードと共に使用することができるオフセットパラメータを組み込む。
【００４０】
以下の説明では、まず一実施形態による例示的タイムベースの説明から始め、次いで本発明の一実施形態に関連する例示的タイムスタンプパラメータを説明する。
【００４１】
タイムコード設計のためのタイムベースパラメータ
以下の表１に、一実施形態によるタイムコードで用いるためのタイムベースを指定する一設計で使用される、例示的な完全な１組のパラメータを示す。
【００４２】
これらのパラメータの一部は、ヘッダでのみ指定することができ、または特定のシステム設計に関して特定の値に固定することができる。あるいは、これらのパラメータの一部または全部は、タイムスタンプごとに送信することができる。(フィールドベースのタイムコードがシステムで不要な場合、BaseFPFパラメータを取り除くことができ、BaseFPFパラメータは暗示値１を有することができる。)
【００４３】
【表１】
0004690635.tif 000002
【００４４】
これらのパラメータを使用して、重要な派生パラメータを以下のように定義する。
MaxFPS=ceil(BaseUPS/(BaseFPF・BaseUPF))
【００４５】
上式で、ceil(x)は、引数xの数学関数として定義され、非負値のxについて、xが整数である場合はxに等しく、そうでない場合はxより大きい最小の整数に等しい。
【００４６】
表１に示すパラメータとMaxFPSパラメータは、意味的には以下のように定義される。
・MaxDays:タイムコード期間が定義される最大日数
【００４７】
・BaseUPS:毎秒当たりのタイムベース中の基本時間単位数(クロックチックと呼ぶ)(例えば、毎秒当たり１２００００チックまたは毎秒当たり５０チック)。このパラメータは一般の整数値を有することができる。このパラメータはまた、特定の固定整数定数を一般の整数値で割ったものとして定義することもできる。整数定数は、３００００の整数倍にすることができる。このパラメータはまた、少なくとも１つが３００００の整数倍である１つまたは複数の値を有することもできる。
【００４８】
・BaseUPF:フィールドカウント増分ごとに加えられる基本時間単位数(クロックチックと呼ぶ)(例えば、１フィールド当たり２００２チックまたは１フィールド当たり１チック)。このパラメータは一般的な整数値を有することができる。このパラメータはまた、少なくとも１つが１００１の整数倍である複数の値のうちの１つを有することもできる。
【００４９】
・BaseFPF:フレームごとに定義されるフィールド数(例えば、インタレース化ビデオ中の１フレーム当たり２フィールド、または１つの順次走査ビデオの１フレーム当たり１フィールド)。メディアサンプルがそれぞれ等しい数のフィールドに分割されない場合、BaseFPFパラメータは１である。このパラメータは一般的な整数値を有することができる。
【００５０】
・CountComp:フレームカウント増分を補償して、真の「ウォールクロック」時間とタイムコードタイムスタンプとの間の経時的なドリフトを低減または解消するために適用する方法を示す。これは、以下のように定義される。
【００５１】
・「００」:カウント補償なし。ドリフトがもしあれば、それはタイムコードのOffsetパラメータ中に蓄積する。フレームパラメータは、単に０からMaxFPS-１までカウントし、次いで０から再び開始する。
【００５２】
・「０１」:SMPTE「ドロップフレーム」カウント補償。連続するフレーム増分についてのタイムスタンプが１分のマークを通過するごとに、値が００、１０、２０、３０、４０、および５０である場合を除き、フレームパラメータカウントを、０ではなく２から開始する。フレームパラメータは常にMaxFPS-１までカウントする。この補償を実施した後に残るドリフトは、Offsetパラメータ中に蓄積する。
【００５３】
・「１０」:「トップドロップ」カウント補償。経時的なドリフトを解消するため、フレームパラメータをある時には０からMaxFPS-１までカウントし、ある時には０からMaxFPS-２までしかカウントしない(トップカウントを抜かす)。トップドロップカウント補償は恐らく最も直感的な方法である。例えば、基本フレームレートが毎秒当たり７.３フレームである場合、ある時には１秒に７フレームカウントし、ある時には８フレームカウントすることになる(したがってフレームカウントは、ある時には０から６までカウントし、ある時には７までカウントすることになる)。
【００５４】
・「１１」:「ボトムドロップ」カウント補償。経時的なドリフトを解消するため、フレームパラメータを、ある時には０からMaxFPS-１までカウントし、ある時には１からMaxFPS-１までしかカウントしない(ボトムカウントを抜かす)。このカウント方法は、トップドロッピングと同様であるが、この場合は、スキップするのはフレームパラメータの最高値ではなく、フレームパラメータ値０である。
【００５５】
BaseUPS/(BaseFPF・BaseUPF)が整数である場合、CountCompは「００」に等しい(この場合、ドリフトが累積しないからである)。BaseUPS/(BaseFPF・BaseUPF)が１未満である場合、CountCompは「０１」や「１１」とは等しくない(この場合、フレームパラメータが０を超えることができないからである)。CountCompの使用法に関するより詳しい情報を以下に与える。
【００５６】
タイムコード設計のためのタイムスタンプパラメータ
表２に、上記の表１で定義されるタイムベースを使用する特定のタイムスタンプの、例示的な完全な１組のパラメータを示す。これらのパラメータの一部は、ヘッダでのみ指定することができ、または特定のシステム設計に関して特定の値に固定することができる。あるシステム設計では、未送信パラメータの一部についての値を格納または推測する受信機に応じて、あるパラメータを他のパラメータよりも頻繁に送信することも望ましい。(システムでフィールドベースのタイムコードが不要である場合、フィールドパラメータを除去することができ、フィールドパラメータは暗示値０を有することができる。)
【００５７】
【表２】
0004690635.tif 000003
【００５８】
上記の表中の情報を使用した、秒単位の真の(実数値の)「ウォールクロック」時間への変換は、以下のように定義することができる。
t=６０・(６０・Hours+Minutes)+Seconds+(BaseUPF・(BaseFPF・Frames+Fields)+Offset)/BaseUPS
【００５９】
タイムコード定義の最大範囲を指定するのにHoursとMaxDaysだけを使用するのではなく、タイムスタンプ定義がDayパラメータも指定し、かつHoursが０から２３の範囲に制限されるようにこのタイムコード定義を直接的に拡張することができる。あるいは、タイムコードは、DayOfMonth、Month、およびYearも含むことができ、タイムベースは、Yearパラメータの範囲を(暗示的または明示的に)指定することができる。しかし、この最後のタイプの定義は、うるう日、うるう秒などをどのように補償するかが問題となるので、より複雑になる。
【００６０】
不連続は、各サンプルについて表される時間値の差が、そのサンプル間の真の時間間隔の正確な表現として解釈することができない２つの連続するサンプル間の接合である。(これは、タイムコード値を変更せずにストリームを接合するときを示すのに有用である。)
【００６１】
表２に示すパラメータは、意味的には以下のように定義される。
・Discont:特定のサンプルと、隣接するサンプルとの間の境界に不連続が存在するかどうかを指定する。このパラメータにより、それぞれがそれ自体のタイムスタンプを有する２つのメディアサンプルのストリームを接合することが可能となるので、編集目的でこのパラメータを含めることは有用である。このパラメータは以下のように定義される。
○「００」:不連続は示されない(隣接するサンプルタイムコードに関して示されるのでない限り)
○「０１」:このサンプルと次のサンプルの間が不連続
○「１０」:前のサンプルとこのサンプルの間が不連続
○「１１」:前のサンプル、現サンプル、および次のサンプルの間が不連続
あるいは、Discontパラメータは、値「１」が前のサンプルと現サンプルとの間の不連続を示すという規約(または値「１」が前のサンプルと次のサンプルとの間の不連続を示すという規約)を共に用いて、単一のビットにすることもできる。
【００６２】
・Hours:３６００を掛けたときに、タイムスタンプの成分として加えるべき(秒単位の)時間量を指定する整数パラメータ。
【００６３】
・Minutes:６０を掛けたときに、タイムスタンプの成分として加えるべき(秒単位の)時間量を指定する整数パラメータ。
【００６４】
・Seconds:タイムスタンプの成分として加えるべき時間の秒数を指定する整数パラメータ。
【００６５】
・Frames:BaseUPFとBaseFPFを掛け、BaseUPSで割ったときに、タイムスタンプの成分として加えるべき(秒単位の)時間量を指定する整数パラメータ。Framesパラメータは、メディアサンプルフレームごとに増分され、増分値がMaxFPS-１を超えた場合に０に設定され、CountCompパラメータで示されるようにドリフトに対して調節される。FramesパラメータはMaxFPS-１を超えることはない。
【００６６】
・Fields:BaseUPFを掛け、BaseUPSで割ったときに、タイムスタンプの成分として加えるべき(秒単位の)時間量を指定する整数パラメータ。Fieldsパラメータは、メディアサンプルフィールドごとに増分され、増分値がMaxFPS-１を超過した場合に０に設定される。
【００６７】
・Offset:BaseUPSで割ったときに、タイムスタンプの成分として加えるべき(秒単位の)時間量を指定する整数パラメータ。Offsetパラメータは、他のパラメータで表される時間と、メディアフィールドサンプルの真の「ウォールクロック」時間との正確な差を指定するのに使用される。
【００６８】
フレームレートカウント補償
フレーム/秒単位のメディアサンプルレートが整数でないときはいつでも(すなわち、BaseUPS/(BaseFPF・BaseUPF)が整数でないときはいつでも)、サンプリングシーケンスが進行するにつれて、Hours、Minutes、およびSecondsパラメータと、Framesカウントとの間のドリフトに対して調節することが必要となる可能性がある。Offsetパラメータを使用して、ある量のドリフトを補償することができるが、この目的でOffsetパラメータを使用することに伴う２つの問題がある。
・過大なドリフトが累積することが可能な場合、Offsetパラメータで表すことができる値の範囲を超過する可能性があり、
・過大なドリフトが累積することが可能な場合、通常の「ウォールクロック」時間でのサンプルの適切な近似的な配置としてのHours、Minutes、およびSecondsパラメータの通常の解釈が失われ始める
ことである。
【００６９】
CountCompパラメータは、ドリフトに関してカウントプロセスを補償する方法を示す。
【００７０】
蓄積したドリフトを表すのに必要なOffsetの値を含むDriftと呼ばれる変数を定義する場合、カウントプロセスがCountComp変数と関係するので、カウントプロセスを指定することができる。Offsetの値は、この基本サンプリングタイミングの変更を示すべきでない場合に、Driftと等しく設定することができる。(しかし望むなら、サンプルの異なるタイミングを示すために、OffsetをDrift以外のある値に設定することができる。そのうちの２つの例を以下に与える)。
【００７１】
次いで、Fieldsパラメータの増分ごとのカウントプロセスおよびドリフト補償は、以下のC++プロセス定義で定義することができる。あるフィールドサンプルをスキップした(送信しなかった)場合、紛失したサンプルからの時間ギャップを示すために、後続のサンプルのFieldsパラメータが１つの追加の時間だけ増分される。以下のC++コードの断片では、すべてのパラメータが任意長の整数変数を使用して処理されると仮定する(すなわち、パラメータは、表中に指定した範囲を超える値を一時的に取ることができる)
【００７２】
0004690635.tif 000004
0004690635.tif 000005
0004690635.tif 000006
0004690635.tif 000007
【００７３】
カウント補償の他の同様の方法は、Hours、Minutes、Seconds、およびFrameパラメータで表される時間と、フレームの真の「ウォールクロック」時間との間の蓄積したドリフトの計算に基づく方法であって、蓄積したドリフトの値が少なくともBaseFPF・BaseUPFの値のあるしきい値を超過したとき、いくつかのフレームカウントをスキップする方法として定義することができる。
【００７４】
例１
SMPTE非ドロップカウントを用いたNTSC(毎秒当たり約２９.９７フレーム)の状況で以下の例を与える。
【００７５】
SMPTENTSC非ドロップタイムコードは、実質的な変更を行うことなく、タイムコードデータ構造フィールドCountComp、Hours、Minutes、Seconds、およびFramesで表すことができる。タイムコードの他のパラメータは以下のように指定すべきである。
MaxDays   = １;
CountComp = '００'; (カウント補償なし)
BaseUPF   = １００１;
BaseUPS   = ３００００ (フレームベースのタイムスタンプの場合), or ６００００ (フィールドベースの場合);
BaseFPF   = １ (フレームベースのタイムスタンプの場合), or ２ (フィールドベースの場合);
Fields    = ０ (フレームベースのタイムスタンプの場合), or ０ or １ (フィールドベースの場合);
【００７６】
Offsetパラメータは、「フレームレートカウント補償」と題するセクションで計算されるドリフトの値に設定すべきである。(当初０に設定され、次いでSecondsの値が増分するごとに、３０(フレームベース)または６０(フィールドベース)だけ増分される。)
次いで、SMPTEタイムコードは、そのパラメータ値が変更されずに保持されているので、CountComp、Hours、Minutes、Seconds、およびFramesパラメータから直接抽出できることに留意されたい。
【００７７】
一例として、以下について考慮する。
【００７８】
米国のビデオ用システムは、当初は３０フレーム/秒となるように設計されていた。しかし、ビデオ技術の進歩(すなわちカラーテレビジョンの発明)により、これがわずかに変更された。このフレームレートは１０００/１００１倍に変更された。したがって現在では、米国規格のビデオの１秒当たりのフレーム数は、３００００/１００１すなわち〜２９.９７である(したがって、上記で毎秒あたり２９.９７フレームという数字を用いた)。
【００７９】
このことは、カウント中のタイムコード、または時、分、秒、およびフレームの標識が付けられたタイムコードがある場合で、ある時間量が経過した後に単に０-２９を反復的にカウントする場合、タイムコードが表すと思われる時間と、真の時間との間のドリフト、あるいはあるフレームと、ずっと後に到着する別のあるサンプルとの間の時間差が存在することになることを意味する。３０f/s(フレーム/秒)が存在するとき、正確なクロックで測定する真の時間と、タイムコードが時、分、および秒、ならびにフレームによって表している時間との間で累積する著しいドリフトが存在する。
【００８０】
例示的タイムコードカウンタ１００を「秒」列および「フレーム」列で示す図１を考慮する。「秒」列は、秒単位の時間の測度を表す。「フレーム」列は、カウントしたフレームの測度を表す(この例では、話を簡単にするために「時」および「分」を省略した)。フレームカウントで表される真の時間差は、１００１/３００００秒/フレームである。タイムコードは０で開始する(時、分、および秒が０)。フレームカウントは１である。個々のフレームが(例えばタイムコードエンコーダ中を)通過するとき、個々のフレームはカウントされ、それらにタイムスタンプを割り当てることができる。この例での最初のフレームには、(秒,フレーム)に関してタイムスタンプ(s=０,f=１)が割り当てられる。次の増分では、秒は依然として０であるが、このときフレームカウントは２である。すなわち(s=０,f=２)である。１秒当たりに非整数の数のフレームが存在するので、ドリフトがタイムスタンプ中に累積し始める。
【００８１】
フレームがカウントアップされるとき、フレームカウンタは２９までカウントアップし、次いでs=１およびf=０となるようにロールオーバする。s=０およびf=０とs=１およびf=０の間の公称時間差が理想的には１秒となるべきであるとみなす。しかしこれは事実ではない。実際には３０個の１００１/３００００秒の増分、すなわち３０００１/３００００秒であり、これは１秒よりわずかに長い。したがって、経過した実際の時間間隔は、タイムスタンプパラメータからわかる時間間隔よりもわずかに長い。したがって、s=１、f=０の点は、実際には３００３０/３００００秒の時間が経過した後に生じる。差３０/３００００秒が、オフセットの使用により補償することができるドリフトである。
【００８２】
今説明している実施形態では、フレームカウンタの増分によって示される時間差を理解していることが非常に望ましい。カウントクロック中に存在する毎秒当たりの単位数が理解されいる。今の場合には、１/３００００秒の単位でカウントを行っている。この値は、上記のUPS(単位/秒)パラメータで表される。したがって、UPSパラメータは３００００に設定される。次に、フレームカウンタの増分による、この単位で示される時間差を決定することができる。この値はUPFパラメータで表現される。この例では、UPFパラメータは１００１である。すなわち、フレームカウンタの増分ごとに、１００１単位の１/３００００秒が経過する。したがって、フレームカウンタの増分は、１００１/３００００秒と関連する。
【００８３】
これらの２つのパラメータが与えられると、フレームカウントにUPF/UPSを掛けることによって真の時間差を確認することができる。すなわち、
(フレームカウント)×(UPF/UPS)=フレームカウントで示される真の時間差
【００８４】
最初の期間(s=０)では、秒パラメータを取り、次いでそれに(フレームカウント)×(UPF/UPS)を加えることによって真の時間を計算することができる。すなわち、
真の時間=s+(フレームカウント)×(UPF/UPS)、ただしs=０
【００８５】
システムが次の秒(すなわちs=１)にロールオーバするとき、この計算はもはや有効ではない。というのは、非整数フレームレートを整数カウンタと関連付けるために、経過した時間差を補償しなければならないからである。この例では、ここでオフセットパラメータが使用される。
【００８６】
図２に、例示的タイムコードカウンタ２００を「秒」列、「フレーム」列、およびオフセット列で示す。以下の例では、オフセットパラメータのために使用する特定の値が、特定の非整数フレームレートと関連する。フレームレートが変化するとき、オフセットパラメータのこの値も変化する可能性がある。したがって、記載の例が特定の環境に対する特定の解決策を構成することを理解されたい。したがって、条件が指定される場合を除き、特許請求の範囲に記載された対象がその特定の例だけを包含すると解釈すべできではない。
【００８７】
オフセットパラメータはやはり同じ単位(単位/秒)であり、その結果同じクロックを参照する。オフセットパラメータは当初０に設定される。秒カウンタがその次の値(すなわち１)にロールオーバするとき、オフセットパラメータは３０だけ増分される。このとき、真の時間を計算するための式は以下のように与えられる。
真の時間=s+(フレームカウント×UPF+オフセット)/UPS
【００８８】
したがって、s=１、f(フレームカウント)=０、およびオフセット=３０のときに真の時間を計算すると、１+(０+３０/３００００)=３００３０/３００００秒が得られる。次に、オフセットパラメータを加えることにより、従来のカウント方法(SMPTEタイムコード)を使用できるが、サンプルに関連する正確な時間も計算することができる。
【００８９】
オフセットは、真のフレームレートの関数として選択される。真のフレームレートは、一般に毎秒当たり、ある分数の数であることを想起されたい。この逆が、秒/フレームの数である。
【００９０】
上記の例が数秒続くとき、s=２、f=０の点に到達する。ここで、オフセットをさらに３０だけ増分し、その結果オフセットは６０になる。事実上は、オフセットは時間がさらに経過するにつれて増加する。しかし各ケースでは、オフセットは、従来のSMPTEタイムコードで有するパラメータからサンプルに関連する真の時間を得る方法を知らせることを行っている。
【００９１】
しかし、本発明の技法の応用例は、フレームレートが分数である場合だけに限定すべきではない。具体的には、１秒当たりに整数の数のフレームが存在する場合(例えば２５フレーム/秒である欧州のシステムでは)、ドリフトは存在しないので、オフセットを常に０にすることができる。しかし、オフセットを使用して、SMPTEタイムコードで提示される公称時間とは異なる可能性がある時間を示す能力はまた、例えば元のサンプルのサンプリングがSMPTEタイムコードで表される公称時間で示されるタイミングと異なることを示す能力を提供することなど、他の用途も有する。
【００９２】
SMPTEなどの古いスタイルのタイムコードに関連する問題の大部分は、タイムコードに関連するクロックに対する真の時間の位置の明確な理解がないことである。上述の原理を使用して、オフセットパラメータを提供し、個々のフレーム、またはフレームの一部(下記参照)に関連する真の時間を確認するのに使用することができる。
【００９３】
図３は、記載の一実施形態による方法でのステップを記述する流れ図である。この方法は、適切などんなハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実装することができる。図示する例では、この方法はソフトウェアで実装される。
【００９４】
ステップ３００では、１つまたは複数のメディアサンプルを提供する。メディアサンプルは適切などんなメディアサンプルでもよい。加えて、メディアサンプルは適切などんなフォーマットでも提供することができる。例えば、ほんの２つの例を挙げれば、メディアサンプルはフレームまたはフィールドを含むことができる。ステップ３０２では、タイムコードにオフセットパラメータを提供するように構成されるタイムコードエンコーダを提供する。前述のように、オフセットパラメータを使用することは、真の時間の厳密な理解を有さない古いタイムコードを使用することが可能となり、ある意味では、古いタイムコードデータからサンプルに関連する真の時間を確認するのに使用することができるパラメータを追加することが可能となるという点で有利である。
【００９５】
ステップ３０４では、タイムコードエンコーダを使用してメディアサンプルを処理する。このステップは、サンプルのうちの１つまたは複数に、オフセットパラメータを有するタイムコードを提供することによって実施することができる。サンプルを処理した後、ステップ３０６では、受信機にメディアサンプルを供給する。このステップは、適切などんな方式でも実施することができ、必ずしもタイムコードがメディアサンプルに供給されると同時に実施する必要はない。例えば、特定のムービーが最初に生成されるときにタイムコードを供給することができる。ステップ３０６は、ムービーを受信することに関連するであろう様々な実体、すなわちエディタ、ベンダなどにムービーが配布されるときに実施される可能性がある。
【００９６】
ステップ３０８では、オフセットパラメータを伴うタイムコードを有するメディアサンプルを受信する。このステップは、適切などんな方式でも実施することができる。例えば、このステップは、サンプルを編集することに関連するエディタにメディアサンプルを供給することによって実施することができる。ステップ３１０では、オフセットパラメータを使用して、１つまたは複数のサンプルに関連する時間を計算する。計算される時間は、ドリフトのない時間であることが望ましい。
【００９７】
図４は、タイムコード中にオフセットパラメータを供給する一方法を記述する流れ図である。以下に述べる方法は、ある点ではステップ３０４に装飾を施したものである。ステップ４００では、複数のメディアサンプルを提供する。ステップ４０２では、オフセットパラメータを有するタイムコードを提供する。ステップ４０４では、第１メディアサンプルを取得する。次いでステップ４０６は、オフセットパラメータを有するタイムコードをメディアサンプルに組み込む。ステップ４０８では、所定の条件が生じたかどうかを判定する。適切などんな条件も使用することができる。上記の例では、タイムコード中の秒カウンタが循環したかどうかに条件が関連付けられた。以下のある例では、定められた数のフレームが抜かされた場合に、所定の条件が生じる。
【００９８】
ステップ４０８で条件が生じなかったと判定した場合、ステップ４１０では、次のタイムコード(オフセットパラメータを含むことも含まないこともある)を取得し、ステップ４０４に戻る。一方ステップ４０８で条件が生じたと判定した場合、ステップ４１２でオフセットパラメータを調節し、ステップ４１０に戻って次のタイムコードを取得する。処理される特定のタイプのメディアが与えられるならば、オフセットパラメータの調節は適切などんな方式でも行うことができる。上記の例では、所定の量だけオフセットパラメータを増分することによってオフセットパラメータは調節される。ある状況では、オフセットパラメータを減分することが可能である。この例を以下で与える。
【００９９】
オフセットパラメータを調節した後、ステップ４１０では、次のタイムコード(調節したオフセットパラメータを含むことが好ましい)を取得し、ステップ４０４に戻る。
【０１００】
このようにして、複数のメディアサンプルに、そのサンプルに関連する時間測度を確認するのに使用することができるオフセットパラメータを提供することができる。この時間測度は、非整数フレームレートとの関連のために必然的にあるドリフトを含むタイムコードに関連する時間測度よりも正確な時間測度とすることができることが望ましい。
【０１０１】
例２
SMPTEドロップカウントを用いたNTSC(毎秒当たり約２９.９７フレーム)の状況で以下の例を与える。
【０１０２】
米国のNTSCカラービデオは、２９.９７フレーム/秒で動作する。３０フレーム/秒のプログラム素材と同期させる場合、毎秒当たり余分な０.０３フレームが存在し、毎時間当たり合計３.６秒、すなわち余分なフレームが１０８個となる。同期の問題を引き起こす可能性のあるこのドリフトを低減するために、ドロップフレームタイムコードが開発された。ドロップフレームタイムコードは、タイムコードのシーケンス中のある特定のタイムコードを「抜かす」ことによってこのことを行う。SMPTEドロップフレームタイムコードで使用される調節方法は、１０分毎(００、１０、２０、３０、４０、５０分)を除く各分で２つのタイムコード値を抜かさなければならなかった。一例は、０１:２２:５９:２９から、まず０１:２３:００:００に、次いで０１:２３:００:０１、０１:２３:００:０２と増加するではなく、直接０１:２３:００:０２まで増加することである。コード０１:２３:００:００と０１:２３:００:０１は抜かされる。これにより、かなりの期間にわたってタイムコードが真の時間と非常に近い状態で動作することが可能となる。
【０１０３】
SMPTE NTSCドロップフレームタイムコードは、本質的な変更を行わずに、タイムコードデータ構造フィールドCountComp、Hours、Minutes、Seconds、およびFramesで表すことができる。タイムコードの他のパラメータは、以下のように指定すべきである。
MaxDays   = １;
CountComp = '０１' (SMPTEドロップフレームカウント);
BaseUPF   = １００１;
BaseUPS   = ３００００ (フレームベースのタイムスタンプの場合), or ６００００ (フィールドベースの場合);
BaseFPF   = １ (フレームベースのタイムスタンプの場合), or ２ (フィールドベースの場合);
Fields    = ０ (フレームベースのタイムスタンプの場合), or ０ or １ (フィールドベースの場合);
【０１０４】
次いでOffsetsパラメータは、上記のC++コードで計算されるドリフトの値に設定すべきである(すなわち、最初は０に設定し、次いで、上記の擬似Cコード中に示される時間的位置での２つのフレームカウントドロップと共にSecondsの値の増分が行われるのでない限り、Secondsの値の増分ごとに３０(フレームベース)または６０(フィールドベース)だけ増分する。上記の場合は、その代わりに１９７２(フレームベース)または３９４４(フィールドベース)だけ減分すべきである)。
【０１０５】
SMPTEタイムコードのパラメータ値は変更されずに保持されているので、SMPTEタイムコードを後でCountComp、Hours、Minutes、Seconds、およびFrameパラメータから直接抽出することができる。
【０１０６】
次いで、ドロップフレームカウントでのオフセットパラメータを決定することは、抜かした値を補償するためにオフセットパラメータを調節することを除き、本質的には上記の例とほぼ同様に行われる。具体的には、秒カウンタが初期カウント(すなわち２９から０に)にロールオーバするごとに、オフセットは３０だけ増分される。しかし、値のドロップが行われたときにオフセットパラメータを調節するための特定の規則が存在する。具体的には、フレームカウントがスキップされるとき、オフセットが３０だけ増分される代わりに、所定の値、この場合は１９７２だけ減分される。
【０１０７】
オフセットパラメータを減分するのに使用される値は、以下のように決定される。秒カウンタがロールオーバしたとき、通常は３０を加える。しかし２つのフレームカウントが抜かされたことを補償しなければならない。これにより、負のオフセットは２００２/３００００となる。したがって、所定の値は２００２-３０=１９７２である。
【０１０８】
例３
SMPTEタイムコードを用いたPAL(毎秒当たり５０フィールド)の状況で以下の例を与える。SMPTE PALタイムコードは、本質的な変更を行わずに、タイムコードデータ構造フィールドCountComp、Hours、Minutes、Seconds、およびFramesで表現することができる。タイムコードの他のパラメータは、以下のように指定すべきである。
MaxDays   = １;
CountComp = '００'; (カウント補償なし)
BaseUPF   = １;
BaseUPS   = ２５ (フレームベースのタイムスタンプの場合), or ５０ (フィールドベースの場合);
BaseFPF   = １ (フレームベースのタイムスタンプの場合), or ２ (フィールドベースの場合);
Fields    = ０ (フレームベースのタイムスタンプの場合), or ０ or １ (フィールドベースの場合);
【０１０９】
次いでオフセットパラメータは、上記のC++コードで記述されるプロセスで計算されるドリフトの値に設定すべきである(この場合常に０)。
【０１１０】
次いで、SMPTEタイムコードのパラメータ値は変更されずに保持されているので、SMPTEタイムコードを後にCountComp、Hours、Minutes、Seconds、およびFramesパラメータから直接抽出できることに留意されたい。
【０１１１】
例４
米国でフィルムが放送されるとき、フィルム素材自体は、一般には毎秒当たり２４フレームで撮影される。しかし放送は、一般には毎秒当たり３００００/１００１フレームで行われる。したがって、ビデオの個々のフィールドを周期的に反復することによってコンテンツを調節する「２:３プルダウン」と呼ばれる(「３:２プルダウン」とも呼ばれる)周知の慣行がある。この実施形態の一目標は、毎秒当たり２４フレームで撮影されたビデオが毎秒当たり３００００/１００１フレーム/秒で放送されるとき、適切に構成された受信機がビデオの各フレームを含む個々のフィールドと、その元のフィルムフレームとの元の関連を確認することができ、かつその個々のフィールドの近似的相対タイミングを確認することができるようにそのビデオをタイムスタンプする方式を提供することである。
【０１１２】
例えば図５と、以下の説明について考慮する。ビデオフレームは例えば、一方をF１と呼び、他方をF２と呼ぶ２つのフィールドを有することができる。ビデオフレームが毎秒当たり２４フレームで撮影されるとき、これらのフィールドはそれぞれ、同時に撮影される(この２つのフィールドを含むフレームは同時に撮影されたからである)。すなわち、元のビデオ中にF１およびF２に関連するタイムコードがショットとして存在する場合、同じタイムコード値を有するべきである。
【０１１３】
しかし２:３プルダウンプロセスは、これらのフィールドが同報通信されるときにこれらのフィールドを所定の方式で反復し、異なる時刻にフィールドを同報通信する。例えば、フィールドF１が一般に時刻１で同報通信され、その後に異なる時刻２でフィールドF２が同報通信され、その後にさらに異なる時刻３でフィールドF１が同報通信される。共通のフレームの個々のフィールドが反復されるとき、これらは、実際には同時にサンプリングされるが、異なる時刻に同報通信されることを銘記されたい。
【０１１４】
１００１/１０００倍に伸び、NTSCビデオで使用するために「２:３プルダウン」を使用して変換された２４ピクチャ/秒フィルムの各フィールドについてのタイムコードは、オフセットパラメータを介して、NTSCフィールド指向同報通信に関する変換後インタレース化タイミングの基礎となるピクチャの、伸びたタイミングと順次サンプリングの性質を示すように生成することができる。
【０１１５】
毎秒当たり２４ピクチャのフィルム素材は通常、各ピクチャを走査して、交互の線の２つのフィールドを生成し、４つのピクチャのシーケンスごとに、第２ピクチャおよび第４のピクチャの第１フィールドおよび第２フィールドを送信した後に第１フィールドの送信を反復し、それによって４つのフィルムフレーム２４フレーム/秒ピクチャごとに、３００００/１００１フレーム/秒ビデオの１０個のフィールドに変換される。これにより、全体のタイミングが１０００/１００１倍に遅れ、フィルムをインタレース化ビデオのフィールドとして表示することが可能となる。しかし、どのフィールドがそのサンプリングしたタイミング中で実際に一緒に属しているかを識別することによって、基礎となる非インタレース化ピクチャを回復できることは有用である。
【０１１６】
理想的には、特定のフィールドがその他の関連するフィールドと全く同時にサンプリングされたという表示を行うべきである。記載のこの実施形態によれば、ビデオの各フィールドについて、フィルムを同報通信する際にフィールド反復が行われた実際の時間を示す方法がある。このことは、前述のフィールドカウンタおよびオフセットパラメータを使用して行われる。しかし、これを行う方法についての特定の議論を行う前に、以下のことについて考慮する。
【０１１７】
人間の目は、ディスプレイが約６０回/秒未満のレートでリフレッシュされる場合、ディスプレイの輝度に応じてフリッカを知覚することができる。表示されるフリッカレートが非常に高速である場合、目にはそれが知覚されない。
【０１１８】
動きを表そうとすることと、フリッカを除去しようとすることの間には興味深い兼ね合いがある。テレビジョンの初期の時代には、動きを表示するためにディスプレイを何回か再ペイントしなければならないと定められた。動きを表示するのにディスプレイ全体を再ペイントしなければならないことを回避するために、インターリーブドディスプレイの概念が開発された。この概念は、ある時にビデオの線の半分を表示し、次いで１/６０秒後に他の半分の線を表示するものである。このようにすることにより、閲覧者は動きを正常に知覚し、かつフリッカをなくすることができる。
【０１１９】
しかしこの手法を使用すると、１秒当たりに取得する実際の全ピクチャは３０個だけである。より正確には、１秒当たりに６０個の半ピクチャを得ることになる。したがって、ディスプレイ上に垂直方向に表示されるものを見る場合、上端の線を０とカウントし、次の線を１とカウントし、以下同様にカウントする場合、時刻１には線０、２、４、６、８などを見ることになり、次いで１/６０秒後に１、３、５、７、９などを見ることになる。
【０１２０】
ビデオのフレームは、ディスプレイ上の線の組全体を含む。ビデオのフィールドは、上記で指摘したように、ディスプレイ上の偶数の線の組、または奇数の線の組のどちらかを含む。一実施形態によれば、単にフレームに関する時間タグではなく、特定の各フィールドに関する時間タグを有する能力を与えるタイムコード表現が提供される。次いで、個々のフィールドの他の共通にサンプリングされるフィールドとは異なる時間で、その個々のフィールドが同報通信されるにもかかわらず、この時間タグを処理して、その個々のフィールドがサンプリングされた実際の時間を提供することができる。このことは、フレームに関するタイムコード表現だけしか提供することができないSMPTE技法に勝る改良である。
【０１２１】
個々のフィールドをタイムスタンプする方法の例として、図６について考慮する。図６は、例示的タイムコードカウンタ６００を示す。この特定のタイムコードカウンタでは、図示した構成要素には、フレームカウンタ６０２、秒カウンタ６０４、オフセットカウンタ６０６、およびフィールドカウンタ６０８が含まれる。SMPTEタイムコードカウンタ中に見られる他の標準の構成要素(すなわち時、分)は、この解説では省略した。
【０１２２】
この例では、ビデオの１フレーム当たりに２つのフィールドがある。各フィールドは、ビデオ中の偶数の線、または奇数の線のどちらかに関連する。したがって、フィールドカウンタ６０８は、０と１の間をカウントすることによって各フィールドをカウントする。これは、ある点ではフレームカウンタがフレームをカウントする方式と同様である。具体的には、フィールドカウンタ６０８は、フレームのサブユニットとしてフィールドカウントを処理するように構成される。
【０１２３】
したがってフィールドベースのタイムコードを構築したい場合、この例では、フレームごとに２つのフィールドが存在する。これは、毎秒当たりの単位数が２倍になることを意味する。各フレームが１００１/３００００秒ではなく、各フィールドがその時間量の半分、すなわち１００１/６００００秒であることを述べる必要があるからである。したがって、フレーム中に、フレームの第１フィールドの後に第２フィールドが１００１/６００００秒生じる、２つのフィールドが存在する。
【０１２４】
このことは事実である。再び図６について考慮する。フレームカウンタ６０２が増分するごとに、フィールドカウンタ６０８は２回増分される。すなわち、「０:０:０:０」(すなわち第１行)の後、フィールドカウンタは増分され、その結果タイムコード値は「１:０:０:０」となる。したがって、フィールドに関連する真の時間を計算するために、上記のようにフレームカウンタだけを使用してその時間を計算する代わりに、真の時間は以下の式によって与えられる。
t=s+((field_counter+FPF*frame_counter)UPField+offset)/UPS
【０１２５】
この式は、例えば毎秒当たり３００００/１００１フレームでビデオを受信する受信機を、望ましくは２４フレーム/秒フィルムに関連する元のタイミング情報を抽出するようにプログラムするのに使用することができる。このことは、期間を１００１/１０００倍にわずかに伸ばすことが必要な可能性があるが、オフセット因子のないオペレーションと同様に、送信されるフィールドの規則的な間隔の特性をひずませることはない。
【０１２６】
この手法では、フレーム中に整数個のフィールドがあることを認識し、かつフレームカウンタだけではなく、フィールドに関連する真の時間を計算するのに使用することができる情報を提供する各フィールド自体のタイムスタンプを各フィールドが搬送することを可能にする、提供される追加のフィールドカウンタが存在する。
【０１２７】
SMPTE非ドロップカウントを用いるNTSCでの毎秒当たり２３.９７６フレーム
毎秒当たり２４０００/１００１(約２３.９７６)フレームに伸びたときの、基礎となるピクチャサンプリングタイミングは、基礎となるSMPTE非ドロップタイムコードとして、以下のように示すことができる。
MaxDays   = １;
CountComp ='００'; (カウント補償なし)
BaseUPF   = ２００２;
BaseUPS   = １２００００;
BaseFPF   = ２;
Fields    = ０ or １ (フィールドベース);
【０１２８】
まず、５成分配列をZ[５]={０,-２００２,１００１,-１００１,-３００３}と定義する。次に、Offsetを、最初に送信するフィールドに関してDrift+Z[０]に設定し、２番目のフィールドに関してDrift+Z[１]、３番目に関してDrift+Z[２](これは２番目に送信するピクチャの第１フィールドである)、４番目に関してDrift+Z[３]、５番目に関してDrift+Z[４]、６番目に関してDrift+Z[５]、次いで７番目に関してDrift+Z[０]に、８番目に関してDrift+Z[１]などとなる。ただし、Driftは、フィールドごとに、上記のC++コードで説明したように計算される(最初は０であり、次いでSecondsパラメータが増分されるごとに１２０だけ増分される)。
【０１２９】
基礎となるピクチャサンプリングタイミングを表すための上記の手法の一例として、図７について考慮する。図７は、毎秒当たり２４フレームで撮影されたが、２:３プルダウンを使用して毎秒当たり３００００/１００１フレームで同報通信されたビデオのグラフィック表現を示す。y軸は、個々のフレームの垂直軸を表し、第１フィールドを表す「トップフィールド」と、第２フィールドを表す「ボトムフィールド」に分割される。x軸は時間軸であり、各フレームからの個々のフィールドが、その３００００/１００１フレーム/秒プルダウン構成で受信されるときの時間を表す。
【０１３０】
この例では、フレームA、B、C、およびDと呼ぶ、ビデオの４つのフレームがある。描画されるグラフィック表現を得るために、フィルムの１つのフレームを取り(例えばフレームA)、「トップフィールド」内の線を送信する。このフィールドを７００で示す。次いで送信されていない線(すなわち「ボトムフィールド」７０２)を送信する。次いで次のフレーム(フレームB)を処理し、トップフィールド７０４、次いでボトムフィールド７０６を送信し、次いでトップフィールド７０４を反復することによって３つのフィールドを送信する。次に、フレームCについてのボトムフィールド７０８を送信し、その後にフレームCについてのトップフィールド７１０を送信する。最後に、ボトムフィールド７１２、次いでトップフィールド７１４を送信し、次いでボトムフィールド７１２を反復することによって、フレームDについての３つのフィールドを送信する。
【０１３１】
次いでフレームの２つのフィールドと別のフレームの３つのフィールドを交互の、このプロセスを反復する。単一フレームを含むフィールド中の線すべては、同時にサンプリングされる。しかし、これらの線またはフィールドは、別々の時間に送信される。この結果は、例えばムービーをショットとして視聴している場合に通常持続するよりも、２４フレーム/秒フレームが１つおきに長く持続し、残りのフレームが、元のタイミングが示すよりも幾分短い時間表示され、平均してプログラムの全期間がほぼ正しく生成されるということである。
【０１３２】
具体的には、このプロセスは、２４フレーム/秒で４フレーム時間(間隔１/２４秒が４つ=０.１６６６６６)を提供する。このとき、１０個のビデオのフィールド１０*(１００１/６００００)=１００１０/６００００=０.１６６８３３３３を有する。この２つの値はほぼ等しく、１００１/１０００倍しか違わない。
【０１３３】
しかし問題がある。具体的には、２:３プルダウン形式のビデオを受信し、それがサンプリングされた元の時間に戻したい場合、上述の実施形態の以前にはそれを行うことができなかった。すなわち、サンプルの実際の同報通信時間(各フィールドが異なるタイムスタンプを有する)を認識しようとするのではなく、サンプルの元のタイミング(例えば、同じフレームの個々のフィールドが同じタイムスタンプを有する)を認識したいのである。
【０１３４】
したがって、理想的には、必要なもの、実際には前述の実施形態が供給するものは、各フィールドが異なる時間に送信された場合であっても、フィールドの真のサンプル時間を有し、またはフィールドの真のサンプル時間を確認するのに使用することができる、そのフィールドのそれぞれに関するタイムスタンプである。
【０１３５】
この実施形態は、基本的に不正確な１組の時間間隔(すなわち、ビデオの個々のフィールドの同報通信時間と一致する１組の時間間隔)を示すのではなく、１００１/１０００倍だけわずかに伸びた元のフィルムフレームに関連する時間を各フィールドが表すような、フィールドにタイムコードを付加する方法を提供する。したがって、ビデオ受信機は、物事が互いに相対的に正しい時間でサンプリングされるとき、データをその元の形式に戻す方法を認識することができる。
【０１３６】
このことを行う方法の例として、以下の式と、図６と、以下の例について考慮する。
【０１３７】
t=s+((field_counter+FPF*frame_counter)UPField+offset)/UPS
この場合、UPField=２００２(普通なら計算することになる、各時間の間の中間の時間を表示できる必要があるからである)、UPS=１２００００(２４フレーム/秒と３０フレーム/秒との間の相互作用のため)、およびFPF=２である。
【０１３８】
第１フィールドでは、s=０、field_counter=０、frame_counter=０、およびoffset=Z[０]すなわち０である。したがって、予想されるのは時間t=０である。第２フィールド(第１フィルムフレームの第２フィールド)でも、フィールドが第１フィールドと同時にキャプチャされたので、時間t=０が予想される。この場合、s=０、field_counter=１、frame_counter=０、およびoffset=Z[１]すなわち-２００２である。この値を上記の式で用いると、予想されるように、t=０+((１+２*０*２００２-２００２)/１２００００=０となる。第３フィールド(第２フィルムフレームの第１フィールド)では、時間t=１００１/２４０００が予想され、次のフィルムフレーム内にあることが示される。この場合、s=０、field_counter=０、frame_counter=１、およびoffset=Z[２]すなわち１００１である。この値を上記の等式で用いると、予想されるように、t=０+((０+２*１)*２００２+１００１)/１２００００=３００３/１２００００=１００１/２４０００となる。
【０１３９】
SMPTE非ドロップカウントを用いるNTSCでの毎秒当たり２３.９７６フレーム
毎秒２４０００/１００１(約２３.９７６)フレームに伸びたときの、基礎となるピクチャサンプリングタイミングは、基礎となるSMPTE非ドロップタイムコードとして、以下のように示すことができる。
MaxDays   = １;
CountComp = '０１'; (SMPTEドロップフレームカウント補償)
BaseUPF   = ２００２;
BaseUPS   = １２００００;
BaseFPF   = ２;
Fields    = ０ or １ (フィールドベース);
【０１４０】
５成分配列Z[５]={０,-２００２,１００１,-１００１,-３００３}を定義する。Offsetを、最初に送信するフィールドに関してDrift+Z[０]に設定し、２番目のフィールドに関してDrift+Z[１]、３番目に関してDrift+Z[２]に(これは２番目に送信するピクチャの第１フィールドである)、４番目に関してDrift+Z[３]に、５番目に関してDrift+Z[４]に、６番目に関してDrift+Z[５]に、次いで７番目に関してDrift+Z[０]に、８番目に関してDrift+Z[１]などとなる。ただし、Driftは、上記のC++コードで示したように計算される(すなわち、最初は０であり、次いで、Secondsパラメータの増分が時間的位置での２つのフレームカウントドロップと共に行われるのでなければ、Secondsパラメータが増分するごとに１２０だけ増分される。共に行われる場合、その代わりにDriftが７８８８だけ減分される)。
【０１４１】
効果的には、上述の各実施形態は共に、異なるフォーマット(この場合、毎秒当たり３００００/１００１フレーム)に伸ばされたフレームのタイムスタンプを処理して、これらのフィールドの元の互いの関連を、適切な相対サンプリング時間で、元のタイミングを１００１/１０００倍にわずかに調節して提供することができるような、個々のフィールドをタイムスタンプするための方法を提供する。これらの実施形態によれば、共通フレームを含むフィールドは、その実際の同報通信時間に関連する時間値ではなく、同じサンプリングした時間値に評価される。
【０１４２】
他のタイムコードに対する設計の改良
上述の実施形態は、他のタイムコードを明らかに改善することができる特徴を有する。この特定の例を以下に与える。
【０１４３】
SMPTEタイムコードに対する改良
ビデオ製作業界で広く使用されているタイムコードは、SMPTEタイムコードとして知られており、通常は表３に示すのと同等の方式で表される。SMPTEタイムコードは非常に一般的に使用されているので、SMPTEタイムコードを用いたインターワーキング（interworking）は、ビデオ製作環境で不可欠である。
【０１４４】
【表３】
0004690635.tif 000008
【０１４５】
NTSCvsPALが０である場合、BaseUPF=１００１、BaseUPS=３００００であり、そうでない場合、BaseUPF=１、BaseUPS=２５である。BaseFPFは暗示的に１であるが、SMPTEタイムコードは、実際には典型的にインタレース化スキャンビデオ(１フレーム当たり２つのインタレース化フィールドを有する)と共に使用される。
【０１４６】
SMPTEタイムコードは、真の時間と１:１の対応はなく、したがってSMPTEタイムコードと真の時間との間の変換は、正確に表現することができない。DropFlagフラグは、カウント補償なしと、前述のSMPTEドロップフレームカウント補償との間の選択を示す。
【０１４７】
このタイムコードの欠点は、以下のように列挙される。
・このタイムコードは、真の「ウォールクロック」時間と正確に関係付けられず、正確には知られていない時間(時間的解像度が増加したフレームだけにしか知られていない)にスタートし、このタイムコードが増加するにつれて「ウォールクロック」時間に対する「ドリフト」(「ドロップフレーム」カウントを使用することによって低減されるが、解消はされないドリフト)が累積する。
【０１４８】
・インタレース化ビデオ環境ではインタレース化ビデオに対する単一フィールド時間増分が主に使用されるにもかかわらず、このタイムコードではそれが指定されない。
【０１４９】
・Hours、Minutes、Seconds、Frames、およびDropFlagパラメータのすべてを有するわけではないSMPTEタイムコードが「ウォールクロック」時間に直接変換される場合、容易に、かつあいまいさなしに時間測度をSMPTEタイムコードに戻すことができない。
【０１５０】
・このタイムコードと同等なBaseUPFおよびBaseUPSが可能なのは１対の固定値だけであるので、このタイムコードは、あるフレームレートを正確に表すことができない。
【０１５１】
・このタイムコードは、主に１フレーム当たり２つのインタレース化フィールドを有するビデオに適用されるにもかかわらず、フィールドカウントパラメータの表現を含まない(かつ、このタイムコードのBaseUPSは、各フレームの２つのインタレース化フィールドのタイミングを正確に表すのに十分な時間的正確さを有さない)。
【０１５２】
一方、上述の設計は、SMPTEタイムコードを変更せずにSMPTEタイムコード搬送をすることができると共に、サンプルの時間と真の「ウォールクロック」時間との間の厳密な関係を表すこともできる。上述の設計がSMPTE時間と互換であることにより、上述の設計はビデオ製作業界で広く使用することができ、SMPTEタイムコードを使用することにより生じる時間的なあいまいさも補正される。
【０１５３】
MPEG-２:２０００ N３４３８ Draft Amend.１に対する改良
MPEG-２:２０００ N３４３８ Draft Amendment １[[International Standardization Organization and International Electrotechnical Commission Joint Technical Committee Number １ Working Group Number １１ Moving Picture Experts Group document N３４３８ Video Elementary Stream Supplemental Information:June ２０００]は、表４に示すのと同等なタイムコードフォーマットを含んでいる。
【０１５４】
【表４】
0004690635.tif 000009
【０１５５】
同等なタイムスタンプは以下のように計算される。
t=(６０・(６０・Hours+Minutes)+Seconds+Offset/２７００００００
【０１５６】
このタイムコードに関連する欠点は以下の通りである。
・このタイムコードにはフレームカウンタまたはフィールドカウンタの概念がなく、絶対時間の概念しかない。
【０１５７】
・このタイムコードにはフレーム間隔またはフィールド間隔に関連する時間増分の概念がない。
【０１５８】
・このタイムコードにはフレームカウンタがないので、フレームのドロップフレームカウントを表すことができない。
【０１５９】
・このタイムコードはSMPTEタイムコードを直接搬送することができない。
【０１６０】
・SMPTEタイムコードがこのフォーマットのタイムスタンプに変換される場合、それをSMPTEタイムコードに容易に戻すことができない。
【０１６１】
・このタイムコードと同等なBaseUPS(定数２７００００００)は固定値を有するので、このタイムコードは、あるフレームレートを正確に表すことができない。
【０１６２】
当業者には明らかであろうが、上述の実施形態により、これらの欠点を改善することができる。
【０１６３】
ITU-T H.２６３+フレームタイムに対する改良
H.２６３+[International Telecommunications Union-Telecommunications Standardization Sector、ITU-T Recommendation H.２６３ version ２:１９９８)では、表５に示すのと同等の方式で時間が表される。
【０１６４】
【表５】
0004690635.tif 000010
【０１６５】
同等なタイムスタンプは以下のように計算される。
t=Frames・(ClockDvisor・(１０００+ClockBaseAdd１))/１８０００００
【０１６６】
このタイムコードに関連する欠点は以下の通りである。
・このタイムコードはSMPTEタイムコードを直接搬送しない。
【０１６７】
・SMPTEタイムコードがこのフォーマットのタイムスタンプに変換される場合、それをSMPTEタイムコードに容易に戻すことができない。
【０１６８】
・このタイムコードと同等なBaseUPS(定数１８０００００)は固定値を有するので、このタイムコードは、あるフレームレートを正確に表すことができない。
【０１６９】
・このタイムコードにはフィールドカウンタがなく、したがってフレームをフィールドに分割するためのタイムスタンプを示すことができない。
【０１７０】
当業者は理解するであろうが、上述の本発明の手法により、これらの欠点のうち１つまたは複数を改善することができる。
【０１７１】
MPEG-４ビジュアルVOP時間に対する改良
MPEG-４ビジュアル規格[International Standards Organization and International Electrotechnical Commission、International Standard １４４９６-２:１９９９]では、表６に示すのと同等の方式でタイムコードを表す。
【０１７２】
【表６】
0004690635.tif 000011
【０１７３】
同等なタイムスタンプは以下のように計算される。
t=６０・(６０・Hours+Minutes)+Seconds+AddSec+Offset)/BaseUPS
【０１７４】
FixedRateFlagが１であるとき、サンプルの隣接するあらゆる組のタイムスタンプ間の時間差は、FixedIncrementに等しくなければならない。
【０１７５】
このタイムコードに関連する欠点は以下の通りである。
・FixedRateFlagが０であるとき、このタイムコードにはフレームカウンタの概念がなく、絶対時間の概念しかない。
【０１７６】
・FixedRateFlagが１であるとき、このタイムコードは、スキップされたサンプルを示すことができず、サンプルの各対の間に示される時間量に関して柔軟性がない。
【０１７７】
・このタイムコードではフレームカウントを掛けるためにBaseUPFを使用しないので、１秒の間隔中のサンプルタイムスタンプの位置を表すのに必要なビット数が、(例えばH.２６３+設計とは対照的に)BaseUPFを使用した場合に必要なビット数よりも大きくなる。BaseUPFを代わりに使用した場合、フレーム時間増分を表すのに必要なのは、各サンプルと共に１だけ増分する少数のビットを使用するフレームカウンタまたはフィールドカウンタを有することだけであり、２つの単純な増分により、スキップされたフレームサンプルを示すことができる。
【０１７８】
・このタイムコードには、フレーム間隔に関連する時間増分という概念がない。
【０１７９】
・このタイムコードはフレームカウンタがないので、フレームのドロップフレームカウントを表すことができない。
【０１８０】
・このタイムコードはSMPTEタイムコードを直接搬送することができない。
【０１８１】
・SMPTEタイムコードがこのフォーマットのタイムスタンプに変換される場合、それをSMPTEタイムコードに容易に戻すことができない。
【０１８２】
当業者は理解するであろうが、上述の本発明の手法により、これらの欠点のうち１つまたは複数を改善することができる。
【０１８３】
タイムコードオブジェクト(TCO)ドラフトに対する改良
テレビジョン、オーディオ、およびフィルム製品で使用するためのタイムコードのドラフト仕様に関する「タイムコードオブジェクト」の予備設計が、ビデオ製作業界で配布された[Brooks Harris、Proposed SMPTE Standard S２２.TCOx１-１９９９ November １８、１９９９]。配布された設計はドラフト形式であり、いくつかの誤りが含まれているように思われるが、本質的には表７に示すものと同等であると思われる。
【０１８４】
【表７】
0004690635.tif 000012
【０１８５】
これは、フレームカウンタ、フィールド表示、およびウォールクロック時間の表現を含む。これは、いくつかの特定のサンプリングレートのうちから選択することによるサンプリングレートの指定を用いる。これは、SMPTE「ドロップフレーム」カウントを使用するか、それとも「１０００日補償カウント」と呼ばれる、１０００日の期間に特定のカウントパターンを使用することによってドリフトエラーを低減する特定のカウント方法を使用するかについての標識を含む。この「１０００日補償カウント」は、ドリフト蓄積の計算を使用しない(その代わり、SMPTE １２Mタイムコードの「ドロップフレーム」方法と同様であるが、より複雑な固定カウントパターンを使用する)特定のカウント方法である。これは、うるう日、うるう秒、および時間帯を処理するためのある特定の用意を含む。これは、単位/秒単位の一般のタイムベースに基づいて、フレームベースのタイムコードを真のウォールクロック時間と関係付けるためにフレームベースのタイムコードをオフセットする方法を含まない。これは、「ウォールクロック」日付パラメータおよび時間パラメータを含むが、(サンプリングレートとカスタマイズ可能な関係を有する単位/秒単位ではなく)ネットワークタイムプロトコル(NTP)[Internet Engineering Task Force Request For Comments number １３０５]単位で表される。NTP単位時間では、約２-32秒の固定測度単位を使用し(すなわちそれに等価なBaseUPSは、固定値２32を有する。この数は、３００００や２５などの従来のタイムベースサンプリング単位の整数倍ではない)、したがってこれらの表現では、共通サンプリングレートとは非互換の固定精度を使用し、丸め誤差を含み、サンプリングタイミングには基づかない。これは、時間のSMPTE １２M表現と、タイムコードのNTP時間パラメータで表された時間との間のドリフトのために、常にSMPTE １２Mタイムコードを変更なしで搬送できるわけではない。このタイムコードオブジェクト設計の欠点には、以下のことが含まれる。
【０１８６】
・このタイムコード設計では、選択された特定のサンプリングレートの列挙を使用してサンプリングレートを指定するだけであり、毎秒当たりのBaseUPS単位数および１フレーム当たりのBaseUPF数を使用して、時間の一般的な表現を指定しない。
【０１８７】
・毎秒当たりのカスタム化BaseUPS単位数を使用して、丸め誤差なしにサンプルの真の時間を表すことができない(真の時間は、毎秒当たり固定の増分数を有するNTP単位でのみ表される)。
【０１８８】
・(NTPを使用した)時間の表現と、従来のSMPTE １２Mタイムコードとの間の変換は、明確ではない。SMPTE １２Mタイムコードで見出されるHours、Minutes、およびSecondsパラメータと同じ値に直接対応する表現を含まないからである(そのNTP時間は、従来のSMPTE １２M時間とNTP時間との間のドリフトのために、従来のSMPTE １２Mタイムコードで見出されるHours、Minutes、およびSecondsパラメータの値に直接基づかないからである)。
【０１８９】
・このタイムコード設計は、蓄積したドリフトの直接的計算に基づいて補償をカウントする方法を含まない。その代わりに、特定の「１０００日カウント」を使用してドリフトを低減するための、新しく、複雑で、特別なカウント方法を定義する。
【０１９０】
当業者は理解するであろうが、上述の本発明の手法により、これらの欠点のうち１つまたは複数を改善する。
【０１９１】
カウント補償
別の実施形態によれば、経時的なドリフトをなくするための様々な方法が提供される。第１実施形態を「トップドロップ」カウントと呼び、第２実施形態を「ボトムドロップ」カウントと呼ぶ。
【０１９２】
トップドロップカウント
記載の一実施形態によれば、時、分、秒、およびフレームカウントによって表される時間と、サンプルの真の「ウォールクロック」時間との間のドリフトを計算し、過剰なドリフトを防止するために時々最大フレーム番号をスキップすることによって、メディアサンプルフレームカウント時間表現と、真の「ウォールクロック」時間との間のドリフトを補償する方法が提供される。例えば、蓄積したドリフトがフレームカウント増分で表される時間を超過したときはいつでも、最大フレーム番号をスキップすることができる。
【０１９３】
図８は、１つのトップドロップカウント方法による方法でのステップを記述する流れ図である。この方法は、適切などんなハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実装することができる。図示する例では、この方法はソフトウェアで実装される。
【０１９４】
ステップ８００では、フレームカウント増分に関連する時間値を決定する。メディアサンプルがタイムコード化されるとき、メディアサンプルの各フレームがそれに関連する時間の増分を有する、上記の例を想起されたい。例えば、各フレームカウント増分には、１/２４秒の増分を構成することができる。このステップでは、フレームカウント増分に関連する時間値を決定する。ステップ８０２では、メディアサンプルに関連するタイムコードと、メディアサンプルに関連する真の「ウォールクロック」時間または真のサンプル時間との間の蓄積したドリフトを計算する。ステップ８０４では、蓄積したドリフトがフレームカウント増分で表される時間を超過したとき、最大フレーム番号をスキップする。
【０１９５】
例えば、以下について考慮する。経時的なドリフトをなくするために、(前述の)Framesパラメータは、ある時には０からMaxFPS-１までカウントされ、ある時には０からMaxFPS-２までしかカウントされない(トップカウントを抜かす)。(MaxFPSは上記で定義される)。基本フレームレートが毎秒当たり７.３フレームである場合、ある時には１秒に７フレームカウントされ、ある時には８フレームカウントされる(したがってフレームカウントは、ある時には０から６までカウントされ、ある時には０から７までカウントされることになる)。
【０１９６】
ボトムドロップカウント
記載の一実施形態によれば、時、分、秒、およびフレームカウントによって表される時間と、サンプルの真の「ウォールクロック」時間との間のドリフトを計算し、過剰なドリフトを防止するために時々最大フレーム番号をスキップすることによって、メディアサンプルフレームカウント時間表現と、真の「ウォールクロック」時間との間のドリフトを補償する方法が提供される。例えば、蓄積したドリフトがフレームカウント増分で表される時間を超過したときはいつでも、最小フレーム番号をスキップすることができる。
【０１９７】
図９は、１つのボトムドロップカウント方法による方法でのステップを記述する流れ図である。この方法は、適切などんなハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実施することができる。図示する例では、この方法はソフトウェアで実装される。
【０１９８】
ステップ９００では、フレームカウント増分に関連する時間値を決定する。このステップは、上記のステップ８００と本質的に同じである。ステップ９０２では、メディアサンプルに関連するタイムコードと、メディアサンプルに関連する真の「ウォールクロック」時間または真のサンプル時間との間の蓄積したドリフトを計算する。このステップは、上記のステップ８０２と本質的に同じである。ステップ９０４では、蓄積したドリフトがフレームカウント増分で表される時間を超過したとき、最小フレーム番号をスキップする。
【０１９９】
例えば、以下について考慮する。経時的なドリフトをなくするために、(前述の)Framesパラメータは、ある時には０からMaxFPS-１までカウントされ、ある時には１からMaxFPS-１までしかカウントされない(ボトムカウントを抜かす)。このカウント方法は、上記のトップドロッピング方法と同様であるが、この場合、Framesパラメータの最高値ではなく、Framesパラメータ値０がスキップされる。
【０２００】
結論
上述の様々な実施形態により、メディアサンプルに関連するタイムコードで、「真の時間」に対する正確な基準を提供することができる手段が提供される。これらの実施形態は、既存のタイムコード設計のフィールドを変更を行わずに含め、しかし場合によっては設計の機能を向上させるために１つまたは複数の追加のパラメータを追加することにより、その既存のタイムコードパラダイムと互換性を有することができる。加えて、新しいカウント補償方法の形態で改良を達成することができる。
【０２０１】
本発明を構造的特徴および/または手順に特有の術語で説明したが、頭記の特許請求の範囲で定義される本発明は、説明した特定の特徴またはステップに必ずしも限定されないことを理解されたい。むしろ、この特定の機能およびステップを、特許請求の範囲に記載された本発明を実施する好ましい形態として開示する。
【図面の簡単な説明】
【図１】  秒パラメータおよびフレームパラメータを有する例示的タイムコードカウンタを示す図である。
【図２】  オフセットパラメータ、秒パラメータ、およびフレームパラメータを有する例示的タイムコードカウンタを示す図である。
【図３】  一実施形態による方法でのステップを記述する流れ図である。
【図４】  一実施形態による方法でのステップを記述する流れ図である。
【図５】  フィールドの概念を、メディアサンプルフレームに関するフィールドとして示す図である。
【図６】  フィールドカウンタパラメータ、オフセットパラメータ、秒パラメータ、およびフレームパラメータを有する例示的タイムコードカウンタを示す図である。
【図７】  フィールドの概念を、メディアサンプルフレームに関するフィールドとして２:３プルダウンに関連して示す図である。
【図８】  一実施形態による方法でのステップを記述する流れ図である。
【図９】  一実施形態による方法でのステップを記述する流れ図である。
【図１】
0004690635.tif 000013
【図２】
0004690635.tif 000014
【図３】
0004690635.tif 000015
【図４】
0004690635.tif 000016
【図５】
0004690635.tif 000017
【図６】
0004690635.tif 000018
【図７】
0004690635.tif 000019
【図８】
0004690635.tif 000020
【図９】
0004690635.tif 000021