(57)【要約】【課題】デコーダの処理効率を向上させるスタートコード検出装置及びスタートコード検出方法を提供する。【解決手段】スタートコード検出装置１０２は、入力されたビットストリームＩＮＤの中の０値を検出する０値検出部１０２−１と、前記０値検出部１０２−１の検出結果に従って、ＰＥＳスタートコード以外の０値の連続数をカウントするカウンタ１０２−２と、前記カウンタ１０２−２の値を保持するレジスタ１０２−３と、前記レジスタ１０２−３に保持されたカウント値ＶＯＣに従って、前記ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断する判断部１２０−４と、を備える。【選択図】図２
2009111551.tif 000002
【特許請求の範囲】
【請求項１】
入力されたビットストリームの中の０値を検出する０値検出部と、
前記０値検出部の検出結果に従って、ＰＥＳスタートコード以外の０値の連続数をカウントするカウンタと、
前記カウンタの値を保持するレジスタと、
前記レジスタに保持されたカウント値に従って、前記ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断する判断部と、を備えることを特徴とするスタートコード検出装置。
【請求項２】
前記カウンタは、前記０値検出部によって検出された０値の連続数から２を減算して前記ＰＥＳスタートコード以外の０値の連続数としてカウントし、
前記判断部は、前記レジスタに保持されたカウント値が２以上である場合には分断されていると判断し、２未満である場合には分断されていないと判断する請求項１に記載のスタートコード検出装置。
【請求項３】
前記カウンタは、前記０値検出部によって前記ＰＥＳスタートコードの直後に０値が検出された場合には、前記レジスタに保持されたカウント値に１を加算する請求項２に記載のスタートコード検出装置。
【請求項４】
前記レジスタがオーバーフロー状態になった場合に、割り込み信号を生成する割込制御信号生成部をさらに備える請求項１乃至３の何れか１項に記載のスタートコード検出装置。
【請求項５】
入力されたビットストリームの中の０値を検出し、
検出結果に従って、ＰＥＳスタートコード以外の０値の連続数をカウントし、
カウント値をレジスタに保持し、
前記レジスタに保持されたカウント値に従って、前記ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断することを特徴とするスタートコード検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スタートコード検出装置及びスタートコード検出方法に関し、特に、ＰＥＳビットストリームの解析中に連続する０値の並びに従ってスタートコードを検出するスタートコード検出装置及びスタートコード検出方法に関する。
【背景技術】
【０００２】
Ｈ．２６４／ＶＣ−１のデコード処理では、パケット化されたビデオやオーディオのデータのストリーム（以下「ＰＥＳ（Ｐａｃｋｅｔｉｚｅｄ  Ｅｌｅｍｅｎｔａｒｙ    Ｓｔｒｅａｍ）」という）からＥＳ（Ｅｌｅｍｅｎｔａｒｙ  Ｓｔｒｅａｍ）を抽出するために、ＰＥＳビットストリームからＰＥＳスタートコードとＮＡＬ（Ｎｅｔｗｏｒｋ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）ユニットスタートコードを検出する必要がある。
【０００３】
例えば、ＰＥＳスタートコードは、Ｈ２６４では“００＿００＿０１＿Ｅｘ”というビット列であり、ＶＣ−１では“００＿００＿０１＿ＦＤ”というビット列である。例えば、ＮＡＬユニットスタートコードは、Ｈ２６４では“００＿００＿００＿０１＿ｘｘ”又は“００＿００＿０１＿ｘｘ”というビット列であり、ＶＣ−１では“００＿００＿０１＿ｘｘ”というビット列である。
【０００４】
しかし、ＰＥＳストリームのＥＳスタートコードがＰＥＳスタートコードで分断されている場合には、ＰＥＳスタートコードのビット列を検出するだけでは足りず、検出されたビット列がＰＥＳスタートコードであるか否かを確認する必要がある。
【０００５】
また、ＰＥＳビットストリームでは、ＰＥＳスタートコードのビット列、ＰＥＳヘッダのビット列、ＮＡＬユニットスタートコードのビット列及びＥＳのビット列が連続し、ストリームの終端に０シーケンス（３つ以上の０値の並び）が付加されるため、ＮＡＬユニットスタートコードやＰＥＳスタートコードと０シーケンスとが混在する。
【０００６】
ここで、０シーケンスは、ＮＡＬユニットスタートコード“００＿００＿０１＿ｘｘ”の前方に付加される任意個数の０値ビット列であり、デコード処理では無視される画像に関係しないビット列である。従って、デコード処理では、０シーケンスを除去する必要がある。
【０００７】
特許文献１には、ビットストリームからＰＥＳスタートコード及びＮＡＬユニットスタートコードを検出するためのハードウェアを備えたデコーダが開示されている。
【０００８】
しかし、特許文献１では、このハードウェアがＰＥＳスタートコードとＮＡＬユニットスタートコードを同時に検出する場合に０シーケンスが検出されないので、その前方に０値の並びが何バイト存在するのかも調べることによって、ＰＥＳスタートコードとＮＡＬユニットスタートコードを０シーケンスと区別していた。その結果、デコーダの処理効率が低下するという問題があった。
【０００９】
また、特許文献１は０シーケンスを直接検出することができないので、ファームウェアによる０シーケンスの検出を行う必要があり、デコーダの処理効率が低下するという問題があった。
【特許文献１】特開２００４−２６６３７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、デコーダの処理効率を向上させるスタートコード検出装置及びスタートコード検出方法を提供することである。
【課題を解決するための手段】
【００１１】
本発明の第１態様によれば、入力されたビットストリームの中の０値を検出する０値検出部と、前記０値検出部の検出結果に従って、ＰＥＳスタートコード以外の０値の連続数をカウントするカウンタと、前記カウンタの値を保持するレジスタと、前記レジスタに保持されたカウント値に従って、前記ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断する判断部と、を備えることを特徴とするスタートコード検出装置が提供される。
【００１２】
本発明の第２態様によれば、入力されたビットストリームの中の０値を検出し、検出結果に従って、ＰＥＳスタートコード以外の０値の連続数をカウントし、カウント値をレジスタに保持し、前記レジスタに保持されたカウント値に従って、前記ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断することを特徴とするスタートコード検出方法が提供される。
【発明の効果】
【００１３】
本発明によれば、デコーダの処理効率を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施例について図面を参照して説明する。なお、以下の実施例は、本発明の実施の一形態であって、本発明の範囲を限定するものではない。
【実施例１】
【００１５】
はじめに、本発明の実施例１について説明する。
【００１６】
図１は、本発明の実施例１に係るパターン検出装置１００の構成を示すブロック図である。
【００１７】
本発明の実施例１に係るパターン検出装置１００は、比較部１０１、スタートコード検出装置１０２、パターン検出部１０３及び検出位置登録部１０４を備え、メモリ１１０、プロセッサ１２０及び割込制御部１３０に接続されている。
【００１８】
ＲＤＰは読み出しポインタであり、ＩＮＤは入力データ（例えば、Ｈ．２６４／ＶＣ−１方式の動画像又は音声の符号化データ（ビットストリーム））であり、ＨＩＴはヒット信号であり、ＣＴＬは制御信号であり、ＶＯＣはカウント値であり、ＰＡＴは検出パターンであり、ＩＮＴは割込制御信号であり、ＨＥＢは保持イネーブル信号であり、ＣＣＳはカウント値制御信号であり、ＡＤＤは読み出しアドレスであり、ＩＲＱは割込要求信号である。
【００１９】
比較部１０１は、図示されない比較器、エントリーパターン保持部及びフラグ保持部を有する。
【００２０】
比較器は、メモリ１１０から入力データＩＮＤを読み出し、入力データＩＮＤとエントリーパターン保持部から出力されるエントリーパターンとを比較し、当該比較結果に応じてヒット信号ＨＩＴをパターン検出部１０３に出力する。
【００２１】
エントリーパターン保持部は、外部から入力されるエントリーパターンを記憶する。エントリーパターン保持部は、記憶されたエントリーパターンを読み出し、比較器に出力する。
【００２２】
フラグ保持部は、比較器の比較結果及びフラグ信号に応じて、セット信号及びクリア信号を含む制御信号ＣＴＬをパターン検出部１０３に出力する。
【００２３】
なお、パターン検出装置１００は、互いに同じ構成を有する複数の比較部１０１を備えても良い。この場合には、各比較部１０１がそれぞれヒット信号ＨＩＴ及び制御信号ＣＴＬをパターン検出部１０３に出力する。
【００２４】
スタートコード検出装置１０２は、メモリ１１０から入力データＩＮＤを読み出し、入力データＩＮＤのビットストリームのＥＳ（Ｅｌｅｍｅｎｔａｒｙ    Ｓｔｒｅａｍ）スタートコードを検出し、検出パターンＰＡＴをパターン検出部１０３に出力する。スタートコード検出装置１０２は、後述のレジスタ１０２−３に保持されたカウント値ＶＯＣをプロセッサ１２０に出力する。スタートコード検出装置１０２は、後述のレジスタ１０２−３がオーバーフローした場合には、割込制御信号ＩＮＴを割込制御部１３０に出力する。
【００２５】
パターン検出部１０３は、スタートコード検出装置１０２から出力された検出パターンＰＡＴをステータスレジスタに保持し、保持された検出パターンＰＡＴをプロセッサ１２０に出力する。パターン検出部１０３は、比較部１０１から出力されたヒット信号ＨＩＴ及び制御信号ＣＴＬに応じて、保持イネーブル信号ＨＥＢを生成して検出位置登録部１０４に出力する。パターン検出部１０３は、カウント値制御信号ＣＣＳを生成してスタートコード検出装置１０２に出力する。例えば、カウント値制御信号ＣＣＳは、ＰＥＳスタートコードの場合にはカウント値ＶＯＣから２を引くための指示信号（イネーブル信号）“０ｘ１”であり、ＥＳスタートコードの場合には指示信号（ディセーブル信号）“０ｘ０”である。
【００２６】
検出位置登録部１０４は、複数のアドレスレジスタを有する。検出位置登録部１０４は、パターン検出部１０３から出力された保持イネーブル信号ＨＥＢをモニタし、当該保持イネーブル信号ＨＥＢがアクティブ状態のハイレベルにあるときに、メモリ１１０から出力される読み出しポインタＲＤＰを順次複数のアドレスレジスタに記憶する。検出位置登録部１０４は、アドレスレジスタに記憶された読み出しポインタＲＤＰに従って、読み出しアドレスＡＤＤをプロセッサ１２０に出力する。
【００２７】
メモリ１１０は、入力データＩＮＤを記憶し、パターン検出装置１００に入力データＩＮＤ及び読み出しポインタＲＤＰを出力する。
【００２８】
プロセッサ１２０は、割込制御部１３０から割込要求信号ＩＲＱを受け取ると、パターン検出部１０３のステータスレジスタに保持された検出パターンＰＡＴを読み出す。
【００２９】
プロセッサ１２０は、読み出された検出パターンＰＡＴがＰＥＳスタートコードである場合には、検出位置登録部１０４から検出位置（ＰＥＳスタートコードの位置）が示された読み出しアドレスＡＤＤを読み出し、読み出しアドレスＡＤＤに従ってＰＥＳヘッダを解析し、ＰＥＳヘッダ長分を読み飛ばす。次に、プロセッサ１２０は、メモリ１１０の先頭アドレスをパターン検出部１０３にセットしてパターン検出部１０３を起動させる。
【００３０】
一方、プロセッサ１２０は、読み出された検出パターンＰＡＴがＥＳスタートコードである場合には、後述のレジスタ１０２−３から０値の個数を示すカウント値ＶＯＣを読み出し、カウント値ＶＯＣに従ってＥＳスタートコード（Ｈ．２６４の場合には“００＿００＿００＿０１＿ｘｘ”又は“００＿００＿０１＿ｘｘ”）を判断し、０シーケンスの有無を決定する。次に、プロセッサ１２０は、メモリ１１０の先頭アドレスをパターン検出部１０３にセットしてパターン検出部１０３を起動させる。
【００３１】
割込制御部１３０は、スタートコード検出装置１０２から割込制御信号ＩＮＴが出力されなかった場合にはプロセッサ１２０に割込要求信号ＩＲＱを出力し、スタートコード検出装置１０２から割込制御信号ＩＮＴが出力された場合には割込要求信号ＩＲＱは出力しない。
【００３２】
図２は、本発明の実施例１に係るスタートコード検出装置１０２の構成を示すブロック図である。
【００３３】
本発明の実施例１に係るスタートコード検出装置１０２は、０値検出部１０２−１、カウンタ１０２−２、レジスタ１０２−３、判断部１０２−４、オーバーフロー検出部１０２−５及び割込制御信号生成部１０２−６を備えている。
【００３４】
０値検出部１０２−１は、メモリ１１０から読み出された入力データＩＮＤの中の０値（“００”）を検出する。
【００３５】
カウンタ１０２−２は、０値検出部１０２−１によって０値が検出された場合に、カウンタの値をインクリメントする。
【００３６】
レジスタ１０２―３は、カウンタ１０２−２の値をカウント値ＶＯＣとして保持し、カウント値ＶＯＣをプロセッサ１２０に出力する０カウンタレジスタである。
【００３７】
判断部１０２−４は、レジスタ１０２−３に保持されたカウント値ＶＯＣに従って、ＰＥＳ（Ｐａｃｋｅｔｉｚｅｄ  Ｅｌｅｍｅｎｔａｒｙ  Ｓｔｒｅａｍ）スタートコードによってＥＳスタートコードが分断されているか否かを判断し、判断結果を検出パターンＰＡＴとしてパターン検出部１０３に出力する。
【００３８】
オーバーフロー検出部１０２−５は、レジスタ１０２−３の容量がオーバーフローになった場合に、オーバーフローを検出する。
【００３９】
割込制御信号生成部１０２−６は、オーバーフロー検出部１０２−５によってレジスタ１０２−３のオーバーフローが検出された場合に、割込制御信号ＩＮＴを生成し、割込制御信号ＩＮＴを割込制御部１３０に出力する。
【００４０】
図３は、本発明の実施例１に係るスタートコード検出処理におけるスタートコード検出装置１０２の処理手順を示すフローチャートである。
【００４１】
はじめに、０値検出部１０２−１によって０値が検出された場合には（Ｓ３０１−ＹＥＳ）、カウンタ１０２−２はカウンタの値に１を加算し、レジスタ１０２−３はカウント値ＶＯＣを記憶する（Ｓ３０２）。
【００４２】
次に、レジスタ１０２−３に記憶されたカウント値ＶＯＣが２以上である場合であって（Ｓ３０３−ＹＥＳ）、Ｓ３０１において検出された０値に続く２バイトのビット列が“０１＿Ｅｘ”であり、ＰＥＳスタートコードが検出された場合には（Ｓ３０４−ＹＥＳ）、カウンタ１０２−２は、レジスタ１０２−３に記憶されたカウント値ＶＯＣから２を減算する（Ｓ３０５）。
【００４３】
次に、スタートコード検出装置１００は、パターン検出部１０３が起動される（プロセッサ１２０によってパターン検出部１０３に先頭アドレスがセットされる）まで待機する（Ｓ３０７−ＮＯ）。
【００４４】
一方、Ｓ３０１において０値が検出されなかった場合には（Ｓ３０１−ＮＯ）、カウンタ１０２−２は、レジスタ１０２−３に記憶されたカウント値ＶＯＣをリセットし（Ｓ３０６）、Ｓ３０１に戻る。
【００４５】
Ｓ３０４においてＰＥＳスタートコードが検出されなかった場合（Ｓ３０４−ＮＯ）、Ｓ３０７においてパターン検出部１０３が起動された場合（Ｓ３０７−ＹＥＳ）であり且つＳ３０１において検出された０値に続く２バイトのビット列が“０１＿ＸＸ”であり、ＥＳスタートコードが検出された場合には（Ｓ３０８−ＹＥＳ）、判断部１０２−４は、レジスタ１０２−３に記憶されたカウント値ＶＯＣが２以上であることを確認し、レジスタ１０２−３に保持されたカウント値ＶＯＣに従って、ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断する（Ｓ３０９）。
【００４６】
Ｓ３０９が終了した場合には、本発明の実施例１に係るスタートコード検出処理が終了する。
【００４７】
図４，５は、入力データＩＮＤのデータ構造の一例を示す概略図である。
【００４８】
図４は、ＥＳスタートコードが、ＰＥＳスタートコード“００＿００＿０１＿Ｅｘ”によって第１部分“００”と第２部分“００＿０１＿Ｅｘ”に分断されている場合の入力データＩＮＤのデータ構造を示している。
【００４９】
はじめに、ＥＳスタートコードの第１部分以前の０シーケンスの０値が順次検出され、レジスタ１０２−３に記憶されたカウント値ＶＯＣが４となる（図３のＳ３０１−ＹＥＳ，Ｓ３０３−ＹＥＳ，Ｓ３０４−ＮＯ，Ｓ３０７−ＹＥＳ，Ｓ３０８−ＮＯ）。
【００５０】
次に、ＥＳスタートコードの第１部分及びＰＥＳスタートコードの０値が順次検出され（Ｓ３０１−ＹＥＳ）、レジスタ１０２−３に記憶されたカウント値ＶＯＣに３が加算される（Ｓ３０２）。これによって、レジスタ１０２−３に記憶されたカウント値ＶＯＣは７となる。
【００５１】
次に、レジスタ１０２−３に記憶されたカウント値ＶＯＣが２以上であり（Ｓ３０３−ＹＥＳ）、最後に検出された０値に続く２バイトのビット列が“０１＿Ｅｘ”であるのでＰＥＳスタートコードが検出され（Ｓ３０４−ＹＥＳ）、レジスタ１０２−３に記憶されたカウント値ＶＯＣから２が減算される（Ｓ３０５）。これによって、レジスタ１０２−３に記憶されたカウント値ＶＯＣは５となる。
【００５２】
次に、ＰＥＳスタートコードに続くＰＥＳヘッダが読み飛ばされ、ＰＥＳヘッダに続くＥＳスタートコードの第２部分の０値が検出され（Ｓ３０１−ＹＥＳ）、レジスタ１０２−３に記憶されたカウント値ＶＯＣに１が加算される（Ｓ３０２）。これによってレジスタ１０２−３に記憶されたカウント値ＶＯＣは６となる。
【００５３】
次に、レジスタ１０２−３に記憶されたカウント値ＶＯＣが２以上であり（Ｓ３０３−ＹＥＳ）、最後に検出された０値に続く２バイトのビット列が“０１＿ＸＸ”であるので、ＥＳスタートコードが検出され（Ｓ３０８−ＹＥＳ）、ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断する（Ｓ３０９）。
【００５４】
入力データＩＮＤのデータ構造が図４に示されるようなデータ構造である場合には、スタートコード検出装置１０２は、ＰＥＳスタートコードによってＥＳスタートコードが分断されていることを示す検出パターンＰＡＴをパターン検出部１０３に出力する。
【００５５】
図５は、ＥＳスタートコードが、ＰＥＳスタートコード“００＿００＿０１＿Ｅｘ”によって第１部分“００＿００”と第２部分“０１＿Ｅｘ”に分断されている場合の入力データＩＮＤのデータ構造を示している。
【００５６】
はじめに、ＥＳスタートコードの第１部分以前の０シーケンスの０値が順次検出され、レジスタ１０２−３に記憶されたカウント値ＶＯＣが４となる（図３のＳ３０１−ＹＥＳ，Ｓ３０３−ＹＥＳ，Ｓ３０４−ＮＯ，Ｓ３０７−ＹＥＳ，Ｓ３０８−ＮＯ）。
【００５７】
次に、ＥＳスタートコードの第１部分及びＰＥＳスタートコードの０値が順次検出され（Ｓ３０１−ＹＥＳ）、レジスタ１０２−３に記憶されたカウント値ＶＯＣに４が加算される（Ｓ３０２）。これによって、レジスタ１０２−３に記憶されたカウント値ＶＯＣは８となる。
【００５８】
次に、レジスタ１０２−３に記憶されたカウント値ＶＯＣが２以上であり（Ｓ３０３−ＹＥＳ）、最後に検出された０値に続く２バイトのビット列が“０１＿Ｅｘ”であるのでＰＥＳスタートコードが検出され（Ｓ３０４−ＹＥＳ）、レジスタ１０２−３に記憶されたカウント値ＶＯＣから２が減算される（Ｓ３０５）。これによって、レジスタ１０２−３に記憶されたカウント値ＶＯＣは６となる。
【００５９】
次に、ＰＥＳスタートコードに続くＰＥＳヘッダが読み飛ばされる。ここで、レジスタ１０２−３に記憶されたカウント値ＶＯＣが２以上であり（Ｓ３０３−ＹＥＳ）、最後に検出された０値に続くＰＥＳヘッダを除く２バイトのビット列が“０１＿ＸＸ”であるので、ＥＳスタートコードが検出され（Ｓ３０８−ＹＥＳ）、ＰＥＳスタートコードによってＥＳスタートコードが分断されているか否かを判断する（Ｓ３０９）。
【００６０】
入力データＩＮＤのデータ構造が図５に示されるようなデータ構造である場合には、スタートコード検出装置１０２は、ＰＥＳスタートコードによってＥＳスタートコードが分断されていることを示す検出パターンＰＡＴをパターン検出部１０３に出力する。
【００６１】
本発明の実施例１によれば、入力データＩＮＤの０値の連続数及び所定の２バイトのビット列に従って、０シーケンス、ＥＳスタートコード及びＰＥＳスタートコードを判断するスタートコード検出部１０２を備えているので、ＰＥＳスタートコードとＮＡＬユニットスタートコードを０シーケンスと区別するための処理を容易に行うことができ、ひいては、デコーダの処理効率を向上させることができる。
【００６２】
また、本発明の実施例１によれば、０シーケンスを直接検出するスタートコード検出部１０２を備えているので、ハードウェアレベルで０シーケンスを検出することができ、ファームウェアによる０シーケンスの検出を行う必要がなく、デコーダの処理効率を向上させることができる。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施例１に係るパターン検出装置１００の構成を示すブロック図である。
【図２】本発明の実施例１に係るスタートコード検出装置１０２の構成を示すブロック図である。
【図３】本発明の実施例１に係るスタートコード検出処理におけるスタートコード検出装置１０２の処理手順を示すフローチャートである。
【図４】入力データＩＮＤのデータ構造の一例を示す概略図である。
【図５】入力データＩＮＤのデータ構造の一例を示す概略図である。
【符号の説明】
【００６４】
１００  パターン検出装置
１０１  比較部
１０２  スタートコード検出装置
１０２−１  ０値検出部
１０２−２  カウンタ
１０２−３  レジスタ
１０２−４  判断部
１０２−５  オーバーフロー検出部
１０２−６  割込制御信号生成部
１０３  パターン検出部
１０４  検出位置登録部
１１０  メモリ
１２０  プロセッサ
１３０  割込制御部
【図１】
2009111551.tif 000003
【図２】
2009111551.tif 000004
【図３】
2009111551.tif 000005
【図４】
2009111551.tif 000006
【図５】
2009111551.tif 000007