トランスポートストリームパケット調査装置、トランスポートストリームパケット調査方法
【課題】プロセッサの占有率を低減したトランスポートストリームパケットの調査方法を提供すること
【解決手段】スタートコードプリフィックス検出部104は、多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定する。3バイト状態検出部105は、トランスポートストリームパケットの最後尾から3バイトのバイト列の状態を検出する。通知部106は、スタートコードプリフィックス検出部104による判定結果と、3バイト状態検出部105が抽出した3バイトのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報として、プロセッサにより駆動するストリーム解析部103に通知する。
【解決手段】スタートコードプリフィックス検出部104は、多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定する。3バイト状態検出部105は、トランスポートストリームパケットの最後尾から3バイトのバイト列の状態を検出する。通知部106は、スタートコードプリフィックス検出部104による判定結果と、3バイト状態検出部105が抽出した3バイトのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報として、プロセッサにより駆動するストリーム解析部103に通知する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はトランスポートストリームパケット調査装置、トランスポートストリームパケット調査方法に関する。
【背景技術】
【0002】
デジタル放送、またはブルーレイディスク等を処理する画像処理装置では、ストリームの高ビットレート化、複数ストリームの同時入力に伴い、デマルチプレクサ処理の高速化の必要性が高まっている。
【0003】
ここで、本発明に関連するトランスポートストリーム(Transport Stream、以下の記載では"TS"と記載する)について図5を参照して説明する。図5は、TSの構成を示す図である。TSは、TSパケット500が連続することにより構成されるデータ列である。
【0004】
TSパケット500は、188バイトの固定長のパケットである。TSパケット500は、TSヘッダ501と、アダプテーションフィールド502と、ペイロード503と、により構成される。図5では、TSヘッダ501及びペイロード503から構成されるTSパケットと、TSヘッダ501、アダプテーションフィールド502、及びペイロード503から構成されるTSパケットと、を図示している。
【0005】
TSヘッダ501は、4バイトの固定長である。TSヘッダ501は、同期バイト511と、パケットの種類を表すパケット識別子(以後、PIDと記載する。)512と、アダプテーションフィールドの有無を示すアダプテーションフィールドコントロールフィールド513等の情報を含む。
【0006】
アダプテーションフィールド502には、システムの時間情報を示すPCR(Program Reference)等が含まれる。ペイロード503には、PES(Packetized Elementary Stream)パケット化されたビデオやオーディオのデータ、PSI(Program Specific Information)と呼ばれる番組情報等のデータが含まれる。
【0007】
図6は、PESパケットと、TSとの関係を示す図である。PESパケットとは、ビデオやオーディオのエレメンタリーストリームを分割し、PESヘッダ600を付与してパケット化したものである。PESヘッダには、先頭に配置されるスタートコード601、再生時間情報602等が含まれる。
【0008】
図7は、TSに対するデマルチプレクス処理の概要を説明する図である。デマルチプレクサ700は、順次入力されるTSに含まれるTSヘッダのPIDを参照し、ヘッダの削除及びパケットの振り分け(デマルチプレクス)を行う。デマルチプレクサ700は、デマルチプレクス処理によりビデオエレメンタリーストリーム、オーディオエレメンタリーストリームを生成する。ビデオデコーダ701は、ビデオエレメンタリーストリームを復号化してテレビ表示器に画像データとして出力する。オーディオデコーダ702は、オーディオエレメンタリーストリームを復号化してスピーカに音声データとして出力する。
【0009】
ビデオエレメンタリーストリーム内には、スタートコードと呼ばれる4バイトのバイト列が所々存在する。スタートコードは、スタートコードプリフィックスと呼ばれる"0x00 0x00 0x01"(0x**は、16進数の数を示す。*は0からFまでの英数字を取る。以下の説明においても同様である。)というバイト列、及び当該バイト列に後続し、スタートコードの種類を示す1バイトのバイト列と、から構成される。このスタートコードを示す4バイトは、スタートコードを示す以外に用いられることはないユニークなバイト列である。そのため、スタートコード直後に存在するデータの内容を明確に示すことができる。
【0010】
図8は、ビデオコーデック規格の一つであるMPEG4AVC/H.264に定められたスタートコードを示す図である。スタートコードの内、先頭の3バイトはスタートコードプリフィックス801であり、後続する1バイトの後ろ5ビットがスタートコードの種類802を示す。なお、図中の"**b"(*は0または1)は、ビット列を示す。ビデオ再生時には、ビデオデコーダ701がスタートコードを検索しながらビデオエレメンタリーストリームを解析し、復号処理を行う。このスタートコードの検索処理は、バイト単位でストリームを検査する必要があるため、非常に負荷が重い。
【0011】
スタートコードを使用する一例として、ストリーム再生時のランダムアクセスが挙げられる。ランダムアクセスを行う場合、ビデオエレメンタリーストリームにおけるアクセスユニットの先頭位置(アクセスポイント)の情報が必要である。図8に示すMPEG4AVC/H.264の例では、アクセスユニットデリミタ803の位置がアクセスユニットの先頭位置に相当する。ビデオデコーダ701は、ビデオエレメンタリーストリーム、すなわちTSヘッダが削除されたデータからアクセスユニットデリミタのスタートコードの位置を容易に検出できる。
【0012】
しかし、一般にTS、すなわちストリームデータの形態のままデータ記録/または再生され、デマルチプレクス処理を行わない場合も多い。そのため、TSをデマルチプレクス処理することなく、すなわちビデオエレメンタリーストリームがTSパケット単位で分割された状態において、TSからアクセスユニットデリミタのスタートコード位置を検出できることが望ましい。
【0013】
特許文献1には、ストリームデータを解析するビットストリーム解析装置についての技術が開示されている。図9を参照して、特許文献1にかかるビットストリーム解析装置の構成を説明する。
【0014】
ビットストリーム解析装置は、入力バッファ900と、スタートコードプリフィックス検出手段901と、スタートコード判断手段902と、ビットストリーム解析手段903と、ビットストリーム転送手段904と、を備える。入力バッファ900は、入力されたビットストリームをバッファリングする。
【0015】
スタートコードプリフィックス検出手段901は、入力バッファ900内のビットストリームにおいてスタートコードプリフィックスを検索する。スタートコードプリフィックス検出手段901によりスタートコードプリフィックスが検出されると、スタートコード判断手段902は、スタートコードプリフィックスの後に続くスタートコードの種類を示す値を確認し、解析を必要とするスタートコードであるか判断する。スタートコード判断手段902は、解析が必要であればスタートコードを検出したことをビットストリーム解析手段903に通知する。スタートコード判断手段902は、解析が不要であればスタートコードを検出したことをビットストリーム解析手段903に通知せず、ビットストリーム転送手段904を介してビットストリームの転送を行い、スタートコードプリフィックスの検索を再開する。ビットストリーム解析手段903は、解析終了後にビットストリーム転送手段904を介してビットストリームの出力を行う。
【0016】
特許文献1に記載のビットストリーム解析装置によるTSパケット入力に対する解析処理のフローチャートを図10、図11に示す。
【0017】
検索開始位置を仮にTSヘッダの直後としておく(S101)。アダプテーションフィールドコントロールの値の確認を行い(S102)、アダプテーションフィールドが無い場合には、仮に算出した位置を検索開始位置とし、アダプテーションフィールドが有る場合には、仮に算出した位置にアダプテーションフィールドレングスを加算した値を検索開始位置とする(S103)。
【0018】
スタートコードプリフィックスを検索するために、スタートコードプリフィックス検出手段901を起動する(S104)。スタートコードプリフィックス検出手段901が入力バッファのビットストリームに対してスタートコードプリフィックスの検索処理を行い、他の処理は待ち状態となる(S105)。スタートコードプリフィックス検出手段901の処理終了要因の確認を行い(S106)、スタートコードプリフィックスを検出せずに検索を終了した場合にはビットストリーム解析処理を終了する。
【0019】
スタートコードプリフィックス検出手段を901によりスタートコードプリフィックスを検出した場合は、スタートコード判断手段902は、当該検出がPESパケットのスタートコードの検出であるかを確認する(S107)。PESパケットのスタートコードを検出した場合には、エレメンタリーストリームのスタートコードプリフィックスの一部を検出している可能性がある。そのため、スタートコード判断手段902は、PESヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの前の符号化データを記憶し(S108)、PESヘッダの解析を行う(S109)。PESパケットのスタートコードではなかった場合は、スタートコード判断手段902は、ピクチャスタートコードの検出であるかの確認を行う(S111)。PESパケットのスタートコードの確認(S107)とピクチャスタートコードの確認(S111)は順番が逆であってもよい。
【0020】
ピクチャスタートコードを検出した場合、ビットストリーム解析手段903はスタートコードの解析(S112)を行った後、スタートコードがPESヘッダにより分断されていないかの確認を行う(S113)。分断されていなかった場合にはエレメンタリーストリームの解析を行い(S114)、その後再度スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段901を起動する(S104)。分断されていた場合には、PESヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの検出状態を記憶し(S108)、PESヘッダの解析を行う(S109)。PESヘッダ解析後は、PESヘッダ直前のスタートコードプリフィックス検出状態をリカバリー(S110)してから、再度スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段901を起動する(S104)。
【0021】
PESパケットのスタートコードでもピクチャスタートコードでもなかった場合には再度スタートコードプリフィックスの検索を行う。以上の処理を繰り返すことにより、ビットストリーム解析処理を行う。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】特開2000−224266号公報
【発明の概要】
【発明が解決しようとする課題】
【0023】
しかしながら、特許文献1に記載のビットストリーム解析装置では、プロセッサの占有状態が継続してしまうという問題がある。当該問題の詳細について、以下に説明する。
【0024】
一般のスタートコードプリフィックス検出手段は、ビデオエレメンタリーストリームのようにパケットに分割されていないストリームデータを対象としている。一方、TSは、図5に示すようにパケットに分割された多重化ストリームである。ここで、図12のTSパケット1201のようにスタートコードプリフィックスが1TSパケット内に収まっている場合、スタートコードプリフィックス検出手段は検出を正確に行うことができる。TSパケット1202,1203のようにスタートコードプリフィックスが1TSパケット内に収まっていない場合、スタートコードプリフィックス検出手段はスタートコードプリフィックスの検出を誤る可能性がある。
【0025】
特許文献1の記載のビットストリーム解析装置では、TSパケット毎にTSヘッダ等を除去し、ペイロードのみを対象としてスタートコードプリフィックス検出手段を起動する(S104)。このようにすれば、当該ビットストリーム解析装置では、TSを対象とした場合であっても正確にスタートコードプリフィックスを検出できる。しかし、当該ビットストリーム解析装置では、TSパケット毎にスタートコードプリフィックス検出手段の処理終了を待つ必要が生じる(S105)。この期間、プロセッサが占有されることとなる。
【課題を解決するための手段】
【0026】
本発明にかかるトランスポートストリームパケット調査装置の一態様は、
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定するスタートコードプリフィックス検出部と、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出する所定バイト状態検出部と、
前記スタートコードプリフィックス検出部による判定結果と、前記所定ビット状態検出部が抽出した所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する通知部と、を備えるものである。
【0027】
本発明にかかるトランスポートストリームパケット調査装置の一態様は、
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定し、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出し、
前記スタートコードプリフィックスの有無の情報と、抽出した前記所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する、ものである。
【0028】
本発明においては、トランスポートストリームパケット内のスタートコードプリフィックスの有無と、前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態と、を予め取得して、プロセッサに通知する。プロセッサは、これらの処理を行うことなく、通知情報に応じてスタートコードの検索処理を行うため、プロセッサの占有状態が低減できる。
【発明の効果】
【0029】
本発明によれば、プロセッサの占有率を低減できるトランスポートストリームパケット調査装置、及びトランスポートストリームパケット調査方法を提供することができる。
【図面の簡単な説明】
【0030】
【図1】実施の形態1にかかるデータ処理装置の構成を示すブロック図である。
【図2】実施の形態1にかかるTSパケットの状態と、スタートコードの検索と、の関連を示す図である。
【図3】実施の形態1にかかるTSパケット調査装置の処理を示すフローチャートである。
【図4】実施の形態1にかかるストリーム解析部の処理を示すフローチャートである。
【図5】トランスポートストリームの構成を示す図である。
【図6】PESパケットと、トランスポートストリームとの関係を示す図である。
【図7】トランスポートストリームに対するデマルチプレクス処理の概要を示す図である。
【図8】MPEG4AVC/H.264に定められたスタートコードを示す図である。
【図9】特許文献1にかかるビットストリーム解析装置の構成を示すブロック図である。
【図10】特許文献1に記載のビットストリーム解析装置によるTSパケット入力に対する解析処理を示すフローチャートである。
【図11】特許文献1に記載のビットストリーム解析装置によるTSパケット入力に対する解析処理を示すフローチャートである。
【図12】TSパケットとスタートコードプリフィックスの関係を示す図である。
【発明を実施するための形態】
【0031】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるデータ処理装置の構成を示すブロック図である。データ処理装置100は、入力バッファ101と、TSパケット調査装置102と、ストリーム解析部103と、を備える。TSパケット調査装置102は、スタートコードプリフィックス検出部104と、3バイト状態検出部105と、通知部106を備える。ストリーム解析部103は、内部に3バイト保持部107を備える。
【0032】
入力バッファ101は、TSパケットを保持するバッファである。入力バッファ101には、TSパケットが順次入力される。
【0033】
TSパケット調査装置102は、入力バッファ101から順次TSパケットを読み出す。スタートコードプリフィックス検出部104は、読み出したTSパケット内のスタートコードプリフィックスを検出する。
【0034】
3バイト状態検出部105は、読み出したTSパケットの最後尾に位置する3バイトを抽出する。通知部106は、スタートコードプリフィックス検出部104により判定されたスタートコードプリフィックスの有無と、3バイト状態検出部105が抽出した3バイトのデータと、をストリーム解析部103に通知する。
【0035】
ここで、TSパケット調査装置102は、TSパケットの解析に特化した専用のハードウェアにより構成することができる。
【0036】
ストリーム解析部103には、通知部106から処理対象のTSパケットの情報、すなわちスタートコードプリフィックスの有無及びTSパケットの最後尾の3バイトの値が入力される。ストリーム解析部103は、通知部106からの通知に応じて起動する。ストリーム解析部103内の3バイト保持部107には、PID毎に、直近に処理したTSパケットの最後尾に位置する3バイトのデータが格納される。ストリーム解析部103は、入力バッファ101から通知にかかるTSパケットを読み出す。ストリーム解析部103は、通知されたスタートコードプリフィックスの有無と、3バイト保持部107に保持されたバイト列と、に基づき処理対象のTSパケット内のスタートコードを検出するか否かを判定する。当該判定の詳細を図2を参照して説明する。
【0037】
処理対象のTSパケット内にスタートコードプリフィックスが有ることが通知された場合(状態0)、ストリーム解析部103は、処理対象のTSパケットからスタートコードを検索する。さらに、スタートコードがTSパケットを跨いでいる可能性がある場合に、ストリーム解析部103は、スタートコードを検索する。ここで、ストリーム解析部103は、処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の3バイトがスタートコードプリフィックス"0x00 0x00 0x01"の一部を含む場合に、スタートコードがTSパケットを跨いでいる可能性があると判定する。すなわち、ストリーム解析部103は、処理対象のTSパケットのPIDを検索キーとして3バイト保持部107を検索し、検索により抽出した3バイトが"0x00 0x00 0x01"の一部を含む場合に、スタートコードがTSパケットを跨いでいる可能性があると判定する。
【0038】
処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の3バイトが"0x00 0x00 0x01"である場合(状態1)、ストリーム解析部103は、スタートコードがTSパケットを跨いでいる可能性が有ると判定する。同様に、処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の2バイトが"0x00 0x00 "である場合(状態2)、ストリーム解析部103は、スタートコードがTSパケットを跨いでいる可能性が有ると判定する。処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の1バイトが"0x00"である場合(状態3)、ストリーム解析部103は、スタートコードがTSパケットを跨いでいる可能性が有ると判定する。
【0039】
上記(状態0〜状態3)以外の場合、ストリーム解析部103は、スタートコードの検索を行わない。
【0040】
ストリーム解析部103は、スタートコードが検索により検出された場合、スタートコードの種別に応じた処理を行う。スタートコードの検索が終了した後に、ストリーム解析部103は、通知部106から通知されたTSパケットの最後尾の3バイトの値をPIDと関連付けて3バイト保持部107に格納する。
【0041】
続いて、本実施の形態にかかるデータ処理装置の動作を図3、4のフローチャートを参照して説明する。図3は、TSパケット調査装置の処理を示すフローチャートである。図4は、ストリーム解析部103の処理を示すフローチャートである。
【0042】
スタートコードプリフィックス検出部104は、処理対象のTSパケット内のスタートコードプリフィックス("0x00 0x00 0x01")を検出する(S11)。3バイト状態検出部105は、処理対象のTSパケットの最後尾に位置する3バイトを抽出する(S12)。その後、通知部106は、S11及びS12の検出内容をストリーム解析部103に通知することによりストリーム解析部103を起動する(S13)。
【0043】
ストリーム解析部103は、処理対象のTSパケットのPIDと同一PIDを持ち、直近に処理したTSパケットの最後尾の3バイトを3バイト保持部107から読み出す。ストリーム解析部103は、読み出した3バイトのデータと処理対象のTSパケットのペイロードの先頭から1〜3バイトのデータからスタートコードがTSパケットを跨いでいるか否かを判定する(S21)。
【0044】
スタートコードがTSパケットを跨いでいない場合(S21:No)、ストリーム解析部103は、TSパケット調査装置102内のスタートコードプリフィックス検出部104がスタートコードプリフィックスを検出したか否かを判定する(S22)。
【0045】
スタートコードがTSパケットを跨いでいない(S21:No)、またはスタートコードプリフィックスが処理対象のTSパケット内に存在しない場合(S22:No)、ストリーム解析部103は、通知部106から通知された3バイトのデータ列をPIDと関連付けて3バイト保持部107に格納し(S27)、処理を終了する。
【0046】
スタートコードがTSパケットを跨いでいる場合(S21:Yes)、またはスタートコードプリフィックスが処理対象のTSパケット内に存在する場合(S22:Yes)、ストリーム解析部103は、処理対象のTSパケットからスタートコードを検索する(S23)。
【0047】
スタートコードが検出されなかった場合(S24:No)、ストリーム解析部103は、通知部106から通知された3バイトのデータ列をPIDと関連付けて3バイト保持部107に格納し(S27)、処理を終了する。
【0048】
スタートコードが検出された場合(S24:Yes)、ストリーム解析部103は、検出されたスタートコードに応じた処理を行う(S25)。スタートコードの検索は、処理対象のTSパケットのペイロードを全て検索し終わるまで行う(S26)。処理対象のTSパケットのペイロードの検索終了後(S26:Yes)、ストリーム解析部103は、通知部106から通知された3バイトのデータ列をPIDと関連付けて3バイト保持部107に格納し(S27)、処理を終了する。
【0049】
続いて、本実施の形態にかかるデータ処理装置の効果について説明する。一般に、スタートコードがTS内に含まれる確率はあまり高くなく、ストリームの一部分に集中して存在する傾向がある。上述のように、TSパケット調査装置により、TSパケットのスタートコードプリフィックスの検出、及びTSパケット最後尾から3バイトの状態の抽出、が行われる。TSパケット調査装置をTSパケットの処理に特化したハードウェア等を構成することにより、処理の高速化が図れる。さらにストリーム解析部103は、スタートコードプリフィックスが存在しないTSパケットに対してはスタートコードの検出を行わないため、前述のプロセッサの占有状態を回避し、処理の高速化が図れる。
【0050】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施の形態では図8に示すMPEG4AVC/H.264に定められたスタートコードを検出することを想定したが、必ずしもこれに限られない。本実施の形態にかかるデータ処理装置は、MPEG2等にかかる任意のマルチメディア符号化ストリームにかかるTSパケットを解析することに応用することができる。
【符号の説明】
【0051】
100 データ処理装置
101 入力バッファ
102 TSパケット調査装置
103 ストリーム解析部
104 スタートコードプリフィックス検出部
105 3バイト状態検出部
106 通知部
107 3バイト保持部
【技術分野】
【0001】
本発明はトランスポートストリームパケット調査装置、トランスポートストリームパケット調査方法に関する。
【背景技術】
【0002】
デジタル放送、またはブルーレイディスク等を処理する画像処理装置では、ストリームの高ビットレート化、複数ストリームの同時入力に伴い、デマルチプレクサ処理の高速化の必要性が高まっている。
【0003】
ここで、本発明に関連するトランスポートストリーム(Transport Stream、以下の記載では"TS"と記載する)について図5を参照して説明する。図5は、TSの構成を示す図である。TSは、TSパケット500が連続することにより構成されるデータ列である。
【0004】
TSパケット500は、188バイトの固定長のパケットである。TSパケット500は、TSヘッダ501と、アダプテーションフィールド502と、ペイロード503と、により構成される。図5では、TSヘッダ501及びペイロード503から構成されるTSパケットと、TSヘッダ501、アダプテーションフィールド502、及びペイロード503から構成されるTSパケットと、を図示している。
【0005】
TSヘッダ501は、4バイトの固定長である。TSヘッダ501は、同期バイト511と、パケットの種類を表すパケット識別子(以後、PIDと記載する。)512と、アダプテーションフィールドの有無を示すアダプテーションフィールドコントロールフィールド513等の情報を含む。
【0006】
アダプテーションフィールド502には、システムの時間情報を示すPCR(Program Reference)等が含まれる。ペイロード503には、PES(Packetized Elementary Stream)パケット化されたビデオやオーディオのデータ、PSI(Program Specific Information)と呼ばれる番組情報等のデータが含まれる。
【0007】
図6は、PESパケットと、TSとの関係を示す図である。PESパケットとは、ビデオやオーディオのエレメンタリーストリームを分割し、PESヘッダ600を付与してパケット化したものである。PESヘッダには、先頭に配置されるスタートコード601、再生時間情報602等が含まれる。
【0008】
図7は、TSに対するデマルチプレクス処理の概要を説明する図である。デマルチプレクサ700は、順次入力されるTSに含まれるTSヘッダのPIDを参照し、ヘッダの削除及びパケットの振り分け(デマルチプレクス)を行う。デマルチプレクサ700は、デマルチプレクス処理によりビデオエレメンタリーストリーム、オーディオエレメンタリーストリームを生成する。ビデオデコーダ701は、ビデオエレメンタリーストリームを復号化してテレビ表示器に画像データとして出力する。オーディオデコーダ702は、オーディオエレメンタリーストリームを復号化してスピーカに音声データとして出力する。
【0009】
ビデオエレメンタリーストリーム内には、スタートコードと呼ばれる4バイトのバイト列が所々存在する。スタートコードは、スタートコードプリフィックスと呼ばれる"0x00 0x00 0x01"(0x**は、16進数の数を示す。*は0からFまでの英数字を取る。以下の説明においても同様である。)というバイト列、及び当該バイト列に後続し、スタートコードの種類を示す1バイトのバイト列と、から構成される。このスタートコードを示す4バイトは、スタートコードを示す以外に用いられることはないユニークなバイト列である。そのため、スタートコード直後に存在するデータの内容を明確に示すことができる。
【0010】
図8は、ビデオコーデック規格の一つであるMPEG4AVC/H.264に定められたスタートコードを示す図である。スタートコードの内、先頭の3バイトはスタートコードプリフィックス801であり、後続する1バイトの後ろ5ビットがスタートコードの種類802を示す。なお、図中の"**b"(*は0または1)は、ビット列を示す。ビデオ再生時には、ビデオデコーダ701がスタートコードを検索しながらビデオエレメンタリーストリームを解析し、復号処理を行う。このスタートコードの検索処理は、バイト単位でストリームを検査する必要があるため、非常に負荷が重い。
【0011】
スタートコードを使用する一例として、ストリーム再生時のランダムアクセスが挙げられる。ランダムアクセスを行う場合、ビデオエレメンタリーストリームにおけるアクセスユニットの先頭位置(アクセスポイント)の情報が必要である。図8に示すMPEG4AVC/H.264の例では、アクセスユニットデリミタ803の位置がアクセスユニットの先頭位置に相当する。ビデオデコーダ701は、ビデオエレメンタリーストリーム、すなわちTSヘッダが削除されたデータからアクセスユニットデリミタのスタートコードの位置を容易に検出できる。
【0012】
しかし、一般にTS、すなわちストリームデータの形態のままデータ記録/または再生され、デマルチプレクス処理を行わない場合も多い。そのため、TSをデマルチプレクス処理することなく、すなわちビデオエレメンタリーストリームがTSパケット単位で分割された状態において、TSからアクセスユニットデリミタのスタートコード位置を検出できることが望ましい。
【0013】
特許文献1には、ストリームデータを解析するビットストリーム解析装置についての技術が開示されている。図9を参照して、特許文献1にかかるビットストリーム解析装置の構成を説明する。
【0014】
ビットストリーム解析装置は、入力バッファ900と、スタートコードプリフィックス検出手段901と、スタートコード判断手段902と、ビットストリーム解析手段903と、ビットストリーム転送手段904と、を備える。入力バッファ900は、入力されたビットストリームをバッファリングする。
【0015】
スタートコードプリフィックス検出手段901は、入力バッファ900内のビットストリームにおいてスタートコードプリフィックスを検索する。スタートコードプリフィックス検出手段901によりスタートコードプリフィックスが検出されると、スタートコード判断手段902は、スタートコードプリフィックスの後に続くスタートコードの種類を示す値を確認し、解析を必要とするスタートコードであるか判断する。スタートコード判断手段902は、解析が必要であればスタートコードを検出したことをビットストリーム解析手段903に通知する。スタートコード判断手段902は、解析が不要であればスタートコードを検出したことをビットストリーム解析手段903に通知せず、ビットストリーム転送手段904を介してビットストリームの転送を行い、スタートコードプリフィックスの検索を再開する。ビットストリーム解析手段903は、解析終了後にビットストリーム転送手段904を介してビットストリームの出力を行う。
【0016】
特許文献1に記載のビットストリーム解析装置によるTSパケット入力に対する解析処理のフローチャートを図10、図11に示す。
【0017】
検索開始位置を仮にTSヘッダの直後としておく(S101)。アダプテーションフィールドコントロールの値の確認を行い(S102)、アダプテーションフィールドが無い場合には、仮に算出した位置を検索開始位置とし、アダプテーションフィールドが有る場合には、仮に算出した位置にアダプテーションフィールドレングスを加算した値を検索開始位置とする(S103)。
【0018】
スタートコードプリフィックスを検索するために、スタートコードプリフィックス検出手段901を起動する(S104)。スタートコードプリフィックス検出手段901が入力バッファのビットストリームに対してスタートコードプリフィックスの検索処理を行い、他の処理は待ち状態となる(S105)。スタートコードプリフィックス検出手段901の処理終了要因の確認を行い(S106)、スタートコードプリフィックスを検出せずに検索を終了した場合にはビットストリーム解析処理を終了する。
【0019】
スタートコードプリフィックス検出手段を901によりスタートコードプリフィックスを検出した場合は、スタートコード判断手段902は、当該検出がPESパケットのスタートコードの検出であるかを確認する(S107)。PESパケットのスタートコードを検出した場合には、エレメンタリーストリームのスタートコードプリフィックスの一部を検出している可能性がある。そのため、スタートコード判断手段902は、PESヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの前の符号化データを記憶し(S108)、PESヘッダの解析を行う(S109)。PESパケットのスタートコードではなかった場合は、スタートコード判断手段902は、ピクチャスタートコードの検出であるかの確認を行う(S111)。PESパケットのスタートコードの確認(S107)とピクチャスタートコードの確認(S111)は順番が逆であってもよい。
【0020】
ピクチャスタートコードを検出した場合、ビットストリーム解析手段903はスタートコードの解析(S112)を行った後、スタートコードがPESヘッダにより分断されていないかの確認を行う(S113)。分断されていなかった場合にはエレメンタリーストリームの解析を行い(S114)、その後再度スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段901を起動する(S104)。分断されていた場合には、PESヘッダ解析処理後にリカバリーできるようにスタートコードプリフィックスの検出状態を記憶し(S108)、PESヘッダの解析を行う(S109)。PESヘッダ解析後は、PESヘッダ直前のスタートコードプリフィックス検出状態をリカバリー(S110)してから、再度スタートコードプリフィックスを検索するためにスタートコードプリフィックス検出手段901を起動する(S104)。
【0021】
PESパケットのスタートコードでもピクチャスタートコードでもなかった場合には再度スタートコードプリフィックスの検索を行う。以上の処理を繰り返すことにより、ビットストリーム解析処理を行う。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】特開2000−224266号公報
【発明の概要】
【発明が解決しようとする課題】
【0023】
しかしながら、特許文献1に記載のビットストリーム解析装置では、プロセッサの占有状態が継続してしまうという問題がある。当該問題の詳細について、以下に説明する。
【0024】
一般のスタートコードプリフィックス検出手段は、ビデオエレメンタリーストリームのようにパケットに分割されていないストリームデータを対象としている。一方、TSは、図5に示すようにパケットに分割された多重化ストリームである。ここで、図12のTSパケット1201のようにスタートコードプリフィックスが1TSパケット内に収まっている場合、スタートコードプリフィックス検出手段は検出を正確に行うことができる。TSパケット1202,1203のようにスタートコードプリフィックスが1TSパケット内に収まっていない場合、スタートコードプリフィックス検出手段はスタートコードプリフィックスの検出を誤る可能性がある。
【0025】
特許文献1の記載のビットストリーム解析装置では、TSパケット毎にTSヘッダ等を除去し、ペイロードのみを対象としてスタートコードプリフィックス検出手段を起動する(S104)。このようにすれば、当該ビットストリーム解析装置では、TSを対象とした場合であっても正確にスタートコードプリフィックスを検出できる。しかし、当該ビットストリーム解析装置では、TSパケット毎にスタートコードプリフィックス検出手段の処理終了を待つ必要が生じる(S105)。この期間、プロセッサが占有されることとなる。
【課題を解決するための手段】
【0026】
本発明にかかるトランスポートストリームパケット調査装置の一態様は、
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定するスタートコードプリフィックス検出部と、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出する所定バイト状態検出部と、
前記スタートコードプリフィックス検出部による判定結果と、前記所定ビット状態検出部が抽出した所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する通知部と、を備えるものである。
【0027】
本発明にかかるトランスポートストリームパケット調査装置の一態様は、
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定し、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出し、
前記スタートコードプリフィックスの有無の情報と、抽出した前記所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する、ものである。
【0028】
本発明においては、トランスポートストリームパケット内のスタートコードプリフィックスの有無と、前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態と、を予め取得して、プロセッサに通知する。プロセッサは、これらの処理を行うことなく、通知情報に応じてスタートコードの検索処理を行うため、プロセッサの占有状態が低減できる。
【発明の効果】
【0029】
本発明によれば、プロセッサの占有率を低減できるトランスポートストリームパケット調査装置、及びトランスポートストリームパケット調査方法を提供することができる。
【図面の簡単な説明】
【0030】
【図1】実施の形態1にかかるデータ処理装置の構成を示すブロック図である。
【図2】実施の形態1にかかるTSパケットの状態と、スタートコードの検索と、の関連を示す図である。
【図3】実施の形態1にかかるTSパケット調査装置の処理を示すフローチャートである。
【図4】実施の形態1にかかるストリーム解析部の処理を示すフローチャートである。
【図5】トランスポートストリームの構成を示す図である。
【図6】PESパケットと、トランスポートストリームとの関係を示す図である。
【図7】トランスポートストリームに対するデマルチプレクス処理の概要を示す図である。
【図8】MPEG4AVC/H.264に定められたスタートコードを示す図である。
【図9】特許文献1にかかるビットストリーム解析装置の構成を示すブロック図である。
【図10】特許文献1に記載のビットストリーム解析装置によるTSパケット入力に対する解析処理を示すフローチャートである。
【図11】特許文献1に記載のビットストリーム解析装置によるTSパケット入力に対する解析処理を示すフローチャートである。
【図12】TSパケットとスタートコードプリフィックスの関係を示す図である。
【発明を実施するための形態】
【0031】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるデータ処理装置の構成を示すブロック図である。データ処理装置100は、入力バッファ101と、TSパケット調査装置102と、ストリーム解析部103と、を備える。TSパケット調査装置102は、スタートコードプリフィックス検出部104と、3バイト状態検出部105と、通知部106を備える。ストリーム解析部103は、内部に3バイト保持部107を備える。
【0032】
入力バッファ101は、TSパケットを保持するバッファである。入力バッファ101には、TSパケットが順次入力される。
【0033】
TSパケット調査装置102は、入力バッファ101から順次TSパケットを読み出す。スタートコードプリフィックス検出部104は、読み出したTSパケット内のスタートコードプリフィックスを検出する。
【0034】
3バイト状態検出部105は、読み出したTSパケットの最後尾に位置する3バイトを抽出する。通知部106は、スタートコードプリフィックス検出部104により判定されたスタートコードプリフィックスの有無と、3バイト状態検出部105が抽出した3バイトのデータと、をストリーム解析部103に通知する。
【0035】
ここで、TSパケット調査装置102は、TSパケットの解析に特化した専用のハードウェアにより構成することができる。
【0036】
ストリーム解析部103には、通知部106から処理対象のTSパケットの情報、すなわちスタートコードプリフィックスの有無及びTSパケットの最後尾の3バイトの値が入力される。ストリーム解析部103は、通知部106からの通知に応じて起動する。ストリーム解析部103内の3バイト保持部107には、PID毎に、直近に処理したTSパケットの最後尾に位置する3バイトのデータが格納される。ストリーム解析部103は、入力バッファ101から通知にかかるTSパケットを読み出す。ストリーム解析部103は、通知されたスタートコードプリフィックスの有無と、3バイト保持部107に保持されたバイト列と、に基づき処理対象のTSパケット内のスタートコードを検出するか否かを判定する。当該判定の詳細を図2を参照して説明する。
【0037】
処理対象のTSパケット内にスタートコードプリフィックスが有ることが通知された場合(状態0)、ストリーム解析部103は、処理対象のTSパケットからスタートコードを検索する。さらに、スタートコードがTSパケットを跨いでいる可能性がある場合に、ストリーム解析部103は、スタートコードを検索する。ここで、ストリーム解析部103は、処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の3バイトがスタートコードプリフィックス"0x00 0x00 0x01"の一部を含む場合に、スタートコードがTSパケットを跨いでいる可能性があると判定する。すなわち、ストリーム解析部103は、処理対象のTSパケットのPIDを検索キーとして3バイト保持部107を検索し、検索により抽出した3バイトが"0x00 0x00 0x01"の一部を含む場合に、スタートコードがTSパケットを跨いでいる可能性があると判定する。
【0038】
処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の3バイトが"0x00 0x00 0x01"である場合(状態1)、ストリーム解析部103は、スタートコードがTSパケットを跨いでいる可能性が有ると判定する。同様に、処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の2バイトが"0x00 0x00 "である場合(状態2)、ストリーム解析部103は、スタートコードがTSパケットを跨いでいる可能性が有ると判定する。処理対象のTSパケットと同一PIDを持ち、直近に処理したTSパケットの最後尾の1バイトが"0x00"である場合(状態3)、ストリーム解析部103は、スタートコードがTSパケットを跨いでいる可能性が有ると判定する。
【0039】
上記(状態0〜状態3)以外の場合、ストリーム解析部103は、スタートコードの検索を行わない。
【0040】
ストリーム解析部103は、スタートコードが検索により検出された場合、スタートコードの種別に応じた処理を行う。スタートコードの検索が終了した後に、ストリーム解析部103は、通知部106から通知されたTSパケットの最後尾の3バイトの値をPIDと関連付けて3バイト保持部107に格納する。
【0041】
続いて、本実施の形態にかかるデータ処理装置の動作を図3、4のフローチャートを参照して説明する。図3は、TSパケット調査装置の処理を示すフローチャートである。図4は、ストリーム解析部103の処理を示すフローチャートである。
【0042】
スタートコードプリフィックス検出部104は、処理対象のTSパケット内のスタートコードプリフィックス("0x00 0x00 0x01")を検出する(S11)。3バイト状態検出部105は、処理対象のTSパケットの最後尾に位置する3バイトを抽出する(S12)。その後、通知部106は、S11及びS12の検出内容をストリーム解析部103に通知することによりストリーム解析部103を起動する(S13)。
【0043】
ストリーム解析部103は、処理対象のTSパケットのPIDと同一PIDを持ち、直近に処理したTSパケットの最後尾の3バイトを3バイト保持部107から読み出す。ストリーム解析部103は、読み出した3バイトのデータと処理対象のTSパケットのペイロードの先頭から1〜3バイトのデータからスタートコードがTSパケットを跨いでいるか否かを判定する(S21)。
【0044】
スタートコードがTSパケットを跨いでいない場合(S21:No)、ストリーム解析部103は、TSパケット調査装置102内のスタートコードプリフィックス検出部104がスタートコードプリフィックスを検出したか否かを判定する(S22)。
【0045】
スタートコードがTSパケットを跨いでいない(S21:No)、またはスタートコードプリフィックスが処理対象のTSパケット内に存在しない場合(S22:No)、ストリーム解析部103は、通知部106から通知された3バイトのデータ列をPIDと関連付けて3バイト保持部107に格納し(S27)、処理を終了する。
【0046】
スタートコードがTSパケットを跨いでいる場合(S21:Yes)、またはスタートコードプリフィックスが処理対象のTSパケット内に存在する場合(S22:Yes)、ストリーム解析部103は、処理対象のTSパケットからスタートコードを検索する(S23)。
【0047】
スタートコードが検出されなかった場合(S24:No)、ストリーム解析部103は、通知部106から通知された3バイトのデータ列をPIDと関連付けて3バイト保持部107に格納し(S27)、処理を終了する。
【0048】
スタートコードが検出された場合(S24:Yes)、ストリーム解析部103は、検出されたスタートコードに応じた処理を行う(S25)。スタートコードの検索は、処理対象のTSパケットのペイロードを全て検索し終わるまで行う(S26)。処理対象のTSパケットのペイロードの検索終了後(S26:Yes)、ストリーム解析部103は、通知部106から通知された3バイトのデータ列をPIDと関連付けて3バイト保持部107に格納し(S27)、処理を終了する。
【0049】
続いて、本実施の形態にかかるデータ処理装置の効果について説明する。一般に、スタートコードがTS内に含まれる確率はあまり高くなく、ストリームの一部分に集中して存在する傾向がある。上述のように、TSパケット調査装置により、TSパケットのスタートコードプリフィックスの検出、及びTSパケット最後尾から3バイトの状態の抽出、が行われる。TSパケット調査装置をTSパケットの処理に特化したハードウェア等を構成することにより、処理の高速化が図れる。さらにストリーム解析部103は、スタートコードプリフィックスが存在しないTSパケットに対してはスタートコードの検出を行わないため、前述のプロセッサの占有状態を回避し、処理の高速化が図れる。
【0050】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施の形態では図8に示すMPEG4AVC/H.264に定められたスタートコードを検出することを想定したが、必ずしもこれに限られない。本実施の形態にかかるデータ処理装置は、MPEG2等にかかる任意のマルチメディア符号化ストリームにかかるTSパケットを解析することに応用することができる。
【符号の説明】
【0051】
100 データ処理装置
101 入力バッファ
102 TSパケット調査装置
103 ストリーム解析部
104 スタートコードプリフィックス検出部
105 3バイト状態検出部
106 通知部
107 3バイト保持部
【特許請求の範囲】
【請求項1】
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定するスタートコードプリフィックス検出部と、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出する所定バイト状態検出部と、
前記スタートコードプリフィックス検出部による判定結果と、前記所定ビット状態検出部が抽出した所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する通知部と、を備えるトランスポートストリームパケット調査装置。
【請求項2】
前記所定サイズは、3バイトであることを特徴とする請求項1に記載のトランスポートストリームパケット調査装置。
【請求項3】
前記トランスポートストリームパケットは、マルチメディア符号化ストリームに関するデータであることを特徴とする請求項1または請求項2に記載のトランスポートストリームパケット調査装置。
【請求項4】
請求項1乃至請求項3のいずれか1項に記載のトランスポートストリームパケット調査装置と、前記プロセッサにより駆動するストリーム解析部と、を備えるデータ処理装置であって、
前記ストリーム解析部は、前記通知部からの通知内容に基づいて、前記トランスポートストリームパケットからスタートコードを検索するか否かを判定する、データ処理装置。
【請求項5】
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定し、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出し、
前記スタートコードプリフィックスの有無の情報と、抽出した前記所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する、トランスポートストリームパケット調査方法。
【請求項6】
前記所定サイズは、3バイトであることを特徴とする請求項5に記載のトランスポートストリームパケット調査方法。
【請求項7】
前記トランスポートストリームパケットは、マルチメディア符号化ストリームに関するデータであることを特徴とする請求項5または請求項6に記載のトランスポートストリームパケット調査方法。
【請求項1】
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定するスタートコードプリフィックス検出部と、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出する所定バイト状態検出部と、
前記スタートコードプリフィックス検出部による判定結果と、前記所定ビット状態検出部が抽出した所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する通知部と、を備えるトランスポートストリームパケット調査装置。
【請求項2】
前記所定サイズは、3バイトであることを特徴とする請求項1に記載のトランスポートストリームパケット調査装置。
【請求項3】
前記トランスポートストリームパケットは、マルチメディア符号化ストリームに関するデータであることを特徴とする請求項1または請求項2に記載のトランスポートストリームパケット調査装置。
【請求項4】
請求項1乃至請求項3のいずれか1項に記載のトランスポートストリームパケット調査装置と、前記プロセッサにより駆動するストリーム解析部と、を備えるデータ処理装置であって、
前記ストリーム解析部は、前記通知部からの通知内容に基づいて、前記トランスポートストリームパケットからスタートコードを検索するか否かを判定する、データ処理装置。
【請求項5】
多重化ストリームにかかるトランスポートストリームパケットからスタートコードプリフィックスの有無を判定し、
前記トランスポートストリームパケットの最後尾から所定サイズのバイト列の状態を検出し、
前記スタートコードプリフィックスの有無の情報と、抽出した前記所定サイズのバイト列の状態と、をトランスポートストリームのスタートコードを検索するか否かの情報としてプロセッサに通知する、トランスポートストリームパケット調査方法。
【請求項6】
前記所定サイズは、3バイトであることを特徴とする請求項5に記載のトランスポートストリームパケット調査方法。
【請求項7】
前記トランスポートストリームパケットは、マルチメディア符号化ストリームに関するデータであることを特徴とする請求項5または請求項6に記載のトランスポートストリームパケット調査方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−85039(P2012−85039A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2010−228477(P2010−228477)
【出願日】平成22年10月8日(2010.10.8)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願日】平成22年10月8日(2010.10.8)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]