(57)【要約】【課題】ストリームデータから画像処理対象フレームとして取り出すフレームを一意に決定することができる画像処理装置を提供する。【解決手段】画像処理装置１は、ストリームデータにおけるフレーム間の不連続を検出し、不連続が検出されると所定の不連続情報を付加して、画像データとヘッダ情報を出力する不連続検出部２２と、画像データとヘッダ情報を各フレームに対応付けて保存するFIFO２１と、連続するフレームについては、連続する２つのフレームのPTSに基づいてストリームの先頭からの経過時間を決定し、不連続なフレームについては、不連続の存在する点の前又は後におけるフレームのPTSとフレームレートに基づいて経過時間を決定し、決定された経過時間と画像処理対象のフレームを指定するための設定された時間間隔ｆとに基づいて、画像処理対象のフレームを決定する取り出しフレーム決定部２５とを有する。【選択図】図２
2010246042.tif 000002
【特許請求の範囲】
【請求項１】
画像データと再生時刻とフレームレートを含む複数のフレームデータ、を有するストリームデータにおけるフレーム間の不連続を検出し、前記不連続が検出されると前記不連続の存在を示す所定の不連続情報を付加して、各フレームの前記画像データとヘッダ情報を出力する不連続検出部と、
前記不連続検出部からの前記画像データと前記ヘッダ情報を前記各フレームに対応付けて保存するFIFOメモリと、
前記FIFOメモリから読み出された前記不連続情報の無いフレームについては、連続する２つのフレームの前記再生時刻に基づいて前記ストリームの先頭からの経過時間を決定し、前記不連続情報が付加されたフレームについては、前記不連続の存在する点の前又は後におけるフレームの前記再生時刻及び前記フレームレートに基づいて前記ストリームの先頭からの経過時間を決定し、かつその決定された前記経過時間と画像処理対象のフレームを指定するための設定された時間間隔とに基づいて、前記画像処理対象のフレームあるいは画像処理対象外のフレームを決定する処理対象フレーム決定部と、
を有することを特徴とする画像処理装置。
【請求項２】
前記FIFOメモリへの上書き回数、前記不連続情報に含まれるストリームの変化、ストリームの終端及び前記ストリームに含まれるシーケンスの終端の各情報に基づいて、前記上書き回数、前記ストリームの変化の後の上書き回数、前記ストリームの変化の有無、前記ストリームの終端の有無、前記シーケンスの終端の有無、前記ストリームの変化があったときの前記再生時刻、前記シーケンスの終端直前の前記再生時刻、及び前記シーケンスの終端直前の前記フレームレートを含む補助ヘッダ情報を生成する補助ヘッダ生成部をさらに有し、
前記処理対象フレーム決定部は、前記不連続の存在する点の前又は後におけるフレームの前記再生時刻及び前記フレームレートを、前記補助ヘッダ生成部により生成された前記補助ヘッダ情報から得ることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記FIFOメモリに記憶された古いフレームの前記画像データと前記ヘッダ情報を読み出すときに、その古いフレームの次に古いフレームの前記ヘッダ情報を併せて読み出し、かつ前記次に古いフレームの前記ヘッダ情報を、前記補助ヘッダ生成部により生成された前記補助ヘッダ情報に基づいて加工するヘッダ情報加工部をさらに有することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記ヘッダ情報加工部は、前記補助ヘッダ情報の前記上書き回数を含む上書き情報を生成することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
画像データと再生時刻とフレームレートを含む複数のフレームデータ、を有するストリームデータにおけるフレーム間の不連続を検出し、前記不連続が検出されると前記不連続の存在を示す所定の不連続情報を付加して、各フレームの前記画像データとヘッダ情報を出力し、
出力された前記画像データと前記ヘッダ情報を前記各フレームに対応付けて保存するFIFOメモリから読み出された前記不連続情報の無いフレームについては、連続する２つのフレームの前記再生時刻に基づいて前記ストリームの先頭からの経過時間を決定し、前記不連続情報が付加されたフレームについては、前記不連続の存在する点の前又は後におけるフレームの前記再生時刻及び前記フレームレートに基づいて前記ストリームの先頭からの経過時間を決定し、
その決定された前記経過時間と画像処理対象のフレームを指定するための設定された時間間隔とに基づいて、前記画像処理対象のフレームあるいは画像処理対象外のフレームを決定することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びその方法に関し、特に、ストリームデータから画像処理対象フレームとして取り出すフレームを決定する画像処理装置及びその方法に関する。
【背景技術】
【０００２】
従来より、動画像再生装置において、動画像の再生において画像を滑らかに表示させるための技術、フレームレートを制御する技術、等々が種々提案されている（例えば、特許文献１、特許文献２参照）。  
また、近年は、デジタルカメラにおいては、撮影時に被写体の顔を検出する機能が搭載され、顔検出機能に基づく、シャッターのタイミング、画像処理における色調整等の処理が行われるようになってきている。
【０００３】
さらにまた、動画像のストリームデータに対してこのような機能はないが、動画像再生装置において、動画像に対するリアルタイムな画像処理は有用である。例えば、テレビ放送のコンテンツを録画できる動画像再生装置において、テレビ放送のコンテンツを録画しながらリアルタイムに顔検出処理を行い、録画終了とともに検出した顔情報が利用可能となれば、顔情報は、所望のシーンの検索等に利用できる。すなわち、録画中等において、所定の画像処理を行うことができれば、録画番組のユーザの視聴支援に繋がる。
【０００４】
一般に、動画像中の隣接フレームは類似した画像であることが多いので、画像処理は毎フレームに対して行う必要はなく、一定の間隔毎にフレームを取り出して、逆に言えば一定の間隔で数フレームを間引いて、行われればよい場合が多いと想定される。この間引き処理によって、画像処理の負荷と、結果の出力データ量を抑えることができる。
【０００５】
一方で、画像処理の計算量が画像の内容に依存する場合、フレーム当たりの処理時間が変わり、一定間隔のフレームの取り出しではリアルタイム処理に間に合わない場合もあるため、画像処理装置において、本来処理対象となるフレームをもスキップする必要が生じることもある。
【０００６】
動画像に対してリアルタイムな画像処理を行うシステムにおいて、処理対象となるフレームは入力動画ストリームに対して一意に決まるのが望ましい。これは、リアルタイム性確保のためにフレームのスキップがされる場合は除いて、同じ入力動作ストリームに対して、ある画像処理を複数回実行した場合に、画像処理対象のフレームがその処理が実行される度に異なってしまうと、画像処理結果が同じにならない場合が生じてしまうからである。例えば、同じ顔検出のための画像処理を同じストリームに対して複数回に分けて適用した場合に、例えば１回目の処理結果と、２回目の処理結果とにおいて検出結果が同じにしたいからである。  
また、画像処理結果の再現性が保証できれば、画像処理装置あるいは画像処理プログラムの開発や、それらの不具合修正が容易になるからである。
【０００７】
上述した取り出しフレームの決定方法として、例えばタイマーにより計時して一定間隔で処理対象となるフレームを抜き出す方法が考えられる。しかし、この方法の場合、上述したように、一般に、画像処理の計算量が画像の内容に依存するため、動画のデコードあるいは画像処理のタイミングに応じて、その間隔が変動する可能性がある。
【０００８】
また、他の上述した取り出しフレームの決定方法として、例えば３フレームに一度というように、フレーム数を数えて処理対象フレームを決定する方法も考えられる。しかし、この方法の場合、データ伝送に一時的な問題が発生した場合等、何らかの理由でストリームデータ中にデータの欠陥が生じてフレームが何枚抜けたかが分からない状況が発生し得る。よって、この方法の場合、取り出されるフレームが再生時間に対して所望の間隔にならない上、データの欠陥から復帰後の正常なストリームから取り出されるフレームが、データの欠陥が無かった場合に取り出されるフレームと、異なってしまう可能性がある。
【０００９】
以上のように、動画ストリームに対しては、一意に画像処理対象フレームを特定したいが、デコード時間や画像処理時間等の変動、フレームの抜け等があると、画像処理対象フレームを一意に決定することはできなかった。
【００１０】
また、画像処理を複数の装置で分割して並列実行する場合、例えば、ある動画ストリームの同じフレームに対して、２つの装置の一方が第一の画像処理を行い、もう一方が第二の画像処理を行うような場合に、複数の装置間で処理対象フレームを一致させることは出来なかった。この場合、処理対象フレームを一致させるためには、複数の装置間の同期あるいは通信の機構が、別途必要となる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−３１１４２４号公報
【特許文献２】特開２００２−１２５２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
そこで、本発明は、ストリームデータから画像処理対象のフレームとして取り出されるフレームを一意に決定することができる画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一態様によれば、画像データと再生時刻とフレームレートを含む複数のフレームデータ、を有するストリームデータにおけるフレーム間の不連続を検出し、前記不連続が検出されると前記不連続の存在を示す所定の不連続情報を付加して、各フレームの前記画像データとヘッダ情報を出力する不連続検出部と、前記不連続検出部からの前記画像データと前記ヘッダ情報を前記各フレームに対応付けて保存するFIFOメモリと、前記FIFOメモリから読み出された前記不連続情報の無いフレームについては、連続する２つのフレームの前記再生時刻に基づいて前記ストリームの先頭からの経過時間を決定し、前記不連続情報が付加されたフレームについては、前記不連続の存在する点の前又は後におけるフレームの前記再生時刻及び前記フレームレートに基づいて前記ストリームの先頭からの経過時間を決定し、かつその決定された前記経過時間と画像処理対象のフレームを指定するための設定された時間間隔とに基づいて、前記画像処理対象のフレームあるいは画像処理対象外のフレームを決定する処理対象フレーム決定部と、を有する画像処理装置を提供することができる。
【００１４】
本発明の一態様によれば、画像データと再生時刻とフレームレートを含む複数のフレームデータ、を有するストリームデータにおけるフレーム間の不連続を検出し、前記不連続が検出されると前記不連続の存在を示す所定の不連続情報を付加して、各フレームの前記画像データとヘッダ情報を出力し、出力された前記画像データと前記ヘッダ情報を前記各フレームに対応付けて保存するFIFOメモリから読み出された前記不連続情報の無いフレームについては、連続する２つのフレームの前記再生時刻に基づいて前記ストリームの先頭からの経過時間を決定し、前記不連続情報が付加されたフレームについては、前記不連続の存在する点の前又は後におけるフレームの前記再生時刻及び前記フレームレートに基づいて前記ストリームの先頭からの経過時間を決定し、その決定された前記経過時間と画像処理対象のフレームを指定するための設定された時間間隔とに基づいて、前記画像処理対象のフレームあるいは画像処理対象外のフレームを決定する画像処理方法を提供することができる。
【発明の効果】
【００１５】
本発明によれば、ストリームデータから画像処理対象のフレームとしてから取り出されるフレームを一意に決定することができる画像処理装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態に係る画像処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態の画像処理装置の構成と画像処理の流れを説明するための図である。
【図３】本発明の実施の形態のデコーダが出力するデータの構成を説明するための図である。
【図４】PTS不連続検出部２２による不連続フラグとダミーフレームの付加の仕方の例を説明するための図である。
【図５】PTS不連続検出部２２の処理の流れの例を示すフローチャートである。
【図６】FIFO２１に空きがある場合におけるFIFO２１へのプッシュの状態を説明するための図である。
【図７】FIFO２１が一杯の場合におけるFIFO２１へのプッシュの状態を説明するための図である。
【図８】FIFO２１にストアされるデータの構造を示す図である。
【図９】FIFO２１から読み出されるすなわちポップされるデータの範囲を説明するための図である。
【図１０】不連続でないフレームデータがFIFO２１にプッシュされたときにその一部が上書きによって欠損した場合を説明するための図である。
【図１１】不連続なフレームデータがFIFO２１にプッシュされたときにその一部が上書きによって欠損した場合を説明するための図である。
【図１２】フレームデータ列がFIFO２１にプッシュされるときのヘッダ部３１と画像部３２を説明するための図である。
【図１３】図１２のフレームデータ列がFIFO２１に上書きされることなくプッシュされている場合にポップされるヘッダ部３１、画像部３２及び先読みヘッダ部３１ａを説明するための図である。
【図１４】不連続部分を含むフレームデータ列がFIFO２１にプッシュされていることを説明するための図である。
【図１５】図１４のフレームデータ列中、上書きにより複数のフレームデータが欠損したときにおける、FIFO２１からポップされるヘッダ部３１、画像部３２及び先読みヘッダ部３１ａを説明するための図である。
【図１６】FIFO２１へのデータのプッシュ及びFIFO２１からのデータのポップの動作を説明する為の図である。
【図１７】FIFO２１に空きがあるとき（すなわちFIFOが一杯でないとき）に、補助ヘッダ付加部２３が、FIFO２１に画像データImとヘッダ情報Hdと共に、補助ヘッダ情報Shdを生成して、FIFOブロックに書き込みをする場合を説明するための図である。
【図１８】FIFO２１に空きFIFOブロックがあるときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図１９】FIFO２１に空きFIFOブロックがあるときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２０】FIFO２１に空きFIFOブロックがあるときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２１】FIFO２１に空きFIFOブロックがあるときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２２】FIFO２１に空きがないときに、補助ヘッダ付加部２３が、FIFO２１に画像データImとヘッダ情報Hdと共に、補助ヘッダ情報Shdを生成して、FIFOブロックに書き込みをする場合を説明するための図である。
【図２３】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２４】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２５】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２６】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２７】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２８】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図２９】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図３０】FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。
【図３１】先読みヘッダ加工部２４によって、生成されて出力されるデータの構造を示す図である。
【図３２】上書きが無い場合における出力データの構成を説明するための図である。
【図３３】上書きが無い場合における出力データの構成を説明するための図である。
【図３４】上書きが無い場合における出力データの構成を説明するための図である。
【図３５】通常フレームがストリーム終端フレームによって上書きされたとき（パターン８）に通常フレームを出力する場合における出力データの構成を説明するための図である。
【図３６】通常フレームが通常フレームによって上書きされたとき（パターン１）に通常フレームを出力する場合における出力データの構成を説明するための図である。
【図３７】通常フレームがシーケンス終端フレームによって上書きされたとき（パターン２）に通常フレームを出力する場合における出力データの構成を説明するための図である。
【図３８】ストリーム変化フレームが通常フレームによって上書きされたとき（パターン７）にダミーフレームを出力する場合における出力データの構成を説明するための図である。
【図３９】シーケンス終端フレームがストリーム変化フレームによって上書きされたとき（パターン５）に通常フレームを出力する場合における出力データの構成を説明するための図である。
【図４０】図３９の場合に、さらにストリーム変化フレームが上書きされていないときに通常フレームを出力する場合における出力データの構成を説明するための図である。
【図４１】図３９の場合に、さらにストリーム変化フレームが通常フレームによって上書きされていたときに通常フレームを出力する場合（パターン６）における出力データの構成を説明するための図である。
【図４２】図４１の後にデータがポップされるときの出力データの構成を説明するための図である。
【図４３】表示されるフレームと、画像処理対象とするフレームを指定する時間間隔ｆとの関係を説明するための図である。
【図４４】PTSから経過時間の求め方を説明するための図である。
【図４５】PTSから経過時間の求め方を説明するための図である。
【図４６】PTSから経過時間の求め方を説明するための図である。
【図４７】PTSから経過時間の求め方を説明するための図である。
【図４８】PTSから経過時間の求め方を説明するための図である。
【図４９】PTSから経過時間の求め方を説明するための図である。
【図５０】取り出しフレーム決定部２５における処理の流れの例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の実施の形態を説明する。なお、本発明の実施の形態は、テレビ放送波に含まれる動画像ストリームデータを例に挙げて説明するが、動画像ストリームデータは、ビデオカメラ、デジタルカメラ、DVD等の記憶媒体に記録された動画像ストリームデータ、インターネット等のネットワークを介して配信される動画ストリームデータでもよい。
【００１８】
（全体の構成）
図１は、本発明の実施の形態に係る画像処理装置の構成を示すブロック図である。図１に示すように、画像処理装置１は、デコーダ１１、画像処理部を含む信号処理プロセッサであるデジタルシグナルプロセッサ（以下、DSPという）１２、画像処理装置１全体の制御を行う中央処理装置（CPU）１３、CPU１３において実行されるプログラムを記憶したROM１４、CPU１３が実行時に使用する作業用記憶領域としてのRAM１５、画像をモニタ（図示せず）に表示するための表示インターフェース（以下、I/Fと略す）１６、音声をスピーカ（図示せず）から出力するための音声I/F１７、動画像ストリームデータが入力されるストリームデータI/F１８、リモコン、キーボード、操作ボタン等からの操作信号が入力される操作I/F１９、及び記憶装置としてのハードディスク装置（以下、HDDという）との入出力のための外部記憶装置I/F２０を含む。そして、画像処理装置１内では、これらのデコーダ１１等の各部は、バス１０により互いに接続されている。また、DSP１２は、FIFO（First In First Out）メモリ（以下、FIFOという）２１を有する。ストリームデータI/F１８には、TV放送を受信するチューナ等が接続されている。
【００１９】
なお、ストリームデータI/F１８には、DVD、HDD等の記録媒体からの動画像ストリームデータ（以下、ストリームと略す）を読み出す記録媒体装置が接続され、あるいはインターネット等のネットワークが接続されていてもよく、ストリームは、TV放送のストリームでなくてもよい。ストリームは、複数のフレームデータを含む。
【００２０】
デコーダ１１は、ストリームをデコードして、画像データと時刻情報を含むヘッダ情報を出力する。  
FIFO２１には、デコーダ１１からの各フレームの画像データImとヘッダ情報Hdを含む情報が、ストアされ、DSP１２では、画像データに対して所定の画像処理が実行され、DSP１２は、その画像処理結果を出力する。
【００２１】
画像処理装置１は、ユーザからの操作指示に応じた動作を、例えばストリームの再生、録画等を行う装置である。すなわち、ユーザが画像処理装置１のリモコンを操作すると、操作I/F１９を介してリモコンからの操作信号がCPU１３に供給される。例えば、TV番組の視聴の指示がされると、CPU１３は、ストリームデータI/F１８を介して、TV放送の受信信号に含まれるストリームを受信して、デコーダ１１にデコード処理をさせて、最終的には、デコードされた画像データの映像をモニタ（図示せず）上に表示し、かつスピーカ（図示せず）から音声を出力させることができる。また、例えば、TV番組の録画の指示がされると、CPU１３は、指定された番組を受信して、デコーダ１１にデコードさせ、デコードされた画像データを、外部記憶装置I/F２０を介して、HDD（図示せず）に記憶させることができる。さらにまた、画像処理装置１は、HDDに記憶されたストリームを、あるいはDVD等の記録媒体に記憶されたストリームを、あるいはインターネット等のネットワークを介して受信したストリームを、デコーダ１１によりデコードして、再生等をさせることもできる。  
また、後述するように、DSP１２はフレーム画像に対して、顔検出処理等の所定の画像処理を実行する。例えば、ユーザが画像処理装置１に対して所定の操作指示を与えると、CPU１３は、受信中の、あるいは再生中の、あるいは録画中の、デコードされた画像データに対して、その所定の画像処理を実行させて、その実行結果を出力することができるようになっている。このとき、後述するように、デコードされた全てのフレームに対して、画像処理を行うのではなく、ストリームデータの中から間引きが行われて、取り出されたフレームだけに対して、その画像処理が実行される。そして、このとき、ストリームから取り出される各フレームは、そのストリームに対して一意に決定される。
【００２２】
（全体の処理の流れ）
図２は、本実施の形態の画像処理装置の構成と画像処理の流れを説明するための図である。  
デコーダ１１は、デコード部１１ａと、不連続検出部としてのPTS（Presentation Time Stamp）不連続検出部２２を有する。DSP１２は、FIFO２１に加えて、補助ヘッダ付加部２３と、先読みヘッダ加工部２４と、取り出しフレーム決定部２５と、画像処理部２６とを有する。取り出しフレーム決定部２５は、経過時間累積レジスタ２５ａを含む。FIFO２１と補助ヘッダ付加部２３と先読みヘッダ加工部２４により、FIFO部が構成される。
【００２３】
まず、ストリームは、デコーダ１１のデコード部１１ａにおいてデコードされる。デコーダ１１は、ストリームをデコードして、各フレームの画像データImと、各フレームに対応する時刻情報を生成し、各フレームの画像データImと、時刻情報を含むヘッダ情報HdとをDSP１２に出力する。
【００２４】
DSP１２では、補助ヘッダ付加部２３が、入力されたヘッダ情報Hdに基づいて補助ヘッダ情報Shdを生成する。  
補助ヘッダ付加部２３は、FIFO２１に、画像データImと、ヘッダ情報Hdと、補助ヘッダ情報Shdとを、フレーム毎のデータとしてストアする。すなわち、FIFO２１は、１つのフレームに関するデータとして、これらデータを、内部の記憶領域である各FIFOブロックに格納する。
【００２５】
FIFO２１は、時間的に過去に入力されたものから順にデータを出力する、すなわち先入れ先出しの順番でデータを出力する。なお、データをFIFO２１に入力すなわちプッシュしようとするときに、FIFO２１の内部のFIFOブロックの配列が一杯だった場合は、最後のFIFOブロックに入力したデータすなわち最終FIFOブロックのデータを上書きするようにして、データが格納される。
【００２６】
先読みヘッダ加工部２４は、FIFO２１から、補助ヘッダ情報Shdと、後述する先読みヘッダ情報pHdとを読み出し、その読み出したデータに基づいて、先読みヘッダ情報pHdに対して必要な加工を行い、かつ上書き情報OWIを生成する。先読みヘッダ加工部２４は、画像データIm、ヘッダ情報Hd、先読みヘッダ情報pHd及び上書き情報OWIを、取り出しフレーム決定部２５に供給する。
【００２７】
処理対象フレーム決定部としての取り出しフレーム決定部２５は、先読みヘッダ加工部２４からデータを読み出し、後述するストリームの先頭からの経過時間を算出し、入力された指定時間ｆに基づいて、読み出したフレームが画像処理対象フレームであるか否か、すなわち取り出すべきフレームであるか否かを決定する。例えば、取り出しフレーム決定部２５は、各フレームの画像データに、取り出すべきフレームであるかを示す情報を含む判定結果データを付加して、出力する。
【００２８】
画像処理部２６は、取り出すべきフレームについてのみ所定の画像処理を施して、その処理結果のデータを、例えば、CPU１３、HDD等へ出力する。すなわち、DSP１２中の画像処理部２６は、取り出しフレーム決定部２５により画像処理対象フレームと判定されたフレームの画像に対して所定の画像処理を適用し、その処理結果を出力する。
【００２９】
なお、その所定の画像処理は、プログラムとしてROM１４に記憶され、CPU１３によってその画像処理プログラムが実行されることによって、実行され、処理結果を出力するようにしてもよい。
【００３０】
次に、各部の構成及び機能について説明する。  
（デコーダとデコーダに含まれる不連続検出部）
デコーダ１１は、ストリームをデコードし、デコードして得られたフレームの画像データImと、画像データImに付随する時刻情報を含むヘッダ情報Hdとを、FIFO２１に出力する。時刻情報は、PTS（Presentation Time Stamp）、フレームレート、不連続フラグを含む。PTSとフレームレートは、ストリーム中に元々含まれている情報である。
【００３１】
本実施の形態では、一定間隔の基準として動画データのフレームに付随するデータであるPTSが用いられる。PTSは、動画を表示するタイミングを指示する時刻データであり、いわゆる再生時間における時刻に対応する。PTSは、動画ストリーム中に埋め込まれた値であるため、デコードや画像処理のタイミングに影響されない。また、ストリーム中に欠陥が発生しても、後続のストリームからは再び正常なPTSを取得できるので、欠陥が以降の間引き判定に影響しない。また、ストリーム中に含まれる音声データにもPTSが付いているので、音声との対応もつけることができる。後述するように、本実施の形態では、PTSに基づいて、一定の時間間隔で画像処理対象フレームが選定される。なお、PTSは、必ずしも一定間隔で増加するわけではなく、ストリームの途中で不連続点があれば、減少したり大きく増加したりすることがありうるので、そのような場合にも対応できるように処理が行われる。
【００３２】
図３は、デコーダ１１が出力するデータの構成を説明するための図である。図３に示すように、デコーダ１１内でデコードされたデータは、画像データIm、PTS及びフレームレートを含む。PTS不連続検出部２２は、再生時刻データであるPTSの情報に基づいて、不連続を検出すると同時に、その不連続を取り出しフレーム決定部２５に通知するための便宜上のフレーム（ストリーム中には含まれないフレームなので、ここではダミーフレームと呼ぶ）の生成と挿入を行う。そして、PTS不連続検出部２２から出力される各フレームデータは、ヘッダ情報Hdを含むヘッダ部３１と、画像データImを含む画像部３２とを含む。PTS不連続検出部２２の処理内容については後述する。
【００３３】
ヘッダ部３１は、ヘッダ情報Hdとして、PTS(pts)、フレームレート(frame_rate_code)、及び複数の不連続フラグを含む。複数の不連続フラグは、ストリーム終端(STE)の有無(is_stream_end)、シーケンス終端(SQE)の有無(is_sequence_end)、及びストリーム変化(STC)の有無(is_stream_change)、のフラグであり、これらについては、後述する。
【００３４】
PTSは、そのフレームを表示すべき時刻を示し、ストリームに定期的に格納されている値である。例えば、MPEG2の規格の場合、その値は、[０，２３３−１]の範囲を取り得、（２３３−１）以上の値になると０（ゼロ）に戻る。時刻は９０kHz単位で表され、１秒経過すると、値は９００００だけ増加する。また、PTSは、一般に、ストリームの先頭における値が０（ゼロ）ではなく、任意の値を取り得る。なお、PTSとフレームレートは、通常は、各フレームに含まれるが、PTSは、各フレームについているとは限らない。その場合、デコーダ１１がPTSを補間処理により生成する。
【００３５】
フレームレートは、動画再生時に、単位時間あたり何度画面が更新されるかを表す値（fps: frame per second）であり、ストリーム中に格納されている。フレームレートをFとすると、ある動画において、あるフレームを表示してから次のフレームを表示するまでの時間は標準的には1/F秒である。PTSも、通常は１フレーム当たり９００００／Fずつ増加する。
【００３６】
複数の不連続フラグは、ストリーム中には含まれていない情報であり、PTS不連続検出部２２によって、PTSの不連続が検出されたときに生成される。不連続フラグは、デコードの終了の通知および、デコードの過程で動画に不連続が認められるときにDSP１２に、その終了あるいは不連続を伝えるための付加情報である。
【００３７】
ここで、不連続とは、動画に記録されている内容の不連続、例えばドラマでシーンが変わった等、ではなく、ストリームの欠陥によるフレーム欠落点、あるいは出自の異なる２つのストリームの接合点があることを意味する。フレームの欠落は、デコードの失敗、あるいはPTSの不連続（例えばフレームレートから予測される値と大幅に異なるとき）の存在、を検出することによって、判定することができる。ストリームの接合点は、画像サイズ、フレームレートなどの動画の基本情報の切り替わりや、PTSの不連続の有無によって検出することができる。
【００３８】
ここでは、不連続フラグとして、次の三種類、すなわち、ストリーム終端(STE)の有無(is_stream_end)、シーケンス終端(SQE)の有無(is_sequence_end)、及びストリーム変化(STC)の有無(is_stream_change)の各フラグｔ，ｅ，ｃが定義されている。  
ストリーム終端フラグｔは、ストリームの終点を示すフラグである。PTS不連続検出部２２は、ストリーム終端(STE)を検出すると、無効なフレームとしてダミーフレームを生成し、そのダミーフレームを最後の有効なフレームの後に付加して、そのダミーフレームのヘッダ情報にシーケンス終端フラグｔを付加する。よって、PTS不連続検出部２２は、ダミーフレームを付加するダミーフレーム付加部を構成する。
【００３９】
シーケンス終端フラグｅ は、ストリームの途中の不連続点を示すフラグである。PTS不連続検出部２２は、シーケンス終端(SQE)を検出すると、ダミーフレームを生成し、そのダミーフレームを不連続点の直前のフレームの後に付加して、そのダミーフレームのヘッダ情報にシーケンス終端フラグｅを付加する。
【００４０】
ストリーム変化フラグｃは、ストリームの始点もしくは切り替え点（不連続点以降で最初の有効フレーム）を示すフラグである。PTS不連続検出部２２は、ストリーム変化(STC)を検出すると、不連続点以降で最初の有効フレームのヘッダ情報にストリーム変化フラグｃを付加する。
【００４１】
（不連続検出部の動作）
図４は、上述したPTS不連続検出部２２による不連続フラグとダミーフレームの付加の仕方の例を説明するための図である。  
図４に示すように、ストリームの始点のフレームは、最初の有効フレームであるので、そのフレームのヘッダ情報には、ストリーム変化フラグｃが付加される。その後、不連続点が検出されると、その不連続点に、ダミーフレームが挿入され、かつ不連続点の最初の有効フレームのヘッダ情報に、ストリーム変化フラグｃが付与される。図４では、斜線で示すフレームが、付加すなわち挿入されたダミーフレームを示す。
【００４２】
その後も同じように、不連続点が検出されると、ダミーフレームの挿入と、不連続点の最初の有効フレームのヘッダ情報にストリーム変化フラグｃの付加とが、行われる。  
ストリームの終点が検出されると、最後のフレームの後にダミーフレームを付加しそのダミーフレームのヘッダ情報にストリーム終端フラグｔが付加される。
【００４３】
PTS不連続検出部２２は、ストリームにおけるフレーム間の不連続を検出し、不連続が検出されるとその不連続の存在を示す所定の不連続情報であるフラグを付加して、各フレームの画像データとヘッダ情報を出力する。
【００４４】
PTS不連続検出部２２の処理の流れを説明する。図５は、PTS不連続検出部２２の処理の流れの例を示すフローチャートである。なお、PTS不連続検出部２２は、回路により構成されてもよいし、あるいはソフトウエアプログラムにより構成されてもよく、図５は、その回路等における処理内容を示すものである。
【００４５】
図５に示すように、まず、PTS不連続検出部２２では、デコードされたフレームが監視され、不連続が存在するか否かが判定される（ステップS1）。その判定は、連続するフレーム間におけるPTSの値が、所定の値以上の差があるか否かによって、行われる。
【００４６】
連続するフレーム間に所定の値以上の差がある場合は、ステップS1でYESとなり、PTS不連続検出部２２は、上述したようなダミーフレームの挿入処理と、ヘッダ部への不連続フラグの付加処理を行う（ステップS2）。すなわち、ストリーム終端(STE)及びシーケンス終端(SQE)の場合は、ダミーフレームの挿入あるいは付加が行われる。さらに、PTS不連続検出部２２は、ストリーム終端(STE)の場合は、最後の有効なフレームの後に付加されたダミーフレームの時刻情報にストリーム終端フラグｔを付加し、シーケンス終端(SQE)の場合は、挿入されたダミーフレームの時刻情報にシーケンス終端フラグｅを付加し、ストリーム変化(STC)の場合は、ストリームの始点あるいは切り替え点の最初の有効フレームの時刻情報にストリーム変化フラグｃを付加する。
【００４７】
（FIFO部）
次にFIFO２１、補助ヘッダ付加部２３及び先読みヘッダ加工部を含むFIFO部の構成と動作について説明する。
【００４８】
（FIFO）
FIFO２１は、配列データとして、各フレームデータを格納するためのデータ保持部を含む。FIFO２１は、PTS不連続検出部２２からの画像データImとヘッダ情報Hdを各フレームに対応付けて内部のFIFOブロックに保存する。  
FIFO２１のデータ保持部は、複数のFIFOブロックからなり、各FIFOブロックには、デコーダ１１から入力すなわちプッシュ(push)された１つのフレームデータが格納される。格納されるフレームデータは、時刻情報を含むヘッダ情報Hdと、画像データImを含む。さらに、各FIFOブロックは、上述したように、各フレームについての補助ヘッダ情報Shdも格納できるように構成されている。  
FIFO２１のFIFOブロックのデータは、取り出しフレーム決定部２５からの取り出し要求に従って、時間的に過去にストアされたものから順にデータを出力すなわちポップ(pop)される。
【００４９】
本実施の形態では、取り出しフレームの決定に必要な時刻情報を失うことなくリアルタイム性確保のための処理スキップを許容するデータ授受を行うFIFOメモリが用いられる。すなわち、動画ストリームのデコーダであるデコード部１１ａは、リアルタイムにストリームのデコードを行い、時刻情報を含むヘッダ情報Hdと画像データImをFIFO２１に書き込む。この場合、画像処理部の処理が追いついておらずFIFO２１が一杯であればフレームが自動的に上書きされる。しかし、取り出しフレーム決定部２５は、上書きが発生していても、後述するように、必要な時刻情報をFIFO２１から取り出すことができる。これによりリアルタイム性確保のための処理スキップが行われても、それ以降の取り出しフレームの決定処理の結果は、処理スキップが行われなかったときと同じになる。
【００５０】
また、本実施の形態の画像処理装置によれば、何らかの理由で画像処理が中断された後に、前に処理し終わったところまでのストリームを読み飛ばして途中から画像処理を再開したときにも、取り出しフレームの決定の一意性は保たれる。すなわち、再開後の取り出しフレームの決定果結果は、ストリーム先頭から中断なしに処理をしたときと同じ結果となる。
【００５１】
（FIFOへのプッシュ）
図６は、FIFO２１に空きがある場合におけるFIFO２１へのプッシュの状態を説明するための図である。図６に示すように、フレームデータ（ｎ＋３）は、空いているFIFOブロックにプッシュされる。図７は、FIFO２１が一杯の場合におけるFIFO２１へのプッシュの状態を説明するための図である。図７に示すように、フレームデータ（ｎ＋５）は、空いているFIFOブロックがないので、最終FIFOブロックに記憶されたフレームデータ（ｎ＋４）を上書きするようにプッシュされる。このように、FIFO２１に空きがあれば、フレームデータは順次プッシュされるが、FIFO２１が一杯のときは、最後にプッシュされたフレームデータだけが上書きされる。
【００５２】
（FIFOのデータ構造）
図８は、FIFO２１にストアされるデータの構造を示す図である。図８に示すように、FIFO２１の各FIFOブロックにストアされるデータは、ヘッダ情報Hdを含むヘッダ部３１と、画像データImを含む画像部３２と、補助ヘッダ情報Shdを含む補助ヘッダ部３３を含む。ヘッダ部３１は、そのフレームに関する、時刻情報であるPTS、フレームレート及びPTS不連続検出部２２によって生成された不連続フラグを含む。画像部３２は、フレーム画像である画像データImを含む。補助ヘッダ部３３は、FIFO２１に入力された各データに対して、後述する補助ヘッダ付加部２３によって追加された情報を含む。
【００５３】
（FIFOからのポップ）
FIFO２１から読み出されるデータには、各フレームについての画像データImと、ヘッダ情報Hdに加えて、後述する先読みヘッダ加工部２４によって加工された先読みヘッダ情報pHdと先読みヘッダ加工部２４によって生成された上書き情報OWIが含まれる。  
取り出しフレーム決定部２５は、先読みヘッダ加工部２４から出力されたヘッダ情報Hd、先読みヘッダ情報pHdと上書き情報OWIに基づいて、ポップした現在のフレームを取り出すか、あるいは間引くか否かを判定する。取り出しフレーム決定部２５は、その判定をするために、次のフレームの時刻情報を含む先読みヘッダ情報pHdを必要とする。
【００５４】
すなわち、本実施の形態の画像処理装置１では、顔検出処理等の画像処理のために、先読みヘッダ加工部２４は、FIFO２１にストアされているデータのポップ時に、FIFO２１の先頭ブロックのヘッダ部３１と画像部３２に加え、２番目のブロックのヘッダ部３１も併せて読み出すようになっている。この２番目のブロックのヘッダ部３１は、本来は次に読まれるべき情報であるが、１番目のブロックのヘッダ部３１を読み出すときに、先読みされる先読みヘッダ部である。
【００５５】
図９は、FIFO２１から読み出されるすなわちポップされるデータの範囲を説明するための図である。図９に示すように、フレーム番号ｎ（ｎは整数）のフレームデータ（以下、フレーム番号ｎのフレームデータをフレームデータｎという）が読み出されるときには、フレームデータｎのヘッダ部３１と画像データ部３２に加えて、先読みヘッダ情報pHdとして、フレームデータ（ｎ＋１）のヘッダ部３１も読み出される。図９では、点線で示す読み出し範囲Rのデータが読み出される。
【００５６】
１フレームがポップされた後に、次のフレームデータ（ｎ＋１）が読み出されるときには、フレームデータ（ｎ＋１）のヘッダ部３１と画像データ部３２に加えて、先読みヘッダ情報pHdとして、フレームデータ（ｎ＋２）のヘッダ部３１も読み出される。なお、上述したように、FIFO２１からフレームデータが読み出されるときには、さらに、上書き情報OWIが付加される。
【００５７】
また、データがポップによってFIFO２１から読み出されるときにFIFO２１から削除されるデータは、先頭FIFOブロックのフレームデータのみであり、先読みヘッダ部である２番目のヘッダ部３１のデータは、読み出されるが、FIFO２１中に残される。
【００５８】
よって、FIFO２１からデータが読み出されるのは、FIFO２１にデータが存在するときであるが、FIFO２１に２FIFOブロック分以上のデータが格納されているときにポップ可能とされる。１FIFOブロック分のみのデータしか格納されていないときには、次のデータがプッシュされるまで、ポップは許可されない。
【００５９】
以上のように、読み出されるデータに加えて次のフレームのデータのヘッダ部（すなわち先読みヘッダ部）も読み出すことによって、取り出しフレーム決定部２５が、入力されるフレーム画像間の時刻情報のずれを取り出し易くし、取り出しフレーム決定部２５のおける処理を簡素化が図られている。  
以下、FIFO２１からのフレームデータが読み出されるときに、次のデータのヘッダ部３１を併せて読み出されるようにした機能を、時刻先読み機能という。
【００６０】
（不連続フラグと時刻情報）
次に、FIFO２１においてフレームデータが上書きされても、取り出しフレーム決定部２５における判定に影響を及ぼさないように、不連続フラグと、それに付随する時刻情報を失わないようにする処理について説明する。
【００６１】
始めに、不連続でない（すなわち連続する）フレームデータがFIFO２１にプッシュされたときにその一部が上書きによって欠損した場合を説明する。図１０は、不連続でないフレームデータがFIFO２１にプッシュされたときにその一部が上書きによって欠損した場合を説明するための図である。図１０に示すように、再生時間の経過と共にフレームデータが順番にFIFO２１に入力される。図１０では、フレーム番号１から１０のフレームデータが順番に入力されたことを示している。しかし、途中のフレーム番号３から８の範囲R1のフレームデータが、FIFO２１が一杯のために上書きされて欠けている。P1で示すフレームデータ２までは、PTSを得、また、P2で示すフレームデータ９からPTSが得られている。
【００６２】
図１０の場合、上書きされずに得られたP2で示すフレームデータ９のPTSと、その直前に得たP1で示すフレームデータ２のPTSとの差分をとれば、経過時間の増分あるいは差分td1が得られるので、上書きが起こらなかったとしたときと同じ経過時間を計算により得ることができる。
【００６３】
次に、不連続なフレームデータがFIFO２１にプッシュされたときにその一部が上書きによって欠損した場合を説明する。図１１は、不連続なフレームデータがFIFO２１にプッシュされたときにその一部が上書きによって欠損した場合を説明するための図である。
【００６４】
図１１に示すように、再生時間の経過と共にフレームデータが順番にFIFO２１に入力される。図１１では、フレーム番号１から９のフレームデータが順番に入力されたことを示している。しかし、途中のフレームデータ３から７が、FIFO２１が一杯のために上書きされて欠けている。さらに、フレームデータ５と６の間に、P12で示す位置にシーケンス終端(SQE) が存在する。
【００６５】
この場合、図１１に示すように、上書きした複数のフレームデータの中に不連続が存在するため、フレームデータ５と６の間でPTSが大きく変わっている。よって、フレームデータ５と６間のPTS差分は大きいので、その差分を１フレーム分の経過時間とするのは適切でない。ましてや、フレームデータ２と８間のPTS差分を用いてフレーム番号８の経過時間とするのも正しくない。
【００６６】
そこで、ここでは、以下の３つの値の合計として経過時間が算出される。  
第１の差分（td11）の値：PTSが得られているP11のフレームデータ（図１１ではフレームデータ２）と不連続点P12のシーケンス終端(SQE) の直前のフレームデータ（図１１ではフレームデータ５）とのPTS差分
第２の差分（td12）の値：P12で示す不連続の直前のフレームデータのフレームレートから計算した１フレーム分の経過時間
第３の差分（td13）：不連続後に復帰したP13で示す最初のフレーム（図１１ではフレームデータ６）とP14で示すPTSが得られたフレームデータ（図１１ではフレームデータ８）とのPTS差分
計算によりこれら３つの値を得るために、次の情報を消失させずに維持している必要がある。  
第１の情報（I1）：不連続フラグ（ｅ、ｃ、ｔ）
第２の情報（I2）：シーケンス終端(SQE)（sequence_end）直前のPTSとフレームレート
第３の情報（I3）：ストリーム変化(STC)（stream_change）時のPTS
第１の情報である不連続フラグは、上述した不連続フラグｅ、ｃ、ｔである。第２の情報であるシーケンス終端(SQE)直前のPTSとフレームレートは、例えば、図１１の場合、フレームデータ５のPTSとフレームレートである。第３の情報であるストリーム変化(STC)時のPTSは、例えば、図１１の場合、フレームデータ６のPTSである。
【００６７】
図１２から図１５を用いて、不連続フラグの維持について説明する。図１２は、フレームデータ列がFIFO２１にプッシュされるときのヘッダ部３１と画像部３２を説明するための図である。図１３は、図１２のフレームデータ列がFIFO２１に上書きされることなくプッシュされている場合にポップされるヘッダ部３１、画像部３２及び先読みヘッダ部３１ａを説明するための図である。  
図１２に示すように、デコーダ１１から、ヘッダ部３１と画像部３２を含むフレームデータ列が、フレーム番号の小さい方から順にFIFO２１にプッシュされていく場合を想定する。図１２ではフレーム３と４の間に不連続点があり、フレーム８がストリーム終端(STE)であることを示している。
【００６８】
PTS不連続検出部２２は、上述したように、シーケンス終端(SQE)を検出すると、ダミー画像データｄのフレーム（ダミーフレーム）を生成し、そのダミーフレームを不連続点の直前のフレームの後に付加して、そのダミーフレームのヘッダ情報Ｈｄの時刻情報にシーケンス終端フラグｅを付加する。さらに、PTS不連続検出部２２は、ストリーム変化(STC)を検出すると、不連続点以降で最初の有効フレームの時刻情報にストリーム変化フラグｃを付加する。よって、図１２に示すように、フレームデータ３と４の間にはダミーフレームｄのフレームデータが挿入され、ダミーフレームのヘッダ部３１には、シーケンス終端フラグｅが付加される。そして、フレームデータ４のヘッダ部３１には、ストリーム変化フラグｃが付加される。
【００６９】
図１２に示すフレームデータが上書きすることなくFIFO２１に入力された場合、先読みヘッダ部３１ａも含めて読み出し範囲Ｒのデータが、FIFO２１から図１３に示すように読み出される。ただし、最終フレームデータ（図１３のフレーム８の直後のストリーム終端(STE)に対する先読みヘッダ部は存在しないので、便宜的にストリーム変化フラグｃのついたヘッダ（図１３の９ｃ）が生成されて付加されている。
【００７０】
次に、このようなフレームデータ列中の不連続部分を跨いだ複数のフレームデータがFIFO２１において上書きされた場合について説明する。図１４は、不連続部分を含むフレームデータ列がFIFO２１にプッシュされていることを説明するための図である。そして、図１４において、×印は、フレームデータ３から５が、FIFO２１において上書きにより欠損したことを示している。図１５は、図１４のフレームデータ列中、上書きにより複数のフレームデータが欠損したときにおける、FIFO２１からポップされるヘッダ部３１、画像部３２及び先読みヘッダ部３１ａを説明するための図である。  
図１５に示すように、FIFO２２からポップされるデータの範囲Rは、図１３と同様であるが、先読みヘッダ部３１ａのデータは、後述するように、ポップされるときに、加工される。また、フレームデータが必要に応じて生成されて挿入される。これら加工と挿入は、上述した３つの差分td11,td12,td13を計算するために必要な第１から第３の情報（I1,I2.I3）を、消失しないようにするためである。先読みヘッダ部３１ａのデータの変更およびフレームデータの挿入については、後述する。
【００７１】
簡単に言えば、FIFO２１においてフレームデータ３から５が上書きされたとしても、図１５に示すFIFO２１からポップされるときには、上書きされたシーケンス終端フラグｅとストリーム変化フラグｃのついた先読みヘッダ３１ａを持つフレームデータがポップされるように、先読みヘッダの加工とフレームデータの挿入が行われる。
【００７２】
なお、フレームデータの挿入時は、データ量の大きいフレーム画像は、置き換え等しないで無効な画像であるとし、挿入されたフレームであること（画像が無効であること）を示すフラグ情報を付加して出力される。図１５の場合、フレームデータ４の先読みヘッダ部３１ａ（図１５の４ｃ）に対応するフレームのヘッダ部３１と画像部３２のデータは、上書きにより消失しており、ダミーデータｄとなる。
【００７３】
また、これらの置き換え等により復元された先読みヘッダ部３１ａの中には、時刻情報も復元されて存在する。シーケンス終端フラグｅのついた先読みヘッダ部３１ａ（図１５のｅ）にはその直前のフレームデータ（図１５ではフレーム３）のPTSとフレームレートが格納される。また、ストリーム変化フラグｃのついた先読みヘッダ部３１ａ（図１５の４ｃ）にはそのフレーム（フレーム４）のPTSが格納される。
【００７４】
この機能は、不連続情報損失防止機能という。この機能は、データが上書きされても取り出しフレーム決定部２５の決定結果に影響を及ぼさないように、不連続フラグと、それに付随する時刻情報を失わないようにするためのものである。
【００７５】
図１６は、上述した、FIFO２１へのデータのプッシュ及びFIFO２１からのデータのポップの動作を説明する為の図である。補助ヘッダ付加部２３は、各フレームについての画像データImと、時刻情報を含むヘッダ情報Hdとを、それぞれFIFO２１の１つのFIFOブロック部の画像データImを記憶する領域と、ヘッダ情報Hdを記憶する領域とに記憶すると共に、補助ヘッダ情報Shdも、補助ヘッダ情報Shdを記憶する領域に記憶する。補助ヘッダ付加部２３は、最終FIFOブロックの補助ヘッダ情報Shdの内容を、必要に応じて読み出し、変更する。よって、FIFO２１は、最終FIFOブロックに対して、データのプッシュができるだけでなく、データの参照および変更もすることができるように構成されている。
【００７６】
FIFOによる先読み先出しの規則に従って入力された画像データIm、ヘッダ情報Hd及び補助ヘッダ情報Shdは、先読みヘッダ加工部２４によって、古いデータから読み出される。先読みヘッダ加工部２４は、上述したように、データのポップ時に、上書き情報OWIを生成し、かつ先読みヘッダ情報pHdと、ヘッダ情報Hdと画像データImを出力する。
【００７７】
（補助ヘッダの構成）
補助ヘッダ情報Shdの構成について説明する。  
補助ヘッダ情報Shdは、上書き回数（overwrite_count）OWC、ストリーム変化(STC)後の上書き回数（post_stream_change_overwrite_count）C1、ストリーム変化回数（stream_change_count）C2、ストリーム変化PTS（stream_change_pts）、ストリーム変化フレームレート（stream_change_frame_rate）、ストリーム終端回数（stream_end_count）C3、ストリーム終端PTS（stream_end_pts）、ストリーム終端フレームレート（stream_end_frame_rate）、シーケンス終端回数（sequence_end_count）C4、シーケンス終端PTS（sequence_end_pts）、及びシーケンス終端フレームレート（sequence_end_frame_rate）の各情報を含む。
【００７８】
上書き回数OWCは、最終FIFOブロックが上書きされた回数を示す。  
ストリーム変化(STC)後の上書き回数C1は、そのFIFOブロックにストリーム変化(STC)が有りとなった後の上書き発生回数を示す。  
ストリーム変化回数C2は、上書きが発生していない場合は、ストリーム変化(STC)の有無を示し、上書きが発生した場合は、上書きされたデータの中でストリーム変化(STC)が有りとなった回数を示す。
【００７９】
ストリーム変化PTSは、上書きが発生していない場合は、保持するフレームのPTSを示し、上書きが発生した場合は、上書きされたデータの中で最初にストリーム変化(STC) が有りとなった時のPTSを示す。  
ストリーム変化フレームレートは、上書きが発生していない場合は、保持するフレームのフレームレートを示し、上書きが発生した場合は、上書きされたデータの中で最初にストリーム変化(STC) が有りとなった時のフレームレートを示す。
【００８０】
ストリーム終端回数C3は、上書きが発生していない場合は、ストリーム終端(STE)の有無を示し、上書きが発生した場合は、上書きされたデータの中でストリーム終端(STE)だった回数を示す。  
ストリーム終端PTSは、上書きが発生していない場合は、保持するフレームのPTSを示し、上書きが発生した場合は、上書きされたデータの中で最初にストリーム終端(STE) が有りとなった直前のPTSを示す。
【００８１】
ストリーム終端フレームレートは、上書きが発生していない場合は、保持するフレームのフレームレートを示し、上書きが発生した場合は、上書きされたデータの中で最初にストリーム終端(STE) が有りとなった直前のフレームレートを示す。
【００８２】
シーケンス終端回数C4は、上書きが発生していない場合は、シーケンス終端(SQE)の有無を示し、上書きが発生した場合は、上書きされたデータの中でシーケンス終端(SQE) が有りとなった回数を示す。  
シーケンス終端PTSは、上書きが発生していない場合は、保持するフレームのPTSを示し、上書きが発生した場合は、上書きされたデータの中で最初にシーケンス終端(SQE) が有りとなった直前のPTSを示す。  
シーケンス終端フレームレートは、上書きが発生していない場合は、保持するフレームのフレームレートを示し、上書きが発生した場合は、上書きされたデータの中で最初にシーケンス終端(SQE) が有りとなった直前のフレームレートを示す。
【００８３】
以上のように、補助ヘッダ生成部としての補助ヘッダ付加部２３は、ストリームの終端を示すストリーム終端フラグｔとストリームに含まれるシーケンスの終端を示すシーケンス終端フラグｅとストリームの変化を示すストリーム変化フラグｃの各情報に基づいて、上書き回数OWC、ストリームの変化の後の上書き回数C1、ストリームの変化の有無、ストリームの終端の有無、シーケンスの終端の有無、ストリームの変化があったときのPTS、シーケンスの終端直前のPTS、及びシーケンスの終端直前のフレームレートを含む補助ヘッダ情報を、少なくとも生成する。
【００８４】
なお、ここでは、FIFOの１FIFOブロックについて、各不連続フラグがそれぞれ高々１回上書きされることを想定しているが、同一フラグの多重上書きは内部情報を配列化することで拡張してもよい。また、配列数を超える多重上書きが発生した場合は、取り出し時に付加情報としてエラーが通知されるように構成される。一般に、ストリームの不連続点と不連続点の間には多数のフレームがあるので、多重上書きが起こるとすれば、大量の上書きが発生しているか、または非常に短い周期で不連続点の現れる特殊なストリームであることになるので、許容する上書き回数を多くとる必要はない。
【００８５】
さらになお、通常の（すなわち、終端でないあるいは不連続でない）フレームが上書きされた場合にはデータの挿入はされないが、付加情報として上書き回数を出力することで取り出し側に上書きの有無が通知される。さらに、通常フレームを上書きしたフレームが不連続点に該当した場合は、FIFOブロックの内部情報に保持している、直前のフレームの時刻が、ヘッダ情報Hdに格納されて出力される。
【００８６】
（補助ヘッダの生成）
図１７は、FIFO２１に空きがあるとき（すなわちFIFOが一杯でないとき）に、補助ヘッダ付加部２３が、FIFO２１に画像データImとヘッダ情報Hdと共に、補助ヘッダ情報Shdを生成して、FIFOブロックに書き込みをする場合を説明するための図である。
【００８７】
（FIFOに空きがあるとき）
図１７に示すように、FIFO２１に空きがあるとき、補助ヘッダ付加部２３は、補助ヘッダ情報Shdにおける、上書き回数OWC、及びストリーム変化(STC)後の上書き回数C1に、０（ゼロ）を書き込む。
【００８８】
補助ヘッダ付加部２３は、入力されたヘッダ情報Hd中のストリーム変化の有無 (is_stream_change)の内容をストリーム変化回数C2にコピーし、ストリーム終端の有無 (is_stream_end)の内容をストリーム終端回数C3にコピーし、シーケンス終端(SQE)の有無(is_sequence_end)の内容をシーケンス終端回数C4にコピーする。
【００８９】
さらに、補助ヘッダ付加部２３は、入力されたヘッダ情報Hd中のストリーム変化PTS(pts)の内容を、ストリーム変化PTS、ストリーム終端PTS、及びシーケンス終端PTSにコピーする。さらに、補助ヘッダ付加部２３は、入力されたヘッダ情報Hd中のフレームレートの内容をストリーム変化フレームレート、ストリーム終端フレームレート及びシーケンス終端フレームレートにコピーする。以上のようにして、補助ヘッダ情報Shdは更新される。
【００９０】
なお、入力されたヘッダ情報Hdと、画像データImは、そのままFIFOブロック内にコピーされる。
【００９１】
従って、図１７に示すように、補助ヘッダ付加部２３によって、入力されたヘッダ情報Hdと画像データImから、補助ヘッダ情報Shdと、ヘッダ情報Hd及び画像データImがFIFO２１内のFIFOブロックに記憶される。
【００９２】
（例）
例を挙げて説明する。  
図１８から図２１は、FIFO２１に空きFIFOブロックがあるときにおける、FIFO２１へのデータの書き込みを説明するための図である。なお、ここでは、フレーム０から８までの入力があるときであって、途中フレーム３と４の間にシーケンス終端(SQE)があった場合の例を想定して説明する。各図の左下は、フレームをプッシュした後のFIFOの最終ブロックの補助ヘッダ情報の内容を示す。
【００９３】
図１８は、FIFO２１には、フレーム１と２のデータだけが保持されているので、通常フレームのフレーム３の画像データImとヘッダ情報Hdはそのまま記憶され、補助ヘッダ部３３には、フレーム３のヘッダ情報Hdがそのまま保持されることを示している。補助ヘッダ部３３において、ストリーム変化PTS、ストリーム終端PTS及びシーケンス終端PTSには、フレーム３のPTS(pts_3)がコピーされ、ストリーム変化フレームレート、ストリーム終端フレームレート及びシーケンス終端フレームレートには、フレーム３のフレームレート(f/r_3)がコピーされる。
【００９４】
図１９は、FIFO２１には、フレーム２と３のデータだけが保持されているので、シーケンス終端フレームのダミーフレームの画像データdとシーケンス終端(SQE)のヘッダ情報Hd(シーケンス終端フラグｅを含む)はそのまま記憶され、補助ヘッダ部３３には、シーケンス終端(SQE)を示すシーケンス終端フラグｅが保持されることを示している。補助ヘッダ部３３において、ストリーム変化PTS、ストリーム終端PTS及びシーケンス終端PTSには、ダミーフレームの無効なデータ(ｎ/a)がコピーされ、ストリーム変化フレームレート、ストリーム終端フレームレート及びシーケンス終端フレームレートにも、同様に無効なデータ(ｎ/a)がコピーされる。  
そして、補助ヘッダ３３においてシーケンス終端回数C4が「１」に設定される。
【００９５】
図２０は、FIFO２１には、フレーム３とシーケンス終端フレームだけが保持されているので、続く通常フレームのフレーム４の画像データImとヘッダ情報Hd（ストリーム変化フラグｃを含む）はそのまま記憶され、補助ヘッダ３３には、フレーム４はストリーム変化(STC)があることを示すストリーム変化フラグｃが保持されることを示している。補助ヘッダ３３において、ストリーム変化PTS、ストリーム終端PTS及びシーケンス終端PTSには、フレーム４のPTS(pts_4)がコピーされ、ストリーム変化フレームレート、ストリーム終端フレームレート及びシーケンス終端フレームレートにも、同様にフレーム４のフレームレート(f/r_4)がコピーされる。  
そして、補助ヘッダ３３においてストリーム変化回数C2が「１」に設定される。
【００９６】
図２１は、FIFO２１には、フレーム７と８だけが保持されているので、続くストリーム終端フレームのダミーフレームの画像データImとストリーム終端(STE)のヘッダ情報Hd（ストリーム終端フラグｔを含む）はそのまま記憶され、補助ヘッダ３３には、ストリーム終端(STE)を示すストリーム終端フラグｔが保持されることを示している。補助ヘッダ３３において、ストリーム変化PTS、ストリーム終端PTS及びシーケンス終端PTSには、プッシュされるストリーム終端フレームの無効なデータ(ｎ/a)がコピーされ、ストリーム変化フレームレート、ストリーム終端フレームレート及びシーケンス終端フレームレートにも、同様に無効なデータ(ｎ/a)がコピーされる。  
そして、補助ヘッダ３３においてストリーム終端回数C3が「１」に設定される。 
FIFO２１に空きがあるときには、以上のようにFIFOブロックにデータが生成されて保持される。
【００９７】
（FIFOに空きがないとき）
図２２は、FIFO２１に空きがないときに、補助ヘッダ付加部２３が、FIFO２１に画像データImとヘッダ情報Hdと共に、補助ヘッダ情報Shdを生成して、FIFOブロックに書き込みをする場合を説明するための図である。  
図２２に示すように、FIFO２１に空きがないとき、補助ヘッダ付加部２３は、補助ヘッダ情報Shdにおける上書き回数OWCは、上書きがある度に、インクリメントされる。
【００９８】
ストリーム変化(STC)後の上書き回数C1は、最後に入力されたあるいは上書きされた最終FIFOブロックの補助ヘッダ情報Shdを参照して、最終FIFOブロックの補助ヘッダ情報Shdのストリーム変化回数C2が０（ゼロ）でない（すなわちストリーム変化(STC)があったことを示すストリーム変化フラグｃを以前に受信していた）ときに、上書きがある度に、補助ヘッダ付加部２３によって、インクリメントされる。
【００９９】
ストリーム変化回数C2、ストリーム終端回数C3及びシーケンス終端回数C4は、それぞれ、ストリーム変化フラグｃ、ストリーム終端フラグｔ及びシーケンス終端フラグｅを受信する度に、インクリメントされる。
【０１００】
ストリーム変化PTSとストリーム変化フレームレートには、最終FIFOブロックの補助ヘッダ情報Shdにおけるストリーム変化回数C2が０（ゼロ）であって、かつストリーム変化(STC)があったときに、それぞれ、入力されたPTSとフレームレートの値がコピーされる。始めてのストリーム変化(STC)があったときに、ストリーム変化PTSとストリーム変化フレームレートは、入力されたデータによってコピーされる。すなわち、ストリーム変化（STC）が始めて発生したフレームのPTSとフレームレートが、ストリーム変化PTSとストリーム変化フレームレートとして記憶される。
【０１０１】
ストリーム終端PTSとストリーム終端フレームレートには、更新後のストリーム終端回数C3が０（ゼロ）のときに、それぞれ、入力されたPTSとフレームレートの値がコピーされる。ストリーム終端(STE)が発生していないときに、ストリーム終端PTSとストリーム終端フレームレートは、入力されたデータによってコピーされる。すなわち、ストリーム終端（STE）が発生していない中で最新のフレームのPTSとフレームレート（ストリーム終端の直前のPTSとフレームレート）が、ストリーム終端PTSとストリーム終端フレームレートとして記憶される。
【０１０２】
シーケンス終端PTSとシーケンス終端フレームレートには、更新後のシーケンス終端回数C4が０（ゼロ）のときに、それぞれ、入力されたPTSとフレームレートの値がコピーされる。シーケンス終端(SQE)が発生していないときに、シーケンス終端PTSとシーケンス終端フレームレートは、入力されたデータによってコピーされる。すなわち、シーケンス終端（SQE)が発生していない中で最新のフレームのPTSとフレームレート（シーケンス終端の直前のPTSとフレームレート）が、シーケンス終端PTSとシーケンス終端フレームレートとして記憶される。  
以上のようにして、補助ヘッダ情報Shdは更新される。  
特に、補助ヘッダ付加部２３は、シーケンスの終端（ｅ）の発生までヘッダ情報HdのPTSとフレームレートをコピーすることによって、シーケンスの終端（ｅ）直前のPTSとシーケンスの終端（ｅ）直前のフレームレート（f/r）を記憶する。さらに、補助ヘッダ付加部２３は、ストリームの変化（ｃ）が始めて発生したときにヘッダ情報HdのPTSをコピーすることによって、ストリームの変化（ｃ）があったときのPTSを記憶する。  
なお、入力されたヘッダ情報Hdと、画像データImは、そのまま最終FIFOブロック内に上書きされる。
【０１０３】
（例）
例を挙げて説明する。  
図２３から図３０は、FIFO２１に空きFIFOブロックがないときにおける、FIFO２１へのデータの書き込みを説明するための図である。なお、フレーム番号に負数が含まれているが、負数の表現は、FIFO２１に空きがあるときの説明（図１８〜２１）とプッシュするフレーム番号を同じにするため便宜上のものである。各図の左下は、フレームを上書きした後のFIFO２１の最終FIFOブロックの補助ヘッダ情報の内容を示す。なお、ここでは、８つの上書きのパターンの例を想定して説明する。
【０１０４】
上書きのパターンとしては、
１）パターン１：通常フレーム（ｎ）が通常フレーム（ｎ）によって上書きされるパターン
２）パターン２：通常フレーム（ｎ）がシーケンス終端フレーム（ｅ）によって上書きされるパターン
３）パターン３：通常フレーム（ｎ）がシーケンス終端フレーム（ｅ）によって上書きされ、さらにそのフレームがストリーム変化フレーム（ｃ）によって上書きされるパターン
４）パターン４：通常フレーム（ｎ）がシーケンス終端フレーム（ｅ）によって上書きされ、さらにそのフレームがストリーム変化フレーム（ｃ）によって上書きされ、さらにそのフレームが通常フレーム（ｎ）によって上書きされるパターン
５）パターン５：シーケンス終端フレーム（ｅ）がストリーム変化フレーム（ｃ）によって上書きされるパターン
６）パターン６：シーケンス終端フレーム（ｅ）がストリーム変化フレーム（ｃ）によって上書きされ、さらにそのフレームが通常フレーム（ｎ）によって上書きされるパターン
７）パターン７：ストリーム変化フレーム（ｃ）が通常フレーム（ｎ）によって上書きされるパターン
８）パターン８：通常フレーム（ｎ）がストリーム終端フレーム（ｔ）によって上書きされるパターン
図２３は、パターン１の場合を説明するための図である。図２３は、FIFO２１の最終FIFOブロックにはフレーム２のデータが保持されているので、フレーム３による上書きが発生し、補助ヘッダ３３の上書き回数OWCは「１」にインクリメントされる。通常フレームのフレーム３の画像データImとヘッダ情報Hdはそのまま最終FIFOブロックに記憶される。
【０１０５】
また、補助ヘッダ部３３において、ストリーム変化PTSとストリーム変化フレームレートは、フレーム３がストリーム変化フラグ（ｃ）を持たないので、上書き前に保持されていたフレーム２のPTS(pts_2)とフレームレート(f/r_2)がそのまま保持される。このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム３のPTS(pts_3)とフレーム３のフレームレート(f/r_3)がコピーされる。このFIFOブロックにはシーケンス終端フラグ（ｅ）を持ったフレームがまだプッシュされていないので、シーケンス終端PTSとシーケンス終端フレームレートには、フレーム３のPTSとフレームレートがコピーされる。
【０１０６】
図２４は、パターン２の場合を説明するための図である。図２４は、FIFO２１の最終FIFOブロックにはフレーム３のデータが保持されているので、シーケンス終端フレーム（ｅ）が上書きされるときには、補助ヘッダ３３の上書き回数OWCは「１」にインクリメントされ、シーケンス終端回数C4は、「１」にインクリメントされる。ダミーフレーム（ｄ）の画像データIm（ｄ）とヘッダ情報Hd（シーケンス終端フラグｅを含む）は最終FIFOブロックに記憶される。
【０１０７】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、このダミーフレームがストリーム変化フラグ（ｃ）を持たないので、上書き前に保持されていたフレーム３のPTS（pts_3）とフレームレート(f/r_3)がそのまま保持される。
【０１０８】
このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、このダミーフレームの無効なデータ(ｎ/a)がコピーされる。このFIFOブロックにはシーケンス終端フラグ（ｅ）を持つフレームがプッシュされたので、シーケンス終端PTSとシーケンス終端フレームレートには、フレーム３のPTSとフレームレートがそのまま保持される。
【０１０９】
図２５は、パターン３の場合を説明するための図である。図２５は、FIFO２１の最終FIFOブロックには図２４に示した上書きの結果、シーケンス終端フレーム（ｅ）のデータが保持されているので、ストリーム変化フレーム（ｃ）の通常フレーム４が上書きされるときには、補助ヘッダ３３の上書き回数OWCは「２」にインクリメントされる。また、ストリーム変化(STC)があったので、ストリーム変化回数C2は「１」にインクリメントされる。ストリーム変化フレーム４（ｃ）の画像データImとヘッダ情報Hd（ストリーム変化フラグｃを含む）は最終FIFOブロックに記憶される。
【０１１０】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、ストリーム変化フラグ（ｃ）を持ったフレームがプッシュされたので、フレーム４のPTS(pts_4)とフレームレート(f/r_4)がコピーされる。
【０１１１】
このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム４のPTSとフレームレートがコピーされる。このFIFOブロックには既にシーケンス終端フラグ（ｅ）を持ったフレームがプッシュされているので、シーケンス終端PTSとシーケンス終端フレームレートには、シーケンス終端フレームより前のフレーム３のPTS(pts_3)とフレームレート(f/r_3)が引き続き保持される。
【０１１２】
図２６は、パターン４の場合を説明するための図である。図２６は、FIFO２１の最終FIFOブロックには図２５に示した上書きの結果、ストリーム変化(STC)の通常フレームのフレーム４のデータが保持されているので、通常フレーム５が上書きされるときには、補助ヘッダ３３の上書き回数OWCは「３」にインクリメントされる。また、このFIFOブロックには既にストリーム変化フラグ（ｃ）を持ったフレームがプッシュされているので、ストリーム変化後の上書き回数C1は、「１」にインクリメントされる。フレーム５の画像データImとヘッダ情報Hdは最終FIFOブロックに記憶される。
【０１１３】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、このFIFOブロックには既にストリーム変化フラグ（ｃ）を持ったフレームがプッシュされているので、フレーム４のPTSとフレームレートが更新されずに保持される。
【０１１４】
このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム５のPTSとフレームレートがコピーされる。このFIFOブロックには既にシーケンス終端フラグ（ｅ）を持ったフレームがプッシュされているので、シーケンス終端PTSとシーケンス終端フレームレートには、フレーム３のPTSとフレームレートが引き続き保持される。
【０１１５】
図２７は、パターン５の場合を説明するための図である。図２７は、FIFO２１の最終FIFOブロックにはシーケンス終端フレーム（ｅ）のダミーフレーム（ｄ）のデータｄが保持されているので、ストリーム変化(STC)のフレーム４が上書きされるときには、補助ヘッダ３３の上書き回数OWCは「１」にインクリメントされる。また、ストリーム変化(STC)があったので、ストリーム変化回数C2は「１」にインクリメントされる。フレーム４の画像データImとヘッダ情報Hdは最終ブロックに記憶される。
【０１１６】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、ストリーム変化フラグ（ｃ）を持ったフレームがプッシュされたので、フレーム４のPTS(pts_4)とフレームレート(f/r_4)に更新される。
【０１１７】
このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム４のPTSとフレームレートがコピーされる。このFIFOブロックには既にシーケンス終端フラグ（ｅ）を持ったフレームがプッシュされているので、シーケンス終端PTSとシーケンス終端フレームレートには、上書き前に保持していたシーケンス終端フレームの無効なデータ(ｎ/a)がそのまま保持される。
【０１１８】
図２８は、パターン６の場合を説明するための図である。図２８は、FIFO２１の最終FIFOブロックには図２７に示したストリーム変化(STC)のフレーム４で上書きしたデータが保持されているので、通常フレーム５が上書きされるときには、補助ヘッダ３３の上書き回数OWCは「２」にインクリメントされる。また、このFIFOブロックには既にストリーム変化フラグ（ｃ）を持ったフレームがプッシュされているので、ストリーム変化後の上書き回数C1は「１」にインクリメントされる。フレーム５の画像データImとヘッダ情報Hd（５）は最終FIFOブロックに記憶される。
【０１１９】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、このFIFOブロックには既にストリーム変化フラグ（ｃ）を持ったフレームがプッシュされているので、フレーム４のPTS(pts_4)とフレームレート(f/r_4)が更新されずに保持される。
【０１２０】
このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム５のPTS(pts_5)とフレームレート(f/r_5)がコピーされる。このFIFOブロックには既にシーケンス終端フラグ（ｅ）を持ったフレームがプッシュされているので、シーケンス終端PTSとシーケンス終端フレームレートには、図２７で上書き前に保持していたシーケンス終端フレームの無効なデータ(ｎ/a)が引き続き保持される。
【０１２１】
図２９は、パターン７の場合を説明するための図である。図２９は、FIFO２１の最終FIFOブロックにはストリーム変化(STC)の通常フレーム４のデータが保持されているので、通常フレーム５が上書きされるときには、補助ヘッダ３３の上書き回数OWCは「１」にインクリメントされる。また、このFIFOブロックには既にストリーム変化フラグ（ｃ）を持ったフレームがプッシュされているので、ストリーム変化後の上書き回数C1は、「１」にインクリメントされる。フレーム５の画像データImとヘッダ情報Hdは最終FIFOブロックに記憶される。
【０１２２】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、このFIFOブロックには既にストリーム変化フラグ（ｃ）を持ったフレームがプッシュされているので、フレーム４のPTS(pts_4)とフレームレート(f/r_4)が更新されずに保持される。
【０１２３】
このFIFOブロックにはストリーム終端フラグ（ｔ）を持ったフレームがまだプッシュされていないので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム５のPTS(pts_5)とフレームレート(f/r_5)がコピーされる。このFIFOブロックにはシーケンス終端フラグ（ｅ）を持ったフレームがまだプッシュされていないので、シーケンス終端PTSとシーケンス終端フレームレートには、フレーム５のPTSとフレームレートがコピーされる。
【０１２４】
図３０は、パターン８の場合を説明するための図である。図３０は、FIFO２１の最終FIFOブロックには通常フレームのフレーム８のデータが保持されているので、ストリーム終端(STE)のダミーフレームが上書きされるときには、補助ヘッダ３３の上書き回数OWCは「１」にインクリメントされる。また、ストリーム終端(STE)があったので、ストリーム終端回数C3は「１」にインクリメントされる。ダミーフレームの画像データIm（ｄ）とヘッダ情報Hd（ストリーム終端フラグｔを含む）は最終FIFOブロックに記憶される。
【０１２５】
補助ヘッダ３３において、ストリーム変化PTSとストリーム変化フレームレートは、フレーム８がストリーム変化フラグ（ｃ）を持たないので、フレーム８のPTS(pts_8)とフレームレート(f/r_8)が更新されずに保持される。
【０１２６】
ストリーム終端フラグ（ｔ）を持ったフレームがプッシュされたので、ストリーム終端PTSとストリーム終端フレームレートには、フレーム８のPTSとフレームレートがそのまま保持される。このFIFOブロックにはシーケンス終端フラグ（ｅ）を持ったフレームがまだプッシュされていないので、シーケンス終端PTSとシーケンス終端フレームレートには、プッシュされるストリーム終端フレームの無効なデータ(ｎ/a)がコピーされる。
【０１２７】
（FIFOからのデータのポップ）
次に、FIFO２１からのデータのポップについて説明する。  
図１６において説明したように、データのポップ時には、ヘッダ情報Hd、画像データIm、先読みヘッダ情報pHd、及び上書き情報OWIが先読みヘッダ加工部２４から出力される。
【０１２８】
まず、上書き情報から説明する。  
（上書き情報）
先読みヘッダ加工部２４によって生成される上書き情報について説明する。図３１は、先読みヘッダ加工部２４によって、生成されて出力されるデータの構造を示す図である。出力されるデータは、上書き情報OWIと、先読みヘッダ情報ｐHdと、ヘッダ情報Hdと、画像データImを含む。
【０１２９】
上書き情報OWIは、上書き回数OWCと、挿入フレーム情報（is_inserted）IIFと、状態コード（stat）SIを含む。  
上書き回数OWCは、そのフレームにおいて上書きされたフレーム数を示す。  
挿入フレーム情報IIFは、挿入されたフレームであるか否かを示し、trueならば、その画像データは無効であることを意味する。  
状態コード（stat）SIは、エラーなどの状態を示し、フラグの二重上書きの通知のために用いられる。  
上述したように、上書き情報OWIは、ポップ時に先読みヘッダ加工部２４によって生成され、図３１に示すデータが先読みヘッダ加工部２４から出力される。
【０１３０】
（先読みヘッダ情報）
次に、FIFO２１からデータがポップされるときの先読みヘッダpHdの内容について説明する。上述したように、先読みヘッダ情報pHdは、ポップ時に先読みヘッダ加工部２４によって一部が修正あるいは加工されて出力される。すなわち、ヘッダ情報加工部としての先読みヘッダ加工部２４は、FIFO２１に記憶された古いフレームの画像データImとヘッダ情報Hdを読み出すときに、その古いフレームの次に古いフレームのヘッダ情報Hdを併せて読み出し、かつ次に古いフレームのヘッダ情報Hdを、補助ヘッダ付加部２３により生成された補助ヘッダ情報Shdに基づいて加工する。  
以下、ケース別に先読みヘッダ情報の書き換えについて説明する。  
（上書きがない場合）
図３２から図３４は、上書きが無い場合における出力データの構成を説明するための図である。出力データは、上書き情報OＷIを含む上書き情報部３４、先読みヘッダ情報pHdを含む先読みヘッダ部３１ａ、ヘッダ情報Hdを含むヘッダ部３１及び画像データImを含む画像部３２である。各図の左下は、フレームをポップする前のFIFO２１の先頭から二番目のブロックの補助ヘッダ情報Shdの内容を示す。この補助ヘッダ情報Shdの内容に基づいて先読みヘッダ情報pHdが加工される。
【０１３１】
図３２は、上書きが無かったときにおける出力データの構成を説明するための図である。図３２は、通常フレームが上書きされずに順番に出力される場合である。上書きがなかったことは補助ヘッダの上書き回数(OWC)が０（ゼロ）であることから判定される。通常フレームであることは不連続フラグ回数（C2, C3, C4）が全て０（ゼロ）であることから判定される。この場合、補助ヘッダ部３３の上書き回数OWCは０（ゼロ）であるので、上書き情報部３４の上書き情報OＷIにおいて上書き回数OWCは０（ゼロ）となる。また、挿入フレーム情報IIFは「false」となる。これは、ポップされたデータが追加挿入されたものではないことを指す。先読みヘッダ部３１ａの先読みヘッダ情報pHdには、フレーム２のヘッダ情報がそのまま出力される。
【０１３２】
図３３は、上書きが無かったときにストリーム終端(STE)を先読みヘッダに出力する場合における出力データの構成を説明するための図である。上書きがなかったことは補助ヘッダの上書き回数(OWC)が０（ゼロ）であることから判定される。ストリーム終端(STE)であることはストリーム終端回数(C3)が０（ゼロ）でないことから判定される。そのような場合は、図３３において、通常フレームのフレーム８を出力するとき、補助ヘッダ部３３の上書き回数OWCは０（ゼロ）であるので、上書き情報部３４の上書き情報OWIにおいて、上書き回数OWCは０（ゼロ）となる。また、挿入フレーム情報IIFは「false」となる。先読みヘッダ部３１ａの先読みヘッダpHdは、ストリーム終端(STE)のダミーフレーム（ｄ）のヘッダ情報Hdがそのまま出力される。ただし、図１５に示したように最終フレームとしてストリーム変化フレームを出力するために、FIFO中のデータを1ブロック進めることを行わない。また、FIFO２１内の図示しない所定の記憶領域にストリーム終端(STE)が検出されたことを示す情報を保持する。
【０１３３】
図３４は、ストリーム終端(STE)の後に図１５に示すように最終フレームとして先読みヘッダにストリーム変化(STC)フラグを出力する場合における出力データの構成を説明するための図である。ストリーム終端後の状態であることは、FIFO２１内の図示しない所定の記憶領域にストリーム終端(STE)が検出されたことを示す情報が保持されていることで判定される。この場合、図３３で説明した出力データの出力後、図３４に示すように、ストリーム終端(STE)フラグをそのまま先読みヘッダ部３１ａに出力するのではなく、フレーム８のヘッダ情報Hdと画像データImと、先読みヘッダ部３１ａにおけるストリーム変化フラグｃを「１」にした先読みヘッダpHdと、上書き情報OWIとが出力される。ストリーム変化フレームを追加挿入したので、挿入フレーム情報IIFは「true」となる。フレーム８のヘッダ情報Hdと画像データImがポップされるが、これらはダミーデータ（ｄ）とみなされる。
【０１３４】
（上書きがあった場合）
図３５は、通常フレームがストリーム終端フレームによって上書きされたとき（パターン８）にストリーム終端フラグを先読みヘッダに出力する場合における出力データの構成を説明するための図である。上書きがあったので、上書き回数OWCは０（ゼロ）でなく、ストリーム終端回数C3も０（ゼロ）でないので、ストリーム終端フレームによって通常フレームが上書きされたことを意味する。よって、補助ヘッダ部３３のストリーム終端PTSとストリーム終端フレームレートの情報を、先読みヘッダ部３１ａにおけるPTSとフレームレートの情報に置き換える。これにより、フレーム８が上書きされているが、先読みヘッダ部３１ａにフレーム８のPTS(pts_8)とフレームレート(f/r_8)の情報が残る。上書き回数OWCは「１」となり（補助ヘッダの上書き回数OWCがコピーされる）、挿入フレーム情報IIFは「false」となる。なお、この場合、FIFO２１の内容は、変更されない、すなわち段送りされない。また、ストリーム終端(STE)を先読みヘッダに出力したので、FIFO２１内の図示しない所定の記憶領域にストリーム終端(STE)が検出されたことを示す情報を保持する。この後は図３４と同様の処理になる。
【０１３５】
図３６は、通常フレームが通常フレームによって上書きされたとき（パターン１）に通常フレームを出力する場合における出力データの構成を説明するための図である。上書きがあったので、上書き回数OWCが０（ゼロ）でなく、不連続フラグの回数(C1, C2, C3)は全て０（ゼロ）であるので、通常フレームによって通常フレームが上書きされたことを意味する。よって、先読みヘッダ部３１ａは、加工されないで出力される。上書き回数OWCは「１」となり（補助ヘッダの上書き回数OWCがコピーされる）、挿入フレーム情報IIFは「false」となる。
【０１３６】
図３７は、通常フレームがシーケンス終端フレームによって上書きされたとき（パターン２）にシーケンス終端フラグを先読みヘッダに出力する場合における出力データの構成を説明するための図である。上書きがあったので、上書き回数OWCは０（ゼロ）でなく、ストリーム変化回数C2およびストリーム終端回数C3が０（ゼロ）で、シーケンス終端回数C4が０（ゼロ）でないので、シーケンス終端フレームによって通常フレームが上書きされたことを意味する。よって、補助ヘッダ部３３のシーケンス終端PTSとシーケンス終端フレームレートの情報を、先読みヘッダ部３１ａにおけるPTSとフレームレートの情報に置き換える。これにより、フレーム３が上書きされているが、先読みヘッダ部３１ａにフレーム３のPTS(pts_3)とフレームレート(f/r_3)の情報が残る。上書き回数OWCは「１」となり（補助ヘッダ情報の上書き回数OWCがコピーされる）、挿入フレーム情報IIFは「false」となる。
【０１３７】
図３８は、ストリーム変化フレームが通常フレームによって上書きされたとき（パターン７）にストリーム変化フラグを先読みヘッダに出力する場合における出力データの構成を説明するための図である。上書きがあったので、上書き回数OWCは０（ゼロ）でなく、ストリーム終端回数C3およびシーケンス終端回数C4が共に０（ゼロ）で、ストリーム変化回数C2が０（ゼロ）でないので、ストリーム変化フレームが通常フレームによって上書きされたことを意味する。よって、補助ヘッダ部３３のストリーム変化PTSとストリーム変化フレームレートの情報を、先読みヘッダ部３１ａにおけるPTSとフレームレートの情報に置き換え、ストリーム変化フラグｃを「１」にする。これにより、ストリーム変化フレームが上書きされているが、先読みヘッダ部３１ａにフレーム４のPTSとフレームレートの情報が残り、ストリーム変化フラグがついたフレームがポップされる。上書きされたストリーム変化フレームを追加したので、挿入フレーム情報IIFは「true」となる。なお、この場合、FIFO２１の内容は、変更されない、すなわち段送りされない。そして、挿入フレーム情報IIFは「true」であるので、出力されるデータの画像データImは無視されることになる。このフレーム挿入により、このフレームは他のフレームを上書きしていないと見なせるので、先読みヘッダ部３１ａにおいて上書き回数OWCは「０」となる。また、ストリーム変化(STC)を先読みヘッダに出力したので、FIFO２１内の図示しない所定の記憶領域にストリーム変化(STC)が検出されたことを示す情報を保持する。
【０１３８】
図３８の次に出力されるデータは、さらにダミーフレームが出力されるが、先読みヘッダ部３１ａはフレーム５のヘッダ情報Hdである（図４２と同様の処理）。
【０１３９】
図３９は、シーケンス終端フレームがストリーム変化フレームによって上書きされたとき（パターン５）に先読みヘッダにシーケンス終端フラグを出力する場合における出力データの構成を説明するための図である。上書きがあったので、上書き回数OWCは０（ゼロ）でなく、ストリーム終端回数C3は０（ゼロ）であり、シーケンス終端回数C4とストリーム変化回数C2が共に０（ゼロ）でないので、ストリーム変化フレームによってシーケンス終端フレームが上書きされたことを意味する。よって、補助ヘッダ部３３のシーケンス終端PTSとシーケンス終端フレームレートの情報を、先読みヘッダ部３１ａにおけるPTSとフレームレートの情報に置き換え、ストリーム変化フラグｅを「１」にする。これにより、シーケンス終端フレームが上書きされているが、先読みヘッダ部３１ａにフレーム３のPTSとフレームレートの情報が残り、シーケンス終端フラグがついたフレームがポップされる。上書きされたシーケンス終端フレームを追加したので、挿入フレーム情報IIFは「true」となる。なお、この場合、FIFO２１の内容は、変更されない、すなわち段送りされない。先読みヘッダ部３１ａにおいて上書き回数OWCは、全体の上書き回数OWCからストリーム変化後の上書き回数C1とストリーム変化の1フレームを引くことによりシーケンス終端前の上書き回数「OWC−C1−1」が設定される。また、シーケンス終端(SQE)を先読みヘッダに出力したので、FIFO２１内の図示しない所定の記憶領域にシーケンス終端(SQE)が検出されたことを示す情報を保持する。
【０１４０】
図４０は、図３９の場合に、さらにストリーム変化フレームが上書きされてはいないときに先読みヘッダにストリーム変化フラグを出力する場合における出力データの構成を説明するための図である。FIFO２１内の図示しない所定の記憶領域にシーケンス終端(SQE)が検出されたことを示す情報が保持されていることで、図３９の処理後の状態であると判定される。さらに、ストリーム変化後の上書き回数C1が０（ゼロ）であるので、ストリーム変化フレームが上書きされていないことを意味する。よって、図４０の場合、先読みヘッダ部３１ａの先読みヘッダ情報pHdは、フレーム４のヘッダ情報がそのまま出力される。このストリーム変化フレームは直前のシーケンス終端フレームを上書きしているので、上書き回数OWCは「１」となる。上書きされていないストリーム変化フラグをそのまま出力するので、挿入フレーム情報IIFは「false」となる。
【０１４１】
図４１は、図３９の場合に、さらにストリーム変化フレームが通常フレームによって上書きされていたときに先読みヘッダにストリーム変化フラグを出力する場合（パターン６）における出力データの構成を説明するための図である。FIFO２１内の図示しない所定の記憶領域にシーケンス終端(SQE)が検出されたことを示す情報が保持されていることで、図３９の処理後の状態であると判定される。さらに、ストリーム変化(STC)後の上書き回数C1が０（ゼロ）でないことから、通常フレームによってストリーム変化フレームが上書きされたことを意味する。よって、補助ヘッダ部３３のストリーム変化PTSとストリーム変化フレームレートの情報を、先読みヘッダ部３１ａにおけるPTSとフレームレートの情報に置き換え、ストリーム変化フラグｃを「１」にする。これにより、ストリーム変化フレームが上書きされているが、先読みヘッダ部３１ａにフレーム４のPTSとフレームレートの情報が残り、ストリーム変化フラグがついたフレームがポップされる。上書きされたストリーム変化フレームを追加したので、挿入フレーム情報IIFは「true」となる。このストリーム変化フレームは直前のシーケンス終端フレームを上書きしているので、上書き回数OWCは「１」となる。なお、この場合、FIFO２１の内容は、変更されない、すなわち段送りされない。また、ストリーム変化(STC)を先読みヘッダに出力したので、FIFO２１内の図示しない所定の記憶領域にストリーム変化(STC)が検出されたことを示す情報を保持する。
【０１４２】
図４２は、図４１の後にデータがポップされるときの出力データの構成を説明するための図である。FIFO２１内の図示しない所定の記憶領域にストリーム変化(STC)が検出されたことを示す情報が保持されていることで、図４１の処理後の状態であると判定される。図４２の場合は、フレーム３のヘッダ部３１と画像部３２と、先読みヘッダ部３１ａ（フレーム５のヘッダ情報Hd）が出力される。シーケンス終端フレームとストリーム変化フレームは上書きされていてもポップされるようになっており（図３９と図４１）、ストリーム変化フレーム以前の上書き回数はそれら２フレームの先読みヘッダに計上されるので、図４２での先読みヘッダの上書き回数OWCにはストリーム変化フレーム後の上書き回数C1をコピーする。
【０１４３】
（ストリームに含まれる複数のフレーム間の時間間隔と取り出しフレーム周期）
上述したように、先読みヘッダ加工部２４から出力されるデータは、図１０及び図１１に示した時間td1,td11,td12,td13を計算するためのデータとして、PTSとフレームレートが含まれている。
【０１４４】
一方、ストリームに含まれる映像は、一定の周期で複数のフレーム画像を順次切り替わることによって表示される。  
図４３は、表示されるフレームと、画像処理対象とするフレームを指定する時間間隔（以下、指定時間という）ｆ（rate_msec）との関係を説明するための図である。画像処理適用間隔である指定時間ｆに基づいて、ストリームの最初から（あるいは途中から）、その指定時間ｆ毎に出力されるフレームに対して、その画像処理が実行される。
【０１４５】
図４３に示すように、連続する各フレームは、次のフレームの表示開始時刻まで継続して表示される。例えば、フレームf0は、フレームf1の表示開始時刻までの時間TD0の間継続して出力され、その後フレームf1に切り替わるが、そのフレームf1もフレームf2の表示開始時刻までの時間TD1の間継続して出力される。以下同様に、各フレームは順番に出力される。
【０１４６】
指定時間fは、先頭の時間（０）から経過時間に基づいて決定される。図４３では、先頭の時間（０）から指定時間ｆが経過したときには、フレーム５が出力されている。よって、フレーム５が、画像処理対象フレームすなわち取り出しフレームと決定される。次の取り出しフレームは、次の指定時間ｆが経過したときである。図４３では、フレーム１０が出力されている。よって、フレーム１０が、画像処理対象フレームすなわち取り出しフレームと決定される。その次の指定時間ｆが経過したときは、フレーム１６が出力されている。よって、フレーム１６が、画像処理対象フレームすなわち取り出しフレームと決定される。
【０１４７】
上述したように、先読みヘッダ加工部２４から出力されるデータは、加工された先読みヘッダ部３１ａを含み、その先読みヘッダ部３１ａには、上書きされたフレームであっても、PTSは含まれており、さらに、不連続なフレームであっても、上記時間td1,td11,td12,td13を計算するためのデータとして、PTSとフレームレートが含まれている。
【０１４８】
そして、取り出しフレーム決定部２５は、タイミングやフレーム欠落に影響されない判定を行うために、原則としてPTSに基づく判定を行う。取り出しフレーム決定部２５は、各フレームがストリームの先頭からの再生時間として何ミリ秒 (msec) 後に表示されるべきフレームであるかを計算する。以下、この再生時間を経過時間（elapsed time）と呼ぶことにする。ここでは例として時間の単位をmsecとするが、他の単位でも構わない。
【０１４９】
図４３に示したように、フレームiの経過時間をt(i) [msec]、画像処理適用間隔である指定時間をf [msec]とすると、フレームiが表示される時間は[t(i), t(i+1)]であるから、t(i) ≦ f×ｍ ＜ t(i+1)となる整数ｍが存在すれば処理適用対象フレームであると判定される。より具体的には、f×m＜t(i+1)となる最大のmをm’とすると、m’ = (t(i+1)−1) div fと書ける（ただしdivは整数除算の意）ので、t(i) ≦ f×m’が成立すれば、そのフレームが画像処理対象フレームと判定される。  
なお、上記計算において、1つ先のフレームの時刻t(i+1)を得ておく必要があるが、上述したようにFIFO２１からのデータは、時刻の先読みのためのデータを含む。
【０１５０】
PTSから経過時間の計算においては、次の点が考慮される。
【０１５１】
１）映像ストリームの先頭PTSは一般に０（ゼロ）ではない。
【０１５２】
２）PTSは（２３３ −１）を超えると０（ゼロ）に戻る。
【０１５３】
３）PTSはストリームの不連続により値が飛ぶことがある。
【０１５４】
４）FIFOに上書きが発生してフレームが抜けることがある。
【０１５５】
５）ストリームの途中からの処理再開を行えるようにする必要がある。
【０１５６】
上記項目への対処は以下のように行う。図４４から図４９を用いて、経過時間の求め方について説明する。図４４から図４９は、PTSから経過時間の求め方を説明するための図である。
【０１５７】
ａ）原則として、図４４に示すように、経過時間は、各フレームとその直前のフレームとのPTSとの差分を累積して計算される。なお、PTSの０戻り、ストリームの不連続、中断及び再開の対処のために、ストリーム先頭との差分をもって経過時間とはされない。
【０１５８】
ｂ）PTSの０（ゼロ）戻りの場合は、図４５に示すように、PTSが０（ゼロ）戻りしたときに、０（ゼロ）戻りしたフレームPP1のPTSに２３３を加えてから前フレームPP0のPTSと差分をとることによって、０（ゼロ）戻りは、調整される。
【０１５９】
ｃ）ストリームの不連続の場合は、図４６に示すように、ダミーフレームが挿入されかつ不連続フラグとして通知されるので、このときは、PTSの差分dd1を累積するのでなく、経過時間は、フレームレートから見積もったPTSの増分dd2から、算出して求められる。
【０１６０】
ｄ）経過時間は、図４７に示すように、PTSの差分から計算されるので、通常フレームの場合、途中のフレームPP2がストリームデータ欠陥や上書きにより抜けても支障はない。
【０１６１】
ｅ）ただし、図４８に示すように、不連続フラグを持つダミーフレームが、直前の有効フレームPP3を上書きした場合は、ダミーフレームにコピーして入力される直前有効フレームのPTSを用いてフレームPP3までのPTS増分dd3が算出され、さらにダミーフレームにコピーして入力される直前有効フレームのフレームレートから見積もったPTSの増分dd4を使用して、経過時間が算出される。なお、不連続フラグを持つフレーム自身が上書きされた場合も、上述のFIFOの機能によりそれらのフレームが復元されるため、図４８と同様の処理が行える。
【０１６２】
ｅ）図４９に示すように、中断前に処理した最後の有効フレームのPTSと経過時間を記録しておき、再開点としてその２つの値を指定し、前フレームとのPTS差分を累積して経過時間を計算して再開点での値を中断前と一致させることによって、再開点以降の経過時間RETは、中断がなかったとしたときの経過時間と一致する。
【０１６３】
（取り出しフレーム決定部）
処理対象フレーム決定部としての取り出しフレーム決定部２５は、画像データIm、ヘッダ情報Hd、先読みヘッダ情報pHd、上書き情報OWIを受信し、受信したデータに基づいて、取り出しフレームを決定する。
【０１６４】
図４３を用いて説明したように、設定された指定時間f毎に対応するフレームを、取り出しフレームとして決定される。すなわち、取り出しフレーム決定部２５は、ストリームの各フレームデータに含まれるPTSデータを利用してストリームの先頭からの経過時間を経過時間累積レジスタ２５ａに累積して記憶し、累積された各フレームの経過時間ETから、指定時間fの時間間隔に対応するフレームか否かを決定する。その特定されたフレームが、画像処理対象のフレームとして取り出される。
【０１６５】
（取り出しフレーム決定部２５における処理）
次に、取り出しフレーム決定部２５における処理の内容について説明する。図５０は、取り出しフレーム決定部２５における処理の流れの例を示すフローチャートである。図５０の処理は、先読みヘッダ加工部２４からデータが出力される度に実行される。
【０１６６】
まず、取り出しフレーム決定部２５は、先読みヘッダ加工部２４から読み出されたデータ中、先読みヘッダ情報pHdのPTS（next_pts。以下、次PTSという）が、２３３以上であるか否かを判定する（ステップS11）。判定の結果、次PTSが２３３以上であれば、不正な値すなわち異常な値であるので、ステップS11でYESとなり、処理は、エラー処理に移行する（ステップS12）。
【０１６７】
続いて、取り出しフレーム決定部２５は、先読みヘッダ情報pHdに、複数の不連続フラグが存在するか否かを判定する（ステップS13）。判定の結果、複数の不連続フラグが存在すれば、異常な状態であるので、ステップS13でYESとなり、処理は、エラー処理に移行する（ステップS12）。これは、シーケンス終端フラグｅ、ストリーム終端フラグｔ、及びストリーム変化フラグｃの中から２つ以上のフラグが存在する、すなわち２つ以上のフラグがtrueになる、ことはあり得ないからである。
【０１６８】
そして、取り出しフレーム決定部２５は、不連続フラグと通常フレームの現れる順序を判定する（ステップS14）。この順序には、上述した８つの上書きパターンにおける順序に加えて、上書きされないパターンにおける順序も含まれる。ステップS14において、判定の結果は、４つに分かれる。すなわち、ヘッダ情報Hdにおける不連続フラグと先読みヘッダ情報pHdにおける不連続フラグの現れる順序によって、判定結果は４つに、ここでは、通常時刻処理、不連続点の断点の不連続時刻処理、不連続点の遷移中の不連続時刻処理及びエラー処理に、分岐する。  
有効フレーム（すなわち通常フレーム（ｎ）あるいはストリーム変化フラグのtrueのフレーム（ストリーム変化フレーム（ｃ）））の後に、通常フレーム（ｎ）が続いた場合は、通常時刻処理となり、処理は、ステップS15に進む。
【０１６９】
有効フレーム（すなわち通常フレーム（ｎ）あるいはストリーム変化フレーム（ｃ））の後に、不連続点を示すダミーフレーム（シーケンス終端フラグｅあるいはストリーム終端フラグｔがtrueのフレーム）が続いた場合は、不連続点の断点の不連続時刻処理となり、処理は、ステップS16に進む。
【０１７０】
ダミーフレームの後に、ストリーム変化フラグｃがtrueのフレームが続くか、ダミーフレームが二度続くか、さらにあるいはストリーム変化フラグｃがtrueのフレームが二度続いた場合は、不連続点の遷移中の不連続時刻処理となり、処理は、ステップS17に進む。  
なお、それら以外の場合は、不正な不連続フラグの順序であるので、処理は、エラー処理に移行する（ステップS12）。
【０１７１】
通常時刻処理の場合、次PTSは先読みヘッダ情報pHdのPTSであるので、次PTSは演算により求める必要はない。よって、ステップS15では、ヘッダ情報Hd中のフレームレート（curr_frame_rate。以下、現フレームレートという）cfrから、PTS増分（pts_step_from_frame_rate）ptsd1が求められる。すなわち、１フレーム進んだときのPTS増分ptsd1が、ヘッダ情報Hd中のフレームレート（curr_frame_rate。以下、現フレームレートという）cfrから求められる。
【０１７２】
不連続点の断点の不連続断点処理では、有効フレームの後に不連続点を示すダミーフレームが続いたときの処理であり、ヘッダ情報HdのPTS（curr_pts。以下、現PTSという）と次PTSとの差分をとることができない。そのため、図４６および図４８に示したように、現フレームレートcfrからPTS増分ptsd1を計算して、PTS増分ptsd1を現PTSに加算することによって、次PTSは算出されて推定される。
【０１７３】
断点の不連続断点処理では、まず、上書きが有るか否かの判断が行われる（ステップS16）。上書きが有るか否かの判断は、上書き情報OWI中の上書き回数OWCが０（ゼロ）であるか否かにより行われる。上書きがない場合は、ステップS16でNOとなり、現フレームレートcfrからPTS増分ptsd1を計算して求め、そのPTS増分ptsd1を現在のPTS (curr_pts)に加算して、次PTSを算出する（ステップS18）。  
上書きがあった場合は、ステップS16でYESとなり、上書きで消された有効フレームのPTSとフレームレートが、先読みヘッダ情報pHdのPTSとフレームレートに格納されているので、その格納されている次のフレームレート（next_frame_rate。以下、次フレームレートという）nfrからPTS増分ptsd2を計算して、そのPTS増分ptsd2を次PTSに加算することによって、次PTSが算出される（ステップS19）。
【０１７４】
遷移中の不連続時刻処理では、取り出しフレーム決定部２５の経過時間累積レジスタ２５ａに保持された現経過時間（以下、現ETという）を、次の経過時間（以下、次ETという）とする（ステップS17）。
【０１７５】
この遷移中の不連続時刻処理は、不連続を通知したダミーフレーム以降のストリーム切り替え中の処理であるので、経過時間を増加させずに処理が終了される。経過時間が増加しなくても、遷移中のフレームは画像処理対象にはならないので一意性の問題は起こらない。不連続点での経過時間をストリーム切り替え後に引き継ぐために現ETの値が維持される。この場合、遷移中のフレームになりうるのは、ダミーフレームか、またはストリーム変化フラグｃが立ったフレームである。ダミーフレームは、連続して受信することもありうるが、いずれにせよダミーであるので、画像処理対象外である。ストリーム変化有りのフレームの連続は、フレームがストリーム終端に達した後に別のストリームが投入されたときに、最初のストリーム終端の後にストリーム変化フラグｃが便宜的に挿入されるために、次のストリームにおいてストリーム変化フラグｃが連続して立つことにより起こる。この便宜上のフレームは、画像処理対象外である。
【０１７６】
なお、ステップS14における判定の結果が、以上説明した以外の場合は、処理は、エラー処理に移行する（ステップS12）。
【０１７７】
そして、取り出しフレーム決定部２５は、ステップS15, S18,S19の処理の後、現PTS と次PTSの大小関係が逆転していないかを判断する。すなわち、ここでは、次PTSが現PTSよりも小さいか否かが判定される（ステップS20）。ここでは、不連続フラグにより通知されていないPTSの減少は、全てPTSが０（ゼロ）に戻った場合であると解釈し、その場合は、ステップS20でYESとなり、PTSに２３３を加えてゼロ戻りを相殺あるいはキャンセルさせる（ステップS21）。
【０１７８】
ステップS20のNOとステップS21の後には、取り出しフレーム決定部２５は、PTSの実際の増分（すなわち、（次PTS −現PTS））を計算し、その計算値が、フレームレートから予測した値（すなわち、（PTS増分×（上書き回数OWC＋１）））に近似しているか否かを判定する（ステップS22）。上書きがあれば、上書き回数OWCの分だけ余分に、PTSは、増加しているとして、PTSの増分が予測される。ステップS22でNOの場合、すなわち、PTSの実際の増分が、フレームレートから予測した値とは近似していないと判断された場合、PTSに予測値以上の変化があったことを示す警告情報を出力する（ステップS23）。
【０１７９】
ステップS22のYES及びステップS23の後、取り出しフレーム決定部２５は、経過時間累積レジスタ２５ａに記憶されている現ETに、経過時間（ET）の増分としてPTSの実際の増分（すなわち、（次PTS −現PTS））を加算して、先読みヘッダ情報pHdに係るフレームの経過時間（以下、次ETという）を算出する（ステップS24）。すなわち、次ET＝現ET＋次PTS −現PTSが計算される。
【０１８０】
以上のように、処理対象フレーム決定部としての取り出しフレーム決定部２５は、上書き情報OWIの上書き回数OWCに基づいてFIFO２１への上書きの有無を決定し、その上書きの有無と不連続フラグの有無に基づいてストリームの先頭からの経過時間(ET)を決定することができる。
【０１８１】
そして、次PTSが２３３以上であるか否かが判定される（ステップS25）。次PTSが２３３を以上であれば、ステップS25でYESとなり、取り出しフレーム決定部２５は、次PTSから２３３を減算し、PTSが０戻りしたことを示す警告情報を出力等の所定の処理を実行する（ステップS26）。
【０１８２】
取り出しフレーム決定部２５は、得られた次ETを経過時間累積レジスタ２５ａに記憶し、取り出しフレームの決定処理を実行する（ステップS27）。すなわち、現ETと、１フレーム先読みした経過時間である次ETが得られているので、上述したような取り出しフレームの決定あるいは間引きフレームの決定をすることができる。  
よって、取り出しフレーム決定部２５は、ステップS25でNO、及びステップS17、S26の後、図４３で説明したような、取り出しフレームを決定することができる。  
取り出しフレーム決定部２５により、取り出すべきフレームあるいは間引かれるフレームに、所定のフラグ等が付される。
【０１８３】
以上のように、不連続の存在する点の前又は後におけるフレームのPTS及びフレームレートは、補助ヘッダ情報Shdから得られる。そして、処理対象フレーム決定部としての取り出しフレーム決定部２５は、FIFO２１から読み出された不連続情報の無いフレームについては、連続する２つのフレームのPTSの再生時刻に基づいてストリームの先頭からの経過時間ETを決定し、不連続情報が付加されたフレームについては、不連続の存在する点の前又は後におけるフレームのPTS及びフレームレートに基づいてストリームの先頭からの経過時間ETを決定する。そして、取り出しフレーム決定部２５は、その決定された経過時間ETと画像処理対象のフレームを指定するための設定された時間間隔ｆとに基づいて、画像処理対象のフレームあるいは画像処理対象外のフレームを決定する。
【０１８４】
画像処理部２６は、取り出すべきフレームについてのみ所定の画像処理を施して、その処理結果のデータを、例えば、CPU１３、HDD等へ出力する。
【０１８５】
以上のように、本実施の形態の画像処理装置によれば、ストリーム中のフレームに欠損があっても、かつフレーム間に不連続が存在しても、指定された時間間隔に対応する画像処理対象フレームを、ストリームの中から一意に決定して、画像処理を施すことができる。
【０１８６】
よって、上述した本実施の形態によれば、例えば、ストリームに対して所定の認識処理（例えば、顔検出処理）を施して、さらに、その認識処理において認識処理の対象となったフレームに対して、別の画像処理（例えば、加工処理）を施すような画像処理装置を実現することができる。
【０１８７】
また、画像処理プログラム等の開発においても、同じストリームの同一のフレームに対して画像処理プログラムによる画像処理を施すことができるので、画像処理プログラムの評価が正確にできる。
【０１８８】
上述した本発明の実施の形態の画像処理装置及び画像処理方法によれば、例えば、動画ストリームをデコードした画像列に対して、動画の再生時間において一定間隔になるような頻度で画像処理を適用するような場合、例えば動画の再生時間１秒につき１０回の頻度で顔検出処理を実行したい場合、画像の内容によって計算負荷が変化するような画像処理であっても、画像処理対象として選定されるフレームの一意性を確保することができる。すなわち、動画のデコードと画像処理のタイミング、処理のスキップ、および処理を中断あるいは再開したか否かに依存せずに、常に画像処理対処フレームを一意に決定することができる。
【０１８９】
また、画像処理を複数の装置で分割して並列実行する場合に、処理対象フレームを一致させることができる。例えば、ある動画ストリームの同じフレームに対して２つの装置の一方が第一の画像処理を行い、もう一方が第二の画像処理を行うことができる。この場合に、処理対象フレームを一致させるための装置間の同期あるいは通信を不要にできる。
【０１９０】
また、画像処理の結果の再現性が確保できるので、開発者等のユーザは、画像処理装置あるいは画像処理プログラムの開発やそれらの不具合修正が容易になる。すなわち、画像処理を同じ動画ストリームに対して複数回適用する場合に、例えば１回目と２回目において画像処理対象フレームを同じにすることができる。
【０１９１】
上述した実施の形態に係る画像処理装置は、例えば、テレビ放送の録画が可能な画像処理装置において、テレビ放送の録画と同時に顔検出等の認識処理等の画像処理をしたい場合に、有効である。  
なお、上述した例は、テレビ放送のストリームの例で説明したが、DVD等の記録媒体に記録された画像データ、ムービーカメラで撮られた画像データ等においても、上述した実施の形態に係る画像処理装置は、適用可能である。
【０１９２】
従って、ストリーム中の複数のフレームの中から画像処理対象フレームが一意に決定することができれば、その決定されたすなわち特定されたフレームに対して、所定の画像処理ができ、かつそのフレームに対して各種のさらなる画像処理も可能となる。
【０１９３】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、以下、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。また、本実施の形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【０１９４】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部のプログラムコードが記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムのコードの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明の画像処理装置を実現することができる。
【０１９５】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【０１９６】
１  画像処理装置、１１  デコーダ、１１ａ  デコード部、１２  DSP、１３  CPU、１４  ROM、１５  RAM、１６  表示I/F、１７  音声I/F、１８  ストリームデータI/F、１９  操作I/F、２０  外部記憶装置I/F、２１  FIFO、２２  PTS不連続検出部、２３  補助ヘッダ付加部、２４  先読みヘッダ加工部、２５  取り出しフレーム決定部、２５ａ  経過時間累積レジスタ、２６  画像処理部、３１  ヘッダ部、３１ａ  先読みヘッダ部、３２  画像部、３３  補助ヘッダ部、３４  上書き情報部
【図１】
2010246042.tif 000003
【図２】
2010246042.tif 000004
【図３】
2010246042.tif 000005
【図４】
2010246042.tif 000006
【図５】
2010246042.tif 000007
【図６】
2010246042.tif 000008
【図７】
2010246042.tif 000009
【図８】
2010246042.tif 000010
【図９】
2010246042.tif 000011
【図１０】
2010246042.tif 000012
【図１１】
2010246042.tif 000013
【図１２】
2010246042.tif 000014
【図１３】
2010246042.tif 000015
【図１４】
2010246042.tif 000016
【図１５】
2010246042.tif 000017
【図１６】
2010246042.tif 000018
【図１７】
2010246042.tif 000019
【図１８】
2010246042.tif 000020
【図１９】
2010246042.tif 000021
【図２０】
2010246042.tif 000022
【図２１】
2010246042.tif 000023
【図２２】
2010246042.tif 000024
【図２３】
2010246042.tif 000025
【図２４】
2010246042.tif 000026
【図２５】
2010246042.tif 000027
【図２６】
2010246042.tif 000028
【図２７】
2010246042.tif 000029
【図２８】
2010246042.tif 000030
【図２９】
2010246042.tif 000031
【図３０】
2010246042.tif 000032
【図３１】
2010246042.tif 000033
【図３２】
2010246042.tif 000034
【図３３】
2010246042.tif 000035
【図３４】
2010246042.tif 000036
【図３５】
2010246042.tif 000037
【図３６】
2010246042.tif 000038
【図３７】
2010246042.tif 000039
【図３８】
2010246042.tif 000040
【図３９】
2010246042.tif 000041
【図４０】
2010246042.tif 000042
【図４１】
2010246042.tif 000043
【図４２】
2010246042.tif 000044
【図４３】
2010246042.tif 000045
【図４４】
2010246042.tif 000046
【図４５】
2010246042.tif 000047
【図４６】
2010246042.tif 000048
【図４７】
2010246042.tif 000049
【図４８】
2010246042.tif 000050
【図４９】
2010246042.tif 000051
【図５０】
2010246042.tif 000052