(57)【特許請求の範囲】
【請求項１】
１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置であって、
前記パケットはヘッダおよびペイロードを含み、前記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、前記複数のパケットの各々のヘッダは時刻情報を含み、
基準クロックを生成するためのクロック生成部と、
前記基準クロックに基づいてカウント値を更新するためのカウンタと、
前記カウント値および前記時刻情報に基づいて前記クロック生成部を制御することにより、前記基準クロックの周波数を調整するためのクロック調整部とを備え、
前記ストリーム処理装置は、さらに、
前記パケットのペイロードに対して所定の処理を行うためのペイロード処理部を備え、
前記ペイロード処理部は、前記クロック再生用情報および前記時刻情報が同期している場合には、前記基準クロックのタイミングに従って前記所定の処理を行う、ストリーム処理装置。
【請求項２】
１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置であって、
前記パケットはヘッダおよびペイロードを含み、前記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、前記複数のパケットの各々のヘッダは時刻情報を含み、
基準クロックを生成するためのクロック生成部と、
前記基準クロックに基づいてカウント値を更新するためのカウンタと、
前記カウント値および前記時刻情報に基づいて前記クロック生成部を制御することにより、前記基準クロックの周波数を調整するためのクロック調整部とを備え、
前記クロック調整部は、前記カウント値および前記時刻情報に基づいて、前記パケット用の仮想的なバッファの評価値を算出し、算出した前記評価値に応じて前記クロック生成部を制御することにより、前記基準クロックの周波数を調整する、ストリーム処理装置。
【請求項３】
前記クロック調整部は、前記カウント値および前記時刻情報に基づいて、前記パケット用の仮想的なバッファの評価値を算出し、算出した前記評価値に応じて前記クロック生成部を制御することにより、前記基準クロックの周波数を調整する、請求項１に記載のストリーム処理装置。
【請求項４】
前記クロック調整部は、前記カウント値および前記時刻情報の差に基づいて、前記基準クロックの周波数を調整する、請求項１から請求項３のいずれか１項に記載のストリーム処理装置。
【請求項５】
前記クロック調整部は、前記カウント値および前記時刻情報の大小関係に基づいて１または複数の前記パケットを選択し、選択した前記パケットのデータ量の合計に基づいて前記基準クロックの周波数を調整する、請求項１から請求項３のいずれか１項に記載のストリーム処理装置。
【請求項６】
前記クロック調整部は、前記差が所定値になるように、前記基準クロックの周波数を調整する、請求項４に記載のストリーム処理装置。
【請求項７】
前記クロック調整部は、前記複数のパケットの一部の前記時刻情報と前記カウント値との差に基づいて、前記基準クロックの周波数を調整する、請求項４または請求項６に記載のストリーム処理装置。
【請求項８】
前記クロック調整部は、前記合計が所定値になるように、前記基準クロックの周波数を調整する、請求項５に記載のストリーム処理装置。
【請求項９】
前記クロック調整部は、前記カウント値および前記時刻情報の差を、仮想的なバッファにおける前記パケットの滞留時間として算出し、算出した前記滞留時間に基づいて前記基準クロックの周波数を調整する、請求項４、請求項６または請求項７に記載のストリーム処理装置。
【請求項１０】
前記クロック調整部は、前記時刻情報が前記カウント値以下となる１または複数の前記パケットのデータ量の合計を、仮想的なバッファにおける前記パケットの蓄積量として算出し、算出した前記蓄積量に基づいて前記基準クロックの周波数を調整する、請求項５または請求項８に記載のストリーム処理装置。
【請求項１１】
１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置におけるストリーム処理方法であって、
前記パケットはヘッダおよびペイロードを含み、前記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、前記複数のパケットの各々のヘッダは時刻情報を含み、
基準クロックを生成するステップと、
前記基準クロックに基づいてカウント値を更新するステップと、
前記カウント値および前記時刻情報に基づいて、前記基準クロックの周波数を調整するステップとを含み、
前記ストリーム処理方法は、さらに、
前記パケットのペイロードに対して所定の処理を行うステップを含み、
前記所定の処理を行うステップにおいては、前記クロック再生用情報および前記時刻情報が同期している場合には、前記基準クロックのタイミングに従って前記所定の処理を行う、ストリーム処理方法。
【請求項１２】
１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置におけるストリーム処理方法であって、
前記パケットはヘッダおよびペイロードを含み、前記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、前記複数のパケットの各々のヘッダは時刻情報を含み、
基準クロックを生成するステップと、
前記基準クロックに基づいてカウント値を更新するステップと、
前記カウント値および前記時刻情報に基づいて、前記基準クロックの周波数を調整するステップとを含み、
前記周波数を調整するステップにおいては、前記カウント値および前記時刻情報に基づいて、前記パケット用の仮想的なバッファの評価値を算出し、算出した前記評価値に応じて前記基準クロックの周波数を調整する、ストリーム処理方法。
【請求項１３】
１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置において用いられるストリーム処理プログラムであって、
前記パケットはヘッダおよびペイロードを含み、前記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、前記複数のパケットの各々のヘッダは時刻情報を含み、
コンピュータに、
基準クロックを生成するステップと、
前記基準クロックに基づいてカウント値を更新するステップと、
前記カウント値および前記時刻情報に基づいて、前記基準クロックの周波数を調整するステップと、
前記パケットのペイロードに対して所定の処理を行うステップとを実行させるためのプログラムであり、
前記所定の処理を行うステップにおいては、前記クロック再生用情報および前記時刻情報が同期している場合には、前記基準クロックのタイミングに従って前記所定の処理を行う、ストリーム処理プログラム。
【請求項１４】
１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置において用いられるストリーム処理プログラムであって、
前記パケットはヘッダおよびペイロードを含み、前記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、前記複数のパケットの各々のヘッダは時刻情報を含み、
コンピュータに、
基準クロックを生成するステップと、
前記基準クロックに基づいてカウント値を更新するステップと、
前記カウント値および前記時刻情報に基づいて、前記基準クロックの周波数を調整するステップとを実行させるためのプログラムであり、
前記周波数を調整するステップにおいては、前記カウント値および前記時刻情報に基づいて、前記パケット用の仮想的なバッファの評価値を算出し、算出した前記評価値に応じて前記基準クロックの周波数を調整する、ストリーム処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム処理装置、ストリーム処理方法およびストリーム処理プログラムに関し、遅延時間を増大させることなく、基準クロックの周波数を調整するためのストリーム処理装置、ストリーム処理方法およびストリーム処理プログラムに関する。
【背景技術】
【０００２】
特開２００７−１０４０８５号公報（特許文献１）には、バッファに蓄積したパケットの占有量を監視することにより、基準クロックの周波数を調整するための技術が開示されている。すなわち、第２のデータストリームのパケットを第１のデータストリームに対応したフォーマットへ変換する際に、パケットを一旦バッファリングする場合において、第２のデータストリームのパケットをバッファに格納し、このバッファに対するパケットの占有量を調べる。そして、占有量が予め定めた規定範囲を下回るときはバッファからパケットを読み出すペースを遅くし、占有量が規定範囲を上回るときはバッファからパケットを読み出すペースを早くし、占有量が規定範囲内にあるときはバッファからパケットを所定のペースで読み出す。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１０４０８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の技術では、基準クロックの周波数を調整するために、予め定めた規定範囲までパケットをバッファへ蓄積する必要がある。たとえば、受信されたパケットが順次バッファに蓄積されていき、パケットが予め定めた規定範囲まで蓄積された後に、最初に受信されたパケットは、バッファから取り出されて次の処理へ移される。従って、パケットが、バッファへ入ってからバッファを出るまでの滞留時間が発生し、パケットを受信しても、滞留時間を経過するまで当該パケットの処理を行うことができない。すなわち、受信したパケットを次の処理へ移すまでの遅延時間が発生してしまう。
【０００５】
この発明は、上述の課題を解決するためになされたもので、その目的は、ストリームを処理する構成において、遅延時間を増大させることなく、基準クロックの周波数を調整することが可能なストリーム処理装置、ストリーム処理方法およびストリーム処理プログラムを提供することである。
【課題を解決するための手段】
【０００６】
（１）上記課題を解決するために、この発明のある局面に係わるストリーム処理装置は、１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置であって、上記パケットはヘッダおよびペイロードを含み、上記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、上記複数のパケットの各々のヘッダは時刻情報を含み、基準クロックを生成するためのクロック生成部と、上記基準クロックに基づいてカウント値を更新するためのカウンタと、上記カウント値および上記時刻情報に基づいて上記クロック生成部を制御することにより、上記基準クロックの周波数を調整するためのクロック調整部とを備える。
【０００７】
このように、カウント値および時刻情報は、ストリーム処理装置がパケットを受信した時刻から取得することができるので、クロック生成部を制御する処理およびデコードする処理を、当該時刻から開始することができ、かつゲートにおけるバッファが不要となり、映像のデコード処理もすぐに開始することができる。従って、ストリーム処理装置がパケットを受信した時刻から、当該パケットをたとえばデコード処理するまでの遅延時間の増大を抑制することができる。
【０００８】
また、ストリーム処理装置におけるクロックに基づいたカウント値、およびＶＯＤ（Video On Demand）サーバ等の局側装置におけるクロックに基づいた時刻情報を利用することにより、ストリーム処理装置におけるクロックを、局側装置におけるクロックに同期させることができる。
【０００９】
このように、カウント値が局側装置におけるクロックと同期するので、ストリーム処理装置は、ストリーム処理装置におけるクロックに基づいて処理を行うことにより、局側装置におけるクロックに基づいて作成されたストリームを、局側装置におけるストリームの各パケットの処理タイミングと同様のタイミング関係で、ストリームの各パケットを処理することができる。
【００１０】
（２）好ましくは、上記クロック調整部は、上記カウント値および上記時刻情報に基づいて、上記パケット用の仮想的なバッファの評価値を算出し、算出した上記評価値に応じて上記クロック生成部を制御することにより、上記基準クロックの周波数を調整する。
【００１１】
このような構成により、実際にバッファを設けることなく、仮想的なバッファの評価値を算出することができるため、ストリーム処理装置におけるクロックを適切に制御することができる。
【００１２】
そして、ストリーム処理装置は、バッファを実装しないので、受信したパケットを、バッファに滞留させることなく次の処理へ移すことができる。
【００１３】
（３）好ましくは、上記クロック調整部は、上記カウント値および上記時刻情報の差に基づいて、上記基準クロックの周波数を調整する。
【００１４】
このように、ストリーム処理装置におけるクロックに基づいたカウント値、および局側装置におけるクロックに基づいた時刻情報の差を計算することにより、ストリーム処理装置における動作タイミング、および局側装置における動作タイミングのずれの経時的な変化を分析することができるので、ストリーム処理装置におけるクロックの調整を正確に行うことができる。
【００１５】
また、上記差を算出するために必要なカウント値および時刻情報は、パケットを受信した時刻において取得するので、上記差を算出するための処理を、当該時刻から開始することができる。従って、ストリーム処理装置は、上記パケットを受信した時刻において、ストリーム処理装置におけるクロックの周波数の調整に、上記差を反映させることができる。
【００１６】
（４）好ましくは、上記クロック調整部は、上記カウント値および上記時刻情報の大小関係に基づいて１または複数の上記パケットを選択し、選択した上記パケットのデータ量の合計に基づいて上記基準クロックの周波数を調整する。
【００１７】
このような構成により、バッファにおけるパケットの蓄積量を仮想的に求めることができるため、上記蓄積量を経時的に監視することにより、ストリーム処理装置における動作タイミング、および局側装置における動作タイミングのずれの経時的な変化を分析することができる。これにより、ストリーム処理装置におけるクロックの調整を正確に行うことができる。
【００１８】
（５）より好ましくは、上記クロック調整部は、上記差が所定値になるように、上記基準クロックの周波数を調整する。
【００１９】
ストリーム処理装置におけるクロックおよび局側装置におけるクロックが同期していると、ストリーム処理装置におけるクロックに基づいたカウント値、および局側装置におけるクロックに基づいた時刻情報の差が一定になるので、上記差が一定になる。ストリーム処理装置におけるクロックの周波数を調整することにより、ストリーム処理装置におけるクロックを局側装置におけるクロックに同期させることができる。
【００２０】
（６）より好ましくは、上記クロック調整部は、上記複数のパケットの一部の上記時刻情報と上記カウント値との差に基づいて、上記基準クロックの周波数を調整する。
【００２１】
このような構成により、ストリーム処理装置が受信する全てのパケットでなく、一部のパケットからストリーム処理装置におけるクロックに基づいたカウント値、および局側装置におけるクロックに基づいた時刻情報の差を計算するので、ストリーム処理装置における計算の負担を軽減することができる。
【００２２】
（７）より好ましくは、上記クロック調整部は、上記合計が所定値になるように、上記基準クロックの周波数を調整する。
【００２３】
このように、ストリーム処理装置により受信されたパケットにおいて、当該パケットを受信したタイミングから、カウント値が時刻情報の示す値となるタイミングまでの間、当該パケットのバイト数を合計に含める。ストリーム処理装置におけるクロックおよび局側装置におけるクロックが同期していると、上記合計が一定になるので、上記合計が一定になるようにストリーム処理装置におけるクロックの周波数を調整することにより、ストリーム処理装置におけるクロックを局側装置におけるクロックに同期させることができる。
【００２４】
（８）より好ましくは、上記クロック調整部は、上記カウント値および上記時刻情報の差を、仮想的なバッファにおける上記パケットの滞留時間として算出し、算出した上記滞留時間に基づいて上記基準クロックの周波数を調整する。
【００２５】
このような構成により、仮想的なバッファの評価値として、仮想的な滞留時間を計算することができるため、ストリーム処理装置におけるクロックの調整を正確に行うことができる。
【００２６】
（９）より好ましくは、上記クロック調整部は、上記時刻情報が上記カウント値以下となる１または複数の上記パケットのデータ量の合計を、仮想的なバッファにおける上記パケットの蓄積量として算出し、算出した上記蓄積量に基づいて上記基準クロックの周波数を調整する。
【００２７】
このような構成により、仮想的なバッファの評価値として、仮想的な蓄積量を計算することができるため、ストリーム処理装置におけるクロックの調整を正確に行うことができる。
【００２８】
（１０）好ましくは、上記ストリーム処理装置は、さらに、上記パケットのペイロードに対して所定の処理を行うためのペイロード処理部を備え、上記ペイロード処理部は、上記クロック再生用情報および上記時刻情報が同期している場合には、上記基準クロックのタイミングに従って上記所定の処理を行う。
【００２９】
このように、クロック再生用情報および時刻情報が同期していると、ストリーム処理装置は、クロック再生用情報によりクロックを再生させるための、受信したパケットに対するゲート動作を行う必要がないので、速やかに上記パケットに所定の処理を行うことができる。
【００３０】
また、クロック再生用情報によりクロックを再生させるための動作が不要になるので、ストリーム処理装置における処理負担を軽減することができ、かつゲートおよび当該ゲートにおけるバッファも不要となる。
【００３１】
（１１）また、この発明のある局面に係わるストリーム処理方法は、１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置におけるストリーム処理方法であって、上記パケットはヘッダおよびペイロードを含み、上記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、上記複数のパケットの各々のヘッダは時刻情報を含み、基準クロックを生成するステップと、上記基準クロックに基づいてカウント値を更新するステップと、上記カウント値および上記時刻情報に基づいて、上記基準クロックの周波数を調整するステップとを含む。
【００３２】
このように、カウント値および時刻情報は、ストリーム処理装置がパケットを受信した時刻から取得することができるので、クロック生成部を制御する処理およびデコードする処理を、当該時刻から開始することができ、かつゲートにおけるバッファが不要となり、映像のデコード処理もすぐに開始することができる。従って、ストリーム処理装置がパケットを受信した時刻から、当該パケットをたとえばデコード処理するまでの遅延時間の増大を抑制することができる。
【００３３】
また、ストリーム処理装置におけるクロックに基づいたカウント値、およびＶＯＤサーバ等の局側装置におけるクロックに基づいた時刻情報を利用することにより、ストリーム処理装置におけるクロックを、局側装置におけるクロックに同期させることができる。
【００３４】
このように、カウント値が局側装置におけるクロックと同期するので、ストリーム処理装置は、ストリーム処理装置におけるクロックに基づいて処理を行うことにより、局側装置におけるクロックに基づいて作成されたストリームを、局側装置におけるストリームの各パケットの処理タイミングと同様のタイミング関係で、ストリームの各パケットを処理することができる。
【００３５】
（１２）また、この発明のある局面に係わるストリーム処理プログラムは、１または複数の番組の情報を複数のパケットに分割したストリームを処理するためのストリーム処理装置において用いられるストリーム処理プログラムであって、上記パケットはヘッダおよびペイロードを含み、上記複数のパケットの少なくとも一部のヘッダはクロック再生用情報を含み、上記複数のパケットの各々のヘッダは時刻情報を含み、コンピュータに、基準クロックを生成するステップと、上記基準クロックに基づいてカウント値を更新するステップと、上記カウント値および上記時刻情報に基づいて、上記基準クロックの周波数を調整するステップとを実行させるためのプログラムである。
【００３６】
このように、カウント値および時刻情報は、ストリーム処理装置がパケットを受信した時刻から取得することができるので、クロック生成部を制御する処理およびデコードする処理を、当該時刻から開始することができ、かつゲートにおけるバッファが不要となり、映像のデコード処理もすぐに開始することができる。従って、ストリーム処理装置がパケットを受信した時刻から、当該パケットをたとえばデコード処理するまでの遅延時間の増大を抑制することができる。
【００３７】
また、ストリーム処理装置におけるクロックに基づいたカウント値、およびＶＯＤサーバ等の局側装置におけるクロックに基づいた時刻情報を利用することにより、ストリーム処理装置におけるクロックを、局側装置におけるクロックに同期させることができる。
【００３８】
このように、カウント値が局側装置におけるクロックと同期するので、ストリーム処理装置は、ストリーム処理装置におけるクロックに基づいて処理を行うことにより、局側装置におけるクロックに基づいて作成されたストリームを、局側装置におけるストリームの各パケットの処理タイミングと同様のタイミング関係で、ストリームの各パケットを処理することができる。
【発明の効果】
【００３９】
本発明によれば、ストリームを処理する構成において、遅延時間を増大させることなく、基準クロックの周波数を調整することが可能なストリーム処理装置、ストリーム処理方法およびストリーム処理プログラムを提供することである。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の形態に係るストリーム処理システムの構成を示す図である。
【図２】本発明の実施の形態に係るストリーム処理装置において処理されるストリームの一例を示す図である。
【図３】本発明の実施の形態に係るストリーム処理装置の構成を示す図である。
【図４】本発明の実施の形態に係るストリーム処理装置において仮想バッファを用いて算出した平均仮想滞留時間に基づいてＴＴＳクロックの再生処理を行う際の動作手順を定めたフローチャートである。
【図５】本発明の実施の形態に係るストリーム処理装置において仮想バッファにおける仮想蓄積量の算出処理を行う際の動作手順を定めたフローチャートである。
【図６】本発明の実施の形態に係るストリーム処理装置において仮想バッファを用いて算出した平均仮想蓄積量に基づいてＴＴＳクロックの再生処理を行う際の動作手順を定めたフローチャートである。
【図７】本発明の実施の形態に係るストリーム処理装置において受信したＴＴＳパケットを処理する際の動作手順を定めたフローチャートである。
【発明を実施するための形態】
【００４１】
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００４２】
［ストリーム処理システムの概要］
図１は、本発明の実施の形態に係るストリーム処理システムの構成を示す図である。
図１を参照して、ストリーム処理システム１３は、ＶＯＤサーバ等の局側装置１０と、ストリーム処理装置２０と、表示装置１２とを備える。なお、局側装置１０は、ネットワーク１１を経由してストリーム処理装置２０と接続される。
【００４３】
局側装置１０は、１または複数の番組の情報を含むストリームをネットワーク１１経由で送信する。ネットワーク１１は、たとえばインターネットであり、局側装置１０およびストリーム処理装置２０は、ＩＰ（Internet Protocol）によりストリームを送受信する。
【００４４】
図２は、本発明の実施の形態に係るストリーム処理装置において処理されるストリームの一例を示す図である。
図２を参照して、図２の（Ａ）は、たとえばＭＰＥＧ２−ＴＳ（Moving Picture Experts Group 2 Transport Stream）規格のコンテナ形式を用いて、局側装置から送信されるストリームを示し、当該ストリームには、番組の情報が含まれる。
【００４５】
ＭＰＥＧ２―ＴＳは、複数のＴＳパケットを含む。ＴＳパケットは、１８８バイトのデータを有し、ＴＳヘッダおよびペイロードを含む。Ｖ１、Ｖ２、Ｖ３およびＶ４等で示されるビデオＴＳパケットは、ペイロードにおいて、たとえばＭＰＥＧ２またはＨ．２６４／ＡＶＣ等により上記番組の情報を符号化したビデオデータであるビデオＥＳ（Elementary Stream）を含む。また、ＴＳヘッダは、ペイロードに含まれるビデオデータに対応するＰＩＤ（Packet Identifier）等の情報を含む。
【００４６】
Ａ１で示されるオーディオＴＳパケットは、ペイロードにおいて、音声情報を符号化したオーディオデータであるオーディオＥＳ（Elementary Stream）を含む。また、ＴＳヘッダは、ペイロードに含まれるオーディオデータに対応するＰＩＤ等の情報を含む。
【００４７】
ＰＣＲ（Program Clock Reference）で示されるＰＣＲパケットは、ＴＳヘッダに含まれるアダプテーションフィールドにおいて、ＰＣＲを含む。ＰＣＲは、たとえばストリーム処理装置２０のＳＴＣ（System Time Clock）またはＰＣＲクロックを、局側装置で用いられるＰＣＲクロックと同期させるために用いる。以下、局側装置１０におけるＰＣＲクロックを局側ＰＣＲクロックと称する。
【００４８】
ＮＵＬＬで示されるヌルパケットは、データを含まないＴＳパケットであり、０ｘ１ＦＦＦのＰＩＤで示される。ＴＳストリームが放送波により送信される場合、所定の周波数帯域および時間を占有して送信することから、送信するデータ量が少ない際にヌルパケットをＴＳストリームに挿入することにより、伝送ビットレートの調整が行われる。
【００４９】
一方、図１に示すようなインターネット等のネットワーク１１を経由して局側装置１０からストリームを送信する場合、送信するデータ量を減らすことにより情報伝送に必要な周波数帯域および時間を節約することが好ましい。
【００５０】
従って、局側装置１０は、たとえば図２の（Ａ）に示すＭＰＥＧ２−ＴＳをネットワーク１１経由で再送信する際に、ヌルパケット等の番組の情報に関係のないＴＳパケットを削除した、図２の（Ｂ）に示すたとえばＭＰＥＧ２−ＴＴＳ（Timestamped TS）に変換する。これにより、局側装置１０は、情報伝送に必要な周波数帯域および時間を節約することができる。
【００５１】
ネットワーク１１経由で送信されるストリームには、複数のＴＴＳパケットが含まれる。ＴＴＳパケットは、４バイトのＴＴＳヘッダがＴＳパケットに付加されたパケットであり、１９２バイトの大きさを持つ。ＴＴＳヘッダには、４バイトのタイムスタンプが含まれる。なお、ＴＴＳヘッダは、ＴＳヘッダに含められてもよい。
【００５２】
ストリーム処理装置２０は、ネットワーク１１経由で局側装置１０からＴＴＳパケットを受信すると、受信したＴＴＳパケットに含まれる符号化された番組の情報をデコーダにおいてデコードし、デコードした番組画像および音声情報を、たとえば表示装置１２において再生させる。
【００５３】
しかしながら、局側装置１０がネットワーク１１経由でストリームを送信する場合、ネットワーク１１における伝送速度、通信経路、中継機器の処理能力または回線の混雑度等の揺らぎ、およびＮＵＬＬパケットの削除等により上記ストリームに含まれるパケットが局側装置１０からストリーム処理装置２０までの伝送時間は、パケット毎にばらついてしまう。このため、以下の問題が発生する。
【００５４】
すなわち、局側装置１０は、放送波によりストリームの各パケットを送信する際は、当該各パケットが送信される時刻の差である相対送信タイミングを、当該各パケットをデコーダへ投入すべき時刻の差である相対デコードタイミングに合わせて、当該各パケットを送信する。具体的には、局側装置１０は、たとえば第一のパケットに続く第二のパケットをデコーダへ投入すべきタイミングが第一のパケットの１秒後である場合、第二のパケットを第一のパケットの１秒後に放送波により送信する。
【００５５】
局側装置１０が放送波によりストリームのパケットを送信する場合、パケットが局側装置１０からストリーム処理装置２０へ到達するまでの伝送時間は、全てのパケットにおいて一定である。
【００５６】
従って、ストリーム処理装置２０は、放送波によりストリームを受信する際は、受信した上記ストリームの各パケットを、受信したタイミングでデコーダへ投入することにより、相対デコードタイミングを保持したまま当該各パケットをデコーダへ投入することができる。
【００５７】
一方、局側装置１０がネットワーク１１経由でストリームを送信する場合、局側装置１０からストリーム処理装置２０までのパケットの伝送時間は、パケット毎にばらついてしまう。
【００５８】
従って、ストリーム処理装置２０は、ネットワーク１１経由で受信した上記ストリームの各パケットを、受信したタイミングでデコーダへ投入しても、相対デコードタイミングを保持したまま当該各パケットをデコーダへ投入することができない。これにより、ストリーム処理装置２０は、上記ストリームに含まれる番組の情報を適切に再生することができなくなる。
【００５９】
このため、局側装置１０は、各ＴＳパケットをデコーダへ投入すべき相対デコードタイミングを示す時刻情報を、２７ＭＨｚの局側装置１０におけるＴＴＳクロックに基づいて生成する。そして、局側装置１０は、上記ＴＳパケットに、生成した時刻情報をＴＴＳタイムスタンプとして含むＴＴＳヘッダを付加することによりＴＴＳパケットを作成し、作成したＴＴＳパケットをネットワーク１１経由で送信する。以下、局側装置１０におけるＴＴＳクロックを局側ＴＴＳクロックと称する。
【００６０】
ストリーム処理装置２０は、自己における基準クロックを局側ＴＴＳクロックに同期させることができれば、受信したＴＴＳパケットにおけるＴＴＳタイムスタンプに基づいて、相対デコードタイミングでパケットをデコーダへ投入することができる。
【００６１】
［ストリーム処理装置の構成］
図３は、本発明の実施の形態に係るストリーム処理装置の構成を示す図である。
図３を参照して、ストリーム処理装置２０は、タイムスタンプ取得部２１と、ＴＴＳゲート部２２と、仮想バッファ演算部（クロック調整部）２３と、ＴＴＳカウンタ部（カウンタ）２４と、ＴＴＳクロック調整部（クロック調整部）２５と、ＴＴＳクロック生成部２６と、デマックス部２７と、ＰＣＲ回復部２８と、ビデオＥＳバッファ２９と、ビデオデコーダ部（ペイロード処理部）３０と、オーディオＥＳバッファ３１と、オーディオデコーダ部（ペイロード処理部）３２とを備える。
【００６２】
タイムスタンプ取得部２１は、ストリーム処理装置２０が受信したストリームに含まれるＴＴＳパケットのＴＴＳヘッダからＴＴＳタイムスタンプを取得し、取得したＴＴＳタイムスタンプを仮想バッファ演算部２３へ出力する。そして、タイムスタンプ取得部２１は、ＴＴＳタイムスタンプを取得済のＴＴＳパケットを、ＴＴＳゲート部２２へ出力する。
【００６３】
ＴＴＳゲート部２２は、タイムスタンプ取得部２１からＴＴＳパケットを受けると、受けたＴＴＳパケットのＴＴＳタイムスタンプおよびＴＴＳカウンタ部２４におけるカウント値に基づいてゲート動作を行う。より詳細には、ＴＴＳゲート部２２は、ＴＴＳパケットを受けると、ＴＴＳカウンタ部２４からのカウント値を監視し、当該カウント値が当該ＴＴＳパケットのＴＴＳタイムスタンプと一致すると、当該ＴＴＳパケットからＴＴＳヘッダを削除することによりＴＳパケットを作成し、作成したＴＳパケットをデマックス部２７へ出力する。
【００６４】
また、ＴＴＳゲート部２２は、ストリームにおけるＴＴＳパケットのＴＴＳタイムスタンプ、および後述するＰＣＲパケットのＰＣＲが同期している場合、ゲート動作を行わない。ここでいう同期とは、ＴＴＳタイムスタンプおよびＰＣＲが同一のクロックにより生成されるカウント値であることを意味する。
【００６５】
たとえば、ＴＴＳゲート部２２は、複数のＰＣＲパケットからＰＣＲ、および上記ＰＣＲパケットのＴＴＳタイムスタンプを取得する。そして、ＴＴＳゲート部２２は、取得した各パケットにおけるＰＣＲおよびＴＴＳタイムスタンプの差が一定である場合、ＴＴＳタイムスタンプおよびＰＣＲが同期していると判断する。なお、ストリーム処理システム上同期していることが定まっていれば、すなわち局側装置１０において同期していることが定まっていれば、特に判断の必要はない。
【００６６】
ＴＴＳクロック生成部２６は、ストリーム処理装置２０における基準クロックであるＴＴＳクロックを生成する。ＴＴＳクロック生成部２６によって生成されたＴＴＳクロックは、ＴＴＳカウンタ部２４または図示しないＰＣＲカウンタに用いる２７ＭＨｚの基準クロックとして用いられる。具体的には、ＴＴＳクロック生成部２６は、ＶＣＸＯ（Voltage Controlled Xtal Oscillator）を含み、たとえば水晶などの結晶を用いた発振器である。ＶＣＸＯへ出力する電圧を調整することにより、ＶＣＸＯの共鳴周波数が変化する。
【００６７】
ＴＴＳクロック生成部２６は、たとえばＶＣＸＯにより生成したクロックをＴＴＳカウンタ部２４へ出力する。また、ＴＴＳクロック調整部２５によりＶＣＸＯへ出力する電圧が調整され、これによりＴＴＳクロック生成部２６がＴＴＳカウンタ部２４へ出力するクロックの周波数が変化する。以下、ストリーム処理装置２０におけるＴＴＳクロックをローカルＴＴＳクロックと称する場合がある。
【００６８】
ＴＴＳカウンタ部２４は、たとえばＴＴＳクロック生成部２６から受けたクロックに基づいて、ＴＴＳカウント値を更新する。そして、ＴＴＳカウンタ部２４は、更新したカウント値をＴＴＳゲート部２２および仮想バッファ演算部２３へ出力する。具体的には、ＴＴＳカウント値は、たとえばクロックを受けるごとにＴＴＳカウント値をインクリメントする。従って、ＴＴＳカウンタ部２４は、時間が経過するに従い、ＴＴＳクロックと同期してカウント値を増加させる。これにより、カウント値は、現在時刻として利用でき、当該カウント値の大小関係から時系列の前後関係を取得することができる。
【００６９】
仮想バッファ演算部２３は、ＴＴＳカウンタ部２４から取得したＴＴＳカウント値およびタイムスタンプ取得部２１から受けたＴＴＳタイムスタンプに基づいて、仮想的なバッファの評価値として仮想バッファ滞留時間および仮想バッファ蓄積量を計算する。そして、仮想バッファ演算部２３は、計算した仮想バッファ滞留時間および仮想バッファ蓄積量に応じて、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックと比べて高い、低いまたは適切かどうかを判断し、判断した結果をＴＴＳクロック調整部２５へ通知する。
【００７０】
より詳細には、仮想バッファ演算部２３は、仮想バッファ滞留時間を計算する際には、以下の動作を行う。すなわち、仮想バッファ演算部２３は、ユーザによる番組選択またはエラー発生等の後、最初のＴＴＳタイムスタンプをタイムスタンプ取得部２１から受けると、ＴＴＳカウンタ部２４におけるカウント値を、当該最初のＴＴＳタイムスタンプで初期化する。そして、仮想バッファ演算部２３は、タイムスタンプ取得部２１からＴＴＳタイムスタンプを受けると共に、ＴＴＳカウンタ部２４から現在の時刻を示すＴＴＳカウント値を取得する。上記ＴＴＳカウント値は、ストリーム処理装置２０が上記ＴＴＳタイムスタンプに対応するＴＴＳパケットを受信した時刻を示す。
【００７１】
そして、仮想バッファ演算部２３は、上記ＴＴＳタイムスタンプおよび上記ＴＴＳカウント値の差を計算し、計算した差を仮想バッファにおける仮想滞留時間を示すΔｔとする。仮想バッファ演算部２３は、複数のＴＴＳパケットに対してΔｔを計算し、計算した複数のΔｔに基づいてΔｔの傾向を分析する。
【００７２】
この際、仮想バッファ演算部２３は、たとえば計算した２つのΔｔから、Δｔの傾向を分析してもよい。また、仮想バッファ演算部２３は、たとえば複数のΔｔの移動平均を示すＡｖｇΔｔを計算し、計算したＡｖｇΔｔに基づいてＡｖｇΔｔの傾向を分析してもよい。
【００７３】
仮想バッファ演算部２３は、たとえばΔｔまたはＡｖｇΔｔが増加傾向にある場合、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて低いと判断する。仮想バッファ演算部２３がこの際行う判断の詳細については、後述する。
【００７４】
また、仮想バッファ演算部２３は、たとえばΔｔまたはＡｖｇΔｔが減少傾向にある場合、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて高いと判断する。また、仮想バッファ演算部２３は、たとえばΔｔまたはＡｖｇΔｔが一定である場合、ローカルＴＴＳクロックの周波数および局側ＴＴＳクロックの周波数が同じであると判断する。
【００７５】
そして、仮想バッファ演算部２３は、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて、高い、低いまたは同じのいずれかを示す上記判断結果をクロック調整部２５へ通知する。
【００７６】
また、仮想バッファ演算部２３は、仮想バッファ蓄積量を計算する際には、以下の動作を行う。すなわち、仮想バッファ演算部２３は、タイムスタンプ取得部２１からＴＴＳタイムスタンプを受けると共に、仮想蓄積量であるＳｎに１９２を加える。１９２は、ＴＴＳパケットのバイト数を示す。
【００７７】
そして、仮想バッファ演算部２３は、上記ＴＴＳタイムスタンプを、上記ＴＴＳタイムスタンプに対応するＴＴＳパケットが仮想バッファを出る時刻とみなし、ＴＴＳカウンタ部２４におけるＴＴＳカウント値を監視することにより、ＴＴＳカウント値が上記時刻を示すタイミングにおいて以下の動作を行う。
【００７８】
すなわち、仮想バッファ演算部２３は、ＴＴＳカウント値および上記ＴＴＳタイムスタンプが一致すると、仮想バッファにおける仮想蓄積量であるＳｎから１９２を減算する。仮想バッファ演算部２３は、上記処理を、複数のＴＴＳパケットについて行うことによりＳｎを計算する。言い換えれば、仮想バッファ演算部２３は、ＴＴＳパケットのＴＴＳタイムスタンプが、ＴＴＳカウント値以上であるＴＴＳパケットを選択し、選択したＴＴＳパケットの大きさの合計であるＳｎを算出する。
【００７９】
仮想バッファ演算部２３は、たとえばＴＴＳカウンタ部２４におけるＴＴＳカウント値を監視し、当該ＴＴＳカウント値が所定の値を増加させる毎にＳｎを取得し、取得した複数のＳｎに基づいてＳｎの傾向を分析する。
【００８０】
この際、仮想バッファ演算部２３は、たとえば計算した２つのＳｎからＳｎの傾向を分析してもよい。また、仮想バッファ演算部２３は、たとえば複数のＳｎの移動平均を示すＡｖｇＳｎを計算し、計算したＡｖｇＳｎに基づいてＡｖｇＳｎの傾向を分析してもよい。
【００８１】
仮想バッファ演算部２３は、たとえばＳｎまたはＡｖｇＳｎが増加傾向にある場合、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて低いと判断する。仮想バッファ演算部２３がこの際行う判断の詳細については、後述する。
【００８２】
また、仮想バッファ演算部２３は、たとえばＳｎまたはＡｖｇＳｎが減少傾向にある場合、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて高いと判断する。また、仮想バッファ演算部２３は、たとえばＳｎまたはＡｖｇＳｎが一定である場合、ローカルＴＴＳクロックの周波数および局側ＴＴＳクロックの周波数が同じであると判断する。
【００８３】
そして、仮想バッファ演算部２３は、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて、高い、低いまたは同じのいずれかを示す上記判断結果をクロック調整部２５へ通知する。
【００８４】
ＴＴＳクロック調整部２５は、仮想バッファ演算部２３からの判断結果に基づいて、ＴＴＳクロック生成部２６におけるＴＴＳクロックの周波数を調整する。具体的には、ＴＴＳクロック調整部２５は、ＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて低いことを示す判断結果を仮想バッファ演算部２３から受けると、ＴＴＳクロック生成部２６におけるＶＣＸＯへ出力する電圧を調整することにより、ＴＴＳクロックの周波数を高くする。
【００８５】
また、ＴＴＳクロック調整部２５は、ＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて高いことを示す判断結果を仮想バッファ演算部２３から受けると、ＴＴＳクロック生成部２６におけるＶＣＸＯへ出力する電圧を調整することにより、ＴＴＳクロックの周波数を低くする。
【００８６】
デマックス部２７は、たとえばＴＴＳゲート部２２から受けたビデオＴＳパケット、オーディオＴＳパケットまたはＰＣＲパケット等のＴＳパケットを、ＰＩＤで識別して分離する。より詳細には、デマックス部２７は、ＴＴＳゲート部２２からビデオＴＳパケットを受けると、受けたビデオＴＳパケットをＴＳヘッダおよびペイロードに分離し、分離したペイロードに含まれるビデオデータをビデオＥＳバッファ２９へ出力する。
【００８７】
また、デマックス部２７は、ＴＴＳゲート部２２からオーディオＴＳパケットを受けると、受けたオーディオＴＳパケットをＴＳヘッダおよびペイロードに分離し、分離したペイロードに含まれるオーディオデータをオーディオＥＳバッファ３１へ出力する。
【００８８】
また、デマックス部２７は、ＴＴＳゲート部２２からＰＣＲパケットを受けると、受けたＰＣＲパケットをＴＳヘッダおよびペイロードに分離し、分離したＴＳヘッダのアダプテーションフィールドに含まれるＰＣＲを取得し、取得したＰＣＲをＰＣＲ回復部２８へ出力する。
【００８９】
ＰＣＲ回復部２８は、デマックス部２７からＰＣＲを受けると、受けたＰＣＲおよび図示しないストリーム処理装置２０におけるＰＣＲクロックに基づくＰＣＲカウント値を比較する。以下、ストリーム処理装置２０におけるＰＣＲクロックをローカルＰＣＲクロックと称する場合がある。
【００９０】
ＰＣＲは、局側ＰＣＲクロックに基づいて付与されるカウント値であるので、ＰＣＲ回復部２８は、複数のＰＣＲパケットにおいて、ＰＣＲおよびＰＣＲカウント値の差が一定となるようにローカルＰＣＲクロックの周波数を調整することにより、ローカルＰＣＲクロックを局側ＰＣＲクロックに同期させる。
【００９１】
ビデオＥＳバッファ２９は、デマックス部２７から受けたビデオデータを一時的に保持する。ビデオＥＳバッファ２９は、ビデオデコーダ部３０の要求に応じて、保持するビデオデータをビデオデコーダ部３０へ出力する。
【００９２】
ビデオデコーダ部３０は、ビデオＥＳバッファ２９において保持されるビデオデータをデコード処理する。この際、ビデオデコーダ部３０は、受信するストリームにおいてＴＴＳタイムスタンプおよびＰＣＲが同期している場合、ＴＴＳクロックを基準クロックとして用いる。また、ビデオデコーダ部３０は、受信するストリームにおいてＴＴＳタイムスタンプおよびＰＣＲが同期していない場合、ＰＣＲ回復部２８により再生されたＰＣＲクロックを基準クロックとして用いる。
【００９３】
より詳細には、ビデオデコーダ部３０は、ビデオＥＳバッファ２９において保持される、ＴＴＳパケットのペイロードに含まれるビデオＰＥＳ（Packetized Elementary Stream）のＰＥＳヘッダに含まれるＤＴＳ（Decoding Time Stamp）およびＰＴＳ（Presentation Time Stamp）を参照する。
【００９４】
ＤＴＳは、当該ビデオＰＥＳに含まれる番組画像データをデコード処理するタイミングを指定する。ＰＴＳは、当該番組画像データをデコード処理して作成した番組画像を提示するタイミングを指定する。
【００９５】
そして、ビデオデコーダ部３０は、ＤＴＳが基準クロックと一致すると、上記ＤＴＳに対応するＰＥＳに含まれるビデオデータをデコード処理することにより、番組画像を作成する。そして、ビデオデコーダ部３０は、ＰＴＳが基準クロックと一致すると、上記ＰＴＳに対応するＰＥＳに含まれるビデオデータをデコード処理することにより作成した番組画像を、たとえば表示装置１２へ出力する。
【００９６】
オーディオＥＳバッファ３１は、デマックス部２７から受けたオーディオデータを一時的に保持する。オーディオＥＳバッファ３１は、オーディオデコーダ部３２の要求に応じて、保持するオーディオデータをオーディオデコーダ部３２へ出力する。
【００９７】
オーディオデコーダ部３２は、オーディオＥＳバッファ３１において保持されるオーディオデータをデコード処理する。この際、オーディオデコーダ部３２は、受信するストリームにおいてＴＴＳタイムスタンプおよびＰＣＲが同期している場合、ＴＴＳクロックを基準クロックとして用いる。また、オーディオデコーダ部３２は、受信するストリームにおいてＴＴＳタイムスタンプおよびＰＣＲが同期していない場合、ＰＣＲ回復部２８により再生されたＰＣＲクロックを基準クロックとして用いる。
【００９８】
より詳細には、オーディオデコーダ部３２は、オーディオＥＳバッファ３１において保持される、ＴＴＳパケットのペイロードに含まれるオーディオＰＥＳのＰＥＳヘッダに含まれるＰＴＳを参照する。
【００９９】
そして、オーディオデコーダ部３２は、ＰＴＳが基準クロックと一致すると、上記ＰＴＳに対応するＰＥＳに含まれるオーディオデータをデコード処理することにより作成した音声情報を、たとえば表示装置１２へ出力する。
【０１００】
［ローカルＴＴＳクロックおよび局側ＴＴＳクロックの同期関係］
ところで、特許文献１により示される第一の技術を実装したストリーム処理装置１４は、受信したストリームのＴＴＳパケットを、ＴＴＳゲート部へ出力する前にバッファに滞留させる。そして、ＴＴＳゲート部は、バッファに滞留するＴＴＳパケットの中から、ＴＴＳカウント値と一致するＴＴＳタイムスタンプを含むＴＴＳパケットをデマックス部へ出力させる。
【０１０１】
たとえば、バッファへ入力するＴＴＳパケットの単位時間当たりのバイト数を示す入力レート、およびバッファからデマックス部へ出力するＴＴＳパケットの単位時間当たりのバイト数を示す出力レートが同じであれば、バッファに滞留するＴＴＳパケットのバイト数を示す実蓄積量は、変化しない。
【０１０２】
また、たとえば、入力レートが出力レートより大きいと、実蓄積量は、増加する。また、たとえば、入力レートが出力レートより小さいと、実蓄積量は、減少する。
【０１０３】
入力レートは、局側装置における局側ＴＴＳクロックにより決定される。また、出力レートは、ストリーム処理装置１４におけるローカルＴＴＳクロックにより決定される。従って、ストリーム処理装置１４は、実蓄積量を監視することにより、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて高い、低いまたは適正であるかどうかを判断することができる。
【０１０４】
しかしながら、上記の動作では、ストリーム処理装置１４が新しいストリームを受信する際に、バッファにある程度ＴＴＳパケットを滞留させないと、入力レートおよび出力レートの大小関係は判断できない。このため、最初のＴＴＳパケットは、バッファへ入力された後、バッファにある程度ストリームが滞留するまでバッファから出力されない。従って、実蓄積量の評価は、バッファへ入力したＴＴＳパケットがバッファから出力されるまでなされないので、遅延時間が発生してしまう。特に、入力レートが小さい場合、遅延時間が長くなってしまうという問題が発生する。また、たとえばストリーム処理装置１４は、受信したパケットがバッファを出てくるまでは、当該パケットを次の処理へ移すことができない。
【０１０５】
上記問題を解決するために、たとえば第二の技術を実装したストリーム処理装置１５が考えられる。ストリーム受信装置１５は、受信したストリームのＴＴＳパケットをバッファへ入力するタイミングで、上記タイミングを示す入力時刻を取得する。そして、ストリーム処理装置１５は、当該ＴＴＳパケットをバッファで滞留させた後、当該ＴＴＳパケットのＴＴＳタイムスタンプがＴＴＳカウント値と一致するタイミングで、上記タイミングを示す出力時刻を取得し、当該ＴＴＳパケットをデマックス部へ出力させる。ストリーム処理装置１５は、出力時刻および入力時刻の差を計算することにより、当該ＴＴＳパケットがバッファに実際に滞留した時間を示す実滞留時間を取得する。
【０１０６】
ストリーム処理装置１５は、複数のＴＴＳパケットにおける実滞留時間を取得し、取得した実滞留時間の傾向に基づいて、ストリーム処理装置１５におけるローカルＴＴＳクロックの周波数が局側装置における局側ＴＴＳクロックの周波数と比べて、高い、低いまたは適正であるかどうかを判断する。
【０１０７】
より詳細には、たとえば、ローカルＴＴＳクロックが示す時刻をＴとする。また、局側ＴＴＳクロックが示す時刻をｔとする。Ｔおよびｔの関係は、一般にはＴ＝ａ×ｔ+ｂと記述でき、ａが１の場合、ローカルＴＴＳクロックおよび局側ＴＴＳクロックが同期している。また、ａ＞１の場合、ローカルＴＴＳクロックの周波数は、局側ＴＴＳクロックの周波数より高い。また、ａ＜１の場合、ローカルＴＴＳクロックの周波数は、局側ＴＴＳクロックの周波数より低い。
【０１０８】
たとえば、局側装置は、時刻（ｔ１＋Ｌ）を示すＴＴＳタイムスタンプを付与したＴＴＳパケットを時刻ｔ１において、ストリーム処理装置１５へ送信する。ストリーム処理装置１５は、伝送時間を無視できるとして、時刻Ｔ１において当該ＴＴＳパケットをバッファへ入力する。時刻Ｔ１は、時刻（ａ×ｔ１+ｂ）に対応する。ストリーム処理装置１５は、時刻（ｔ１＋Ｌ）において当該パケットをバッファからデマックス部へ出力させる。従って、実滞留時間を示すＤ１は、時刻（ｔ１＋Ｌ）および時刻（ａ×ｔ１+ｂ）の差である、（（１−ａ）×ｔ１＋Ｌ−ｂ）となる。
【０１０９】
また、たとえば、局側装置は、時刻（ｔ２＋Ｌ）を示すＴＴＳタイムスタンプを付与したＴＴＳパケットを、時刻ｔ１より後の時刻ｔ２において、ストリーム処理装置１５へ送信する。ストリーム処理装置１５は、伝送時間を無視できるとして、時刻Ｔ２において当該ＴＴＳパケットをバッファへ入力する。時刻Ｔ２は、時刻（ａ×ｔ２+ｂ）に対応する。ストリーム処理装置１５は、時刻（ｔ２＋Ｌ）において当該パケットをバッファからデマックス部へ出力させる。従って、実滞留時間を示すＤ２は、時刻（ｔ２＋Ｌ）および時刻（ａ×ｔ２+ｂ）の差である、（（１−ａ）×ｔ２＋Ｌ−ｂ）となる。
【０１１０】
また、実滞留時間の差を示すＤ２およびＤ１の差は、（（１−ａ）×（ｔ２−ｔ１））となる。前提条件として、時刻ｔ２は、時刻ｔ１より後の時刻であるので、（ｔ２−ｔ１）は正である。たとえば、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックの周波数より高い場合、すなわちａ＞１の場合、（１−ａ）が負となるので、実滞留時間の差は、負となる。これは、時刻ｔ２が時刻ｔ１より後になればなるほど、Ｄ２は、Ｄ１より小さくなることを示している。
【０１１１】
すなわち、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックの周波数より高い場合、局側装置が送信する時刻が遅いＴＴＳパケットは、局側装置が送信する時刻が早いＴＴＳパケットと比べて、バッファにおける実滞留時間が短くなる。従って、ストリーム処理装置１５は、後に受信したＴＴＳパケットの実滞留時間が、先に受信したＴＴＳパケットの実滞留時間と比べて短い、すなわち実滞留時間が減少傾向にある場合に、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて高いと判断することができる。
【０１１２】
また、たとえば、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックの周波数より低い場合、すなわちａ＜１の場合、（１−ａ）が正となるので、実滞留時間の差は、正となる。これは、時刻ｔ２が時刻ｔ１より後になればなるほど、Ｄ２は、Ｄ１より大きくなることを示している。
【０１１３】
すなわち、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックの周波数より低い場合、局側装置が送信する時刻が遅いＴＴＳパケットは、局側装置が送信する時刻が早いＴＴＳパケットと比べて、バッファにおける実滞留時間が長くなる。従って、ストリーム処理装置１５は、後に受信したＴＴＳパケットの実滞留時間が、先に受信したＴＴＳパケットの実滞留時間と比べて長い、すなわち実滞留時間が増加傾向にある場合に、ローカルＴＴＳクロックの周波数が局側ＴＴＳクロックの周波数と比べて低いと判断することができる。
【０１１４】
また、たとえば、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックの周波数と同じ場合、すなわちａ＝１の場合、（１−ａ）が０となるので、実滞留時間の差は、０となる。これは、実滞留時間の差が、時刻ｔ１または時刻ｔ２によらないことを示している。
【０１１５】
すなわち、ローカルＴＴＳクロックの周波数が、局側ＴＴＳクロックの周波数と同じ場合、ＴＴＳパケットのバッファにおける実滞留時間は変化しない。従って、ストリーム処理装置１５は、実滞留時間が変化しない場合に、ローカルＴＴＳクロックおよび局側ＴＴＳクロックが同期していると判断することができる。
【０１１６】
ストリーム処理装置１５は、実滞留時間を取得することにより、バッファへ入力するＴＴＳパケットの単位時間当たりのバイト数に応じて遅延時間が変化するという問題を、解決することができる。
【０１１７】
しかしながら、上記の動作によっても、受信したストリームのＴＴＳパケットは、バッファへ入力してから、当該ＴＴＳパケットのＴＴＳタイムスタンプがＴＴＳカウント値と一致するタイミングまでバッファに滞留する。従って、バッファへ入力したＴＴＳパケットが、バッファから出力されるまでの遅延時間が発生してしまうという問題が残ってしまう。また、たとえばストリーム処理装置１５は、受信したパケットがバッファを出てくるまでは、当該パケットを次の処理へ移すことができない。本発明の実施の形態におけるストリーム処理装置２０では、以下の動作により上記問題を解決する。
【０１１８】
［滞留時間に基づくＴＴＳクロックの再生処理動作］
ストリーム処理装置１０は、以下に示す各シーケンス図の各ステップを図示しないメモリから読み出して実行する。このプログラムは、外部からインストールすることができる。このインストールされるプログラムは、たとえば記録媒体に格納された状態で流通する。
【０１１９】
図４は、本発明の実施の形態に係るストリーム処理装置において仮想バッファを用いて算出した平均仮想滞留時間に基づいてＴＴＳクロックの再生処理を行う際の動作手順を定めたフローチャートである。
図４を参照して、まず、ストリーム処理装置２０は、受信するストリームにおけるＴＴＳパケットを受ける（ステップＳ１０２）。
【０１２０】
次に、ストリーム処理装置２０におけるタイムスタンプ取得部２１は、たとえばｉ番目のＴＴＳパケットを受けると、受けたＴＴＳパケットにおけるＴＴＳヘッダからＴＴＳタイムスタンプを示すＴＳ［ｉ］を取得する（ステップＳ１０４）。
【０１２１】
次に、タイムスタンプ取得部２１は、取得したＴＳ［ｉ］を仮想バッファ演算部２３へ出力する。また、タイムスタンプ取得部２１は、受けたＴＴＳパケットをＴＴＳゲート部２２へ出力する。
【０１２２】
次に、仮想バッファ演算部２３は、たとえばユーザによる番組選択またはエラー発生等の後、最初のＴＴＳタイムスタンプであるＴＳ［０］を、タイムスタンプ取得部２１から受けると（ステップＳ１０６でＹＥＳ）、ＴＴＳカウンタ部２４におけるＴＴＳカウント値をＴＳ［０］に初期化する（ステップＳ１０８）。
【０１２３】
次に、仮想バッファ演算部２３は、タイムスタンプ取得部２１からＴＳ［ｉ］を受けると、ＴＳ［ｉ］を受けた時刻ｔｉにおけるＴＴＳカウント値に対応するＳＴＣ［ｉ］をＴＴＳカウンタ部２４から取得する（ステップＳ１１０）。
【０１２４】
次に、仮想バッファ演算部２３は、ＴＳ［ｉ］とＳＴＣ［ｉ］との差を示すΔｔ［ｉ］を計算する（ステップＳ１１２）。
【０１２５】
より詳細には、ＴＳ［ｉ］は、時刻ｔｉにおいてストリーム処理装置２０により受信されたｉ番目のＴＴＳパケットが、ＴＴＳゲート部２２によりデマックス部２７へ出力される時刻である。すなわち、ＴＳ［ｉ］は、ｉ番目のＴＴＳパケットが仮想バッファを出る時刻とみなすことができる。
【０１２６】
また、ＳＴＣ［ｉ］は、ｉ番目のＴＴＳパケットがストリーム処理装置２０により受信された時刻ｔｉを示す。すなわち、ＳＴＣ［ｉ］は、ｉ番目のＴＴＳパケットが仮想バッファへ入る時刻とみなすことができる。
【０１２７】
従って、Δｔ［ｉ］は、ｉ番目のＴＴＳパケットが仮想バッファへ入ってから仮想バッファを出るまでの仮想滞留時間を示す。
【０１２８】
次に、仮想バッファ演算部２３は、時刻ｔｉの直近の、たとえばｐ個のΔｔに基づいて移動平均を算出するようにユーザにより設定されている場合、Δｔ［ｉ-ｐ＋１］からΔｔ［ｉ］までのΔｔに基づいて、ｉ番目のＴＴＳパケットの移動平均に対応する平均仮想滞留時間を示すＡｖｇΔｔ［ｉ］を計算する（ステップＳ１１４）。
【０１２９】
次に、仮想バッファ演算部２３は、たとえばＡｖｇΔｔ［ｉ］、および時刻ｔｉより前に計算したＡｖｇΔｔ［ｉ−１］から、ＡｖｇΔｔの傾向を分析する（ステップＳ１１６）。
【０１３０】
次に、仮想バッファ演算部２３は、たとえばＡｖｇΔｔ［ｉ］がＡｖｇΔｔ［ｉ−１］より大きい場合、平均仮想滞留時間であるＡｖｇΔｔが増加傾向にあると判断し（ステップＳ１１８でＹＥＳ）、平均仮想滞留時間が増加傾向にあることをＴＴＳクロック調整部２５へ通知する。ＴＴＳクロック調整部２５は、上記通知に応じてＴＴＳクロック生成部２６の周波数を上げる（ステップＳ１２０）。
【０１３１】
また、仮想バッファ演算部２３は、たとえばＡｖｇΔｔ［ｉ］がＡｖｇΔｔ［ｉ−１］より小さい場合、平均仮想滞留時間であるＡｖｇΔｔが増加傾向でなく（ステップＳ１１８でＮＯ）、減少傾向にあると判断し（ステップＳ１２２でＹＥＳ）、平均仮想滞留時間が減少傾向にあることをＴＴＳクロック調整部２５へ通知する。ＴＴＳクロック調整部２５は、上記通知に応じてＴＴＳクロック生成部２６の周波数を下げる（ステップＳ１２４）。
【０１３２】
また、仮想バッファ演算部２３は、たとえばＡｖｇΔｔ［ｉ］がＡｖｇΔｔ［ｉ−１］と同じである場合、平均仮想滞留時間であるＡｖｇΔｔが増加傾向でも減少傾向でもないと判断し（ステップＳ１２２でＮＯ）、ＴＴＳクロック生成部２６の周波数を調整するための通知をＴＴＳクロック調整部２５へ出力しない。
【０１３３】
以上の動作により、ストリーム処理装置２０は、仮想バッファを用いて算出した平均仮想滞留時間に基づいてＴＴＳクロックの再生処理を行う。
【０１３４】
第二の技術では、ＴＴＳパケットがバッファを出るタイミングで実滞留時間を計算する。一方、仮想バッファ演算部２３は、上記のステップＳ１１２において、ｉ番目のＴＴＳパケットが仮想バッファへ入る時刻を示す時刻ｔｉにおいて、実滞留時間と等価な上記仮想滞留時間を算出することができる。
【０１３５】
すなわち、仮想バッファ演算部２３は、上記仮想滞留時間を算出するために、ｉ番目のＴＴＳパケットが仮想バッファから出る時刻であるＴＳ［ｉ］まで待つ必要がない。従って、ストリーム処理装置２０は、ｉ番目のＴＴＳパケットが仮想バッファへ入る時刻を示す時刻ｔｉにおいて算出した仮想滞留時間に基づいて、ＴＴＳクロックを再生することができる。また、ストリーム処理装置２０は、受信したパケットを、バッファにおいて滞留させることなく次の処理へ移すことができる。
【０１３６】
また、仮想バッファ演算部２３は、上記のステップＳ１１４において移動平均を算出したが、これに限定するものではない。仮想バッファ演算部２３は、未加工の仮想滞留時間に基づいて、仮想滞留時間の傾向を分析してもよい。
【０１３７】
たとえば、ストリーム処理装置２０は、一定の時間間隔で規則正しく局側装置１０から送信されたＴＴＳパケットを、一定の時間間隔で規則正しく受信できる状況において、仮想バッファ演算部２３は、Δｔ［ｉ］がΔｔ［ｉ−１］より大きい場合、仮想滞留時間が増加傾向にあると判断し、Δｔ［ｉ］がΔｔ［ｉ−１］より小さい場合、仮想滞留時間が減少傾向にあると判断することができる。また、仮想バッファ演算部２３は、Δｔ［ｉ］がΔｔ［ｉ−１］と同程度である場合、仮想滞留時間が増加傾向でも減少傾向でもないと判断することができる。すなわち、ストリーム処理装置２０は、Δｔが所定値になるようにＴＴＳクロック生成部２６の周波数を調整することにより、ローカルＴＴＳクロックを局側ＴＴＳクロックに同期させることができる。
【０１３８】
また、局側装置１０がＭＰＥＧ２−ＴＳを再送信する際に、ヌルパケット等を削除することによりＭＰＥＧ２−ＴＴＳを作成する場合、当該ＭＰＥＧ２−ＴＴＳは、図２の（Ｂ）に示すような時系列上不連続なＴＴＳパケットを含んでしまう。また、ＴＴＳパケットの伝送時間は、ＴＴＳパケットにより異なるので、ストリーム処理装置２０が各ＴＴＳパケットを受信する時間間隔は、一定でない。この際、仮想バッファ演算部２３が、ステップＳ１１２において算出するΔｔは、受信するＴＴＳパケット毎にばらついてしまう。
【０１３９】
Δｔのばらつきが大きくなると、ＴＴＳクロックの周波数の揺らぎが発生する。このＴＴＳクロックの周波数の揺らぎが、さらに大きなΔｔのばらつきを引き起こし、これによりＴＴＳクロックの周波数の揺らぎが増幅される場合がある。
【０１４０】
この場合においても、仮想バッファ演算部２３は、上記のステップＳ１１４において、ばらついたΔｔの移動平均を算出することにより、Δｔを平滑化したＡｖｇΔｔを取得する。これにより、ＡｖｇΔｔは、ローパスフィルタを通過したΔｔとみなせるので、過剰なフィードバック処理に起因するＴＴＳクロックの周波数の揺らぎを抑えることができる。
【０１４１】
従って、仮想バッファ演算部２３は、ステップＳ１１６において、ＡｖｇΔｔに基づいて滞留時間の傾向を判断する際に、ストリーム処理装置２０がＴＴＳパケットを受信する時刻が不規則な場合においても、適切な判断を行うことができる。
【０１４２】
また、上記のステップＳ１０２からステップＳ１２４までの動作は、ストリーム処理装置２０が受信する全てのパケットについて行う必要はない。たとえば、ストリーム処理装置２０は、所定のパケット数毎に上記動作を行ってもよい。
【０１４３】
［仮想バッファにおける仮想蓄積量の算出処理動作］
図４に示すＴＴＳクロックの再生処理において、仮想バッファを用いて算出した仮想滞留時間を用いたが、仮想バッファを用いて算出した仮想蓄積量によってＴＴＳクロックの再生処理を行ってもよい。以下に、仮想バッファを用いて算出した平均仮想蓄積量に応じてＴＴＳクロックの再生処理を行う際の動作手順を示す。
【０１４４】
図５は、本発明の実施の形態に係るストリーム処理装置において仮想バッファにおける仮想蓄積量の算出処理を行う際の動作手順を定めたフローチャートである。
図５を参照して、まず、ストリーム処理装置２０は、受信するストリームにおけるＴＴＳパケットを受ける（ステップＳ２０２）。
【０１４５】
次に、ストリーム処理装置２０におけるタイムスタンプ取得部２１は、たとえばｉ番目のＴＴＳパケットを受けると、受けたＴＴＳパケットにおけるＴＴＳヘッダからＴＴＳタイムスタンプを示すＴＳ［ｉ］を取得する（ステップＳ２０４）。
【０１４６】
次に、タイムスタンプ取得部２１は、取得したＴＳ［ｉ］を仮想バッファ演算部２３へ出力する。また、タイムスタンプ取得部２１は、受けたＴＴＳパケットをＴＴＳゲート部２２へ出力する。
【０１４７】
次に、仮想バッファ演算部２３は、たとえばユーザによる番組選択またはエラー発生等の後、最初のＴＴＳタイムスタンプであるＴＳ［０］を、タイムスタンプ取得部２１から受けると（ステップＳ２０６でＹＥＳ）、ＴＴＳカウンタ部２４におけるＴＴＳカウント値をＴＳ［０］に初期化する（ステップＳ２０８）。また、仮想バッファ演算部２３は、仮想バッファにおける仮想蓄積量を示すＳｎに、初期値としてたとえば０を設定する。
【０１４８】
次に、仮想バッファ演算部２３は、タイムスタンプ取得部２１からＴＳ［ｉ］を受けると、仮想蓄積量であるＳｎにＴＴＳパケットの大きさである１９２を加える（ステップＳ２１０）。
【０１４９】
次に、仮想バッファ演算部２３は、ｉ番目のＴＴＳパケットが仮想バッファを出ていく時刻を示すＴＳ［ｉ］までＴＴＳカウント値を監視し（ステップＳ２１２でＮＯ）、ＴＳ［ｉ］がＴＴＳカウント値と一致すると（ステップＳ２１２でＹＥＳ）、仮想蓄積量であるＳｎからＴＴＳパケットの大きさである１９２を減じる（ステップＳ２１４）。
【０１５０】
以上の動作により、ストリーム処理装置２０は、仮想バッファにおける仮想蓄積量の算出処理を行う。
【０１５１】
第一の技術では、バッファにおいて、ストリームを所定レベルに達するまで蓄積させ、バッファに蓄積させたストリームのバイト数、すなわち蓄積量の変化を監視する。この際、ストリーム処理装置は、ストリームの蓄積量が所定レベルに達するまで、ＴＴＳクロックの再生処理を開始できない。また、ストリーム処理装置は、バッファにおけるストリームを次の処理へ移すことができないため、遅延時間が発生してしまう。
【０１５２】
一方、ストリーム処理装置２０における仮想バッファ演算部２３は、ステップＳ２１０で、ＴＴＳパケットが仮想バッファへ入る時刻において仮想蓄積量であるＳｎに１９２を加える。また、仮想バッファ演算部２３は、ステップＳ２１２で、当該ＴＴＳパケットが仮想バッファを出る時刻において仮想蓄積量であるＳｎから１９２を減じる。すなわち、当該ＴＴＳパケットが、仮想バッファに入る時刻および仮想バッファを出る時刻の間だけ、当該ＴＴＳパケットの容量が、仮想バッファにおける仮想蓄積量であるＳｎに含められる。
【０１５３】
以上の動作により、ｉ番目のＴＴＳパケットが仮想バッファへ入る時刻を示す時刻ｔｉにおける処理を行うだけで、当該ＴＴＳパケットを仮想バッファに蓄積させる処理を完了させることができる。
【０１５４】
これにより、ＴＴＳパケットが仮想バッファに入る時刻から仮想バッファを出る時刻まで、当該ＴＴＳパケットを仮想バッファに蓄積させることができる。
【０１５５】
また、仮想バッファ演算部２３は、上記仮想蓄積量を算出するために、仮想バッファにおいて所定レベルに達するまでストリームを蓄積する必要がない。従って、ストリーム処理装置２０は、実際のバッファにストリームを蓄積することなく次の処理へ移すことができる。
【０１５６】
また、上記のステップＳ２０２からステップＳ２１４までの動作は、ストリーム処理装置２０が受信する全てのパケットについて行う必要はない。たとえば、ストリーム処理装置２０は、所定のパケット数毎に上記動作を行ってもよい。
【０１５７】
［蓄積量に基づくＴＴＳクロックの再生処理動作］
図６は、本発明の実施の形態に係るストリーム処理装置において仮想バッファを用いて算出した平均仮想蓄積量に基づいてＴＴＳクロックの再生処理を行う際の動作手順を定めたフローチャートである。
【０１５８】
ストリーム処理装置２０は、以下に示す、仮想バッファを用いて算出した平均仮想蓄積量に応じてＴＴＳクロックの再生処理を行う際の動作と、図５に示すステップＳ２１０からステップＳ２１６までの仮想蓄積量を算出するための動作とを並行して行ってもよい。
【０１５９】
図６を参照して、ストリーム処理装置２０は、局側装置１０から最初のＴＴＳパケットを受けることにより動作を開始する（ステップＳ３０８）。
【０１６０】
次に、仮想バッファ演算部２３は、たとえば仮想蓄積量であるＳｎを評価する時間間隔がユーザにより設定されている場合、ＴＴＳカウンタ部２４におけるＴＴＳカウント値を監視し（ステップＳ３１０でＮＯ）、当該ＴＴＳカウント値において上記時間間隔に対応する所定時間分のＴＴＳカウント値が増加すると（ステップＳ３１０でＹＥＳ）、所定時間が経過した時刻ｔｊにおける仮想蓄積量であるＳｎ［ｊ］を取得する（ステップＳ３１２）。
【０１６１】
次に、仮想バッファ演算部２３は、時刻ｔｊの直近の、たとえばｒ個のＳｎに基づいて移動平均を算出するようにユーザにより設定されている場合、Ｓｎ［ｊ-ｒ＋１］からＳｎ［ｊ］までのＳｎに基づいて、ｊ番目のＳｎの移動平均に対応する平均仮想蓄積量であるＡｖｇＳｎ［ｊ］を計算する（ステップＳ３１４）。
【０１６２】
次に、仮想バッファ演算部２３は、たとえばＡｖｇＳｎ［ｊ］、および時刻ｔｊより前に計算したＡｖｇＳｎ［ｊ−１］から、ＡｖｇＳｎの傾向を分析する（ステップＳ３１６）。
【０１６３】
次に、仮想バッファ演算部２３は、たとえばＡｖｇＳｎ［ｉ］がＡｖｇＳｎ［ｉ−１］より大きい場合、平均仮想蓄積量であるＡｖｇＳｎが増加傾向にあると判断し（ステップＳ３１８でＹＥＳ）、平均仮想蓄積量が増加傾向にあることをＴＴＳクロック調整部２５へ通知する。ＴＴＳクロック調整部２５は、上記通知に応じてＴＴＳクロック生成部２６の周波数を上げる（ステップＳ３２０）。
【０１６４】
また、仮想バッファ演算部２３は、たとえばＡｖｇＳｎ［ｉ］がＡｖｇＳｎ［ｉ−１］より小さい場合、平均仮想蓄積量であるＡｖｇＳｎが増加傾向でなく（ステップＳ３１８でＮＯ）、減少傾向にあると判断し（ステップＳ３２２でＹＥＳ）、平均仮想蓄積量が減少傾向にあることをＴＴＳクロック調整部２５へ通知する。ＴＴＳクロック調整部２５は、上記通知に応じてＴＴＳクロック生成部２６の周波数を下げる（ステップＳ３２４）。
【０１６５】
また、仮想バッファ演算部２３は、たとえばＡｖｇＳｎ［ｉ］がＡｖｇＳｎ［ｉ−１］と同じである場合、平均仮想蓄積量であるＡｖｇＳｎが増加傾向でも減少傾向でもないと判断し（ステップＳ３２２でＮＯ）、ＴＴＳクロック生成部２６の周波数を調整するための通知をＴＴＳクロック調整部２５へ出力しない。
【０１６６】
以上の動作により、ストリーム処理装置２０は、仮想バッファを用いて算出した平均仮想蓄積量に基づいてＴＴＳクロックの再生処理を行う。
【０１６７】
次に、仮想バッファ演算部２３は、ストリームを受信している間は（ステップＳ３２６でＮＯ）、ステップＳ３１０に戻り所定時間ごとにＳｎを取得する。また、仮想バッファ演算部２３は、ストリームの受信が終了すると（ステップＳ３２６でＹＥＳ）、上記動作を終了する。
【０１６８】
なお、仮想バッファ演算部２３は、上記のステップＳ３１０においてユーザにより設定されている時間間隔で仮想蓄積量であるＳｎを評価するが、これに限定するものではない。仮想バッファ演算部２３は、たとえばタイムスタンプ取得部２１からＴＴＳタイムスタンプを受けるタイミングに同期して、仮想蓄積量であるＳｎを評価してもよい。しかしながら、仮想蓄積量であるＳｎは、時間と共に変化するので、所定の時間間隔毎にＳｎを取得することが好ましい。これにより、サンプリングの偏りを防ぐことができる。
【０１６９】
また、仮想バッファ演算部２３は、上記のステップＳ３１４において移動平均を算出したが、これに限定するものではなく、未加工の仮想蓄積量に基づいて、仮想蓄積量の傾向を分析してもよい。
【０１７０】
たとえば、ストリーム処理装置２０は、一定の時間間隔で規則正しく局側装置１０から送信されたＴＴＳパケットを、一定の時間間隔で規則正しく受信できる状況において、仮想バッファ演算部２３は、Ｓｎ［ｊ］がＳｎ［ｊ−１］より大きい場合、仮想蓄積量が増加傾向にあると判断し、Ｓｎ［ｊ］がＳｎ［ｊ−１］より小さい場合、仮想蓄積量が減少傾向にあると判断することができる。また、仮想バッファ演算部２３は、Ｓｎ［ｊ］がＳｎ［ｊ−１］と同程度である場合、仮想蓄積量が増加傾向でも減少傾向でもないと判断することができる。すなわち、ストリーム処理装置２０は、Ｓｎが所定値になるようにＴＴＳクロック生成部２６の周波数を調整することにより、ローカルＴＴＳクロックを局側ＴＴＳクロックに同期させることができる。
【０１７１】
また、局側装置１０がＭＰＥＧ２−ＴＳを再送信する際に、ヌルパケット等を削除することによりＭＰＥＧ２−ＴＴＳを作成する場合、当該ＭＰＥＧ２−ＴＴＳは、図２の（Ｂ）に示すような時系列上不連続なＴＴＳパケットを含んでしまう。また、ＴＴＳパケットの伝送時間は、ＴＴＳパケットにより異なるので、ストリーム処理装置２０が各ＴＴＳパケットを受信する時間間隔は、一定でない。この際、仮想バッファ演算部２３が、ステップＳ３１２において取得するＳｎは、取得するタイミングによって大きくばらついてしまう。
【０１７２】
Ｓｎのばらつきが大きくなると、ＴＴＳクロックの周波数の揺らぎが発生する。このＴＴＳクロックの周波数の揺らぎが、さらに大きなＳｎのばらつきを引き起こし、これによりＴＴＳクロックの周波数の揺らぎが増幅される場合がある。
【０１７３】
この場合においても、仮想バッファ演算部２３は、上記のステップＳ３１４において、ばらついたＳｎの移動平均を算出することにより、Ｓｎを平滑化したＡｖｇＳｎを取得する。これにより、ＡｖｇＳｎは、ローパスフィルタを通過したＳｎとみなせるので、過剰なフィードバック処理に起因するＴＴＳクロックの周波数の揺らぎを抑えることができる。
【０１７４】
従って、仮想バッファ演算部２３は、ステップＳ３１６において、ＡｖｇＳｎに基づいて仮想蓄積量の傾向を判断する際に、ストリーム処理装置２０がＴＴＳパケットを受信する時刻が不規則な場合においても、適切な判断を行うことができる。
【０１７５】
［受信したＴＴＳパケットの処理動作］
図７は、本発明の実施の形態に係るストリーム処理装置において受信したＴＴＳパケットを処理する動作手順を定めたフローチャートである。
【０１７６】
タイムスタンプ取得部２１は、図４に示すステップＳ１０４、図５に示すステップＳ２０４および図６に示すステップＳ３０４において、ｉ番目のＴＴＳパケットからＴＴＳタイムスタンプを取得後、上記ＴＴＳパケットをＴＴＳゲート部２２へ出力する。
【０１７７】
ストリーム処理装置２０は、以下に示す、上記ＴＴＳパケットがＴＴＳゲート部２２へ出力されてから行われる動作と、図４に示すステップＳ１１０からステップＳ１２４までの動作、図５に示すステップＳ２１０からステップＳ２１６までの動作、または図６に示すステップＳ３１０からステップＳ３２４までの動作とを並行して行ってもよい。
【０１７８】
図７を参照して、ストリーム処理装置２０は、受信するストリームにおけるＴＴＳパケットを受ける動作以降の動作（ステップＳ４０２〜ステップＳ４０８）は、図４に示すフローチャートにおける動作（ステップＳ１０２〜ステップＳ１０８）、および図５に示すフローチャートにおける動作（ステップＳ２０２〜ステップＳ２０８）と同様であるため、ここでは詳細な説明を繰り返さない。
【０１７９】
次に、ＴＴＳゲート部２２は、ｉ番目のＴＴＳパケットをタイムスタンプ取得部２１から受けると、受信するストリームにおける、ＴＴＳタイムスタンプおよびＰＣＲが同期しているかどうか確認する（ステップＳ４１０）。
【０１８０】
次に、ＴＴＳゲート部２２は、受信するストリームにおける、ＴＴＳタイムスタンプおよびＰＣＲが同期している場合（ステップＳ４１０でＹＥＳ）、ＰＣＲクロックの代わりにＴＴＳクロックを利用できるので、ゲート動作を行わない。すなわち、ＴＴＳゲート部２２は、タイムスタンプ取得部２１から受けたｉ番目のＴＴＳパケットからＴＴＳヘッダを外すことによりｉ番目のＴＳパケットを作成し、作成したｉ番目のＴＳパケットをデマックス部２７へ出力する。
【０１８１】
次に、デマックス部２７は、ｉ番目のＴＳパケットをＴＴＳゲート部２２から受けると、受けたＴＳパケットをビデオＴＳパケット、オーディオＴＳパケットまたはＰＣＲパケット等に多重分離し、多重分離したＴＳパケットをＴＳヘッダおよびペイロードに分離する（ステップＳ４１２）。
【０１８２】
次に、デマックス部２７は、たとえばｉ番目のＴＳパケットがビデオＴＳパケットである場合、ビデオデータを含むペイロードをビデオＥＳバッファへ出力する。また、デマックス部２７は、たとえばｉ番目のＴＳパケットがオーディオＴＳパケットである場合、オーディオデータを含むペイロードをオーディオＥＳバッファ３１へ出力する。
【０１８３】
また、デマックス部２７は、ｉ番目のＴＳパケットがＰＣＲを含むＰＣＲパケットである場合、ＰＣＲクロックの代わりにＴＴＳクロックを利用するので、アダプテーションフィールドに含まれるＰＣＲをＰＣＲ回復部２８へ出力しなくてもよい。
【０１８４】
次に、ビデオデコーダ部３０は、ＴＴＳクロック生成部２６における基準クロックのタイミングに従って、ビデオデータのデコード処理を行う（ステップＳ４１４）。次に、ビデオデコーダ部３０は、デコード処理により作成した番組画像を例えば表示装置１２へ出力する。
【０１８５】
また、オーディオデコーダ部３０は、ＴＴＳクロック生成部２６における基準クロックのタイミングに従って、オーディオデータのデコード処理を行う（ステップＳ４１６）。次に、オーディオデコーダ部３０は、デコード処理により作成した音声情報をたとえば表示装置１２へ出力する。
【０１８６】
また、ＴＴＳゲート部２２は、受信したストリームにおける、ＴＴＳタイムスタンプおよびＰＣＲが同期していない場合（ステップＳ４１０でＮＯ）、ローカルＰＣＲクロックを再生するためにゲート動作を行う（ステップＳ４１８）。
【０１８７】
すなわち、ＴＴＳゲート部２２は、ＴＴＳカウンタ部２４から受けるＴＴＳカウント値が、タイムスタンプ取得部２１から受けたｉ番目のＴＴＳパケットに対応するＴＳ［ｉ］と一致すると、ＴＴＳヘッダを外すことにより作成したｉ番目のＴＳパケットをデマックス部２７へ出力する。
【０１８８】
次に、デマックス部２７は、ｉ番目のＴＳパケットをＴＴＳゲート部２２から受けると、受けたＴＳパケットをビデオＴＳパケット、オーディオＴＳパケットまたはＰＣＲパケット等に多重分離し、多重分離したＴＳパケットをＴＳヘッダおよびペイロードに分離する（ステップＳ４２０）。
【０１８９】
次に、デマックス部２７は、たとえばｉ番目のＴＳパケットがビデオＴＳパケットである場合、ビデオデータを含むペイロードをビデオＥＳバッファへ出力する。また、デマックス部２７は、たとえばｉ番目のＴＳパケットがオーディオＴＳパケットである場合、オーディオデータを含むペイロードをオーディオＥＳバッファへ出力する。
【０１９０】
また、デマックス部２７は、ｉ番目のＴＳパケットがＰＣＲを含むＰＣＲパケットである場合、アダプテーションフィールドからＰＣＲを分析し、分析したＰＣＲをＰＣＲ回復部２８へ出力する。
【０１９１】
次に、ＰＣＲ回復部２８は、ＰＣＲをデマックス部２７から受けると、受けたＰＣＲに基づいて、ＰＣＲクロックを再生する（ステップＳ４２２）。具体的には、ＰＣＲ回復部２８は、受けたＰＣＲがローカルＰＣＲクロックより進んでいる場合、ローカルＰＣＲクロックの周波数を上げる。また、ＰＣＲ回復部２８は、受けたＰＣＲがローカルＰＣＲクロックより遅れている場合、ローカルＰＣＲクロックの周波数を下げる。
【０１９２】
これにより、ストリーム処理装置３０は、局側ＰＣＲクロックと同期したローカルＰＣＲクロックに合わせて、受信したストリームを処理することができる。
【０１９３】
また、ビデオデコーダ部３０は、ローカルＰＣＲクロックのタイミングに従って、ビデオデータのデコード処理を行う（ステップＳ４２４）。次に、ビデオデコーダ部３０は、デコード処理により作成した番組画像を例えば表示装置１２へ出力する。
【０１９４】
また、オーディオデコーダ部３０は、ローカルＰＣＲクロックのタイミングに従って、オーディオデータのデコード処理を行う（ステップＳ４２６）。次に、オーディオデコーダ部３０は、デコード処理により作成した音声情報をたとえば表示装置１２へ出力する。
【０１９５】
以上の動作により、ストリーム処理装置２０は、ストリーム処理装置において受信したＴＴＳパケットを処理する。
【０１９６】
なお、ビデオＴＳパケットまたはオーディオＴＳパケットのペイロードに含まれる情報は、ビデオＥＳバッファ２９またはオーディオＥＳバッファ３１において滞留する。このため、ビデオＴＳパケットおよびオーディオＴＳパケットは、どのタイミングでＴＴＳゲート部２２からデマックス部２７へ出力しても構わない。
【０１９７】
一方、ＰＣＲパケットは、ローカルＰＣＲクロックを局側ＰＣＲクロックに同期させるために用いられるので、所定のタイミングでＰＣＲ回復部２８へ出力する必要がある。
【０１９８】
従って、ＴＴＳゲート部２２は、ステップＳ４１８において、ＰＣＲパケットのみゲート動作を行い、ＰＣＲパケット以外のＴＳパケットについてはそのままデマックス部２７へ出力してもよい。
【０１９９】
また、ＴＴＳゲート部２２は、ローカルＰＣＲクロックを再生させるために、局側ＴＴＳクロックと同期したローカルＴＴＳクロックによりゲート動作を行う。すなわち、ＴＴＳゲート部２２は、局側ＴＴＳクロックと同期したローカルＴＴＳクロックに基づいて、ＰＣＲパケットに含まれるＴＴＳタイムスタンプに対応したタイミングで、上記ＰＣＲパケットをデマックス部２７へ出力する。これにより、ＰＣＲ回復部２８は、上記ＰＣＲパケットを相対デコードタイミングで、デマックス部２７経由でＴＴＳゲート部２２からＰＣＲを受ける。
【０２００】
このように、ＰＣＲ回復部２８が相対デコードタイミングで受けたＰＣＲに基づいてローカルＰＣＲクロックを再生することにより、ストリーム処理装置２０は、ローカルＰＣＲクロックを局側ＰＣＲクロックに同期させることができる。
【０２０１】
また、局側ＴＴＳクロックおよび局側ＰＣＲクロックが同期している場合、図４または図６に示すローカルＴＴＳクロックの再生処理により、ローカルＴＴＳクロックを局側ＴＴＳクロックに同期させると、ローカルＴＴＳクロックは、自動的に局側ＰＣＲクロックと同期する。従って、ストリーム処理装置２０は、ＰＣＲを用いてローカルＰＣＲクロックを局側ＰＣＲに同期させる必要はなく、ローカルＰＣＲクロックの代わりにローカルＴＴＳクロックを利用することができる。
【０２０２】
これにより、ストリーム処理装置２０は、受信するストリームにおいて、ＴＴＳタイムスタンプおよびＰＣＲが同期している場合、デマックス部２７以降の処理を行う際に、ＴＴＳクロックを基準クロックとして用いることができる。
【０２０３】
また、受信するストリームにおいて、ＴＴＳタイムスタンプおよびＰＣＲが同期している場合、ＰＣＲクロックを再生する必要がないので、ＰＣＲパケットを相対デコードタイミングでＰＣＲ回復部２８へ投入する必要がない。従って、ＴＴＳゲート部２２は、ゲート動作を行う必要はなく、受信したストリームのＴＴＳパケットは、滞留することなくタイムスタンプ取得部２１からデマックス部２７以降の処理へ移される。
【０２０４】
すなわち、ストリーム処理装置２０は、受信したストリームのＴＴＳパケットを、遅延時間なしでデマックス部２７以降の処理へ移すことができる。
【０２０５】
ところで、基準クロックの周波数を調整するために、予め定めた規定範囲までパケットをバッファへ蓄積する必要がある。たとえば、受信されたパケットが順次バッファに蓄積されていき、パケットが予め定めた規定範囲まで蓄積された後に、最初に受信されたパケットは、バッファから取り出されて次の処理へ移される。従って、パケットが、バッファへ入ってからバッファを出るまでの滞留時間、すなわち遅延時間が発生することから、パケットを受信しても、遅延時間を経過するまで当該パケットの処理を行うことができない。
【０２０６】
これに対して、本発明の実施の形態に係るストリーム処理装置では、ＴＴＳパケットはＴＴＳヘッダ、ＴＳヘッダおよびペイロードを含み、複数のＴＴＳパケットの少なくとも一部のＴＳヘッダはＰＣＲを含み、複数のＴＴＳパケットの各々のＴＴＳヘッダはＴＴＳタイムスタンプを含み、ローカルＴＴＳクロックを生成するためのＴＴＳクロック生成部２６と、ローカルＴＴＳクロックに基づいてＴＴＳカウント値を更新するためのＴＴＳカウンタ部２４と、ＴＴＳカウント値およびＴＴＳタイムスタンプに基づいてＴＴＳクロック生成部２６を制御することにより、ローカルＴＴＳクロックの周波数を調整するための仮想バッファ演算部２３およびＴＴＳクロック調整部２５とを備える。
【０２０７】
このように、ＴＴＳカウント値およびＴＴＳタイムスタンプ値は、ストリーム処理装置２０がＴＴＳパケットを受信した時刻から取得することができるので、ＴＴＳクロック生成部２６を制御する処理およびデコードする処理を、当該時刻から開始することができ、かつＴＴＳゲート部２２におけるバッファが不要となり、映像のデコード処理もすぐに開始することができる。従って、ストリーム処理装置２０がＴＴＳパケットを受信した時刻から、当該ＴＴＳパケットをたとえばデコード処理するまでの遅延時間の増大を抑制することができる。
【０２０８】
また、ローカルＴＴＳクロックに基づいたＴＴＳカウント値、およびＶＯＤサーバ等の局側装置１０におけるＴＴＳクロックに基づいたＴＴＳタイムスタンプ値を利用することにより、ローカルＴＴＳクロックを、局側装置１０におけるＴＴＳクロックに同期させることができる。
【０２０９】
このように、ＴＴＳカウント値が局側装置１０におけるＴＴＳクロックと同期するので、ストリーム処理装置２０は、ローカルＴＴＳクロックに基づいて処理を行うことにより、局側装置１０におけるＴＴＳクロックに基づいて作成されたストリームを、局側装置１０におけるストリームの各パケットの処理タイミングと同様のタイミング関係で、ストリームの各パケットを処理することができる。
【０２１０】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、ＴＴＳカウント値およびＴＴＳタイムスタンプに基づいて、ＴＴＳパケット用の仮想的なバッファの評価値を算出し、算出した評価値に応じてＴＴＳクロック生成部２６を制御することにより、ローカルＴＴＳクロックの周波数を調整する。
【０２１１】
このような構成により、実際にバッファを設けることなく、仮想的なバッファの評価値を算出することができるため、ローカルＴＴＳクロックを適切に制御することができる。
【０２１２】
そして、ストリーム処理装置２０は、バッファを実装しないので、受信したＴＴＳパケットを、バッファに滞留させることなく次の処理へ移すことができる。
【０２１３】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、ＴＴＳカウント値およびＴＴＳタイムスタンプの差に基づいて、ローカルＴＴＳクロックの周波数を調整する。
【０２１４】
このように、ＴＴＳクロックに基づいたＴＴＳカウント値、および局側装置１０におけるＴＴＳクロックに基づいたＴＴＳタイムスタンプ値の差を計算することにより、ストリーム処理装置２０における動作タイミング、および局側装置１０における動作タイミングのずれの経時的な変化を分析することができるので、ローカルＴＴＳクロックの調整を正確に行うことができる。
【０２１５】
また、上記差を算出するために必要なＴＴＳカウント値およびＴＴＳタイムスタンプ値は、ＴＴＳパケットを受信した時刻において取得するので、上記差を算出するための処理を、当該時刻から開始することができる。従って、ストリーム処理装置２０は、上記ＴＴＳパケットを受信した時刻において、ＴＴＳクロックの周波数の調整に、上記差を反映させることができる。
【０２１６】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、ＴＴＳカウント値およびＴＴＳタイムスタンプの大小関係に基づいて１または複数のＴＴＳパケットを選択し、選択したＴＴＳパケットのデータ量の合計に基づいてローカルＴＴＳクロックの周波数を調整する。
【０２１７】
このような構成により、バッファにおけるＴＴＳパケットの蓄積量を仮想的に求めることができるため、上記蓄積量を経時的に監視することにより、ストリーム処理装置２０における動作タイミング、および局側装置１０における動作タイミングのずれの経時的な変化を分析することができる。これにより、ローカルＴＴＳクロックの調整を正確に行うことができる。
【０２１８】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、ＴＴＳカウント値およびＴＴＳタイムスタンプの差が所定値になるように、ローカルＴＴＳクロックの周波数を調整する。
【０２１９】
ローカルＴＴＳクロックおよび局側装置１０におけるＴＴＳクロックが同期していると、ローカルＴＴＳクロックに基づいたＴＴＳカウント値、および局側装置１０におけるＴＴＳクロックに基づいたＴＴＳタイムスタンプ値の差が一定になる。上記差が一定になるようにローカルＴＴＳクロックの周波数を調整することにより、ローカルＴＴＳクロックを局側装置１０におけるＴＴＳクロックに同期させることができる。
【０２２０】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、複数のＴＴＳパケットの一部のＴＴＳタイムスタンプとＴＴＳカウント値との差に基づいて、ローカルＴＴＳクロックの周波数を調整する。
【０２２１】
このような構成により、ストリーム処理装置２０が受信する全てのＴＴＳパケットでなく、一部のＴＴＳパケットからローカルＴＴＳクロックに基づいたＴＴＳカウント値、および局側装置１０におけるＴＴＳクロックに基づいたＴＴＳタイムスタンプ値の差を計算するので、ストリーム処理装置２０における計算の負担を軽減することができる。
【０２２２】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、選択したＴＴＳパケットのデータ量の合計が所定値になるように、ローカルＴＴＳクロックの周波数を調整する。
【０２２３】
このように、ストリーム処理装置２０により受信されたＴＴＳパケットにおいて、当該ＴＴＳパケットを受信したタイミングから、ＴＴＳカウント値がＴＴＳタイムスタンプの示す値となるタイミングまでの間、当該ＴＴＳパケットのバイト数を合計に含める。ローカルＴＴＳクロックおよび局側装置１０におけるＴＴＳクロックが同期していると、上記合計が一定になるので、上記合計が一定になるようにローカルＴＴＳクロックの周波数を調整することにより、ローカルＴＴＳクロックを局側装置１０におけるＴＴＳクロックに同期させることができる。
【０２２４】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、ＴＴＳカウント値およびＴＴＳタイムスタンプの差を、仮想的なバッファにおけるＴＴＳパケットの仮想滞留時間として算出し、算出した仮想滞留時間に基づいてローカルＴＴＳクロックの周波数を調整する。
【０２２５】
このような構成により、仮想的なバッファの評価値として、仮想滞留時間を計算することができるため、ローカルＴＴＳクロックの調整を正確に行うことができる。
【０２２６】
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部２３およびＴＴＳクロック調整部２５は、ＴＴＳタイムスタンプがＴＴＳカウント値以下となる１または複数のＴＴＳパケットのデータ量の合計を、仮想的なバッファにおけるＴＴＳパケットの仮想蓄積量として算出し、算出した仮想蓄積量に基づいてローカルＴＴＳクロックの周波数を調整する。
【０２２７】
このような構成により、仮想的なバッファの評価値として、仮想蓄積量を計算することができるため、ローカルＴＴＳクロックの調整を正確に行うことができる。
【０２２８】
また、本発明の実施の形態に係るストリーム処理装置では、ストリーム処理装置２０は、さらに、ＴＴＳパケットのペイロードに対してデコード処理を行うためのビデオデコーダ部３０およびオーディオデコーダ部３２を備え、ビデオデコーダ部３０およびオーディオデコーダ部３２は、ＰＣＲおよびＴＴＳタイムスタンプが同期している場合には、ローカルＴＴＳクロックのタイミングに従ってデコード処理を行う。
【０２２９】
このように、ＰＣＲおよびＴＴＳタイムスタンプが同期していると、ストリーム処理装置２０は、ＰＣＲクロックを再生させるための、受信したＴＴＳパケットに対するゲート動作を行う必要がないので、速やかにＴＳＳパケットにデコード処理を行うことができる。
【０２３０】
また、ＰＣＲクロックを再生させるための動作が不要になるので、ストリーム処理装置２０における処理負担を軽減することができ、かつバッファ等を含むＴＴＳゲート部２２も不要となる。
【０２３１】
なお、ＴＴＳカウンタ部２４は、ＴＴＳクロック生成部２６からクロックを受けるごとにＴＴＳカウント値をインクリメントしたが、これに限定するものではない。ＴＴＳカウンタ部２４は、たとえばＴＴＳクロック生成部２６からクロックを受けるごとにＴＴＳカウント値をデクリメントしてもよい。従って、ＴＴＳカウンタ部２４は、時間が経過するに従い、ＴＴＳクロックと同期してカウント値を減少させる。これによっても、カウント値は、現在時刻として利用でき、当該カウント値の大小関係から時系列の前後関係を取得することができる。
【０２３２】
また、本発明の実施の形態に係るストリーム処理装置は、ＭＰＥＧ２−ＴＳ規格に従うストリームの処理を行なう構成であるとしたが、これに限定するものではない。他の規格に従うストリームの処理を行なう構成であってもよい。
【０２３３】
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２３４】
１０  局側装置
１１  ネットワーク
１２  表示装置
１３  ストリーム処理システム
２０  ストリーム処理装置
２１  タイムスタンプ取得部
２２  ＴＴＳゲート部
２３  仮想バッファ演算部（クロック調整部）
２４  ＴＴＳカウンタ部
２５  ＴＴＳクロック調整部
２６  ＴＴＳクロック生成部
２７  デマックス部
２８  ＰＣＲ回復部
２９  ビデオＥＳバッファ
３０  ビデオデコーダ部（ペイロード処理部）
３１  オーディオＥＳバッファ
３２  オーディオデコーダ部（ペイロード処理部）
【図１】
0005958008.tif 000002
【図２】
0005958008.tif 000003
【図３】
0005958008.tif 000004
【図４】
0005958008.tif 000005
【図５】
0005958008.tif 000006
【図６】
0005958008.tif 000007
【図７】
0005958008.tif 000008