(57)【特許請求の範囲】
【請求項１】
MPEG2-TS（Moving Picture Experts Group 2 Transport Stream）に含まれる複数のTS（Transport Stream）パケットに、前記MPEG2-TSをデコードするデコーダへの入力タイミングを表すタイムスタンプをそれぞれ付加するタイムスタンプ付加装置において、
前記TSパケットに含まれているアダプテーションフィールドに記述されている不連続インジケータが、所定のシステムクロック周波数を基準としたPCR（Program Clock Reference）が不連続になることを表している場合、前記不連続インジケータが含まれているTSパケットの位置情報を取得する不連続検出手段と、
前記TSパケットに含まれているアダプテーションフィールドに前記PCRが埋め込まれている場合、前記TSパケットからPCRの値を抽出するとともに、前記PCRが埋め込まれているTSパケットの位置情報を取得するPCR検出手段と、
前記不連続検出手段が取得した前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報、前記PCR検出手段が抽出した前記PCRの値、および前記PCR検出手段が取得した前記PCRが埋め込まれているTSパケットの位置情報を用いて、隣り合うTSパケット同士の入力タイミングの間隔を算出する時間間隔算出手段と、
前記TSパケット同士の入力タイミングの間隔に基づいて、前記TSパケットの入力タイミングを算出し、前記入力タイミングを表すタイムスタンプを複数の前記TSパケットにそれぞれ付加するタイムスタンプ算出手段と
を備えるタイムスタンプ付加装置。
【請求項２】
前記時間間隔算出手段は、
前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報に基づいて、前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットを間に挟み、前記PCRが含まれているTSパケット間における前記入力タイミングの間隔として、
前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの直前の前記PCRが含まれているTSパケット間における前記入力タイミングの間隔を用いる
請求項１に記載のタイムスタンプ付加装置。
【請求項３】
前記時間間隔算出手段は、
前記PCRが含まれている２つのTSパケット間における前記入力タイミングの間隔を、前記２つのTSパケットから抽出されたPCRの値に基づいて算出し、
先頭のTSパケットから、最初に前記PCRが含まれているTSパケットまでの間における前記入力タイミングの間隔を、最初に前記PCRが含まれているTSパケットから抽出されたPCRの値と、最初に前記PCRが含まれているTSパケットの次の前記PCRが含まれているTSパケットから抽出されたPCRの値とに基づいて算出し、
最後に前記PCRが含まれているTSパケットから、最後尾のTSパケットまでにおける前記入力タイミングの間隔を、最後に前記PCRが含まれているTSパケットから抽出されたPCRの値と、最後に前記PCRが含まれているTSパケットの前の前記PCRが含まれているTSパケットから抽出されたPCRの値とに基づいて算出する
請求項１に記載のタイムスタンプ付加装置。
【請求項４】
複数の前記TSパケットには、それぞれを識別するPID（Packet Identifier）が含まれており、
前記PCR検出手段は、
前記TSパケットのPIDのリストが記述されているPMT（Program Map Table）を伝送するTSパケットのPIDが記述されているPAT（Program Association Table）を解析して、前記PMTを伝送するTSパケットのPIDを検出し、
前記PMTを伝送するTSパケットのPIDにより識別されるTSパケットのPMTを解析して、前記PCRが埋め込まれる属性のTSパケットのPIDを検出し、
前記PCRが埋め込まれる属性のTSパケットのPIDにより識別されるTSパケットにアダプテーションフィールドが含まれているか否かの判定を行い、
前記アダプテーションフィールドが含まれていると判定された前記TSパケットを解析することにより、前記PCRの値を抽出するとともに、前記PCRが埋め込まれているTSパケットの位置情報を取得する
請求項１に記載のタイムスタンプ付加装置。
【請求項５】
前記不連続検出手段は、前記PCR検出手段により前記アダプテーションフィールドが含まれていると判定された前記TSパケットを解析することにより、前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報を取得する
請求項４に記載のタイムスタンプ付加装置。
【請求項６】
前記PCR検出手段は、先頭のTSパケットから、最初に前記PCRが含まれているTSパケットの直前のTSパケットまでのパケット数と、前記PCRが含まれているTSパケットの次に前記PCRが含まれているTSパケットの直前のTSパケットまでのパケット数と、最後に前記PCRが含まれているTSパケットから、最後尾のTSパケットまでのパケット数とを前記位置情報として取得し、
前記不連続検出手段は、直前の前記PCRが含まれているTSパケットから、前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットまでのパケット数を前記位置情報として取得する
請求項１に記載のタイムスタンプ付加装置。
【請求項７】
前記PCR検出手段は、前記PCRが含まれているTSパケットの前記MPEG2-TSの先頭からのバイト数またはパケット数を、前記位置情報として取得し、
前記不連続検出手段は、前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの前記MPEG2-TSの先頭からのバイト数またはパケット数を、前記位置情報として取得する
請求項１に記載のタイムスタンプ付加装置。
【請求項８】
MPEG2-TS（Moving Picture Experts Group 2 Transport Stream）に含まれる複数のTS（Transport Stream）パケットに、前記MPEG2-TSをデコードするデコーダへの入力タイミングを表すタイムスタンプをそれぞれ付加するタイムスタンプ付加方法において、
前記TSパケットに含まれているアダプテーションフィールドに記述されている不連続インジケータが、所定のシステムクロック周波数を基準としたPCR（Program Clock Reference）が不連続になることを表している場合、前記不連続インジケータが含まれているTSパケットの位置情報を取得し、
前記TSパケットに含まれているアダプテーションフィールドに前記PCRが埋め込まれている場合、前記TSパケットからPCRの値を抽出するとともに、前記PCRが埋め込まれているTSパケットの位置情報を取得し、
前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報、前記PCRの値、および前記PCRが埋め込まれているTSパケットの位置情報を用いて、隣り合うTSパケット同士の入力タイミングの間隔を算出し、
前記TSパケット同士の入力タイミングの間隔に基づいて、前記TSパケットの入力タイミングを算出し、前記入力タイミングを表すタイムスタンプを複数の前記TSパケットにそれぞれ付加する
ステップを含むタイムスタンプ付加方法。
【請求項９】
MPEG2-TS（Moving Picture Experts Group 2 Transport Stream）に含まれる複数のTS（Transport Stream）パケットに、前記MPEG2-TSをデコードするデコーダへの入力タイミングを表すタイムスタンプをそれぞれ付加する処理をコンピュータに実行させるプログラムにおいて、
前記TSパケットに含まれているアダプテーションフィールドに記述されている不連続インジケータが、所定のシステムクロック周波数を基準としたPCR（Program Clock Reference）が不連続になることを表している場合、前記不連続インジケータが含まれているTSパケットの位置情報を取得し、
前記TSパケットに含まれているアダプテーションフィールドに前記PCRが埋め込まれている場合、前記TSパケットからPCRの値を抽出するとともに、前記PCRが埋め込まれているTSパケットの位置情報を取得し、
前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報、前記PCRの値、および前記PCRが埋め込まれているTSパケットの位置情報を用いて、隣り合うTSパケット同士の入力タイミングの間隔を算出し、
前記TSパケット同士の入力タイミングの間隔に基づいて、前記TSパケットの入力タイミングを算出し、前記入力タイミングを表すタイムスタンプを複数の前記TSパケットにそれぞれ付加する
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイムスタンプ付加装置およびタイムスタンプ付加方法、並びにプログラムに関し、特に、MPEG2-TSの再生が正常に行われるようなタイムスタンプをTSパケットに付加することができるようにしたタイムスタンプ付加装置およびタイムスタンプ付加方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、テレビジョン放送されている番組をハードディスクなどの記録媒体に記録し、その後、記録媒体に記録されている番組を再生して、ユーザが視聴することができるディジタル機器の普及が拡大している。このようなディジタル機器としては、ハードディスクレコーダや、パーソナルコンピュータ、録画機能を備えたテレビジョン放送受像機などがある。
【０００３】
日本のテレビジョン放送における規格としては、国際標準規格であるMPEG（Moving Picture Experts Group）の中でも、通信システムや放送システムへの適用が考慮されているMPEG-2システムが採用されている。さらに、MPEG-2システムの中でも、伝送時に誤りが発生する環境での伝送や蓄積などに適したMPEG2-TSと呼ばれる形式が採用されている。
【０００４】
MPEG2-TSでは、送信側の装置は、MPEG-2で符号化された映像および音声を、TS（Transport Stream：トランスポートストリーム）パケットと呼ばれるパケットに分割し、TSパケットを順次送信する。
【０００５】
また、MPEG2-TSでは、送信側が意図したとおりに受信側で番組を再生することができるように、TSパケットには、27MHzのシステムクロック周波数を基準としたPCR（Program Clock Reference：プログラムクロックリファレンス）が埋め込まれる。同様に、TSパケットには、再生時に参照される時刻管理情報であるPTS（Program Time Stamp：プログラムタイムスタンプ）や、デコード時に参照される時刻管理情報であるDTS（Decoding Time Stamp：デコーディングタイムスタンプ）などのデータも埋め込まれる。
【０００６】
上述したようなディジタル機器などの受信側の装置は、TSパケットを受信し、そのTSパケットから、PAT（Program Association Table：プログラムアソシエーションテーブル）、およびPMT（Program Map Table：プログラムマップテーブル）を取得する。受信側の装置は、PATおよびPMTに基づいて、PID（Packet Identifier：パケット識別子）を判別することができ、所定のPIDを持つTSパケットを、映像や、音声、PCRなどに分離する。
【０００７】
また、受信側の装置は、TSパケットから取得したPCRを使用して、STC（System Time Clock：システムタイムクロック）の初期値を設定する。また、受信側の装置は、定期的に受信されるPCRの値と、STCとを比較し、デコードのタイムベースとなる27MHzのシステムクロック周波数の誤差を調節する。
【０００８】
一般に、放送局などの送信側の装置から送出されたTSパケットが、受信側の装置において映像および音声のデコード処理時に、TSパケットなどを一時的に蓄積する受信バッファのアンダーフローおよびオーバフローが発生せず、かつ、映像と音声との間の同期処理が正常になるように、受信側の装置は実装される。
【０００９】
ところで、MPEG2-TSを用いた映像コンテンツは、IPTV（Internet Protocol Television）などのネットワークを経由した配信が行われる場合があり、またDLNA（Digital Living Network Alliance）などに代表されるホームネットワーク環境下での配信が行われる場合もある。
【００１０】
このようなネットワークを介した映像コンテンツの配信において、送信側の装置が、TSパケットの出力タイミングを正確に制御したとしても、ネットワーク内で、TSパケットが異なる経路を通過する可能性があり、TSパケットの到着時間が、送信間隔に従わないことがある。また、ネットワーク内の中継機器が、MPEG2-TSの処理とは全く関係ない他の通信処理を同時に行うようなときも、TSパケットの到着時間が、送信間隔に従わないことがある。
【００１１】
また、時刻情報であるPCRは、100ms以内に最低１つ含まれるものと規定されており、全てのTSパケットに含まれるわけではない。よって、受信側の装置が、ネットワークを介して伝送されるTSパケットのPCRのみを参照して、送信側の装置が期待するタイミングで受信したTSパケットを、デコーダへ入力することは困難である。
【００１２】
従って、ネットワークを介した映像コンテンツの配信では、送信側の装置が、個々のTSパケットにタイムスタンプ（デコーダへの入力タイミング）を付加し、受信側の装置が、TSパケットに付加されているタイムスタンプを使用して、そのTSパケットをデコードするタイミングを制御する方法が、有効である。
【００１３】
ここで、例えば、テレビジョン放送されたコンテンツを、録画機器などにおいてMPEG2-TSで記録し、そのMPEG2-TSに対し、ユーザが編集を行って、シーンのカットやシーン順序の入れ替えなどが行われた場合、PCR値の連続性が失われることがある。
【００１４】
例えば、シーンのカットが行われたTSパケットの前後のPCRが含まれているTSパケットの時間間隔とPCR値との変化について説明すると、シーンがカットされた分だけTSパケットの数が減少しているので、その前後のTSパケットの時間間隔は、シーンがカットされる前よりも短くなっているにもかかわらず、その前後のTSパケットのPCR値は大きく増加（ジャンプ）することになる。
【００１５】
従って、例えば、個々のTSパケットにタイムスタンプを付加する処理でPCR値のみを参照した場合において、シーンがカットされたMPEG2-TSをネットワークを介して配信する際には、カットされたシーンの前後のPCRが含まれているTSパケットどうしの間では、デコーダへの入力タイミングが、著しく早くなってしまう。また、シーンの順番が入れ替えられたMPEG2-TSをネットワークを介して再生する際には、デコーダへの入力タイミングが遅くなったりする。このように、デコーダへの入力タイミングが早くなったり、遅くなったりすると、MPEG2-TSを正常に再生することができず、映像に乱れが生じてしまう。
【００１６】
ここで、特許文献１には、時刻情報の連続性および周期性を保ち、様々な伝送速度に対応したトランスポートストリームを発生させる技術が開示されている。
【００１７】
また、特許文献２には、非同期の複数のトランスポートストリームの多重時に発生する遅延揺らぎを防止する技術が開示されている。
【００１８】
【特許文献１】特開２００１−２８５２３３号公報
【特許文献２】特開平１１−４１１９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上述したように、例えば、MPEG2-TSのTSパケットにタイムスタンプを付加する処理において、MPEG2-TSがユーザにより編集されていた場合には、PCRの値の連続性が失われており、不適切な入力タイミングを表すタイムスタンプが付加されることがあった。これにより、ネットワークを介して配信されるMPEG2-TSを再生する際に、MPEG2-TSのデコーダへの入力タイミングが、適切なタイミングと異なるものとなり、MPEG2-TSの再生が正常に行われないことがあった。
【００２０】
本発明は、このような状況に鑑みてなされたものであり、MPEG2-TSの再生が正常に行われるようなタイムスタンプをTSパケットに付加することができるようにするものである。
【課題を解決するための手段】
【００２１】
本発明の一側面のタイムスタンプ付加装置は、MPEG2-TSに含まれる複数のTSパケットに、前記MPEG2-TSをデコードするデコーダへの入力タイミングを表すタイムスタンプをそれぞれ付加するタイムスタンプ付加装置であって、前記TSパケットに含まれているアダプテーションフィールドに記述されている不連続インジケータが、所定のシステムクロック周波数を基準としたPCRが不連続になることを表している場合、前記不連続インジケータが含まれているTSパケットの位置情報を取得する不連続検出手段と、前記TSパケットに含まれているアダプテーションフィールドに前記PCRが埋め込まれている場合、前記TSパケットからPCRの値を抽出するとともに、前記PCRが埋め込まれているTSパケットの位置情報を取得するPCR検出手段と、前記不連続検出手段が取得した前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報、前記PCR検出手段が抽出した前記PCRの値、および前記PCR検出手段が取得した前記PCRが埋め込まれているTSパケットの位置情報を用いて、隣り合うTSパケット同士の入力タイミングの間隔を算出する時間間隔算出手段と、前記TSパケット同士の入力タイミングの間隔に基づいて、前記TSパケットの入力タイミングを算出し、前記入力タイミングを表すタイムスタンプを複数の前記TSパケットにそれぞれ付加するタイムスタンプ算出手段とを備える。
【００２２】
本発明の一側面のタイムスタンプ付加方法またはプログラムは、MPEG2-TSに含まれる複数のTSパケットに、前記MPEG2-TSをデコードするデコーダへの入力タイミングを表すタイムスタンプをそれぞれ付加するタイムスタンプ付加方法、または、MPEG2-TSに含まれる複数のTSパケットに、前記MPEG2-TSをデコードするデコーダへの入力タイミングを表すタイムスタンプをそれぞれ付加する処理をコンピュータに実行させるプログラムであって、前記TSパケットに含まれているアダプテーションフィールドに記述されている不連続インジケータが、所定のシステムクロック周波数を基準としたPCRが不連続になることを表している場合、前記不連続インジケータが含まれているTSパケットの位置情報を取得し、前記TSパケットに含まれているアダプテーションフィールドに前記PCRが埋め込まれている場合、前記TSパケットからPCRの値を抽出するとともに、前記PCRが埋め込まれているTSパケットの位置情報を取得し、前記PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報、前記PCRの値、および前記PCRが埋め込まれているTSパケットの位置情報を用いて、隣り合うTSパケット同士の入力タイミングの間隔を算出し、前記TSパケット同士の入力タイミングの間隔に基づいて、前記TSパケットの入力タイミングを算出し、前記入力タイミングを表すタイムスタンプを複数の前記TSパケットにそれぞれ付加するステップを含む。
【００２３】
本発明の一側面においては、TSパケットに含まれているアダプテーションフィールドに記述されている不連続インジケータが、所定のシステムクロック周波数を基準としたPCRが不連続になることを表している場合、不連続インジケータが含まれているTSパケットの位置情報が取得される。また、TSパケットに含まれているアダプテーションフィールドにPCRが埋め込まれている場合、TSパケットからPCRの値が抽出されるとともに、PCRが埋め込まれているTSパケットの位置情報が取得される。そして、PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報、PCRの値、およびPCRが埋め込まれているTSパケットの位置情報を用いて、隣り合うTSパケット同士の入力タイミングの間隔が算出される。さらに、TSパケット同士の入力タイミングの間隔に基づいて、TSパケットの入力タイミングが算出され、入力タイミングを表すタイムスタンプが複数のTSパケットにそれぞれ付加される。
【発明の効果】
【００２４】
本発明の一側面によれば、MPEG2-TSの再生が正常に行われるようなタイムスタンプをTSパケットに付加することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２６】
図１は、本発明を適用したタイムスタンプ付加装置の一実施の形態の構成例を示すブロック図である。
【００２７】
図１において、タイムスタンプ付加装置１１は、メモリ１２、CPU（Central Processing Unit）１３、パケット解析部１４、時間間隔算出部１５、タイムスタンプ算出部１６、およびシステムバス１７から構成される。
【００２８】
CPU１３には、メモリ１２が接続されており、CPU１３、パケット解析部１４、およびタイムスタンプ算出部１６が、システムバス１７を介して互いに接続されている。また、CPU１３が、ソフトウェアを実行することにより、時間間隔算出部１５の機能が実現される。
【００２９】
メモリ１２には、タイムスタンプを付加する処理の対象となるMPEG2-TS（以下、適宜、タイムスタンプ無しMPEG2-TSと称する）が、あらかじめ記憶されている。また、メモリ１２には、タイムスタンプ無しMPEG2-TSにタイムスタンプを付加する処理が施され、その結果得られるタイムスタンプ付きMPEG2-TSが記憶される。
【００３０】
CPU１３は、タイムスタンプ無しMPEG2-TSをメモリ１２から読み出し、システムバス１７を介して、パケット解析部１４に供給する。
【００３１】
パケット解析部１４は、不連続検出部１８およびPCR検出部１９を備えて構成されるハードウェア機能ブロックであり、パケット解析部１４において、CPU１３から供給されるMPEG2-TSのTSパケットが、先頭から順次解析される。
【００３２】
例えば、パケット解析部１４は、MPEG2-TSの所定のTSパケット（PIDが０であるTSパケット）に示されているPATを解析して、PMTが含まれているTSパケットのPIDを検出し、このPIDにより識別されるTSパケットに含まれているPMTを解析して、PCRが埋め込まれる属性のTSパケットであることを示すPID（PCR_PID）を検出する。
【００３３】
または、例えば、メモリ１２に、PMTが含まれているTSパケットのPIDや、PCRが埋め込まれているTSパケットのPIDが、あらかじめ記憶されているときには、パケット解析部１４は、それらのPIDに基づいて、PCRが埋め込まれているTSパケットを検出する。なお、メモリ１２に記憶されるPMTやPCRが含まれているTSパケットのPIDは、例えば、ユーザが任意に設定したり、CPU１３により実行される他のアプリケーションが任意に設定したりすることができる。
【００３４】
そして、パケット解析部１４は、PCRが埋め込まれる属性のTSパケットであることを示すPIDにより識別されるTSパケット（PID＝PCR_PIDであるTSパケット）を解析し、そのTSパケットに、MPEG2-TSに関する付加情報などが記述されているアダプテーションフィールドがあるか否か（adaptation_field_controlが10または11であり、かつ、adaptation_field_lengthが0であるか否か）を判定する。
【００３５】
また、パケット解析部１４は、CPU１３から供給されるMPEG2-TSの全てのTSパケットの解析が完了すると、その旨を表す解析完了通知を、システムバス１７を介して、CPU１３に供給する。
【００３６】
不連続検出部１８は、パケット解析部１４によりアダプテーションフィールドがあると判定されたTSパケットに対して処理を行い、そのアダプテーションフィールドに含まれている不連続インジケータ（discontinuity indicator）が１である場合、そのTSパケットの位置情報を取得する。不連続インジケータが１であるTSパケットの位置情報としては、例えば、直前にPCRが検出されたTSパケットから不連続インジケータが１であるTSパケットまでのパケット数を用いることができる。
【００３７】
また、不連続検出部１８は、不連続インジケータが１であるTSパケットの位置情報を、システムバス１７を介して、CPU１３に供給する。例えば、不連続検出部１８は、不連続インジケータが１であるTSパケットを検出するたびに、そのTSパケットの位置情報をCPU１３に供給することができる。また、不連続検出部１８は、MPEG2-TSの全てのTSパケットの解析後、パケット解析部１４からCPU１３に供給される解析完了通知とともに、不連続インジケータが１であるTSパケットの位置情報をCPU１３に供給することができる。
【００３８】
なお、MPEG2-TSでは、PCRの不連続が生じる場合、例えば、その次にPCRを含むTSパケットにおいてPCR値がリセットされている場合、不連続インジケータを１にすることが規定されている（ISO/IEC 1318-1:2000(E)参照）。例えば、MPEG2-TSにおいて、PCRが埋め込まれているTSパケットの不連続インジケータが１である場合、新しいタイムベースとなるPCRが埋め込まれているTSパケットが現れるまで、デコーダは、直前のPCRが埋め込まれているTSパケット間で得られた時間を用いてデコードを行う。また、新しいタイムベースとなるPCRが埋め込まれているTSパケットが現れるまで、不連続インジケータは１のままとする。
【００３９】
PCR検出部１９は、パケット解析部１４によりアダプテーションフィールドがあると判定されたTSパケットに対して処理を行い、TSパケットのアダプテーションフィールドのオプショナルフィールドにPCR値が記述されているか否かを表すフラグ（PCR_flag）が、PCR値が記述されていることを表す１である場合、そのTSパケットからPCR値を抽出するとともに、そのTSパケットの位置情報を取得する。TSパケットの位置情報としては、例えば、先頭のTSパケットから最初にPCRが検出されたTSパケットまでのパケット数、PCRが検出されたTSパケット間のパケット数、および最後にPCRが検出されたTSパケットから最後尾のTSパケットまでのパケット数を用いることができる。
【００４０】
また、PCR検出部１９は、TSパケットから抽出したPCR値と、PCR_flagが１であるTSパケットの位置情報を、システムバス１７を介して、CPU１３に供給する。例えば、PCR検出部１９は、PCR_flagが１であるTSパケットを検出するたびに、そのTSパケットの位置情報とPCR値とをCPU１３に供給することができる。また、不連続検出部１８は、MPEG2-TSの全てのTSパケットの解析後、パケット解析部１４からCPU１３に供給される解析完了通知とともに、TSパケットの位置情報とPCR値とをCPU１３に供給することができる。
【００４１】
時間間隔算出部１５は、不連続検出部１８がCPU１３に供給した不連続インジケータが１であるTSパケットの位置情報、並びに、PCR検出部１９がCPU１３に供給したPCR_flagが１であるTSパケット位置情報およびPCR値に基づいて、隣り合うTSパケット同士の時間間隔（例えば、MPEG2-TSをデコードするデコーダへTSパケットが入力される入力タイミング（時刻）の間隔）などを算出し、その時間間隔を含む時間間隔データを取得する。CPU１３は、時間間隔算出部１５が取得する時間間隔データと、メモリ１２から読み出したタイムスタンプ無しMPEG2-TSとを、システムバス１７を介して、タイムスタンプ算出部１６に供給する。
【００４２】
タイムスタンプ算出部１６は、CPU１３から供給される時間間隔データを用い、所定の式を演算して各TSパケットの入力タイミングを表す、例えば、４バイトのタイプスタンプを算出する。そして、タイムスタンプ算出部１６は、そのタイムスタンプを、CPU１３から供給されるタイムスタンプ無しMPEG2-TSのTSパケットにそれぞれ付加し、タイムスタンプ付きMPEG2-TSを取得する。その後、タイムスタンプ算出部１６は、タイムスタンプ付きMPEG2-TSを、システムバス１７を介してCPU１３に供給し、CPU１３は、タイムスタンプ付きMPEG2-TSをメモリ１２に記憶させる。
【００４３】
次に、図２は、MPEG2-TSの構成例を示す図である。
【００４４】
図２の上側には、タイムスタンプ付加装置１１に入力されるタイムスタンプ無しMPEG2-TSが示されており、下側には、タイムスタンプを付加する処理が施されて出力されるタイムスタンプ付きMPEG2-TSが示されている。
【００４５】
タイムスタンプ無しMPEG2-TSは、188バイトのTSパケットが、複数、連続して構成されている。タイムスタンプ付きMPEG2-TSは、各TSパケットの先頭に、４バイトのタイムスタンプが付加された192バイトのタイムスタンプ付きTSパケットが、複数、連続して構成される。
【００４６】
次に、図３は、図１のタイムスタンプ付加装置１１が、MPEG2-TSにタイムスタンプを付加する処理を説明するフローチャートである。
【００４７】
初期状態として、メモリ１２には、タイムスタンプ無しMPEG2-TSが記憶されており、ステップＳ１１において、CPU１３は、メモリ１２からタイムスタンプ無しMPEG2-TSを読み出し、処理はステップＳ１２に進む。
【００４８】
ステップＳ１２において、CPU１３は、ステップＳ１１でメモリ１２から読み出したタイムスタンプ無しMPEG2-TSを、パケット解析部１４に供給する。その後、CPU１３は、パケット解析部１４から解析完了通知が送信されてくるまで処理を待機し、解析完了通知が送信されてくると、処理はステップＳ１３に進む。
【００４９】
ステップＳ１３において、CPU１３は、パケット解析部１４から送信される解析完了通知を受信する。また、上述したように、CPU１３には、解析完了通知とともに、不連続インジケータが１であるTSパケットの位置情報が不連続検出部１８から供給され、PCR_flagが１であるTSパケットの位置情報およびPCR値がPCR検出部１９から供給される。
【００５０】
ステップＳ１３の処理後、処理はステップＳ１４に進み、CPU１３では、時間間隔算出部１５が、ステップＳ１３で解析完了通知とともに供給される不連続インジケータが１であるTSパケットの位置情報、並びに、PCR_flagが１であるTSパケットの位置情報およびPCR値を用いて、隣り合うTSパケット同士の時間間隔などを算出し、その時間間隔を含む時間間隔データを取得する。
【００５１】
ステップＳ１４の処理後、処理はステップＳ１５に進み、CPU１３は、ステップＳ１４で時間間隔算出部１５が取得した時間間隔データと、メモリ１２から読み出したタイムスタンプ無しMPEG2-TSとをタイムスタンプ算出部１６に供給する。その後、CPU１３は、タイムスタンプ算出部１６からタイムスタンプ付きMPEG2-TSが送信されてくるまで、処理を待機し、タイムスタンプ付きMPEG2-TSが送信されてくると、処理はステップＳ１６に進む。
【００５２】
ステップＳ１６において、CPU１３は、タイムスタンプ算出部１６から送信されてくるタイムスタンプ付きMPEG2-TSを受信し、処理はステップＳ１７に進む。
【００５３】
ステップＳ１７において、CPU１３は、ステップＳ１６で受信したタイムスタンプ付きMPEG2-TSをメモリ１２に記憶させ、CPU１３での処理は終了する。
【００５４】
一方、パケット解析部１４は、ステップＳ１２でCPU１３が、タイムスタンプ無しMPEG2-TSを送信すると、ステップＳ２１において、そのタイムスタンプ無しMPEG2-TSを受信する。
【００５５】
ステップＳ２１の処理後、処理はステップＳ２２に進み、パケット解析部１４は、タイムスタンプ無しMPEG2-TSを解析するパケット解析処理（後述する図４のフローチャートの処理）を行う。パケット解析処理では、不連続検出部１８が、不連続インジケータが１であるTSパケットの位置情報を取得し、PCR検出部１９が、PCR_flagが１であるTSパケットからPCR値を抽出するとともに、そのTSパケットの位置情報を取得する。
【００５６】
ステップＳ２２のPCR検出処理の処理後、処理はステップＳ２３に進み、パケット解析部１４は、解析完了通知とともに、不連続インジケータが１であるTSパケットの位置情報、並びに、PCR_flagが１であるTSパケットの位置情報およびPCR値を、CPU１３に送信し、パケット解析部１４での処理は終了する。
【００５７】
一方、タイムスタンプ算出部１６は、ステップＳ１５でCPU１３が、タイムスタンプ無しMPEG2-TSと時間間隔データとを送信すると、ステップＳ３１において、そのタイムスタンプ無しMPEG2-TSと時間間隔データとを受信する。
【００５８】
ステップＳ３１の処理後、処理はステップＳ３２に進み、タイムスタンプ算出部１６は、ステップＳ３１で受信した時間間隔データを用い、所定の式を演算して各TSパケットのタイプスタンプを算出する。そして、タイムスタンプ算出部１６は、図２に示したように、各TSパケットの先頭にタイムスタンプを付加し、タイムスタンプ付きMPEG2-TSを取得して、処理はステップＳ３３に進む。
【００５９】
ステップＳ３３において、タイムスタンプ算出部１６は、ステップＳ３２で取得したタイムスタンプ付きMPEG2-TSをCPU１３に供給し、タイムスタンプ算出部１６での処理は終了する。
【００６０】
次に、図４は、図３のステップＳ２２のパケット解析処理を説明するフローチャートである。
【００６１】
パケット解析処理では、パケット解析部１４は、CPU１３から供給されるMPEG2-TSの先頭のTSパケットから、順次、処理の対象として解析を行い、ステップＳ４１において、処理の対象となっているTSパケットのPIDが、PCRが埋め込まれる属性のTSパケットであることを示すPCR_PIDであるか否かを判定する。
【００６２】
ステップＳ４１において、パケット解析部１４が、TSパケットのPIDがPCR_PIDであると判定した場合、処理はステップＳ４２に進む。
【００６３】
ステップＳ４２において、パケット解析部１４は、ステップＳ４１で解析したTSパケットにアダプテーションフィールド（adaptation_field）があるか否かをし、TSパケットにアダプテーションフィールドがあると判定した場合、処理はステップＳ４３に進む。
【００６４】
ステップＳ４３において、不連続検出部１８は、ステップＳ４２でパケット解析部１４によりアダプテーションフィールドがあると判定されたTSパケットにおいて、そのアダプテーションフィールドに含まれている不連続インジケータ（discontinuity indicator）が１であるか否かを判定する。
【００６５】
ステップＳ４３において、不連続検出部１８が、TSパケットのアダプテーションフィールドに含まれている不連続インジケータが１であると判定した場合、処理はステップＳ４４に進む。
【００６６】
ステップＳ４４において、不連続検出部１８は、不連続インジケータが１であるTSパケットの位置情報を取得する。例えば、不連続検出部１８は、直前にPCR_flagが１であったTSパケットからのパケット数をカウントし、カウントを開始してから不連続インジケータが１であるTSパケットまでのパケット数を、不連続インジケータが１であるTSパケットの位置情報として取得する。
【００６７】
ステップＳ４４の処理後、または、ステップＳ４３において、不連続検出部１８が、TSパケットのアダプテーションフィールドに含まれている不連続インジケータが１でないと判定した場合、処理はステップＳ４５に進む。
【００６８】
ステップＳ４５において、PCR検出部１９は、ステップＳ４２で、ステップＳ４２でパケット解析部１４によりアダプテーションフィールドがあると判定されたTSパケットにおいて、そのアダプテーションフィールドのオプショナルフィールドにPCR値が記述されているか否かを表すフラグ（PCR_flag）が、PCR値が記述されていることを表す１であるか否かを判定する。
【００６９】
ステップＳ４５において、PCR検出部１９が、フラグが１であると判定した場合、処理はステップＳ４６に進み、TSパケットのアダプテーションフィールドのオプショナルフィールドに記述されているPCR値を抽出し、処理はステップＳ４７に進む。
【００７０】
ステップＳ４７において、PCR検出部１９は、PCR_flagが１であるTSパケットの位置情報を取得する。例えば、PCR検出部１９は、直前にPCR_flagが１であったTSパケットからのパケット数をカウントし、カウントを開始してからPCR_flagが１であるTSパケットまでのパケット数を、PCR_flagが１であるTSパケットの位置情報として取得する。
【００７１】
ステップＳ４７の処理後、処理はステップＳ４８に進む。また、ステップＳ４１において、パケット解析部１４が、TSパケットのPIDがPCR_PIDでないと判定した場合、ステップＳ４２において、パケット解析部１４が、TSパケットにアダプテーションフィールドがないと判定した場合、または、ステップＳ４５において、PCR検出部１９が、フラグが１でないと判定した場合、処理はステップＳ４８に進む。
【００７２】
ステップＳ４８において、パケット解析部１４は、MPEG2-TSが終了したか否かを判定する。例えば、MPEG2-TSの先頭のTSパケットから順に処理の対象としている場合、最後尾のTSパケットが処理の対象とされたか否かを判定する。
【００７３】
ステップＳ４８において、パケット解析部１４が、MPEG2-TSが終了していないと判定した場合、処理はステップＳ４９に進む。
【００７４】
ステップＳ４９において、パケット解析部１４は、現在処理の対象となったTSパケットの次のTSパケットを処理の対象とし、処理はステップＳ４１に戻り、新たに処理の対象となったTSパケットに対して、以下、同様の処理が繰り返される。
【００７５】
一方、ステップＳ４８において、パケット解析部１４が、MPEG2-TSが終了したと判定した場合、処理は終了される。
【００７６】
次に、図５を参照して、時間間隔およびタイムスタンプ値を算出する処理について説明する。
【００７７】
図５には、処理の対象となるMPEG2-TSが示されており、MPEG2-TSは、複数のTSパケットが連続して構成されている。
【００７８】
図５において、斜線でハッチングが施されているTSパケットは、パケット解析部１４によりPIDがPCR_PIDであると判定されたTSパケット、即ち、PIDが埋め込まれる属性のTSパケットを表している。図５のMPEG2-TSでは、８つのTSパケットPCR1乃至PCR8が、PIDが埋め込まれる属性であるとされている。また、図５において、TSパケットPCR4とPCR5との間においてドットでハッチングが施されているTSパケットαは、その直前のTSパケットとの間に、例えば、ユーザによるMPEG2-TSの編集に伴うシーンのカットが入り、TSパケットαにおいて、シーンが切り替わっていることを表している。
【００７９】
このように、TSパケットαでシーンが切り替わっていることにより、TSパケットαの前にPCR値が記述されているTSパケットPCR4の不連続インジケータ（discontinuity indicator）は１となる。
【００８０】
また、図５の例では、TSパケットPCR5は、PCR_flagが０であり、TSパケットPCR5にはPCR値が記述されていないので、TSパケットαの次にPCR値が記述されているTSパケットはTSパケットPCR6となる。そして、TSパケットαでシーンが切り替わっているので、TSパケットPCR6のPCR値は、TSパケットPCR4までのPCR値に対して、不連続となっている。なお、TSパケットPCR5は、PIDがPCR_PIDであるが、PCR_flagが０であるため、不連続インジケータが１となっている。
【００８１】
そして、時間間隔算出部１５は、MPEG2-TSを所定の処理ブロックで分割し、その処理ブロックごとに、隣り合うTSパケット同士の時間間隔を算出する処理を行う。図５の例では、処理ブロックＵ1乃至Ｕ5ごとに処理が行われる。
【００８２】
例えば、時間間隔算出部１５は、基本的に、PIDが埋め込まれる属性のTSパケットにより処理ブロックを区切るが、先頭の処理ブロックＵ1には、最初のTSパケットPCR1より前のTSパケットが含まれ、最後尾の処理ブロックＵ5には、最後のTSパケットPCR8より後のTSパケットが含まれる。
【００８３】
また、不連続インジケータが１であるTSパケットは、処理ブロックの区切りとしては用いられず、図５に示すように、処理ブロックＵ3は、TSパケットPCR3から、TSパケットPCR3の次に不連続インジケータが１でないTSパケットであるTSパケットPCR6の直前のTSパケットまでのTSパケットが含まれる。
【００８４】
そして、時間間隔算出部１５は、処理ブロックＵ1乃至Ｕ5ごとに、隣り合うTSパケット同士の時間間隔を算出する処理を行う。
【００８５】
例えば、時間間隔算出部１５は、先頭の処理ブロックＵ1において、TSパケットPCR1のPCR値、TSパケットPCR2のPCR値、およびTSパケットPCR2の位置情報（即ち、TSパケットPCR1とTSパケットPCR2との間のパケット数Ｎ1（但し、TSパケットPCR1を含む））に基づいて、処理ブロックＵ1の各TSパケット間の時間間隔データを求める。即ち、先頭のTSパケットからTSパケットPCR1まで各TSパケットの時間間隔は、TSパケットPCR1からTSパケットPCR2までの各TSパケットの時間間隔と同様の値となる。
【００８６】
また、時間間隔算出部１５は、不連続インジケータが１であるTSパケットを含まない処理ブロックにおいては、その処理ブロックを区切るTSパケットのPCR値と、その処理ブロックの直後のTSパケットの位置情報に基づいて時間間隔データを求める。例えば、時間間隔算出部１５は、処理ブロックＵ2において、TSパケットPCR2のPCR値、TSパケットPCR3のPCR値、およびTSパケットPCR3の位置情報（即ち、TSパケットPCR2とTSパケットPCR3との間のパケット数Ｎ2（但し、TSパケットPCR2を含む））に基づいて時間間隔データを求める。同様に、処理ブロックＵ4において、TSパケットPCR6のPCR値、TSパケットPCR7のPCR値、およびTSパケットPCR7の位置情報に基づいて時間間隔データを求める。
【００８７】
また、時間間隔算出部１５は、不連続インジケータが１であるTSパケットを含む処理ブロックにおいて、その処理ブロックの先頭のTSパケットのPCR値と、そのTSパケットの次にPCR値が抽出されたTSパケットのPCR値と、このTSパケットの位置情報に基づいて時間間隔データを求める。例えば、時間間隔算出部１５は、処理ブロックＵ3において、TSパケットPCR3のPCR値、TSパケットPCR4のPCR値、およびTSパケットPCR4の位置情報（即ち、TSパケットPCR3とTSパケットPCR4との間のパケット数（但し、TSパケットPCR3を含む））に基づいて時間間隔データを求める。即ち、TSパケットPCR4からTSパケットPCR6まで各TSパケットの時間間隔は、TSパケットPCR3からTSパケットPCR4までの各TSパケットの時間間隔と同様の値となる。
【００８８】
また、時間間隔算出部１５は、最後尾の処理ブロックＵ6において、TSパケットPCR7のPCR値、TSパケットPCR8のPCR値、およびTSパケットPCR8の位置情報（即ち、TSパケットPCR7とTSパケットPCR8との間のパケット数Ｎ5（但し、TSパケットPCR7を含む））に基づいて、処理ブロックＵ5の各TSパケット間の時間間隔データを求める。即ち、TSパケットPCR8から最後のTSパケットまで各TSパケットの時間間隔は、TSパケットPCR7からTSパケットPCR8までの各TSパケットの時間間隔と同様の値となる。
【００８９】
上述したように、PCR検出部１９により、PCR値と位置情報とが取得され、時間間隔算出部１５が、PCR値とパケット数に基づいて、時間間隔データを算出する。
【００９０】
ｎ番目の処理ブロックＵn（図５の例では、ｎ＝１〜５）において、TSパケットPCRnのPCR値をPCRnとし、隣り合うTSパケット同士の時間間隔（整数値）をＱnとすると、時間間隔Ｑnは、次の式（１）で表される。
【００９１】
Ｑn＝（ＰＣＲn+1−ＰＣＲn）／Ｎn
・・・（１）
【００９２】
ただし、Ｎnは、ｎ番目の処理ブロックＵnにおいて、時間間隔の算出に用いられるパケット数である。また、処理ブロックＵnにおいて、隣り合うTSパケット同士の時間間隔Ｑnの余剰をＲnとすると、余剰Ｒnは、次の式（２）で表される。
【００９３】
Ｒn＝（ＰＣＲn+1−ＰＣＲn）ｍｏｄＮn
・・・（２）
【００９４】
ただし、式（２）において、ｍｏｄは、（ＰＣＲn+1−ＰＣＲn）をパケット数Ｎnで除算し、その演算結果として余剰を返す演算子である。
【００９５】
ここで、処理ブロックＵnのｍ番目のTSパケットのタイムスタンプ値をＶn[m]とする。
【００９６】
まず、１番目の処理ブロックＵ1の先頭のTSパケットについてのタイムスタンプ値Ｖ1[1]は、任意の値に設定される。なお、１番目の処理ブロックＵ1における時間間隔Ｑ1は、（ＰＣＲ2−ＰＣＲ1）／Ｎ1であり、処理ブロックＵ1における余剰Ｒ1は、（ＰＣＲ2−ＰＣＲ1）ｍｏｄＮ1である。
【００９７】
そして、２番目の処理ブロックＵ2の先頭のTSパケットについてのタイムスタンプ値Ｖ2[1]は、次の式（３）で表される。
【００９８】
Ｖ2[1]＝Ｖ1[1]＋Ｑ1（Ｎ0＋Ｎ1）＋（Ｒ1（Ｎ0＋Ｎ1）＋Ｃ1[1]）／Ｎ1
＝Ｖ1[1]＋（（ＰＣＲ2−ＰＣＲ1）×（Ｎ0＋Ｎ1）＋Ｃ1[1]）／Ｎ1
・・・（３）
【００９９】
ただし、式（３）においてＣ1[1]は、処理ブロックＵ1の先頭のTSパケットについてのタイムスタンプ値Ｖ1[1]のキャリーオーバを表し、次の式（４）で表される。
【０１００】
Ｃ1[1]＝（−Ｒ1×Ｎ0）ｍｏｄＮ1
・・・（４）
【０１０１】
なお、処理ブロックＵ2以降において、各処理ブロックＵn（ｎ≧２）の先頭のTSパケットについてのタイムスタンプ値Ｖn[1]のキャリーオーバＣn[1]は、０である。また、２番目の処理ブロックＵ2における時間間隔Ｑ2は、（ＰＣＲ3−ＰＣＲ2）／Ｎ2であり、処理ブロックＵ2における余剰Ｒ2は、（ＰＣＲ3−ＰＣＲ2）ｍｏｄＮ2である。
【０１０２】
そして、３番目以降の処理ブロックＵn（ｎ≧３）の先頭のTSパケットについてのタイムスタンプ値Ｖn[1]は、次の式（５）で表される。
【０１０３】
Ｖn[1]＝Ｖn-1[1]＋（ＰＣＲn−ＰＣＲn-1）
・・・（５）
【０１０４】
時間間隔算出部１５は、式（１）乃至式（５）を演算することにより、処理ブロックＵnにおける時間間隔Ｑn、時間間隔Ｑnの余剰Ｒn、および処理ブロックＵnの先頭のTSパケットのタイムスタンプ値Ｖn[1]を算出する。そして、時間間隔算出部１５は、時間間隔Ｑn、余剰Ｒn、およびタイムスタンプ値Ｖn[1]を、時間間隔データとして取得し、タイムスタンプ算出部１６に供給する。
【０１０５】
このように時間間隔算出部１５が時間間隔データを算出することにより、MPEG2-TSの先頭のTSパケットから、最初のPCR値を取得するまでのTSパケット（図５のTSパケットPCR1）までの各TSパケット、および、最後のPCR値を取得したTSパケット（図５のTSパケットPCR8）から、最後尾のTSパケットまでの各TSパケットに適切なタイムスタンプを付加することができる。
【０１０６】
また、PCR値が不連続になることによりタイムベースの切り替わりが生じる箇所を含む処理ブロック（図５のTSパケットαを含む処理ブロックＵ3）においても、その直前のPCR値が抽出されたTSパケットどうしの間の時間間隔と同様に、例えば、図５を参照して説明したように、TSパケットPCR4からTSパケットPCR6まで各TSパケットの時間間隔を、TSパケットPCR3からTSパケットPCR4までの各TSパケットの時間間隔と同様の値とすることにより、適切なタイムスタンプを付加することができる。即ち、TSパケットPCR6のPCR値がTSパケットPCR4のPCR値より著しく大きく（もしくは小さく）なる場合においても、処理ブロックＵ3では、TSパケットPCR3のPCR値とTSパケットPCR6のPCR値とを用いるのではなく、TSパケットPCR3のPCR値とTSパケットPCR4のPCR値を用いて時間間隔を算出するので、一定の間隔の適切なタイムスタンプを付加することができる。また、処理ブロックＵ3では、TSパケットPCR4の位置情報（即ち、PCRが不連続になることを表している不連続インジケータが含まれているTSパケットの位置情報）、つまり、TSパケットPCR3からTSパケットPCR4までのパケット数が、時間間隔の算出に用いられる。
【０１０７】
このような時間間隔データが、時間間隔算出部１５からタイムスタンプ算出部１６に供給され、タイムスタンプ算出部１６は、時間間隔データを用いて、各処理ブロックの各TSパケットのタイムスタンプ値を算出して、それぞれのTSパケットに付加する。
【０１０８】
処理ブロックＵnのｍ番目のTSパケットのタイムスタンプ値Ｖn[m]は、（Ｃn[m-1]＋Ｒn）≧Ｎnであるとき、次の式（６）で表され、（Ｃn[m-1]＋Ｒn）＜Ｎnであるとき、次の式（７）で表される。
【０１０９】
Ｖn[m]＝Ｖn[m-1]＋Ｑn＋１
・・・（６）
Ｖn[m]＝Ｖn[m-1]＋Ｑn
・・・（７）
【０１１０】
また、処理ブロックＵnのｍ番目のTSパケットについてのタイムスタンプ値Ｖn[m]のキャリーオーバＣn[m]は、（Ｃn[m-1]＋Ｒｎ）≧Ｎnであるとき、次の式（８）で表され、（Ｃn[m-1]＋Ｒn）＜Ｎnであるとき、次の式（９）で表される。
【０１１１】
Ｃn[m]＝Ｃn[m-1]＋Ｒn−Ｎn
・・・（８）
Ｃn[m]＝Ｃn[m-1]＋Ｒn
・・・（９）
【０１１２】
ただし、式（６）乃至式（９）において、ｍ＞２である。
【０１１３】
タイムスタンプ算出部１６は、時間間隔算出部１５から時間間隔データとして供給される時間間隔Ｑn、余剰Ｒn、およびタイムスタンプ値Ｖn[1]を用いて、式（６）乃至式（９）を演算することにより、タイムスタンプ値Ｖn[m]を算出し、処理ブロックＵnのｍ番目のTSパケットに付加する。
【０１１４】
ここで、例えば、キャリーオーバＣn[m]を考慮せずに、時間間隔Ｑnを単に加算することによりタイムスタンプ値を算出する場合には、余剰が積み重なることにより、PCR値とタイムスタンプ値とのズレが大きくなる。これに対し、キャリーオーバＣn[m]を考慮することにより、このズレを最小にすることができる。
【０１１５】
即ち、キャリーオーバＣn[m]がパケット数Ｎnより大となるときには、タイムスタンプ値Ｖn[m]が、キャリーオーバＣn[m]がパケット数Ｎn未満であるときよりも、１だけ多くなるようにするとともに、キャリーオーバＣn[m]からパケット数Ｎnを減算することで、PCR値とタイムスタンプ値とのズレが、１以上に大きくなることが回避され、タイムスタンプを均等に割り付けることができる。
【０１１６】
また、式（６）乃至式（９）に示すように、タイムスタンプ算出部１６が行う処理は、キャリーオーバと時間間隔とを比較して、直前のタイムスタンプ値に時間間隔を加算し、新たなキャリーオーバを算出するだけの処理である。従って、タイムスタンプ算出部１６をハードウェアで実現すると、その回路は、例えば、除算などを行う必要がある処理を実行する回路などに比べて、ステップ数を少なくし、非常に小さなハードウェアで構成することができるとともに、高速でタイムスタンプを付加することができる。
【０１１７】
即ち、タイムスタンプ算出部１６をハードウェアで実現し、CPU１３が、ソフトウェアを実行することにより、時間間隔算出部１５の機能を実現することで、時間間隔や、その余剰などを算出する処理は、CPU１３で行い、キャリーオーバと時間間隔とを比較して、直前のタイムスタンプ値に時間間隔を加算し、新たなキャリーオーバを算出する処理は、タイムスタンプ算出部１６で行うというように、ハードウェアとソフトウェアとで、効率よく処理を分担して行うことができる。
【０１１８】
また、タイムスタンプ算出部１６をハードウェアで実現することで、CPUにかかる負担が大きくなることを回避することができ、例えば、ハードディスクレコーダなどの組み込み機器に搭載されている処理能力の低いCPUでも、処理に占有されることを回避することができるので、高性能なCPUを搭載してタイムスタンプを付加する処理の負担が大きくなることを解決する場合に比べて、コストを低減させることができる。
【０１１９】
そして、以上のようにタイムスタンプをTSパケットに付加する処理を行うことにより、例えば、テレビジョン放送されたコンテンツを、録画機器などにおいてMPEG2-TSで記録し、そのコンテンツをホームネットワークへ送出しても、タイムスタンプに基づいた入力タイミングでデコーダにTSパケットが入力されるので、映像に乱れ（破綻）が生じることなく、MPEG2-TSを正常に再生することができる。即ち、ユーザにより編集されてPCR値が不連続になっても、MPEG2-TSを正常に再生することができるような適切なタイムスタンプをTSパケットに付加することができる。
【０１２０】
なお、本実施の形態では、CPU１３が、メモリ１２からMPEG2-TSを読み出してタイムスタンプ算出部１６に供給するとしたが、例えば、CPU１３が、MPEG2-TSが記憶されているメモリ１２のアドレスをタイムスタンプ算出部１６に供給し、タイムスタンプ算出部１６がメモリ１２からMPEG2-TSを読み出すとともに、タイムスタンプを付加したMPEG2-TSをメモリ１２に書き込むDMA（Direct Memory Access）により処理を行うようにしてもよい。DMAにより処理を行うことで、より高速にタイムスタンプを付加する処理を行うことができる。
【０１２１】
なお、PCRが検出されたTSパケットの位置情報として用いられる、最後にPCRが検出されたTSパケットから最後尾のTSパケットまでのパケット数は、パケット解析部１４からCPU１３に供給しなくてもよい。即ち、CPU１３にとって、ストリーム長が既知であるので、CPU１３は、ストリーム長から、最後にPCRが検出されたTSパケットから最後尾のTSパケットまでのパケット数（図６のパケット数Ｎ6）を取得することができる。
【０１２２】
また、パケット解析部１４が、不連続検出部１８とPCR検出部１９とを、別々のハードウェア機能ブロックとして備える構成の他に、不連続検出部１８がPCR検出部１９に含まれるような１つのハードウェア機能ブロックとして構成されていてもよい。この場合、PCR検出部１９が、PID＝PCR_PIDの判定、および、アダプテーションフィールドの有無の判定を行うことができる。即ち、不連続検出部１８とPCR検出部１９とで、PID＝PCR_PIDの判定、および、アダプテーションフィールドの有無の判定を共有するように構成されていればよい。
【０１２３】
このように、不連続検出部１８とPCR検出部１９とで、PID＝PCR_PIDの判定、および、アダプテーションフィールドの有無の判定を共有することにより、それぞれの判定を別々のハードウェア機能ブロックが行う場合より、処理の負担を軽くすることができる。もちろん、不連続検出部１８とPCR検出部１９とが、PID＝PCR_PIDの判定、および、アダプテーションフィールドの有無の判定をそれぞれに行ってもよい。
【０１２４】
また、PCRが検出されたTSパケットの位置情報としては、上述したようなPCRが検出されたTSパケット間のパケット数などの他、PCRが検出されたTSパケットの先頭からのバイト数や、先頭からのパケット数などを用いることができる。同様に、不連続インジケータが１であるTSパケットの位置情報として、不連続インジケータが１であるTSパケットの先頭からのバイト数や、先頭からのパケット数などを用いることができる。なお、不連続検出部１８とPCR検出部１９とは、TSパケットの位置情報としては、同様の種類のものを用いる。
【０１２５】
なお、上述した実施の形態では、時間間隔算出部１５の機能は、CPU１３がソフトウェアを実行することにより実現し、パケット解析部１４やタイムスタンプ算出部１６の機能は、それぞれハードウェアにより実行するとしたが、パケット解析部１４やタイムスタンプ算出部１６の機能も、CPU１３がソフトウェアを実行することにより実現することができる。
【０１２６】
一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１２７】
図６は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０１２８】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３は、バス１０４により相互に接続されている。
【０１２９】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、キーボード、マウス、マイクロホンなどよりなる入力部１０６、ディスプレイ、スピーカなどよりなる出力部１０７、ハードディスクや不揮発性のメモリなどよりなる記憶部１０８、ネットワークインタフェースなどよりなる通信部１０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１１１を駆動するドライブ１１０が接続されている。
【０１３０】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを、入出力インタフェース１０５及びバス１０４を介して、RAM１０３にロードして実行することにより、上述した一連の処理が行われる。
【０１３１】
コンピュータ（CPU１０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア１１１に記録して、あるいは、ローカルエリアネットワーク、インタネット、ディジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１３２】
そして、プログラムは、リムーバブルメディア１１１をドライブ１１０に装着することにより、入出力インタフェース１０５を介して、記憶部１０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部１０９で受信し、記憶部１０８にインストールすることができる。その他、プログラムは、ROM１０２や記憶部１０８に、あらかじめインストールしておくことができる。
【０１３３】
また、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、１のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【０１３４】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１３５】
【図１】本発明を適用したタイムスタンプ付加装置の一実施の形態の構成例を示すブロック図である。
【図２】MPEG2-TSの構成例を示す図である。
【図３】タイムスタンプ付加装置１１が、MPEG2-TSにタイムスタンプを付加する処理を説明するフローチャートである。
【図４】PCR検出処理を説明するフローチャートである。
【図５】時間間隔およびタイムスタンプ値を算出する処理について説明する図である。
【図６】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【符号の説明】
【０１３６】
１１  タイムスタンプ付加装置，  １２  メモリ，  １３  CPU，  １４  パケット解析部，  １５  時間間隔算出部，  １６  タイムスタンプ算出部，  １７  システムバス，  １８  不連続検出部，  １９  PCR検出部
【図１】
0004475336.tif 000002
【図２】
0004475336.tif 000003
【図３】
0004475336.tif 000004
【図４】
0004475336.tif 000005
【図５】
0004475336.tif 000006
【図６】
0004475336.tif 000007