(57)【特許請求の範囲】
【請求項１】
ヘッダとペイロードデータとを有するトランスポートパケットを含むトランスポートデータストリームを復号化するように設計されたトランスポートデコーダシステムにおいて用いられる方法であって、
該ヘッダが、不連続性指標を含んでおり、
該システムが、受け取られたトランスポートパケットの該ペイロードデータをトランスポートデータストリームとして一時的に格納する少なくとも１つのバッファと、再生することを目的として該バッファから出力されたデータを復号化する少なくとも１つのデコーダとを備えており、
該トランスポートデコーダおよび該少なくとも１つのデコーダのそれぞれが、別々のカウンタを有しており、
該方法は、不連続性指標を受け取った後にプログラムカウンタ基準（ＰＣＲ）の受け取りを操作する方法であり、
該方法は、
受け取られたトランスポートパケットをパーシングし、該受け取られたトランスポートパケットの該ペイロードデータをメモリに格納するステップと、
不連続性指標を受け取るステップと、
該不連続性指標を受け取った後に、ＰＣＲ値を受け取るステップと、
該不連続性指標を受け取った後に該ＰＣＲ値を受け取ると、該トランスポートデコーダの該カウンタに該受け取られたプログラムカウンタ基準値をロードするステップと、
タイムスタンプを求めて、該ＰＣＲ値の後に受け取られ、かつ、該メモリに格納されている該データをサーチし、該タイムスタンプを取り出すステップと、
該取り出されたタイムスタンプの値よりも１フレーム時間未満だけ前の時点に対して、タイマ割込みを設定するステップと、
該タイマ割込みが起こるときに、該ＰＣＲ値を該デコーダの該カウンタに送ることによって、該デコーダがデータを処理するのに十分な時間を与えるステップと
を包含する、方法。
【請求項２】
前記サーチするステップが、
タイムスタンプの値を含みうるトランスポートパケットを受け取ると、ホストマイクロコントローラに割り込みをおこない、前記格納されたトランスポートパケットのアドレス位置を送るステップと、
引き続いて、該格納されたトランスポートパケットのアドレス位置において、タイムスタンプの値をサーチするステップと
を包含する、請求項１に記載の方法。
【請求項３】
パーシングの前に、受け取られたトランスポートパケットの境界が所定のパケット境界に対応しているかどうかを判定することにより、該受け取られたトランスポートパケットの有効性を判定し、有効と判定された該パケットのみをパーシングするステップをさらに包含する、請求項１に記載の方法。
【請求項４】
前記受け取られたトランスポートパケットの有効性を判定するステップが、該受け取られたトランスポートパケットにおける同期バイトをチェックすることを包含する、請求項３に記載の方法。
【請求項５】
ヘッダとペイロードデータとを有するトランスポートパケットを含むトランスポートデータストリームを受け取るように設計されたシステムにおいて、不連続性指標の受け取りを操作する装置であって、
該ヘッダが、不連続性指標を含んでおり、
該システムが、受け取られたトランスポートパケットの該ペイロードデータをトランスポートデータストリームとして一時的に格納する少なくとも１つのバッファと、再生することを目的として該バッファから出力されたデータを復号化する少なくとも１つのデコーダとを備えており、
該トランスポートデコーダおよび該少なくとも１つのデコーダのそれぞれが、別々のカウンタを有しており、
該装置は、
不連続性指標を受け取り、検出する手段と、
該不連続性指標を受け取り、検出した後に、プログラムカウンタ基準値を受け取る手段と、
該トランスポートパケットをパーシングし、該トランスポートパケットの該ペイロードデータをメモリに格納する手段と、
該不連続性指標を受け取り、検出した後にプログラムカウンタ基準値を受け取ると、該トランスポートデコーダの該カウンタに、該受け取られたプログラムカウンタ基準値をロードする手段と、
タイムスタンプを求めて該メモリに格納されている該データをサーチし、該タイムスタンプが発見された場合には該タイムスタンプを取り出す手段と、
該タイムスタンプの値よりも１フレーム時間未満だけ前の時点に対して、タイマ割込みを設定する手段と、
該タイマ割込みが起こるときに、該プログラムカウンタ基準値を該デコーダの該カウンタに送る手段と
を備えた、装置。
【請求項６】
ヘッダとペイロードデータとを有するトランスポートパケットを含むトランスポートデータストリームを復号化するように設計されたトランスポートデコーダシステムにおいて、不連続性指標の受け取りを操作する方法であって、
該ヘッダが、不連続性指標を含んでおり、
該トランスポートデコーダが、該トランスポートデコーダから出力されたデータを復号化する少なくとも１つの外部デコーダに結合されており、
該トランスポートデコーダおよび該外部デコーダのそれぞれが、該データストリームに対する同期を維持する別々のカウンタを有しており、
該方法は、
該不連続性指標を受け取るステップと、
該不連続性指標を受け取った後に、プログラムカウンタ基準値を受け取るステップと、
該トランスポートパケットをパーシングし、該トランスポートパケットのペイロードデータをメモリに格納するステップと、
該不連性指標を受け取った後にプログラムカウンタ基準値を受け取ると、該トランスポートデコーダの該カウンタに該受け取られたプログラムカウンタ基準値をロードするステップと、
タイムスタンプを求めて該メモリに格納されている該データをサーチし、該タイムスタンプが発見された場合には該タイムスタンプを取り出すステップと、
該タイムスタンプの値よりも１フレーム時間未満だけ前の時点に対して、タイマ割込みを設定するステップと、
該タイマ割込みが起こるときに、該プログラムカウンタ基準値を該デコーダの該カウンタに送ることによって、該デコーダがデータを処理するのに十分な時間を与えるステップと
を包含する、方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、広くは、ＭＰＥＧ−２規格に従って符号化されたデータの受信、処理および送信に関する。より具体的には、本発明は、ＭＰＥＧ−２フォーマットのデータストリームを操作するトランスポートデコーダの動作およびインタフェーシングに関する。
【０００２】
【従来の技術】
高精細度テレビジョン（ＨＤＴＶ）は、従来のテレビジョンに取って代わるべく進歩し続けている。このような進歩への道を切り開くために、さまざまな会社や団体が規格化作業をおこなっており、ＨＤＴＶの地球規模のマーケットを実現しようとしている。
【０００３】
このような会社により構成されたグループとしては、例えば、ＡＴ＆Ｔ、デービッドサーノフリサーチセンタ、マサチューセッツ工科大学といったメンバーから構成される「ディジタルＨＤＴＶグランドアライアンス」などが知られている。このグループによりなされた開発作業を包括的に概観したものとしては、Ｒｏｂｅｒｔ  Ｈｏｐｋｉｎｓによる「北アメリカ用のディジタル地上波ＨＤＴＶ−グランドアライアンスＨＤＴＶシステム」と題された論文（IEEE Transactions on Consumer Electronics、1994年夏）がある。本願明細書でも、プログラムおよびトランスポートパケットストリームの使用を含むＨＤＴＶシステムの背景および基本に関するその教示については、この論文を参考として援用している。
【０００４】
グランドアライアンスにより採用された規格としては、国際標準化機構（ＩＳＯ）内の委員会であるムービング・ピクチャ・エキスパート・グループ（ＭＰＥＧ）により開発されている、ビデオおよびオーディオ情報を符号化するためのＭＰＥＧ−２規格がある。承認された規格は、定期的に公開されている。例えば、「情報技術−動画およびそれに付随する音声の生成符号化」のビデオセクション（ＩＳＯ／ＩＥＣ１３８１８−２、１９９５年）（以下、「ビデオセクション」と称する）および「情報技術−動画およびそれに付随する音声の生成符号化」のシステムセクション（ＩＳＯ／ＩＥＣ１３８１８−１、１９９４年１１月）（以下、「システムセクション」と称する）がある。本願明細書でも、確立された規格およびフォーマットに関するその教示については、ＭＰＥＧ−２規格のこれら２つのセクションを参考として援用している。
【０００５】
ＭＰＥＧ−２規格のシンタクスでは、オーディオデータおよびビデオデータの両方を伝えるのに用いられるいくかのデータ記録レイヤが規定されている。情報を送信するためには、例えば多数のビデオシーケンスを表現するディジタルデータストリームは、いくつかのより小さな単位に分割される。これらの単位はそれぞれ、それに対応するパケット化されたエレメンタリストリーム（ＰＥＳ）パケットにおさめられる。送信時には、それぞれのＰＥＳパケットは、今度は、複数の固定長トランスポートパケットに分割される。トランスポートパケットはそれぞれ、ただ１つのＰＥＳパケットに関連するデータを含んでいる。トランスポートパケットはまた、トランスポートパケットを復号化するのに用いられる制御情報（時には、アダプテーションフィールドを含む）を保持するヘッダを含んでいる。しかし、ＰＥＳデータは、多数のエレメンタリストリームを含んでいてもよい。
【０００６】
システムセクションで述べられているように、多数のエレメンタリストリーム間の同期は、データストリームにタイムスタンプを周期的に設けることによって達成される。例えば、Ｎ個のエレメンタリストリームの復号化は、１個のストリームの復号化を別のストリームの復号化に一致するように調整するのではなく、全ストリームの復号化を１つの共通のマスタタイムベースに合わせて調整することにより同期が取られる。このマスタタイムベースは、Ｎ個のデコーダのうちの１つのクロック信号でもよいし、データソースのクロック信号でもよいし、あるいは、外部から与えられたクロック信号でもよい。
【０００７】
この同期プロセスの一助となるものとして、ＭＰＥＧ−２規格のトランスポートヘッダには、「不連続性指標」が含まれている。トランスポートヘッダのどこに模範的な「不連続性指標」が存在しているかを示すシンタクス表現は、システムセクションに与えられている。このシンタクスを、以下の表１および表２に示す。
【０００８】
【表１】
0003883637.tif 000002
【０００９】
【表２】
0003883637.tif 000003
【００１０】
システムセクションに記載されているように、不連続性指標は、トランスポートヘッダ内のアダプテーションフィールド内に存在している。不連続性指標は、１ビットのフィールドである。この指標は、論理「１」に設定されると、現在のトランスポートストリームパケットについて不連続性状態が真であることを示す。不連続性指標が論理「０」に設定されたり、存在しない場合、不連続性状態は偽である。不連続性指標は、２種類の不連続性（すなわち、システムタイムベースの不連続性および連続性カウンタの不連続性）を示すために用いられる。
【００１１】
システムタイムベースの不連続性は、プログラムクロック基準（ＰＣＲ）ＰＩＤと称されるトランスポートストリームプログラム識別（ＰＩＤ）パケットに不連続性指標を用いることにより示される（システムセクション２．４．４．９、第５０頁を参照のこと）。その後、ＰＣＲ値（すなわち、マスタクロック信号への基準）が受け取られる。
【００１２】
不連続性指標は、例えば、あるタイムベースで記録されたプログラム素材が、別のタイムベースで記録されたデータストリームに挿入される時にセットされる。このタイムベースの違いは、予想外のＰＣＲ値として現れる。
【００１３】
ＰＣＲ  ＰＩＤと称されるＰＩＤのトランスポートストリームパケットについて不連続性状態が真であるとき、同じＰＩＤをもつトランスポートストリームパケットにおける次のＰＣＲは、それに関連づけられたプログラムの新しいシステムタイムクロックのサンプルを表す。システムタイムベースの不連続性を示す点は、新しいシステムタイムベースのＰＣＲを含むパケットの第１のバイトが、システムターゲットデコーダ（ＳＴＤ）の入力に到達した瞬間の時刻であると規定されている。
【００１４】
なお、ＳＴＤはこの技術分野ではよく知られてはいるが、簡単にいうと、概念上はトランスポートエンコーダの出力に接続されている仮想デコーダを表すことには留意されたい。ＭＰＥＧ−２規格に準拠したデータストリームは、ＳＴＤについてはデータフローの問題（バッファのオーバーフローを含む）を引き起こさないことが要求される。ＳＴＤに関するさらなる議論は、システムセクションに述べられている。
【００１５】
続いて、不連続性指標ビットは、新しいシステムタイムベースＰＣＲを含むパケットよりも前に、同一のＰＣＲ  ＰＩＤのトランスポートストリームパケットにおいて「１」に設定されてもよい。この場合、いったん不連続性指標が「１」に設定されると、その不連続性指標は、新しいシステムタイムベースの第１のＰＣＲを含むトランスポートストリームパケットを含めて、そのパケットまでの、同一のＰＣＲ  ＰＩＤをもつすべてのトランスポートストリームパケットにおいて「１」に設定され続ける。システムタイムベースに不連続が発生した後は、新しいシステムタイムベースに対応する２つものＰＣＲが、別のシステムタイムベースの不連続が発生する以前に受け取られる。さらには、トリックモードのステータスが真であるときを別にして、わずかに２つのシステムタイムベースからのデータは、いかなる時にも１つのプログラムについてＳＴＤのバッファに存在している。
【００１６】
【発明が解決しようとする課題】
タイムベースの不連続性が、多数のシステム時定数（ＳＴＣ）値を更新することを（例えば、トランスポートデコーダのクロックマネージャおよび外部ビデオおよびオーディオデコーダにおいて）要求する時、特に、現在、外部デコーダにより復号化されているデータと、トランスポートデコーダのバッファに受け取られ格納されているデータとの間に実質的なレイテンシが存在しうる時には、潜在的な問題が発生する。すなわち、典型的には、トランスポートデコーダは、それぞれがＳＴＣまたはそれに等価な定数を維持している、外部ビデオおよびオーディオデコーダに結合される。よって、システムタイムベースに変化が生じるとき、ＳＴＣのすべてを同時に調整すると、システム同期の問題がもたらされる。
【００１７】
本発明は、上記課題を解決するためになされたものであり、その目的とするところは、バッファとデコーダとの間に発生したシステムタイムベースの不連続性を効率よく処理できるトランスポートデコーダおよび方法を提供することにある。
【００１８】
【課題を解決するための手段】
本発明による方法は、ヘッダとペイロードとを有するトランスポートパケットを含むトランスポートデータストリームを復号化するように設計されたトランスポートデコーダシステムに用いられる方法において、該ヘッダが、不連続性指標を含んでおり、該システムが、該受け取られたトランスポートデータストリームを一時的に格納する少なくとも１つのバッファと、該バッファから出力されたデータを再生を目的として復号化する少なくとも１つのデコーダとを備えており、かつ該トランスポートデコーダおよび該少なくとも１つのデコーダのそれぞれが、別々のカウンタを有している、不連続状態が設定された後のプログラムカウンタ基準（ＰＣＲ）の受け取りを操作する方法であって、受け取られたトランスポートパケットをパーシングし、該データをメモリに格納するステップと、次のＰＣＲ値を受け取った時に、該トランスポートデコーダの該カウンタに該受け取られたプログラムカウンタ基準値をロードするステップと、該ＰＣＲ値の後に受け取られた、該メモリに格納されている該データ中でタイムスタンプをサーチし、該タイムスタンプを取り出すステップと、該取り出されたタイムスタンプ値に基づいて、タイマ割込みを設定するステップと、該タイマ割込みが起こるときに、該ＰＣＲ値を該デコーダの該カウンタに送ることによって、データを処理するのに十分な時間を該デコーダに与えるステップと、を含んでおり、そのことにより上記目的が達成される。
【００１９】
ある実施形態では、前記タイマ割込みが、前記タイムスタンプ値よりも１フレーム時間未満だけ前で、その近傍の時刻について設定される。
【００２０】
ある実施形態では、前記サーチするステップが、タイムスタンプ値を含みうるトランスポートパケットを受け取った時に、ホストマイクロコントローラに割り込みをおこない、該ホストマイクロコントローラに対して、前記格納されたトランスポートパケットに関連するアドレス情報を送るステップと、引き続いて、該格納されたトランスポートパケットの適切なアドレス位置において、タイムスタンプ値をサーチするステップと、を含んでいる。
【００２１】
ある実施形態では、パーシングの前に、受け取られたトランスポートパケットの境界が所定のパケット境界に対応しているかどうかを判定することにより、該受け取られたトランスポートパケットの有効性を判定し、有効と判定された該パケットのみをパーシングするステップをさらに含んでいる。
【００２２】
ある実施形態では、前記受け取られたトランスポートパケットの有効性を判定する前記ステップが、該受け取られたトランスポートパケットにおける同期バイトをチェックするステップを含んでいる。
【００２３】
本発明による装置は、ヘッダとペイロードとを有するトランスポートパケットを含むトランスポートデータストリームを受け取るように設計されたシステムにおいて、該ヘッダが、不連続性指標を含んでおり、該システムが、該受け取られたトランスポートデータストリームを一時的に格納する少なくとも１つのバッファと、該バッファから出力されたデータを再生を目的として復号化する少なくとも１つのデコーダと、を備えており、かつ該トランスポートデコーダおよび該少なくとも１つのデコーダのそれぞれが、別々のカウンタを有している、該不連続性指標の受け取りを操作する装置であって、該不連続性指標を受け取り、検出する手段と、該トランスポートパケットをパーシングし、該データをメモリに格納する手段と、次のプログラムカウンタ基準値を受け取った時に、該トランスポートデコーダの該カウンタに、該受け取られたプログラムカウンタ基準値をロードする手段と、該メモリに格納されている該データ中でタイムスタンプをサーチし、該タイムスタンプの１つが見出された時に、該タイムスタンプを取り出す手段と、該タイムスタンプ値に基づいて、タイマ割込みを設定する手段と、該タイマ割込みが起こるときに、該プログラムカウンタ基準値を該タイムスタンプをもつ該カウンタに送る手段と、を備えており、そのことにより上記目的が達成される。
【００２４】
本発明による方法は、ヘッダとペイロードとを有するトランスポートパケットを含むトランスポートデータストリームを復号化するように設計されたトランスポートデコーダシステムにおいて、該ヘッダが、不連続性指標を含んでおり、該トランスポートデコーダが、該トランスポートデコーダから出力されたデータを復号化する少なくとも１つの外部デコーダに結合されており、かつ該トランスポートデコーダおよび該外部デコーダのそれぞれが、該データストリームに対する同期を維持する別々のカウンタを有している、該不連続性指標の受け取りを操作する方法であって、該不連続性指標を受け取るステップと、該トランスポートパケットをパーシングし、該データをメモリに格納するステップと、次のプログラムカウンタ基準値を受け取った時に、該トランスポートデコーダの該カウンタに該受け取られたプログラムカウンタ基準値をロードするステップと、該メモリに格納されている該データ中でタイムスタンプをサーチし、該タイムスタンプの１つが見出された時に、該タイムスタンプを取り出すステップと、該タイムスタンプ値よりもおよそ１フレーム時間だけ前の時点にタイマ割込みを設定するステップと、該タイマ割込みが起こるときに、該プログラムカウンタ基準値を該デコーダの該カウンタに送ることによって、データを処理するのに十分な時間を該デコーダに与えるステップと、を含んでおり、そのことにより上記目的が達成される。
【００２５】
以下に作用を説明する。本発明は、ヘッダとペイロードとを有するトランスポートパケットを含むトランスポートデータストリームを受け取るように設計されたシステムを伴う。ここで、ヘッダは、不連続性指標を含んでいる。このシステムは、受けとられたトランスポートデータストリームを一時的に格納する少なくとも１つのバッファと、バッファから出力されたデータを再生を目的として復号化する少なくとも１つの外部デコーダとを備えている。本発明は、不連続性指標が受けとられた時に、トランスポートストリームヘッダをパーシングし、そのトランスポートパケットペイロードをメモリに格納することにより、不連続性指標の受け取りを操作できるように設計されている。次のプログラムカウンタ基準値が受け取られると、カウンタには、受け取られたプログラムカウンタ基準値がロードされる。そして、格納されたこのデータ中でタイムスタンプをサーチし、タイムスタンプの１つが見つかると、そのタイムスタンプが取り出される。最後に、取り出されたタイムスタンプに基づき、ある時点についてタイマ割り込みが設定される。そして、そのタイマ割り込みが起こると、プログラムカウンタ基準値がデコーダに送られる。これによって、以前のタイムベースを有するデータの処理を妨害することなく、デコーダが新しいタイムベースを有するデータを処理できるだけの十分な時間を与える新しいタイムスタンプ値を供給することができる。
【００２６】
【発明の実施の形態】
本発明は、添付の図面を併せて参照しながら以下の詳細な説明を読めば、よりよく理解できるであろう。
【００２７】
（概観）
上述のように、本発明の重要な局面は、どのようにしてトランスポートデコーダが効率的に不連続性指標を扱えるかということである。本発明の他の局面は、トランスポートデコーダを、エレメンタリストリームデータしか扱えないビデオデコーダにインタフェースすることである。本発明のさらに他の局面は、トランスポートデコーダをビットレート制約された（bit rate-constrained）オーディオデコーダにインタフェースすることである。上に挙げられた局面を包含するために、本発明は、特別に設計されたＭＰＥＧ−２トランスポートデコーダを含む。
【００２８】
本発明の不連続性の局面についての背景を説明するために、タイムベースの不連続性の実際の世界の例は、ある番組が、ＭＰＥＧ−２フォーマットを用いて衛星を介して国中の多くの受信局に放送される場合に起こりうる。しかし番組の途中で、それぞれの局は、自局のコマーシャルを挿入する。この状態では、不連続性指標は、それぞれがその独自のローカルタイムベースを有するコマーシャルの挿入を可能にするために、番組のタイムベースにおけるギャップつまり中断期間を示す。しかし衛星からの番組送信は、個々の放送局がそれぞれの番組を挿入するあいだ、継続する。したがって挿入されたコマーシャルをもつローカル局からの番組放送を受け取るトランスポートデコーダの内部タイミングは、不連続性指標が検出されたときには望ましくは適切なタイムベースを追従する。
【００２９】
図を見れば、図１Ａは、例示的なディジタルトランスポートデコーダ１１０およびそのさまざまなインタフェースの高いレベルの機能ブロック図を示す。図１Ａに示すように、トランスポートデコーダ１１０は、物理レイヤチャネルインタフェース（チャネルインタフェース）１１２、バッファメモリ１１４、ホストマイクロプロセッサ１１６、外部ビデオおよびオーディオデコーダ１１８および１２０、およびクロック信号回路（例えばＶＣＸＯ）１２２を含む。本発明の例示的な実施の形態においては、トランスポートデコーダ１１０は、１つのビデオインタフェースおよび２つまでのオーディオインタフェースをサポートする（例えばオーディオＡおよびオーディオＢ）。
【００３０】
ホストマイクロプロセッサ１１６は、トランスポートデコーダ１１０の外部のビデオおよびオーディオデコーダ１１８および１２０にもマイクロバス１２４によって結合される。この接続は、パラレルまたはシリアルパスでよく、使用のために選ばれる個々の外部デコーダの必要条件に依存する。いずれにせよ、当業者に理解されるように、ホストマイクロプロセッサ１１６を外部デコーダに結合するこの方法はよく知られている。
【００３１】
概略的には、トランスポートデコーダ１１０および外部ビデオおよびオーディオデコーダ１１８および１２０のそれぞれは、受け取られたデータストリームの復号化および表示を同期させる目的でレジスタまたはカウンタに保持されたシステムタイム定数（ＳＴＣ）値（不図示）を含む。
【００３２】
前述のように、データストリーム内にタイムベース不連続性が起こるとき、問題が起こり、不連続性のために、ＳＴＣ値がトランスポートデコーダ１１０の中で、またビデオおよびオーディオデコーダ１１８および１２０の中でアップデートされることが必要とされる。これは、外部デコーダによって現在、復号化されているデータと受け取られて、トランスポートプロセッサ１１０に格納されているデータとの間に実質的にレイテンシが存在するとき、特に問題となる。
【００３３】
本発明においては、マイクロプロセッサ１１６は、データストリームの同期およびビデオおよびオーディオデコーダ１１８および１２０の動作を制御することにおいて重要な機能を有する。本発明において、マイクロプロセッサ１１６は、直接のメモリマップされたアクセスを、トランスポートデコーダ１１０内のさまざまなオンチップのレジスタにおこなうことができる。マイクロプロセッサ１１６は、また、外部メモリ１１４の中のバッファエリアへ（リード、ライトおよびウォーターマークポインタを通して）、またオンチップの３２バイトリードおよびライトＦＩＦＯへ（図３に示す）のアクセスもおこなう。マイクロプロセッサ１１６は、内部マイクロバス２２３（図２Ｂに示す）によっていくつかの内部機能ブロックを結合し、さまざまなイベントおよびエラー条件がマスク可能な割り込みを介して信号発生されるようにする。
【００３４】
概略的にいえば、図１Ｂのフローチャートに示されるように、本発明の１つの局面は、特別に設計されたトランスポートデコーダ１１０によって、不連続性指標の受け取り（ステップ１５０）のあと、次のステップを実行する。
【００３５】
１）不連続性指標は、必ずしも次のプログラムクロックレファレンス（ＰＣＲ）値と同じデータパケットにはないので、次のＰＣＲ値が受け取られるとき、トランスポートデコーダ１１０内に含まれるクロック管理回路（図２Ａに示す）内のカウンタは、次のＰＣＲ値でロードされる（ステップ１５２）。
【００３６】
２）パーシングされ、メモリ中に格納された後続するパケットは、タイムスタンプについてサーチされ、１つが見つかると、タイムスタンプ値が取り出される（ステップ１５４）、
３）取り出されたタイムスタンプ値の前、１フレーム時間未満だけ前の時刻の点について、タイマ割り込みがマイクロプロセッサ１１６によって設定される（ステップ１５６）。
【００３７】
４）このタイマ割り込みが発生するとき、現在のＳＴＣ値は、外部ビデオおよびオーディオデコーダ１１８および１２０に送られる（ステップ１５８）ことによって、外部デコーダに、データストリーム中のタイムスタンプ値がビデオまたはオーディオデコーダ１１８および１２０に保持されたカウンタ値と比較される前にデータを処理するのに十分な時間を与える。
【００３８】
これらのハイレベルのステップのインプリメンテーションは、以下に詳述される。
【００３９】
図２Ａおよび図２Ｂは、図１Ａに示すトランスポートデコーダ１１０の例示的なインプリメンテーションのハイレベル機能ブロック図を示す。図２Ａおよび図２Ｂを参照すれば、トランスポートデコーダ１１０における全体のデータフローが記載される。図面に示すように、図１Ａのチャネルインタフェース１１２は、チャネルデータプロセッサ（ＣＤＰ）２１０に続く。チャネルインタフェース１１２は、また、ＮＲＳＳスマートカード２３０によって解読する目的でデータをＮＲＳＳインタフェース２１２にデータを供給する。条件付きアクセスのＥＩＡ規格、バージョン２．６、ＮＲＳＳ委員会（９５年４月）は、ＮＲＳＳスマートカードについてのその教示について、ここで参考として援用する。
【００４０】
ＣＤＰ  ２１０は、受け取られたデータストリーム中のパケットを前処理（検出、同期および有効性判断）するために設けられている。ＣＤＰ  ２１０は、その処理をおこなったあと、さらなる処理のためにその出力データをトランスポートプロセッサ（ＴＰＲＯＣ）２１４に向ける。ＴＰＲＯＣ  ２１４は、以下に詳述するＰＩＤテーブルに応じてパーシングのようなさまざまな処理をおこなう。
【００４１】
ＴＰＲＯＣ  ２１４は、メモリコントローラ２１６、クロックマネージャ２１８、プライベートデータプロセッサ２２０および高速データポート２２２を含むトランスポートデコーダ１１０内の機能ブロックのいくつかと相互に機能する。すでに述べたように、マイクロプロセッサ１１６は、さまざまなオンチップのレジスタへのアクセスを指示する。このアクセスは、マイクロインタフェース２１７および内部マイクロバス２２３（図２Ｂに示す）によって得られる。メモリコントローラ２１６は、ＴＰＲＯＣ  ２１４に結合されているのに加えて、外部メモリ１１４およびビデオおよびオーディオデコーダ２２４、２２６および２２８にも結合される。
【００４２】
個々の機能ブロックについてのディジタルデータストリームの処理の詳細をこれから説明する。
【００４３】
（チャネルデータプロセッサ（ＣＤＰ）２１０）
チャネルインタフェース１１２からのデータストリームは、可能なバッファリング（不図示）のあとで、ＣＤＰ  ２１０に渡されることに注意されたい。
【００４４】
ＣＤＰ  ２１０は、受け取られたデータストリームにさまざまな前処理のステップを施す。具体的には、ＣＤＰ  ２１０は、データストリーム中のバイトおよびフレームの境界を決定し、受け取られたデータストリームを８ビットパラレルフォーマットに変換する。本発明の実施の形態において、ＣＤＰ  ２１０に後続してトランスポートデコーダ１１０の中で起こる動作は、バイトフォーマットを用いておこなわれる。
【００４５】
バイトおよびフレーム境界を決定するためには、ＣＤＰ  ２１０は、トランスポート・パケットのヘッダ中に含まれたフレーミングパターンに同期する。具体的には、この同期は、ＭＰＥＧ−２トランスポートストリームのｓｙｎｃ＿ｂｙｔｅ（例えば４７Ｈ）をサーチし、連続するトランスポート・パケットのプログラム可能な数の始まりにおいてその発生をベリファイすることによって達成される。
【００４６】
そうすることによって、ＣＤＰ  ２１０は、ｓｙｎｃ＿ｂｙｔｅをチェックし、データストリームに「ロック」し、パケットの有効性の判断を続ける。ｓｙｎｃ＿ｂｙｔｅのサーチが継続しているとき、Ｓｅａｒｃｈ＿ＳｔａｔｅビットがＣＤＰステータスレジスタ（不図示）の中でセットされる。ｓｙｎｃ＿ｂｙｔｅが見つかり、連続する発生のベリファイが継続しているとき、Ｓｙｎｃ＿Ｓｔａｔｅビットがセットされる。最後に、所定のサーチ基準が満たされると、Ｌｏｃｋ＿Ｓｔａｔｅビットがセットされる。本発明の例示的な実施の形態においては、サーチ基準は、３つの連続する有効と判断されたパケットである。また、Ｌｏｃｋ＿Ｓｔａｔｅの損失を宣言するまえに、通過させるようにＣＤＰ  ２１０がプログラムされている壊れたｓｙｎｃ＿ｂｙｔｅをもつパケットの数を示すＳｙｎｃ＿Ｈｙｓｔｅｒｉｓｉｓ値が確立される。このヒステリシス値が大きくなると、ロックの損失が宣言される。ＣＤＰ  ２１０は、それからＬｏｃｋ＿Ｌｏｓｔ割り込みを発行し、かつＬｏｃｋ＿ＳｔａｔｅからＳｅａｒｃｈ＿Ｓｔａｔｅへ遷移する。
【００４７】
加えて、もしチャネルインタフェース１１２（図１Ａに示す）がＣＨＰＳＴＲＴ信号を供給するなら、トランスポートデコーダ１１０は、ＣＤＰフレーミングおよび同期制御レジスタ中のＦｒａｍｉｎｇ＿Ｍｏｄｅビットを論理「１」に設定することによってデータストリームに同期させる手段として、この信号を用いるように構成されてもよい。この場合、同期は、ＣＨＰＳＴＲＴがアサートされたあと、１つのトランスポート・パケット時間内において達成される。
【００４８】
あるいは、もしＣＤＰフレーミングおよび同期制御レジスタ中のＩｇｎｏｒｅ＿Ｓｙｎｃビットが論理「０」に設定されるなら、ＣＤＰ  ２１０は、ＣＨＰＳＴＲＴ信号遷移に対して期待された（第１）バイト位置においてｓｙｎｃ＿ｂｙｔｅの一貫性をベリファイし、もしベリファイが失敗するならロック状態を宣言する。もしＩｇｎｏｒｅ＿Ｓｙｎｃが１に設定されるなら、ＣＤＰ  ２１０は、同期の一貫性をベリファイしない。
【００４９】
Ｌｏｃｋ＿Ｓｔａｔｅを達成したあと、ＣＤＰ  ２１０の出力は、すでにバイトフォーマットになっているデータをさらに処理する（フィルタリングし、パーシングし、かつフォーマットする）ＴＰＲＯＣ  ２１４に渡され、処理される。
【００５０】
（トランスポートプロセッサ（ＴＰＲＯＣ）２１４）
ＴＰＲＯＣ  ２１４によってつくられた信号は、メモリコントローラ２１６、マイクロインタフェース２１７、クロックマネージャ２１８、プライベートデータプロセッサ２２０および高速データポート２２２へのデータのフローを制御する。
【００５１】
本発明の例示的な実施の形態において、ＴＰＲＯＣ  ２１４は、ＰＩＤテーブルの制御のもとでデータストリームを処理する。システム部において説明されるように、ＰＩＤは、パケットペイロード中に格納されたデータのタイプを示すトランスポートストリームヘッダにおける１３ビットフィールドである。いくつかのＰＩＤ値が割り当てられ、いくつかは予約である。ＰＩＤテーブルのさらなる詳細は、上で参照したＭＰＥＧ−２規格書のシステム部のセクション３．３において説明される。
【００５２】
ＰＩＤテーブルに関して、ＴＰＲＯＣ  ２１４は、３２のユーザ選択されうるＰＩＤまで同時に処理することができる。トランスポートデコーダ１１０が処理すべきＰＩＤは、ＰＩＤテーブルにおいて特定される。ＰＩＤテーブルにおけるビットフィールドは、データのさまざまな処理のオプションを特定する。
【００５３】
動作において、ＰＩＤは、ＴＰＲＯＣ  ２１４によって入トランスポート・パケットのヘッダから抽出され、同時にＰＩＤテーブル中のすべてのエントリと比較される。もし一致が見つかれば、パケット中のデータは、一致するＰＩＤテーブルエントリにおけるオプションセットにしたがって処理される。もしＰＩＤテーブルエントリが一致するものがないなら、パケットは廃棄される。
【００５４】
ペイロードフォーマットビットが廃棄（０００）に設定されていないＰＩＤテーブル中のそれぞれの位置は、チャネルナンバと関連づけられる。ＴＰＲＯＣ  ２１４に関連して、メモリコントローラ２１６は、データをＲＡＭ中の特定のバッファエリア（チャネル）に転送する責任を負う。メモリコントローラ２１６の動作は、以下に図２、図３および図４を参照して詳細に説明される。
【００５５】
本発明の例示的な実施の形態において、ＴＰＲＯＣ  ２１４に保持されるＰＩＤテーブルは、初期化プロセスのあいだに内部マイクロバス２２３を介してマイクロプロセッサ１１６によるソフトウェア制御のもとでセットアップされる。
【００５６】
ＰＩＤテーブルエントリフォーマットについて、ＰＩＤテーブルエントリは、他の情報の中でも、１）１３ビットのＰＩＤおよび２）セットされるとこのＰＩＤが復号化されているプログラムについてのＰＣＲを運ぶことを示す、１ビットのＰＣＲ  ＰＩＤフィールドを含む。例示的なＰＩＤテーブルエントリは、また、セットされるとＰＥＳヘッダ中の「ストリームＩＤ」に対応するＲＡＭバッファがポインタＦＩＦＯに格納されることを可能にするアドレス１ビットのＰＥＳＨＤＲビットを含む。割り込みは、メモリコントローラ２１６によって、それがデータをポインタＦＩＦＯに書き込むときに発行される。この割り込みは、Ｓｔｒｅａｍ＿ＩＤバイトの伝達をマイクロプロセッサ１１６に促すようにはたらくＤＭＡ＿ＭＡＲＫ信号として参照される。本発明の例示的な実施の形態において、チャネルナンバは、ＰＩＤテーブルのエントリに、テーブル中のそれらの位置に基づいて数字の順に割り当てられる。例えば最初のエントリは、ＤＭＡチャネル０と割り当てられ、次のものはＤＭＡチャネル１などとなる。
【００５７】
ＴＰＲＯＣ  ２１４は、ＰＣＲ  ＰＩＤをもつトランスポート・パケットが、ＰＣＲ＿ＰＩＤ信号をＰＩＤテーブルエントリ中に置くことによって、クロックマネージャ２１８によって処理されるべきことを示す。クロックマネージャ２１８は、それからそのようなパケットのアダプテーションフィールドをＰＣＲ＿ｆｌａｇを求めてモニタし、ＰＣＲを抽出する。
【００５８】
パケットをそれらのＰＩＤにしたがって分離したあとで、ＴＰＲＯＣ  ２１４は、トランスポート・パケットのヘッダを除去し、メモリコントローラ２１６に関連して、それぞれのＰＩＤについてパケットペイロード（例えばＰＥＳパケットの部分）を外部メモリ１１４における指定されたチャネルのシーケンシャルなメモリ位置中に格納する。
【００５９】
ＴＰＲＯＣ  ２１４は、また、ホストマイクロプロセッサ１１６から外部メモリへのライト動作も扱う。
【００６０】
（メモリコントローラ２１６）
メモリコントローラ２１６は、パーシングされたトランスポート・パケットのペイロードを外部メモリ１１４に格納し、必要に応じてビデオ、オーディオ、ＰＳＩおよびその他のデータ（例えばプライベートデータ）をビデオプロセッサ２２４、２つまでのオーディオプロセッサ２２６および２２８およびホストマイクロプロセッサ１１６（またはマイクロコントローラ）に供給する。
【００６１】
図３は、図２Ａおよび図２Ｂに示すトランスポートデコーダ１１０において用いるのに適したメモリコントローラの例示的な機能ブロック図を示す。図３に示すように、メモリコントローラ２１６は、データをＴＰＲＯＣ  ２１４からトランスポート・イン・ＦＩＦＯ  ３１０を介して受け取る。メモリコントローラ２１６は、データをマイクロプロセッサ１１６から、マイクロ・イン・ＦＩＦＯ  ３１４およびマイクロ・アウト・ＦＩＦＯ  ３１６を含むマイクロインタフェース２１７を介して受け取ったり、送ったりする。図２Ａおよび図２Ｂにおいてメモリコントローラ２１６の外部に示すマイクロインタフェース２１７は、ＦＩＦＯ  ３１４および３１６とのその相互関係をはっきりと示すために図３において示される。
【００６２】
メモリコントローラ２１６は、また、オンチップメモリ、ＤＭＡコントローラ３２０、データパス論理３２２、およびデータをビデオおよびオーディオデコーダ２２４、２２６および２２８にそれぞれ伝達するＦＩＦＯ  ３２４、３２６および３２８を含むフロー制御ユニット３１８を含む。
【００６３】
メモリコントローラ２１６は、データを外部メモリに２つのソースから書き込む。すなわち、１つはＴＰＲＯＣ  ２１４（トランスポートインＦＩＦＯ  ３１０を通して）であり、もう１つはマイクロプロセッサ１１６（マイクロインＦＩＦＯ  ３１４を通して）である。
【００６４】
メモリコントローラ２１６は、データを外部メモリから読み出し、それを次の４つ宛先に供給する。すなわち１）ビデオインタフェース（ビデオＦＩＦＯ  ３２４を通して）、２）オーディオＡインタフェース（オーディオＡ  ＦＩＦＯ  ３２６を通して）、３）オーディオＢインタフェース（オーディオＢ  ＦＩＦＯ３２８を通して）、および４）マイクロコントローラ１１６（マイクロアウトＦＩＦＯ  ３１６を通して）である。
【００６５】
外部メモリ空間は、別々の、重複しないバッファエリアに分割され、それぞれの使用中のＤＭＡチャネルに１つずつ用いられる。３２チャネルまで用いられうる。チャネルナンバは、２つのソースＦＩＦＯに書き込まれるか、または４つの宛先ＦＩＦＯから読み出されたデータと関連づけられる。
【００６６】
ＴＰＲＯＣ  ２１４によって供給され、トランスポートインＦＩＦＯ  ３１０に書き込まれるデータは、チャネルナンバタグをもつ。他のＦＩＦＯのそれぞれについてのチャネルナンバは、ＤＭＡインタフェースレジスタの中のマイクロコントローラ１１６によって定義される。１２８ビットのＤＭＡチャネルコンフィギュレーションレジスタ（チャネルレジスタ）がマイクロプロセッサ１１６によってそれぞれの使用チャネルについてセットアップされる。チャネルレジスタは、開始アドレスおよび終了アドレスによって定義されるバッファ空間、バッファがＦＩＦＯ（リードおよびライトポインタがカバーする、ときにはサーキュラキューとしてよばれる）として構成されるか、またはキュー（リードおよびライトポインタがカバーしない）として構成されるか、などのコンフィギュレーション情報を含む。
【００６７】
もしチャネルレジスタが許すなら、現在使用中のものがいっぱいになるときには、ＤＭＡコントローラ３２０は、新しいバッファを得ることができる。この特徴は、通常は、ＰＳＩ部のようなホストマイクロプロセッサ１１６に宛てられるデータを格納するバッファについてだけ用いられる。これらの新しいバッファの開始および終了アドレスは、新しいバッファＦＩＦＯ中に格納される。マイクロプロセッサ１１６だけが新しいバッファをこのＦＩＦＯに書き込むことができる。使用されたバッファポインタおよび他の種類のポインタは、ＤＭＡコントローラ３２０によってポインタＦＩＦＯに書き込まれる。本発明の例示的な実施の形態において、マイクロプロセッサ１１６だけがポインタＦＩＦＯを読み出せる。これらのポインタは、バッファデータの読み出しを管理したり、用いられたバッファを新しいバッファＦＩＦＯに戻したりするために、マイクロプロセッサ１１６によって用いられる。図４に示すポインタＦＩＦＯエントリフローチャートは、すべてのありうる信号状態、チャネルレジスタ構成およびバッファ状態についてのポインタＦＩＦＯへのエントリを示す。
【００６８】
図３に続いて、ＤＭＡコントローラ３２０およびデータパス論理３２２は、すべてのインタフェース信号を外部メモリに与える。フロー制御ユニット３１８は、適切な制御信号を供給することによって、特定のインタフェースＦＩＦＯ（６つのうちの１つ）をサービスするためにＤＭＡコントローラ３２０を指示する。
【００６９】
（１．ＤＭＡコントローラスタート）
この信号は、ＤＭＡコントローラ３２０に、ＤＭＡコントローラ動作、ＤＭＡ入力ＦＩＦＯセレクトおよびＤＭＡ出力ＦＩＦＯセレクトのようなコマンドを用いる特定のＦＩＦＯのサービスを開始するよう命令する。それと同時に、フロー制御ユニット３１８は、１２８ビットチャネルレジスタを読み出し、チャネルレジスタ（内部メモリ）のデータバス上でそれを可能にする。ＤＭＡコントローラ３２０は、この１２８ビットワードをその内部レジスタに読み込み、フロー制御ユニット３１８は、それから内部メモリ上で必要となる他のリード／ライト動作を自由にできるようになる。
【００７０】
（２．ＤＭＡコントローラ動作（１ビット））
このビットは、インタフェースＦＩＦＯにつながったＤＭＡコントローラによってライトまたはリード動作がおこなわれることを伝える。
【００７１】
（３．ＤＭＡ入力ＦＩＦＯセレクト（１ビット））
２つの入力ＦＩＦＯ３１０および３１４のうちのどちらがサービスすべきかを伝える。
【００７２】
（４．ＤＭＡ出力ＦＩＦＯセレクト（２ビット））
４つの出力ＦＩＦＯ３１６、３２４、３２６および３２８のうちのどちらがサービスすべきかを伝える。
【００７３】
（５．チャネルデータインリクエスト／チャネルデータ／チャネルナンバ／ＤＭＡコントローラストップ）
通常ＤＭＡコントローラ３２０は、インタフェースＦＩＦＯがいっぱいであること、または外部メモリにデータがないことなどのある条件に起因して、それがもはやＦＩＦＯをサービスできなくなるまでＦＩＦＯをサービスし続ける。このタイプの条件が発生するとき、ＤＭＡコントローラ３２０は、チャネルデータインリクエストをフロー制御ユニット３１８にアサートし、チャネルレジスタデータおよびチャネルナンバデータをフロー制御ユニット３１８に供給する。フロー制御ユニット３１８は、チャネルレジスタメモリをチャネルデータでアップデートし（アップデータされた情報は、例えばライトおよびリードポインタを含む）、特定のＦＩＦＯが緊急動作を必要としない限り（なぜなら、例えば、それはフルまたはエンプティの状態に近づきつつあるかもしれないので）、ＤＭＡコントローラ３２０にループ中の次のＦＩＦＯをサービスするように指示する。
【００７４】
ときには、フロー制御ユニット３１８は、より高い優先度を有するトランスポートインＦＩＦＯのような他のＦＩＦＯをサービスする必要に応答して、ＤＭＡコントローラストップコマンドをＤＭＡコントローラ３２０に発行する必要があるかもしれない。このコマンドは、ＤＭＡコントローラ３２０に現在サービスしているＦＩＦＯのサービスをストップさせたり、フロー制御ユニット３１８にチャネルデータを書き込んだりするよう指示する。
【００７５】
チャネルレジスタは、ＦＩＦＯサービスをストップするのを止める点において、リードポインタ、ライトポインタおよび他の情報をもつＤＭＡコントローラ３２０によってアップデートされる。フロー制御ユニット３１８は、これを内部チャネルレジスタメモリに書き込むので、ＤＭＡコントローラ３２０は、割り込みがなされた点から割り込みがされたＦＩＦＯに対してサービスを再開することができる。
【００７６】
本発明の不連続性状態の局面の全体的な動作におけるＤＭＡコントローラの寄与を参照すれば、ストリームＩＤバイトを含む次のＰＥＳパケットがメモリコントローラ２１６にＴＰＲＯＣ  ２１４によって書き込まれるとき、フロー制御ユニット３１８は、ＤＭＡ＿ＭＡＲＫ信号がハイになるように作用する。ＤＭＡ＿ＭＡＲＫ信号の遷移によって、マイクロプロセッサ１１６における割り込みがトリガされ、ＰＥＳパケットヘッダのアドレスが、マイクロプロセッサがアクセスする入力ポインタＦＩＦＯに格納される。このＰＥＳヘッダは、タイムスタンプを有するかもしれないので、マイクロプロセッサ１１６は、不連続性指標によって与えられたフラグに応答して、タイムスタンプを求めて格納されたＰＥＳヘッダをサーチし、ひとつ見つかるときには、そのタイムスタンプ値を取り出す。取り出されたタイムスタンプ値に基づいて、マイクロプロセッサ１１６は、タイマ割り込みを設定する。
【００７７】
図３に戻って、本発明の例示的な実施の形態においては、フロー制御ユニット３１８の内部メモリは、６４×３２ビットの４つのブロックを含み、それらのそれぞれは、チャネルレジスタ、新しいバッファＦＩＦＯおよびポインタＦＩＦＯに割り当てられる。
【００７８】
本発明の例示的な実施の形態において、それぞれのチャネルレジスタは、１２８ビットを有しており、最大で３２チャネルであり、よって１２８ビットの倍数で、最大１２８×３２ビットまでがチャネルレジスタに割り当てられる。
【００７９】
３２ビットのワードが新しいバッファおよびポインタＦＩＦＯに対してライトおよびリードされる。少なくとも１２８×３２ビットのメモリ（すなわち１２８ワード）が新しいバッファおよびポインタＦＩＦＯについて利用可能である。加えて、もし３２チャネル未満が使用中であるなら、チャネルレジスタメモリからの未使用の容量は、新しいバッファおよびポインタＦＩＦＯにアロケートされる。
【００８０】
以下は、３２ＤＭＡチャネルおよび１６ＤＭＡチャネルについてのメモリアロケーションの例である。
【００８１】
１）３２使用チャネルのためのメモリアロケーション
新しいバッファＦＩＦＯ＝６４×３２ビット
ポインタＦＩＦＯ＝６４×３２ビット
チャネルレジスタ＝１２８×３２ビット
２）１６使用チャネルのためのメモリアロケーション
新しいバッファＦＩＦＯ＝６４×３２ビット
ポインタＦＩＦＯ＝１２８×３２ビット
チャネルレジスタ＝１２８×１６ビット
（クロックマネージャ２１８）
図２Ａおよび図２Ｂに示すトランスポートデコーダ１１０のクロックマネージャ２１８は、連続するＰＣＲ値を用いてローカルの２７ＭＨｚ信号（クロック信号回路１２２によって発生される）を同期させる。クロックマネージャ２１８におけるカウンタ値は、システムタイム定数（ＳＴＣ）値としてよばれる。本発明の例示的な実施の形態においてマイクロプロセッサ１１６は、内部マイクロバス２２３を介してカウンタ内のＳＴＣ値にアクセスできる。
【００８２】
クロックマネージャ２１８の中のカウンタは、トランスポートデータストリームの中で運ばれるＰＣＲに周期的に同期される。データストリーム中の最初のＰＣＲが見つかるとき、ＰＣＲは、初期ＳＴＣ値になるためにカウンタ内に「ジャムロード」される。後続するＰＣＲ値が受け取られると、それらは、ＳＴＣ値と比較されることによって、クロック信号回路１２２（例えばＶＣＸＯ）の周波数を調整する。本発明において、これは以下に詳述されるディジタル・アナログ変換器（ＤＡＣ）を用いて達成される。いったん位相誤差調整がなされると、一般に新しいＰＣＲ値がＳＴＣ値としてロードされる。
【００８３】
通常、ＰＣＲ値は、フレーム毎に１回だけ発生する。ＭＰＥＧ−２規格においては、この値は少なくとも３つ目のフレーム毎に（１秒の１０分の１に１回）発生しなければならない。
【００８４】
外部ビデオおよびオーディオデコーダ１１８および１２０は、典型的には、外部デコーダ中のＳＴＣ値をクロックマネージャ２１８中に保持されたＳＴＣ値に基づいてアップデートすることによって、トランスポートデコーダ１１０に同期される。ビデオおよびオーディオデコーダ１１８および１２０は、格納された値を用いることによって、データを受け取られたＰＥＳデータストリーム中のタイムスタンプと比較することによってデータが復号化／再生されるべきかどうかを決定する。ここで本発明の例示的な実施の形態においては、トランスポートデコーダ１１０、ビデオデコーダ１１８およびオーディオデコーダ１２０は、すべて、クロックマネージャ２１８によって発生された同じ２７ＭＨｚのクロック信号を受け取る。
【００８５】
トランスポートデコーダ１１０は、選択されたプログラムのためにシステムクロック信号にロックされるクロック信号をローカルに発生するハードウェアサポートを含む。上述のように、特定のＰＣＲ＿ＰＩＤ上で受け取られたＰＣＲ値は、他のデバイスによる利用のためにシリアルインタフェース上で利用可能にされる。
【００８６】
クロックマネージャ２１８は、システムタイムカウンタ（ＳＴＣ）（不図示）、システムタイムクロックレジスタ（不図示）、プログラムクロック基準レジスタ（不図示）、カレントＳＴＣレジスタ（不図示）、アラームクロック割り込みレジスタ（不図示）および選択されたＰＩＤと関連づけられたヘッダから抽出されたＰＣＲをラッチするための論理（不図示）を含む。それはまた、シリアルＰＣＲインタフェース、および外部システムクロック信号制御ループの制御のためのＤＡＣレジスタを含む。
【００８７】
本発明の例示的な実施の形態において、ＳＴＣは、９ビットベースおよび３３ビットエクステンションを有する４２ビットカウンタである。
【００８８】
ＳＴＣベースは、定格２７ＭＨｚのシステムクロック入力信号を３００によって分周する。その結果として得られる９０ｋＨｚ信号は、ＳＴＣエクステンションを駆動する。ＳＴＣは、いつでもマイクロプロセッサ１１６上でのソフトウェアの実行によって、書き込まれたり読み出されたりする。あるいは、ＳＴＣは、不連続性指標が見つかったあとに自動的に受け取られたＰＣＲでロードされうる。
【００８９】
上述のようにＰＣＲは、ＰＩＤテーブルエントリ中のＰＲＣ＿ＰＩＤビットを設定することによって自動的に入ビットストリームから抽出されうる。受け取られたＰＣＲの取り扱いは、ソフトウェアによって設定されたオプションおよびＰＣＲが受け取られたときに現在のトランスポート・パケットについて不連続性状態が存在するかどうかに依存する。
【００９０】
不連続性状態は、トランスポートヘッダ中の不連続性指標ビット中に論理「１」がたったＰＣＲ＿ＰＩＤを含むトランスポート・パケットが受け取られるときに認識される。不連続性状態は、不連続性指標ビット中に論理「０」がたったＰＣＲ＿ＰＩＤを含むトランスポート・パケットが受け取られるまで、または次のＰＣＲがＰＣＲ＿ＰＩＤパケット中に見つかるまで存在する。
【００９１】
もしイネーブルされると、不連続性状態が存在していてＰＣＲが受け取られるときに、クロックマネージャ２１８は、自動的に受け取られたＰＣＲをＳＴＣにロードする。この瞬間において、割り込みがホストマイクロプロセッサ１１６に発行される。
【００９２】
クロックマネージャ２１８は、ソフトウェアによって論理「１」がセットされるとき、受け取られた次のＰＣＲが不連続性状態が存在するかどうかにかかわらずＳＴＣにロードされるように作用する初期ビットを含む。初期化ビットは、続いて、クロックマネージャ２１８によって自動的にクリアされる。初期化ビットは、ＳＴＣが有効なＰＣＲを含まないとき（すなわち新しいＰＩＤが選択されたとき）だけセットされる。
【００９３】
もし不連続性状態が存在するか、またはもしＳＴＣロード機能がディセーブルされているなら、受け取られたＰＣＲは、ＰＣＲレジスタ中に格納され、（場合によっては）割り込みがホストマイクロプロセッサ１１６に発行される。ＰＣＲがキャプチャされると同時に、ＳＴＣの現在の状態がＳＴＣレジスタ中に格納される。格納されたＰＣＲおよびＳＴＣ値は、外部システムクロック信号（ＸＯＣＬＫ）を制御するための誤差信号を計算するために用いられる。
【００９４】
ＰＣＲ＿ＰＩＤに等しいＰＩＤを有し、ＰＣＲを含むトランスポート・パケットが受け取られるとき、ＰＣＲは、ＰＣＲレジスタにおいてラッチされる。ＳＴＣカウンタの現在の内容もまたそのときにＳＴＣレジスタにおいてラッチされ、割り込みがホストマイクロプロセッサ１１６に発行される。両方の値をラッチすることによって、割り込みサービスルーチンにおけるレイテンシが変動することに起因する不確実性を除去できる。本発明の例示的な実施の形態において、両方のレジスタは、９ビットベースおよび３３ビットエクステンションで構成される。ベース部分は、モジュロ３００であり、エクステンションは、バイナリである。レジスタ内容が計算において用いられるまえに、それらは、エクステンションを３００によって乗算し、その結果にベース部分を加えることによって、単一のバイナリカウントに変換される。
【００９５】
現在のＳＴＣレジスタは、いつでもＳＴＣの現在の内容をマイクロコントローラ１１６が得られるように読み出し専用のレジスタである。マイクロコントローラ１１６は、外部マイクロバス１２４によって、この値でビデオデコーダまたはオーディオデコーダのＳＴＣを初期化できる。
【００９６】
上述のように、トランスポートデコーダ１１０は、クロックマネージャ２１８内部のクロック調整制御ループにおいて用いられる１０ビットのディジタルアナログ変換器（ＤＡＣ）２３０を含む。ＤＡＣ  ２３０は、書き込み専用、すなわちソフトウェアがＤＡＣにロードされた最新の値のコピーをメモリに保存する。動作時には、ＤＡＣ  ２３０は、外部共振水晶電圧制御発振器ＶＣＸＯ  １２２のための制御電圧を発生するのに用いられ、これはシステムクロック周波数（２７ＭＨｚ定格）の元である。ラッチされたＰＣＲおよびＳＴＣを比較することによって、ソフトウェアは、ローカルクロック信号が調整を必要とするかどうかを決定する。例えばソフトウェアは、ＰＣＲおよびＳＴＣの間の差をとり、この誤差の項をＤＡＣ  ２３０の入力レジスタの現在の内容に加える。
【００９７】
復習すれば、本発明の不連続性の局面は、以下の１〜５を含む。
【００９８】
１）チャネルデータプロセッサ（ＣＤＰ）２１０は、パケットの有効性を判断するために受け取られたトランスポート・パケットの同期バイトをチェックする。トランスポートプロセッサ（ＴＰＲＯＣ）２１４は、トランスポートヘッダをパーシングし、パケットペイロードをメモリ中の適切な位置に転送する。データは、メモリ中の異なるＦＩＦＯバッファ（チャネル）にトランスポートヘッダ中のＰＩＤ値に基づいて送られる。
【００９９】
２）受け取られた不連続性指標が必ずしも同じパケット中に次のＰＣＲ値として存在しないので、次のＰＣＲ値が受け取られたときは、ＴＰＲＯＣ  ２１４は、クロックマネージャ２１８中のカウンタを「ジャムロード」する。
【０１００】
３）ストリームＩＤバイトを含む次のＰＥＳパケットがＴＰＲＯＣ  ２１４によってメモリコントローラ２１６に書き込まれるとき、ＤＭＡ＿ＭＡＲＫ信号がハイになる。これによってメモリコントローラ２１６は、マイクロプロセッサ１１６に割り込みをかけ、入力ポインタＦＩＦＯ中のＰＥＳパケットヘッダのアドレスを格納する。このＰＥＳヘッダは、タイムスタンプ（復号化タイムスタンプまたは再生タイムスタンプのいずれか）をもっていてもよい。マイクロプロセッサ１１６は、メモリコントローラ２１６からの割り込みに応答して、タイムスタンプを求めてＰＥＳヘッダをサーチし、もし１つを見つければそのタイムスタンプ値を取り出す。
【０１０１】
４）マイクロプロセッサ１１６は、それから、タイムスタンプ値よりも１フレーム未満で、その近傍の時間にタイマ割り込みをセットする。
【０１０２】
５）このタイマ割り込みが発生するとき、マイクロプロセッサ１１６は、外部マイクロバス１２４によってビデオおよびオーディオデコーダに新しいＰＣＲ値を送る。これは、そのタイムスタンプがビデオまたはオーディオデコーダ中のカウンタ値と比較されるまえに、前のＰＣＲ値に参照されるデータの処理に妨害を与えることなく、デコーダにそのデータを処理するのに十分な時間を与える。
【０１０３】
（ビデオ／オーディオデコーダ２２４、２２６、２２８）
前述したように、いったんトランスポートパケットが受け取られ、処理され、格納されると、メモリコントローラ２１６は、ＰＥＳパケットをメモリ１１４から読み出し、それらのパケットを、外部ビデオおよびオーディオデコーダへと転送する。しかし、ＰＥＳパケットが外部デコーダ１１８および１２０に到達する以前に、それらのパケットは、ビデオおよびオーディオプロセッサ２２４、２２６および２２８により処理される。
【０１０４】
これらの内部プロセッサの重要な役割は、トランスポートデコーダを離れたデータストリームが、外部デコーダと確実にコンパチブルであるようにすることである。すなわち、異なる外部デコーダは、異なるデータ必要条件を有している。
【０１０５】
例えば、現在利用可能な外部ビデオデコーダの中には、ヘッダおよびペイロードを有するＰＥＳパケットのストリームを、そのストリームがメモリから読み出された時のフォーマットと本質的には同一のフォーマットで受け取ることができるものもある。いっぽう、エレメンタリストリーム（つまり、ペイロードは有するが、ヘッダは有していないＰＥＳパケット）の処理にしか対応できない外部デコーダもある。加えて、後者のタイプのデコーダは、データストリームに加えて、例えばタイムスタンプやバイトカウントのような付随的な制御情報を必要とすることもある。このようなタイプのデコーダとしては、例えば、Ｃ−Ｃｕｂｅにより製造されたＣＬ９１００がある。その仕様書（ＣＬ９１００マルチモード・ビデオデコーダ・ユーザズ・マニュアル（１０／９４））は本願も参考として援用している。したがって、ビデオプロセッサ２２４は、選択された外部デコーダの必要条件とコンパチブルであるように出データストリームをフォーマットするように、マイクロプロセッサ１１６により構成可能である。
【０１０６】
Ｃ−Ｃｕｂｅ  ＣＬ９１００のような外部ビデオデコーダへのインタフェースの操作については、ビデオプロセッサ２２４は、ＰＥＳヘッダを取り出し、そのＰＥＳヘッダからタイムスタンプ情報を抽出することができるように、ＰＥＳパケットのストリームを処理する。さらに、ビデオプロセッサ２２４は、カウンタ（不図示）を用いて、外部デコーダに転送されるＰＥＳパケットに対するバイトカウントを維持する。よって、ビデオプロセッサ２２４は、タイムスタンプ情報を保持し、バイトカウントを維持して、ＰＥＳパケットペイロードを外部ビデオデコーダへと転送する。タイムスタンプおよびバイトカウント情報を外部デコーダに得させるために、ビデオプロセッサ２２４は、マイクロプロセッサ１１６に割り込みを送る。マイクロプロセッサ１１６は、それに応答して、タイムスタンプおよびバイトカウント情報をビデオプロセッサ２２４から内部マイクロバス２２３を介して読み出し、この制御情報を外部ビデオデコーダへと外部マイクロバス１２４を介して供給する。
【０１０７】
しかし、マイクロプロセッサ１１６がビデオプロセッサ２２４からの割り込みに応答可能となる前に、タイムスタンプ情報を含む別のＰＥＳパケットが到着することもある。このような状況は、例えば、マイクロプロセッサ１１６がより優先度の高いタスクに時間を延長して携わっている場合に起こる。このような場合、ビデオプロセッサ２２４は、タイムスタンプ情報をステータスと共に格納する。具体的には、ビデオプロセッサ２２４は、マイクロプロセッサが「逸した」タイムスタンプがないかどうかを示すステータスレジスタを保持する。その時、本発明のこの実施形態例では、マイクロプロセッサ１１６は、最終的にタイムスタンプ情報を読み出しはじめ、もしステータスにより示されるように１つ以上のタイムスタンプを逸していたのなら、プロセッサ１１６は、最も最近のタイムスタンプのみを取り出す。
【０１０８】
さらには、タイムスタンプ情報およびバイトカウント情報は、外部デコーダに供給されることになっているのだから、マイクロプロセッサ１１６がタイムスタンプを逸したときには、たとえどんなにたくさんのタイムスタンプが、マイクロプロセッサ１１６の情報読み出し以前に到着したとしても、ビデオプロセッサ２２４は、それらのタイムスタンプに対する累積バイトカウントを維持する。よって、マイクロプロセッサ１１６は、最も最近のタイムスタンプおよび累積バイトカウントを読み出し、この情報を外部ビデオデコーダに供給する。その後、ステータスレジスタおよびバイトカウントをリセットすることができる。
【０１０９】
図５Ａのフローチャートに図示されているように、受け取られたデータのヘッダが取り出されて、パーシングされ（ステップ５１０）、タイムスタンプ情報が格納されて、バイトカウントが維持され（ステップ５１２）、ビデオプロセッサ２２４によりマイクロプロセッサ１１６への割り込みが発せられて、タイムスタンプ情報が読み出し用に利用可能であることをマイクロプロセッサに知らせ（ステップ５１４）、もし、マイクロプロセッサが以前のタイムスタンプ情報を読み出す以前にさらなるタイムスタンプ情報が受け取られたのなら、新しいタイムスタンプ情報が格納されて、バイトカウントを累算し続け（ステップ５１６）た後に、ビデオプロセッサ２２４が別の割り込みをマイクロプロセッサ１１６に発するか、もしくはマイクロプロセッサがステータスレジスタ、タイムスタンプ情報およびバイトカウント情報を読み出して、それを外部ビデオプロセッサに供給する（ステップ５１８）。
【０１１０】
特定の外部デコーダに対応可能とする別の例は、例えばＺｏｒａｎ  ＺＲ３８５００オーディオデコーダのようなビットレートの制約されたオーディオデコーダの使用を伴う。このデコーダの仕様書（１０／９４）は、本願も参考として援用している。概略的に言えば、オーディオデコーダはたいていの場合、オーディオデータを受け入れることができることを示すデータリクエストを示す。すると、トランスポートデコーダ１１０は、外部オーディオプロセッサがこのリクエストを否定するまで、オーディオプロセッサ２２６／２２８を介してオーディオデータを供給し続ける。換言すれば、ハンドシェークメカニズムが存在する。
【０１１１】
しかし、例えばＺｏｒａｎ  ＡＣ３オーディオデコーダのようなビットレートの制約されたデコーダは、オーディオＡＣ３データをオーディオデータフレームとして供給することを要求する。その場合、各フレームは、そのヘッダにフレーム時間とビットレートとを含んでいる。この所定のビットレートを超えるデータを供給すると、内部バッファをオーバーフローさせることになる。その結果、データの一部が失われることになる。さらに、これらのビットレートの制約されたデコーダは、追加のオーディオデータを受け取る準備ができていることを示すデータレディ信号を供給しない。
【０１１２】
よって、ビデオデコーダ２２４の場合と同様に、オーディオプロセッサ２２６および２２８も、選択された外部オーディオデコーダに対応できるように構成可能である。なお、本発明の実施形態例では、オーディオプロセッサ２２６および２２８は、マイクロプロセッサ１１６によるアクセスが可能なアドレスを別にすれば、本質的に同一である。
【０１１３】
よって、オーディオプロセッサ２２６／２２８は、このタイプのオーディオデコーダとインタフェースするようにプログラミングされた時には、そのデコーダが常にデータリクエスト信号を発しているものと考える。しかし、ＰＥＳパケットオーディオデータが、メモリコントローラ２１６からオーディオプロセッサ２２６／２２８に供給されると、受け取られたデータのＰＥＳヘッダは、オーディオプロセッサによりパーシングされる。パーシングされたヘッダには、そのオーディオデータについてのフレームサイズとビットレートとが含まれている。フレームサイズおよびビットレートから、オーディオプロセッサ２２６／２２８は、フレーム境界（つまり、フレーム時間）を決定することができる。フレーム時間情報を得ると、オーディオプロセッサ２２６／２２８は、オーディオデータが利用可能であるときにタイマがセットされ、データの１フレームが、外部オーディオデコーダへ、次にオーディオプロセッサ２２６／２２８へと「まとめて吐き出され」、そしてフレームタイマがタイムアウトになるまで一時停止するように、フレームタイマをセットする。タイマがタイムアウトになると、外部オーディオデコーダに送るのに利用可能な追加のフレームがある間は、１度に１オーディオフレームずつ、サイクルは継続する。タイムスタンプのような制御情報は、マイクロプロセッサにより取り出され、外部マイクロバスを介して供給される。
【０１１４】
図５Ｂのフローチャートに示されているように、ＰＥＳパケットが、メモリから取り出され（ステップ５４２）、受け取られたデータのヘッダが取り出されてパーシングされ（ステップ５３０）、フレーム時間が決定され（ステップ５３２）、タイマがランし始め（ステップ５３４）、オーディオプロセッサ２２６／２２８がデータの１フレームをまとめて吐き出した（ステップ５３６）後、オーディオプロセッサ２２６／２２８は、タイマが期限切れになるまで一時停止する（ステップ５３８）。ただし、図示されているように、ステップ５４２、５３０および５３２は、同一フェーズ内に実行可能である。その後、処理を継続することもできる。
【０１１５】
以上の説明では、本発明は、ＭＰＥＧ−２トランスポートデータストリームにおける不連続性に従ってシステムの時定数を更新する方法およびシステムのかたちで実現されるものとしたが、本発明は、以上に示した詳細に限定されるように意図されているものではない。逆に、詳細については、添付の請求の範囲と等価である範囲内では、本発明の精神から外れることなくさまざまな改変を施すことができる。
【０１１６】
【発明の効果】
本発明によれば、バッファとデコーダとの間に発生したシステムタイムベースの不連続性を効率よく処理できるトランスポートデコーダおよび方法を提供することができる。
【図面の簡単な説明】
【図１Ａ】ディジタルトランスポートデコーダおよびその各種インタフェースの一例を示す高レベル機能ブロック図である。
【図１Ｂ】図１Ａに示す実施形態例を用いる本発明のある局面において実行される各ステップを示す高レベルフローチャートである。
【図２Ａ】図１Ａに示すトランスポートデコーダの実施形態例を示す高レベル機能ブロック図である。
【図２Ｂ】図１Ａに示すトランスポートデコーダの実施形態例による高レベルデータ／制御フローを示すブロック図である。
【図３】図２に示すトランスポートデコーダにおいて用いられるメモリコントローラを示す機能ブロック図である。
【図４】メモリコントローラがどのようにしてポインタＦＩＦＯエントリを操作するかを説明するフローチャートの一例である。
【図５Ａ】本発明のビデオデコーダインタフェースの局面の間におこなわれる各ステップを説明するフローチャートの一例である。
【図５Ｂ】本発明のオーディオデコーダインタフェースの局面の間におこなわれる各ステップを説明するフローチャートの一例である。
【符号の説明】
１１０  トランスポートデコーダ
１１２  チャネルインタフェース
１１４  メモリ
１１６  マイクロプロセッサ
１１８  ビデオデコーダ
１２０  オーディオデコーダ
１２４  マイクロバス
【図１Ａ】
0003883637.tif 000004
【図１Ｂ】
0003883637.tif 000005
【図２Ａ】
0003883637.tif 000006
【図２Ｂ】
0003883637.tif 000007
【図３】
0003883637.tif 000008
【図４】
0003883637.tif 000009
【図５Ａ】
0003883637.tif 000010
【図５Ｂ】
0003883637.tif 000011