以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
[ストリーム処理システムの概要]
図1は、本発明の実施の形態に係るストリーム処理システムの構成を示す図である。
図1を参照して、ストリーム処理システム13は、VODサーバ等の局側装置10と、ストリーム処理装置20と、表示装置12とを備える。なお、局側装置10は、ネットワーク11を経由してストリーム処理装置20と接続される。
局側装置10は、1または複数の番組の情報を含むストリームをネットワーク11経由で送信する。ネットワーク11は、たとえばインターネットであり、局側装置10およびストリーム処理装置20は、IP(Internet Protocol)によりストリームを送受信する。
図2は、本発明の実施の形態に係るストリーム処理装置において処理されるストリームの一例を示す図である。
図2を参照して、図2の(A)は、たとえばMPEG2−TS(Moving Picture Experts Group 2 Transport Stream)規格のコンテナ形式を用いて、局側装置から送信されるストリームを示し、当該ストリームには、番組の情報が含まれる。
MPEG2―TSは、複数のTSパケットを含む。TSパケットは、188バイトのデータを有し、TSヘッダおよびペイロードを含む。V1、V2、V3およびV4等で示されるビデオTSパケットは、ペイロードにおいて、たとえばMPEG2またはH.264/AVC等により上記番組の情報を符号化したビデオデータであるビデオES(Elementary Stream)を含む。また、TSヘッダは、ペイロードに含まれるビデオデータに対応するPID(Packet Identifier)等の情報を含む。
A1で示されるオーディオTSパケットは、ペイロードにおいて、音声情報を符号化したオーディオデータであるオーディオES(Elementary Stream)を含む。また、TSヘッダは、ペイロードに含まれるオーディオデータに対応するPID等の情報を含む。
PCR(Program Clock Reference)で示されるPCRパケットは、TSヘッダに含まれるアダプテーションフィールドにおいて、PCRを含む。PCRは、たとえばストリーム処理装置20のSTC(System Time Clock)またはPCRクロックを、局側装置で用いられるPCRクロックと同期させるために用いる。以下、局側装置10におけるPCRクロックを局側PCRクロックと称する。
NULLで示されるヌルパケットは、データを含まないTSパケットであり、0x1FFFのPIDで示される。TSストリームが放送波により送信される場合、所定の周波数帯域および時間を占有して送信することから、送信するデータ量が少ない際にヌルパケットをTSストリームに挿入することにより、伝送ビットレートの調整が行われる。
一方、図1に示すようなインターネット等のネットワーク11を経由して局側装置10からストリームを送信する場合、送信するデータ量を減らすことにより情報伝送に必要な周波数帯域および時間を節約することが好ましい。
従って、局側装置10は、たとえば図2の(A)に示すMPEG2−TSをネットワーク11経由で再送信する際に、ヌルパケット等の番組の情報に関係のないTSパケットを削除した、図2の(B)に示すたとえばMPEG2−TTS(Timestamped TS)に変換する。これにより、局側装置10は、情報伝送に必要な周波数帯域および時間を節約することができる。
ネットワーク11経由で送信されるストリームには、複数のTTSパケットが含まれる。TTSパケットは、4バイトのTTSヘッダがTSパケットに付加されたパケットであり、192バイトの大きさを持つ。TTSヘッダには、4バイトのタイムスタンプが含まれる。なお、TTSヘッダは、TSヘッダに含められてもよい。
ストリーム処理装置20は、ネットワーク11経由で局側装置10からTTSパケットを受信すると、受信したTTSパケットに含まれる符号化された番組の情報をデコーダにおいてデコードし、デコードした番組画像および音声情報を、たとえば表示装置12において再生させる。
しかしながら、局側装置10がネットワーク11経由でストリームを送信する場合、ネットワーク11における伝送速度、通信経路、中継機器の処理能力または回線の混雑度等の揺らぎ、およびNULLパケットの削除等により上記ストリームに含まれるパケットが局側装置10からストリーム処理装置20までの伝送時間は、パケット毎にばらついてしまう。このため、以下の問題が発生する。
すなわち、局側装置10は、放送波によりストリームの各パケットを送信する際は、当該各パケットが送信される時刻の差である相対送信タイミングを、当該各パケットをデコーダへ投入すべき時刻の差である相対デコードタイミングに合わせて、当該各パケットを送信する。具体的には、局側装置10は、たとえば第一のパケットに続く第二のパケットをデコーダへ投入すべきタイミングが第一のパケットの1秒後である場合、第二のパケットを第一のパケットの1秒後に放送波により送信する。
局側装置10が放送波によりストリームのパケットを送信する場合、パケットが局側装置10からストリーム処理装置20へ到達するまでの伝送時間は、全てのパケットにおいて一定である。
従って、ストリーム処理装置20は、放送波によりストリームを受信する際は、受信した上記ストリームの各パケットを、受信したタイミングでデコーダへ投入することにより、相対デコードタイミングを保持したまま当該各パケットをデコーダへ投入することができる。
一方、局側装置10がネットワーク11経由でストリームを送信する場合、局側装置10からストリーム処理装置20までのパケットの伝送時間は、パケット毎にばらついてしまう。
従って、ストリーム処理装置20は、ネットワーク11経由で受信した上記ストリームの各パケットを、受信したタイミングでデコーダへ投入しても、相対デコードタイミングを保持したまま当該各パケットをデコーダへ投入することができない。これにより、ストリーム処理装置20は、上記ストリームに含まれる番組の情報を適切に再生することができなくなる。
このため、局側装置10は、各TSパケットをデコーダへ投入すべき相対デコードタイミングを示す時刻情報を、27MHzの局側装置10におけるTTSクロックに基づいて生成する。そして、局側装置10は、上記TSパケットに、生成した時刻情報をTTSタイムスタンプとして含むTTSヘッダを付加することによりTTSパケットを作成し、作成したTTSパケットをネットワーク11経由で送信する。以下、局側装置10におけるTTSクロックを局側TTSクロックと称する。
ストリーム処理装置20は、自己における基準クロックを局側TTSクロックに同期させることができれば、受信したTTSパケットにおけるTTSタイムスタンプに基づいて、相対デコードタイミングでパケットをデコーダへ投入することができる。
[ストリーム処理装置の構成]
図3は、本発明の実施の形態に係るストリーム処理装置の構成を示す図である。
図3を参照して、ストリーム処理装置20は、タイムスタンプ取得部21と、TTSゲート部22と、仮想バッファ演算部(クロック調整部)23と、TTSカウンタ部(カウンタ)24と、TTSクロック調整部(クロック調整部)25と、TTSクロック生成部26と、デマックス部27と、PCR回復部28と、ビデオESバッファ29と、ビデオデコーダ部(ペイロード処理部)30と、オーディオESバッファ31と、オーディオデコーダ部(ペイロード処理部)32とを備える。
タイムスタンプ取得部21は、ストリーム処理装置20が受信したストリームに含まれるTTSパケットのTTSヘッダからTTSタイムスタンプを取得し、取得したTTSタイムスタンプを仮想バッファ演算部23へ出力する。そして、タイムスタンプ取得部21は、TTSタイムスタンプを取得済のTTSパケットを、TTSゲート部22へ出力する。
TTSゲート部22は、タイムスタンプ取得部21からTTSパケットを受けると、受けたTTSパケットのTTSタイムスタンプおよびTTSカウンタ部24におけるカウント値に基づいてゲート動作を行う。より詳細には、TTSゲート部22は、TTSパケットを受けると、TTSカウンタ部24からのカウント値を監視し、当該カウント値が当該TTSパケットのTTSタイムスタンプと一致すると、当該TTSパケットからTTSヘッダを削除することによりTSパケットを作成し、作成したTSパケットをデマックス部27へ出力する。
また、TTSゲート部22は、ストリームにおけるTTSパケットのTTSタイムスタンプ、および後述するPCRパケットのPCRが同期している場合、ゲート動作を行わない。ここでいう同期とは、TTSタイムスタンプおよびPCRが同一のクロックにより生成されるカウント値であることを意味する。
たとえば、TTSゲート部22は、複数のPCRパケットからPCR、および上記PCRパケットのTTSタイムスタンプを取得する。そして、TTSゲート部22は、取得した各パケットにおけるPCRおよびTTSタイムスタンプの差が一定である場合、TTSタイムスタンプおよびPCRが同期していると判断する。なお、ストリーム処理システム上同期していることが定まっていれば、すなわち局側装置10において同期していることが定まっていれば、特に判断の必要はない。
TTSクロック生成部26は、ストリーム処理装置20における基準クロックであるTTSクロックを生成する。TTSクロック生成部26によって生成されたTTSクロックは、TTSカウンタ部24または図示しないPCRカウンタに用いる27MHzの基準クロックとして用いられる。具体的には、TTSクロック生成部26は、VCXO(Voltage Controlled Xtal Oscillator)を含み、たとえば水晶などの結晶を用いた発振器である。VCXOへ出力する電圧を調整することにより、VCXOの共鳴周波数が変化する。
TTSクロック生成部26は、たとえばVCXOにより生成したクロックをTTSカウンタ部24へ出力する。また、TTSクロック調整部25によりVCXOへ出力する電圧が調整され、これによりTTSクロック生成部26がTTSカウンタ部24へ出力するクロックの周波数が変化する。以下、ストリーム処理装置20におけるTTSクロックをローカルTTSクロックと称する場合がある。
TTSカウンタ部24は、たとえばTTSクロック生成部26から受けたクロックに基づいて、TTSカウント値を更新する。そして、TTSカウンタ部24は、更新したカウント値をTTSゲート部22および仮想バッファ演算部23へ出力する。具体的には、TTSカウント値は、たとえばクロックを受けるごとにTTSカウント値をインクリメントする。従って、TTSカウンタ部24は、時間が経過するに従い、TTSクロックと同期してカウント値を増加させる。これにより、カウント値は、現在時刻として利用でき、当該カウント値の大小関係から時系列の前後関係を取得することができる。
仮想バッファ演算部23は、TTSカウンタ部24から取得したTTSカウント値およびタイムスタンプ取得部21から受けたTTSタイムスタンプに基づいて、仮想的なバッファの評価値として仮想バッファ滞留時間および仮想バッファ蓄積量を計算する。そして、仮想バッファ演算部23は、計算した仮想バッファ滞留時間および仮想バッファ蓄積量に応じて、ローカルTTSクロックの周波数が、局側TTSクロックと比べて高い、低いまたは適切かどうかを判断し、判断した結果をTTSクロック調整部25へ通知する。
より詳細には、仮想バッファ演算部23は、仮想バッファ滞留時間を計算する際には、以下の動作を行う。すなわち、仮想バッファ演算部23は、ユーザによる番組選択またはエラー発生等の後、最初のTTSタイムスタンプをタイムスタンプ取得部21から受けると、TTSカウンタ部24におけるカウント値を、当該最初のTTSタイムスタンプで初期化する。そして、仮想バッファ演算部23は、タイムスタンプ取得部21からTTSタイムスタンプを受けると共に、TTSカウンタ部24から現在の時刻を示すTTSカウント値を取得する。上記TTSカウント値は、ストリーム処理装置20が上記TTSタイムスタンプに対応するTTSパケットを受信した時刻を示す。
そして、仮想バッファ演算部23は、上記TTSタイムスタンプおよび上記TTSカウント値の差を計算し、計算した差を仮想バッファにおける仮想滞留時間を示すΔtとする。仮想バッファ演算部23は、複数のTTSパケットに対してΔtを計算し、計算した複数のΔtに基づいてΔtの傾向を分析する。
この際、仮想バッファ演算部23は、たとえば計算した2つのΔtから、Δtの傾向を分析してもよい。また、仮想バッファ演算部23は、たとえば複数のΔtの移動平均を示すAvgΔtを計算し、計算したAvgΔtに基づいてAvgΔtの傾向を分析してもよい。
仮想バッファ演算部23は、たとえばΔtまたはAvgΔtが増加傾向にある場合、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて低いと判断する。仮想バッファ演算部23がこの際行う判断の詳細については、後述する。
また、仮想バッファ演算部23は、たとえばΔtまたはAvgΔtが減少傾向にある場合、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて高いと判断する。また、仮想バッファ演算部23は、たとえばΔtまたはAvgΔtが一定である場合、ローカルTTSクロックの周波数および局側TTSクロックの周波数が同じであると判断する。
そして、仮想バッファ演算部23は、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて、高い、低いまたは同じのいずれかを示す上記判断結果をクロック調整部25へ通知する。
また、仮想バッファ演算部23は、仮想バッファ蓄積量を計算する際には、以下の動作を行う。すなわち、仮想バッファ演算部23は、タイムスタンプ取得部21からTTSタイムスタンプを受けると共に、仮想蓄積量であるSnに192を加える。192は、TTSパケットのバイト数を示す。
そして、仮想バッファ演算部23は、上記TTSタイムスタンプを、上記TTSタイムスタンプに対応するTTSパケットが仮想バッファを出る時刻とみなし、TTSカウンタ部24におけるTTSカウント値を監視することにより、TTSカウント値が上記時刻を示すタイミングにおいて以下の動作を行う。
すなわち、仮想バッファ演算部23は、TTSカウント値および上記TTSタイムスタンプが一致すると、仮想バッファにおける仮想蓄積量であるSnから192を減算する。仮想バッファ演算部23は、上記処理を、複数のTTSパケットについて行うことによりSnを計算する。言い換えれば、仮想バッファ演算部23は、TTSパケットのTTSタイムスタンプが、TTSカウント値以上であるTTSパケットを選択し、選択したTTSパケットの大きさの合計であるSnを算出する。
仮想バッファ演算部23は、たとえばTTSカウンタ部24におけるTTSカウント値を監視し、当該TTSカウント値が所定の値を増加させる毎にSnを取得し、取得した複数のSnに基づいてSnの傾向を分析する。
この際、仮想バッファ演算部23は、たとえば計算した2つのSnからSnの傾向を分析してもよい。また、仮想バッファ演算部23は、たとえば複数のSnの移動平均を示すAvgSnを計算し、計算したAvgSnに基づいてAvgSnの傾向を分析してもよい。
仮想バッファ演算部23は、たとえばSnまたはAvgSnが増加傾向にある場合、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて低いと判断する。仮想バッファ演算部23がこの際行う判断の詳細については、後述する。
また、仮想バッファ演算部23は、たとえばSnまたはAvgSnが減少傾向にある場合、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて高いと判断する。また、仮想バッファ演算部23は、たとえばSnまたはAvgSnが一定である場合、ローカルTTSクロックの周波数および局側TTSクロックの周波数が同じであると判断する。
そして、仮想バッファ演算部23は、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて、高い、低いまたは同じのいずれかを示す上記判断結果をクロック調整部25へ通知する。
TTSクロック調整部25は、仮想バッファ演算部23からの判断結果に基づいて、TTSクロック生成部26におけるTTSクロックの周波数を調整する。具体的には、TTSクロック調整部25は、TTSクロックの周波数が局側TTSクロックの周波数と比べて低いことを示す判断結果を仮想バッファ演算部23から受けると、TTSクロック生成部26におけるVCXOへ出力する電圧を調整することにより、TTSクロックの周波数を高くする。
また、TTSクロック調整部25は、TTSクロックの周波数が局側TTSクロックの周波数と比べて高いことを示す判断結果を仮想バッファ演算部23から受けると、TTSクロック生成部26におけるVCXOへ出力する電圧を調整することにより、TTSクロックの周波数を低くする。
デマックス部27は、たとえばTTSゲート部22から受けたビデオTSパケット、オーディオTSパケットまたはPCRパケット等のTSパケットを、PIDで識別して分離する。より詳細には、デマックス部27は、TTSゲート部22からビデオTSパケットを受けると、受けたビデオTSパケットをTSヘッダおよびペイロードに分離し、分離したペイロードに含まれるビデオデータをビデオESバッファ29へ出力する。
また、デマックス部27は、TTSゲート部22からオーディオTSパケットを受けると、受けたオーディオTSパケットをTSヘッダおよびペイロードに分離し、分離したペイロードに含まれるオーディオデータをオーディオESバッファ31へ出力する。
また、デマックス部27は、TTSゲート部22からPCRパケットを受けると、受けたPCRパケットをTSヘッダおよびペイロードに分離し、分離したTSヘッダのアダプテーションフィールドに含まれるPCRを取得し、取得したPCRをPCR回復部28へ出力する。
PCR回復部28は、デマックス部27からPCRを受けると、受けたPCRおよび図示しないストリーム処理装置20におけるPCRクロックに基づくPCRカウント値を比較する。以下、ストリーム処理装置20におけるPCRクロックをローカルPCRクロックと称する場合がある。
PCRは、局側PCRクロックに基づいて付与されるカウント値であるので、PCR回復部28は、複数のPCRパケットにおいて、PCRおよびPCRカウント値の差が一定となるようにローカルPCRクロックの周波数を調整することにより、ローカルPCRクロックを局側PCRクロックに同期させる。
ビデオESバッファ29は、デマックス部27から受けたビデオデータを一時的に保持する。ビデオESバッファ29は、ビデオデコーダ部30の要求に応じて、保持するビデオデータをビデオデコーダ部30へ出力する。
ビデオデコーダ部30は、ビデオESバッファ29において保持されるビデオデータをデコード処理する。この際、ビデオデコーダ部30は、受信するストリームにおいてTTSタイムスタンプおよびPCRが同期している場合、TTSクロックを基準クロックとして用いる。また、ビデオデコーダ部30は、受信するストリームにおいてTTSタイムスタンプおよびPCRが同期していない場合、PCR回復部28により再生されたPCRクロックを基準クロックとして用いる。
より詳細には、ビデオデコーダ部30は、ビデオESバッファ29において保持される、TTSパケットのペイロードに含まれるビデオPES(Packetized Elementary Stream)のPESヘッダに含まれるDTS(Decoding Time Stamp)およびPTS(Presentation Time Stamp)を参照する。
DTSは、当該ビデオPESに含まれる番組画像データをデコード処理するタイミングを指定する。PTSは、当該番組画像データをデコード処理して作成した番組画像を提示するタイミングを指定する。
そして、ビデオデコーダ部30は、DTSが基準クロックと一致すると、上記DTSに対応するPESに含まれるビデオデータをデコード処理することにより、番組画像を作成する。そして、ビデオデコーダ部30は、PTSが基準クロックと一致すると、上記PTSに対応するPESに含まれるビデオデータをデコード処理することにより作成した番組画像を、たとえば表示装置12へ出力する。
オーディオESバッファ31は、デマックス部27から受けたオーディオデータを一時的に保持する。オーディオESバッファ31は、オーディオデコーダ部32の要求に応じて、保持するオーディオデータをオーディオデコーダ部32へ出力する。
オーディオデコーダ部32は、オーディオESバッファ31において保持されるオーディオデータをデコード処理する。この際、オーディオデコーダ部32は、受信するストリームにおいてTTSタイムスタンプおよびPCRが同期している場合、TTSクロックを基準クロックとして用いる。また、オーディオデコーダ部32は、受信するストリームにおいてTTSタイムスタンプおよびPCRが同期していない場合、PCR回復部28により再生されたPCRクロックを基準クロックとして用いる。
より詳細には、オーディオデコーダ部32は、オーディオESバッファ31において保持される、TTSパケットのペイロードに含まれるオーディオPESのPESヘッダに含まれるPTSを参照する。
そして、オーディオデコーダ部32は、PTSが基準クロックと一致すると、上記PTSに対応するPESに含まれるオーディオデータをデコード処理することにより作成した音声情報を、たとえば表示装置12へ出力する。
[ローカルTTSクロックおよび局側TTSクロックの同期関係]
ところで、特許文献1により示される第一の技術を実装したストリーム処理装置14は、受信したストリームのTTSパケットを、TTSゲート部へ出力する前にバッファに滞留させる。そして、TTSゲート部は、バッファに滞留するTTSパケットの中から、TTSカウント値と一致するTTSタイムスタンプを含むTTSパケットをデマックス部へ出力させる。
たとえば、バッファへ入力するTTSパケットの単位時間当たりのバイト数を示す入力レート、およびバッファからデマックス部へ出力するTTSパケットの単位時間当たりのバイト数を示す出力レートが同じであれば、バッファに滞留するTTSパケットのバイト数を示す実蓄積量は、変化しない。
また、たとえば、入力レートが出力レートより大きいと、実蓄積量は、増加する。また、たとえば、入力レートが出力レートより小さいと、実蓄積量は、減少する。
入力レートは、局側装置における局側TTSクロックにより決定される。また、出力レートは、ストリーム処理装置14におけるローカルTTSクロックにより決定される。従って、ストリーム処理装置14は、実蓄積量を監視することにより、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて高い、低いまたは適正であるかどうかを判断することができる。
しかしながら、上記の動作では、ストリーム処理装置14が新しいストリームを受信する際に、バッファにある程度TTSパケットを滞留させないと、入力レートおよび出力レートの大小関係は判断できない。このため、最初のTTSパケットは、バッファへ入力された後、バッファにある程度ストリームが滞留するまでバッファから出力されない。従って、実蓄積量の評価は、バッファへ入力したTTSパケットがバッファから出力されるまでなされないので、遅延時間が発生してしまう。特に、入力レートが小さい場合、遅延時間が長くなってしまうという問題が発生する。また、たとえばストリーム処理装置14は、受信したパケットがバッファを出てくるまでは、当該パケットを次の処理へ移すことができない。
上記問題を解決するために、たとえば第二の技術を実装したストリーム処理装置15が考えられる。ストリーム受信装置15は、受信したストリームのTTSパケットをバッファへ入力するタイミングで、上記タイミングを示す入力時刻を取得する。そして、ストリーム処理装置15は、当該TTSパケットをバッファで滞留させた後、当該TTSパケットのTTSタイムスタンプがTTSカウント値と一致するタイミングで、上記タイミングを示す出力時刻を取得し、当該TTSパケットをデマックス部へ出力させる。ストリーム処理装置15は、出力時刻および入力時刻の差を計算することにより、当該TTSパケットがバッファに実際に滞留した時間を示す実滞留時間を取得する。
ストリーム処理装置15は、複数のTTSパケットにおける実滞留時間を取得し、取得した実滞留時間の傾向に基づいて、ストリーム処理装置15におけるローカルTTSクロックの周波数が局側装置における局側TTSクロックの周波数と比べて、高い、低いまたは適正であるかどうかを判断する。
より詳細には、たとえば、ローカルTTSクロックが示す時刻をTとする。また、局側TTSクロックが示す時刻をtとする。Tおよびtの関係は、一般にはT=a×t+bと記述でき、aが1の場合、ローカルTTSクロックおよび局側TTSクロックが同期している。また、a>1の場合、ローカルTTSクロックの周波数は、局側TTSクロックの周波数より高い。また、a<1の場合、ローカルTTSクロックの周波数は、局側TTSクロックの周波数より低い。
たとえば、局側装置は、時刻(t1+L)を示すTTSタイムスタンプを付与したTTSパケットを時刻t1において、ストリーム処理装置15へ送信する。ストリーム処理装置15は、伝送時間を無視できるとして、時刻T1において当該TTSパケットをバッファへ入力する。時刻T1は、時刻(a×t1+b)に対応する。ストリーム処理装置15は、時刻(t1+L)において当該パケットをバッファからデマックス部へ出力させる。従って、実滞留時間を示すD1は、時刻(t1+L)および時刻(a×t1+b)の差である、((1−a)×t1+L−b)となる。
また、たとえば、局側装置は、時刻(t2+L)を示すTTSタイムスタンプを付与したTTSパケットを、時刻t1より後の時刻t2において、ストリーム処理装置15へ送信する。ストリーム処理装置15は、伝送時間を無視できるとして、時刻T2において当該TTSパケットをバッファへ入力する。時刻T2は、時刻(a×t2+b)に対応する。ストリーム処理装置15は、時刻(t2+L)において当該パケットをバッファからデマックス部へ出力させる。従って、実滞留時間を示すD2は、時刻(t2+L)および時刻(a×t2+b)の差である、((1−a)×t2+L−b)となる。
また、実滞留時間の差を示すD2およびD1の差は、((1−a)×(t2−t1))となる。前提条件として、時刻t2は、時刻t1より後の時刻であるので、(t2−t1)は正である。たとえば、ローカルTTSクロックの周波数が、局側TTSクロックの周波数より高い場合、すなわちa>1の場合、(1−a)が負となるので、実滞留時間の差は、負となる。これは、時刻t2が時刻t1より後になればなるほど、D2は、D1より小さくなることを示している。
すなわち、ローカルTTSクロックの周波数が、局側TTSクロックの周波数より高い場合、局側装置が送信する時刻が遅いTTSパケットは、局側装置が送信する時刻が早いTTSパケットと比べて、バッファにおける実滞留時間が短くなる。従って、ストリーム処理装置15は、後に受信したTTSパケットの実滞留時間が、先に受信したTTSパケットの実滞留時間と比べて短い、すなわち実滞留時間が減少傾向にある場合に、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて高いと判断することができる。
また、たとえば、ローカルTTSクロックの周波数が、局側TTSクロックの周波数より低い場合、すなわちa<1の場合、(1−a)が正となるので、実滞留時間の差は、正となる。これは、時刻t2が時刻t1より後になればなるほど、D2は、D1より大きくなることを示している。
すなわち、ローカルTTSクロックの周波数が、局側TTSクロックの周波数より低い場合、局側装置が送信する時刻が遅いTTSパケットは、局側装置が送信する時刻が早いTTSパケットと比べて、バッファにおける実滞留時間が長くなる。従って、ストリーム処理装置15は、後に受信したTTSパケットの実滞留時間が、先に受信したTTSパケットの実滞留時間と比べて長い、すなわち実滞留時間が増加傾向にある場合に、ローカルTTSクロックの周波数が局側TTSクロックの周波数と比べて低いと判断することができる。
また、たとえば、ローカルTTSクロックの周波数が、局側TTSクロックの周波数と同じ場合、すなわちa=1の場合、(1−a)が0となるので、実滞留時間の差は、0となる。これは、実滞留時間の差が、時刻t1または時刻t2によらないことを示している。
すなわち、ローカルTTSクロックの周波数が、局側TTSクロックの周波数と同じ場合、TTSパケットのバッファにおける実滞留時間は変化しない。従って、ストリーム処理装置15は、実滞留時間が変化しない場合に、ローカルTTSクロックおよび局側TTSクロックが同期していると判断することができる。
ストリーム処理装置15は、実滞留時間を取得することにより、バッファへ入力するTTSパケットの単位時間当たりのバイト数に応じて遅延時間が変化するという問題を、解決することができる。
しかしながら、上記の動作によっても、受信したストリームのTTSパケットは、バッファへ入力してから、当該TTSパケットのTTSタイムスタンプがTTSカウント値と一致するタイミングまでバッファに滞留する。従って、バッファへ入力したTTSパケットが、バッファから出力されるまでの遅延時間が発生してしまうという問題が残ってしまう。また、たとえばストリーム処理装置15は、受信したパケットがバッファを出てくるまでは、当該パケットを次の処理へ移すことができない。本発明の実施の形態におけるストリーム処理装置20では、以下の動作により上記問題を解決する。
[滞留時間に基づくTTSクロックの再生処理動作]
ストリーム処理装置10は、以下に示す各シーケンス図の各ステップを図示しないメモリから読み出して実行する。このプログラムは、外部からインストールすることができる。このインストールされるプログラムは、たとえば記録媒体に格納された状態で流通する。
図4は、本発明の実施の形態に係るストリーム処理装置において仮想バッファを用いて算出した平均仮想滞留時間に基づいてTTSクロックの再生処理を行う際の動作手順を定めたフローチャートである。
図4を参照して、まず、ストリーム処理装置20は、受信するストリームにおけるTTSパケットを受ける(ステップS102)。
次に、ストリーム処理装置20におけるタイムスタンプ取得部21は、たとえばi番目のTTSパケットを受けると、受けたTTSパケットにおけるTTSヘッダからTTSタイムスタンプを示すTS[i]を取得する(ステップS104)。
次に、タイムスタンプ取得部21は、取得したTS[i]を仮想バッファ演算部23へ出力する。また、タイムスタンプ取得部21は、受けたTTSパケットをTTSゲート部22へ出力する。
次に、仮想バッファ演算部23は、たとえばユーザによる番組選択またはエラー発生等の後、最初のTTSタイムスタンプであるTS[0]を、タイムスタンプ取得部21から受けると(ステップS106でYES)、TTSカウンタ部24におけるTTSカウント値をTS[0]に初期化する(ステップS108)。
次に、仮想バッファ演算部23は、タイムスタンプ取得部21からTS[i]を受けると、TS[i]を受けた時刻tiにおけるTTSカウント値に対応するSTC[i]をTTSカウンタ部24から取得する(ステップS110)。
次に、仮想バッファ演算部23は、TS[i]とSTC[i]との差を示すΔt[i]を計算する(ステップS112)。
より詳細には、TS[i]は、時刻tiにおいてストリーム処理装置20により受信されたi番目のTTSパケットが、TTSゲート部22によりデマックス部27へ出力される時刻である。すなわち、TS[i]は、i番目のTTSパケットが仮想バッファを出る時刻とみなすことができる。
また、STC[i]は、i番目のTTSパケットがストリーム処理装置20により受信された時刻tiを示す。すなわち、STC[i]は、i番目のTTSパケットが仮想バッファへ入る時刻とみなすことができる。
従って、Δt[i]は、i番目のTTSパケットが仮想バッファへ入ってから仮想バッファを出るまでの仮想滞留時間を示す。
次に、仮想バッファ演算部23は、時刻tiの直近の、たとえばp個のΔtに基づいて移動平均を算出するようにユーザにより設定されている場合、Δt[i-p+1]からΔt[i]までのΔtに基づいて、i番目のTTSパケットの移動平均に対応する平均仮想滞留時間を示すAvgΔt[i]を計算する(ステップS114)。
次に、仮想バッファ演算部23は、たとえばAvgΔt[i]、および時刻tiより前に計算したAvgΔt[i−1]から、AvgΔtの傾向を分析する(ステップS116)。
次に、仮想バッファ演算部23は、たとえばAvgΔt[i]がAvgΔt[i−1]より大きい場合、平均仮想滞留時間であるAvgΔtが増加傾向にあると判断し(ステップS118でYES)、平均仮想滞留時間が増加傾向にあることをTTSクロック調整部25へ通知する。TTSクロック調整部25は、上記通知に応じてTTSクロック生成部26の周波数を上げる(ステップS120)。
また、仮想バッファ演算部23は、たとえばAvgΔt[i]がAvgΔt[i−1]より小さい場合、平均仮想滞留時間であるAvgΔtが増加傾向でなく(ステップS118でNO)、減少傾向にあると判断し(ステップS122でYES)、平均仮想滞留時間が減少傾向にあることをTTSクロック調整部25へ通知する。TTSクロック調整部25は、上記通知に応じてTTSクロック生成部26の周波数を下げる(ステップS124)。
また、仮想バッファ演算部23は、たとえばAvgΔt[i]がAvgΔt[i−1]と同じである場合、平均仮想滞留時間であるAvgΔtが増加傾向でも減少傾向でもないと判断し(ステップS122でNO)、TTSクロック生成部26の周波数を調整するための通知をTTSクロック調整部25へ出力しない。
以上の動作により、ストリーム処理装置20は、仮想バッファを用いて算出した平均仮想滞留時間に基づいてTTSクロックの再生処理を行う。
第二の技術では、TTSパケットがバッファを出るタイミングで実滞留時間を計算する。一方、仮想バッファ演算部23は、上記のステップS112において、i番目のTTSパケットが仮想バッファへ入る時刻を示す時刻tiにおいて、実滞留時間と等価な上記仮想滞留時間を算出することができる。
すなわち、仮想バッファ演算部23は、上記仮想滞留時間を算出するために、i番目のTTSパケットが仮想バッファから出る時刻であるTS[i]まで待つ必要がない。従って、ストリーム処理装置20は、i番目のTTSパケットが仮想バッファへ入る時刻を示す時刻tiにおいて算出した仮想滞留時間に基づいて、TTSクロックを再生することができる。また、ストリーム処理装置20は、受信したパケットを、バッファにおいて滞留させることなく次の処理へ移すことができる。
また、仮想バッファ演算部23は、上記のステップS114において移動平均を算出したが、これに限定するものではない。仮想バッファ演算部23は、未加工の仮想滞留時間に基づいて、仮想滞留時間の傾向を分析してもよい。
たとえば、ストリーム処理装置20は、一定の時間間隔で規則正しく局側装置10から送信されたTTSパケットを、一定の時間間隔で規則正しく受信できる状況において、仮想バッファ演算部23は、Δt[i]がΔt[i−1]より大きい場合、仮想滞留時間が増加傾向にあると判断し、Δt[i]がΔt[i−1]より小さい場合、仮想滞留時間が減少傾向にあると判断することができる。また、仮想バッファ演算部23は、Δt[i]がΔt[i−1]と同程度である場合、仮想滞留時間が増加傾向でも減少傾向でもないと判断することができる。すなわち、ストリーム処理装置20は、Δtが所定値になるようにTTSクロック生成部26の周波数を調整することにより、ローカルTTSクロックを局側TTSクロックに同期させることができる。
また、局側装置10がMPEG2−TSを再送信する際に、ヌルパケット等を削除することによりMPEG2−TTSを作成する場合、当該MPEG2−TTSは、図2の(B)に示すような時系列上不連続なTTSパケットを含んでしまう。また、TTSパケットの伝送時間は、TTSパケットにより異なるので、ストリーム処理装置20が各TTSパケットを受信する時間間隔は、一定でない。この際、仮想バッファ演算部23が、ステップS112において算出するΔtは、受信するTTSパケット毎にばらついてしまう。
Δtのばらつきが大きくなると、TTSクロックの周波数の揺らぎが発生する。このTTSクロックの周波数の揺らぎが、さらに大きなΔtのばらつきを引き起こし、これによりTTSクロックの周波数の揺らぎが増幅される場合がある。
この場合においても、仮想バッファ演算部23は、上記のステップS114において、ばらついたΔtの移動平均を算出することにより、Δtを平滑化したAvgΔtを取得する。これにより、AvgΔtは、ローパスフィルタを通過したΔtとみなせるので、過剰なフィードバック処理に起因するTTSクロックの周波数の揺らぎを抑えることができる。
従って、仮想バッファ演算部23は、ステップS116において、AvgΔtに基づいて滞留時間の傾向を判断する際に、ストリーム処理装置20がTTSパケットを受信する時刻が不規則な場合においても、適切な判断を行うことができる。
また、上記のステップS102からステップS124までの動作は、ストリーム処理装置20が受信する全てのパケットについて行う必要はない。たとえば、ストリーム処理装置20は、所定のパケット数毎に上記動作を行ってもよい。
[仮想バッファにおける仮想蓄積量の算出処理動作]
図4に示すTTSクロックの再生処理において、仮想バッファを用いて算出した仮想滞留時間を用いたが、仮想バッファを用いて算出した仮想蓄積量によってTTSクロックの再生処理を行ってもよい。以下に、仮想バッファを用いて算出した平均仮想蓄積量に応じてTTSクロックの再生処理を行う際の動作手順を示す。
図5は、本発明の実施の形態に係るストリーム処理装置において仮想バッファにおける仮想蓄積量の算出処理を行う際の動作手順を定めたフローチャートである。
図5を参照して、まず、ストリーム処理装置20は、受信するストリームにおけるTTSパケットを受ける(ステップS202)。
次に、ストリーム処理装置20におけるタイムスタンプ取得部21は、たとえばi番目のTTSパケットを受けると、受けたTTSパケットにおけるTTSヘッダからTTSタイムスタンプを示すTS[i]を取得する(ステップS204)。
次に、タイムスタンプ取得部21は、取得したTS[i]を仮想バッファ演算部23へ出力する。また、タイムスタンプ取得部21は、受けたTTSパケットをTTSゲート部22へ出力する。
次に、仮想バッファ演算部23は、たとえばユーザによる番組選択またはエラー発生等の後、最初のTTSタイムスタンプであるTS[0]を、タイムスタンプ取得部21から受けると(ステップS206でYES)、TTSカウンタ部24におけるTTSカウント値をTS[0]に初期化する(ステップS208)。また、仮想バッファ演算部23は、仮想バッファにおける仮想蓄積量を示すSnに、初期値としてたとえば0を設定する。
次に、仮想バッファ演算部23は、タイムスタンプ取得部21からTS[i]を受けると、仮想蓄積量であるSnにTTSパケットの大きさである192を加える(ステップS210)。
次に、仮想バッファ演算部23は、i番目のTTSパケットが仮想バッファを出ていく時刻を示すTS[i]までTTSカウント値を監視し(ステップS212でNO)、TS[i]がTTSカウント値と一致すると(ステップS212でYES)、仮想蓄積量であるSnからTTSパケットの大きさである192を減じる(ステップS214)。
以上の動作により、ストリーム処理装置20は、仮想バッファにおける仮想蓄積量の算出処理を行う。
第一の技術では、バッファにおいて、ストリームを所定レベルに達するまで蓄積させ、バッファに蓄積させたストリームのバイト数、すなわち蓄積量の変化を監視する。この際、ストリーム処理装置は、ストリームの蓄積量が所定レベルに達するまで、TTSクロックの再生処理を開始できない。また、ストリーム処理装置は、バッファにおけるストリームを次の処理へ移すことができないため、遅延時間が発生してしまう。
一方、ストリーム処理装置20における仮想バッファ演算部23は、ステップS210で、TTSパケットが仮想バッファへ入る時刻において仮想蓄積量であるSnに192を加える。また、仮想バッファ演算部23は、ステップS212で、当該TTSパケットが仮想バッファを出る時刻において仮想蓄積量であるSnから192を減じる。すなわち、当該TTSパケットが、仮想バッファに入る時刻および仮想バッファを出る時刻の間だけ、当該TTSパケットの容量が、仮想バッファにおける仮想蓄積量であるSnに含められる。
以上の動作により、i番目のTTSパケットが仮想バッファへ入る時刻を示す時刻tiにおける処理を行うだけで、当該TTSパケットを仮想バッファに蓄積させる処理を完了させることができる。
これにより、TTSパケットが仮想バッファに入る時刻から仮想バッファを出る時刻まで、当該TTSパケットを仮想バッファに蓄積させることができる。
また、仮想バッファ演算部23は、上記仮想蓄積量を算出するために、仮想バッファにおいて所定レベルに達するまでストリームを蓄積する必要がない。従って、ストリーム処理装置20は、実際のバッファにストリームを蓄積することなく次の処理へ移すことができる。
また、上記のステップS202からステップS214までの動作は、ストリーム処理装置20が受信する全てのパケットについて行う必要はない。たとえば、ストリーム処理装置20は、所定のパケット数毎に上記動作を行ってもよい。
[蓄積量に基づくTTSクロックの再生処理動作]
図6は、本発明の実施の形態に係るストリーム処理装置において仮想バッファを用いて算出した平均仮想蓄積量に基づいてTTSクロックの再生処理を行う際の動作手順を定めたフローチャートである。
ストリーム処理装置20は、以下に示す、仮想バッファを用いて算出した平均仮想蓄積量に応じてTTSクロックの再生処理を行う際の動作と、図5に示すステップS210からステップS216までの仮想蓄積量を算出するための動作とを並行して行ってもよい。
図6を参照して、ストリーム処理装置20は、局側装置10から最初のTTSパケットを受けることにより動作を開始する(ステップS308)。
次に、仮想バッファ演算部23は、たとえば仮想蓄積量であるSnを評価する時間間隔がユーザにより設定されている場合、TTSカウンタ部24におけるTTSカウント値を監視し(ステップS310でNO)、当該TTSカウント値において上記時間間隔に対応する所定時間分のTTSカウント値が増加すると(ステップS310でYES)、所定時間が経過した時刻tjにおける仮想蓄積量であるSn[j]を取得する(ステップS312)。
次に、仮想バッファ演算部23は、時刻tjの直近の、たとえばr個のSnに基づいて移動平均を算出するようにユーザにより設定されている場合、Sn[j-r+1]からSn[j]までのSnに基づいて、j番目のSnの移動平均に対応する平均仮想蓄積量であるAvgSn[j]を計算する(ステップS314)。
次に、仮想バッファ演算部23は、たとえばAvgSn[j]、および時刻tjより前に計算したAvgSn[j−1]から、AvgSnの傾向を分析する(ステップS316)。
次に、仮想バッファ演算部23は、たとえばAvgSn[i]がAvgSn[i−1]より大きい場合、平均仮想蓄積量であるAvgSnが増加傾向にあると判断し(ステップS318でYES)、平均仮想蓄積量が増加傾向にあることをTTSクロック調整部25へ通知する。TTSクロック調整部25は、上記通知に応じてTTSクロック生成部26の周波数を上げる(ステップS320)。
また、仮想バッファ演算部23は、たとえばAvgSn[i]がAvgSn[i−1]より小さい場合、平均仮想蓄積量であるAvgSnが増加傾向でなく(ステップS318でNO)、減少傾向にあると判断し(ステップS322でYES)、平均仮想蓄積量が減少傾向にあることをTTSクロック調整部25へ通知する。TTSクロック調整部25は、上記通知に応じてTTSクロック生成部26の周波数を下げる(ステップS324)。
また、仮想バッファ演算部23は、たとえばAvgSn[i]がAvgSn[i−1]と同じである場合、平均仮想蓄積量であるAvgSnが増加傾向でも減少傾向でもないと判断し(ステップS322でNO)、TTSクロック生成部26の周波数を調整するための通知をTTSクロック調整部25へ出力しない。
以上の動作により、ストリーム処理装置20は、仮想バッファを用いて算出した平均仮想蓄積量に基づいてTTSクロックの再生処理を行う。
次に、仮想バッファ演算部23は、ストリームを受信している間は(ステップS326でNO)、ステップS310に戻り所定時間ごとにSnを取得する。また、仮想バッファ演算部23は、ストリームの受信が終了すると(ステップS326でYES)、上記動作を終了する。
なお、仮想バッファ演算部23は、上記のステップS310においてユーザにより設定されている時間間隔で仮想蓄積量であるSnを評価するが、これに限定するものではない。仮想バッファ演算部23は、たとえばタイムスタンプ取得部21からTTSタイムスタンプを受けるタイミングに同期して、仮想蓄積量であるSnを評価してもよい。しかしながら、仮想蓄積量であるSnは、時間と共に変化するので、所定の時間間隔毎にSnを取得することが好ましい。これにより、サンプリングの偏りを防ぐことができる。
また、仮想バッファ演算部23は、上記のステップS314において移動平均を算出したが、これに限定するものではなく、未加工の仮想蓄積量に基づいて、仮想蓄積量の傾向を分析してもよい。
たとえば、ストリーム処理装置20は、一定の時間間隔で規則正しく局側装置10から送信されたTTSパケットを、一定の時間間隔で規則正しく受信できる状況において、仮想バッファ演算部23は、Sn[j]がSn[j−1]より大きい場合、仮想蓄積量が増加傾向にあると判断し、Sn[j]がSn[j−1]より小さい場合、仮想蓄積量が減少傾向にあると判断することができる。また、仮想バッファ演算部23は、Sn[j]がSn[j−1]と同程度である場合、仮想蓄積量が増加傾向でも減少傾向でもないと判断することができる。すなわち、ストリーム処理装置20は、Snが所定値になるようにTTSクロック生成部26の周波数を調整することにより、ローカルTTSクロックを局側TTSクロックに同期させることができる。
また、局側装置10がMPEG2−TSを再送信する際に、ヌルパケット等を削除することによりMPEG2−TTSを作成する場合、当該MPEG2−TTSは、図2の(B)に示すような時系列上不連続なTTSパケットを含んでしまう。また、TTSパケットの伝送時間は、TTSパケットにより異なるので、ストリーム処理装置20が各TTSパケットを受信する時間間隔は、一定でない。この際、仮想バッファ演算部23が、ステップS312において取得するSnは、取得するタイミングによって大きくばらついてしまう。
Snのばらつきが大きくなると、TTSクロックの周波数の揺らぎが発生する。このTTSクロックの周波数の揺らぎが、さらに大きなSnのばらつきを引き起こし、これによりTTSクロックの周波数の揺らぎが増幅される場合がある。
この場合においても、仮想バッファ演算部23は、上記のステップS314において、ばらついたSnの移動平均を算出することにより、Snを平滑化したAvgSnを取得する。これにより、AvgSnは、ローパスフィルタを通過したSnとみなせるので、過剰なフィードバック処理に起因するTTSクロックの周波数の揺らぎを抑えることができる。
従って、仮想バッファ演算部23は、ステップS316において、AvgSnに基づいて仮想蓄積量の傾向を判断する際に、ストリーム処理装置20がTTSパケットを受信する時刻が不規則な場合においても、適切な判断を行うことができる。
[受信したTTSパケットの処理動作]
図7は、本発明の実施の形態に係るストリーム処理装置において受信したTTSパケットを処理する動作手順を定めたフローチャートである。
タイムスタンプ取得部21は、図4に示すステップS104、図5に示すステップS204および図6に示すステップS304において、i番目のTTSパケットからTTSタイムスタンプを取得後、上記TTSパケットをTTSゲート部22へ出力する。
ストリーム処理装置20は、以下に示す、上記TTSパケットがTTSゲート部22へ出力されてから行われる動作と、図4に示すステップS110からステップS124までの動作、図5に示すステップS210からステップS216までの動作、または図6に示すステップS310からステップS324までの動作とを並行して行ってもよい。
図7を参照して、ストリーム処理装置20は、受信するストリームにおけるTTSパケットを受ける動作以降の動作(ステップS402〜ステップS408)は、図4に示すフローチャートにおける動作(ステップS102〜ステップS108)、および図5に示すフローチャートにおける動作(ステップS202〜ステップS208)と同様であるため、ここでは詳細な説明を繰り返さない。
次に、TTSゲート部22は、i番目のTTSパケットをタイムスタンプ取得部21から受けると、受信するストリームにおける、TTSタイムスタンプおよびPCRが同期しているかどうか確認する(ステップS410)。
次に、TTSゲート部22は、受信するストリームにおける、TTSタイムスタンプおよびPCRが同期している場合(ステップS410でYES)、PCRクロックの代わりにTTSクロックを利用できるので、ゲート動作を行わない。すなわち、TTSゲート部22は、タイムスタンプ取得部21から受けたi番目のTTSパケットからTTSヘッダを外すことによりi番目のTSパケットを作成し、作成したi番目のTSパケットをデマックス部27へ出力する。
次に、デマックス部27は、i番目のTSパケットをTTSゲート部22から受けると、受けたTSパケットをビデオTSパケット、オーディオTSパケットまたはPCRパケット等に多重分離し、多重分離したTSパケットをTSヘッダおよびペイロードに分離する(ステップS412)。
次に、デマックス部27は、たとえばi番目のTSパケットがビデオTSパケットである場合、ビデオデータを含むペイロードをビデオESバッファへ出力する。また、デマックス部27は、たとえばi番目のTSパケットがオーディオTSパケットである場合、オーディオデータを含むペイロードをオーディオESバッファ31へ出力する。
また、デマックス部27は、i番目のTSパケットがPCRを含むPCRパケットである場合、PCRクロックの代わりにTTSクロックを利用するので、アダプテーションフィールドに含まれるPCRをPCR回復部28へ出力しなくてもよい。
次に、ビデオデコーダ部30は、TTSクロック生成部26における基準クロックのタイミングに従って、ビデオデータのデコード処理を行う(ステップS414)。次に、ビデオデコーダ部30は、デコード処理により作成した番組画像を例えば表示装置12へ出力する。
また、オーディオデコーダ部30は、TTSクロック生成部26における基準クロックのタイミングに従って、オーディオデータのデコード処理を行う(ステップS416)。次に、オーディオデコーダ部30は、デコード処理により作成した音声情報をたとえば表示装置12へ出力する。
また、TTSゲート部22は、受信したストリームにおける、TTSタイムスタンプおよびPCRが同期していない場合(ステップS410でNO)、ローカルPCRクロックを再生するためにゲート動作を行う(ステップS418)。
すなわち、TTSゲート部22は、TTSカウンタ部24から受けるTTSカウント値が、タイムスタンプ取得部21から受けたi番目のTTSパケットに対応するTS[i]と一致すると、TTSヘッダを外すことにより作成したi番目のTSパケットをデマックス部27へ出力する。
次に、デマックス部27は、i番目のTSパケットをTTSゲート部22から受けると、受けたTSパケットをビデオTSパケット、オーディオTSパケットまたはPCRパケット等に多重分離し、多重分離したTSパケットをTSヘッダおよびペイロードに分離する(ステップS420)。
次に、デマックス部27は、たとえばi番目のTSパケットがビデオTSパケットである場合、ビデオデータを含むペイロードをビデオESバッファへ出力する。また、デマックス部27は、たとえばi番目のTSパケットがオーディオTSパケットである場合、オーディオデータを含むペイロードをオーディオESバッファへ出力する。
また、デマックス部27は、i番目のTSパケットがPCRを含むPCRパケットである場合、アダプテーションフィールドからPCRを分析し、分析したPCRをPCR回復部28へ出力する。
次に、PCR回復部28は、PCRをデマックス部27から受けると、受けたPCRに基づいて、PCRクロックを再生する(ステップS422)。具体的には、PCR回復部28は、受けたPCRがローカルPCRクロックより進んでいる場合、ローカルPCRクロックの周波数を上げる。また、PCR回復部28は、受けたPCRがローカルPCRクロックより遅れている場合、ローカルPCRクロックの周波数を下げる。
これにより、ストリーム処理装置30は、局側PCRクロックと同期したローカルPCRクロックに合わせて、受信したストリームを処理することができる。
また、ビデオデコーダ部30は、ローカルPCRクロックのタイミングに従って、ビデオデータのデコード処理を行う(ステップS424)。次に、ビデオデコーダ部30は、デコード処理により作成した番組画像を例えば表示装置12へ出力する。
また、オーディオデコーダ部30は、ローカルPCRクロックのタイミングに従って、オーディオデータのデコード処理を行う(ステップS426)。次に、オーディオデコーダ部30は、デコード処理により作成した音声情報をたとえば表示装置12へ出力する。
以上の動作により、ストリーム処理装置20は、ストリーム処理装置において受信したTTSパケットを処理する。
なお、ビデオTSパケットまたはオーディオTSパケットのペイロードに含まれる情報は、ビデオESバッファ29またはオーディオESバッファ31において滞留する。このため、ビデオTSパケットおよびオーディオTSパケットは、どのタイミングでTTSゲート部22からデマックス部27へ出力しても構わない。
一方、PCRパケットは、ローカルPCRクロックを局側PCRクロックに同期させるために用いられるので、所定のタイミングでPCR回復部28へ出力する必要がある。
従って、TTSゲート部22は、ステップS418において、PCRパケットのみゲート動作を行い、PCRパケット以外のTSパケットについてはそのままデマックス部27へ出力してもよい。
また、TTSゲート部22は、ローカルPCRクロックを再生させるために、局側TTSクロックと同期したローカルTTSクロックによりゲート動作を行う。すなわち、TTSゲート部22は、局側TTSクロックと同期したローカルTTSクロックに基づいて、PCRパケットに含まれるTTSタイムスタンプに対応したタイミングで、上記PCRパケットをデマックス部27へ出力する。これにより、PCR回復部28は、上記PCRパケットを相対デコードタイミングで、デマックス部27経由でTTSゲート部22からPCRを受ける。
このように、PCR回復部28が相対デコードタイミングで受けたPCRに基づいてローカルPCRクロックを再生することにより、ストリーム処理装置20は、ローカルPCRクロックを局側PCRクロックに同期させることができる。
また、局側TTSクロックおよび局側PCRクロックが同期している場合、図4または図6に示すローカルTTSクロックの再生処理により、ローカルTTSクロックを局側TTSクロックに同期させると、ローカルTTSクロックは、自動的に局側PCRクロックと同期する。従って、ストリーム処理装置20は、PCRを用いてローカルPCRクロックを局側PCRに同期させる必要はなく、ローカルPCRクロックの代わりにローカルTTSクロックを利用することができる。
これにより、ストリーム処理装置20は、受信するストリームにおいて、TTSタイムスタンプおよびPCRが同期している場合、デマックス部27以降の処理を行う際に、TTSクロックを基準クロックとして用いることができる。
また、受信するストリームにおいて、TTSタイムスタンプおよびPCRが同期している場合、PCRクロックを再生する必要がないので、PCRパケットを相対デコードタイミングでPCR回復部28へ投入する必要がない。従って、TTSゲート部22は、ゲート動作を行う必要はなく、受信したストリームのTTSパケットは、滞留することなくタイムスタンプ取得部21からデマックス部27以降の処理へ移される。
すなわち、ストリーム処理装置20は、受信したストリームのTTSパケットを、遅延時間なしでデマックス部27以降の処理へ移すことができる。
ところで、基準クロックの周波数を調整するために、予め定めた規定範囲までパケットをバッファへ蓄積する必要がある。たとえば、受信されたパケットが順次バッファに蓄積されていき、パケットが予め定めた規定範囲まで蓄積された後に、最初に受信されたパケットは、バッファから取り出されて次の処理へ移される。従って、パケットが、バッファへ入ってからバッファを出るまでの滞留時間、すなわち遅延時間が発生することから、パケットを受信しても、遅延時間を経過するまで当該パケットの処理を行うことができない。
これに対して、本発明の実施の形態に係るストリーム処理装置では、TTSパケットはTTSヘッダ、TSヘッダおよびペイロードを含み、複数のTTSパケットの少なくとも一部のTSヘッダはPCRを含み、複数のTTSパケットの各々のTTSヘッダはTTSタイムスタンプを含み、ローカルTTSクロックを生成するためのTTSクロック生成部26と、ローカルTTSクロックに基づいてTTSカウント値を更新するためのTTSカウンタ部24と、TTSカウント値およびTTSタイムスタンプに基づいてTTSクロック生成部26を制御することにより、ローカルTTSクロックの周波数を調整するための仮想バッファ演算部23およびTTSクロック調整部25とを備える。
このように、TTSカウント値およびTTSタイムスタンプ値は、ストリーム処理装置20がTTSパケットを受信した時刻から取得することができるので、TTSクロック生成部26を制御する処理およびデコードする処理を、当該時刻から開始することができ、かつTTSゲート部22におけるバッファが不要となり、映像のデコード処理もすぐに開始することができる。従って、ストリーム処理装置20がTTSパケットを受信した時刻から、当該TTSパケットをたとえばデコード処理するまでの遅延時間の増大を抑制することができる。
また、ローカルTTSクロックに基づいたTTSカウント値、およびVODサーバ等の局側装置10におけるTTSクロックに基づいたTTSタイムスタンプ値を利用することにより、ローカルTTSクロックを、局側装置10におけるTTSクロックに同期させることができる。
このように、TTSカウント値が局側装置10におけるTTSクロックと同期するので、ストリーム処理装置20は、ローカルTTSクロックに基づいて処理を行うことにより、局側装置10におけるTTSクロックに基づいて作成されたストリームを、局側装置10におけるストリームの各パケットの処理タイミングと同様のタイミング関係で、ストリームの各パケットを処理することができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、TTSカウント値およびTTSタイムスタンプに基づいて、TTSパケット用の仮想的なバッファの評価値を算出し、算出した評価値に応じてTTSクロック生成部26を制御することにより、ローカルTTSクロックの周波数を調整する。
このような構成により、実際にバッファを設けることなく、仮想的なバッファの評価値を算出することができるため、ローカルTTSクロックを適切に制御することができる。
そして、ストリーム処理装置20は、バッファを実装しないので、受信したTTSパケットを、バッファに滞留させることなく次の処理へ移すことができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、TTSカウント値およびTTSタイムスタンプの差に基づいて、ローカルTTSクロックの周波数を調整する。
このように、TTSクロックに基づいたTTSカウント値、および局側装置10におけるTTSクロックに基づいたTTSタイムスタンプ値の差を計算することにより、ストリーム処理装置20における動作タイミング、および局側装置10における動作タイミングのずれの経時的な変化を分析することができるので、ローカルTTSクロックの調整を正確に行うことができる。
また、上記差を算出するために必要なTTSカウント値およびTTSタイムスタンプ値は、TTSパケットを受信した時刻において取得するので、上記差を算出するための処理を、当該時刻から開始することができる。従って、ストリーム処理装置20は、上記TTSパケットを受信した時刻において、TTSクロックの周波数の調整に、上記差を反映させることができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、TTSカウント値およびTTSタイムスタンプの大小関係に基づいて1または複数のTTSパケットを選択し、選択したTTSパケットのデータ量の合計に基づいてローカルTTSクロックの周波数を調整する。
このような構成により、バッファにおけるTTSパケットの蓄積量を仮想的に求めることができるため、上記蓄積量を経時的に監視することにより、ストリーム処理装置20における動作タイミング、および局側装置10における動作タイミングのずれの経時的な変化を分析することができる。これにより、ローカルTTSクロックの調整を正確に行うことができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、TTSカウント値およびTTSタイムスタンプの差が所定値になるように、ローカルTTSクロックの周波数を調整する。
ローカルTTSクロックおよび局側装置10におけるTTSクロックが同期していると、ローカルTTSクロックに基づいたTTSカウント値、および局側装置10におけるTTSクロックに基づいたTTSタイムスタンプ値の差が一定になる。上記差が一定になるようにローカルTTSクロックの周波数を調整することにより、ローカルTTSクロックを局側装置10におけるTTSクロックに同期させることができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、複数のTTSパケットの一部のTTSタイムスタンプとTTSカウント値との差に基づいて、ローカルTTSクロックの周波数を調整する。
このような構成により、ストリーム処理装置20が受信する全てのTTSパケットでなく、一部のTTSパケットからローカルTTSクロックに基づいたTTSカウント値、および局側装置10におけるTTSクロックに基づいたTTSタイムスタンプ値の差を計算するので、ストリーム処理装置20における計算の負担を軽減することができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、選択したTTSパケットのデータ量の合計が所定値になるように、ローカルTTSクロックの周波数を調整する。
このように、ストリーム処理装置20により受信されたTTSパケットにおいて、当該TTSパケットを受信したタイミングから、TTSカウント値がTTSタイムスタンプの示す値となるタイミングまでの間、当該TTSパケットのバイト数を合計に含める。ローカルTTSクロックおよび局側装置10におけるTTSクロックが同期していると、上記合計が一定になるので、上記合計が一定になるようにローカルTTSクロックの周波数を調整することにより、ローカルTTSクロックを局側装置10におけるTTSクロックに同期させることができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、TTSカウント値およびTTSタイムスタンプの差を、仮想的なバッファにおけるTTSパケットの仮想滞留時間として算出し、算出した仮想滞留時間に基づいてローカルTTSクロックの周波数を調整する。
このような構成により、仮想的なバッファの評価値として、仮想滞留時間を計算することができるため、ローカルTTSクロックの調整を正確に行うことができる。
また、本発明の実施の形態に係るストリーム処理装置では、仮想バッファ演算部23およびTTSクロック調整部25は、TTSタイムスタンプがTTSカウント値以下となる1または複数のTTSパケットのデータ量の合計を、仮想的なバッファにおけるTTSパケットの仮想蓄積量として算出し、算出した仮想蓄積量に基づいてローカルTTSクロックの周波数を調整する。
このような構成により、仮想的なバッファの評価値として、仮想蓄積量を計算することができるため、ローカルTTSクロックの調整を正確に行うことができる。
また、本発明の実施の形態に係るストリーム処理装置では、ストリーム処理装置20は、さらに、TTSパケットのペイロードに対してデコード処理を行うためのビデオデコーダ部30およびオーディオデコーダ部32を備え、ビデオデコーダ部30およびオーディオデコーダ部32は、PCRおよびTTSタイムスタンプが同期している場合には、ローカルTTSクロックのタイミングに従ってデコード処理を行う。
このように、PCRおよびTTSタイムスタンプが同期していると、ストリーム処理装置20は、PCRクロックを再生させるための、受信したTTSパケットに対するゲート動作を行う必要がないので、速やかにTSSパケットにデコード処理を行うことができる。
また、PCRクロックを再生させるための動作が不要になるので、ストリーム処理装置20における処理負担を軽減することができ、かつバッファ等を含むTTSゲート部22も不要となる。
なお、TTSカウンタ部24は、TTSクロック生成部26からクロックを受けるごとにTTSカウント値をインクリメントしたが、これに限定するものではない。TTSカウンタ部24は、たとえばTTSクロック生成部26からクロックを受けるごとにTTSカウント値をデクリメントしてもよい。従って、TTSカウンタ部24は、時間が経過するに従い、TTSクロックと同期してカウント値を減少させる。これによっても、カウント値は、現在時刻として利用でき、当該カウント値の大小関係から時系列の前後関係を取得することができる。
また、本発明の実施の形態に係るストリーム処理装置は、MPEG2−TS規格に従うストリームの処理を行なう構成であるとしたが、これに限定するものではない。他の規格に従うストリームの処理を行なう構成であってもよい。
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。