(57)【要約】【課題】  ビデオや音声などのマルチメディアデータを入力する際に、視覚的に劣化のない正確なタイムスタンプを維持しながら、データ格納ファイルサイズを効率的に縮小することができるデータ生成装置を提供する。【解決手段】  符号化データからタイムスタンプを読み取り、符号化データのフレームレートとタイムスタンプに係る第１のクロック精度とに基づいて、第２のクロック精度を提供するための高精度タイムスケールを計算する。符号化データ内の２フレーム間の前記タイムスタンプの理論的オフセットである第１のオフセットと、高精度タイムスケールにおける２フレーム間の高精度タイムスタンプの理論的オフセットである第２のオフセットを計算し、第１及び第２のオフセットの対応関係に基づいて、符号化データのタイムスタンプを、高精度タイムスタンプに変換し、さらに、この高精度タイムスタンプを用いてタイムスタンプテーブルを生成する。【選択図】  図３
2005223617.tif 000002
【特許請求の範囲】
【請求項１】
符号化データを格納する格納手段と、
前記符号化データからタイムスタンプを読み取るタイムスタンプ読取手段と、
前記符号化データのフレームレートと前記タイムスタンプに係る第１のクロック精度とに基づいて、第２のクロック精度を提供するための高精度タイムスケールを計算するタイムスケール計算手段と、
前記符号化データ内の２フレーム間の前記タイムスタンプの理論的オフセットである第１のオフセットと、前記高精度タイムスケールにおける２フレーム間の高精度タイムスタンプの理論的オフセットである第２のオフセットを計算するオフセット計算手段と、
前記第１及び第２のオフセットの対応関係に基づいて、前記符号化データのタイムスタンプを、前記高精度タイムスタンプに変換するタイムスタンプ変換手段と、
前記高精度タイムスタンプを用いてタイムスタンプテーブルを生成するタイムスタンプテーブル生成手段と、
を備えることを特徴とするデータ生成装置。
【請求項２】
前記高精度タイムスケール計算手段は、前記符号化データのフレームレートと前記第１のクロック精度を提供するための基本タイムスケールとの公倍数を計算することによって、前記高精度タイムスケールを求めることを特徴とする請求項１に記載のデータ生成装置。
【請求項３】
前記高精度タイムスケール計算手段は、前記符号化データのフレームレートと前記第１のクロック精度を提供するための基本タイムスケールとの最小公倍数を計算することを特徴とする請求項２に記載のデータ生成装置。
【請求項４】
前記オフセット計算手段は、前記高精度タイムスケールを前記フレームレートで除算することによって得られた商を前記第２のオフセットとすることを特徴とする請求項1乃至３のいずれか１項に記載のデータ生成装置。
【請求項５】
前記タイムスタンプ変換手段は、前記高精度タイムスケールを前記第１のクロック精度で除算することによって得られた商を前記タイムスタンプに乗ずることによって前記高精度タイムスタンプを得ることを特徴とする請求項１乃至４のいずれか１項に記載のデータ生成装置。
【請求項６】
前記タイムスタンプテーブル生成手段は、さらに、前記タイムスタンプ変換手段によって得られた前記高精度タイムスタンプに関し、連続する２フレーム間の前記高精度タイムスタンプの実際のオフセットである第３のオフセットが所定誤差の範囲内にあるか否かを判定する誤差判定手段を備え、
前記誤差判定手段の判定結果に応じて、前記タイムスタンプテーブルを生成することを特徴とする請求項５に記載のデータ生成装置。
【請求項７】
前記タイムスタンプテーブル生成手段は、前記誤差判定手段により前記第３のオフセットが前記所定誤差の範囲内であると判定されれば、前記計算手段によって計算された前記第２のオフセットを用いて前記タイムスタンプテーブルを生成することを特徴とする請求項５に記載のデータ生成装置。
【請求項８】
前記タイムスタンプテーブル生成手段は、前記誤差判定手段により前記第３のオフセットが前記所定誤差の範囲外であると判定されれば、該当する２フレーム間の高精度タイムスタンプの実際のオフセットである第４のオフセットを計算して、この第４のオフセットを用いて前記タイムスタンプテーブルを生成することを特徴とする請求項６に記載のデータ生成装置。
【請求項９】
前記タイムスタンプ変換手段は、前記符号化データにおける連続する２フレーム間のタイムスタンプの実際のオフセットである第３のオフセットを計算し、前記高精度タイムスケールを前記第１のクロック精度で除算することによって得られた商を、前記第３のオフセットに乗ずることによって、前記高精度タイムスケールにおけるタイムスタンプの実際のオフセットである第４のオフセットを計算することを特徴とする請求項１乃至３のいずれか１項に記載のデータ生成装置。
【請求項１０】
前記タイムスタンプ・テーブル生成手段は、さらに、前記第４のオフセットが所定誤差の範囲に内にあるか否かを判定する誤差判定手段を備え、
前記誤差判定手段の判定結果に応じて、前記タイムスタンプテーブルを生成することを特徴とする請求項９に記載のデータ生成装置。
【請求項１１】
前記タイムスタンプテーブル生成手段は、前記誤差判定手段により前記第４のオフセットが前記所定誤差の範囲内であると判定されれば、前記第２のオフセットを用いて前記タイムスタンプテーブルを生成することを特徴とする請求項１０に記載のデータ生成装置。
【請求項１２】
前記タイムスタンプテーブル生成手段は、前記誤差判定手段により前記第４のオフセットが前記所定誤差の範囲外であると判定されれば、該当する２フレーム間の高精度タイムスタンプの実際のオフセットである第５のオフセットを計算して、この第５のオフセットを用いて前記タイムスタンプテーブルを生成することを特徴とする請求項１１に記載のデータ生成装置。
【請求項１３】
前記誤差判定手段は、前記第１のオフセット及び前記符号化データにおける連続する２フレーム間のタイムスタンプの実際のオフセットとが、前記高精度タイムスケールを前記第１のクロック精度で除算することによって得られた商よりも小さいか否かを判定することを特徴とする請求項６乃至１２のいずれか１項に記載のデータ生成装置。
【請求項１４】
前記誤差判定手段は、前記高精度タイムスケールを前記第１のクロック精度で除算することによって得られた商に加えて、あらかじめ設定された任意の誤差値を加算した値を用いて判定を行うことを特徴とする請求項６乃至１２のいずれか１項に記載のデータ生成装置。
【請求項１５】
前記誤差判定手段は、２フレーム間のタイムスタンプの実際のオフセットが前記所定誤差の範囲外であると判断した場合には、さらに時間的に１つ前のタイムスタンプの実際のオフセットが前記所定誤差範囲内であるか否かを判定し、範囲内であると判定した場合に、前記タイムスタンプテーブル生成手段は、前記範囲外と判定された実際のオフセットと前記第２のオフセットを用いて、前記タイムスタンプテーブルを生成することを特徴とする請求項６乃至１２のいずれか１項に記載のデータ生成装置。
【請求項１６】
前記タイムスケール計算手段は、前記フレームレートが整数では無い場合に、前記フレームレートを整数倍して予め整数化することを特徴とする請求項１乃至１５のいずれか１項に記載のデータ生成装置。
【請求項１７】
前記タイムスケール計算手段は、前記フレームレートが複数存在する場合には、それら複数のフレームレートと前記タイムスタンプに係るクロック精度から前記高精度タイムスケールを計算することを特徴とする請求項１乃至１６のいずれか１項に記載のデータ生成装置。
【請求項１８】
前記タイムスケール計算手段は、複数データを同一ファイル内に格納することを目的として使用され、かつ該同一ファイル内において単一のタイムスケールのデータのみが格納可能である場合に、前記複数データのそれぞれのフレームレートと前記タイムスタンプに係るクロック精度から前記高精度タイムスケールを計算することを特徴とする請求項１７に記載のデータ生成装置。
【請求項１９】
マルチメディアデータを受信するデータ受信手段と、
前記マルチメディアデータを符号化して前記符号化データを生成する符号化データ生成手段とを更に備えることを特徴とする請求項１乃至１８のいずれか１項に記載のデータ生成装置。
【請求項２０】
前記符号化データを格納する形式として、ＭＰ４、３ＧＰＰ及びＭｏｔｉｏｎＪＰＥＧ２０００のいずれかを含むことを特徴とする請求項１９に記載のデータ生成装置。
【請求項２１】
符号化データを格納する格納ステップと、
前記符号化データからタイムスタンプを読み取るタイムスタンプ読取ステップと、
前記符号化データのフレームレートと前記タイムスタンプに係る第１のクロック精度とに基づいて、第２のクロック精度を提供するための高精度タイムスケールを計算するタイムスケール計算ステップと、
前記符号化データ内の２フレーム間の前記タイムスタンプの理論的オフセットである第１のオフセットと、前記高精度タイムスケールにおける２フレーム間の高精度タイムスタンプの理論的オフセットである第２のオフセットを計算するオフセット計算ステップと、
前記第１及び第２のオフセットの対応関係に基づいて、前記符号化データのタイムスタンプを、前記高精度タイムスタンプに変換するタイムスタンプ変換ステップと、
前記高精度タイムスタンプを用いてタイムスタンプテーブルを生成するタイムスタンプテーブル生成ステップと、
を備えることを特徴とするデータ生成方法。
【請求項２２】
符号化データを格納する格納ステップを実行するためのコードと、
前記符号化データからタイムスタンプを読み取るタイムスタンプ読取ステップを実行するためのコードと、
前記符号化データのフレームレートと前記タイムスタンプに係る第１のクロック精度とに基づいて、第２のクロック精度を提供するための高精度タイムスケールを計算するタイムスケール計算ステップを実行するためのコードと、
前記符号化データ内の２フレーム間の前記タイムスタンプの理論的オフセットである第１のオフセットと、前記高精度タイムスケールにおける２フレーム間の高精度タイムスタンプの理論的オフセットである第２のオフセットを計算するオフセット計算ステップを実行するためのコードと、
前記第１及び第２のオフセットの対応関係に基づいて、前記符号化データのタイムスタンプを、前記高精度タイムスタンプに変換するタイムスタンプ変換ステップを実行するためのコードと、
前記高精度タイムスタンプを用いてタイムスタンプテーブルを生成するタイムスタンプテーブル生成ステップを実行するためのコードと、
を備えることを特徴とするプログラム。
【請求項２３】
請求項２２に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時間軸を持ついわゆるマルチメディア・データ、すなわち、音声や動画を含むデータ、あるいは、ＭＰＥＧ−４およびこれと同様の符号化形式によるデータ表現機構を持つ類似のマルチメディア符号化方式（以下、単にＭＰＥＧ−４とする）のデータ生成装置に関するものである。
【背景技術】
【０００２】
近年、デジタル・スチル・カメラやデジタル・ビデオ・カメラ、あるいは携帯電話などの普及により、コンピュータ上で主に利用されてきた所謂マルチメディアが、様々な機器で手軽に利用出来るようになってきた。このようなマルチメディアの普及に伴い、ＩＳＯ／ＩＥＣで標準化がなされているＭＰＥＧ−４をはじめとして、様々な記録形式が利用されている。
【０００３】
たとえば、このＭＰＥＧ−４は、ＩＳＯ／ＩＥＣ１４４９６として標準化がなされているが、一般に巨大になりがちな動画像をより小さな記録形式に圧縮し、通信や記録装置のリソースの制約に対応することも目的のひとつになっている。このため、ＭＰＥＧ−４では、より高品位な圧縮を行うために可変フレームレートの符号化も行えるようになっている。
【０００４】
一方で、こうした符号化にも対応するために、その符号化データを格納するファイル形式はより複雑になってきている。固定フレームレートであれば、各フレームのフレームレートをひとつ記録しておくだけで、すべてのフレームの再生すべき時間を特定することができたが、可変フレームレートの場合には、各フレームの再生すべき時間をすべて記録しなければならないといった事は、その端的な例である。
【０００５】
各フレームの再生すべき時間は、一般的にタイムスタンプと呼ばれるが、もし、このタイムスタンプをすべてファイルなどに記録しようとすれば、現実には多大な記憶領域が消費されることになる。たとえば、マイクロコンピュータにおいて通常利用される１６ビット幅の記憶域をタイムスタンプの記録に使用すると、１ミリ秒を最小とする単位では、高々１分程度までしか記録できない。３２ビット幅の記憶域を使えばこの問題は大きく改善されるが、その代わりに１フレームあたり４バイトの記憶域が必要であるため、１秒あたり３０フレーム程度の画像では、１時間の記録に４３２ＫＢ（キロバイト）を消費してしまう。
【０００６】
このような問題は以前よりよく知られていたため、ＭＰＥＧ−４における標準ファイル形式のＭＰ４においても、フレームとフレームの間の時間差、すなわちタイムスタンプの差違を記録するといった工夫がなされている。タイムスタンプの差違は、特に固定フレームレートである場合には、理論的に一定の値になり、タイムスタンプの差違とともにそれが連続する個数を記録することで大幅に記憶域を削減できる可能性がある。このような手法は、データ圧縮の観点からは連長圧縮（ランレングス圧縮）と呼ばれるものであり、時系列的に圧縮する際には簡単かつ負荷の小さな方法として優れている。
【０００７】
このような手法について、その効果を検討するためには、簡単な例を考えればよい。たとえば、フレームレートが１秒あたり１０フレーム（これを１０ｆｐｓ、または、１０Ｈｚと言う）であって、１ミリ秒の単位でタイムスタンプが得られる場合には、各フレームのタイムスタンプは先頭から順に、０、１００、２００、３００のようになって、タイムスタンプ間の差違は、常に１００である。もし、１０秒のデータであれば全体として１００フレームあるため、その差違の数は９９個となり、９９個のタイムスタンプの差違１００ミリ秒が存在する事を記録すればこれを十分に表現できる。
【０００８】
例として４バイトの記憶域をすべてのデータに適用するならば、すべてのタイムスタンプを記憶するために必要な記憶域は４００バイトであり、一方、連長圧縮の場合には、８バイトに過ぎない。
【０００９】
このように、タイムスタンプの差違を連長圧縮で記録する方法は、可変フレームレートの場合にはすべてのタイムスタンプの差違を確実に記録する一方で、固定フレームレートの場合には、その記憶域を大幅に圧縮することが可能である。
【００１０】
ところで、ＭＰＥＧ−４における標準ファイル形式のＭＰ４をはじめとするいくつかの記録形式では、タイムスタンプの最小単位をタイムスケールという概念で表現する。
【００１１】
タイムスケールはあらかじめ定められた任意の時間単位を任意の数で割ることによって、分割した時間の長さを時間の最小単位とする場合に、その分割数で表すものである。通常はこの任意の時間単位を１秒とし、たとえば、タイムスケールが１０００であることは、１秒を１０００分割して得られる１ミリ秒を最小単位とする事を意味している。
【００１２】
なお、以下では、特にことわりの無い限り、タイムスケールで基準となるこのあらかじめ定められた任意の時間単位を簡単のため、一般的な１秒と仮定する。また、タイムスタンプ間の差違をタイムスタンプのオフセットという表現で表す場合がある。
【００１３】
このタイムスケールの概念を利用する場合、タイムスタンプやタイムスタンプの差違は、このタイムスケールによって表現される。タイムスケールが１０００であって、かつ、タイムスタンプの差違が１００であれば、１ミリ秒を最小単位とするタイムスタンプの差違は、１００ミリ秒を意味する。一方で、タイムスケールが半分の５００であれば、１秒を５００分割して得られる２ミリ秒を最小単位とすることになる。よって、タイムスタンプの差違が１００であれば、２ミリ秒を最小単位とするタイムスタンプの差違は、２００ミリ秒を意味する。
【００１４】
こうした工夫によって、任意の時間の単位をタイムスタンプなどの記述に使用する事が可能になり、より柔軟で高精度な記録が行えるようになっている。
最も単純な例は、フレームレートが１０ｆｐｓである場合に、タイムスケールを１０とするような場合である。すなわち、１秒間に１０フレームのデータがある場合、１秒を１０分割した時間単位で記録することにより、タイムスタンプの差違は１であるとすることができる。この事は、理想的には極めて正確なタイムスタンプの記録を行える事を意味している。
【００１５】
さて、上述した可変フレームレートに対応したタイムスタンプの記録形式ではあるが、特に可変フレームレートの場合には、依然としてタイムスタンプの記録が符号化データに依存して大きくなってしまうという問題が残されている。タイムスタンプ間の差違（タイムスタンプのオフセット）は、符号化データによって変化するため、たまたまタイムスタンプ間の差違（タイムスタンプのオフセット）が連続して同じで無い場合には、連長圧縮の効果が現れないためである。
【００１６】
このような問題に対応するために、たとえば、特開２００２−２３８０５０号公報では、一定のタイムスタンプがあたかも発生しているかのように空のフレームを挿入する方法などが提案されている。この方法は、言うなれば、可変フレームレートの符号化データを固定フレームレートでの論理的なタイムスタンプで表現しようとする、可変フレームレートから固定フレームレートへの変換機構を備えたデータ生成装置である。
固定フレームレートに変換することによって発生する、実際にはフレームの存在しないタイムスタンプは、非更新を示す情報を有する符号化データとして符号化データを格納することにより、有意なタイムスタンプとして利用出来る。或いはまた、サイズ０のフレームとして記録されるよう制御することにより、あたかも固定フレームレートであるかのように振る舞うことが出来ることになる。
【００１７】
また、特開２００３-１４３５５０によれば、固定フレームレートであっても、オペレーティング・システム（ＯＳ）またはクロック（時計）装置の精度などによっては、必ずしも正確なタイムスタンプを付与できない場合への対策として、隣り合うフレーム間のタイムスタンプの差異が一定の誤差の範囲にある場合に、これを論理的なタイムスタンプと置き換える方法がある。
【００１８】
上述したように、従来の技術によれば、様々な工夫によって、可変フレームレートやクロック（時計）装置の誤差にも対応しながらより小さな記憶域でのタイムスタンプの格納を伴う記録が可能となるという長所がある。
【特許文献１】特開２００２−２３８０５０号公報
【特許文献２】特開２００３-１４３５５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、依然として一般的に使われる固定フレームレートであっても、実際に発生するタイムスタンプの精度と論理的なタイムスタンプの精度によっては、必ずしもタイムスタンプ間の差違（タイムスタンプのオフセット）が一定ではない場合があり、そのような場合には、連長圧縮の効果が十分に現れないという問題がある。
【００２０】
具体的に説明すると、たとえば、あらかじめ１５ｆｐｓとして設定したフレームレートで各フレームを生成する場合、フレームのタイムスタンプは、これを生成するオペレーティング・システム（ＯＳ）またはクロック（時計）装置の精度によって、必ずしも正確ではない。たとえば、オペレーティング・システム（ＯＳ）またはクロック（時計）装置が処理する時間単位によるタイムスケール（これを便宜上、システム・タイムスケールと呼ぶものとする）が、１０００、すなわち１ミリ秒である場合、１秒間に１５フレームが処理されることから、タイムスタンプは、１０００ミリ秒を１５で割った値である約６６．７ミリ秒毎に発生する。この約６６．７ミリ秒はシステム・タイムスケールの精度より高い精度を必要とする。タイムスタンプがフレームデータの取り込みタイミングで生成されるにせよ、フレームデータの符号化時に計算で求められるにせよ、この約６６．７ミリ秒が基準となるならば、タイムスタンプの整数化過程において、誤差が発生することは明らかである。
【００２１】
この様な誤差は、従来の技術で説明したように、この例に従って言えば、タイムスケールをフレームレートに等しい値である１５にする事によって解決されるが、一方で、タイムスタンプを発生させる手段が、システム・タイムスケールで処理される場合には不都合である。
【００２２】
このように、従来手法によれば、ＭＰ４のような連長圧縮によるタイムスタンプの格納方式においては、タイムスタンプの精度によっては、タイムスタンプの格納テーブルが肥大化して、格納効率が低下してしまうという問題がある。
また、特に実時間でファイルに順次フレームを書き出すといった処理においては、一時記憶メモリーに格納されるタイムスタンプの格納テーブルが肥大化すると、小さなメモリーしか持たない制約のあるデバイスでは、そのメモリー使用量も肥大化してしまうという問題も発生する。結果として、あらかじめ予想できない一時記憶メモリーの肥大化は、処理機器自体の予期しないメモリーの圧迫を招く可能性があり、重大な処理異常を誘発する事も起こりうる。
【００２３】
本発明は、かかる問題点を解消するためになされたもので、ビデオや音声などのマルチメディアデータを入力する際に、視覚的に劣化のない正確なタイムスタンプを維持しながら、データ格納ファイルサイズを効率的に縮小することができるデータ生成装置を提供することを目的とするものである。
【課題を解決するための手段】
【００２４】
以上の課題を解決するために、本発明によるデータ生成装置は、符号化データを格納する格納手段と、前記符号化データからタイムスタンプを読み取るタイムスタンプ読取手段と、前記符号化データのフレームレートと前記タイムスタンプに係る第１のクロック精度とに基づいて、第２のクロック精度を提供するための高精度タイムスケールを計算するタイムスケール計算手段と、前記符号化データ内の２フレーム間の前記タイムスタンプの理論的オフセットである第１のオフセットと、前記高精度タイムスケールにおける２フレーム間の高精度タイムスタンプの理論的オフセットである第２のオフセットを計算するオフセット計算手段と、前記第１及び第２のオフセットの対応関係に基づいて、前記符号化データのタイムスタンプを、前記高精度タイムスタンプに変換するタイムスタンプ変換手段と、前記高精度タイムスタンプを用いてタイムスタンプテーブルを生成するタイムスタンプテーブル生成手段と、を備えることを特徴とする。
【００２５】
さらなる本発明の特徴は、以下に説明する各実施形態及び添付図面によって明らかにされる。
【発明の効果】
【００２６】
本発明によれば、論理的に誤差の発生しない高精度なタイムスタンプを生成する事が可能になり、視覚的に劣化のない正確なタイムスタンプを維持しながらタイムスタンプの格納テーブルの格納効率を向上させることができ、格納ファイルのファイルサイズを効率的に縮小することができる。
【００２７】
また、このことにより結果として、小さなメモリーしか持たない制約のあるデバイスにおいても、メモリー圧迫による重大な処理異常を誘発する可能性を小さくすることが可能となる。
【発明を実施するための最良の形態】
【００２８】
＜第１の実施形態＞
以下、本発明に係る第１の実施形態について、図１〜図６を用いて説明する。
はじめに、実施の形態に好適な動画・音声の記録を行うマルチメディア・データ多重化装置の一例について説明をおこなう。図１は、このようなマルチメディア・データ多重化装置の概略を示すブロック図の例である。
【００２９】
ブロック図に示すマルチメディア・データ多重化装置は、撮影装置１０１、Ａ／Ｄ変換装置１０２、撮像処理装置（エンコーダ）１０３、クロック（時計）装置１０４、ＣＰＵ１０５、データ変換装置１０６、一時記憶装置（メモリ）１０７、メモリ・バスコントローラ装置１０８、記録媒体Ｉ／Ｆ装置１０９、記録媒体１１０から構成されている。
このマルチメディア・データ多重化装置によれば、一般的に撮影レンズやシャッタ、撮像装置などによる撮影装置１０１で撮影した画像を、Ａ／Ｄ変換装置１０２によりアナログ・デジタル変換することによって得られたデジタル画像を適切に処理することによって、マルチメディア・データの多重化をおこなったマルチメディア・データとして、記録することができる。
【００３０】
Ａ／Ｄ変換装置１０２でデジタル化された画像データは、ＣＰＵ１０５からの適切な制御により、撮像処理装置（エンコーダ）１０３において、例えばＭＰＥＧ−４のビデオ符号化処理を行って、本発明になるデータ変換装置１０６に順次受け渡されていく。この時の時間的制御は、クロック（時計）装置１０４によって発生される計時信号によってそのタイミングが決定され、マルチメディア・データには所謂タイムスタンプが付与される。
【００３１】
この時に撮像処理装置（エンコーダ）１０３が処理するフレームの１秒あたりの枚数がフレームレートである。
【００３２】
メモリ・バスコントローラ装置１０８により制御される一時記憶装置（メモリ）１０７は、符号化データの一部を一時的に保管することに使われるだけでなく、本発明の処理に使用されるタイムスタンプ・テーブルの一時記憶などにも利用される。また、符号化処理などをおこなって、マルチメディア・データの多重化の処理による結果をデータファイルとして書き出す際にも同様に、メモリ・バスコントローラ装置１０８により制御される記録媒体Ｉ／Ｆ装置１０９を介し、記録媒体１１０に記録される。
【００３３】
本発明の本質は、このブロック図におけるデータ変換装置１０６にある。
【００３４】
なお、図１に示すマルチメディア・データ多重化装置のブロック図は、デジタルカメラのようなレンズをもった撮影装置を有する例として記述しているが、たとえばビデオ・レコーダのような据え置きの記録装置のようなものであってもよい。また、デジタルカメラであっても、本ブロック図においては、説明上必要のない操作部やメカ駆動部といった関連部位を省略している。
【００３５】
次に、このようなマルチメディア・データ多重化装置により、特に動画像を記録する場合を使って、詳細な説明を行う。
【００３６】
一般に、動画像のフレームレートが動的に変化しない所謂固定フレームレートで動画像が生成される場合、当該フレームレートはあらかじめ設定済みであって、記録装置はこれを知ることが出来ると仮定してよい。
【００３７】
ここでは、説明のために便宜上、本記録装置が動作するオペレーティング・システム（ＯＳ）またはクロック（時計）装置が処理するタイムスケールを１０００とする。このような装置上のタイムスケールをここではシステム・タイムスケールと呼ぶものとする。
なお、従来技術の説明において述べた通り、タイムスケールで基準となるあらかじめ定められた任意の時間単位を一般的な１秒と仮定している。
【００３８】
ここで説明する実施の形態では、最初に、このフレームレートとシステム・タイムスケールの最小公倍数を計算することにより、実際の最小の時間単位とは異なる高精度なシステム・タイムスケールを求める。この計算された高精度なシステム・タイムスケールは、場合によっては実際のシステム・タイムスケールより小さな時間単位を与えることがある。こうしたことの詳細については順次説明していく。
【００３９】
最小公倍数の計算は、どのような方法を用いてもよいが、たとえば一般的によく知られた方法として、ユークリッドの互除法により最大公約数を求めてから最小公倍数を計算する方法がある。ユークリッドの互除法は、広く知られたアルゴリズムであるのでここでは特に詳細な説明を省略するが、簡単に言うならば、２数の剰余をもとめ、その結果を再帰的に計算して０になるまで繰り返すことによって最大公約数を得る事ができる。最小公倍数は、２数の積をこの最大公約数で割った結果である。
【００４０】
より具体的な実例を挙げて説明する。たとえば、フレームレートが１５フレーム／秒（ｆｐｓ）であった場合、システム・タイムスケールが１０００であるので、その最小公倍数は３０００となる。この３０００が計算された高精度なシステム・タイムスケールであり、以降、高精度システム・タイムスケールと呼ぶ。
【００４１】
実際には、この高精度システム・タイムスケールは必ずしもこの最小公倍数ではなく、その整数倍であっても本発明は有効に動作する。この点については、あとに述べるように、本発明の本質から明らかである。
【００４２】
また、もし、最小公倍数がフレームレートまたはシステム・タイムスケールと同じであるならば、フレームレートまたはシステム・タイムスケールをそのまま利用する事が出来る。これについては、後述する。
【００４３】
次に、この高精度システム・タイムスケールから、動画像の各フレームのタイムスタンプ間の理論的なタイムスタンプ・オフセット値（差違）を計算する。すなわち、フレームとフレームの間の時間差をタイムスケールを使って表現した値である。
【００４４】
もし、システム・タイムスケールとフレームレートから直接計算するならば、システム・タイムスケールが１０００、フレームレートが１５であるので、理論的なスタンプ・オフセットは１０００÷１５から約６６．７と計算される。システム・タイムスケールの値１０００は、時間の最小単位が１ミリ秒である事を意味するので、約６６．７ミリ秒に相当している。
【００４５】
一方で、高精度システム・タイムスケールは、最小公倍数から３０００と計算されているので、この場合のタイムスタンプ・オフセット値（差違）は、３０００÷１５から２００と計算される。
【００４６】
計算された２００という数字は、高精度システム・タイムスケールが３０００であるため、実時間に換算すれば、約６６．７ミリ秒に相当していることに注意が必要である。
このタイムスタンプ・オフセットを模式的に図２に示した。
【００４７】
図２の中央に立体的に図示した矩形フレーム２０１は、動画像の各フレーム（サンプル）を模式的に示したものである。各フレームは、フレームレート２０２が１５ｆｐｓで順番に並んでいる。各フレーム２０１の上には、元のシステム・タイムスケール２０３が時間軸とともに図示されており、下には高精度システム・タイムスケール２０４が時間軸とともに図示されている。
【００４８】
上で説明したように、元のタイムスタンプのオフセット値（差違）２０５は、元のシステム・タイムスケール２０３によって表現されるフレームとフレームの間の時間であり、約６６．７である。また、理論的なタイムスタンプのオフセット値（差違）２０６は、高精度システム・タイムスケール２０４によって表現されるフレームとフレームの間の時間であり、２００である。
【００４９】
元のタイムスタンプのオフセット値（差違）２０５と理論的なタイムスタンプのオフセット値（差違）２０６は、値こそ違っているが、論理的には全く同等のものを示している事がわかる。
【００５０】
ここまでの計算で、高精度システム・タイムスケールの値３０００と、これによる理論的なタイムスタンプ・オフセット値（差違）として２００単位が得られた。
高精度システム・タイムスケールの実際のシステム・タイムスケールに対する精度の倍率は、３０００÷１０００で３倍である。
【００５１】
次に誤差率を計算する。オペレーティング・システム（ＯＳ）またはクロック（時計）装置が処理する時刻は、システム・タイムスケールに従って、最大１ミリ秒の誤差を含んでいる。
【００５２】
このような誤差は、たとえば、動画像の各フレーム（サンプルと呼ばれる事もある）を生成するエンコーダモジュールが、絶対的なフレームレートで動作しようとするために発生する時間の最小単位以下の端数を切り捨てたり、或いは四捨五入したりするといったことによって発生する。
【００５３】
他にも様々な要因が考えられるが、少なくとも誤差の最小単位はシステム・タイムスケールの最小単位と同等以上であり、高精度システム・タイムスケールにおいては、その倍率から、３単位（３×最小単位）以上となることは明らかである。
【００５４】
通常、各フレーム（サンプル）に付与されるタイムスタンプは、システム・タイムスケールによる最小の時間単位で与えられるため、それが、エンコーダがこれを参照して付与するにせよ、出力された結果に論理的に与えられるにせよ、タイムスタンプは一定の誤差を含むと考えられる。たとえば、時刻を最小単位以下の精度で切り捨てるならば、タイムスタンプは、０ミリ秒、６６ミリ秒、１３２ミリ秒、１９９ミリ秒、２６６ミリ秒といった具合に設定される。
【００５５】
明らかに、実際に取得されたタイムスタンプのオフセット値（差違）は、６６ミリ秒、６６ミリ秒、６７ミリ秒、６７ミリ秒のように一定の値とはならない。こうしてえられたオフセット値（差違）を動画像データの記録用として使用するならば、オフセット値を格納するヘッダ領域は自ずと大きくなってしまうことは、自ずと明らかである。
【００５６】
同様に、高精度システム・タイムスケールの倍率を使用してタイムスタンプのオフセットを高精度システム・タイムスケールに換算すると、これらは順に、１９８、１９８、２０１、２０１となって、なお誤差を含んでいる。
【００５７】
本発明においては、この高精度システム・タイムスケールで与えられたタイムスタンプのオフセット値（差違）が、先に計算した誤差（３単位）以内であれば、同様に先に計算した論理的なタイムスタンプ・オフセット値（差違）である２００単位を常に使用する。
【００５８】
このことは、一見、高精度システム・タイムスケールであっても元のシステム・タイムスケールであっても等価であるように見えるが、実際には、元のシステム・タイムスケールでは理論的なタイムスタンプのオフセット値（差違）が、最小の時刻以下の精度を要求するため、これを使用することができない。
【００５９】
以上のように、本発明を利用することにより、常にタイムスタンプのオフセット値（差違）を一定に設定することが可能となる。
【００６０】
なお、実際に発生するタイムスタンプから高精度システム・タイムスケールに換算されたタイムスタンプのオフセット値（差違）を計算するにあたっては、タイムスタンプを高精度システム・タイムスケールに換算してからオフセット値（差違）を計算しても結果が等価であることは、数学的にも明らかである。
【００６１】
また、ここではアルゴリズムを順次説明しているが、計算上の丸め誤差を最小にするために、計算の順序や値を記憶する形式に工夫してもアルゴリズムの基本的な考え方に差違はない。
【００６２】
ここで、実際にこのように処理された結果としてのタイムスタンプのオフセットを、ＭＰＥＧ−４の標準ファイル・フォーマットである所謂ＭＰ４形式に適用した例を説明する。
【００６３】
従来の技術でも説明したように、ＩＳＯ／ＩＥＣ１４４９６で与えられるＭＰＥＧ−４の標準規格によれば、実際にここで例示した動画像データなどのタイムスタンプは、どの動画像データを格納するトラックと呼ばれる単位毎に、次のような定義でファイル格納される。
【００６４】
【数１】
2005223617.tif 000003
【００６５】
このデータ構造は、格納されるタイムスタンプのオフセットのテーブルの要素数を示す「entry-count」と、その要素数だけ用意されるテーブルの要素が示すフレーム（サンプル）数「sample-count」とタイムスタンプのオフセット値（差違）「sample-delta」で構成される。
このデータ構造をより明確にするために、図３にタイムスタンプの格納形式をＭＰＥＧ−４の標準規格である所謂ＭＰ４を例として模式的に示した。
【００６６】
これまで例示してきた場合で説明するならば、元のシステム・タイムスケール２０３で与えられたタイムスタンプのオフセット値（差違）、すなわち、６６ミリ秒、６６ミリ秒、６７ミリ秒、６７ミリ秒を格納するデータ構造は、図３に示す元のシステム・タイムスケールによるテーブル３０１のようなものになる。要素数３０２の値は、３であり、最初の要素では、フレーム数３０３が２でオフセット値（差違）３０４が６６となっている。２番目の要素では、同様に３と６７が設定されている。３番目の要素では、１と６６が設定されている。
【００６７】
一方で、高精度システム・タイムスケール２０４による場合、テーブル３０５のようにテーブルの要素数３０６は１であり、フレーム数３０７がｎ、オフセット値（差違）３０８が２００となって、明らかにテーブルサイズを小さくすることが出来ている。例えば、フレームレートが１５ｆｐｓである場合には、ｎ＝１４となる。
【００６８】
この例は、対象とするフレーム数が少ないため、絶対的な大きさに差違はほとんどないが、周期的に発生するであろうタイムスタンプの誤差のため、フレーム数が多くなればなるほど使用領域を圧縮する効果が大きくなることは、明らかである。
【００６９】
この圧縮効果は、ファイルサイズに影響を与えるのみならず、使用するメモリーサイズを圧縮する事においても効果がある。すべてのデータの出力が終わるまで、プログラムはこの値を保持していなければファイルにこのテーブル自体を書き出す事ができないからである。
【００７０】
なお、高精度システム・タイムスケールもＭＰ４ファイル上に格納しなければ、後から実際のタイムスタンプを導出することはできないが、この様な値を格納する場所として、トラック毎に「Media Header Atom」が定義されている。
【００７１】
一度ＭＰ４ファイルに格納されたデータを読み出す側は、まず、この「Media Header Atom」からタイムスケールを取得し、順次タイムスタンプのオフセット値（差違）をタイムスケールから実時間に変換して取り出すことによって、正しい値を取り出すことが出来る。このようなデータの取り出しかたはＩＳＯ／ＩＥＣ１４４９６で規格化されているものであって、本発明の本質ではないため、説明を省略する。
【００７２】
さて、最小公倍数がフレームレートまたはシステム・タイムスケールと同じ場合については、ここまで説明してこなかったが、先に説明したようにフレームレートまたはシステム・タイムスケールを高精度・システム・タイムスケールに設定してもよい。
【００７３】
このような例として、システム・タイムスケールが１ミリ秒であり、かつ、フレームレートが１０ｆｐｓであるような場合がある。このような場合は、最小公倍数がたまたまシステム・タイムスケールなどと一致した場合であって、特に本発明と矛盾しない。
【００７４】
しかしながら、もし、最小公倍数がフレームレートまたはシステム・タイムスケールと同じ場合で、かつ、その様な場合にタイムスタンプが誤差を持つことなく提供されることが明らかな場合には、ここで説明するアルゴリズムによらず、高精度システム・タイムスケールをフレームレートの値とし、タイムスタンプのオフセット値（差違）を１としてもよい。
【００７５】
この様な例として、タイムスタンプが常に計算値によって論理的に与えられるようなシステムが存在する。
【００７６】
次に、その他の誤差要素についての付加的な説明をおこなう。ここまでの例で、システム・タイムスケールの誤差を仮に１ミリ秒として説明してきたが、実際の装置においては、エンコーダの処理誤差など本発明の本質には直接の関係のない誤差要素が含まれる可能性がある。
【００７７】
もし、そのような誤差があれば、システム・タイムスケールの誤差に加えてそのような外部に起因する誤差パラメータを加味してもよい。
【００７８】
さらに、固定のフレームレートであっても例外的に発生するタイムスタンプ値があった場合、これを高精度システム・タイムスケールに換算して設定する事により、正確なタイムスタンプとして格納する事はもちろん可能である。このような計算は、単純に計算されたタイムスタンプのオフセット値（差違）が誤差の範囲になければそのままの値を使用する事で対処できる。
【００７９】
さらに、本発明においては、本発明の記録装置が必要であるならば、例外が発生したタイムスタンプの次のタイムスタンプが、例外が発生したタイムスタンプのひとつ前のタイムスタンプとのオフセット値（差違）において誤差の範囲内である場合、計算しようとしているオフセット値を理論値としてのオフセット値から例外が発生したオフセット値をひいた値とすることで、誤差をより少なくする事が可能である。
【００８０】
このような例外を含む実際の例を図４に示す。図４は、あるエンコーダ・アプリケーションを例として、これが出力するタイムスタンプと高精度システム・タイムスケールによるタイムスタンプを表形式で示した図である。
【００８１】
この図では、左端に実際のタイムスタンプ４０１を時系列で並べている。実際のタイムスタンプ４０１は、２カラム目に示した実際に得られるタイムスタンプ４０２とは必ずしも一致せず、論理的なものである。これは、システム・タイムスケールが示す時間の最小単位より詳細な時刻であるため、現実には物理的に得られるものではない。ＯＳなどが提供する時刻の最小単位のため、現実には、得られるタイムスタンプ４０２のように、たとえば切り捨てが発生した値として取り扱われる。
【００８２】
３つ目のカラムは、ＩＳＯ／ＩＥＣ１４４９６で与えられるＭＰＥＧ−４の標準規格で用いられるようなタイムスタンプのオフセット値（差違）４０３であり、得られるタイムスタンプ４０２のタイムスタンプ間の差違を表現する。すなわち、図３におけるオフセット値（差違）３０４と同等のものである。
【００８３】
４つ目のカラムは、高精度システム・タイムスケールで換算された高精度なタイムスタンプのオフセット４０４を示す。前に説明したように、この値は一定の誤差の範囲であれば、タイムスタンプのオフセット値（差違）の理論値に置き換えられるため、ほとんどの値が２００となっている。
【００８４】
右の２つのカラムは、高精度なタイムスタンプのオフセット４０４の積算として得られる高精度なタイムスタンプ４０５とこの値から導かれる再生時のタイムスタンプ４０６である。再生時のタイムスタンプ４０６は、読み出される時に計算されるものであって、読み出しを行うアプリケーションのシステム・タイムスケールが同様に１００００であると仮定した場合の例として、小数点以下第２位で四捨五入した参考値となっている。
【００８５】
さて、図中に斜体字で強調している部分が、例外が発生している部分である。この部分で、得られるタイムスタンプ４０２がフレームレート２０２の値である１５ｆｐｓと合致していない。高精度なタイムスタンプのオフセット４０４の値にも明らかなように、誤差の範囲を超えたため、タイムスタンプのオフセット値（差違）の理論値である２００は設定されない。
【００８６】
しかしながら、すぐ下のタイムスタンプは、再び正しい値を示している。このような場合には、ひとつ上のタイムスタンプとの比較を行って、これがタイムスタンプのオフセット値（差違）の理論値との誤差の範囲であるため、タイムスタンプのオフセット値（差違）の理論値である２００から例外の発生している部分のオフセット値を差し引いた値として６５が設定されている。
【００８７】
結果として、この図全体の高精度なタイムスタンプ４０５は、例外を含むすべての値について、実際のタイムスタンプ４０１を忠実に再現するものとなっている。
最後に、これまで説明してきた本発明によるアルゴリズムについて、フローチャートを使って説明する。
【００８８】
図５と図６は、これまで説明してきたアルゴリズムをフローチャートにより記述したものである。実際には、先にも説明したように計算上の丸め誤差や速度に配慮して、計算の順序をアルゴリズムの考え方の範囲内で変更し得るものであるが、ここでは、最もわかりやすいと思われる記述順序で記載している。
【００８９】
図５は、実際に動画・音声の記録を行うにあたって、その前段部分として行う様々なパラメータ類の準備を行う部分である。後段のタイムスタンプを含むフレーム（サンプル）の記録部分については、ページ結合子「Ａ」により、図６に示した。
【００９０】
ステップＳ５０１：最初に、本アルゴリズムにおいて必要な初期情報、システム・タイムスケール２０３とフレームレート２０２を取得する。先に説明したように、たとえば、システム・タイムスケールは１０００であり、フレームレートは１５である。本フローチャートに於いては、読みやすさのために、システム・タイムスケールをＳＴＳ、フレームレートをＦＰＳという記号で示している。
【００９１】
ステップＳ５０２：取得したシステム・タイムスケール２０３とフレームレート２０２より、最小公倍数５０１を計算する。最小公倍数の計算には、ユークリッドの互除法などが利用できる。また、結果として最小公倍数を整数倍した値であってもよい。ここでも読みやすさのために、最小公倍数をＬＣＭという記号で示している。
ステップＳ５０３：得られた最小公倍数５０１が、システム・タイムスケール２０３またはフレームレート２０２と一致し、かつ、実際に取得されるフレーム（サンプル）がフレームレート２０２に従って正確なタイムスタンプを伴うことがあらかじめ分かっている場合（Ｙｅｓ）、ステップＳ５０４に進む。そうでない場合には、ステップＳ５０６に進む。
【００９２】
ステップＳ５０４：ステップＳ５０３で条件がＹｅｓであった場合、高精度システム・タイムスケールをフレームレート２０２に設定する。
【００９３】
ステップＳ５０５：続いて、タイムスタンプのオフセット値（差違）を１に設定する。
【００９４】
ステップＳ５０６：ステップＳ５０３で条件がＮｏであった場合、高精度システム・タイムスケールを計算された最小公倍数５０１に設定する。
【００９５】
ステップＳ５０７：続いて、タイムスタンプのオフセット値（差違）を理論値として計算する。この値はフレームとフレームの間の時間差を高精度システム・タイムスケールを使って表現したものであるので、上のステップＳ５０６で設定された高精度システム・タイムスケールをフレームレート２０２で割って得られた結果となる。
【００９６】
ステップＳ５０８：さらに、高精度システム・タイムスケールによる誤差を計算する。誤差は、最小であっても元のシステム・タイムスケール２０３における１単位であるので、高精度システム・タイムスケール２０４を元のシステム・タイムスケール２０３で割った商として得られる。もし、ここで、あらかじめ分かっている外部設定誤差率５０２があれば、これを加える。
【００９７】
ステップＳ５０９：ここで、本アルゴリズムによって計算されたパラメータ類として、高精度システム・タイムスケール２０４とタイムスタンプのオフセット値（差違）２０６と誤差５０３を保管する。ステップＳ５０３の条件により、誤差が計算されなかった場合には、誤差５０３として０を保管してもよい。この値は後段の処理で不要であれば使用されない。
【００９８】
次に図６について説明する。図６は、図５に続く後段のタイムスタンプを含むフレーム（サンプル）の記録部分を説明するフローチャートである。ここでは、それぞれのフレーム（サンプル）データを順次取得しながら、本発明のアルゴリズムに従って、ＩＳＯ／ＩＥＣ１４４９６で与えられるＭＰＥＧ−４の標準規格のようなタイムスタンプの格納形式でテーブル６０３を出力している。テーブル６０３は、図３で示したテーブル３０５に相当するメモリー上の表現である。もちろん、ここでは便宜上メモリー上と言う表現を用いているが、実際には中間ファイルなどの外部記憶装置上に存在するものであってもよい。
【００９９】
ステップＳ６０１：最初に、それぞれのフレームのタイムスタンプ６０１とフレームデータ６０２を取得する。フレームデータ６０２は、本発明の本質には直接関係がないが、一般的なアプリケーションの一形態として、参考に示した。
【０１００】
ステップＳ６０２：フレームの終わりであるかどうかを判断する。もし、ステップＳ６０１で入力が無ければ、ステップＳ６１０の終了処理に移行する。
【０１０１】
ステップＳ６０３：もし、逆に第１フレーム、すなわち、はじめてフレームを取得したのであれば、ステップＳ６０４に移行する。そうでなければ、ステップＳ６０５に移行する。
【０１０２】
ステップＳ６０４：第１フレームであった場合、タイムスタンプのオフセットを計算する対象が存在しないため、得たタイムスタンプ６０１を一時記憶域に保管して、再びステップＳ６０１のフレームの取得に戻る。
【０１０３】
ステップＳ６０５：すでに前のタイムスタンプが取得済みである場合、今回のタイムスタンプから前回のタイムスタンプを差し引いて、タイムスタンプのオフセット値を計算する。この時、図５のフローチャートで計算済みの高精度システム・タイムスケールに合わせてオフセット値は変換される。ここではフローチャートを単純化するために、そのような詳細は略しているが、この部分の処理は、前に詳しく説明した通りである。
【０１０４】
ステップＳ６０６：ステップＳ６０５で計算された高精度システム・タイムスケールに換算された高精度なタイムスタンプのオフセット値と、図５のフローチャートで計算済みのタイムスタンプのオフセット値（差違）２０６の差違を計算し、これが図５のフローチャートで計算済みの誤差５０３の範囲を超えているかどうかを判断する。もし、誤差より大きければステップＳ６０７に移行し、そうでなければ、ステップＳ６０８に移行する。
【０１０５】
ステップＳ６０７：オフセット値を再計算する。フローチャートを単純化するためにこの処理を定義済み処理として記述しているが、この処理は、図４を用いて説明した例外処理である。ここでは説明が重複するため省略する。
【０１０６】
ステップＳ６０８：誤差の範囲内であれば、ここで、計算されたタイムスタンプのオフセット値（差違）を図５のフローチャートで計算済みのタイムスタンプのオフセット値（差違）２０６に置き換える。
【０１０７】
ステップＳ６０９：各フレームの処理の最後に、結果として得られたタイムスタンプのオフセット値（差違）をテーブル６０３に格納する。言うまでもなく、タイムスタンプのオフセット値（差違）がテーブル６０３の最後の要素と同じ値であれば、最後の要素のフレーム数をひとつ増やすだけの処理である。
【０１０８】
ステップＳ６１０：ここでは象徴的に終了処理を示しているが、具体的には、たとえばテーブル６０３のデータを最終的なファイルに格納するといった処理となる。
【０１０９】
以上、説明してきたように、本発明をタイムスタンプを含むエンコーダ出力結果の格納アプリケーションなどに適用した場合、タイムスタンプの精度を損なうことなくタイムスタンプの記憶領域を小さくすることが出来る事が明らかである。
【０１１０】
＜第２の実施形態＞
ここまで説明してきた実施例においては、与えられるフレームレートは、整数であることを仮定してきた。しかしながら、たとえばフレームレートが７．５フレーム／秒であるといったケースは、ありえない事ではない。この様な場合でも、本発明は、わずかな前処理により、容易に適用可能である。
【０１１１】
このような整数ではないフレームレートに対しては、前処理として、フレームレートの整数化を行う。ここでいう整数化とは、フレームレートに対して整数倍することにより得られた結果を整数化するような処理である。たとえば、７．５フレーム／秒のフレームレートは、２倍することにより１５となって整数化できる。
【０１１２】
整数化する方法は幾通りかあるが、もっとも単純な方法は、小数部の桁数×１０倍にする事によって実現される。また、小数部が２または５で割り切れる場合には、その割り切れる場合の２または５で小数部の桁数×１０を同様に除算してもよい。この例では７．５の小数部５が５で割り切れるため小数部の桁数×１０÷５より２倍すれば充分であることがわかる。
【０１１３】
この算出された整数化されたフレームレートを第１の実施形態におけるアルゴリズムに使用することができる。この例では、結果として１５が算出されているため、実施例１と同等の処理が行われることになる。ただし、エンコーダから出力されるタイムスタンプは、１５ｆｐｓの場合と異なり、０、１３３、２６６、４００、５３３（ミリ秒）のようになる。
【０１１４】
結果として１５ｆｐｓの場合と同じになったため、システム・タイムスケールが１０００であれば、最小公倍数は３０００となって、これが高精細システム・タイムスケールとして使用されることになる。
【０１１５】
理論的なタイムスタンプのオフセットを計算する部分については、１５ｆｐｓによる場合と結果が異なる事に着目すべきである。高精細システム・タイムスケールは３０００であるが、フレームレートは１５ではなく７．５であるため、計算される結果は３０００÷７．５から４００となる。
【０１１６】
このような違いは、アルゴリズムの違いではなく、計算された結果の違いである。すなわち、本発明は、フレームレートが小数部を含む場合には、整数になるような任意の整数を乗じて整数化されたフレームレートを計算する前処理を付加することで容易に適用出来る。
【０１１７】
＜第３の実施形態＞
本発明は、フレームレートが固定に準ずると考えられる場合、可変フレームレート的な動作であっても適用可能な場合がある。ここに言う可変フレームレート的な動作とは、完全な固定フレームレートではないにせよ、あらかじめ決められた複数のフレームレートが動的に使用されるような場合である。
【０１１８】
このような例として、たとえば、通常はフレームレートが１０ｆｐｓで動作しているが、動きの早い場面において、フレーム間の差違がおおきくなるために１５ｆｐｓに変更されるような場合がある。あるいはまた、動画像などのストリームのビットレートを通信上の制約から一定にしておきたいといった場合に、逆に動きの早い場面において圧縮率を下げて画質を保持するとともに、通常１５ｆｐｓのフレームレートを１０ｆｐｓに変更するといった事も利用される。
【０１１９】
あらかじめ、このようなフレームレートの設定が分かっている場合、図５のフローチャート上で示したフレームレート２０２を複数の値として計算することで本発明は充分適用可能である。
【０１２０】
この場合、ステップＳ５０２の最小公倍数の計算は、複数のフレームレート２０２とシステム・タイムスケール２０３で行われればよい。もし、１０ｆｐｓと１５ｆｐｓの２つのフレームレートおよびシステム・タイムスケールの値１０００で最小公倍数を計算すれば、３０００という結果が得られる。この時、タイムスタンプのオフセットの理論値２０６は、それぞれ、３００と２００になる。つまり、タイムスタンプのオフセットの理論値２０６も複数となる。
【０１２１】
３つ以上の値から最小公倍数を求める方法もまた、ユークリッドの互除法が適用できることはよく知られている。従って、入力となるフレームレート２０２と出力となるタイムスタンプのオフセットの理論値２０６が複数になる事以外は、まったく同等の処理が適用できる。
【０１２２】
あとは、図６のフローチャートにおいて、タイムスタンプ６０１が適用されるフレームがどのフレームレートで出力されたものであるかを判断しながら、適用するタイムスタンプのオフセットの理論値を変更すればよい。
【０１２３】
途中でフレームレートが変更されるため、ひとつのタイムスタンプを使用する場合にくらべ、タイムスタンプの記憶領域の圧縮効果が小さくなるが、フレームレートの変更の回数が充分に小さければ、その効果は依然として充分有意なものである。
【０１２４】
＜第４の実施形態＞
ここでは、ここまでで説明出来なかったその他の実施例について説明する。
本発明は、動画や音声など複数の異なるフレームレートが使用される場合にも有効である。
【０１２５】
もし、同一ファイル内において単一のタイムスケールのみが格納可能である場合、ひとつのフレームレートとシステム・タイムスケールから最小公倍数を計算し、高精度システム・タイムスケールを計算したならば、他のフレームレートの精度を犠牲にする可能性がある。たとえば、ある動画のフレームレートが１０ｆｐｓであって、システム・タイムスケールが１０００である場合、結果として得られる高精度システム・タイムスケールは、本アルゴリズムに従って１０００となる。しかしながら、もう一つの動画のフレームレートが１５ｆｐｓであった場合、これを高精度システム・タイムスケールの値１０００で処理しようとすると、あきらかに、タイムスタンプの精度と記憶領域の両面で効果が発揮できない。
【０１２６】
このような場合にも、先に説明した複数のフレームレートの場合と同様に本アルゴリズムを適用することで本発明は効果を発揮する。
【０１２７】
以上、説明してきたように、本発明によれば、タイムスタンプの精度を損なうことなくタイムスタンプの記憶領域を小さくすることが出来る事が可能になり、デジタル・カメラのような比較的記憶領域に制約の大きい機器などで発生する様々な問題に対処しながら、より正確なタイムスタンプを記録できるようになる。
【０１２８】
以上説明したように、本発明によれば、論理的に誤差の発生しない高精度なタイムスタンプを生成する事が可能になり、視覚的に劣化のない正確なタイムスタンプを維持しながらタイムスタンプの格納テーブルの格納効率を向上させる事ができ、格納ファイルのファイルサイズを効率的に縮小することができる。
【０１２９】
また、このことにより結果として、小さなメモリーしか持たない制約のあるデバイスにおいても、メモリー圧迫による重大な処理異常を誘発する可能性を小さくすることが可能となる。
【０１３０】
＜その他＞
実施の形態の処理は、各機能を具現化したソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても実現することができる。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１３１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれている。
【０１３２】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含むものである。
【図面の簡単な説明】
【０１３３】
【図１】マルチメディア・データ多重化装置の概略を示すブロック図である。
【図２】タイムスタンプ・オフセットを模式的に示した図である。
【図３】タイムスタンプの格納形式をＭＰＥＧ−４の標準規格であるＭＰ４を例として示す模式図である。
【図４】例外を含む本発明による実際の値の例を示す図である。
【図５】本発明によるアルゴリズムを記述するフローチャート（１）である。
【図６】本発明によるアルゴリズムを記述するフローチャート（２）である。
【図１】
2005223617.tif 000004
【図２】
2005223617.tif 000005
【図３】
2005223617.tif 000006
【図４】
2005223617.tif 000007
【図５】
2005223617.tif 000008
【図６】
2005223617.tif 000009