(57)【要約】【課題】従来のビットストリームの解析方法では、正常なビットストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後に存在するようなビットストリームに対しては無駄な処理時間が発生し、解析効率が落ちていた。【解決手段】スタートコードプリフィックス検索開始前に検索開始位置の直後にスタートコードが存在するか確認する手段を有し、スタートコードが存在する場合にはスタートコードプリフィックスの検索を行わずにスタートコードの種類を判断する。スタートコードプリフィックス検索開始位置の直後にスタートコードが存在しない場合にはスタートコードプリフィックスを検索することによってスタートコードを検出することにより無駄な処理を省き、解析効率を向上させる。【選択図】図１６
2008205681.tif 000002
【特許請求の範囲】
【請求項１】
ディジタル符号化と多重化されたビットストリームを解析するビットストリーム解析装置において、
前記ビットストリームを入力しバッファリングする入力バッファと、
前記入力バッファ内の前記ビットストリームからスタートコードを検出するスタートコード検出手段と、
前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から後続のデータがスタートコードであるかの確認を行うスタートコード確認手段と、
前記ビットストリームを解析して得られる情報や、前記ビットストリームの解析状態によって、前記スタートコード検出手段と前記スタートコード確認手段のどちらに要求を出すかを判断し、前記スタートコード検出手段または前記スタートコード確認手段から通知を受け取り、前記ビットストリームの解析を行うビットストリーム解析手段と、
前記ビットストリーム解析手段の解析結果に従い出力手段への前記ビットストリームの転送を行うビットストリーム転送手段を有し、
前記スタートコード検出手段は、解析が必要なスタートコードを検出した場合はスタートコードを検出したことを前記ビットストリーム解析手段に通知し、
前記スタートコード確認手段は、前記ビットストリーム解析手段より確認要求されたスタートコードを検出した場合は、前記ビットストリーム解析手段に確認要求があったスタートコードを検出したことを通知し、
前記ビットストリーム解析手段は、確認要求したスタートコードを前記スタートコード確認手段が検出した場合に、スタートコードの検索を開始せずに前記ビットストリームの解析を行うことを特徴とするビットストリーム解析装置。
【請求項２】
請求項１記載のビットストリーム解析装置において、
前記スタートコード検出手段は、解析が不要なスタートコードを検出した場合はスタートコードを検出したことを前記ビットストリーム解析手段に通知せず、前記ビットストリーム転送手段により出力手段へのビットストリームの転送を行い、スタートコードの検索を再開することを特徴とするビットストリーム解析装置。
【請求項３】
請求項１記載のビットストリーム解析装置において、
前記スタートコード確認手段は、前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から確認した後続のデータに対して前記ビットストリーム解析手段より確認要求されたスタートコードを検出しなかった場合は、前記ビットストリーム解析手段に確認要求があったスタートコードを検出しなかったことを通知することを特徴とするビットストリーム解析装置。
【請求項４】
請求項３記載のビットストリーム解析装置において、
前記ビットストリーム解析手段は、前記スタートコード確認手段により前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から確認した後続のデータが前記ビットストリーム解析手段より確認要求されたスタートコードでない場合には、前記ビットストリームからスタートコードを検索することによってスタートコードを検出することを特徴とするビットストリーム解析装置。
【請求項５】
請求項１記載のビットストリーム解析装置において、
前記ビットストリームからスタートコードを検索することによってＰＥＳヘッダを検出することを特徴とするビットストリーム解析装置。
【請求項６】
ディジタル符号化と多重化されたビットストリームを解析するビットストリーム解析方法において、
前記ビットストリームを入力しバッファリングする入力バッファと、
前記入力バッファ内の前記ビットストリームからスタートコードを検出するスタートコード検出ステップと、
前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から後続のデータがスタートコードであるかの確認を行うスタートコード確認ステップと、
前記ビットストリームを解析して得られる情報や、前記ビットストリームの解析状態によって、前記スタートコード検出ステップと前記スタートコード確認ステップのどちらに要求を出すかを判断し、前記スタートコード検出ステップまたは前記スタートコード確認ステップから通知を受け取り、前記ビットストリームの解析を行うビットストリーム解析ステップと、
前記ビットストリーム解析ステップの解析結果に従い出力ステップへの前記ビットストリームの転送を行うビットストリーム転送ステップを有し、
前記スタートコード検出手段は、解析が必要なスタートコードを検出した場合はスタートコードを検出したことを前記ビットストリーム解析ステップに通知し、
前記スタートコード確認ステップは、前記ビットストリーム解析ステップより確認要求されたスタートコードを検出した場合は、前記ビットストリーム解析ステップに確認要求があったスタートコードを検出したことを通知し、
前記ビットストリーム解析ステップは、確認要求したスタートコードを前記スタートコード確認ステップが検出した場合に、スタートコードの検索を開始せずに前記ビットストリームの解析を行うことを特徴とするビットストリーム解析方法。
【請求項７】
コンピュータを、
ディジタル符号化と多重化されたビットストリームを入力しバッファリングする入力バッファと、
前記入力バッファ内の前記ビットストリームからスタートコードを検出するスタートコード検出手段と、
前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から後続のデータがスタートコードであるかの確認を行うスタートコード確認手段と、
前記ビットストリームを解析して得られる情報や、前記ビットストリームの解析状態によって、前記スタートコード検出手段と前記スタートコード確認手段のどちらに要求を出すかを判断し、前記スタートコード検出手段または前記スタートコード確認手段から通知を受け取り、前記ビットストリームの解析を行うビットストリーム解析手段と、
前記ビットストリーム解析手段の解析結果に従い出力手段への前記ビットストリームの転送を行うビットストリーム転送手段を有し、
前記スタートコード検出手段は、解析が必要なスタートコードを検出した場合はスタートコードを検出したことを前記ビットストリーム解析手段に通知し、
前記スタートコード確認手段は、前記ビットストリーム解析手段より確認要求されたスタートコードを検出した場合は、前記ビットストリーム解析手段に確認要求があったスタートコードを検出したことを通知し、
前記ビットストリーム解析手段は、確認要求したスタートコードを前記スタートコード確認手段が検出した場合に、スタートコードの検索を開始せずに前記ビットストリームの解析を行うことを特徴として機能させるためのビットストリーム解析プログラム。
【請求項８】
請求項７記載のビットストリーム解析プログラムにおいて、
前記スタートコード確認手段が、前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から確認した後続のデータに対して前記ビットストリーム解析手段に確認要求があったスタートコードを検出したことを通知した場合に、ビットストリーム解析プログラムのタスクからビットストリーム解析プログラム以外のタスクへタスク切り替えを行わないことを特徴とするビットストリーム解析プログラム。
【請求項９】
請求項７記載のビットストリーム解析プログラムにおいて、
請求項７記載のプログラムを実行頻度が高い処理とし、
前記スタートコード確認手段により前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から確認した後続のデータが前記ビットストリーム解析手段より確認要求されたスタートコードでない場合には、前記ビットストリームからスタートコードを検索することによってスタートコードを検出するプログラムを実行頻度の低い処理として、
実行頻度が高い処理のプログラムを集積回路の内蔵メモリに配置し、
実行頻度の低い処理のプログラムを集積回路の外部メモリに配置する構成を特徴とするビットストリーム解析プログラム。
【請求項１０】
ディジタル符号化と多重化されたビットストリームを解析するビットストリーム解析装置の集積回路において、
前記ビットストリームを入力しバッファリングする入力バッファと、
前記入力バッファ内の前記ビットストリームからスタートコードを検出するスタートコード検出手段と、
前記入力バッファ内の前記ビットストリームに対しスタートコードの検索を開始する位置から後続のデータがスタートコードであるかの確認を行うスタートコード確認手段と、
前記ビットストリームを解析して得られる情報や、前記ビットストリームの解析状態によって、前記スタートコード検出手段と前記スタートコード確認手段のどちらに要求を出すかを判断し、前記スタートコード検出手段または前記スタートコード確認手段から通知を受け取り、前記ビットストリームの解析を行うビットストリーム解析手段と、
前記ビットストリーム解析手段の解析結果に従い出力手段への前記ビットストリームの転送を行うビットストリーム転送手段を有し、
前記スタートコード検出手段は、解析が必要なスタートコードを検出した場合はスタートコードを検出したことを前記ビットストリーム解析手段に通知し、
前記スタートコード確認手段は、前記ビットストリーム解析手段より確認要求されたスタートコードを検出した場合は、前記ビットストリーム解析手段に確認要求があったスタートコードを検出したことを通知し、
前記ビットストリーム解析手段は、確認要求したスタートコードを前記スタートコード確認手段が検出した場合に、スタートコードの検索を開始せずに前記ビットストリームの解析を行うことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、あるデータのまとまりの先頭をスタートコードにより判断できる構造のビットストリームにおいて、ビットストリーム中のスタートコードを検出してビットストリームの解析を行い、データ転送を行うビットストリーム解析装置、方法、プログラムおよび集積回路に関する。
【背景技術】
【０００２】
近年、テレビ、ＤＶＤに見られるように、ディジタル符号化と多重化したメディアが急速に普及してきている。
【０００３】
前記ディジタルメディアでは、映像信号についてはＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）規格で規定された符号化方式が一般的には採用されており、例えば映像にはＭＰＥＧ−２  ＶｉｄｅｏやＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４の規格が採用されている。音声についてはＭＰＥＧ規格以外の符号化方式が採用されることもある。映像、音声の符号化データの多重化はＭＰＥＧ−２  Ｓｙｓｔｅｍ規格が採用されている。
【０００４】
ＭＰＥＧ規格のビットストリームは、階層構造によってデータのまとまりを構成している。また、１つの階層において複数種類のデータが含まれる場合もある。符号化と多重化されたビットストリームの各階層またはデータの先頭には、その先頭を判断できるようにするためにスタートコードと呼ばれる特定のビットパターンが挿入されている。
【０００５】
スタートコードにはデータ中にユニークにしか存在しないビットパターンが採用されている。ビットストリーム中には、スタートコード以外にこのスタートコードと同じビットパターンとなる部分はなく、階層またはデータの種類を明確に判断できるようになっている。
【０００６】
ＭＰＥＧ−２  Ｖｉｄｅｏ規格のスタートコードを図１に、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格のスタートコードを図２に、ＭＰＥＧ−２  Ｓｙｓｔｅｍ規格のスタートコードを図３に示す。
【０００７】
ＭＰＥＧ規格では、先頭から２３ビットが０、次の１ビットが１であるスタートコードプリフィックスというパターン（１０１、２０１、３０１）とその後に続くスタートコードの種類の情報（１０２、２０２、３０２）でビットストリームの階層またはデータの種類を判断できる。
【０００８】
ＭＰＥＧ規格で符号化された映像は１画面単位で復号化される。そのため、ビットストリームにおいて１画面の先頭がわからなければ映像の再生ができない。この１画面の映像データの先頭は、ＭＰＥＧ−２  Ｖｉｄｅｏ規格ではピクチャスタートコード（１０３）で、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格ではアクセスユニットデリミッターを示すスタートコード（２０３）で判断される。
【０００９】
また、ＭＰＥＧ規格の映像は３種類ある。映像の特殊再生においてはこれらの映像の種類を判断して表示することが要求される。この映像種別は、ＭＰＥＧ−２  Ｖｉｄｅｏ規格では図４に示すようにピクチャスタートコード（４０１）の後に続く映像種別の情報（４０２）で、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格では図５に示すようにアクセスユニットデリミッターのスタートコード（５０１）の後に続く映像種別の情報（５０２）で判断できる。
【００１０】
ＭＰＥＧ−２  Ｓｙｓｔｅｍ、ＭＰＥＧ−２  Ｖｉｄｅｏ及びＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格において、ビットストリーム上の１画面の映像の先頭位置の規定は無い。ピクチャスタートコードやアクセスユニットデリミッターを示すスタートコードを検出するには、ビットストリームの先頭からスタートコードプリフィックスのパターンを検索し、スタートコードプリフィックスを検出すると、その後に続くデータ情報がピクチャスタートコードやアクセスユニットデリミッターを示すスタートコードを指す値であるか判断するのが一般的である。
【００１１】
ＭＰＥＧ−２  Ｓｙｓｔｅｍ規格による多重化では、映像、音声の符号化データであるエレメンタリーストリームに再生時刻情報等を付加して多重化するためにＰＥＳ（Ｐａｃｋｅｔｉｚｅｄ  Ｅｌｅｍｅｎｔａｒｙ  Ｓｔｒｅａｍ）パケット化を行う。そしてＰＥＳパケット化されたエレメンタリーストリームは、複数のＰＥＳパケットを多重化し伝送するためにＴＳ（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）パケット化される。なお、ＰＥＳパケットは可変長、ＴＳパケットは固定長である。
【００１２】
ＭＰＥＧ−２  Ｓｙｓｔｅｍ規格によるエレメンタリーストリームの多重化を図６に示す。
【００１３】
ＭＰＥＧ−２  Ｓｙｓｔｅｍ規格により多重化されたビットストリームに対して分離化するためには、ＰＥＳヘッダの先頭を検出する必要がある。ＰＥＳヘッダ（６０１）の先頭はＭＰＥＧ−２  Ｓｙｓｔｅｍ規格のスタートコードで判断できる（６０２）。
【００１４】
図７はＴＳパケットの構成図である。ＴＳヘッダ（７０１）において、ペイロードユニットスタートインジゲータ（７０２）が“１”であればＴＳパケット（７０３）のペイロード（７０４）の先頭がＰＥＳヘッダであると定められている。また、アダプテーションフィールドコントロール（７０５）によって、付加情報やスタッフィングバイトを含むアダプテーションフィールド（７０６）の有無を判断することができる。また、ＴＳヘッダ（７０１）は４ｂｙｔｅの固定長である。
【００１５】
ＴＳヘッダ（７０１）は固定長であり、またアダプテーションフィールド（７０６）の長さはアダプテーションフィールドレングス（７０７）に示されているため、ＴＳパケット（７０３）のペイロード（７０４）の先頭位置はＴＳパケット（７０３）の先頭からのバイト数で容易に算出することができる。すなわち、ＰＥＳヘッダの先頭位置はペイロードユニットスタートインジゲータ（７０２）の判断と、アダプテーションフィールドコントロール（７０５）及びアダプテーションフィールドレングス（７０７）から算出可能である。
【００１６】
しかし、ビットストリームのエラー、例えば、ペイロードユニットスタートインジゲータの値が“０”であるにもかかわらずそのＴＳパケットにＰＥＳヘッダが含まれていた場合や、図８に示すようにＰＥＳヘッダ（８０１）がＴＳパケット（８０２）のペイロード（８０３）の先頭から始まらない場合にも、映像を復号化するために適切に多重分離化することが望まれている。
【００１７】
この場合、ＰＥＳヘッダの先頭位置はペイロードユニットスタートインジゲータ（７０２）の判断と、アダプテーションフィールドコントロール（７０５）及びアダプテーションフィールドレングス（７０７）から算出するのではなく、スタートコードプリフィックスを検索することによってＰＥＳヘッダを検出しなければならない。
【００１８】
ＰＥＳパケットにおけるピクチャスタートコードの位置関係を図９に示す。
【００１９】
ＭＰＥＧ−２  Ｓｙｓｔｅｍ、ＭＰＥＧ−２  Ｖｉｄｅｏ及びＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格において、ビットストリーム上のピクチャスタートコード及びアクセスユニットデリミッターの位置の規定は無いため、どこに存在するかは検索してみないとわからない（９０１）。
【００２０】
しかし、エレメンタリーストリームがＰＥＳパケット化される際に、エレメンタリーストリームのスタートコードがＰＥＳヘッダにより分断される場合があるため、単純にスタートコードプリフィックスを検索することによってピクチャスタートコードやアクセスユニットデリミッターを示すスタートコード検出する方法は、これらのスタートコードを検出するためには不十分である。ピクチャスタートコードがＰＥＳヘッダにより分断された場合の例を図１０に示す。
【００２１】
１００１はピクチャスタートコードがスタートコードプリフィックス（１００２）とスタートコードの種類の値（１００５）がＰＥＳヘッダにより分断された例である。この場合、最初のスタートコードプリフィックス（１００２）を検出後、次のバイト（１００３）をスタートコードの種類の値として確認すると“０ｘ００”であるので、この時点でピクチャスタートコードの検出であると誤るため、そこに続く１００３以降のデータを符号化データとして扱い、ＰＥＳヘッダのスタートコードプリフィックス（１００４）を検出できない。
【００２２】
また１００６、１００７はピクチャスタートコードのスタートコードプリフィックスがＰＥＳヘッダにより分断された例である。この場合、ＰＥＳヘッダの前にあるピクチャスタートコードのスタートコードプリフィックスの一部（１００８、１００９）は、ＰＥＳヘッダのスタートコードプリフィックスを検出時に符号化データとして処理されるため、ＰＥＳヘッダの処理の後にビットストリームの解析を行っても１０１０、１０１１以降のデータを符号化データとして扱い、スタートコードプリフィックスを検出できない。
【００２３】
このような場合でも適切に多重分離化することが望まれている。
【００２４】
以下にビットストリームの解析装置と方法について説明する。
【００２５】
図１１は従来（特許第３２３７６４１号公報）のビットストリーム解析装置のブロック図である。図１１において１１０１は入力バッファであり、入力されたビットストリームをバッファリングする。１１０２はスタートコードプリフィックス検出手段、１１０３はスタートコード判断手段、１１０４はビットストリーム解析手段である。
【００２６】
スタートコードプリフィックス検出手段（１１０２）は入力バッファ（１１０１）内のビットストリームにおいてスタートコードプリフィックスを検索する。スタートコードプリフィックス検出手段（１１０２）によりビットストリームからスタートコードプリフィックスが検出されると、スタートコード判断手段（１１０３）はスタートコードプリフィックスの後に続くスタートコードの種類を示す値を確認し、解析を必要とするスタートコードであるか判断する。解析が必要であればスタートコードを検出したことをビットストリーム解析手段（１１０４）に通知し、解析が不要であればスタートコードを検出したことをビットストリーム解析手段（１１０４）に通知せず、ビットストリーム転送手段（１１０５）により出力手段へのビットストリームの転送を行い、スタートコードプリフィックスの検索を再開する。
【００２７】
ビットストリーム解析手段（１１０４）が解析を終了すればビットストリーム転送手段（１１０５）により必要とするビットストリームの出力を行なう。
【００２８】
従来のビットストリーム解析処理のフローチャートを図１２に示す。以下、図１２を参照してビットストリームがエラーではなく、ピクチャスタートコードがＰＥＳヘッダの直後に存在するようなストリームに対して、ピクチャスタートコードの検索処理とＰＥＳヘッダの検索処理を説明する。
【００２９】
検索開始位置を仮にＴＳヘッダの直後としておく（１２０１）。アダプテーションフィールドコントロールの値の確認を行い（１２０２）、アダプテーションフィールドが無い場合には、仮に算出した位置を検索開始位置とし、アダプテーションフィールドが有る場合には、仮に算出した位置にアダプテーションフィールドレングスを加算した値を検索開始位置とする（１２０３）。
【００３０】
スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段を起動する（１２０４）。スタートコードプリフィックス検出手段が入力バッファのビットストリームに対してスタートコードプリフィックスを検出して、またはスタートコードプリフィックスを検出せずに検索を終了することを待つ（１２０５）。スタートコードプリフィックス検出手段の処理終了要因の確認を行い（１２０６）、スタートコードプリフィックスを検出せずに検索を終了した場合にはビットストリーム解析処理を終了する。
【００３１】
スタートコードプリフィックスを検出した場合は、ＰＥＳパケットのスタートコードの検出であるかの確認を行い（１２０７）、ＰＥＳパケットのスタートコードを検出した場合には、１００８、１００９のようにエレメンタリーストリームのスタートコードプリフィックスの一部を検出している可能性があるので、ＰＥＳヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの前の符号化データを記憶し（１２１２）、ＰＥＳヘッダの先頭を検出したためＰＥＳヘッダの解析を行う（１２１３）。ＰＥＳパケットのスタートコードではなかった場合は、ピクチャスタートコードの検出であるかの確認を行う（１２０８）。ＰＥＳパケットのスタートコードの確認（１２０７）とピクチャスタートコードの確認（１２０８）は順番が逆であってもよい。ピクチャスタートコードを検出した場合にはスタートコードの解析（１２０９）を行った後、１００１のようにスタートコードがＰＥＳヘッダにより分断されていないかの確認を行い（１２１０）、分断されていなかった場合にはピクチャスタートコードを検出したためエレメンタリーストリームの解析を行い（１２１１）、その後再度スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段を起動する（１２０４）。分断されていた場合には、ＰＥＳヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの検出状態を記憶し（１２１２）、ＰＥＳヘッダの解析を行う（１２１３）。ＰＥＳヘッダ解析後は、ＰＥＳヘッダ直前のスタートコードプリフィックス検出状態をリカバリー（１２１４）してから、再度スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段を起動する（１２０４）。
【００３２】
ＰＥＳパケットのスタートコードでもピクチャスタートコードでもなかった場合には再度スタートコードプリフィックスの検索を行う。以上の処理を繰り返すことにより、ビットストリーム解析処理を行う。
【００３３】
なお、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格に対しては、ピクチャスタートコードをアクセスユニットデリミッターのスタートコードに置き換えれば、図１２のフローチャートで同様に解析することができる。
【００３４】
図１２のフローチャートによりスタートコードプリフィックス検索処理をハードウェアによって行った場合のプロセッサ状態を図１３に示す。以下、図１３を参照してスタートコードプリフィックス検索処理をハードウェアによって行った場合のプロセッサ状態を説明する。
【００３５】
プロセッサにおいてビットストリーム解析処理のタスクが動作し、Ｔ１のタイミングでスタートコードプリフィックス検索処理を行うハードウェアを起動する。ビットストリーム解析処理のタスクはここからハードウェアがスタートコードプリフィックスを検出するのを待つため、他のタスクへのタスク切り替え処理を行う（１３０１）。検索開始位置直後にスタートコードプリフィックスが存在していた場合、ハードウェアはＴ２のタイミングのように、動作を開始してもすぐに停止する。
【００３６】
一方プロセッサはタスク切り替え後、ビットストリーム解析処理以外のタスクが動作している（１３０２）。そのため、少なくとも次のタスク切り替え後のＴ３のタイミングまでは、ビットストリーム解析処理のタスクは動作することができない。
【００３７】
したがって、ビットストリームがエラーではなく、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後に存在するようなストリームに対しては、ハードウェアの起動後のタスク切り替え処理（１３０１）と、ビットストリーム解析処理以外のタスクが動作し次のタスクが動作する時のタスク切り替え処理（１３０３）の、少なくとも２回のタスク切り替え処理を行うこと、及びタスク切り替えによりビットストリーム解析処理以外のタスクを動作させる（１３０２）ことはビットストリーム解析処理にとっては非効率的である。
【００３８】
ＰＥＳヘッダとピクチャスタートコードを含み、前記ビットストリームの条件を満たすＴＳパケットに対しての従来のビットストリーム解析処理のフローのパスを図１４に太線で示す。
【００３９】
図１４に示すように、従来の技術では前記ＴＳパケットに対して、スタートコードプリフィックス検出手段の起動（１４０１）、スタートコードプリフィックス検索終了待ち（１４０２）、スタートコードプリフィックス検出手段の処理終了要因確認（１４０３）を複数回行うことになる。
【特許文献１】特許第３２３７６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００４０】
上記の従来技術では、ＰＥＳヘッダの先頭位置やピクチャスタートコードやアクセスユニットデリミッターの位置がどこにどのように存在しても確実に検出することが可能である。しかし、ビットストリームがエラーであることは少なく、また、ピクチャスタートコードやアクセスユニットデリミッターはＰＥＳヘッダの直後に存在するようにＰＥＳパケット化されることが多い。そのようなストリームに対してスタートコードプリフィックスの検索処理をハードウェアによって行うと、無駄な処理時間が発生し、かつ発生頻度も多く、解析効率が落ちると言う問題点があった。
【００４１】
本発明は上記従来例の問題点を解決し、正常なビットストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後に存在するようなビットストリームに対しては無駄な処理時間を発生させず、解析効率を向上させ、かつ、エラーストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後にないような場合においても確実にＰＥＳヘッダ、ピクチャスタートコード及びアクセスユニットデリミッターを検出できるようにすることを目的とする。
【課題を解決するための手段】
【００４２】
上記の目的を達成するために本発明のビットストリーム解析装置においては、スタートコードプリフィックス検索開始前に検索開始位置の直後にスタートコードが存在するか確認する手段を有し、スタートコードが存在する場合にはスタートコードプリフィックスの検索を行わずにスタートコードの種類を判断する。スタートコードプリフィックス検索開始位置の直後にスタートコードが存在しない場合にはスタートコードプリフィックスを検索することによってスタートコードを検出することを特徴とする。
【発明の効果】
【００４３】
以上のように本発明を用いることにより、正常なビットストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後に存在するようなビットストリームに対しては無駄な処理時間を発生させず、解析効率を向上させ、かつ、エラーストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後にないような場合においても確実にＰＥＳヘッダ、ピクチャスタートコード及びアクセスユニットデリミッターの検出が可能である。
【００４４】
また、正常なビットストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後に存在するようなビットストリームに対する処理は内蔵メモリへ配置し、エラーストリームや、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後にないようなビットストリームに対する処理は外部メモリへ配置することによって、回路規模の増大を抑えることが可能である。
【発明を実施するための最良の形態】
【００４５】
（実施の形態１）
図１５はディジタル符号化と多重化されたビットストリームの分離化、復号化を行う装置の一実施の形態を示すブロック図である。
【００４６】
図１５において１５０１はビットストリーム解析装置であり、入力されたビットストリームを多重分離化し、映像データを映像データバッファメモリ（１５０２）へ、音声データを音声データバッファメモリ（１５０３）へ出力する。映像データバッファメモリ（１５０２）の映像データは、映像データ復号化装置（１５０４）により復号化され映像の出力が行われる。同様に、音声データバッファメモリ（１５０３）の音声データは、音声データ復号化装置（１５０５）により復号化され音声の出力が行われる。
【００４７】
図１６は本発明のビットストリーム解析装置の一実施の形態を示すブロック図である。
【００４８】
図１６において１６０１は入力バッファであり、入力されたビットストリームをバッファリングする。１６０２はスタートコード検出手段であり、従来技術のスタートコードプリフィックス検出手段（１１０２）とスタートコード判断手段（１１０３）の機能を有する。１６０５はスタートコード確認手段、１６０３はビットストリーム解析手段である。
【００４９】
スタートコード検出手段（１６０２）はビットストリーム解析手段（１６０３）よりスタートコードの検索要求があると入力バッファ（１６０１）内のビットストリームにおいて解析が必要なスタートコードを検索する。解析が必要であるスタートコードを検出した場合にはスタートコードを検出したことをビットストリーム解析手段（１６０３）に通知し、解析が不要であるスタートコードを検出した場合にはスタートコードを検出したことをビットストリーム解析手段（１６０３）に通知せず、ビットストリーム転送手段（１６０４）により出力手段へのビットストリームの転送を行い、スタートコードの検索を再開する。
【００５０】
スタートコード確認手段（１６０５）はビットストリーム解析手段（１６０３）よりスタートコードの確認要求があると入力バッファ（１６０１）内においてスタートコードを検索しようとしている位置から後ろに続くデータがビットストリーム解析手段（１６０３）より確認要求されたスタートコードであるかの確認を行う。スタートコードを検索しようとしている位置から後ろに、ビットストリーム解析手段（１６０３）より確認要求されたスタートコードを検出した場合は、ビットストリーム解析手段（１６０３）に確認要求があったスタートコードを検出したことを通知する。また、スタートコードを検索しようとしている位置から後ろに続くデータがビットストリーム解析手段（１６０３）より確認要求されたスタートコードでなかった場合は、ビットストリーム解析手段（１６０３）にスタートコードを検出しなかったことを通知する。
【００５１】
ビットストリーム解析手段（１６０３）は、スタートコード検出手段（１６０２）よりスタートコードの検出通知を受け取った場合と、スタートコード確認手段（１６０５）より確認要求したスタートコードの検出通知を受け取った場合は、ビットストリームの解析を行う。スタートコード確認手段（１６０５）より確認要求したスタートコードを検出しなかった通知を受け取った場合は、スタートコード検出手段（１６０２）にスタートコードの検索の要求をする。なおビットストリーム解析手段（１６０３）は、ビットストリームを解析して得られる情報や、ビットストリームの解析状態によって、スタートコード検出手段（１６０２）とスタートコード確認手段（１６０５）のどちらに要求を出すか判断する。ビットストリーム解析手段（１６０３）が処理を終了すればビットストリーム転送手段（１６０４）により必要とする多重分離化されたストリームの出力を行なう。
【００５２】
なお、スタートコード確認手段（１６０５）からビットストリーム解析手段（１６０３）への、確認要求したスタートコードを検出しなかった通知は、確認要求したスタートコードを検出した通知が一定の時間内にないことをもって検出していないとしてもよい。
【００５３】
本発明のビットストリーム解析処理のフローチャートを図１７に示す。以下、図１７を参照してピクチャスタートコードの検索処理とＰＥＳヘッダの検索処理を説明する。
【００５４】
検索開始位置を仮にＴＳヘッダの直後としておく（１７０１）。アダプテーションフィールドコントロールの値の確認を行い（１７０２）、アダプテーションフィールドが無い場合には、仮に算出した位置を検索開始位置とし、アダプテーションフィールドが有る場合には、仮に算出した位置にアダプテーションフィールドレングスを加算した値を検索開始位置とする（１７０３）。次にＴＳヘッダ中のペイロードユニットスタートインジゲータの値を確認する（１７０４）。ペイロードユニットスタートインジゲータの値が“０”であった場合には、そのＴＳパケットにはＰＥＳヘッダは含まれていないためスタートコードを検索するためにスタートコード検出手段を起動してスタートコードを検索する（１７１２）。
【００５５】
ペイロードユニットスタートインジゲータの値が“１”であった場合には、そのＴＳパケットにはＰＥＳヘッダが含まれているはずなので、スタートコード確認手段により検索開始位置からの後続データを読出し（１７０５）、ＰＥＳパケットのスタートコードであるかを確認する（１７０６）。ＰＥＳパケットのスタートコードでなかった場合には、スタートコードを検索するためにスタートコード検出手段を起動してスタートコードを検索し（１７１２）、ＰＥＳパケットのスタートコードであった場合はＰＥＳヘッダを解析する（１７０７）。
【００５６】
ＰＥＳヘッダ解析後は、ＰＥＳヘッダ直前のスタートコードプリフィックス検出状態をリカバリー（１７０６）してから、スタートコード確認手段によりＰＥＳヘッダの後続データを読出し（１７０９）、ピクチャスタートコードが存在しているかを確認する（１７１０）。ピクチャスタートコードが存在していなかった場合には、スタートコードを検索するためにスタートコード検出手段を起動してスタートコードを検索し（１７１２）、ピクチャスタートコードが存在していた場合はエレメンタリーストリームを解析する（１７１１）。
【００５７】
エレメンタリーストリーム解析後はスタートコードを検索するためにスタートコード検出手段を起動し（１７１２）、スタートコードを検出せずに検索を終了した場合にはビットストリーム解析処理を終了する。
【００５８】
スタートコード検出手段によりスタートコードを検出した場合は、ＰＥＳパケットのスタートコードであるかを確認する（１７１３）。ＰＥＳパケットのスタートコードを検出した場合には、エレメンタリーストリームのスタートコードの一部を検出している可能性があるので、ＰＥＳヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの前の符号化データを記憶し（１７１７）、ＰＥＳヘッダを検出したためＰＥＳヘッダの解析を行う（１７０７）。ＰＥＳパケットのスタートコードではなかった場合には、ピクチャスタートコードであるかを確認する（１７１４）。ＰＥＳパケットのスタートコードの確認（１７１３）とピクチャスタートコードの確認（１７１４）は順番が逆であってもよい。ピクチャスタートコードを検出した場合にはスタートコードの解析（１７１５）を行った後、スタートコードがＰＥＳヘッダにより分断されていないかの確認を行い（１７１６）、分断されていなかった場合にはピクチャスタートコードを検出したためエレメンタリーストリームの解析を行う（１７１１）。分断されていた場合には、ＰＥＳヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの検出状態を記憶し（１７１７）、ＰＥＳヘッダの解析を行う（１７０７）。
【００５９】
ＰＥＳパケットのスタートコードでもピクチャスタートコードでもなかった場合には再度スタートコードの検索を行う。以上の処理を繰り返すことにより、ビットストリーム解析処理を行う。
【００６０】
なお、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格に対しては、ピクチャスタートコードをアクセスユニットデリミッターのスタートコードに置き換えれば、図１７のフローチャートで同様に解析することができる。
【００６１】
従来のビットストリーム解析処理のようにスタートコード検索手段によりスタートコード検索処理を行った場合のプロセッサの状態と、本発明のビットストリーム解析処理のようにスタートコード確認手段によりスタートコード確認処理を行った場合のプロセッサ状態の比較図を図１８に示す。以下、図１８を参照してスタートコード検索処理を行った場合とスタートコード確認処理を行った場合のプロセッサ状態の比較を行う。
【００６２】
ビットストリームがエラーではなく、また、ピクチャスタートコードやアクセスユニットデリミッターがＰＥＳヘッダの直後に存在するようなビットストリームに対してスタートコード検索処理を行った場合、Ｔ１はプロセッサにおいてビットストリーム解析処理のタスクがスタートコード検索処理を行うハードウェアを起動するタイミング、Ｔ２はハードウェアがスタートコードを検出するタイミングであり、そしてＴ３はビットストリーム解析処理へ再びタスクが切り替えられるタイミングである。この場合、ハードウェアの起動後のタスク切り替え処理（１８０１）と、ビットストリーム解析処理以外のタスクが動作し次のタスクが動作する時のタスク切り替え処理（１８０３）の、少なくとも２回のタスク切り替え処理時間、及びタスク切り替えによりビットストリーム解析処理以外のタスクが動作する時間（１８０２）の非効率的な時間（１８０４）が発生する。
【００６３】
一方、前記ビットストリームに対してスタートコード確認処理を行った場合においては、Ｔ１でスタートコードの確認と検出を行うことができるため、非効率的な時間（１８０４）が発生しない。
【００６４】
ＰＥＳヘッダとピクチャスタートコードを含み、前記ビットストリームの条件を満たすＴＳパケットに対しての本発明のビットストリーム解析処理のフローのパスを図１９に太線で示す。
【００６５】
図１９に示すように、本発明では前記ＴＳパケットに対して、スタートコード検出手段の起動（１９０１）、スタートコード検索終了待ち（１９０２）、スタートコード検出手段の処理終了要因確認（１９０３）の実行回数は、従来の技術（図１４）に比べて少なくなる。
【００６６】
なお、図１１、図１５、図１６に示したブロック図の各機能ブロックは典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されたり、一部または全てを含むように１チップ化されても良いし、複数チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ブイＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【００６７】
集積回路の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【００６８】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適応等が可能性としてありえる。
【００６９】
なお、図１１、図１５、図１６等に示したブロック図の各機能ブロックおよび図１２、図１４、図１７、図１９に示したフローチャートにおいて、中心的な部分はプロセッサおよびプログラムによっても実現される。
【００７０】
前記プロセッサおよびプログラムの処理を実現するＬＳＩの一構成例を図２０に示す。
【００７１】
図２０において２００１はＬＳＩで、２００２はＬＳＩに接続されたＬＳＩの外部にあるメモリである。外部メモリ（２００２）には解析前のビットストリームのデータ、解析後のビットストリームのデータが格納される。ＬＳＩと外部メモリのデータの転送制御は外部メモリ制御部（２００３）によって行われる。２００４はプロセッサ、２００５はプログラムの命令及びデータを格納する内蔵メモリである。内蔵メモリ（２００５）にはビットストリームを解析するためのプログラムの命令及びデータが格納される。２００６のハードウェアエンジンは、プロセッサの処理を補助するための手段をもつ回路である。外部メモリ制御部（２００３）、プロセッサ（２００４）、ハードウェアエンジン（２００６）はバス（２００７）により繋がっている。
【００７２】
図２０のような内蔵メモリを搭載するＬＳＩでは、プログラムが大規模化すると内蔵メモリの容量を大きくする必要があり、回路規模の増大に繋がる。
【００７３】
したがって、図２１のようにＬＳＩにキャッシュメモリ（２１０３）を搭載し、実行頻度が低い命令は低速だが安価な外部メモリ（２１０１）へ配置しておき、必要に応じてキャッシュメモリ（２１０３）へ配置する。また実行頻度が高い命令は高速で高価な内蔵メモリ（２１０２）へ配置する。このようなメモリの使用方法が主流である。
【００７４】
ビットストリーム解析処理においては、図１２のような従来の処理構成はエラーや頻度の低いビットストリームパターンが入力されてくることを常に想定しているため、全ての命令を内蔵メモリへ配置しなければならない。したがって、従来の処理構成では図２１のようにキャッシュメモリ（２１０３）を搭載しても無意味であり、内蔵メモリが大きくなる。すなわち回路規模が増大する。
【００７５】
しかし、図１７の本発明の処理構成では、実行頻度の高い処理（１７１８）と実行頻度の低い処理（１７１９）を切り分けることが可能で、実行頻度の高い処理（１７１８）を内蔵メモリ（２１０２）へ配置し、実行頻度の低い処理（１７１９）を外部メモリ（２１０１）へ配置することによってキャッシュメモリ（２１０３）を有効活用し、内蔵メモリ（２１０２）が小さくなる。すなわち回路規模が縮小する。
【産業上の利用可能性】
【００７６】
本発明にかかるビットストリーム解析装置、方法、プログラムおよび集積回路は、あるデータのまとまりの先頭をスタートコードにより判断できる構造のビットストリームにおいて、確実にヘッダ、スタートコード及びデリミッターの検出が可能となるという効果を有し、ディジタル符号化及び多重化されたビットストリームの解析等に有用である。
【図面の簡単な説明】
【００７７】
【図１】ＭＰＥＧ−２  Ｖｉｄｅｏ規格におけるスタートコードの例を示す図
【図２】ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格におけるスタートコードの例を示す図
【図３】ＭＰＥＧ−２  Ｓｙｓｔｅｍ規格におけるスタートコードの例を示す図
【図４】ＭＰＥＧ−２  Ｖｉｄｅｏ規格におけるピクチャヘッダを示す図
【図５】ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４規格におけるアクセスユニットデリミッターを示す図
【図６】ＭＰＥＧ−２  Ｓｙｓｔｅｍ規格によるエレメンタリーストリームの多重化を示す図
【図７】ＴＳパケットの構成を示す図
【図８】ＰＥＳヘッダがＴＳパケットのペイロードの先頭から始まらない場合のエラーストリームを示す図
【図９】ＰＥＳパケットにおけるピクチャスタートコードの位置関係を示す図
【図１０】ピクチャスタートコードがＰＥＳヘッダにより分断された場合の例を示す図
【図１１】従来のビットストリーム解析装置の一実施形態を表すブロック図
【図１２】エレメンタリーストリームのスタートコードがＰＥＳヘッダにより分断されることに備えた場合の従来のビットストリーム解析処理のフローチャート
【図１３】従来のビットストリーム解析処理によりスタートコードプリフィックス検索処理をハードウェアによって行った場合のプロセッサ状態を示す図
【図１４】従来のビットストリーム解析処理のフローのパスを示す図
【図１５】ディジタル符号化と多重化されたビットストリームの分離化と復号化を行う装置の一実施の形態を表すブロック図
【図１６】本発明のビットストリーム解析装置の一実施の形態を表すブロック図
【図１７】本発明のビットストリーム解析処理のフローチャート
【図１８】スタートコード検索処理を行った場合とスタートコード確認処理を行った場合のプロセッサ状態を比較する図
【図１９】本発明のビットストリーム解析処理のフローのパスを示す図
【図２０】本発明を実現するＬＳＩの一構成例を示す図
【図２１】本発明を実現するキャッシュメモリを搭載したＬＳＩの一構成例を示す図
【符号の説明】
【００７８】
１６０１    入力バッファ
１６０２    スタートコード検出手段
１６０３    ビットストリーム解析手段
１６０４    ビットストリーム転送手段
１６０５    スタートコード確認手段
【図１】
2008205681.tif 000003
【図２】
2008205681.tif 000004
【図３】
2008205681.tif 000005
【図４】
2008205681.tif 000006
【図５】
2008205681.tif 000007
【図６】
2008205681.tif 000008
【図７】
2008205681.tif 000009
【図８】
2008205681.tif 000010
【図９】
2008205681.tif 000011
【図１０】
2008205681.tif 000012
【図１１】
2008205681.tif 000013
【図１２】
2008205681.tif 000014
【図１３】
2008205681.tif 000015
【図１４】
2008205681.tif 000016
【図１５】
2008205681.tif 000017
【図１６】
2008205681.tif 000018
【図１７】
2008205681.tif 000019
【図１８】
2008205681.tif 000020
【図１９】
2008205681.tif 000021
【図２０】
2008205681.tif 000022
【図２１】
2008205681.tif 000023