(57)【特許請求の範囲】
【請求項１】
時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、
上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、
上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、
上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第１の保持フレームデータ制御手段と、
上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、
現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第２の保持フレームデータ制御手段と、
現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第２の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段と
を有することを特徴とするデータ制御装置。
【請求項２】
コンピュータを、
時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、
上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、
上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、
上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第１の保持フレームデータ制御手段と、
上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、
現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第２の保持フレームデータ制御手段と、
現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第２の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段と
して機能させることを特徴とするデータ制御プログラム。
【請求項３】
時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記フレームデータ処理手段に入力されるフレームデータを制御するデータ制御手段とを備えるデータ処理装置において、
上記データ制御手段として、請求項１に記載のデータ制御装置を適用したことを特徴とするデータ処理装置。
【請求項４】
コンピュータを、
時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記フレームデータ処理手段に入力されるフレームデータを制御するデータ制御手段として機能させ、
上記データ制御手段は、請求項１に記載のデータ制御装置として機能する
ことを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ制御装置及びプログラム、並びに、データ処理装置及びプログラムに関し、例えば、カメラデバイスでキャプチャした映像データを符号化する処理に適用し得る。
【背景技術】
【０００２】
従来、カメラデバイスでキャプチャした映像（動画像）を用いて、リアルタイム映像通信を行うといった、映像処理をＰＣ上のソフトウエアで実現する場合、キャプチャデバイスには、いわゆるＷｅｂカメラ等の安価なものが用いられることが多い。
【０００３】
従来、ＰＣに接続されるＷｅｂカメラの制御には、Ｍｉｃｒｏｓｏｆｔ  ＤｉｒｅｃｔＳｈｏｗ（登録商標）のようなデバイス制御手段が用いられることが一般的である。このような制御手段を用いて、キャプチャデバイスからの映像をキャプチャする場合、Ｗｅｂカメラによっては、出力できるフレームレートが数種類しか対応していないものがあり、他にも、デバイスドライバによってはフレームレートの管理をしていないものもある。このようなキャプチャデバイスでは、フレームレートを設定したとしても、指定通りのフレームレートで映像が出力されないことがある。この場合、映像処理部分に設定したフレームレートと、キャプチャデバイスから出力されるフレームレートが異なることとなり、問題が生じることがある。
【０００４】
たとえば、上述のようなデバイス制御手段で、キャプチャデバイス（Ｗｅｂカメラ）でキャプチャされた映像信号を符号化して出力するという処理を行う場合、出力するフレームのフレームレートより高いフレームレートでキャプチャが行われると、出力側の通信容量を超えたビットストリームが出力されてしまうという問題が発生する。
【０００５】
このような問題を解決するために、特許文献１では、映像信号を符号化して出力する際のフレームレートを制御するフレームレート制御部を設けることについて記載されている。特許文献１に記載されたフレームレート制御部では、キャプチャデバイスから出力された映像を１フレーム分保存するフレームバッファを用意する構成をとり、フレームバッファを介することで、キャプチャデバイスからの映像出力タイミングと、映像処理の映像取得タイミングを独立で動作させることが可能となり、キャプチャデバイスの出力フレームレートが設定と異なる場合に対応している。
【０００６】
しかしながら、特許文献１に記載されたフレームレート制御部を、ＰＣ上のソフトウエアとして実現する場合、当該フレームレート制御部は、設定されたフレームレートでの処理が行うことができない場合がある。例えば、他のプロセスに計算機資源（ＣＰＵ等）を奪われているという状況や、符号化処理に適さないフレームが入力された場合、フレームレート制御部では、一時的に処理に時間がかかってしまう、という状況が考えられる。このような状況で、特許文献１に記載されたフレームレート制御部では、上述の通りフレームバッファに１フレーム分の映像しか保存していないため、連続して映像が破棄されてしまう。そのため、特許文献１に記載のフレームレート制御部で処理されたフレームに基づく映像では、突如として映像が変化する場合がある。さらに、特許文献１に記載のフレームレート制御部で処理されたフレームに基づく映像では、映像処理が設定したフレームレートで処理できない場合と、設定どおりのフレームレートで処理できるよう場合が繰り返されると、コマ落ちした映像と滑らかに動く映像が交互に現れ、見づらい映像が出力されてしまい、主観的な映像品質が下がるという問題がある。
【０００７】
そして、このような問題に対応する従来技術として特許文献２の記載技術がある。特許文献２では、キャプチャデバイス（ビデオカメラ）でキャプチャされた映像を処理する装置において、映像処理にかかる負荷を検知し、それに応じてキャプチャデバイスに対してフレームレートを再度設定するという方法が採用されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２１９０７０号公報
【特許文献２】特開平１０−１６４５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献２の記載技術では、キャプチャデバイスでキャプチャ中にフレームレートを再設定できない構成の場合には実現することができない等の問題がある。
【００１０】
以上のような問題に鑑みて、安定的にフレームデータ列を構成するフレームデータ（例えば、映像信号を構成する各フレームのデータ）を処理（例えば、符号化処理）することができるデータ制御装置及びプログラム、並びに、データ処理装置及びプログラムが望まれている。
【課題を解決するための手段】
【００１１】
第１の本発明のデータ制御装置は、（１）時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、（２）上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、（３）上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、（４）上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第１の保持フレームデータ制御手段と、（５）上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、（６）現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第２の保持フレームデータ制御手段と、（７）現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第２の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段とを有することを特徴とする。
【００１２】
第２の本発明のデータ制御プログラムは、コンピュータを、（１）時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、（２）上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、（３）上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、（４）上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第１の保持フレームデータ制御手段と、（５）上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、（６）現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第２の保持フレームデータ制御手段と、（７）現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第２の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段として機能させることを特徴とする。
【００１３】
第３の本発明のデータ処理装置は、時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記動画像処理手段に入力されるフレームデータを制御するデータ制御手段とを備えるデータ処理装置において、上記データ制御手段として、第１の本発明のデータ制御装置を適用したことを特徴とする。
【００１４】
第４の本発明のデータ処理プログラムは、コンピュータを、時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記フレームデータ処理手段に入力されるフレームデータを制御するデータ制御手段として機能させ、上記データ制御手段は、第１の本発明のデータ制御装置として機能することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、安定的にフレームデータ列を構成するフレームデータを処理するデータ処理装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施形態に係るデータ制御装置の機能的構成について示したブロック図である。
【図２】第１の実施形態に係る各装置の接続関係、及び、第１の実施形態に係る映像符号化処理装置の機能的構成について示したブロック図である。
【図３】第１の実施形態に係るデータ制御装置で映像フレームデータが入力される場合の動作について示したフローチャートである。
【図４】第１の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その１）である。
【図５】第１の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その２）である。
【図６】第１の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その３）である。
【図７】第１の実施形態に係るデータ制御装置で映像フレームデータが入出力される具体例について示したタイミングチャート（その１）である。
【図８】第１の実施形態に係るデータ制御装置で映像フレームデータが入出力される具体例について示したタイミングチャート（その２）である。
【図９】第２の実施形態に係るデータ制御装置の機能的構成について示したブロック図である。
【図１０】第２の実施形態に係るデータ制御装置で映像フレームデータが入力される場合の動作について示したフローチャートである。
【図１１】第２の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その１）である。
【図１２】第２の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その２）である。
【図１３】第２の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その３）である。
【図１４】第２の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート（その４）である。
【発明を実施するための形態】
【００１７】
（Ａ）第１の実施形態
以下、本発明によるデータ制御装置及びプログラム、並びに、データ処理装置及びプログラムの第１の実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータ制御装置及びデータ処理装置は、フレームレート制御部及び映像符号化処理装置である。
【００１８】
（Ａ−１）第１の実施形態の構成
図２は、第１の実施形態における各装置の接続関係、及び、第１の実施形態の映像符号化処理装置１の機能的構成について示したブロック図である。
【００１９】
図１は、第１の実施形態に係る映像符号化処理装置１を構成するフレームレート制御部１０の機能的構成について示したブロック図である。
【００２０】
第１の実施形態の映像符号化処理装置１は、キャプチャデバイス２から入力される入力映像信号（動画像信号）について、フレーム単位で符号化する処理を行うものである。
【００２１】
キャプチャデバイス２は、例えば、Ｗｅｂカメラ等のカメラにより撮像した映像に基づく入力映像データ（映像信号）を、リアルタイムに映像符号化処理装置１に入力するものである。キャプチャデバイス２としては、例えば、既存のＰＣに接続されるＷｅｂカメラ等を適用することができる。
【００２２】
そして、映像符号化処理装置１は、フレームレート制御部１０及び映像処理部２０を有している。
【００２３】
映像符号化処理装置１は、例えば、ＰＣやワークステーション等の情報処理装置に、実施形態のデータ処理プログラム（実施形態のデータ制御プログラムを含む）をインストールすることにより構築することができ、その場合でも映像符号化処理装置１の機能的構成は、図１のように示すことができる。
【００２４】
また、図１においては図示を省略しているが、映像符号化処理装置１とキャプチャデバイス２との間は、対応するインタフェース（例えば、ＵＳＢケーブル等）により接続されており、映像符号化処理装置１側では、当該インタフェースを介してキャプチャデバイス２を制御するためのデバイス制御手段としてのデバイスドライバ（例えば、ＷＭＤ（Ｗｉｎｄｏｗｓ  Ｄｒｉｖｅｒ  Ｍｏｄｅｌ（登録商標））準拠のデバイスドライバ）がインストールされているものとする。すなわち、映像符号化処理装置１では、論理的には上述のデバイスドライバを介して、キャプチャデバイス２に対する各種設定や、キャプチャデバイス２からの入力映像データ（入力映像信号）の受信が可能な構成となっているものとする。映像符号化処理装置１で適用されるデバイスドライバについては、上述の通り既存のものを適用することができるため、詳しい説明については省略する。
【００２５】
フレームレート制御部１０は、キャプチャデバイス２からデバイスドライバを介して入力された入力映像データ（入力映像信号）について、フレーム単位にバッファリングし、フレームレートを制御する処理等を施して、映像処理部２０に供給する。以下では、フレーム単位の映像データを映像フレームと呼ぶものとする。この実施形態では、フレームレート制御部１０は、図示しないデバイスドライバを介してキャプチャデバイス２から、映像フレームのデータと、当該映像フレームの時系列上の位置を表わす情報であるタイムスタンプのデータとを受信して処理するものとする。すなわち、キャプチャデバイス２からフレームレート制御部１０へは、時系列に映像フレームのデータの列（フレームデータ列）が入力されることになる。
【００２６】
フレームレート制御部１０は、キャプチャデバイス２からの出力を受け、キャプチャデバイス２の出力フレームレートが、当該フレームレート制御部１０に設定されたフレームレート（以下、「設定フレームレート」と呼ぶ）と異なる場合でも、設定フレームレートで出力するように、入力されたデータの処理を行う。さらに、映像処理部１０３が、設定フレームレートで符号化処理ができない場合でも、時系列的に連続した映像フレームを破棄することを防ぐため、複数フレームの映像フレームを保持できるフレームバッファを備え、フレームバッファに保存されている映像フレームから、出力フレームを選択し、映像処理部１０３へ映像フレームを出力する。フレームレート制御部１０に設定される設定フレームレートは、例えば、ユーザ操作や他のリソース（例えば、デバイスドライバ等）の制御等に応じて変更可能としても良い。
【００２７】
映像処理部２０は、フレームレート制御部１０で処理された映像フレームが供給されるとその映像フレームについて符号化及び出力を行うものであり、映像符号化部２１及び送信部２２を有している。映像符号化部２１は、フレームレート制御部１０から出力された映像フレームを符号化し、符号化データのビットストリームを出力する。
【００２８】
映像符号化部２１は、フレームレート制御部１０から供給された映像フレームについて符号化する処理を行うものである。映像符号化部２１としては既存の映像符号化処理（例えば、ＭＰＥＧの符号化等）を適用することができるので詳しい説明を省略する。
【００２９】
送信部２２は、映像符号化部２１が符号化した符号化映像データを出力する機能を担っている。送信部２２が符号化映像データを出力する方式については限定されないものであるが、この実施形態では、例えば、図示しないネットワーク上の宛先の通信装置（例えば、映像配信サーバや対向するビデオ会議端末等）に送信する処理を行うものとする。
【００３０】
具体的には、送信部２２は、映像符号化部２１で出力されたビットストリームを伝送メディア（出力メディア）に応じた形で分割し、パケット化したのち、ヘッダを付与し、受信側（復号側）の装置へ送信するものとする。
【００３１】
次に、フレームレート制御部１０の内部構成について説明する。
【００３２】
フレームレート制御部１０は、映像入力部１０１、フレームバッファ制御部１０２、フレームバッファ１０３、データ取得部１０４、及び映像出力部１１１を有している。
【００３３】
この実施形態では、フレームレート制御部１０は、映像処理部２０と同じハードウェア上に実現されているものとして説明するが、映像処理部２０を独立した装置（データ制御装置）として構築（別のハードウェア上に構築）するようにしてもよい。この実施形態データ制御装置は、例えば、ＰＣやワークステーション等の情報処理装置に、実施形態の実施形態のデータ制御プログラムをインストールすることにより構築することができる。
【００３４】
映像入力部１０１は、キャプチャデバイス２から出力された映像フレームとタイムスタンプのデータを取得するものである。また、フレームバッファ１０３は複数の映像フレームを保存する領域を備える記憶手段（メモリ）である。
【００３５】
映像入力部１０１は、フレームバッファ制御部１０２にタイムスタンプを引き渡す。また、映像入力部１０１は、フレームバッファ制御部１０２の制御に応じた領域に受信した映像フレームのデータをフレームバッファ１０３へ映像フレームを保存する。
【００３６】
すなわち、フレームレート制御部１０には、複数の映像フレームのデータを格納することができ、フレームバッファ１０３に格納されている各映像フレームに対応するタイムスタンプ等の情報は、フレームバッファ制御部１０２で管理されている。
【００３７】
フレームバッファ制御部１０２は、フレームバッファ１０３内の映像フレームのデータ格納位置（例えば、アドレス等）を制御する。具体的には、フレームバッファ制御部１０２は、キャプチャデバイス２からの映像フレームのデータ入力に対して、映像入力部１０１から入力された映像フレームのタイムスタンプを受け取り、フレームバッファ１０３内の格納位置（格納領域）を示す情報（以下、「フレーム保存情報」と呼ぶ）を映像入力部１０１に返す。そして、映像入力部１０１は、フレームバッファ１０３内のフレームバッファ制御部１０２の制御に応じた位置に、当該映像フレームのデータを格納する。
【００３８】
また、フレームバッファ制御部１０２は、データ取得部１０４からの映像フレームの取得要求に対して、フレームバッファ１０３内のどの映像フレームを出力するかを決定し、その映像フレームのフレーム保存情報を出力する。
【００３９】
データ取得部１０４は、映像処理部１０３が処理可能になったタイミングで、フレームバッファ制御部１０２へ、映像フレームの取得要求を送り、フレームバッファ制御部１０２から得られたフレーム保存情報を用いて、フレームバッファ１０３から映像フレームをコピーし、それを映像出力部１１１へ渡す。
【００４０】
映像出力部１１１は、データ取得部１０４から得た映像フレームのデータを映像処理部１０３へ渡すものである。なお、以下では、映像出力部１１１が映像フレームを出力する間隔に基づくフレームレートを出力フレームレートと呼ぶ。また、以下では、映像出力部１１１が映像フレームのデータを出力するタイミングが、当該映像フレームの設定フレームレートに基づく出力タイミング（全ての映像フレームが設定フレームレートで出力された場合の当該映像フレームの出力タイミング）よりも遅延している場合、その遅延時間（遅延量）を「出力遅延時間」と呼ぶものとする。
【００４１】
次に、フレームバッファ制御部１０２の詳細な構成を説明する。
【００４２】
フレームバッファ制御部１０２は、入力フレーム制御部１０５、フレームバッファ情報格納部１０６、出力フレーム制御部１０７、時間計測部１０８、出力フレーム決定部１０９、及び許容遅延量カウンタ１１０を有している。
【００４３】
入力フレーム制御部１０５は、フレームバッファ情報格納部１０６を参照し、映像入力部１０１に入力された映像フレームをフレームバッファ１０３のどの領域に保存するか、というフレーム保存情報を決定する。また、入力フレーム制御部１０５は、フレーム保存情報と、映像入力部１０１から入力されたフレームレートを、フレームバッファ情報格納部１０６へ記録する。また、入力フレーム制御部１０５は、直前に（前回）入力された映像フレームのタイムスタンプを保持しておき、最新に受け取った映像フレームのタイムスタンプから、入力フレーム間隔（前回の映像フレームの到来から、今回の映像フレームの到来までの間隔）を得る。そして、入力フレーム制御部１０５は、入力フレーム間隔と内部に保持している設定フレームレートの値を比較し、最新に入力された映像フレームの破棄の要否を判定する。
【００４４】
フレームバッファ情報格納部１０６は、フレームバッファ１０３内に保存されている各映像フレームに関する情報（以下、「フレーム情報」と呼ぶ）を管理している。フレームバッファ情報格納部１０６で管理されるフレーム情報には、当該映像フレームの格納位置を表わすフレーム保存情報と、当該映像フレームのタイムスタンプの情報が含まれているものとする。フレーム保存情報の形式については限定されないものであるが、例えば、フレームバッファ１０３に１０個の映像フレームを格納する領域があった場合に、それぞれの格納領域に付与されたインデックス番号（例えば、１〜１０のいずれかの番号）で表示するようにしても良い。そして、フレームバッファ制御部１０２では、上述のインデックス番号ごとに対応するタイムスタンプのデータを管理するようにしても良い。
【００４５】
出力フレーム制御部１０７では、データ取得部１０４からのデータ取得要求を受け、それを出力フレーム決定部１０９へ通知する。さらに、出力フレーム制御部１０７は、出力フレーム決定部１０９から、出力映像フレームのフレーム保存情報を得て、データ取得部１０４へ通知する。また、出力フレーム制御部１０７は、時間計測部１０８から得た経過時間と、内部に保持している前回映像フレームを取得してからの経過時間と、設定フレームレートの値から、出力フレーム間隔を監視する。
【００４６】
時間計測部１０８は、時間を計測するタイマであり、出力フレーム制御部１０７の制御に応じて動作（例えば、計測時間のリセット及び計測開始）し、出力フレーム制御部１０７の問合せに応じて現在の計測時間を返答する。
【００４７】
出力フレーム決定部１０９は、フレームバッファ情報格納部１０６の情報と、出力フレーム制御部１０７から得られた経過時間から、出力する映像フレームを決定し、フレームバッファ情報格納部１０６から得られたフレーム保存情報を出力フレーム制御部１０７へ通知する。出力フレーム決定部１０９は、は、出力フレーム制御部１０７から得た経過時間と、フレームバッファ情報格納部１０６から得られるタイムスタンプと、設定フレームレートと、許容遅延量カウンタ１１０から得られる
許容遅延量を用いて、出力すべき映像フレームを選択する。出力フレーム決定部１０９は、出力する映像フレーム決定の結果に基づいて、許容遅延量カウンタの値を変化させる。
【００４８】
許容遅延量カウンタ１１０は、遅延が生じた場合、何フレーム分の遅延まで許容できるかという許容遅延量を保持しておくカウンタである。
【００４９】
（Ａ−２）第１の実施形態の動作
次に、以上のような構成を有する第１の実施形態のフレームレート制御部１０を構成するフレームレート制御部１０の動作を説明する。上述の通り、映像符号化処理装置１を構成する映像処理部２０は従来技術と同様のものを適用することができるため、以下では、フレームレート制御部１０の動作を中心に説明する。
【００５０】
まず、映像符号化処理装置１が符号化処理の動作を開始する前に、キャプチャデバイス２、フレームレート制御部１０、映像処理部１０３に対し、キャプチャする映像のサイズ、色形式、フレームレートといった設定が行われたものとする。そして、フレームレート制御部１０におけるこれらの設定は、フレームレート制御部１０の入力フレーム制御部１０５、出力フレーム制御部１０７、出力フレーム決定部１０９にも反映されるものとする。また、フレームレート制御部１０では、時間計測部１０８の経過時間、入力フレーム制御部１０５内部の直前フレームのタイムスタンプ、及び出力フレーム制御部１０７内部に設定されている直前フレームの経過時間が０ヘリセット（初期化）され、許容遅延量カウンタの値も初期値として「１」がセットされたものとする。
【００５１】
フレームレート制御部１０では、特許文献１の記載技術と同様に、フレームレート制御部１０内のフレームバッファを用いて、出力する映像フレームの選択を行うため、キャプチャデバイス２からの入力の動作と、映像処理部１０３への出力動作は独立して動作するものとする。
【００５２】
フレームレート制御部１０への入力の動作としては、開始の指示が与えられると、映像入力部１０１により、キャプチャデバイス２から入力される映像フレーム及びタイムスタンプのデータの取得が開始され、映像フレームがフレームバッファ１０３に格納されるとともに、フレームバッファ制御部１０２では、フレームバッファ１０３に格納された映像フレームの管理等が行われる。フレームレート制御部１０では、このような動作が、終了の指示が与えられるまで繰り返される。なお、キャプチャデバイス２から入力される映像フレームのフレームレートは、設定フレームレートとは異なる場合も有り得る。
【００５３】
次に、フレームレート制御部１０の出力側の動作を説明する。開始の指示が与えられると、フレームレート制御部１０では、フレームバッファ１０３の中から選択された映像フレームが出力され、これが映像符号化部２１へ入力される。フレームレート制御部１０へ供給される動作の開始及び終了の指示の詳細については限定されないものであるが、例えば、ユーザの操作に基づく開始又は終了の指示信号が、デバイスドライバ等を介して伝達されるようにしても良い。また、フレームレート制御部１０では、映像処理部２０の動作と連動して動作の開始又は終了の有無を判定するようにしても良い。
【００５４】
映像符号化部２１では、Ｈ．２６４などの映像符号化方式で映像符号化が行われ、符号化されたビットストリームが出力される。次に、映像符号化部２１で出力されたビットストリームが送信部２２へ入力される。
【００５５】
送信部２２では、入力されたビットストリームを伝送メディアに応じた形で分割・パケット化したのち、ＲＴＰヘッダといった送信に必要なヘッダが付与され、受信側（複号側）へ送信される。
【００５６】
図３は、フレームレート制御部１０に映像フレームのデータが入力された時の動作について示したフローチャートである。
【００５７】
まず、フレームレート制御部１０では、動作開始の指示を受け、動作を開始したものとする。
【００５８】
そして、映像入力部１０１は、キャプチャデバイス２からの入力（映像フレーム及びタイムスタンプ）があるまで待機する（Ｓ３０１）。
【００５９】
次に、映像入力部１０１はキャプチャデバイスからの入力（映像フレーム及びタイムスタンプ）を受け、受け取ったタイムスタンプを入力フレーム制御部１０５へ入力する（Ｓ３０２）。以下では、入力フレーム制御部１０５に最新に入力された映像フレームを「現フレーム」とも呼ぶものとする。
【００６０】
次に、入力フレーム制御部１０５は、現フレームのタイムスタンプと、現フレームの直前に入力された映像フレーム（直前フレーム）のタイムスタンプとを比較し、入力フレーム間隔を計算する。そして、入力フレーム制御部１０５は、設定フレームレートから、設定フレーム間隔を計算し、設定フレーム間隔と入力フレーム間隔とを比較する（Ｓ３０３）。
【００６１】
そして、入力フレーム制御部１０５は、上述のステップＳ３０３の処理の結果、入力フレーム間隔が、設定フレーム間隔より短い場合は、フレームバッファ情報格納部１０６から、直前フレームのフレーム情報を消去する（Ｓ３０４）。
【００６２】
このように、フレームバッファ情報格納部１０６から直前フレームのフレーム情報を消去することで、設定フレーム間隔内には１フレーム分の情報のみ保持されていることになるので、キャプチャデバイス２の出力フレームレートが設定したフレームレートより高い場合に対応できる。また、フレームバッファ制御部１０２では、フレームバッファ情報格納部１０６に格納されるフレーム情報を操作することにより、一旦フレームバッファ１０３に格納された各映像フレームについて、間接的に制御している。すなわち、フレームバッファ制御部１０２は、直接フレームバッファ１０３のデータの消去等は行わないが、フレームバッファ情報格納部１０６から消去対象となる映像フレームのフレーム情報を消去することで、フレームバッファ１０３における当該映像フレームの領域を解放（リリース）して上書きを可能とする管理を行っている。
【００６３】
次に、入力フレーム制御部１０５は、フレームバッファ情報格納部１０６を参照し、フレームバッファ１０３内の空き領域から、現フレームを保存する位置（フレーム保存情報）を決定する（Ｓ３０５）。
【００６４】
次に、入力フレーム制御部１０５は、フレームバッファ情報格納部１０６へ現フレームのフレーム保存情報と、タイムスタンプを、現フレームのフレーム情報として記録する（Ｓ３０６）。
【００６５】
次に、入力フレーム制御部１０５は、現フレームのタイムスタンプを取得し、次の入力フレームの処理まで保持しておく（Ｓ３０７）。
【００６６】
次に、入力フレーム制御部１０５は、映像入力部１０１へ、現フレームのフレーム保存情報を通知する（Ｓ３０８）。
【００６７】
次に、映像入力部１０１は、入力フレーム制御部１０５から得た、フレームバッファ１０３内部のフレーム保存情報で示される領域に現フレームのデータ（映像フレームのデータ）を保存する（Ｓ３０９）。
【００６８】
そして、映像入力部１０１は、フレームレート制御部１０への停止の指示があった場合には動作を終了し、停止の指示が無い場合には、上述のステップＳ３０１の処理から動作する。
【００６９】
なお、フレームバッファ情報格納部１０６への操作（読み取り、書き込みは）は、入力フレーム制御部１０５、及び出力フレーム決定部１０９によって行われる。そのため、フレームバッファ１０３では、データの一貫性を保つために、入力フレーム制御部１０５又は出力フレーム決定部１０９が、フレームバッファ情報格納部１０６内の情報を操作する際には、他の構成要素からの書込みを禁止する排他制御を行う機能（ロック機構）に対応していることが望ましい。
【００７０】
次に、フレームレート制御部１０から映像フレームのデータが出力される時の動作について、図４〜図６のフローチャートを用いて説明する。
【００７１】
まず、フレームレート制御部１０では、動作開始の指示を受け、動作を開始したものとする。そして、フレームレート制御部１０では、動作開始にともなって時間計測部１０８による時間計測が開始されるものとする。
【００７２】
そして、データ取得部１０４は、映像処理部１０３が動作可能か（次の映像フレームのデータ受入れが可能であるか否か）を確認し（Ｓ４０１）、動作可能であれば、で出力フレーム制御部１０７へフレーム出力要求を行う（Ｓ４０２）。
【００７３】
次に、出力フレーム制御部１０７は、時間計測部１０８から動作開始からの経過時間を得る（Ｓ４０３）。
【００７４】
次に、出力フレーム制御部１０７Ａは、動作開始からの経過時間と、内部に保持している直前フレームを取得した時の経過時間から、出力フレーム間隔（[現在の経過時間]−[直前フレームを取得した時の経過時間]）を計算し、設定フレームレートから得られる設定フレーム間隔と比較する（Ｓ４０４）。そして、出力フレーム制御部１０７Ａは、設定フレーム間隔と出力フレーム間隔を比較した結果、出力フレーム間隔が設定フレーム間隔より短かった場合は、上述のステップＳ４０３に戻って動作する。すなわち、出力フレーム制御部１０７Ａは、出力フレーム間隔が設定フレーム間隔を超えるまで待機する。
【００７５】
次に、出力フレーム制御部１０７は、現在の時間計測部１０８で計時している時間を、これから処理を行う映像フレームの取得時間（以下、「フレーム取得時間」とも呼ぶ）として取得し、その次の映像フレームの処理時まで保持しておく（Ｓ４０５）。フレーム取得時間は、その次の映像フレームの処理時の出力フレーム間隔の算出に適用される。
【００７６】
次に、出力フレーム制御部１０７は、経過時間を出力フレーム決定部１０９へ通知する（Ｓ４０６）。
【００７７】
フレームレート制御部１０では、キャプチャデバイス２から入力される映像フレームのフレームレートが、設定フレームレートよりも遅い場合、データ取得部１０４がフレームバッファ１０３から映像フレームのデータを取得するタイミングで、フレームバッファ１０３に保存されている映像フレームが一つも無いという状況を避けるため、フレームバッファ１０３には少なくとも１フレーム分の映像が保存されている必要がある。そのため、出力フレーム決定部１０９は、フレームバッファ１０３で保持している映像フレームが無くならないように（フレームバッファ情報格納部１０６内のフレーム情報がなくならないように）、フレームバッファ情報格納部１０６の情報を更新する必要がある。
【００７８】
次に、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６を参照し、現在のフレームバッファ１０３に保持している映像フレームの数を把握し、把握した映像フレームの数に応じて、その後の動作を決定する（Ｓ４０７）。
【００７９】
上述のステップＳ４０７で保持する映像フレームの数が１と判定された場合、出力フレーム決定部１０９は、後述するステップＳ４０９から動作する。また、上述のステップＳ４０７で保持する映像フレームの数が２と判定された場合、出力フレーム決定部１０９は、後述するステップＳ４０８から動作する。さらに、上述のステップＳ４０７で保持する映像フレームの数が３以上と判定された場合、出力フレーム決定部１０９は、後述するステップＳ４１０から動作する。
【００８０】
上述のステップＳ４０７で、保持する映像フレームの数が２と判定された場合、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６に保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報を、フレーバッファ情報部４０６から消去する（Ｓ４０８）。
【００８１】
そして、上述のステップＳ４０７で保持する映像フレームの数が１と判定された場合、又は、上述のステップＳ４０８の処理の後、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６に記録されている最もタイムスタンプの古い映像フレームのフレーム情報を取得し（Ｓ４０９）、後述するステップＳ４２０の処理に移行する。
【００８２】
一方、上述のステップＳ４０７で、保持する映像フレームの数が３以上と判定された場合、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６に保存しているフレーム情報のうち、最もタイムスタンプの古いものを、フレームバッファ情報格納部１０６から消去する（Ｓ４１０）。
【００８３】
次に、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６に保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報（フレーム保存情報及びタイムスタンプ）を取得する（Ｓ４１１）。
【００８４】
次に、出力フレーム決定部１０９は、許容遅延量カウンタ１１０から、許容遅延カウンタ値を取得する（Ｓ４１２）。
【００８５】
次に、出力フレーム決定部１０９は、遅延許容量カウンタ４１０から得た許容遅延カウンタ値（遅延許容量）と、設定レームレートから得られる設定フレーム間隔から、許容遅延時間（＝許容遅延カウンタ値×設定フレームレート）を計算する（Ｓ４１３）。
【００８６】
次に、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６から取得したタイムスタンプの時間と時間計測部１０８の計時する時間とを比較して、現在の出力遅延時間(出力遅延量)を計算し、上述のステップＳ４１２で計算した許容遅延時間と比較する（Ｓ４１４）。ステップＳ４１４で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部１０９は、後述するステップＳ４１５から動作する。一方、ステップＳ４１４で、出力遅延時間が許容遅延時間を超えていない場合には、出力フレーム決定部１０９は、後述するステップＳ４１８から動作する。
【００８７】
上述のステップＳ４１４で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６から取得したフレーム情報（上述のステップＳ４１１で取得したフレーム情報）を消去する（Ｓ４１５）。
【００８８】
次に、出力フレーム決定部１０９は、出力フレーム決定部１０９は、フレームバッファ情報格納部１０６から、最もタイムスタンプが古い映像フレームのフレーム情報を取得する（Ｓ４１６）。
【００８９】
次に、出力フレーム決定部１０９は、許容遅延量カウンタ１１０の遅延許容量カウンタ値をインクリメント（１加算）し（Ｓ４１７）、後述するステップＳ４２０の処理に移行する。
【００９０】
一方、上述のステップＳ４１４で、出力遅延時間が許容遅延時間を超えていなかった場合には、出力フレーム決定部１０９は、遅延許容量カウンタ４１０から得た許容遅延カウンタ値（許容遅延量）が２以上であるかを確認する（Ｓ４１８）。
【００９１】
ステップＳ４１８で、許容遅延カウンタ値が２以上だった場合には、出力フレーム決定部１０９は、許容遅延量カウンタ１１０の許容遅延カウンタ値をデクリメント（１減らす）処理を行い、後述するステップＳ４２０の処理に以降する。
【００９２】
一方、上述のステップＳ４１８で、許容遅延カウンタ値が２以上でなかった場合（１だった場合）であった場合には、出力フレーム決定部１０９は、そのまま後述するステップＳ４２０の処理に移行する。
【００９３】
そして、ステップＳ４２０では、出力フレーム決定部１０９は、出力する映像フレームのフレーム情報が得られたことになるので、出力する映像フレームのフレーム保存情報（保存場所）を出力フレーム制御部１０７へ通知する。
【００９４】
次に、出力フレーム制御部１０７は、出力する映像フレームのフレーム保存情報（保存場所）を、データ取得部１０４へ通知する（Ｓ４２１）。
【００９５】
次に、データ取得部１０４は、フレームバッファ１０３から、通知されたフレーム保存情報に対応する映像フレームのデータを取得（コピー）する（Ｓ４２２）。
【００９６】
次に、データ取得部１０４は、取得した映像フレームのデータを、映像出力部１１１に供給する（Ｓ４２３）。
【００９７】
次に、映像出力部１１１は、供給された映像フレームのデータを映像処理部１０３へ供給する（Ｓ４２４）。
【００９８】
そして、フレームバッファ制御部１０２では、フレームレート制御部１０への停止の指示があった場合には動作を終了し、停止の指示が無い場合には、上述のステップＳ４０１の処理から動作する。
【００９９】
次に、上述のフローチャートの動作に従って、フレームレート制御部１０が動作した場合の具体例について、図７、図８を用いて説明する。
【０１００】
図７、図８では、１４個の映像フレームＦ（Ｆａ〜Ｆｎ）が、Ｆａ、Ｆｂ、Ｆｃ、Ｆｄ、…、Ｆｍ、Ｆｎという順序で、フレームレート制御部１０に入力された場合の、フレームＦａ〜Ｆｎが入力されるタイミングＴＩａ〜ＴＩｎと、映像フレームＦａ〜Ｆｎが出力されるタイミングＴＯａ〜ＴＯｎを示している。ただし、図７では、映像フレームＦｃ、Ｆｄ、Ｆｆ、Ｆｇについてはフレームレート制御部１０内で廃棄され出力されないため、それらの映像フレームの出力タイミングについては図示されていない。また、図８では、映像フレームＦｃ、Ｆｅ、Ｆｈ、Ｆｌについてはフレームレート制御部１０内で廃棄され出力されないため、それらの映像フレームの出力タイミングについては図示されていない。
【０１０１】
なお、図７、図８では、映像フレームＦａ〜Ｆｎが、フレームレート制御部１０に入力されるタイミングＴＩａ〜ＴＩｎのそれぞれの間隔は、設定フレームレートに基づく設定フレーム間隔と一致しているものとする。
【０１０２】
図８では、フレームバッファ制御部１０２が、上述の図３〜図６のフローチャートの通りに動作した場合の映像フレームの入出力について示している。
【０１０３】
一方、図７では、フレームレート制御部１０が、映像処理部２０で１つの映像フレームの処理が終了したタイミングにおいて、当該タイミングの直前にフレームレート制御部１０に入力された映像フレームを、映像処理部２０に入力した場合の例について示している。すなわち、図７では、フレームバッファ１０３に映像フレームを１つだけ格納する構成となっており、キャプチャデバイス２から映像フレームが入力されるごとに、フレームバッファ１０３に最新の映像フレームのデータが上書きされる場合の動作について示している。言い換えると、図７では、出力フレーム決定部１０９が、許容遅延量カウンタ１１０の許容遅延カウンタ値に応じた動作を行わない場合の動作について示している。
【０１０４】
まず、図７のタイミングチャートの詳細について説明する。
【０１０５】
図７では、まず、タイミングＴＩａで、映像フレームＦａがフレームレート制御部１０に入力されたものとする。そして、フレームレート制御部１０は、映像フレームＦａを、すぐに映像処理部２０に入力する。そして、その後、フレームレート制御部１０には、タイミングＴＩｂの時点で映像フレームＦｂが入力されたものとする。そして、タイミングＴＩｂとほぼ同じ時期のタイミングＴＯａまでに、映像処理部２０による映像フレームＦａの符号化処理が終了し、タイミングＴＯａの時点でフレームレート制御部１０から映像処理部２０に映像フレームＦａが供給されたものとする。
【０１０６】
しかし、映像処理部２０では、映像フレームＦｂについて処理時間が設定フレーム間隔よりも多くかかり、その間にフレームレート制御部１０には、３つの映像フレームＦｃ、Ｆｄ、Ｆｅが入力され、フレームバッファ１０３には映像フレームＦｅしか残っていない状態となったものとする。したがって、映像フレームＦｅがフレームレート制御部１０に入力されるタイミングＦＩｅよりも後の、タイミングＴＯｂで、映像処理部２０による映像フレームＦｂの符号化処理が終了するが、フレームレート制御部１０から映像処理部２０に映像フレームＦｅが供給されることになる。すなわち、この場合、フレームレート制御部１０では、映像フレームＦｃ、Ｆｄは連続して破棄されることになる。
【０１０７】
そして、図７に示すように、映像処理部２０では、続く映像フレームＦｅについても、符号化処理が設定フレーム間隔よりも長くかかり、その間に３つの映像フレームＦｆ、Ｆｇ、Ｆｈがフレームレート制御部１０に入力されている。その結果、フレームレート制御部１０では、映像フレームＦｆ、Ｆｇは連続して破棄されることになる。
【０１０８】
したがって、図７に示すように、フレームバッファ１０３に映像フレームを１つだけ格納する場合には、フレームレート制御部１０では、連続して映像フレームが破棄されることになる。
【０１０９】
次に、図８のタイミングチャートの詳細について説明する。
【０１１０】
なお、図８では、タイミングごとの許容遅延量カウンタ１１０の許容遅延カウンタ値の遷移についても図示している。許容遅延カウンタ値は、フレームレート制御部１０で映像フレームを出力するごとに更新されるので、図８では、タイミングＴＯａ、ＴＯｂ、ＴＯｄ、ＴＯｆ、ＴＯｇ、ＴＯｉ、ＴＯｊ、ＴＯｋ、ＴＯｍ、ＴＯｎのそれぞれのタイミングで更新される許容遅延カウンタ値の遷移を示している。例えば、許容遅延カウンタ値の初期値は１であるのでタイミングＴＯａまでは、許容遅延カウンタ値の値は１となっている。また、図８では、タイミングＴＯｂのタイミングで、許容遅延カウンタ値が２に変化している。さらに、図８では、タイミングＴＯｄで、許容遅延カウンタ値が３に変化している。
【０１１１】
図８では、まず、タイミングＴＩａで、映像フレームＦａがフレームレート制御部１０に入力されたものとする。そして、フレームレート制御部１０は、映像フレームＦａを、すぐに映像処理部２０に入力する。
【０１１２】
そして、その後、フレームレート制御部１０には、タイミングＴＩｂの時点で映像フレームＦｂが入力されたものとする。そして、タイミングＴＩｂとほぼ同じタイミングＴＯａまでに、映像処理部２０による映像フレームＦａの符号化処理が終了し、タイミングＴＯａの時点でフレームレート制御部１０から映像処理部２０に映像フレームＦａが供給されたものとする。なお、図８に示すようにタイミングＴＯａの後も、許容遅延カウンタ値は変化せず１のままである。
【０１１３】
そして、その後、映像処理部２０では、映像フレームＦｂについて処理時間が設定フレーム間隔よりも多くかかり、その間にフレームレート制御部１０には、３つの映像フレームＦｃ、Ｆｄ、Ｆｅが入力されたものとする。そして、図８に示すように、映像フレームＦｅがフレームレート制御部１０に入力されるタイミングＦＩｅよりも後の、タイミングＴＯｂで、映像処理部２０による映像フレームＦｂの符号化処理が終了する。タイミングＴＯｂの時点で、フレームバッファ１０３には４つの映像フレームＦｂ、Ｆｃ、Ｆｄ、Ｆｅが保持されている状態となり、フレームレート制御部１０では、次の映像フレームＦｃを取得しようとしても、許容遅延カウンタ値（１）に基づく許容遅延時間を超えた遅延が発生した状態となるため取得できない。したがって、タイミングＴＯｂの時点で、フレームバッファ１０３（フレームバッファ情報格納部１０６）から、映像フレームＦｃが消去（上述のステップＳ４１５の処理）され、フレームバッファ制御部１０２ではその次の映像フレームＦｄが取得され（上述のステップＳ４１６の処理）、さらに、許容遅延カウンタ値がインクリメント（上述のステップＳ４１７の処理）されて２に変化する。
【０１１４】
そして、図８に示すように、映像処理部２０では、続く映像フレームＦｄについても、符号化処理が設定フレーム間隔よりも長くかかり、その間に３つの映像フレームＦｆ、Ｆｇ、Ｆｈがフレームレート制御部１０に入力されている。そして、図８に示すように、映像フレームＦｈがフレームレート制御部１０に入力されるタイミングＦＩｈよりも後の、タイミングＴＯｄで、映像処理部２０による映像フレームＦｄの符号化処理が終了する。タイミングＴＯｄの時点で、フレームバッファ１０３には５つの映像フレームＦｄ、Ｆｅ、Ｆｆ、Ｆｇ、Ｆｈが保持されている状態となり、フレームレート制御部１０では、次の映像フレームＦｅを取得しようとしても、許容遅延カウンタ値（２）に基づく許容遅延時間を超えた遅延が発生した状態となるため取得できない。したがって、タイミングＴＯｄの時点で、フレームバッファ１０３（フレームバッファ情報格納部１０６）から、映像フレームＦｅが消去（上述のステップＳ４１５の処理）され、フレームバッファ制御部１０２ではその次の映像フレームＦｆが取得され（上述のステップＳ４１６の処理）、さらに、許容遅延カウンタ値がインクリメント（上述のステップＳ４１７の処理）されて３に変化する。
【０１１５】
そして、図８に示すように、映像処理部２０では、映像フレームＦｆについては、符号化処理が、概ね設定フレーム間隔で終了し、その間に１つの映像フレームＦｉだけがフレームレート制御部１０に入力されている。そして、図８に示すように、映像フレームＦｉがフレームレート制御部１０に入力されるタイミングＦＩｉよりも後の、タイミングＴＯｆで、映像処理部２０による映像フレームＦｆの符号化処理が終了する。タイミングＴＯｆの時点で、フレームバッファ１０３には４つの映像フレームＦｆ、Ｆｇ、Ｆｈ、Ｆｉが保持されている状態となり、フレームレート制御部１０では、許容遅延カウンタ値（３）に基づく許容遅延時間を超えないため、次の映像フレームＦｇを取得することが可能となる（上述のステップＳ４１４の処理でＮｏの判定となる）。そして、フレームレート制御部１０では、許容遅延カウンタ値がデクリメント（上述のステップＳ４１９の処理）されて２に変化する。
【０１１６】
以上のように、フレームレート制御部１０で処理が行われた結果、フレームレート制御部１０で破棄される映像フレームは、映像フレームＦｃ、Ｆｅ、Ｆｈ、Ｆｌとなり、図７の例と比較すると、時系列的に連続する映像フレームが破棄されることはなくなることになる。
【０１１７】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、以下のような効果を奏することができる。
【０１１８】
フレームレート制御部１０では、図８に示すように連続してフレームが破棄されることなく、現在の出力遅延量と許容遅延量（許容遅延カウンタ値に基づく遅延量）との比較結果に応じて、分散してフレームが破棄されるため、出力される映像フレームに基づく映像に不均等なコマ落ちが起こらず、主観的な品質が向上する。
【０１１９】
フレームレート制御部１０では、現在の出力遅延量と許容遅延カウンタ値に基づく許容遅延量との比較結果に応じて、許容遅延カウンタ値を増減させている。具体的には、フレームレート制御部１０では、現在の出力遅延量が許容遅延カウンタ値に基づく許容遅延量を超える場合に、許容遅延カウンタ値の値をインクリメントし、現在の出力遅延量が許容遅延カウンタ値に基づく許容遅延量を下回る場合（ただし、許容遅延カウンタ値が２以上の場合）に、許容遅延カウンタ値の値をデクリメントしている。これにより、フレームレート制御部１０では、出力遅延量が急激に変動した場合(例えば、映像処理部２０の動作が急に不安定になった場合等)でも、許容遅延カウンタ値に基づいて、徐々に出力遅延を回復させるので、出力フレームレートの急激な変動や設定フレームレートとの乖離を抑制しつつ、出力遅延を回復させることができる。
【０１２０】
（Ｂ）第２の実施形態
次に、本発明によるデータ制御装置及びプログラム、並びに、データ処理装置及びプログラムの第２の実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータ制御装置及びデータ処理装置は、フレームレート制御部及び映像符号化処理装置である。
【０１２１】
（Ｂ−１）第２の実施形態の構成
第２の実施形態の全体構成も、図２を用いて示すことができる。なお、図２において、括弧内の符号は、第２の実施形態でのみ用いられる符号である。
【０１２２】
そして、第２の実施形態の映像符号化処理装置１Ａでは、フレームレート制御部１０がフレームレート制御部１０Ａに置き換わっている点で、第１の実施形態と異なっている。以下では、第２の実施形態について第１の実施形態との差異を中心に説明する。
【０１２３】
図９は、第２の実施形態のフレームレート制御部１０Ａの機能的構成について示したブロック図である。
【０１２４】
第２の実施形態のフレームレート制御部１０Ａでは、フレームバッファ制御部１０２がフレームバッファ制御部１０２Ａに置き換わっている点で、第１の実施形態と異なっている。そして、第２の実施形態のフレームバッファ制御部１０２Ａでは、入力フレームレート更新部１１２が追加されている点で、第１の実施形態と異なっている。また、第２の実施形態のフレームバッファ制御部１０２Ａでは、入力フレーム制御部１０５、フレームバッファ情報格納部１０６、出力フレーム制御部１０７、及び出力フレーム決定部１０９が、入力フレーム制御部１０５Ａ、フレームバッファ情報格納部１０６Ａ、出力フレーム制御部１０７Ａ、及び出力フレーム決定部１０９Ａに置き換わっている点で第１の実施形態と異なっている。
【０１２５】
入力フレームレート更新部１１２は、フレームレート制御部１０Ａの処理で利用する設定フレームレートを管理する機能を担っている。第１の実施形態のフレームレート制御部１０では設定フレームレートは固定値であったが、第２の実施形態のフレームレート制御部１０Ａでは、適用する設定フレームレートが変動する。そのため、フレームレート制御部１０Ａでは、入力フレームレート更新部１１２により、動作を開始したときの初期の設定フレームレートの値（以下、「初期設定フレームレート」と呼ぶ）と、現在の設定フレームレートとを保持している。そして、フレームレート制御部１０Ａは、保持している設定フレームレートを、出力フレーム制御部１０７Ａ及び出力フレーム決定部１０９Ａの制御に従って、保持する設定フレームレートを更新する。そして、この実施形態では、入力フレームレート更新部１１２は、出力フレーム制御部１０７Ａからの設定フレームレートの更新要求を受けると、保持する設定フレームレートを初期値（初期設定フレームレート）へ更新する。また、入力フレームレート更新部１１２は、出力フレーム決定部１０９Ａからの設定フレームレート更新要求を受けると、保持する設定フレームレートの値を、現在よりも下げるように更新する。
【０１２６】
第１の実施形態の入力フレーム制御部１０５は、設定フレームレートに基づいたタイミングで、フレームバッファ１０３への映像フレームの受入れを行っているが、第２の実施形態の入力フレーム制御部１０５Ａでは、現在の入力フレームレート更新部１１２で保持されている設定フレームレートに基づいたタイミング（間隔）で、フレームバッファ１０３への映像フレームの受入れを行う。また、入力フレーム制御部１０５Ａは、入力された映像フレームのフレーム情報として、フレーム保存情報、タイムスタンプ、及び当該映像フレームの受入れ時にフレームレート更新部１１２から得られる設定フレームレートを、フレームバッファ情報格納部１０６Ａへ記録する。
【０１２７】
出力フレーム制御部１０７Ａは、上述の通り、入力フレームレート更新部１１２への制御を行う点で、第１の実施形態と異なっている。出力フレーム制御部１０７Ａは、時間計測部１０８から得た経過時間と、内部に保持している直前フレーム取得時の経過時間と、出力フレーム決定部１０９Ａの状態に基づいて、出力フレーム間隔を監視する。さらに、出力フレーム間隔を監視した結果、データ取得要求が待たされる状況が発生した場合は、入力フレームレート更新部１１２へ、設定フレームレートの更新要求を行う。
【０１２８】
第１の実施形態では、許容遅延量カウンタ１１０に設定する許容遅延量カウンタ１１０に上限を設けてはいないが、第２の実施形態の出力フレーム決定部１０９Ａでは、許容遅延カウンタ値の上限値が設定されており、許容遅延カウンタ値が上限値に達した場合にはそれ以上加算（インクリメント）を行わない。そして、出力フレーム決定部１０９Ａは、許容遅延カウンタ値が上限値に達した場合には、入力フレームレート更新部１１２へ、入力フレームレートの更新を要求する。
【０１２９】
（Ｂ−２）第２の実施形態の動作
次に、以上のような構成を有する第２の実施形態のフレームレート制御部１０Ａを構成するフレームレート制御部１０Ａの動作を説明する。
【０１３０】
フレームレート制御部１０Ａの、キャプチャデバイスからの映像入力時の動作を、図１０を用いて説明する。
【０１３１】
まず、第１の実施形態と同様に、映像符号化処理装置１Ａでは、符号化処理の動作を開始する前に、キャプチャデバイス２、フレームレート制御部１０Ａ、映像処理部１０３に対し各種設定が行われ、フレームレート制御部１０Ａにも反映されたものとする。また、フレームレート制御部１０Ａでは、時間計測部１０８の経過時間、入力フレーム制御部１０５Ａ内部の直前フレームのタイムスタンプ、及び出力フレーム制御部１０７Ａ内部に設定されている直前フレームの経過時間が０ヘリセット（初期化）され、許容遅延量カウンタの値も初期値として「１」がセットされたものとする。
【０１３２】
次に、フレームレート制御部１０Ａの、キャプチャデバイス２からの映像フレーム入力時の動作を、図１０を用いて説明する。
【０１３３】
まず、フレームレート制御部１０Ａでは、動作開始の指示を受け、動作を開始したものとする。
【０１３４】
そして、映像入力部１０１は、キャプチャデバイス２からの入力（映像フレーム及びタイムスタンプ）があるまで待機する（Ｓ９０１）。
【０１３５】
次に、映像入力部１０１はキャプチャデバイスからの入力（映像フレーム及びタイムスタンプ）を受け、受け取ったタイムスタンプを入力フレーム制御部１０５Ａへ入力する（Ｓ９０２）。
【０１３６】
次に、入力フレーム制御部１０５Ａは、入力フレームレート更新部１１２から、設定フレームレートの最新の値を得る（Ｓ９０３）。
【０１３７】
次に、入力フレーム制御部１０５Ａは、現フレームのタイムスタンプと、保持している直前フレームのタイムスタンプとを比較し、入力フレーム間隔を計算する、そして、入力フレーム制御部１０５Ａは、設定フレームレートから、設定フレーム間隔を計算し、設定フレーム間隔と入力フレーム間隔とを比較する（Ｓ９０４）。
【０１３８】
そして、入力フレーム制御部１０５Ａは、上述のステップＳ９０４の処理の結果、入力フレーム間隔が、設定フレーム間隔より短い場合は、フレームバッファ情報格納部１０６Ａから、直前フレームの情報を消去する（Ｓ９０５）。
【０１３９】
次に、入力フレーム制御部１０５Ａは、フレームバッファ情報格納部１０６Ａを参照し、空き領域から、現フレームを保存する位置（フレーム保存情報）を決定する（Ｓ９０６）。
【０１４０】
次に、入力フレーム制御部１０５Ａは、フレームバッファ情報格納部１０６Ａへフレーム情報（入力フレームのフレーム保存情報、タイムスタンプ、及び設定フレームレートを含む）を記録する（Ｓ９０７）。
【０１４１】
次に、入力フレーム制御部１０５Ａは、現フレームのタイムスタンプを取得し、次の入力フレームの処理まで保持しておく（Ｓ９０８）。
【０１４２】
次に、入力フレーム制御部１０５Ａは、映像入力部１０１へ、最新に入力された映像フレームのフレーム保存情報を通知する（Ｓ９０９）。
【０１４３】
次に、映像入力部１０１は、入力フレーム制御部１０５Ａから得た、フレームバッファ１０３内部のフレーム保存情報で示される領域に現フレームのデータ（映像フレームのデータ）を保存する（Ｓ９１０）。
【０１４４】
そして、映像入力部１０１は、フレームレート制御部１０Ａへの停止の指示があったか否かを判定し（Ｓ９１１）、停止の指示場合には動作を終了し、停止の指示が無い場合には、上述のステップＳ９０１の処理から動作する。
【０１４５】
次に、フレームレート制御部１０Ａから映像フレームのデータが出力される時の動作について、図１１〜図１４のフローチャートを用いて説明する。
【０１４６】
まず、フレームレート制御部１０Ａでは、動作開始の指示を受け、動作を開始したものとする。そして、フレームレート制御部１０Ａでは、動作開始にともなって時間計測部１０８による時間計測が開始されるものとする。
【０１４７】
そして、データ取得部１０４は、映像処理部１０３が動作可能かを確認し（Ｓ１００１）、動作可能であれば、で出力フレーム制御部１０７Ａへフレーム出力要求を行う（Ｓ１００２）。
【０１４８】
次に、出力フレーム制御部１０７Ａは、時間計測部１０８から動作開始からの経過時間を得る（Ｓ１００３）。
【０１４９】
次に、出力フレーム制御部１０７Ａは、動作開始からの経過時間と、内部に保持している直前フレームを取得した時の経過時間から、出力フレーム間隔を計算し、設定フレームレートから得られる設定フレーム間隔と比較する（Ｓ１００４）。そして、出力フレーム制御部１０７Ａは、設定フレーム間隔と出力フレーム間隔を比較した結果、出力フレーム間隔が設定フレーム間隔より短かった場合は、後述するステップＳ１００５から動作し、出力フレーム間隔が設定フレーム間隔より長かった場合は、後述するステップＳ１００８から動作する。
【０１５０】
上述のステップＳ１００４で、出力フレーム間隔が設定フレーム間隔より短かった場合は、映像処理部１０３の処理が、設定フレームレートよりも早く符号化処理を完了しているということになるので、出力フレーム制御部１０７Ａは、映像処理部１０３の処理が完了するまで、上述のステップＳ１００３の処理に戻る処理により、待機状態を継続することになる。ただし、出力フレーム制御部１０７Ａは、待機状態に入ったときにだけ、入力フレームレート更新部１１２へフレームレート更新要求を通知し、入力フレームレート更新部１１２は、内部に設定している設定フレームレートを初期値に更新する（Ｓ１００５〜Ｓ１００７）。なお、この場合、入力フレームレート更新部１１２は、必ずしも初期値へ更新する必要はなく、初期値を上限として、現在の設定値より高い値を、設定フレームレートとして設定するようにしてもよい。
【０１５１】
一方、上述のステップＳ１００４で、出力フレーム間隔が設定フレーム間隔より長かった場合（設定フレーム間隔の時間を経過した場合）には、出力フレーム制御部１０７Ａは、現在の時間計測部１０８で計時している時間を、フレーム取得時間として取得し、その次の映像フレーム処理時まで保持しておく（Ｓ１００８）。
【０１５２】
次に、出力フレーム制御部１０７Ａは、経過時間を出力フレーム決定部１０９Ａへ通知する（Ｓ１００９）。
【０１５３】
次に、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａを参照し、現在のフレームバッファ１０３に保持している映像フレームの数を把握し、把握した映像フレームの数に応じて、その後の動作を決定する（Ｓ１０１０）。
【０１５４】
上述のステップＳ１０１０で保持する映像フレームの数が１と判定された場合、出力フレーム決定部１０９Ａは、後述するステップＳ１０１２から動作する。また、上述のステップＳ１０１０で保持する映像フレームの数が２と判定された場合、出力フレーム決定部１０９Ａは、後述するステップＳ１０１１から動作する。さらに、上述のステップＳ１０１０で保持する映像フレームの数が３以上と判定された場合、出力フレーム決定部１０９Ａは、後述するステップＳ１０１３から動作する。
【０１５５】
上述のステップＳ１０１０で、保持する映像フレームの数が２と判定された場合、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａに保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報を、フレーバッファ情報部４０６から消去する（Ｓ１０１１）。
【０１５６】
そして、上述のステップＳ１０１０で保持する映像フレームの数が１と判定された場合、又は、上述のステップＳ１０１１の処理の後、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａに記録されている最もタイムスタンプの古い映像フレームのフレーム情報を取得し（Ｓ１０１２）、後述するステップＳ１０２６の処理に移行する。
【０１５７】
一方、上述のステップＳ１０１０で、保持する映像フレームの数が３以上と判定された場合、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａに保存しているフレーム情報のうち、最もタイムスタンプの古いものを、フレームバッファ情報格納部１０６Ａから消去する（Ｓ１０１３）。
【０１５８】
次に、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａに保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報（フレーム保存情報及びタイムスタンプ）を取得する（Ｓ１０１４）。
【０１５９】
次に、出力フレーム決定部１０９Ａは、許容遅延量カウンタ１１０から、許容遅延カウンタ値を取得する（Ｓ１０１５）。
【０１６０】
次に、出力フレーム決定部１０９Ａは、許容遅延量カウンタ１１０から得た許容遅延カウンタ値（遅延許容量）と、設定レームレートから得られる設定フレーム間隔から、許容遅延時間を計算する（Ｓ１０１６）。
【０１６１】
次に、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａから取得したタイムスタンプの時間と時間計測部１０８の計時する時間とを比較して、現在の出力遅延時間(出力遅延量)を計算し、上述のステップＳ１０１６で計算した許容遅延時間と比較する（Ｓ１０１７）。ステップＳ１０１７で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部１０９Ａは、後述するステップＳ１０１８から動作する。一方、ステップＳ１０１７で、出力遅延時間が許容遅延時間を超えていない場合には、出力フレーム決定部１０９Ａは、後述するステップＳ１０２４から動作する。
【０１６２】
上述のステップＳ１０１７で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａから取得したフレーム情報（上述のステップＳ１０１１で取得したフレーム情報）を消去する（Ｓ１０１８）。
【０１６３】
次に、出力フレーム決定部１０９Ａは、出力フレーム決定部１０９Ａは、フレームバッファ情報格納部１０６Ａから、最もタイムスタンプが古い映像フレームのフレーム情報を取得する（Ｓ１０１９）。
【０１６４】
次に、出力フレーム決定部１０９Ａは、許容遅延量カウンタ１１０の遅延許容量カウンタ値をインクリメント（１加算）する（Ｓ１０２０）。
【０１６５】
次に、出力フレーム決定部１０９Ａは、現在の許容遅延カウンタ値（許容遅延量）と、許容遅延カウンタ値に対する上限の閾値とを比較する（Ｓ１０２１）。
【０１６６】
上述のステップＳ１０２１で、現在の許容遅延カウンタ値（許容遅延量）が許容遅延カウンタ値に対する上限の閾値に達した（等しくなった）と判定された場合には、出力フレーム決定部１０９Ａは、入力フレームレート更新部１１２へ、設定フレームレートの更新要求を通知する（Ｓ１０２２）。
【０１６７】
そして、設定フレームレートの更新要求を受けると、入力フレームレート更新部１１２は、設定フレームレートの設定値を現在の値よりも低く設定する（Ｓ１０２３）。
【０１６８】
この場合、入力フレームレート更新部１１２は、例えば、初期値の半分のフレームレートとなるように、設定フレームレートを設定するようにしても良い。また、例えば、入力フレームレート更新部１１２は、一定時間内のフレームバッファ１０３内のデータ量の増加分から、符号化処理にかかる時間を推定し、再設定する設定フレームレートを決定するようにしてもよい。
【０１６９】
一方、上述のステップＳ１０１７で、出力遅延時間が許容遅延時間を超えていなかった場合には、出力フレーム決定部１０９Ａは、許容遅延量カウンタ１１０から得た許容遅延カウンタ値（許容遅延量）が２以上であるかを確認する（Ｓ１０２４）。
【０１７０】
ステップＳ１０２４で、許容遅延カウンタ値が２以上だった場合には、出力フレーム決定部１０９Ａは、許容遅延量カウンタ１１０の許容遅延カウンタ値をデクリメント（１減らす）処理を行い、後述するステップＳ１０２６の処理に移行する。
【０１７１】
一方、上述のステップＳ１０２４で、許容遅延カウンタ値が２以上でなかった場合（１であった場合）には、出力フレーム決定部１０９Ａは、そのまま後述するステップＳ１０２６の処理に移行する。
【０１７２】
そして、ステップＳ１０２６では、出力フレーム決定部１０９Ａは、出力する映像フレームのフレーム情報が得られたことになるので、出力する映像フレームのフレーム保存情報（保存場所）を出力フレーム制御部１０７Ａへ通知する。
【０１７３】
次に、出力フレーム制御部１０７Ａは、出力する映像フレームのフレーム保存情報（保存場所）を、データ取得部１０４へ通知する（Ｓ１０２７）。
【０１７４】
次に、データ取得部１０４は、フレームバッファ１０３から、通知されたフレーム保存情報に対応する映像フレームのデータを取得（コピー）する（Ｓ１０２８）。
【０１７５】
次に、データ取得部１０４は、取得した映像フレームのデータを、映像出力部１１１に供給する（Ｓ１０２９）。
【０１７６】
次に、映像出力部１１１は、供給された映像フレームのデータを映像処理部１０３へ供給する（Ｓ１０３０）。
【０１７７】
そして、フレームバッファ制御部１０２Ａでは、フレームレート制御部１０Ａへの停止の指示があったか否かを確認し（Ｓ１０３１）、停止の指示があった場合には動作を終了し、停止の指示が無い場合には、上述のステップＳ１００１の処理から動作する。
【０１７８】
（Ｂ−３）第２の実施形態の効果
第２の実施形態によれば、以下のような効果を奏することができる。
【０１７９】
第１の実施形態では、突発的に出力遅延量が大きくなった場合（映像処理部２０の処理時間が長くなった場合）を想定した構成となっているが、継続して慢性的に出力遅延量が増えていく場合、フレームバッファ１０３の容量が足りなくなったり、映像処理部２０が出力するデータの品質（例えば、リアルタイム性）が損なわれたりする場合がある。そのため、第２の実施形態のフレームレート制御部１０Ａでは、許容遅延量（許容遅延カウンタ値に基づく遅延量）の上限値を設け、許容遅延量の上限に達した場合、フレームバッファ１０３へ入力する映像フレームのフレームレートを下げることで、実質的な出力フレームレートの変更を行っている。
【０１８０】
（Ｃ）他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【０１８１】
（Ｃ−１）上記の各実施形態では、フレームレート制御部（データ制御装置）のフレームデータの出力先は、映像処理部（映像フレームデータの符号化を行う装置）であるが、フレームレート制御部（データ制御装置）の出力先は、リアルタイムなデータ処理を行うもの（例えば、暗号化処理等）であれば限定されないものである。
【０１８２】
また、上記の各実子形態では、フレームレート制御部（データ制御装置）が扱うフレームデータは映像（動画像）を構成する映像フレームデータであるが、その他のリアルタイムデータ（例えば、音声データ等のストリームデータ）の一部を構成するフレームデータとしてもよい。
【０１８３】
（Ｃ−２）上記の各実施形態のフレームレート制御部では、キャプチャデバイスから映像フレームデータごとのタイムスタンプの供給を受けているが、タイムスタンプの供給を受けないようにしてもよい。例えば、フレームレート制御部で、内部のタイマ（例えば、時間計測部の経過時間）に応じたタイムスタンプを付与（映像フレームデータを供給された時の時間をタイムスタンプとして付与）するようにしてもよい。これは、キャプチャデバイス（または、デバイスドライバ）によっては、正しいタイムスタンプを出力しないものもあるため、このようなデバイスがフレームレート制御部に接続された場合でも、内部でタイムスタンプを生成することができれば正常に動作が可能となる。
【０１８４】
（Ｃ−３）第２の実施形態において、入力フレームレート更新部の動作のうち、フレームレートを低く設定する動作（ステップＳ１０２２の処理）の例として、フレームレートを半分としているが、現在の設定値より低くなるような設定であれば、具体的な計算方式は限定されないものである。
【符号の説明】
【０１８５】
１…映像符号化処理装置、１０…フレームレート制御部、２０…映像処理部、２１…映像符号化部、２２…送信部、２…キャプチャデバイス、１０…フレームレート制御部、１０１…映像入力部、１０２…フレームバッファ制御部、１０３…フレームバッファ、１０４…データ取得部、１０５…入力フレーム制御部、１０６…フレームバッファ情報格納部、１０７…出力フレーム制御部、１０８…時間計測部、１０９…出力フレーム決定部、１１０…許容遅延量カウンタ、１１１…映像出力部。
【図１】
0005974482.tif 000002
【図２】
0005974482.tif 000003
【図３】
0005974482.tif 000004
【図４】
0005974482.tif 000005
【図５】
0005974482.tif 000006
【図６】
0005974482.tif 000007
【図７】
0005974482.tif 000008
【図８】
0005974482.tif 000009
【図９】
0005974482.tif 000010
【図１０】
0005974482.tif 000011
【図１１】
0005974482.tif 000012
【図１２】
0005974482.tif 000013
【図１３】
0005974482.tif 000014
【図１４】
0005974482.tif 000015