説明

同期データ検出装置、同期データ検出方法及びプログラム

【課題】パケット抜けなく同期データの有無の検出を行うことができる同期データ検出装置を提供する。
【解決手段】同期バイト検出部5は、所定の同期データを含むTSデータを記憶するメモリからTSデータを所定の単位で順次読み込み、所定の同期バイトを検出する0x47検出器22と、0x47検出器22において所定の同期バイトを検出した回数をカウントするカウンタ25と、0x47検出器22が、最初の所定の同期バイトを検出した後、所定の周期でTSデータを読み込ませ、0x47検出器22が所定の周期で所定の同期バイトを連続して所定の回数検出しない場合は、0x47検出器22に対して、最初の所定の同期バイトの次のTSデータから順番に読み込ませる判定指示部24とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、同期データ検出装置、同期データ検出方法及びプログラムに関し、特に、複数のパケットからなるトランスポートデータに含まれる所定の同期データの有無を検出する同期データ検出装置、同期データ検出方法及びプログラムに関する。
【背景技術】
【0002】
従来より、デジタル放送受信機において受信されるコンテンツデータは、複数のパケットに分けて送信される。例えば、MPEG2(Moving Picture Expert Group 2)規格に準拠するトランスポートストリーム(以下、TSと略す場合がある)は、各パケットが188バイト長である複数のパケットから構成されている。そして、188バイト毎に同期バイトが、具体的には「0x47」のビット列が、各パケットのヘッダ部に含まれる。デジタル放送受信機は、その同期バイトを検出することによって、各パケットを特定して、データの復号化処理を行うことができるように構成されている。
【0003】
例えば、MPEG2のTSの場合は、「0x47」(16進数)のバイトが、同期データとして規定されている。従って、デジタル放送受信機においては、受信したTSデータ中に、「0x47」のデータが、188バイト毎に所定の回数以上現れたことが確認された後に、TSデータの復号化処理を行うようになっている(例えば、特許文献1参照)。
しかし、「0x47」のデータが188バイト毎に、所定の回数、検出されたか否かを判定するので、MPEG2のTSにおける同期バイトである「0x47」とたまたま同じビット列のバイトデータが、TSデータ中に含まれていれば、同期バイトが検出されたと誤判定される場合がある。
【0004】
上述したような従来の方法では、TSデータの先頭からバイトデータを順番に読み出して、「0x47」のビット列と一致するか否かが判定される。そして、あるバイトが「0x47」のビット列であると、そのバイトのアドレスの位置から、188バイトだけ先のアドレスの位置にも「0x47」のビット列があるか否かが判定される。すなわち、188バイト毎に「0x47」のバイトが所定の回数現れなければ、同期バイト検出回路は、その検出処理の対象となったTSデータ中には同期バイトがなかったと判定することになる。
【0005】
そのため、あるバイトが「0x47」のビット列と誤判定された場合は、たとえ、そのバイトとそのバイトから188バイト先のバイトとの間に、正しい同期バイトがあったとしても、その正しい同期バイトのデータは、飛ばされてすなわち無視されて、同期バイトの判定には使用されない。
【0006】
その後に、同期バイト検出回路は、同期バイトの検出を再度開始するが、前に判定に使用されたTSデータは、検出処理の対象とならない。すなわち、前に判定に使用したTSデータ中に、正しい同期バイトを含むパケットがあっても、そのパケットは、廃棄されていた。
上述したコンテンツデータは、放送されたデータであるが、記憶媒体に記録されたコンテンツデータ、インターネット等を介して配信されたデータでも、同様に、同期バイト検出回路は、たとえ、先に判定で使用した188バイト毎のバイト間に正しい同期バイトを含むパケットがあっても、そのパケットは、廃棄されていた。
【0007】
以上のように、従来は、同期バイト検出のための判定に使用したTSデータ中に正しい同期バイトを含むパケットがあっても、そのパケットはその後の同期バイトの検出処理に使用されていなかった。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平11−73737号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
そこで、本発明は、上述した問題に鑑みてなされたもので、パケット抜けなく同期データの有無の検出を行うことができる同期データ検出装置、同期データ検出方法及びそのためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一態様によれば、所定の同期データを含むトランスポートストリームデータを記憶するメモリから前記トランスポートストリームデータを順次読み込み、前記所定の同期データを検出する検出部と、前記検出部が前記所定の同期データを検出した回数をカウントする検出回数カウント部と、前記検出部が、最初の所定の同期データを検出した後、前記検出部に、所定の周期で前記トランスポートストリームデータを読み込ませ、前記検出部が前記所定の周期で前記所定の同期データを連続して所定回数検出しない場合には、前記トランスポートストリームデータの前記最初の所定の同期データの次のデータから前記検出部に読み込ませる制御部と、を有する同期データ検出装置を提供することができる。
【発明の効果】
【0011】
本発明によれば、パケット抜けなく同期データの有無の検出を行うことができる同期データ検出装置、同期データ検出方法及びそのためのプログラムを実現することができる。
【図面の簡単な説明】
【0012】
【図1】本実施の形態に係わるデジタル放送受信機の構成を示す構成図である。
【図2】本実施の形態に係わる、同期バイト検出部5が同期バイト検出動作を開始した場合の処理を説明するための図である。
【図3】本実施の形態に係わる、同期バイト検出部5において同期バイト検出のためにTSデータが格納されるメモリのメモリマップを示す図である。
【図4】本実施の形態に係わる、正しい同期バイトが検出されなくなったときの同期バイト検出部5の処理を説明するための図である。
【図5】本実施の形態に係わる同期バイト検出部5の構成を示すブロック図である。
【図6】本実施の形態に係わる同期バイト検出処理の流れの例を示すフローチャートである。
【図7】本実施の形態に係わるメモリ12のメモリマップを示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施の形態を説明する。
まず図1に基づき、本実施の形態に係わるデジタル放送受信機の構成を説明する。図1は、本実施の形態に係わるデジタル放送受信機の構成を示す構成図である。
図1に示すデジタル放送受信機1は、テレビジョン受像機であり、アンテナ2と、チューナ3と、復調器4と、同期バイト検出部5と、システムデコーダ6と、ホストプロセッサ7と、再生同期制御部8と、ビデオデコーダ9と、オーディオデコーダ10と、データバス11と、メモリ12と、バック・エンド・プロセッサ(以下、BEPという)13と、表示部14と、スピーカ15とを備えている。
【0014】
同期バイト検出部5と、システムデコーダ6と、ホストプロセッサ7と、ビデオデコーダ9と、オーディオデコーダ10と、データバス11により、MPEGデコーダ16が構成される。なお、同期データ検出装置としての同期バイト検出部5は、MPEGデコーダ16に含まれず、MPEGデコーダ16の入力段に設けられてもよい。
【0015】
図1に示すように、放送波のストリームデータがアンテナ2を介してチューナ3に入力される。チューナ3は、入力された無線周波数の信号をベースバンド信号に変換して復調器4に出力する。復調器4は、入力されたベースバンド信号を復調処理してTSデータを復元し、同期バイト検出部5に出力する。同期バイト検出部5は、パケットを特定して、TSデータをシステムデコーダ6に出力する。復調器4による復調処理には、例えば、アナログ信号からデジタル信号への変換、受信信号が多重変調されている場合は多重復調、その他誤り訂正処理等の少なくともいずれかが含まれる。なお、ここでは、1つのチューナのみを示しているが、複数のチューナが搭載されていてもよい。複数のチューナの場合、復調器4と同期バイト検出部5もチューナの数にあわせて必要となるが、1つで2つ以上のベースバンド信号に対応できるマルチ復調器を用いてもよい。
システムデコーダ6は、予めホストプロセッサ7から設定されているフィルタ条件を満たす、例えば、設定されているパケット識別子(PID)を有しているTSパケットを選別し、必要なデータ(情報)をその中から抽出し、予めホストプロセッサ7から設定されているメモリ12内のバッファにデータバス11を経由して出力する(或いは、書き込む)。バッファは、DRAM等のメモリ12内にバッファ領域として設定される。システムデコーダ6によって映像データと音声データとに選別される。
【0016】
映像データは、メモリ12内のビデオ向けSTDバッファに、音声データはメモリ12内のオーディオ向けSTDバッファに、それぞれ出力される。そして、システムデコーダ6にて選別された映像及び音声データはそれぞれ、メモリ12に設けられた専用のバッファを介して、ビデオデコーダ9、オーディオデコーダ10に供給される。
ビデオデコーダ9は、メモリ12から供給された(或いは読み込んだ)ビデオデータを再生同期制御部8から供給される垂直同期信号(以下、VSYNCという)に合わせてデコードし、その結果得られる映像情報をBEP13に出力する。BEP13は、この映像情報に色補正などの各種画像処理を施して表示部14にて表示させる。なお、表示部14は、例えば、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、ブラウン管(CRT:Cathode Ray Tube)などの様々なディスプレイ装置のいずれかに対応する。
オーディオデコーダ10はメモリ12から供給された(或いは、読み込んだ)オーディオデータをデコードし、その結果得られる音声情報をスピーカ15に音声出力する。
【0017】
同期データ検出装置としての同期バイト検出部5には、復調されたTSが入力される。同期バイト検出部5は、TSデータの中から同期バイトを検出し、検出結果を、TSデータと共にシステムデコータ6に供給する。本実施の形態では、MPEG2におけるTSデータの同期バイト「0x47」を、同期データの例として説明する。
なお、同期バイト検出部5は、システムデコーダ6の内部にあってもよい。
【0018】
まず、本実施の形態の同期バイト検出部5の検出動作の全体の流れについて、説明する。図2は、同期バイト検出部5が同期バイト検出動作を開始した場合の処理を説明するための図である。なお、ここでは、同期バイトが、連続して所定の回数以上、ここでは5回以上検出されたときには、その検出された同期バイトは、正しい同期バイトであると判定される例で説明する。図3は、同期バイト検出部5において同期バイト検出のためにTSデータが格納されるメモリのメモリマップを示す図である。
【0019】
図2に示すように、複数のパケットからなるTSデータを記憶するメモリのアドレスの先頭から順番に所定の単位、ここではバイト単位で、TSデータが読み出される。
【0020】
TSデータを順番に読み出しながら、TSデータが、所定の同期バイト、ここでは「0x47」のデータであるとき、それ以降は、所定の周期で、すなわち188バイト毎に、「0x47」のデータがあるか否かが判定される。
図2では、データDT1が最初の「0x47」のデータであり、その後は、188バイト先のデータDT2が「0x47」のデータであるか否かが判定される。図3では、斜線で示すように、メモリマップ上のアドレスRA(DT1)にデータDT1が格納されている。データDT1の後には、188バイト先のアドレスRA(DT2)のデータDT2が読み出されて、「0x47」のデータであるか否かの判定に用いられる。アドレスRA(DT1)とRA(DT2)間のTSデータは、飛ばされて読まれない。各アドレスRAのデータは、1バイトデータである。
図2では、その後、データDT2も「0x47」のデータであり、さらに188バイト先のデータDT3、及びさらに先のデータDT4も「0x47」のデータである。
【0021】
しかし、図2では、データDT4の次の188バイト先のデータDT5が「0x47」のデータでない。よって、同期バイト検出部5は、「0x47」のデータを連続して5回以上所定の周期で検出していないので、これまで検出したデータDT1からDT4の「0x47」のデータは、同期バイトではないとされる。そして、同期バイト検出部5は、最初に検出されたデータDT1の次のデータから、再度、同様に同期バイトの検出処理を実行する。図2では、矢印A1で示すように、アドレスRD(DT1)の次のアドレスの位置P1まで戻り、位置P1から再度同期バイトの検出処理が実行される。
【0022】
2回目の同期バイトの検出処理では、データDT2が「0x47」のデータであるので、その後は、188バイト先のデータDT3が「0x47」のデータであるか否かが判定される。図2では、その後、データDT4も「0x47」のデータである。
【0023】
しかし、2回目の同期バイト検出処理でも、データDT4の次の188バイト先のデータDT5が「0x47」のデータでない。よって、同期バイト検出部5は、「0x47」を連続して5回以上所定の周期間隔で検出していないので、これまで検出した「0x47」のデータは、同期バイトではないとされ、2回目の同期バイト検出処理において、最初に検出されたデータDT2の次のデータから、再度、同様に同期バイトの検出処理を実行する。図2では、矢印A2で示すように、アドレスRD(DT2)の次のアドレスの位置P2まで戻り、位置P2から再度同期バイトの検出処理が実行される。
【0024】
3回目の同期バイトの検出処理では、データDT11が「0x47」のデータであるので、その後は、188バイト先のデータDT12が「0x47」のデータであるか否かが判定される。図2では、その後、データDT12も「0x47」のデータである。
【0025】
以下同様にして、同期バイト検出部5は、同期バイト検出処理を行うが、図2の場合では、「0x47」のデータが、188バイト毎に連続して5個ある。よって、3回目の同期バイト検出処理において、5回目に検出された「0x47」のデータが「0x47」のデータであったときに、同期バイトが検出されたと判定される。
【0026】
すなわち、1回目と2回目の同期バイト検出処理では、アドレスRA(DT1)のデータDT1、アドレスRA(DT2)のデータDT2、アドレスRA(DT3)のデータDT3、及びアドレスRA(DT4)のデータDT4は、各パケットに含まれる所定の同期バイトではない、別のデータであった。それらのデータは、その値が、たまたま「0x47」である別のデータFBである。
【0027】
しかし、3回目のデータの同期バイト検出処理では、アドレスRA(DT11)のデータDT11、アドレスRA(DT12)のデータDT12、アドレスRA(DT13)のデータDT13、及びアドレスRA(DT4) のデータDT14及びアドレスRA(DT15)のデータDT15は、正しい同期バイトSBである。
以上のように、上述した本実施の形態においては、同期バイト検出処理において、従来は読み飛ばされていたTSデータも同期バイト検出処理対象となり、パケット抜けのない同期バイト検出を行うことができる。
【0028】
また、連続する同期バイトが検出されなくなったときにも、パケット抜けなく同期バイトの検出が行われる。
図4は、正しい同期バイトが検出されなくなったときの同期バイト検出部5の処理を説明するための図である。
図4は、正しい同期バイトが検出された後に、同期バイト検出部5が、188バイト毎のTSデータが「0x47」のデータであるか否かを判定しているときに、読み出したTSデータが「0x47」でないデータの場合を示す。図4では、最後に読み出したデータDT21は、「0x47」であったが、188バイト先の次のデータDT22が「0x47」でなかったことが示されている。
【0029】
そのような場合、同期バイト検出部5は、最後に「0x47」であったデータDT21の次のデータから、同期バイトの検出処理を実行する。図4では、矢印A11で示すように、アドレスRD(DT21)の次のアドレスの位置P11まで戻り、位置P11から、上述した同期バイト検出処理が実行される。
【0030】
その結果、同期バイト検出部5は、アドレスRA(DT31)のデータが、「0x47」であることを検出し、その後は、図2で説明したと同様に、188バイト毎に「0x47」のデータがあるか否かの判定を行う。
【0031】
以上のように、従来では、正しい同期バイトが検出された後に、正しい同期バイトが検出されなくなった場合には、その後のTSデータの中から同期バイトの検出を行っていた。しかし、上述した本実施の形態においては、正しい同期バイトが検出された後に、正しい同期バイトが検出されなくなった場合には、最後の同期バイトの次のデータから、同期バイト検出処理を行うようにした。よって、図4に示すように、データDT21の直後に、正しい同期バイトのデータDT31があるような場合に、その正しい同期バイトのデータDT31を含むパケットが取り逃がされることなく、同期バイトの検出処理に利用される。
【0032】
なお、図2の場合、矢印A1あるいはA2で示すように、同期バイト検出処理対象のアドレスが位置P1あるいはP2に戻った場合に、既に、同期バイトでないと判定されたデータFBについては、対象データから外して、同期バイト検出処理を行うようにしてもよい。
【0033】
次に、同期バイト検出部5の構成について説明する。
図5は、同期バイト検出部5の構成を示すブロック図である。同期バイト検出部5は、RAM21、0x47検出器22、初回検出部23、判定指示部24、カウンタ25、比較器26、ラッチ回路(以下、単にラッチという)27,28、29、セレクタ30,31、加算器32,33,34、及びデータ出力制御部35を含んで構成される回路である。
【0034】
復調器4から復調処理して復元されたTSデータが、RAM21に入力される。
0x47検出器22は、RAM21から読み出されたバイトデータが、「0x47」のデータであることを検出する回路である。読み出されたバイトデータが「0x47」のデータであることを検出すると、「1」の検出信号DSを出力する。0x47検出器22は、所定の同期データを含むTSデータを記憶するメモリであるRAM21からTSデータを所定の単位で順次読み込み、所定の同期データを検出する検出部を構成する。
【0035】
初回検出部23は、同期バイトの検出を開始してから、「0x47」のデータを初めて検出したことを検出する回路である。「0x47」のデータの検出が初回であるとき、初回検出部23は、初回検出信号DS1を出力する。
【0036】
判定指示部24は、「0x47」のデータが、所定の回数、検出されたか否かに応じて、指示信号SS1とSS2を出力する回路である。また、判定指示部24は、加算器32への制御信号SS3を出力する。
指示信号SS1は、後述する比較結果信号CSが「0」で、かつ検出信号DSが出力されていない場合には、「1」であり、比較結果信号CSが「1」で、かつ検出信号DSが出力されていない場合、すなわち「0」の場合には、「0」である。判定指示部24は、比較結果信号CSと検出信号DSに応じて、このような判定信号SS1を出力する。
指示信号SS2は、ラッチ29のラッチタイミングの信号である。
【0037】
カウンタ25は、「0x47」のデータが検出された回数をカウントするカウンタである。カウンタ25が、0x47検出器22が所定の同期データを検出した回数をカウントする検出回数カウント部を構成する。
比較器26は、カウンタ25のカウント値CNが予め設定された設定値CNSを超えたか否かを判定するための比較回路である。比較器26は、カウント値CNが設定値CNSを超えると、「1」の比較結果信号CSを出力する。ここでは、設定値CNSは、「4」である。従って、比較器26は、カウント値CNが5以上になると、比較結果信号CSを出力する。
【0038】
ラッチ27は、初回検出部23からの初回検出信号DS1に基づいて、最初の「0x47」のデータが検出されたときバイトデータのRAM21のリードアドレスを保持する回路である。ラッチ27は、最初に検出された同期データのRAM21のアドレスを保持するアドレス保持部を構成する。
ラッチ28は、0x47検出器22からの検出信号DSに基づいて、「0x47」のデータが検出されたときのRAM21のリードアドレスを保持する回路である。ラッチ28は、0x47検出器22が所定の同期データを検出したときの最新の同期データのRAM21のアドレスを保持するアドレス保持部を構成する。
ラッチ29は、アドレスRAを保持して、加算器34を介してRAM21へそのリードアドレスを供給するための回路である。
【0039】
セレクタ30は、判定指示部24からの指示信号SS1に基づいて、ラッチ27と28のいずれか一方に保持されているアドレスを選択して出力する回路である。セレクタ30は、指示信号SS1が「1」の場合は、ラッチ27の値を選択して出力し、指示信号SS1が「0」の場合は、ラッチ28の値を選択して出力する。
セレクタ31は、初回検出部23からの初回検出信号DS1に基づいて、「1」又は「188」のいずれか一方を選択して出力する回路である。セレクタ31は、「1」と所定の周期に対応する値としての「188」のいずれかを選択する選択部である。セレクタ31は、初回検出部23が所定の同期データを最初に検出するまでは「1」を選択して出力し、初回検出部23が所定の同期データを最初に検出した後は「所定の周期に対応する値」を選択して出力する選択部を構成する。
【0040】
加算器32は、制御信号SS3に応じて、セレクタ30からの出力されたアドレスに「1」を加算して、ラッチ29に出力する回路である。
加算器33は、所定の初期値が入力される回路であり、さらに、データを保持し、その保持されたデータにセレクタ31の出力である「1」又は「188」を加算して出力する回路である。
【0041】
加算器34は、加算器33の出力にラッチ29の出力を加算して出力する回路である。
データ出力制御部35は、比較器26の比較結果信号CSに基づき、RAM21に対してデータ出力のためのリードアドレスRAaを出力して、RAM21からTSデータを取得して、TSデータを出力する回路である。出力されたTSデータは、システムデコーダ6においてデコードされる。
【0042】
次に、図5の同期バイト検出部5の動作を説明する。
デジタル放送の受信が開始されると、復調されたTSデータが復調器4から同期バイト検出部5に入力される。各ラッチ27,28,29及びカウンタ25は、初期化信号CLRの入力により初期化されている。TSデータは、図3に示すように、受信した順に所定のアドレスから順次バイト単位でRAM21に格納される。図3では、RAM21の先頭からバイト単位でTSデータが記憶されている。
【0043】
TSデータは、RAM21に順次格納されていくので、RAM21に所定の量のTSデータが格納されると、加算器33は、初期値、例えば「0」を出力する。加算器34でその出力「1」に「0」が加算された値が、RAM21にリードアドレスとしてのアドレスRA(1)として出力される。
【0044】
所定のタイミングで、RAM21にアドレスRA(1)が入力され、RAM21は、リードアドレスRAに対応する1バイトのデータを、0x47検出器22に出力する。
その結果、アドレスRA(1)のTSデータが読み出され、0x47検出器22は、入力されたTSデータが「0x47」であるか否かを判定し、「0x47」でないときは、何も出力しない。
【0045】
上記の動作は、0x47検出器22が「0x47」のデータを検出するまで繰り返される。すなわち、セレクタ31からの出力「1」の出力が、ラッチ33において保持されたデータに加算され、その加算値がRAM21に供給されることにより、リードアドレスRAが「1」ずつインクリメントされる。RAM21からのアドレスRA(2)、RA(3)、・・・の各データの読み出しが、「0x47」になるまで繰り返される。
【0046】
0x47検出器22は、入力されたデータが「0x47」であるとき、「1」の検出信号DSを初回検出部23,カウンタ25及びラッチ28に出力する。1回目の検出信号DSなので、カウンタ25のカウント値は「1」となる。初回の「0x47」が検出されると、その後は、188バイト毎に「0x47」のデータがあるか否かの判定処理が開始される。
【0047】
ラッチ28は、RAM21が「0x47」のデータを出力したときのアドレスRAを保持する。図2の例では、データDT1のアドレスRA(DT1)がラッチ28にラッチされる。
【0048】
0x47検出器22は、RAM21からのデータが「0x47」であると、検出信号DSを出力するので、初回検出部23は、0x47検出器22からの検出信号DSが、同期バイト検出を開始してから最初の信号であるかを判定し、最初の検出信号DSであるときは、判定指示部24、ラッチ27及びセレクタ31に初回検出信号DS1を出力する。
【0049】
ラッチ27は、初回検出信号DS1の入力に基づき、RAM21が「0x47」のデータを最初に出力したときのアドレスデータを保持する。すなわち、初回の検出信号DSが出力されると、初回検出信号DS1がラッチ27に供給され、ラッチ27は、最初の「0x47」のデータが検出されたときのアドレスをラッチする。図2の例では、データDT1のアドレスRA(DT1)がラッチ27にラッチされる。
【0050】
判定指示部24は、比較結果信号CSと検出信号DSと初回検出信号DS1の入力に基づき、選択信号としての指示信号SS1をセレクタ30に出力し、かつホールド信号としての指示信号SS2をラッチ29に出力する。このとき、指示信号SS1は、「0」で、ホールド信号としての指示信号SS2は、「1」である。このとき、加算器32は、制御信号SS3に基づいて、「1」を加算せず、ラッチ28の出力をラッチ29に出力する。ラッチ29は、判定指示部24からの指示信号SS2に基づき、ラッチ28の出力を保持し、出力する。
【0051】
セレクタ31は、初回検出部23から初回検出信号DS1に基づき、「188」を選択して、出力する。
【0052】
その結果、加算器34は、ラッチ29の出力にセレクタ31からの「188」を加算して、その加算値をリードアドレスRAとしてRAM21に出力する。図2の例では、アドレスRA(DT2)が、RAM21に供給される。
【0053】
次に、0x47検出器22は、「0x47」のデータを検出すると、検出信号DSを出力し、検出信号DSを初回検出部23,カウンタ25及びラッチ28に出力する。
【0054】
初回検出部23は、検出信号DSは初回ではないので、初回検出信号DS1を出力しない。
【0055】
2回目の検出信号DSなので、カウンタ25のカウント値は「2」となる。
【0056】
ラッチ28は、RAM21が「0x47」のデータを出力したときのアドレスRAを保持する図2の例では、データDT2のアドレスRA(DT2)が、ラッチ28にラッチされる。
【0057】
図2の例では、データDT2からデータDT4までは、上記と同様の動作になる。すなわち、判定指示部24は、比較結果信号CSと検出信号DSの入力に基づき、選択信号としての指示信号SS1をセレクタ30に出力し、かつホールド信号としての指示信号SS2をラッチ29に出力する。セレクタ30は、ラッチ28の出力を選択してラッチ29に出力する。ラッチ29は、保持しているデータを加算器34に出力する。加算器34は、ラッチ29の出力にセレクタ31の出力「188」を加算して、その加算値をリードアドレスRAとしてRAM21に出力する。図2の例では、アドレスRA(DT3)、RA(DT4)及びRA(DT5)が、順番にRAM21に供給される。
【0058】
しかし、図2の場合、データDT5は、「0x47」のデータではない。データDT5が「0x47」のデータでないと、0x47検出器22は、「0」の検出信号DSを出力する。判定指示部24は、検出信号DSが「0」であり、比較結果信号CSが「0」であるので、「1」の指示信号SS1をセレクタ30に出力する。
【0059】
セレクタ30は、「1」の指示信号SS1が入力されると、ラッチ27の出力(すなわち「0x47」を検出した最初のアドレスRA(DT1))を選択して、加算器32に出力する。加算器32では、制御信号SS3に基づいて、「1」を加算して、ラッチ29に出力する。ラッチ29は、指示信号SS2に基づき、加算器32の出力をラッチして出力する。
【0060】
この場合、加算器34は、ラッチ29の出力に初期値の「0」を加算し、その加算値をリードアドレスとしてRAM21に供給する。図2の例では、矢印A1で示すように、最初のデータDT1の次のアドレスが、RAM21に供給される。そして、カウンタ25のカウント値は、クリアされる。
【0061】
以上のように、判定指示部24は、0x47検出器22が、最初の所定の同期データを検出した後、0x47検出器22に、所定の周期でTSデータを読み込ませ、0x47検出器22が所定の周期で所定の同期データを連続して所定回数検出しない場合には、TSデータの最初の所定の同期データの次のデータから0x47検出器22に読み込ませる制御部を構成する。この制御部は、図5において、RAM21、データ出力制御部35、0x47検出器22及び比較器26を除く回路から構成される。
【0062】
その後の動作は、上述したデータDT1からDT4についての動作と同様である。そして、「0x47」のデータが検出されると、188バイト毎に「0x47」のデータがあるか否かの2回目の処理が開始される。
図2の例では、この2回目の処理においても、データDT5は、「ox47」のデータではないので、判定指示部24は、セレクタ30に、「1」の指示信号SS1を供給する。そして、図2の例では、矢印A2で示すように、最初のデータDT2の次のアドレスが、RAM21に供給される。そして、カウンタ25のカウント値は、クリアされる。ここでは、カウンタ25のカウンタ値は、「3」になってからクリアされる。
【0063】
そして、その後の動作は、上述したデータDT1からDT4についての動作と同様である。そして、「0x47」のデータが検出されると、188バイト毎に「0x47」のデータがあるか否かの3回目の処理が開始される。図2に示すように、データDT11からDT15まで、上述したデータDT1からDT4についての動作と同様である。しかし、データDT15は、「0x47」のデータであるので、カウンタ25のカウント値は「5」となり、比較器26は、比較結果信号CSは、「1」となる。
【0064】
データ出力制御部35は、「1」の比較結果信号CS を受信して、RAM21へリードアドレスRAaを出力して、RAM21からTSデータを取得することができる。
【0065】
データ出力制御部35は、例えば、「1」の比較結果信号CSを受信したタイミングで、読み出されたTSデータから、5つ前の「0x47」のデータから、TSデータを読み出すように、リードアドレスRAaを生成して出力する。データ出力制御部35は、リードアドレスRAaから連続的にTSデータを読み出し、システムデコーダ6に出力する。
【0066】
なお、比較器26が「1」の比較結果信号CSを出力した後も、同期バイト検出部5は動作を継続する。188バイト毎に「0x47」のデータが出現するか否かが判定される。
【0067】
さらに、比較器26が「1」の比較結果信号CSを出力した後に、188バイト毎のデータが「0x47」のデータなくなると、0x47検出器22は、「1」の検出信号DSを出力しない。判定指示部24は、「0」の検出信号DSが入力されると、比較結果信号CSが「1」であるので、「0」の指示信号SS1をセレクタ30に出力する。
【0068】
セレクタ30は、「0」の指示信号SS1が入力されると、ラッチ28の出力を選択して、加算器32に出力する。図4の例では、「0x47」を検出した最後のアドレスRA(DT21)が選択される。加算器32では、「1」を加算して、ラッチ29に出力する。ラッチ29は、指示信号SS2に応じて、加算器32の出力をラッチして出力する。図4の例では、矢印A11で示すように、TSデータが最後に「0x47」のデータであったデータDT21の次のアドレスが、RAM21に供給される。
【0069】
以上のように、判定指示部24は、所定の同期データを所定の回数検出された後に、所定の同期データが所定の周期で検出されない場合は、同期データ検出部に対して、最後に検出された所定の同期データの次のトランスポートストリームデータから順番に読み込ませて所定の同期データの有無を検出するように指示する制御部を構成する。
【0070】
そして、カウンタ25,ラッチ27,28は、クリアされる。その後の動作は、上述した動作と同様であるが、「0x47」データの検出は、最後に「0x47」のデータが検出されたアドレスの次のアドレスから行われるので、図4に示すように、最後に「0x47」のデータが検出されたアドレスの直後に、正しい同期バイトのデータSBがあるような場合に、その正しい同期バイトのデータが取り逃がすことがなくなる。
【0071】
なお、同期バイト検出部5は、ソフトウエアプログラム(以下、プログラムという)で実現することができる。プログラムで実現される場合、同期バイト検出部5は、ホストプロセッサ7とメモリ12とにより構成される。図6は、同期バイト検出処理の流れの例を示すフローチャートである。図7は、メモリ12のメモリマップを示す図である。図6に示すプログラムは、ホストプロセッサ内のROM等に記憶され、DRAM等のメモリ12の所定の記憶領域R1に展開されて、実行される。
【0072】
ホストプロセッサ7は、復調器4からTSデータが出力されると、メモリ12の所定の記憶領域R3に、一旦TSデータを順番に格納する。
TSデータが所定量以上格納されると、図6の処理が実行される。ホストプロセッサ(以下、単にCPUともいう)7は、記憶領域R3の先頭からTSデータを、バイト単位で読み出す(ステップ(以下Sと略す)1)。そして、CPU7は、読み出したTSデータが「0x47」のデータであるか否かを判定する(S2)。S2が、複数のパケットからなるTSデータを記憶するメモリからTSデータを所定の単位で順番に読み出し、所定の同期データの有無を検出する同期データ検出部を構成する。
【0073】
読み出したTSデータが「0x47」のデータでない場合は(S2,NO)、CPU7は、それまで「0x47」は未検出であったか否かを判定する(S3)。「0x47」が未検出であった場合(S3,YES)、CPU7は、リードアドレスRAをインクリメントし(S4)、処理は、S1に戻る。
【0074】
CPU7は、読み出したTSデータが「0x47」のデータであると(S2,YES)、「0x47」データの検出が初回であるか否かを判定する(S5)。S5が、所定の同期データを最初に検出したことを検出する初回検出部を構成する。
【0075】
「0x47」データの検出が初回であると(S5,YES)、検出した「0x47」のデータのアドレス、すなわちリードアドレスRAを、メモリ12中の所定の第1のアドレスの記憶領域ADFに、書き込む(S6)。記憶領域ADFが、最初に検出された同期データのメモリのアドレスを保持するアドレス保持部を構成する。さらに、CPU7は、そのリードアドレスRAを、メモリ12中の所定の第2のアドレスの記憶領域ADLに、書き込む(S7)。
【0076】
. このリードアドレスを書き込む記憶領域ADF,ADL及び後述するカウンタ値を書き込む記憶領域CNTは、図7に示すように、メモリ12中の記憶領域R2に予め確保されている。
【0077】
また、CPU7は、「0x47」データの検出が初回でないと(S5,NO)、検出した「0x47」のデータのアドレス、すなわちリードアドレスRAを、メモリ12中の所定の第2のアドレスの記憶領域ADLに、書き込む(S7)。記憶領域ADLは、所定の同期データを検出したときの最新の同期データのメモリのアドレスを保持するアドレス保持部を構成する。
【0078】
CPU7は、カウンタ値をインクリメントする(S8)。カウンタ値は最初にクリアされているので、初回の検出時は、記憶領域CNTのカウンタ値は、「1」になる。S8は、所定の同期データが所定の周期で連続して検出されたときに、所定の同期データが最初に検出されたときからの所定の同期データの検出回数をカウントする検出回数カウント部を構成する。
【0079】
CPU7は、記憶領域CNTのカウンタ値が4以下であるか否かを判定する(S9)。カウンタ値が4以下であるとき(S9,NO)、CPU7は、リードアドレスRAを「188」バイト分ジャンプする(S10)。すなわち、S10では、リードアドレスRAは、188バイト分だけ先のアドレスに変更され、処理は、S1に戻る。
【0080】
カウンタ値が5以上であるとき(S9,YES)、CPU7は、TSデータを読み出して、システムデコーダ6に対してデータ出力制御処理を実行させ(S11)、処理はS10に移行する。
【0081】
読み出したTSデータが「0x47」のデータでなく(S2,NO)、かつ、それまで「0x47」を検出したことがあるとき(S3,NO)、CPU7は、カウンタ値が4以下であるか否かを判定する(S12)。
【0082】
カウンタ値が所定の回数である4以下である場合(S12,YES)は、記憶領域ADFのアドレス(すなわち、最初に「0x47」のデータを読み出したときのアドレス)をリードする(S13)。
【0083】
また、カウンタ値が所定の回数である5以上である場合(S12,NO)は、記憶領域ADLのアドレス(すなわち、最後に「0x47」のデータを読み出したときのアドレス)をリードする(S14)。
そして、CPU7は、記憶領域ADF,ADLのデータをクリアし(S15)、S13あるいはS14でリードしたデータインクメントして(S4)、処理は、S1に戻る。
【0084】
S3,S12,S13,S4が、所定の同期データを、所定の回数、検出したか否かを判定し、所定の同期データを所定の回数検出しない場合は、同期データ検出部に対して、最初に検出された所定の同期データの次のトランスポートストリームデータから順番に読み出して所定の同期データの有無を検出するように指示する判定指示部を構成する。
【0085】
S3,S12,S14,S4が、所定の同期データを、所定の回数、検出された後に、所定の同期データが所定の周期で検出されない場合は、同期データ検出部に対して、最後に検出された所定の同期データの次のトランスポートストリームデータから順番に読み出して所定の同期データの有無を検出するように指示する判定指示部を構成する。
【0086】
以上のように、同期バイト検出部5の処理を、プログラムによって実現してもよく、上述したハードウエアで実現した場合と同様の効果を得ることができる。
なお、上述した例は、プログラムがホストプロセッサ7により実行される例であるが、他のプロセッサにより実行されるようにしてもよい。
【0087】
以上のように、上述した本実施の形態によれば、パケット抜けなく同期データの有無の検出を行うことができる同期データ検出装置、その方法及びそのためのプログラムを実現することができる。
【0088】
上述した例は、テレビジョン受像機の例であるが、上述した本実施の形態の同期データ検出装置は、複数のパケットからなるトランスポートストリームを処理するHDDレコーダ、PC等にも適用できるものである。
特に、コンテンツデータを、ネットワークを介して提供される画像データのTSは、パケット単位で、連続的に整然と繋がれていない。そのようなデータを再生等する場合に、パケット抜けがあると、再生に必要なデータが欠け、復号化処理の開始が遅れる等の問題が発生する。
具体的には、映画のコンテンツのように、分割されたデータをTSデータのパケットの188バイト単位で繋いで作成されたコンテンツであれば、パケット抜けは少ないが、ネットワーク例えば、インターネットにより提供されるコンテンツの場合は、TSデータのパケット単位で編集されて作成されていない場合も多い。このような場合にも、上述した本実施の形態の同期データ検出装置は、有効である。
【0089】
なお、上述した同期データ検出装置は、例えば1つの半導体チップとして形成することもできるし、MPEGデコーダ等のデコーダの半導体チップの一部の回路として形成することもできる。
【0090】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD-ROM等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部のプログラムコードが記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムのコードの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明の同期データ検出装置を実現することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【0091】
1 デジタル放送受信機、2 アンテナ、3 チューナ、4 復調器、5 同期バイト検出部、6 システムデコーダ、7 ホストプロセッサ、8 再生同期制御部、9 ビデオデコーダ、10 オーディオデコーダ、11 データバス、12 メモリ、13 バック・エンド・プロセッサ、14 表示部、15 スピーカ、16 MPEGデコーダ、21 RAM、22 0x47検出器、23 初回検出部、24 判定指示部、25 カウンタ、26 比較器、27、28,29 ラッチ回路、30、31 セレクタ、32,33,34 加算器、35 データ出力制御部

【特許請求の範囲】
【請求項1】
所定の同期データを含むトランスポートストリームデータを記憶するメモリから前記トランスポートストリームデータを順次読み込み、前記所定の同期データを検出する検出部と、
前記検出部が前記所定の同期データを検出した回数をカウントする検出回数カウント部と、
前記検出部が、最初の所定の同期データを検出した後、前記検出部に、所定の周期で前記トランスポートストリームデータを読み込ませ、前記検出部が前記所定の周期で前記所定の同期データを連続して所定回数検出しない場合には、前記トランスポートストリームデータの前記最初の所定の同期データの次のデータから前記検出部に読み込ませる制御部と、
を備えることを特徴とする同期データ検出装置。
【請求項2】
前記制御部は、前記最初の所定の同期データの前記メモリのアドレスを保持するアドレス保持部をさらに有し、
前記制御部は、前記検出部が前記所定の周期で前記所定の同期データを連続して所定回数検出しない場合には、前記アドレス保持部に保持されたアドレスに基づいて、前記最初の所定の同期データの次のアドレスのデータから前記検出部に読み込ませることを特徴とする請求項1に記載の同期データ検出装置。
【請求項3】
前記制御部は、前記検出部が前記所定の周期で前記所定の同期データを連続して所定回数検出した後に、前記所定の同期データが検出されない場合は、前記トランスポートストリームデータの前記検出部が最後に検出した所定の同期データの次のデータから前記検出部に読み込ませることを特徴とする請求項1または2に記載の同期データ検出装置。
【請求項4】
所定の同期データを含むトランスポートストリームデータを記憶するメモリから前記トランスポートストリームデータを順次読み込み、前記所定の同期データを検出し、
前記所定の同期データを検出した回数をカウントし、
最初の所定の同期データを検出した後、所定の周期で前記トランスポートストリームデータを読み込み、前記所定の周期で前記所定の同期データを連続して所定回数検出しない場合には、前記トランスポートストリームデータの前記最初の所定の同期データの次のデータから読み込む、
ことを備えることを特徴とする同期データ検出方法。
【請求項5】
所定の同期データを含むトランスポートストリームデータから前記所定の同期データを検出するプログラムであって、コンピュータを、
所定の同期データを含むトランスポートストリームデータを記憶するメモリから前記トランスポートストリームデータを順次読み込ませ、前記所定の同期データを検出させる手段と、
前記所定の同期データを検出した回数をカウントさせる手段と、
最初の所定の同期データを検出した後、所定の周期で前記トランスポートストリームデータを読み込み、前記所定の周期で前記所定の同期データを連続して所定回数検出しない場合には、前記トランスポートストリームデータの前記最初の所定の同期データの次のデータから読み込ませる手段と、
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate