(57)【特許請求の範囲】
【請求項１】
入力されるMPEG2またはH.264のエレメンタリストリームに含まれるビットパターンを検出する検出手段と、
入力される前記エレメンタリストリームが第１のストリームから第２のストリームに切り替えられたとき、前記第１のストリームに対する検出処理に用いられていた第１の設定情報を第１の退避領域に退避させ、前記第２のストリームに対する検出処理に用いられる第２の設定情報を設定する設定手段と
を備え、
前記設定情報には、検出するビットパターン、前記エレメンタリストリームを格納するバッファの開始アドレス、前記バッファのサイズ、前記バッファにおいてビットパターン検出を開始する位置、および、ビットパターン検出の途中結果イメージに関する情報が含まれており、
前記設定手段は、入力される前記エレメンタリストリームが前記第２のストリームから前記第１のストリームに切り替えられたとき、設定されている前記第２の設定情報を第２の退避領域に退避させ、前記第１の退避領域に退避されていた前記第１の設定情報を再設定する
情報処理装置。
【請求項２】
前記第１の設定情報または前記第２の設定情報を格納する格納手段をさらに備え、
前記設定手段は、前記第１のストリームに対する検出処理が終了したとき、前記第１の設定情報を退避させて前記格納手段に格納し、前記第２のストリームに対する検出処理が終了したとき、前記第２の設定情報を退避させて前記格納手段に格納する
請求項１に記載の情報処理装置。
【請求項３】
前記検出手段は、前記第１のストリームに対する検出処理が終了したとき、前記格納手段に格納された前記第２の設定情報を用いて、前記第２のストリームに対する検出処理を開始し、前記第２のストリームに対する検出処理が終了したとき、前記格納手段に格納された前記第１の設定情報を用いて、前記第１のストリームに対する検出処理を開始する
請求項２に記載の情報処理装置。
【請求項４】
前記設定手段は、前記第１のストリームの検出処理の途中で、前記第２のストリームの検出処理を開始するとき、前記第１の設定情報を退避させて前記格納手段に格納し、
前記検出手段は、前記格納手段に格納された前記第２の設定情報を用いて、前記第２のストリームに対する検出処理を行う
請求項２に記載の情報処理装置。
【請求項５】
前記設定手段は、前記第１のストリームの検出処理の途中で開始した前記第２のストリームの検出処理が終了したとき、前記第２の設定情報を退避させて前記格納手段に格納し、
前記検出手段は、前記格納手段に格納された前記第１の設定情報を用いて、前記第１のストリームに対する検出処理を再開する
請求項４に記載の情報処理装置。
【請求項６】
前記ビットパターンには、所定のビットからなるダミーパターンが含まれており、
前記検出手段は、前記エレメンタリストリームから、前記ダミーパターン以外のビットと同じサイズ分だけのビットを読み込み、前記ビットパターンと一致するビットを検出する
請求項１に記載の情報処理装置。
【請求項７】
入力されるMPEG2またはH.264のエレメンタリストリームに含まれるビットパターンを検出する情報処理装置の情報処理方法において、
入力される前記エレメンタリストリームが第１のストリームから第２のストリームに切り替えられたとき、前記第１のストリームに対する検出処理に用いられていた第１の設定情報を第１の退避領域に退避させ、前記第２のストリームに対する検出処理に用いられる第２の設定情報を設定し、
前記設定情報には、検出するビットパターン、前記エレメンタリストリームを格納するバッファの開始アドレス、前記バッファのサイズ、前記バッファにおいてビットパターン検出を開始する位置、および、ビットパターン検出の途中結果イメージに関する情報が含まれており、
入力される前記エレメンタリストリームが前記第２のストリームから前記第１のストリームに切り替えられたとき、設定されている前記第２の設定情報を第２の退避領域に退避させ、前記第１の退避領域に退避されていた前記第１の設定情報を再設定する
ステップを含む情報処理方法。
【請求項８】
入力されるMPEG2またはH.264のエレメンタリストリームに含まれるビットパターンを検出する機器を制御するコンピュータに実行させるプログラムであって、
入力される前記エレメンタリストリームが第１のストリームから第２のストリームに切り替えられたとき、前記第１のストリームに対する検出処理に用いられていた第１の設定情報を第１の退避領域に退避させ、前記第２のストリームに対する検出処理に用いられる第２の設定情報を設定し、
前記設定情報には、検出するビットパターン、前記エレメンタリストリームを格納するバッファの開始アドレス、前記バッファのサイズ、前記バッファにおいてビットパターン検出を開始する位置、および、ビットパターン検出の途中結果イメージに関する情報が含まれており、
入力される前記エレメンタリストリームが前記第２のストリームから前記第１のストリームに切り替えられたとき、設定されている前記第２の設定情報を第２の退避領域に退避させ、前記第１の退避領域に退避されていた前記第１の設定情報を再設定する
ステップを含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、より拡張性のある構成で、パターンマッチング処理を実現できるようにした情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
MPEG2やH.264などのビデオ圧縮規格で符号化されたビデオエレメンタリーストリーム（以下、ＥＳと称する）は、符号化データの属性情報を示すパラメータがヘッダ部分として符号化されており、復号化処理時には、これらのヘッダ部分の情報が必要となる。
【０００３】
ヘッダ部分は、固定ビット長のスタートコードを先頭としたビットであり、復号時はビットストリーム上からスタートコードを示すビットパターンの検出処理が必要となる。
【０００４】
ビットパターン検出処理は、処理速度向上の観点から従来よりハードウェアにより行う場合が多かった。特に、ＨＤ（High Definition）画像のＥＳのビットパターン検出処理をソフトウェアで行うことは、いわゆる組込み向けなどの非力なCPU（Central Processing Unit）では、リアルタイム性に欠けるということもあり、かかるＥＳヘッダ処理をハードウェアが行うという状況は今後も変わらないと予想される。
【０００５】
図１は、ハードウェアでＥＳのパターンマッチング処理を行って、ビットパターン検出をする場合における、従来のビットパターン検出装置の構成を示す図である。
【０００６】
図１においては、CPU１１は、ＨＷ（Hardware）ディテクタ１２に対し、ＥＳバッファ１３が格納されているメモリのアドレスとサイズ、および、検出すべきビットパターンを指定する。すると、ＨＷディテクタ１２は、パターン検出処理を施すべきＥＳが格納されているＥＳバッファ１３からビットストリームを読み取り、指定されたビットパターン列を検出する。
【０００７】
ＨＷディテクタ１２は、CPU１１による指示にしたがって、ＥＳの中のパターン検出処理を継続的に実行し、ビットパターン列が検出された場合には、処理結果をCPU１１に通知する。
【０００８】
すなわち、パターンマッチング処理は、CPU１１によって、不定長単位で分割されたＥＳのアドレス、サイズ情報を繰り返しＨＷディテクタ１２に設定することによって実現される。また、パターンマッチング処理においては、解析終了後の結果を保持しておく必要がある。その理由は、連続する異なる解析対象境界に検出すべきビットパターンが存在する場合が起こりうるからである。
【０００９】
本出願人は、固定データ長のデータ群により構成される入力データのデータ分離処理に関する技術を先に提案している（例えば、特許文献１参照）。
【特許文献１】特開２００６−１２１１８４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、特許文献１を含む従来の技術では、入力ＥＳが複数となったとき、パターンマッチング処理を並列に処理できるものの、パターンマッチの解析途中の情報を、唯一ハードウェアが保持しているため、入力ＥＳの数だけパターンマッチング処理を行う装置が必要となる。
【００１１】
例えば、図２に示すように、２つのＥＳが入力され、それぞれ、ＥＳバッファ１３1とＥＳバッファ１３2に格納されている場合、２つの入力ＥＳ対する解析情報を、ＨＷディテクタ１２1とＨＷディテクタ１２2にそれぞれ用意する必要がある。すなわち、入力ＥＳの数が増えると、それに応じて新たなＨＷディテクタ１２を別途設ける必要が出てくる。
【００１２】
従って、ハードウェア規模の増加やチップ面積の増大に伴うコスト増が生じるという問題が出てくる。また、入力ＥＳを増やす場合には、ハードウェアのシステム構成自体を変更する必要が出てくるので、従来の構成では、柔軟性、拡張性に欠けるという問題も有している。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、より拡張性のある構成で、パターンマッチング処理を実現できるようにするものである。
【課題を解決するための手段】
【００１４】
本発明の一側面の情報処理装置は、入力されるMPEG2またはH.264のエレメンタリストリームに含まれるビットパターンを検出する検出手段と、入力される前記エレメンタリストリームが第１のストリームから第２のストリームに切り替えられたとき、前記第１のストリームに対する検出処理に用いられていた第１の設定情報を第１の退避領域に退避させ、前記第２のストリームに対する検出処理に用いられる第２の設定情報を設定する設定手段とを備え、前記設定情報には、検出するビットパターン、前記エレメンタリストリームを格納するバッファの開始アドレス、前記バッファのサイズ、前記バッファにおいてビットパターン検出を開始する位置、および、ビットパターン検出の途中結果イメージに関する情報が含まれており、前記設定手段は、入力される前記エレメンタリストリームが前記第２のストリームから前記第１のストリームに切り替えられたとき、設定されている前記第２の設定情報を第２の退避領域に退避させ、前記第１の退避領域に退避されていた前記第１の設定情報を再設定する。
【００１５】
前記第１の設定情報または前記第２の設定情報を格納する格納手段をさらに備え、前記設定手段は、前記第１のストリームに対する検出処理が終了したとき、前記第１の設定情報を退避させて前記格納手段に格納し、前記第２のストリームに対する検出処理が終了したとき、前記第２の設定情報を退避させて前記格納手段に格納する。
【００１６】
前記検出手段は、前記第１のストリームに対する検出処理が終了したとき、前記格納手段に格納された前記第２の設定情報を用いて、前記第２のストリームに対する検出処理を開始し、前記第２のストリームに対する検出処理が終了したとき、前記格納手段に格納された前記第１の設定情報を用いて、前記第１のストリームに対する検出処理を開始する。
【００１７】
前記設定手段は、前記第１のストリームの検出処理の途中で、前記第２のストリームの検出処理を開始するとき、前記第１の設定情報を退避させて前記格納手段に格納し、前記検出手段は、前記格納手段に格納された前記第２の設定情報を用いて、前記第２のストリームに対する検出処理を行う。
【００１８】
前記設定手段は、前記第１のストリームの検出処理の途中で開始した前記第２のストリームの検出処理が終了したとき、前記第２の設定情報を退避させて前記格納手段に格納し、前記検出手段は、前記格納手段に格納された前記第１の設定情報を用いて、前記第１のストリームに対する検出処理を再開する。
【００２１】
前記ビットパターンには、所定のビットからなるダミーパターンが含まれており、前記検出手段は、前記エレメンタリストリームから、前記ダミーパターン以外のビットと同じサイズ分だけのビットを読み込み、前記ビットパターンと一致するビットを検出する。
【００２２】
本発明の一側面の情報処理方法は、入力されるMPEG2またはH.264のエレメンタリストリームに含まれるビットパターンを検出する情報処理装置の情報処理方法において、入力される前記エレメンタリストリームが第１のストリームから第２のストリームに切り替えられたとき、前記第１のストリームに対する検出処理に用いられていた第１の設定情報を第１の退避領域に退避させ、前記第２のストリームに対する検出処理に用いられる第２の設定情報を設定し、前記設定情報には、検出するビットパターン、前記エレメンタリストリームを格納するバッファの開始アドレス、前記バッファのサイズ、前記バッファにおいてビットパターン検出を開始する位置、および、ビットパターン検出の途中結果イメージに関する情報が含まれており、入力される前記エレメンタリストリームが前記第２のストリームから前記第１のストリームに切り替えられたとき、設定されている前記第２の設定情報を第２の退避領域に退避させ、前記第１の退避領域に退避されていた前記第１の設定情報を再設定するステップを含む。
【００２３】
本発明の一側面のプログラムは、上述した本発明の一側面の情報処理方法に対応するプログラムである。
【００２４】
本発明の一側面の情報処理装置および方法、並びにプログラムにおいては、入力されるMPEG2またはH.264のエレメンタリストリームが第１のストリームから第２のストリームに切り替えられたとき、第１のストリームに対する検出処理に用いられていた第１の設定情報が第１の退避領域に退避され、第２のストリームに対する検出処理に用いられる第２の設定情報が設定される。また、設定情報には、検出するビットパターン、エレメンタリストリームを格納するバッファの開始アドレス、バッファのサイズ、バッファにおいてビットパターン検出を開始する位置、および、ビットパターン検出の途中結果イメージに関する情報が含まれており、入力されるエレメンタリストリームが第２のストリームから第１のストリームに切り替えられたとき、設定されている第２の設定情報が第２の退避領域に退避され、第１の退避領域に退避されていた第１の設定情報が再設定される。
【発明の効果】
【００２５】
以上のように、本発明の一側面によれば、より拡張性のある構成で、パターンマッチング処理を実現することができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００２７】
図３は、本発明を適用したパターン検出装置の一実施の形態の構成を示すブロック図である。
【００２８】
図３に示すように、パターン検出装置２１は、CPU３１、ＨＷディテクタ３２、およびＥＳバッファ３３から構成される。
【００２９】
CPU３１は、検出するビットパターン、入力ESバッファ情報、検出スタート位置などのコンフィグレーション情報（Configuration）と、入力ESサイズをＨＷディテクタ３２に設定する。以下、CPU３１が設定するコンフィグレーション情報を、ビデオコンテキスト情報と称して説明する。
【００３０】
ＨＷディテクタ３２は、パターン検出処理を施すべきＥＳが格納されているＥＳバッファ３３からビットストリームを読み取り、指定されたビットパターン列を検出する。
【００３１】
ＨＷディテクタ３２は、図３に示すように、スタートコードディテクタ４１、内部SRAM（Static Random Access Memory）４２、メモリリードI/F（Interface）４３、およびVSDブロックレジスタ４４を含むようにして構成される。
【００３２】
スタートコードディテクタ４１には、メモリリードI/F４３によって読み出されたＥＳバッファ３３からのビットストリームが入力される。スタートコードディテクタ４１は、CPU３１によって指定されたVSDブロックレジスタ４４のビデオコンテキスト情報にしたがって、メモリリードI/F４３からのビットストリームから、指定されたビットパターン列を検出し、その処理結果を内部SRAM４２に格納する。そして、CPU３１は、内部SRAM４２に格納された処理結果を読み出し、保持する。
【００３３】
以上のようにして、パターン検出装置２１は構成され、パターンマッチング処理を行って、ビットパターンを検出する。
【００３４】
本実施の形態においては、パターン検出装置２１によって、MPEG2およびH.264のビデオＥＳのヘッダパターンが検出される例について説明する。そこで、次に、図４乃至図７を参照して、MPEG2およびH.264のシンタックスについて説明する。
【００３５】
MPEG2ビデオとは、ISO/IEC 13818-2で規定されたビデオ圧縮技術である。符号化されたデータは、複数のビデオシーケンスから構成され、各々のシーケンスが各ヘッダで区切られたレイヤ構成をとっている。各ヘッダは、スタートコードでそのヘッダの開始点が示される。MPEG2の規格においては、そのスタートコード長は、4バイト固定となっており、MSBから0x000001xxの値を必ずとることが規定されている。
【００３６】
ここで、xxの値は、スタートコードのタイプを示す1バイトのビットパターンであって、この値によりパターン検出装置２１は、スタートコードタイプを決定する。なお、ビデオのスタートコードパターンは、コードエミュレーションが発生しないように符号化されなければならないため、スタートコードパターンが検出された場合は、ヘッダ開始点であると一意に判別してもよい。
【００３７】
図４は、MPEG2 ＥＳビットストリームのシンタックスの例を示している。
【００３８】
MPEG2 Video Sequenceにおいては、先頭に、Sequence Headerが配置され、続いて、GOP Header，Picture Header，Slice Dataの順に配置され、最後に、Sequence End Codeが配置される。
【００３９】
Sequence Headerには、その先頭に、Sequence Start Codeが配置され、さらに、User Data Start Codeも配置される。また、GOP Headerには、その先頭に、GOP Start Codeが配置され、Picture Headerには、その先頭に、Picture Start Codeが配置され、さらに、Extension Start Codeも配置される。さらに、Slice Dataの先頭には、1st Slice Start Codeが配置される。
【００４０】
このように、図４のMPEG2 Video Sequenceにおいては、各種のハッチングで示す領域に、Sequence Start Codeなどのスタートコードが配置される。
【００４１】
かかるスタートコードのタイプの例を示すと、図５の表のようになる。
【００４２】
図５の表は、MPEG2におけるStartCode Nameに対応するStartCode Patternを表している。また、図５のStartCode Nameは、図４で説明した各スタートコードに対応している。
【００４３】
図５においては、例えば、Picture Start CodeのStartCode Patternは、「0x00000100」であることを意味している。同様に、First Slice Start Codeは「0x00000101」、User Data Start Codeは「0x000001B2」、Sequence Start Codeは「0x000001B3」、Sequence Error Codeは「0x000001B4」、Extension Start Codeは「0x000001B5」、Sequence End Codeは「0x000001B7」、
GOP Start Codeは「0x000001B8」であるStartCode Patternをそれぞれ有している。
【００４４】
これらのスタートコードタイプが、パターン検出装置２１により検出される。
【００４５】
一方、H.264は、ISO/IEC 14496-10で規定されたビデオ圧縮技術である。H.264は複数のNALユニットと呼ばれる単位で符号化されている。本発明が対象としているのは、すべてのNALにスタートコードが付与されるバイトストリームフォーマットである。そのため、MPEG2と同様に、すべてのNALユニットは、MSBから0x000001xxの値を持つスタートコードを持ち、H.264でも、コードエミュレーションが発生しないことと合わせて、スタートコードタイプが検出された場合には、パターン検出装置２１は、ヘッダ開始点であると判別できる。
【００４６】
図６は、H.264のＥＳビットストリームのシンタックスの例を示している。
【００４７】
H.264 Video Sequenceにおいては、先頭に、AU Delimiter Start Codeが配置され、続いて、SPS Header，PPS Header，SEI Header，VCL Dataの順に配置され、最後に、End of Sequence Codeが配置される。
【００４８】
SPS Headerには、その先頭に、SPS Start Codeが配置され、PPS Headerには、その先頭に、PPS Start Codeが配置され、SEI Headerには、SEI Start Codeが配置される。また、VCL Dataの先頭には、VCL Start Codeが配置される。
【００４９】
このように、図６のH.264 Video Sequenceにおいては、各種のハッチングで示す領域に、AU Delimiter Start Codeなどのスタートコードが配置される。
【００５０】
かかるスタートコードのタイプの例を示すと、図７の表のようになる。
【００５１】
図７の表は、H.264におけるStartCode Nameに対応するStartCode Patternを表している。また、図７のStartCode Nameは、図６で説明した各スタートコードに対応している。
【００５２】
図７においては、例えば、SEIのStartCode Patternは、「b'00000000 00000000 00000001 0xx00110」であることを意味している。同様に、SPSは「b'00000000 00000000 00000001 0xx00111」、PPSは「b'00000000 00000000 00000001 0xx01000」、AU Delimiterは「b'00000000 00000000 00000001 0xx01001」、End of Sequenceは「b'00000000 00000000 00000001 0xx01010」、End of Streamは「b'00000000 00000000 00000001 0xx01011」、Filler Dataは「b'00000000 00000000 00000001 0xx01100」であるStartCode Patternをそれぞれ有している。
【００５３】
以上のように、MPEG2やH.264などのビデオＥＳには、所定のスタートコードが含まれているので、図３のパターン検出装置２１において、スタートコードディテクタ４１は、ＥＳバッファ３３から読み出されたＥＳデータから、これらのスタートコードを検出する。そして、パターン検出装置２１においては、ビデオコンテキスト情報をCPU３１に退避し、入力されるＥＳに合わせてビデオコンテキスト情報を動的に切り替えることにより、複数のＥＳに対して１つのＨＷディテクタ３２によって、パターンマッチング処理が行われる。
【００５４】
例えば、図８に示すように、パターン検出装置２１においては、ＨＷディテクタ３２によって、ＥＳバッファ３３1またはＥＳバッファ３３2のいずれかより読み出されたＥＳデータからスタートコードが検出される場合、CPU３１によって、ＨＷディテクタ３２に入力されるＥＳが切り替わる度に、ビデオコンテキスト情報の退避と設定を行う。そして、ＨＷディテクタ３２は、CPU３１により設定されたビデオコンテキスト情報に基づいて、パターンマッチング処理を行い、その結果をCPU３１に出力する。すなわち、この場合、入力されるＥＳに対応する数のＨＷディテクタ３２を設けずに、１つのＨＷディテクタ３２によって、パターンマッチング処理が行われ、ビットパターンが検出される。
【００５５】
ここで、ビデオコンテキスト情報は、図９に示すように、例えば、ES Buffer Read Pointer，Current Input Buffer Image，ES Buffer Start Address，ES Buffer Size，Match Patternから構成される。
【００５６】
ES Buffer Read Pointer（図９のES Buf Read Pointer）は、ＨＷディテクタ３２によって読み出されるＥＳバッファ３３上のRead Pointerである。パターン検出装置２１においては、ＨＷディテクタ３２を起動すると、Read Pointerからパターンマッチング処理が開始される。
【００５７】
Current Input Buffer Image（図９のInput Buffer Image）は、ＨＷディテクタ３２におけるパターンマッチング処理の途中結果のイメージであって、ＨＷディテクタ３２内のインプットバッファ（Input Buffer）に格納される。かかる途中結果のイメージの退避と再設定により、複数ＥＳのパターンマッチング処理が実現される。
【００５８】
ES Buffer Start Address（図９のES Buf Start Address）は、ＥＳバッファ３３のスタートアドレスである。
【００５９】
ES Buffer Size（図９のES Buf Size）は、ＥＳバッファ３３のサイズである。
【００６０】
Match Pattern（図９のMatch Pattern）は、フィルタリングすべきビットパターンであって、例えば、図５または図７に示した、スタートコードがこれに相当する。
【００６１】
なお、当然ながら、図９に示すCPU、HW Detector、ES Bufferは、図３のCPU３１、ＨＷディテクタ３２、ＥＳバッファ３３にそれぞれ対応している。
【００６２】
また、ビデオコンテキスト情報の退避と設定は、ＨＷディテクタ３２内のシステムレジスタにより実現される。従って、かかるシステムレジスタ内のビデオコンテキスト情報は、Read/Write属性となる。
【００６３】
上述したように、ビデオコンテキスト情報の退避と設定は、CPU３１によって行われるが、ここで、Current Input Buffer（図９のInput Buffer）が4バイトである場合において、ＨＷディテクタ３２の入力ＥＳチャンネルが切り替わったときに行われるビデオコンテキスト情報の退避と設定処理について、図１０を参照して説明する。
【００６４】
図１０においては、図中上側の状態図に示すように、パターンマッチング処理途中に、ＨＷディテクタ３２により管理されるInput BufferにＥＳ１の0xFF000001であるビットパターン、CPU３１のよって管理されるＥＳ１用の退避領域１とＥＳ２用の退避領域２のうち、退避領域２にＥＳ２の0xFFFF0000が退避されている。また、次にパターン検出をすべきＥＳ１のＥＳバッファ３３1の先頭には0xB3FFFFFFが格納され、次にパターンを検出すべきＥＳ２のＥＳバッファ３３2の先頭には0x01B80100が格納されている。つまり、ＨＷディテクタ３２においては、ＥＳ１に対するパターンマッチング処理が行われている途中である。
【００６５】
この場合において、ＨＷディテクタ３２への入力が、ＥＳ１からＥＳ２に切り替わったときの処理は、図１１のフローチャートに示すような手順で行われる。
【００６６】
図１１は、入力ＥＳ切り替え時のビデオコンテキスト情報の退避再設定処理を説明するフローチャートである。
【００６７】
ステップＳ１１において、CPU３１は、ＨＷディテクタ３２への入力がＥＳ１からＥＳ２に切り替わったか否かを判定する。ステップＳ１１において、ＥＳ１からＥＳ２に切り替わっていないと判定された場合、判定処理が繰り返される。すなわち、ＨＷディテクタ３２においては、ＥＳ１に対するパターンマッチング処理が継続して行われる。
【００６８】
一方、ステップＳ１１において、ＥＳ１からＥＳ２に切り替わったと判定された場合、ステップＳ１２において、CPU３１は、現在Current Input Bufferに存在するビットパターンを現在の入力であるＥＳ１の退避領域１にコピーする。
【００６９】
ステップＳ１３において、CPU３１は、切り替わり後の入力であるＥＳ２の退避領域２に退避させていたビットパターンをCurrent Input Bufferに再設定する。
【００７０】
ステップＳ１４において、CPU３１は、その他のＥＳ２に関するビデオコンテキスト情報と入力ＥＳサイズをＨＷディテクタ３２のシステムレジスタに設定する。
【００７１】
ステップＳ１５において、CPU３１は、ＨＷディテクタ３２を起動させる。
【００７２】
すなわち、ビデオコンテキスト情報を設定後、ＨＷディテクタ３２が起動され、ＨＷディテクタ３２によって、1バイトごとにマッチング処理が行われる。例えば、図１０の下側の状態図は、図１０の上側の状態図において、ビデオコンテキスト情報の退避と再設定を行った後の状態を示している。すなわち、図１０に示すように、ＨＷディテクタ３２への入力がＥＳ１からＥＳ２に切り替わると、Current Input Bufferに格納されていたＥＳ１の0xFF000001であるビットパターンが退避領域１にコピーされる。続いて、退避領域２に退避されていたＥＳ２の0xFFFF0000がCurrent Input Bufferに再設定される。これにより、ＨＷディテクタ３２によって、例えば、ＥＳ２から2バイト入力後にCurrent Input Bufferの0x0000と合わせて、GOP Start Code（0x000001B8）が検出される。
【００７３】
図１１のフローチャートに戻り、ステップＳ１６において、CPU３１は、ＥＳ１の入力が再開されたか否かを判定する。ステップＳ１６において、ＥＳ１の入力が再開されていないと判定された場合、判定処理が繰り返される。すなわち、ＨＷディテクタ３２においては、ＥＳ２に対するパターンマッチング処理が継続して行われる。
【００７４】
一方、ステップＳ１６において、ＥＳ１の入力が再開されたと判定された場合、ステップＳ１７において、CPU３１は、現在Current Input Bufferに存在するビットパターンを現在の入力であるＥＳ２の退避領域２にコピーする。
【００７５】
ステップＳ１８において、CPU３１は、入力が再開されたＥＳ１の退避領域１に存在しているビットパターンをCurrent Input Bufferに再設定する。
【００７６】
ステップＳ１９において、CPU３１は、その他のＥＳ１に関するビデオコンテキスト情報と入力ＥＳサイズをＨＷディテクタ３２のシステムレジスタに設定する。
【００７７】
ステップＳ２０において、CPU３１は、ＨＷディテクタ３２を起動させて、処理は終了する。例えば、図１０に示した例の場合には、退避領域１に退避されていたＥＳ１の0xFF000001がCurrent Input Bufferに再設定される。これにより、ＨＷディテクタ３２においては、ＥＳ１に対するパターンマッチング処理が再開される。
【００７８】
以上の処理を行うことで、任意のビットパターン検出処理において、動的に２チャンネルのＥＳ入力切り替えを実現できる。
【００７９】
また、かかる処理を実行することで、入力ＥＳがたとえ３つ以上になったとしても、パターン検出装置２１においては、CPU３１によって管理される退避領域を拡張することにより、上記の２チャンネル時の処理と同様に実現可能となる。一方、ＥＳ入力１チャンネル時には、CPU３１によるビデオコンテキスト情報の退避と再設定処理を行う必要はないので、パターン検出装置２１は、ビデオコンテキスト情報の設定を行わない設定にすることで、ＥＳ入力が１チャンネルの場合にも対応可能となる。
【００８０】
ここで、ＥＳ１系統入力（ＥＳ入力が１チャンネル）と、ＥＳ２系統入力（ＥＳ入力が２チャンネル）のパターン検出処理を行った場合のタイミングチャートを図示すると、図１２のようになる。
【００８１】
図１２において、図中の上側には、ＥＳ１系統入力のタイミングチャート、図中の下側には、ＥＳ２系統入力のタイミングチャートが示されている。また、図中の長方形は、CPU３１による処理を意味し、図中の六角形はＨＷディテクタ３２によるパターン検出処理を意味する。なお、パターン検出処理を示す図中の六角形の横方向の大きさはＥＳ入力サイズを表しており、その幅が大きくなるほど、入力サイズが大きくなることを意味している。
【００８２】
なお、図１２において、水平方向の実線は時間軸を表しており、時間の方向は、図中左から右に向かう方向とされており、後述する図１３、図１４、図１６、図１７、図１９、および図２０のタイミングチャートにおいても同様とされる。また、図中の縦軸において、ES Buf1はＥＳバッファ３３1に対応し、ES Buf2はＥＳバッファ３３2に対応し、CPU処理は、CPU３１による処理に対応している。
【００８３】
図１２の上側に示すように、入力が１系統の場合には、CPU３１の処理と、ＥＳバッファ３３1からの入力とが交互に繰り返され、以下の（１）から（４）までの処理を繰り返すことになる。
【００８４】
（１）Current Input Bufferのデータを退避領域１に退避する。
（２）退避領域１のデータをCurrent Input Bufferに再設定する。
（３）ＥＳ１のビデオコンテキスト情報と入力ＥＳサイズを設定する。
（４）ＨＷディテクタ３２を起動する。
【００８５】
なお、入力が１系統であるため、データの退避処理は不要であり、図１３に示すように、かかる退避処理を行わないようにすることも可能である。この場合、CPU処理は、退避処理を行わないので、例えば、最初に、ＥＳ１のビデオコンテキスト情報と入力ＥＳサイズを設定する処理だけとなる。
【００８６】
一方、図１２の下側に示すように、入力が２系統の場合には、CPU３１の処理と、ＥＳバッファ３３1からの入力（図中の入力サイズ１）またはＥＳバッファ３３2からの入力（図中の入力サイズ２）に対するパターン検出処理とが交互に繰り返される。すなわち、パターン検出装置２１においては、１系統の入力の場合と同様に、上記の（１）から（４）までの処理を繰り返すことで、Current Input Bufferからのデータの退避、Current Input Bufferへの再設定を繰り返し行うことにより、パターン検出処理が実現される。
【００８７】
ところで、図１２乃至図１４に示した手法であると、パターン検出前に設定した入力ＥＳサイズ分のパターン検出処理を終了することが、次の入力に対するパターン検出を開始する条件となっている。そこで、本実施の形態においては、次に説明する手法を用いて、あるＥＳバッファからの入力に対するパターン検出処理を途中で一時停止し、別のＥＳバッファからの入力に対するパターン検出終了後に再開する、といった処理も実現可能となる。
【００８８】
かかる処理の例として、ＨＷディテクタ３２へのＥＳ入力を２系統とした場合に、一方のＥＳに対するパターン検出処理を一時停止し、他方のＥＳに対するパターン検出処理を行ったときのタイミングチャートを示すと、図１４のようになる。
【００８９】
図１４のタイミングチャートでは、図１２の下側の２系統の入力ＥＳのタイミングチャートと同様に、CPU３１の処理と、ＥＳバッファ３３1からの入力（図中の入力サイズ１）またはＥＳバッファ３３2からの入力（図中の入力サイズ２）に対するパターン検出処理とが交互に繰り返される。ところが、図１４のタイミングチャートにおいては、図中の２個目のＥＳ１の六角形に示すように、ＥＳバッファ３３1からの入力ＥＳ１に対するパターン検出処理が途中で一時的に停止され、ＥＳバッファ３３2からの入力ＥＳ２が優先的に処理されている。この様な入力ＥＳを、ＥＳ１からＥＳ２に切り替えるときの処理は、図１５のフローチャートに示すような手順で行われる。
【００９０】
図１５は、パターン検出処理途中での強制停止処理を説明するフローチャートである。
【００９１】
ステップＳ３１において、CPU３１は、ＥＳ１のパターン検出処理を起動し、ＨＷディテクタ３２に実行させる。すなわち、ＨＷディテクタ３２においては、ＥＳ１に対するパターンマッチング処理が継続して行われる。
【００９２】
ステップＳ３２において、CPU３１は、ＥＳ１を一時停止するか否かを判定する。ステップＳ３２において、ＥＳ１を一時停止しないと判定された場合、ＥＳ１を一時停止すると判定されるまで、ＨＷディテクタ３２によって、ＥＳ１のパターン検出処理が実行される。
【００９３】
一方、ステップＳ３２において、ＥＳ１を一時停止すると判定された場合、CPU３１は、ステップＳ３３において、ＨＷディテクタ３２を強制的に停止させ、ステップＳ３４において、現在Current Input Bufferに存在するビットパターンを、現在の入力であるＥＳ１の退避領域１にコピーする。
【００９４】
ステップＳ３５において、CPU３１は、ＥＳ２の退避領域２に存在しているビットパターンをCurrent Input Bufferに再設定する。
【００９５】
ステップＳ３６において、CPU３１は、その他のＥＳ２に関するビデオコンテキスト情報と入力ＥＳサイズをＨＷディテクタ３２のシステムレジスタに設定する。
【００９６】
ステップＳ３７において、CPU３１は、ＨＷディテクタ３２を起動させる。
【００９７】
ステップＳ３８において、CPU３１は、ＨＷディテクタ３２によって実行されている、ＥＳ２のパターン検出処理が終了したか否かを判定する。ステップＳ３８において、ＥＳ２のパターン検出処理が終了していないと判定された場合、ＥＳ２のパターン検出処理が終了したと判定されるまで、ＨＷディテクタ３２によってＥＳ２のパターン検出処理が実行される。
【００９８】
一方、ステップＳ３８において、ＥＳ２のパターン検出処理が終了したと判定された場合、ステップＳ３９において、CPU３１は、現在Current Input Bufferに存在するビットパターンを、現在の入力であるＥＳ２の退避領域２にコピーする。
【００９９】
ステップＳ４０において、CPU３１は、ＥＳ１の退避領域１に存在しているビットパターンをCurrent Input Bufferに再設定する。
【０１００】
ステップＳ４１において、CPU３１は、その他のＥＳ１に関するビデオコンテキスト情報と入力ＥＳサイズをＨＷディテクタ３２のシステムレジスタに設定する。
【０１０１】
ステップＳ４２において、CPU３１は、ＨＷディテクタ３２を起動させて、一時的に停止していたＥＳ１のパターン検出処理を再開し、その後、処理は終了する。すなわち、ある特定のＥＳを優先的に処理したい場合、パターン検出装置２１においては、入力ＥＳ１に対するパターン検出処理が途中で中断され、ＥＳ２に対するパターン検出処理が優先的に処理され、その優先処理が終了した後、ＥＳ１に対するパターン検出処理が中断された位置から再開される。
【０１０２】
このように、パターン検出処理途中に、ＥＳ入力を切り替えたとしても、ビデオコンテキスト情報の退避と再設定を行うことにより、正常に処理を終了することが可能となる。また、かかる手法によって、パターン検出処理の途中で一時的に処理を中断し、他のＥＳのパターン検出処理を行った後に、再度、中断していたパターン検出処理を再開することは可能となるが、入力ＥＳの切り替えの部分で、CPU３１によるビデオコンテキスト情報の退避設定処理によって、ＨＷディテクタ３２によるパターン検出処理を連続的に行うことはできない。
【０１０３】
すなわち、図１６の円で囲っているCPU３１の処理で示すように、ＥＳバッファ３３1からの入力（図中の入力サイズ１）またはＥＳバッファ３３2からの入力（図中の入力サイズ２）に対するパターン検出処理は、ＥＳ入力切り替えで、CPU３１の処理を介してＨＷディテクタ３２を起動しないと実行できない。この両者の処理、つまり、パターン検出処理とCPU処理とを同時並行的に処理できれば、処理能力をさらに向上させることが可能となる。例えば、図１７に示すように、パターン検出装置２１においては、ＥＳバッファ３３1からの入力（図中の入力サイズ１）またはＥＳバッファ３３2からの入力（図中の入力サイズ２）に対するパターン検出処理を行っている最中に、CPU３１の処理を同時並列的に行うことができれば、ＨＷディテクタ３２によって、パターン検出処理を連続的に行うことが可能となる。
【０１０４】
そして、図１６に示したような、パターン検出処理とCPU処理との並列処理ができない理由は、ハードウェアが管理しているビデオコンテキスト情報管理用のレジスタが１つしかなく、その１つのレジスタでReadとWriteのデータを扱っているためである。そこで、本実施の形態においては、ビデオコンテキスト情報退避レジスタを複数有するシステムとすることで、パターン検出処理とCPU処理とを並列に処理できるようにし、パターン検出処理を高速に行う手法についても提案する。
【０１０５】
図１８は、かかる手法を適用したハードウェアのレジスタ構成の例である。
【０１０６】
図１８においては、二重線で囲まれた四角は、システムレジスタを表しており、システム（パターン検出装置２１）は、コンテキスト退避用レジスタ５１と、パターン検出処理設定用レジスタ５２の２つのレジスタを有している。
【０１０７】
コンテキスト退避用レジスタ５１は、ＨＷディテクタ３２の現在の処理結果のビデオコンテキスト情報を格納するためのレジスタである。また、パターン検出処理設定用レジスタ５２は、ＨＷディテクタ３２の次の処理に設定するビデオコンテキスト情報および入力サイズ情報を格納するためのレジスタである。
【０１０８】
具体的には、コンテキスト退避用レジスタ５１は、図１８に示すシステムにおいて唯一存在するレジスタ群である。このコンテキスト退避用レジスタ５１は、パターン検出処理終了時にＨＷディテクタ３２により設定される。コンテキスト退避用レジスタ５１は、ビデオコンテキスト情報に対応するレジスタからなるレジスタ群として構成される。
【０１０９】
パターン検出処理設定用レジスタ５２は、ＨＷディテクタ３２が次に行うパターン検出処理の設定情報であって、ビデオコンテキスト情報と入力ＥＳサイズ情報を設定するためのレジスタ群である。ＨＷディテクタ３２は、CPU３１により設定されたパターン検出処理用コンフィグレーションリスト（Configuration List）５３（以下、略して、コンフィグレーションリスト５３と称する）に積まれた設定情報を読み込み、逐次処理を実行する。
【０１１０】
コンフィグレーションリスト５３は、CPU３１によって、現在ＨＷディテクタ３２により行われているパターン検出処理の次以降に行うべきパターン検出処理に必要な情報がリストとして積まれたものである。ここでリストとして積まれるものは、具体的にはビデオコンテキスト情報と入力ＥＳサイズ情報である。
【０１１１】
通常処理では、コンフィグレーションリスト５３は、キュー（Queue）構成をとっており、FIFO（First In First Out）により処理を実行する。ここで、コンフィグレーションリスト５３がリストとなっている理由は、後述する強制停止（Forced Stop）処理を実行するためである。
【０１１２】
また、コンフィグレーションリスト５３の段数は、入力ＥＳ数から１減算した段数とすることで、パターン検出処理とCPU処理とを同時並行的に処理できる。すなわち、例えば、図１９のタイミングチャートに示すように、ES Buf1、ES Buf2、ES Buf3の３系統からＥＳが入力される場合には、入力ＥＳ数の３から１を減算した段数、すなわち、２段の段数を有するコンフィグレーションリスト５３が必要となる。
【０１１３】
例えば、図１９のES Buf1乃至CPU処理のタイミングチャートの下段に示した、Configuration List Imageは、図１８のコンフィグレーションリスト５３に積まれるリストのイメージを表している。このイメージでは、ＥＳ１乃至ＥＳ３は、対応するＥＳのビデオコンテキスト情報と入力ＥＳサイズからなる設定情報を意味しており、パターン検出処理設定用レジスタ５２によって、リストの上位にある設定情報が順次読み込まれ、ＨＷディテクタ３２によって、読み込まれた設定情報を用いたパターン検出処理が行われる。
【０１１４】
かかるリストについて、図１９のタイミングチャートを参照して、実際の処理の流れに沿って説明すると、次のようになる。すなわち、図１９に示すように、ＨＷディテクタ３２には、ES Buf1，ES Buf2，ES Buf3のそれぞれから、順次、ＥＳ１，ＥＳ２，ＥＳ３が繰り返し入力され、パターン検出処理が施されるが、それらの処理と同時並列的に、CPU３１によって、CPU処理が行われる。図１９に示すように、CPU処理を示す長方形には、ハッチングが施されていない、ES Buf xのパターン検出処理設定処理を意味する四角と、ハッチングが施された、ES Buf xのビデオコンテキスト情報退避処理を意味する四角の２種類がある。ただし、xは自然数である。
【０１１５】
具体的には、ＨＷディテクタ３２に対してＥＳ１が入力される前に、少なくともＥＳ１の設定情報がＨＷディテクタ３２に設定され、コンフィグレーションリスト５３には、次以降に行うパターン検出処理に必要となるＥＳ２とＥＳ３の設定情報が積まれている。ＨＷディテクタ３２は、入力ＥＳ１に対し、ＥＳ１の設定情報を用いてパターン検出処理を施す。その後、ＥＳ１に対する処理が終了すると、ＨＷディテクタ３２は、コンフィグレーションリスト５３の最上位に積まれたＥＳ２の設定情報を読み出し、ＥＳ１に続いて入力されるＥＳ２に対し、ＥＳ２の設定情報を用いてパターン検出処理を施す。このとき、CPU３１は、ＥＳ１のビデオコンテキスト情報の退避処理を行い、続いて、ＥＳ１のパターン検出処理設定処理を行う。これにより、コンフィグレーションリスト５３には、次以降に行うパターン検出処理に必要となるＥＳ３とＥＳ１の設定情報が順に積まれる。
【０１１６】
そして、ＨＷディテクタ３２においては、ＥＳ２に対するパターン検出処理が終了すると、コンフィグレーションリスト５３の最上位に積まれているＥＳ３の設定情報が読み出され、ＥＳ２に続いて入力されるＥＳ３に対し、読み出したＥＳ３の設定情報を用いたパターン検出処理が施される。このとき、CPU３１は、ＥＳ２のビデオコンテキスト情報の退避処理を行い、続いて、ＥＳ２のパターン検出処理設定処理を行う。これにより、コンフィグレーションリスト５３には、次以降に行うパターン検出処理に必要となるＥＳ１とＥＳ２の設定情報が順に積まれる。
【０１１７】
その後、ＨＷディテクタ３２には、ES Buf1，ES Buf2，ES Buf3のそれぞれから、順次、ＥＳ１，ＥＳ２，ＥＳ３が繰り返し入力されるが、上述したように、コンフィグレーションリスト５３から読み出された各ＥＳに応じた設定情報を用いたパターン検出処理が施される。また、かかる処理と同時並列的に、CPU３１によって、ビデオコンテキスト情報の退避処理と、パターン検出処理設定処理が行われ、コンフィグレーションリスト５３には、次以降に行うパターン検出に必要となる設定情報が順次格納される。
【０１１８】
このように、コンフィグレーションリスト５３の段数として、入力ＥＳ数から１減算した段数を設けることで、パターン検出処理とCPU処理とを同時並行的に処理できる。なお、図１９の例では、説明の都合上、３段のコンフィグレーションリスト５３を図示しているが、上述した説明でも明らかなように、実際には、入力ＥＳ数から１減算した２段だけを使用している。
【０１１９】
次に、コンフィグレーションリスト５３を用いたパターン検出処理として、パターン検出処理を一時停止し、その後、復帰する処理（以下、強制終了処理（Forced Stop）と称する）について説明する。強制終了処理において、CPU３１によって管理されるコンフィグレーションリスト５３は、リスト構造を有しており、優先順位の最も高いＥＳ入力に対するパターン検出処理で使用される設定情報がリストの最上位に配置される。
【０１２０】
したがって、ＨＷディテクタ３２に対し、強制終了処理を実行した場合には、リストの最上位に配置された設定情報を用いたパターン検出処理が即座に実行される。一方、強制的に中断させられたほうのパターン検出処理であるが、復帰のための設定情報を再度、コンフィグレーションリスト５３に積むことにより、処理復帰することが可能となる。
【０１２１】
かかる強制終了処理の詳細について、図２０のタイミングチャートを参照して説明する。
【０１２２】
なお、図２０においては、説明を簡略にするために、図１９のタイミングチャートと比べて、入力ＥＳが３系統から２系統に減少しているが、基本的には図１９と対応しており、Configuration List Imageは、図１９において説明した場合と同様の原理によって、入力ＥＳ数から１減算した１段だけを使用したものとなっている。また、CPU処理としては、図１９と同様に、CPU３１によって、２系統分の処理が行われる。
【０１２３】
図２０のタイミングチャートは、ＥＳ１とＥＳ２に対するパターン検出処理が施された後、ＥＳ１に対する２回目のＥＳ１の設定情報を用いたパターン検出処理が施されているとき、強制終了要求が発せられた場合の例を示している。
【０１２４】
このとき、コンフィグレーションリスト５３の最上位には、ＥＳ２の設定情報が配置されており、ＥＳ１に対する２回目のパターン検出処理が行われているときに、強制終了要求に応じた強制終了処理が行われると、ＥＳ１のパターン検出処理が中断される。そして、ＨＷディテクタ３２は、コンフィグレーションリスト５３の最上位に積まれたＥＳ２の設定情報を読み出し、入力されるＥＳ２に対し、ＥＳ２の設定情報を用いたパターン検出処理を施す。
【０１２５】
また、このとき、CPU３１は、ＥＳ１のビデオコンテキスト情報の退避処理を行い、続いて、ＥＳ１のパターン検出処理設定処理を行う。これにより、コンフィグレーションリスト５３には、次以降に行うパターン検出処理に必要となるＥＳ１の設定情報が積まれる。これにより、強制的に中断させられたＥＳ１のパターン検出処理の復帰のための設定情報がコンフィグレーションリスト５３の最上位に配置されたことになる。
【０１２６】
その後、ＥＳ２に対するパターン検出処理が終了すると、ＨＷディテクタ３２は、コンフィグレーションリスト５３の最上位に配置された復帰のためのＥＳ１の設定情報を読み出し、再度入力されるＥＳ１に対し、ＥＳ１の設定情報を用いたパターン検出処理を施す。また、CPU３１によって、ＥＳ２のビデオコンテキスト情報の退避処理と、ＥＳ２のパターン検出処理設定処理が行われることで、コンフィグレーションリスト５３には、ＥＳ２の設定情報が配置される。
【０１２７】
このように、あるＥＳに対しパターン検出処理を行っている最中であっても、強制終了処理によって、優先度の高い別のＥＳに対しパターン検出処理を行うことが可能となるとともに、中断されたほうのパターン検出処理に復帰することも可能となる。
【０１２８】
また、あるＥＳに対するパターン検出処理実行中に、ＨＷディテクタ３２を強制終了し、ＥＳ入力を切り替えることにより、各々のＥＳバッファから入力されるＥＳに対してのパターン検出レートを動的にコントロールすることが可能となる。
【０１２９】
なお、強制終了処理を実行するトリガは、例えば、次の（１）から（４）に示すようなものとなる。
【０１３０】
（１）ＥＳバッファ３３がアンダーフロー気味のときには、他のＥＳの入力に切り替える。
（２）ＥＳバッファ３３内のＡＵ消費が増加したとき（例えば変則再生時など）には、ＥＳバッファ３３を優先処理する。
（３）ＥＳバッファ３３のＡＵ処理がふん詰まり気味のときには、他のＥＳの入力に切り替える。
（４）ＥＳバッファ３３のＡＵ処理が過多気味のときには、他のＥＳの入力に切り替える。
【０１３１】
すなわち、例えば、上記の（１）から（４）の条件に合致するとき、パターン検出装置２１においては、強制終了処理が実行される。
【０１３２】
次に、図２１のフローチャートを参照して、コンフィグレーションリスト５３を用いたパターン検出処理について説明する。
【０１３３】
CPU３１は、ステップＳ５１において、各種の初期設定を行って、ステップＳ５２において、ＨＷディテクタ３２を起動する。
【０１３４】
ステップＳ５３において、CPU３１は、例えばＥＳバッファ３３1がアンダーフローとなっているなどの要因によって、強制終了要求が通知されたか否かを判定する。
【０１３５】
ステップＳ５３において、強制終了要求が通知されていないと判定された場合、ステップＳ５４において、CPU３１は、パターン検出終了割り込みがあるか否かを判定する。
【０１３６】
ステップＳ５４において、パターン検出終了割り込みがないと判定された場合、ステップＳ５３に戻り、ステップＳ５３において、強制終了要求があると判定されるか、あるいは、ステップＳ５４において、パターン検出終了割り込みがあると判定されるまで、ステップＳ５３およびステップＳ５４の処理が繰り返される。すなわち、その間、ＨＷディテクタ３２においては、例えば、入力されるＥＳ１に対し、パターン検出処理が施される。
【０１３７】
一方、ステップＳ５３において、強制終了要求が通知されたと判定された場合、ステップＳ５５において、CPU３１は、ＨＷディテクタ３２を強制停止する。その後、ステップＳ５６において、CPU３１は、例えばＥＳ１の設定情報などの、ＨＷディテクタ３２によりパターン検出処理が施されていたＥＳのビデオコンテキスト情報の退避処理を行う。
【０１３８】
ステップＳ５７において、CPU３１は、パターン検出要求が通知されたか否かを判定し、パターン検出要求が通知されたと判定されるまで、ステップＳ５７の判定処理が繰り返される。ステップＳ５７において、パターン検出要求が通知されたと判定された場合、ステップＳ５８において、CPU３１は、優先処理要求が通知されたか否かを判定する。
【０１３９】
ステップＳ５８において、優先処理要求が通知されたと判定された場合、ステップＳ５９において、CPU３１は、コンフィグレーションリスト５３の最上位に、その優先処理要求が通知されたパターン検出処理要求を設定する。すなわち、例えば、ＥＳ２に対し優先的にパターン検出処理を施す要求が通知された場合には、CPU３１は、ＥＳ２の設定情報を、コンフィグレーションリスト５３の最上位に配置する。
【０１４０】
その後、処理は、ステップＳ５２に戻り、ＨＷディテクタ３２が起動され、例えば、ＨＷディテクタ３２は、優先度の高いＥＳ２に対し、ＥＳ２の設定情報を用いたパターン検出処理を施すことになる。
【０１４１】
一方、ステップＳ５８において、優先処理要求が通知されていないと判定された場合、ステップＳ６０において、CPU３１は、コンフィグレーションリスト５３の最下位にパターン検出処理要求を設定する。その後、処理は、ステップＳ５２に戻り、ＨＷディテクタ３２が起動され、ＨＷディテクタ３２は、入力されるＥＳに対し、コンフィグレーションリスト５３の上位に配置されたＥＳの設定情報を用いて、パターン検出処理を施すことになる。
【０１４２】
また、ステップＳ５４において、パターン検出終了割り込みがあると判定された場合には、パターン検出の割り込み処理が終了したので、CPU３１によって、上記のステップＳ５６乃至ステップＳ６０と同様の処理が実行される。これにより、ＨＷディテクタ３２は、割り込み処理が終了したＥＳの代わりに入力されるＥＳに対し、コンフィグレーションリスト５３の上位に配置された入力ＥＳの設定情報を用いて、パターン検出処理を行う。
【０１４３】
以上のように、パターン検出装置２１においては、コンフィグレーションリスト５３を用いたパターン検出処理が行われることにより、複数ＥＳが入力されるとき、パターン検出処理の途中であっても、現在指定されているＥＳに対するパターン検出処理を一時的に中断し、別のＥＳに対するパターン検出処理を行った後に、一時停止していた処理を復帰させることができる。
【０１４４】
ところで、パターン検出処理を行う場合、検出したいパターン長は対象となるアプリケーションごとに異なる。例えば、MPEG2やH.264のスタートコードを検出する場合には、4バイト長のパターンマッチフィルタを用意しておけばよいが、例えば、MPEG2やH.264のスタートコードに後続するデータを含めてのパターン検出処理や、その他のビデオコーデックのスタートコード相当のビットパターンを検出したい場合には、必ずしも4バイトのフィルタ長を用意しておけばよい、というわけではない。
【０１４５】
本実施の形態において、例えばパターンマッチフィルタ長を12バイトとした場合、ビデオコンテキスト情報のCurrent Input Bufferも12バイト必要になる。すなわち、パターン検出処理を行う際に、Current Input Bufferにデータがすべて溜まったのを以ってパターン検出処理を開始するＨＷディテクタ３２は、例えば、Current Input Bufferが空の状態で処理を開始し、パターン検出処理直後の4バイト長のビットパターンを検出した場合であっても、12バイトの入力を待たなければならない。これは、高速処理が期待されるパターン検出処理において処理速度を低下させる原因となる。
【０１４６】
そこで、本実施の形態においては、パターン検出すべきマッチパターンを、マッチパターン（Match Pattern）と、マッチパターンマスク（Match Pattern Mask）を用いて設定することによって、処理速度の低下を抑制することができるようになる。ここで、マッチパターンは、パターン検出したいビットパターン列を表し、マッチパターンマスクは、パターン検出したいビットパターン列に対するマスクビットを表す情報である。すなわち、かかる情報をビデオコンテキスト情報として設定可能にすることで、可変長サイズのパターン検出処理であっても、冗長な入力を待つことなく処理を行うことが可能となる。
【０１４７】
次に、図２２および図２３を参照して、Current Input Buffer長を12バイト、検出したいビットパターンを、0x000001B3とした場合における、ビデオコンテキスト情報を設定しない場合の処理と、ビデオコンテキスト情報を設定した場合の処理について説明する。
【０１４８】
図２２は、ビデオコンテキスト情報を設定しない場合のパターン検出処理を説明する図である。
【０１４９】
図２２の上段の四角に囲まれたビットのイメージで表すように、図中左から右に向かう方向に入力されるビットストリームにおいて、マッチさせたいパターンは、12バイトのうち、太枠で囲っている後方の4バイトである。
【０１５０】
ビデオコンテキスト情報を設定しない場合、マッチパターンとしての「0x000001B3」は、図２２のMatch Patternに示すように、12バイトの左詰で設定される。それに伴って、図２２のMatch Pattern Maskに示すように、マッチパターンマスクも、12バイトの左詰で設定される。
【０１５１】
このとき、図２２のInput Buffer Imageに示すように、12バイトのサイズを有するCurrent Input Bufferに対し、図中右から左にビット列が順次入力されるとすると、Current Input Bufferから0x000001B3を検出するためには、12バイトの読み込みが必要となる。
【０１５２】
一方、ビデオコンテキスト情報を設定した場合のパターン検出処理について図示すると、図２３のようになる。
【０１５３】
図２３のMatch Patternに示すように、ビデオコンテキスト情報を設定した場合、マッチパターンとしての0x000001B3を右詰で設定し、図２３のMatch Pattern Maskに示すように、マッチパターンマスクも、右詰で、0xFFFFFFFFを設定する。
【０１５４】
さらに、ビデオコンテキスト情報のInput Buffer Imageに、ダミーデータとして、0xFFを左詰に8バイト設定しておく。このダミーデータを設定する理由であるが、あらかじめ、Current Input Bufferにダミーデータを8バイト積んでおくことにより、ＨＷディテクタ３２によって、12バイトのうちのダミーデータの8バイトを除いた4バイトの読み込みが完了した後、即座にパターンマッチング処理が行われるようにするためである。
【０１５５】
換言すれば、このビデオコンテキスト情報を用いることで、実際には、ＨＷディテクタ３２が読み込んでいない、Current Input Buffer Imageを設定することが可能となり、この例の場合、冗長なＥＳ入力8バイトを削減することができる。その結果、処理速度を向上させることができる。
【０１５６】
また、上述した、ビデオコンテキスト情報を用いたパターン検出処理の機能は、図２４に示すように、PESバッファ６１からＥＳバッファ３３への多重化分離処理時においても適用できる。
【０１５７】
すなわち、PESバッファ６１1およびPESバッファ６１2に格納されるヘッダ解析済みのPES（Packetized Elementary Stream）は、ヘッダ部が除去され、ＨＷディテクタ３２において、DMA（Direct Memory Access）によって、ペイロード部がＥＳバッファ３３1およびＥＳバッファ３３2に転送される。このとき、かかるDMAにおいて、パターンマッチング機能およびCPU３１へのビデオコンテキスト情報の退避・再設定処理を付与することにより、複数PESの分離転送処理とパターンマッチング処理とを同時並列的に行うことが可能となる。
【０１５８】
以上のように、本実施の形態においては、ビデオコンテキスト情報の退避・再設定処理により、従来では複数のパターン検出用のハードウェアを具備するシステムでしか実現することのできなかった、複数のＥＳに対するパターン検出処理と、その処理の動的なレートコントロールが実現可能となる。また、入力されるＥＳの数が増加するなどのパターン検出装置に要求される処理機能が変更となった場合であっても、パターン検出用のハードウェアを拡張することなく、ソフトウェアの改修だけで、かかる機能を満たすことが可能となる。
【０１５９】
また、本実施の形態においては、ビデオコンテキスト情報を用いることにより、複数ＥＳ入力時にパターン検出処理の実行途中であっても、現在指定されているＥＳに対する処理を一時的に停止し、別のＥＳに対するパターン検出処理を行った後に、再度、一時停止していた処理を復帰することができる。
【０１６０】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、プログラム記録媒体からインストールされる。
【０１６１】
図２５は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU１１１は、ROM（Read Only Memory）１１２、または記録部１１８に記録されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）１１３には、CPU１１１が実行するプログラムやデータ等が適宜記憶される。これらのCPU１１１、ROM１１２、およびRAM１１３は、バス１１４により相互に接続されている。
【０１６２】
CPU１１１にはまた、バス１１４を介して入出力インターフェース１１５が接続されている。入出力インターフェース１１５には、マイクロホン等よりなる入力部１１６、ディスプレイ、スピーカ等よりなる出力部１１７が接続されている。CPU１１１は、入力部１１６から入力される指令に対応して各種の処理を実行する。そして、CPU１１１は、処理の結果を出力部１１７に出力する。
【０１６３】
入出力インターフェース１１５に接続されている記録部１１８は、例えばハードディスクからなり、CPU１１１が実行するプログラムや各種のデータを記録する。通信部１１９は、インターネットやローカルエリアネットワーク等のネットワークを介して外部の装置と通信する。
【０１６４】
また、通信部１１９を介してプログラムを取得し、記録部１１８に記録してもよい。
【０１６５】
入出力インターフェース１１５に接続されているドライブ１２０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等のリムーバブルメディア１２１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータ等を取得する。取得されたプログラムやデータは、必要に応じて記録部１１８に転送され、記録される。
【０１６６】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図２５に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスク、もしくは半導体メモリ等よりなるパッケージメディアであるリムーバブルメディア１２１、または、プログラムが一時的もしくは永続的に格納されるROM１１２や、記録部１１８を構成するハードディスク等により構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデム等のインターフェースである通信部１１９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０１６７】
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１６８】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１６９】
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１７０】
【図１】従来のビットパターン検出装置の構成を示す図である。
【図２】従来のビットパターン検出装置の構成を示す図である。
【図３】本発明を適用したパターン検出装置の一実施の形態の構成を示すブロック図である。
【図４】MPEG2のＥＳビットストリームのシンタックスの例を示す図である。
【図５】MPEG2のスタートコードの例を示す図である。
【図６】H.264のＥＳビットストリームのシンタックスの例を示す図である。
【図７】H.264のスタートコードの例を示す図である。
【図８】パターン検出装置の構成例を示す図である。
【図９】ビデオコンテキスト情報の例を示す図である。
【図１０】ビデオコンテキスト情報の退避再設定処理の例を説明する図である。
【図１１】入力ＥＳ切り替え時のビデオコンテキスト情報の退避再設定処理を説明するフローチャートである。
【図１２】２系統のＥＳ入力に対するパターン検出処理を示すタイミングチャートである。
【図１３】１系統のＥＳ入力のビデオコンテキスト情報の退避再設定を行わない場合を示すタイミングチャートである。
【図１４】パターン検出処理の強制ストップを示すタイミングチャートである。
【図１５】パターン検出処理途中での強制停止処理を説明するフローチャートである。
【図１６】パターン検出処理とCPU処理との関係を示すタイミングチャートである。
【図１７】パターン検出処理とCPU処理との理想的な関係を示すタイミングチャートである。
【図１８】パターン検出処理における関連情報のデータフローの例を示す図である。
【図１９】複数レジスタを持った場合における複数チャンネルからのＥＳ入力時のパターン検出処理を示すタイミングチャートである。
【図２０】強制終了実行時のパターン検出処理を示すタイミングチャートである。
【図２１】コンフィグレーションリストを用いたパターン検出処理を説明するフローチャートである。
【図２２】ビデオコンテキスト情報を設定しない場合におけるパターン検出処理を説明する図である。
【図２３】ビデオコンテキスト情報を設定する場合におけるパターン検出処理を説明する図である。
【図２４】ビデオコンテキスト情報を利用するパターン検出装置を用いた他の構成の例について説明する図である。
【図２５】本発明が適用される情報処理をソフトウェアで実行するコンピュータの構成例を示すブロック図である。
【符号の説明】
【０１７１】
２１  パターン検出装置，  ３１  CPU，  ３２  ＨＷディテクタ，  ３３  ＥＳバッファ，  ４１  スタートコードディテクタ，  ４２  内部SRAM，  ４３  メモリリードI/F，  ４４  VSDブロックレジスタ，  ５１  コンテキスト退避用レジスタ，  ５２  パターン検出処理設定用レジスタ，  ５３  コンフィグレーションリスト，  ６１  PESバッファ
【図１】
0005012626.tif 000002
【図２】
0005012626.tif 000003
【図３】
0005012626.tif 000004
【図４】
0005012626.tif 000005
【図５】
0005012626.tif 000006
【図６】
0005012626.tif 000007
【図７】
0005012626.tif 000008
【図８】
0005012626.tif 000009
【図９】
0005012626.tif 000010
【図１０】
0005012626.tif 000011
【図１１】
0005012626.tif 000012
【図１２】
0005012626.tif 000013
【図１３】
0005012626.tif 000014
【図１４】
0005012626.tif 000015
【図１５】
0005012626.tif 000016
【図１６】
0005012626.tif 000017
【図１７】
0005012626.tif 000018
【図１８】
0005012626.tif 000019
【図１９】
0005012626.tif 000020
【図２０】
0005012626.tif 000021
【図２１】
0005012626.tif 000022
【図２２】
0005012626.tif 000023
【図２３】
0005012626.tif 000024
【図２４】
0005012626.tif 000025
【図２５】
0005012626.tif 000026