特許第5974482号(P5974482)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 沖電気工業株式会社の特許一覧

特許5974482データ制御装置及びプログラム、並びに、データ処理装置及びプログラム
<>
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000002
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000003
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000004
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000005
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000006
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000007
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000008
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000009
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000010
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000011
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000012
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000013
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000014
  • 特許5974482-データ制御装置及びプログラム、並びに、データ処理装置及びプログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5974482
(24)【登録日】2016年7月29日
(45)【発行日】2016年8月23日
(54)【発明の名称】データ制御装置及びプログラム、並びに、データ処理装置及びプログラム
(51)【国際特許分類】
   H04N 7/01 20060101AFI20160809BHJP
【FI】
   H04N7/01 Z
【請求項の数】4
【全頁数】27
(21)【出願番号】特願2011-288303(P2011-288303)
(22)【出願日】2011年12月28日
(65)【公開番号】特開2013-138340(P2013-138340A)
(43)【公開日】2013年7月11日
【審査請求日】2014年8月15日
(73)【特許権者】
【識別番号】000000295
【氏名又は名称】沖電気工業株式会社
(74)【代理人】
【識別番号】100180275
【弁理士】
【氏名又は名称】吉田 倫太郎
(74)【代理人】
【識別番号】100090620
【弁理士】
【氏名又は名称】工藤 宣幸
(74)【代理人】
【識別番号】100161861
【弁理士】
【氏名又は名称】若林 裕介
(72)【発明者】
【氏名】山崎 貴宏
【審査官】 秦野 孝一郎
(56)【参考文献】
【文献】 特開2010−103711(JP,A)
【文献】 特開2011−35613(JP,A)
【文献】 特開2008−60658(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/01
(57)【特許請求の範囲】
【請求項1】
時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、
上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、
上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、
上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第1の保持フレームデータ制御手段と、
上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、
現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第2の保持フレームデータ制御手段と、
現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第2の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段と
を有することを特徴とするデータ制御装置。
【請求項2】
コンピュータを、
時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、
上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、
上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、
上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第1の保持フレームデータ制御手段と、
上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、
現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第2の保持フレームデータ制御手段と、
現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第2の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段と
して機能させることを特徴とするデータ制御プログラム。
【請求項3】
時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記フレームデータ処理手段に入力されるフレームデータを制御するデータ制御手段とを備えるデータ処理装置において、
上記データ制御手段として、請求項1に記載のデータ制御装置を適用したことを特徴とするデータ処理装置。
【請求項4】
コンピュータを、
時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記フレームデータ処理手段に入力されるフレームデータを制御するデータ制御手段として機能させ、
上記データ制御手段は、請求項1に記載のデータ制御装置として機能する
ことを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ制御装置及びプログラム、並びに、データ処理装置及びプログラムに関し、例えば、カメラデバイスでキャプチャした映像データを符号化する処理に適用し得る。
【背景技術】
【0002】
従来、カメラデバイスでキャプチャした映像(動画像)を用いて、リアルタイム映像通信を行うといった、映像処理をPC上のソフトウエアで実現する場合、キャプチャデバイスには、いわゆるWebカメラ等の安価なものが用いられることが多い。
【0003】
従来、PCに接続されるWebカメラの制御には、Microsoft DirectShow(登録商標)のようなデバイス制御手段が用いられることが一般的である。このような制御手段を用いて、キャプチャデバイスからの映像をキャプチャする場合、Webカメラによっては、出力できるフレームレートが数種類しか対応していないものがあり、他にも、デバイスドライバによってはフレームレートの管理をしていないものもある。このようなキャプチャデバイスでは、フレームレートを設定したとしても、指定通りのフレームレートで映像が出力されないことがある。この場合、映像処理部分に設定したフレームレートと、キャプチャデバイスから出力されるフレームレートが異なることとなり、問題が生じることがある。
【0004】
たとえば、上述のようなデバイス制御手段で、キャプチャデバイス(Webカメラ)でキャプチャされた映像信号を符号化して出力するという処理を行う場合、出力するフレームのフレームレートより高いフレームレートでキャプチャが行われると、出力側の通信容量を超えたビットストリームが出力されてしまうという問題が発生する。
【0005】
このような問題を解決するために、特許文献1では、映像信号を符号化して出力する際のフレームレートを制御するフレームレート制御部を設けることについて記載されている。特許文献1に記載されたフレームレート制御部では、キャプチャデバイスから出力された映像を1フレーム分保存するフレームバッファを用意する構成をとり、フレームバッファを介することで、キャプチャデバイスからの映像出力タイミングと、映像処理の映像取得タイミングを独立で動作させることが可能となり、キャプチャデバイスの出力フレームレートが設定と異なる場合に対応している。
【0006】
しかしながら、特許文献1に記載されたフレームレート制御部を、PC上のソフトウエアとして実現する場合、当該フレームレート制御部は、設定されたフレームレートでの処理が行うことができない場合がある。例えば、他のプロセスに計算機資源(CPU等)を奪われているという状況や、符号化処理に適さないフレームが入力された場合、フレームレート制御部では、一時的に処理に時間がかかってしまう、という状況が考えられる。このような状況で、特許文献1に記載されたフレームレート制御部では、上述の通りフレームバッファに1フレーム分の映像しか保存していないため、連続して映像が破棄されてしまう。そのため、特許文献1に記載のフレームレート制御部で処理されたフレームに基づく映像では、突如として映像が変化する場合がある。さらに、特許文献1に記載のフレームレート制御部で処理されたフレームに基づく映像では、映像処理が設定したフレームレートで処理できない場合と、設定どおりのフレームレートで処理できるよう場合が繰り返されると、コマ落ちした映像と滑らかに動く映像が交互に現れ、見づらい映像が出力されてしまい、主観的な映像品質が下がるという問題がある。
【0007】
そして、このような問題に対応する従来技術として特許文献2の記載技術がある。特許文献2では、キャプチャデバイス(ビデオカメラ)でキャプチャされた映像を処理する装置において、映像処理にかかる負荷を検知し、それに応じてキャプチャデバイスに対してフレームレートを再度設定するという方法が採用されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−219070号公報
【特許文献2】特開平10−164503号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献2の記載技術では、キャプチャデバイスでキャプチャ中にフレームレートを再設定できない構成の場合には実現することができない等の問題がある。
【0010】
以上のような問題に鑑みて、安定的にフレームデータ列を構成するフレームデータ(例えば、映像信号を構成する各フレームのデータ)を処理(例えば、符号化処理)することができるデータ制御装置及びプログラム、並びに、データ処理装置及びプログラムが望まれている。
【課題を解決するための手段】
【0011】
第1の本発明のデータ制御装置は、(1)時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、(2)上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、(3)上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、(4)上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第1の保持フレームデータ制御手段と、(5)上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、(6)現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第2の保持フレームデータ制御手段と、(7)現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第2の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段とを有することを特徴とする。
【0012】
第2の本発明のデータ制御プログラムは、コンピュータを、(1)時系列に入力されるフレームデータ列を構成するフレームデータを複数保持可能なフレームデータ保持手段と、(2)上記フレームデータ保持手段が保持しているフレームデータを、制御に応じて出力するフレームデータ出力手段と、(3)上記フレームデータ出力手段の出力先で、フレームデータの受入れが可能な期間に、上記フレームデータ保持手段が保持しているフレームデータのうち、最も前の時系列のフレームデータを、上記フレームデータ出力手段に出力させるものであって、上記フレームデータ出力手段がフレームデータを出力する周期が、出力フレーム周期となるように制御するフレーム出力制御手段と、(4)上記フレームデータ出力手段が出力したフレームデータについて、フレームデータ保持手段から削除する第1の保持フレームデータ制御手段と、(5)上記フレームデータ出力手段がフレームデータを出力するタイミングが、上記出力フレーム周期に基づくタイミングよりも遅延している場合の出力遅延量を求める出力遅延量算出手段と、(6)現在の出力遅延量が、許容遅延量以上だった場合に、上記フレームデータ出力手段が最新に出力したフレームデータ以降の時系列のフレームデータを選択して、上記フレームデータ保持手段から削除する第2の保持フレームデータ制御手段と、(7)現在の出力遅延量と、許容遅延量との比較結果に応じて、上記第2の保持フレームデータ制御手段に設定する許容遅延量を増減させる許容遅延量制御手段として機能させることを特徴とする。
【0013】
第3の本発明のデータ処理装置は、時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記動画像処理手段に入力されるフレームデータを制御するデータ制御手段とを備えるデータ処理装置において、上記データ制御手段として、第1の本発明のデータ制御装置を適用したことを特徴とする。
【0014】
第4の本発明のデータ処理プログラムは、コンピュータを、時系列に入力されるフレームデータ列を構成するフレームデータを処理するフレームデータ処理手段と、上記フレームデータ処理手段に入力されるフレームデータを制御するデータ制御手段として機能させ、上記データ制御手段は、第1の本発明のデータ制御装置として機能することを特徴とする。
【発明の効果】
【0015】
本発明によれば、安定的にフレームデータ列を構成するフレームデータを処理するデータ処理装置を提供することができる。
【図面の簡単な説明】
【0016】
図1】第1の実施形態に係るデータ制御装置の機能的構成について示したブロック図である。
図2】第1の実施形態に係る各装置の接続関係、及び、第1の実施形態に係る映像符号化処理装置の機能的構成について示したブロック図である。
図3】第1の実施形態に係るデータ制御装置で映像フレームデータが入力される場合の動作について示したフローチャートである。
図4】第1の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その1)である。
図5】第1の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その2)である。
図6】第1の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その3)である。
図7】第1の実施形態に係るデータ制御装置で映像フレームデータが入出力される具体例について示したタイミングチャート(その1)である。
図8】第1の実施形態に係るデータ制御装置で映像フレームデータが入出力される具体例について示したタイミングチャート(その2)である。
図9】第2の実施形態に係るデータ制御装置の機能的構成について示したブロック図である。
図10】第2の実施形態に係るデータ制御装置で映像フレームデータが入力される場合の動作について示したフローチャートである。
図11】第2の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その1)である。
図12】第2の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その2)である。
図13】第2の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その3)である。
図14】第2の実施形態に係るデータ制御装置で映像フレームデータが出力される場合の動作について示したフローチャート(その4)である。
【発明を実施するための形態】
【0017】
(A)第1の実施形態
以下、本発明によるデータ制御装置及びプログラム、並びに、データ処理装置及びプログラムの第1の実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータ制御装置及びデータ処理装置は、フレームレート制御部及び映像符号化処理装置である。
【0018】
(A−1)第1の実施形態の構成
図2は、第1の実施形態における各装置の接続関係、及び、第1の実施形態の映像符号化処理装置1の機能的構成について示したブロック図である。
【0019】
図1は、第1の実施形態に係る映像符号化処理装置1を構成するフレームレート制御部10の機能的構成について示したブロック図である。
【0020】
第1の実施形態の映像符号化処理装置1は、キャプチャデバイス2から入力される入力映像信号(動画像信号)について、フレーム単位で符号化する処理を行うものである。
【0021】
キャプチャデバイス2は、例えば、Webカメラ等のカメラにより撮像した映像に基づく入力映像データ(映像信号)を、リアルタイムに映像符号化処理装置1に入力するものである。キャプチャデバイス2としては、例えば、既存のPCに接続されるWebカメラ等を適用することができる。
【0022】
そして、映像符号化処理装置1は、フレームレート制御部10及び映像処理部20を有している。
【0023】
映像符号化処理装置1は、例えば、PCやワークステーション等の情報処理装置に、実施形態のデータ処理プログラム(実施形態のデータ制御プログラムを含む)をインストールすることにより構築することができ、その場合でも映像符号化処理装置1の機能的構成は、図1のように示すことができる。
【0024】
また、図1においては図示を省略しているが、映像符号化処理装置1とキャプチャデバイス2との間は、対応するインタフェース(例えば、USBケーブル等)により接続されており、映像符号化処理装置1側では、当該インタフェースを介してキャプチャデバイス2を制御するためのデバイス制御手段としてのデバイスドライバ(例えば、WMD(Windows Driver Model(登録商標))準拠のデバイスドライバ)がインストールされているものとする。すなわち、映像符号化処理装置1では、論理的には上述のデバイスドライバを介して、キャプチャデバイス2に対する各種設定や、キャプチャデバイス2からの入力映像データ(入力映像信号)の受信が可能な構成となっているものとする。映像符号化処理装置1で適用されるデバイスドライバについては、上述の通り既存のものを適用することができるため、詳しい説明については省略する。
【0025】
フレームレート制御部10は、キャプチャデバイス2からデバイスドライバを介して入力された入力映像データ(入力映像信号)について、フレーム単位にバッファリングし、フレームレートを制御する処理等を施して、映像処理部20に供給する。以下では、フレーム単位の映像データを映像フレームと呼ぶものとする。この実施形態では、フレームレート制御部10は、図示しないデバイスドライバを介してキャプチャデバイス2から、映像フレームのデータと、当該映像フレームの時系列上の位置を表わす情報であるタイムスタンプのデータとを受信して処理するものとする。すなわち、キャプチャデバイス2からフレームレート制御部10へは、時系列に映像フレームのデータの列(フレームデータ列)が入力されることになる。
【0026】
フレームレート制御部10は、キャプチャデバイス2からの出力を受け、キャプチャデバイス2の出力フレームレートが、当該フレームレート制御部10に設定されたフレームレート(以下、「設定フレームレート」と呼ぶ)と異なる場合でも、設定フレームレートで出力するように、入力されたデータの処理を行う。さらに、映像処理部103が、設定フレームレートで符号化処理ができない場合でも、時系列的に連続した映像フレームを破棄することを防ぐため、複数フレームの映像フレームを保持できるフレームバッファを備え、フレームバッファに保存されている映像フレームから、出力フレームを選択し、映像処理部103へ映像フレームを出力する。フレームレート制御部10に設定される設定フレームレートは、例えば、ユーザ操作や他のリソース(例えば、デバイスドライバ等)の制御等に応じて変更可能としても良い。
【0027】
映像処理部20は、フレームレート制御部10で処理された映像フレームが供給されるとその映像フレームについて符号化及び出力を行うものであり、映像符号化部21及び送信部22を有している。映像符号化部21は、フレームレート制御部10から出力された映像フレームを符号化し、符号化データのビットストリームを出力する。
【0028】
映像符号化部21は、フレームレート制御部10から供給された映像フレームについて符号化する処理を行うものである。映像符号化部21としては既存の映像符号化処理(例えば、MPEGの符号化等)を適用することができるので詳しい説明を省略する。
【0029】
送信部22は、映像符号化部21が符号化した符号化映像データを出力する機能を担っている。送信部22が符号化映像データを出力する方式については限定されないものであるが、この実施形態では、例えば、図示しないネットワーク上の宛先の通信装置(例えば、映像配信サーバや対向するビデオ会議端末等)に送信する処理を行うものとする。
【0030】
具体的には、送信部22は、映像符号化部21で出力されたビットストリームを伝送メディア(出力メディア)に応じた形で分割し、パケット化したのち、ヘッダを付与し、受信側(復号側)の装置へ送信するものとする。
【0031】
次に、フレームレート制御部10の内部構成について説明する。
【0032】
フレームレート制御部10は、映像入力部101、フレームバッファ制御部102、フレームバッファ103、データ取得部104、及び映像出力部111を有している。
【0033】
この実施形態では、フレームレート制御部10は、映像処理部20と同じハードウェア上に実現されているものとして説明するが、映像処理部20を独立した装置(データ制御装置)として構築(別のハードウェア上に構築)するようにしてもよい。この実施形態データ制御装置は、例えば、PCやワークステーション等の情報処理装置に、実施形態の実施形態のデータ制御プログラムをインストールすることにより構築することができる。
【0034】
映像入力部101は、キャプチャデバイス2から出力された映像フレームとタイムスタンプのデータを取得するものである。また、フレームバッファ103は複数の映像フレームを保存する領域を備える記憶手段(メモリ)である。
【0035】
映像入力部101は、フレームバッファ制御部102にタイムスタンプを引き渡す。また、映像入力部101は、フレームバッファ制御部102の制御に応じた領域に受信した映像フレームのデータをフレームバッファ103へ映像フレームを保存する。
【0036】
すなわち、フレームレート制御部10には、複数の映像フレームのデータを格納することができ、フレームバッファ103に格納されている各映像フレームに対応するタイムスタンプ等の情報は、フレームバッファ制御部102で管理されている。
【0037】
フレームバッファ制御部102は、フレームバッファ103内の映像フレームのデータ格納位置(例えば、アドレス等)を制御する。具体的には、フレームバッファ制御部102は、キャプチャデバイス2からの映像フレームのデータ入力に対して、映像入力部101から入力された映像フレームのタイムスタンプを受け取り、フレームバッファ103内の格納位置(格納領域)を示す情報(以下、「フレーム保存情報」と呼ぶ)を映像入力部101に返す。そして、映像入力部101は、フレームバッファ103内のフレームバッファ制御部102の制御に応じた位置に、当該映像フレームのデータを格納する。
【0038】
また、フレームバッファ制御部102は、データ取得部104からの映像フレームの取得要求に対して、フレームバッファ103内のどの映像フレームを出力するかを決定し、その映像フレームのフレーム保存情報を出力する。
【0039】
データ取得部104は、映像処理部103が処理可能になったタイミングで、フレームバッファ制御部102へ、映像フレームの取得要求を送り、フレームバッファ制御部102から得られたフレーム保存情報を用いて、フレームバッファ103から映像フレームをコピーし、それを映像出力部111へ渡す。
【0040】
映像出力部111は、データ取得部104から得た映像フレームのデータを映像処理部103へ渡すものである。なお、以下では、映像出力部111が映像フレームを出力する間隔に基づくフレームレートを出力フレームレートと呼ぶ。また、以下では、映像出力部111が映像フレームのデータを出力するタイミングが、当該映像フレームの設定フレームレートに基づく出力タイミング(全ての映像フレームが設定フレームレートで出力された場合の当該映像フレームの出力タイミング)よりも遅延している場合、その遅延時間(遅延量)を「出力遅延時間」と呼ぶものとする。
【0041】
次に、フレームバッファ制御部102の詳細な構成を説明する。
【0042】
フレームバッファ制御部102は、入力フレーム制御部105、フレームバッファ情報格納部106、出力フレーム制御部107、時間計測部108、出力フレーム決定部109、及び許容遅延量カウンタ110を有している。
【0043】
入力フレーム制御部105は、フレームバッファ情報格納部106を参照し、映像入力部101に入力された映像フレームをフレームバッファ103のどの領域に保存するか、というフレーム保存情報を決定する。また、入力フレーム制御部105は、フレーム保存情報と、映像入力部101から入力されたフレームレートを、フレームバッファ情報格納部106へ記録する。また、入力フレーム制御部105は、直前に(前回)入力された映像フレームのタイムスタンプを保持しておき、最新に受け取った映像フレームのタイムスタンプから、入力フレーム間隔(前回の映像フレームの到来から、今回の映像フレームの到来までの間隔)を得る。そして、入力フレーム制御部105は、入力フレーム間隔と内部に保持している設定フレームレートの値を比較し、最新に入力された映像フレームの破棄の要否を判定する。
【0044】
フレームバッファ情報格納部106は、フレームバッファ103内に保存されている各映像フレームに関する情報(以下、「フレーム情報」と呼ぶ)を管理している。フレームバッファ情報格納部106で管理されるフレーム情報には、当該映像フレームの格納位置を表わすフレーム保存情報と、当該映像フレームのタイムスタンプの情報が含まれているものとする。フレーム保存情報の形式については限定されないものであるが、例えば、フレームバッファ103に10個の映像フレームを格納する領域があった場合に、それぞれの格納領域に付与されたインデックス番号(例えば、1〜10のいずれかの番号)で表示するようにしても良い。そして、フレームバッファ制御部102では、上述のインデックス番号ごとに対応するタイムスタンプのデータを管理するようにしても良い。
【0045】
出力フレーム制御部107では、データ取得部104からのデータ取得要求を受け、それを出力フレーム決定部109へ通知する。さらに、出力フレーム制御部107は、出力フレーム決定部109から、出力映像フレームのフレーム保存情報を得て、データ取得部104へ通知する。また、出力フレーム制御部107は、時間計測部108から得た経過時間と、内部に保持している前回映像フレームを取得してからの経過時間と、設定フレームレートの値から、出力フレーム間隔を監視する。
【0046】
時間計測部108は、時間を計測するタイマであり、出力フレーム制御部107の制御に応じて動作(例えば、計測時間のリセット及び計測開始)し、出力フレーム制御部107の問合せに応じて現在の計測時間を返答する。
【0047】
出力フレーム決定部109は、フレームバッファ情報格納部106の情報と、出力フレーム制御部107から得られた経過時間から、出力する映像フレームを決定し、フレームバッファ情報格納部106から得られたフレーム保存情報を出力フレーム制御部107へ通知する。出力フレーム決定部109は、は、出力フレーム制御部107から得た経過時間と、フレームバッファ情報格納部106から得られるタイムスタンプと、設定フレームレートと、許容遅延量カウンタ110から得られる
許容遅延量を用いて、出力すべき映像フレームを選択する。出力フレーム決定部109は、出力する映像フレーム決定の結果に基づいて、許容遅延量カウンタの値を変化させる。
【0048】
許容遅延量カウンタ110は、遅延が生じた場合、何フレーム分の遅延まで許容できるかという許容遅延量を保持しておくカウンタである。
【0049】
(A−2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態のフレームレート制御部10を構成するフレームレート制御部10の動作を説明する。上述の通り、映像符号化処理装置1を構成する映像処理部20は従来技術と同様のものを適用することができるため、以下では、フレームレート制御部10の動作を中心に説明する。
【0050】
まず、映像符号化処理装置1が符号化処理の動作を開始する前に、キャプチャデバイス2、フレームレート制御部10、映像処理部103に対し、キャプチャする映像のサイズ、色形式、フレームレートといった設定が行われたものとする。そして、フレームレート制御部10におけるこれらの設定は、フレームレート制御部10の入力フレーム制御部105、出力フレーム制御部107、出力フレーム決定部109にも反映されるものとする。また、フレームレート制御部10では、時間計測部108の経過時間、入力フレーム制御部105内部の直前フレームのタイムスタンプ、及び出力フレーム制御部107内部に設定されている直前フレームの経過時間が0ヘリセット(初期化)され、許容遅延量カウンタの値も初期値として「1」がセットされたものとする。
【0051】
フレームレート制御部10では、特許文献1の記載技術と同様に、フレームレート制御部10内のフレームバッファを用いて、出力する映像フレームの選択を行うため、キャプチャデバイス2からの入力の動作と、映像処理部103への出力動作は独立して動作するものとする。
【0052】
フレームレート制御部10への入力の動作としては、開始の指示が与えられると、映像入力部101により、キャプチャデバイス2から入力される映像フレーム及びタイムスタンプのデータの取得が開始され、映像フレームがフレームバッファ103に格納されるとともに、フレームバッファ制御部102では、フレームバッファ103に格納された映像フレームの管理等が行われる。フレームレート制御部10では、このような動作が、終了の指示が与えられるまで繰り返される。なお、キャプチャデバイス2から入力される映像フレームのフレームレートは、設定フレームレートとは異なる場合も有り得る。
【0053】
次に、フレームレート制御部10の出力側の動作を説明する。開始の指示が与えられると、フレームレート制御部10では、フレームバッファ103の中から選択された映像フレームが出力され、これが映像符号化部21へ入力される。フレームレート制御部10へ供給される動作の開始及び終了の指示の詳細については限定されないものであるが、例えば、ユーザの操作に基づく開始又は終了の指示信号が、デバイスドライバ等を介して伝達されるようにしても良い。また、フレームレート制御部10では、映像処理部20の動作と連動して動作の開始又は終了の有無を判定するようにしても良い。
【0054】
映像符号化部21では、H.264などの映像符号化方式で映像符号化が行われ、符号化されたビットストリームが出力される。次に、映像符号化部21で出力されたビットストリームが送信部22へ入力される。
【0055】
送信部22では、入力されたビットストリームを伝送メディアに応じた形で分割・パケット化したのち、RTPヘッダといった送信に必要なヘッダが付与され、受信側(複号側)へ送信される。
【0056】
図3は、フレームレート制御部10に映像フレームのデータが入力された時の動作について示したフローチャートである。
【0057】
まず、フレームレート制御部10では、動作開始の指示を受け、動作を開始したものとする。
【0058】
そして、映像入力部101は、キャプチャデバイス2からの入力(映像フレーム及びタイムスタンプ)があるまで待機する(S301)。
【0059】
次に、映像入力部101はキャプチャデバイスからの入力(映像フレーム及びタイムスタンプ)を受け、受け取ったタイムスタンプを入力フレーム制御部105へ入力する(S302)。以下では、入力フレーム制御部105に最新に入力された映像フレームを「現フレーム」とも呼ぶものとする。
【0060】
次に、入力フレーム制御部105は、現フレームのタイムスタンプと、現フレームの直前に入力された映像フレーム(直前フレーム)のタイムスタンプとを比較し、入力フレーム間隔を計算する。そして、入力フレーム制御部105は、設定フレームレートから、設定フレーム間隔を計算し、設定フレーム間隔と入力フレーム間隔とを比較する(S303)。
【0061】
そして、入力フレーム制御部105は、上述のステップS303の処理の結果、入力フレーム間隔が、設定フレーム間隔より短い場合は、フレームバッファ情報格納部106から、直前フレームのフレーム情報を消去する(S304)。
【0062】
このように、フレームバッファ情報格納部106から直前フレームのフレーム情報を消去することで、設定フレーム間隔内には1フレーム分の情報のみ保持されていることになるので、キャプチャデバイス2の出力フレームレートが設定したフレームレートより高い場合に対応できる。また、フレームバッファ制御部102では、フレームバッファ情報格納部106に格納されるフレーム情報を操作することにより、一旦フレームバッファ103に格納された各映像フレームについて、間接的に制御している。すなわち、フレームバッファ制御部102は、直接フレームバッファ103のデータの消去等は行わないが、フレームバッファ情報格納部106から消去対象となる映像フレームのフレーム情報を消去することで、フレームバッファ103における当該映像フレームの領域を解放(リリース)して上書きを可能とする管理を行っている。
【0063】
次に、入力フレーム制御部105は、フレームバッファ情報格納部106を参照し、フレームバッファ103内の空き領域から、現フレームを保存する位置(フレーム保存情報)を決定する(S305)。
【0064】
次に、入力フレーム制御部105は、フレームバッファ情報格納部106へ現フレームのフレーム保存情報と、タイムスタンプを、現フレームのフレーム情報として記録する(S306)。
【0065】
次に、入力フレーム制御部105は、現フレームのタイムスタンプを取得し、次の入力フレームの処理まで保持しておく(S307)。
【0066】
次に、入力フレーム制御部105は、映像入力部101へ、現フレームのフレーム保存情報を通知する(S308)。
【0067】
次に、映像入力部101は、入力フレーム制御部105から得た、フレームバッファ103内部のフレーム保存情報で示される領域に現フレームのデータ(映像フレームのデータ)を保存する(S309)。
【0068】
そして、映像入力部101は、フレームレート制御部10への停止の指示があった場合には動作を終了し、停止の指示が無い場合には、上述のステップS301の処理から動作する。
【0069】
なお、フレームバッファ情報格納部106への操作(読み取り、書き込みは)は、入力フレーム制御部105、及び出力フレーム決定部109によって行われる。そのため、フレームバッファ103では、データの一貫性を保つために、入力フレーム制御部105又は出力フレーム決定部109が、フレームバッファ情報格納部106内の情報を操作する際には、他の構成要素からの書込みを禁止する排他制御を行う機能(ロック機構)に対応していることが望ましい。
【0070】
次に、フレームレート制御部10から映像フレームのデータが出力される時の動作について、図4図6のフローチャートを用いて説明する。
【0071】
まず、フレームレート制御部10では、動作開始の指示を受け、動作を開始したものとする。そして、フレームレート制御部10では、動作開始にともなって時間計測部108による時間計測が開始されるものとする。
【0072】
そして、データ取得部104は、映像処理部103が動作可能か(次の映像フレームのデータ受入れが可能であるか否か)を確認し(S401)、動作可能であれば、で出力フレーム制御部107へフレーム出力要求を行う(S402)。
【0073】
次に、出力フレーム制御部107は、時間計測部108から動作開始からの経過時間を得る(S403)。
【0074】
次に、出力フレーム制御部107Aは、動作開始からの経過時間と、内部に保持している直前フレームを取得した時の経過時間から、出力フレーム間隔([現在の経過時間]−[直前フレームを取得した時の経過時間])を計算し、設定フレームレートから得られる設定フレーム間隔と比較する(S404)。そして、出力フレーム制御部107Aは、設定フレーム間隔と出力フレーム間隔を比較した結果、出力フレーム間隔が設定フレーム間隔より短かった場合は、上述のステップS403に戻って動作する。すなわち、出力フレーム制御部107Aは、出力フレーム間隔が設定フレーム間隔を超えるまで待機する。
【0075】
次に、出力フレーム制御部107は、現在の時間計測部108で計時している時間を、これから処理を行う映像フレームの取得時間(以下、「フレーム取得時間」とも呼ぶ)として取得し、その次の映像フレームの処理時まで保持しておく(S405)。フレーム取得時間は、その次の映像フレームの処理時の出力フレーム間隔の算出に適用される。
【0076】
次に、出力フレーム制御部107は、経過時間を出力フレーム決定部109へ通知する(S406)。
【0077】
フレームレート制御部10では、キャプチャデバイス2から入力される映像フレームのフレームレートが、設定フレームレートよりも遅い場合、データ取得部104がフレームバッファ103から映像フレームのデータを取得するタイミングで、フレームバッファ103に保存されている映像フレームが一つも無いという状況を避けるため、フレームバッファ103には少なくとも1フレーム分の映像が保存されている必要がある。そのため、出力フレーム決定部109は、フレームバッファ103で保持している映像フレームが無くならないように(フレームバッファ情報格納部106内のフレーム情報がなくならないように)、フレームバッファ情報格納部106の情報を更新する必要がある。
【0078】
次に、出力フレーム決定部109は、フレームバッファ情報格納部106を参照し、現在のフレームバッファ103に保持している映像フレームの数を把握し、把握した映像フレームの数に応じて、その後の動作を決定する(S407)。
【0079】
上述のステップS407で保持する映像フレームの数が1と判定された場合、出力フレーム決定部109は、後述するステップS409から動作する。また、上述のステップS407で保持する映像フレームの数が2と判定された場合、出力フレーム決定部109は、後述するステップS408から動作する。さらに、上述のステップS407で保持する映像フレームの数が3以上と判定された場合、出力フレーム決定部109は、後述するステップS410から動作する。
【0080】
上述のステップS407で、保持する映像フレームの数が2と判定された場合、出力フレーム決定部109は、フレームバッファ情報格納部106に保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報を、フレーバッファ情報部406から消去する(S408)。
【0081】
そして、上述のステップS407で保持する映像フレームの数が1と判定された場合、又は、上述のステップS408の処理の後、出力フレーム決定部109は、フレームバッファ情報格納部106に記録されている最もタイムスタンプの古い映像フレームのフレーム情報を取得し(S409)、後述するステップS420の処理に移行する。
【0082】
一方、上述のステップS407で、保持する映像フレームの数が3以上と判定された場合、出力フレーム決定部109は、フレームバッファ情報格納部106に保存しているフレーム情報のうち、最もタイムスタンプの古いものを、フレームバッファ情報格納部106から消去する(S410)。
【0083】
次に、出力フレーム決定部109は、フレームバッファ情報格納部106に保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報(フレーム保存情報及びタイムスタンプ)を取得する(S411)。
【0084】
次に、出力フレーム決定部109は、許容遅延量カウンタ110から、許容遅延カウンタ値を取得する(S412)。
【0085】
次に、出力フレーム決定部109は、遅延許容量カウンタ410から得た許容遅延カウンタ値(遅延許容量)と、設定レームレートから得られる設定フレーム間隔から、許容遅延時間(=許容遅延カウンタ値×設定フレームレート)を計算する(S413)。
【0086】
次に、出力フレーム決定部109は、フレームバッファ情報格納部106から取得したタイムスタンプの時間と時間計測部108の計時する時間とを比較して、現在の出力遅延時間(出力遅延量)を計算し、上述のステップS412で計算した許容遅延時間と比較する(S414)。ステップS414で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部109は、後述するステップS415から動作する。一方、ステップS414で、出力遅延時間が許容遅延時間を超えていない場合には、出力フレーム決定部109は、後述するステップS418から動作する。
【0087】
上述のステップS414で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部109は、フレームバッファ情報格納部106から取得したフレーム情報(上述のステップS411で取得したフレーム情報)を消去する(S415)。
【0088】
次に、出力フレーム決定部109は、出力フレーム決定部109は、フレームバッファ情報格納部106から、最もタイムスタンプが古い映像フレームのフレーム情報を取得する(S416)。
【0089】
次に、出力フレーム決定部109は、許容遅延量カウンタ110の遅延許容量カウンタ値をインクリメント(1加算)し(S417)、後述するステップS420の処理に移行する。
【0090】
一方、上述のステップS414で、出力遅延時間が許容遅延時間を超えていなかった場合には、出力フレーム決定部109は、遅延許容量カウンタ410から得た許容遅延カウンタ値(許容遅延量)が2以上であるかを確認する(S418)。
【0091】
ステップS418で、許容遅延カウンタ値が2以上だった場合には、出力フレーム決定部109は、許容遅延量カウンタ110の許容遅延カウンタ値をデクリメント(1減らす)処理を行い、後述するステップS420の処理に以降する。
【0092】
一方、上述のステップS418で、許容遅延カウンタ値が2以上でなかった場合(1だった場合)であった場合には、出力フレーム決定部109は、そのまま後述するステップS420の処理に移行する。
【0093】
そして、ステップS420では、出力フレーム決定部109は、出力する映像フレームのフレーム情報が得られたことになるので、出力する映像フレームのフレーム保存情報(保存場所)を出力フレーム制御部107へ通知する。
【0094】
次に、出力フレーム制御部107は、出力する映像フレームのフレーム保存情報(保存場所)を、データ取得部104へ通知する(S421)。
【0095】
次に、データ取得部104は、フレームバッファ103から、通知されたフレーム保存情報に対応する映像フレームのデータを取得(コピー)する(S422)。
【0096】
次に、データ取得部104は、取得した映像フレームのデータを、映像出力部111に供給する(S423)。
【0097】
次に、映像出力部111は、供給された映像フレームのデータを映像処理部103へ供給する(S424)。
【0098】
そして、フレームバッファ制御部102では、フレームレート制御部10への停止の指示があった場合には動作を終了し、停止の指示が無い場合には、上述のステップS401の処理から動作する。
【0099】
次に、上述のフローチャートの動作に従って、フレームレート制御部10が動作した場合の具体例について、図7図8を用いて説明する。
【0100】
図7図8では、14個の映像フレームF(Fa〜Fn)が、Fa、Fb、Fc、Fd、…、Fm、Fnという順序で、フレームレート制御部10に入力された場合の、フレームFa〜Fnが入力されるタイミングTIa〜TInと、映像フレームFa〜Fnが出力されるタイミングTOa〜TOnを示している。ただし、図7では、映像フレームFc、Fd、Ff、Fgについてはフレームレート制御部10内で廃棄され出力されないため、それらの映像フレームの出力タイミングについては図示されていない。また、図8では、映像フレームFc、Fe、Fh、Flについてはフレームレート制御部10内で廃棄され出力されないため、それらの映像フレームの出力タイミングについては図示されていない。
【0101】
なお、図7図8では、映像フレームFa〜Fnが、フレームレート制御部10に入力されるタイミングTIa〜TInのそれぞれの間隔は、設定フレームレートに基づく設定フレーム間隔と一致しているものとする。
【0102】
図8では、フレームバッファ制御部102が、上述の図3図6のフローチャートの通りに動作した場合の映像フレームの入出力について示している。
【0103】
一方、図7では、フレームレート制御部10が、映像処理部20で1つの映像フレームの処理が終了したタイミングにおいて、当該タイミングの直前にフレームレート制御部10に入力された映像フレームを、映像処理部20に入力した場合の例について示している。すなわち、図7では、フレームバッファ103に映像フレームを1つだけ格納する構成となっており、キャプチャデバイス2から映像フレームが入力されるごとに、フレームバッファ103に最新の映像フレームのデータが上書きされる場合の動作について示している。言い換えると、図7では、出力フレーム決定部109が、許容遅延量カウンタ110の許容遅延カウンタ値に応じた動作を行わない場合の動作について示している。
【0104】
まず、図7のタイミングチャートの詳細について説明する。
【0105】
図7では、まず、タイミングTIaで、映像フレームFaがフレームレート制御部10に入力されたものとする。そして、フレームレート制御部10は、映像フレームFaを、すぐに映像処理部20に入力する。そして、その後、フレームレート制御部10には、タイミングTIbの時点で映像フレームFbが入力されたものとする。そして、タイミングTIbとほぼ同じ時期のタイミングTOaまでに、映像処理部20による映像フレームFaの符号化処理が終了し、タイミングTOaの時点でフレームレート制御部10から映像処理部20に映像フレームFaが供給されたものとする。
【0106】
しかし、映像処理部20では、映像フレームFbについて処理時間が設定フレーム間隔よりも多くかかり、その間にフレームレート制御部10には、3つの映像フレームFc、Fd、Feが入力され、フレームバッファ103には映像フレームFeしか残っていない状態となったものとする。したがって、映像フレームFeがフレームレート制御部10に入力されるタイミングFIeよりも後の、タイミングTObで、映像処理部20による映像フレームFbの符号化処理が終了するが、フレームレート制御部10から映像処理部20に映像フレームFeが供給されることになる。すなわち、この場合、フレームレート制御部10では、映像フレームFc、Fdは連続して破棄されることになる。
【0107】
そして、図7に示すように、映像処理部20では、続く映像フレームFeについても、符号化処理が設定フレーム間隔よりも長くかかり、その間に3つの映像フレームFf、Fg、Fhがフレームレート制御部10に入力されている。その結果、フレームレート制御部10では、映像フレームFf、Fgは連続して破棄されることになる。
【0108】
したがって、図7に示すように、フレームバッファ103に映像フレームを1つだけ格納する場合には、フレームレート制御部10では、連続して映像フレームが破棄されることになる。
【0109】
次に、図8のタイミングチャートの詳細について説明する。
【0110】
なお、図8では、タイミングごとの許容遅延量カウンタ110の許容遅延カウンタ値の遷移についても図示している。許容遅延カウンタ値は、フレームレート制御部10で映像フレームを出力するごとに更新されるので、図8では、タイミングTOa、TOb、TOd、TOf、TOg、TOi、TOj、TOk、TOm、TOnのそれぞれのタイミングで更新される許容遅延カウンタ値の遷移を示している。例えば、許容遅延カウンタ値の初期値は1であるのでタイミングTOaまでは、許容遅延カウンタ値の値は1となっている。また、図8では、タイミングTObのタイミングで、許容遅延カウンタ値が2に変化している。さらに、図8では、タイミングTOdで、許容遅延カウンタ値が3に変化している。
【0111】
図8では、まず、タイミングTIaで、映像フレームFaがフレームレート制御部10に入力されたものとする。そして、フレームレート制御部10は、映像フレームFaを、すぐに映像処理部20に入力する。
【0112】
そして、その後、フレームレート制御部10には、タイミングTIbの時点で映像フレームFbが入力されたものとする。そして、タイミングTIbとほぼ同じタイミングTOaまでに、映像処理部20による映像フレームFaの符号化処理が終了し、タイミングTOaの時点でフレームレート制御部10から映像処理部20に映像フレームFaが供給されたものとする。なお、図8に示すようにタイミングTOaの後も、許容遅延カウンタ値は変化せず1のままである。
【0113】
そして、その後、映像処理部20では、映像フレームFbについて処理時間が設定フレーム間隔よりも多くかかり、その間にフレームレート制御部10には、3つの映像フレームFc、Fd、Feが入力されたものとする。そして、図8に示すように、映像フレームFeがフレームレート制御部10に入力されるタイミングFIeよりも後の、タイミングTObで、映像処理部20による映像フレームFbの符号化処理が終了する。タイミングTObの時点で、フレームバッファ103には4つの映像フレームFb、Fc、Fd、Feが保持されている状態となり、フレームレート制御部10では、次の映像フレームFcを取得しようとしても、許容遅延カウンタ値(1)に基づく許容遅延時間を超えた遅延が発生した状態となるため取得できない。したがって、タイミングTObの時点で、フレームバッファ103(フレームバッファ情報格納部106)から、映像フレームFcが消去(上述のステップS415の処理)され、フレームバッファ制御部102ではその次の映像フレームFdが取得され(上述のステップS416の処理)、さらに、許容遅延カウンタ値がインクリメント(上述のステップS417の処理)されて2に変化する。
【0114】
そして、図8に示すように、映像処理部20では、続く映像フレームFdについても、符号化処理が設定フレーム間隔よりも長くかかり、その間に3つの映像フレームFf、Fg、Fhがフレームレート制御部10に入力されている。そして、図8に示すように、映像フレームFhがフレームレート制御部10に入力されるタイミングFIhよりも後の、タイミングTOdで、映像処理部20による映像フレームFdの符号化処理が終了する。タイミングTOdの時点で、フレームバッファ103には5つの映像フレームFd、Fe、Ff、Fg、Fhが保持されている状態となり、フレームレート制御部10では、次の映像フレームFeを取得しようとしても、許容遅延カウンタ値(2)に基づく許容遅延時間を超えた遅延が発生した状態となるため取得できない。したがって、タイミングTOdの時点で、フレームバッファ103(フレームバッファ情報格納部106)から、映像フレームFeが消去(上述のステップS415の処理)され、フレームバッファ制御部102ではその次の映像フレームFfが取得され(上述のステップS416の処理)、さらに、許容遅延カウンタ値がインクリメント(上述のステップS417の処理)されて3に変化する。
【0115】
そして、図8に示すように、映像処理部20では、映像フレームFfについては、符号化処理が、概ね設定フレーム間隔で終了し、その間に1つの映像フレームFiだけがフレームレート制御部10に入力されている。そして、図8に示すように、映像フレームFiがフレームレート制御部10に入力されるタイミングFIiよりも後の、タイミングTOfで、映像処理部20による映像フレームFfの符号化処理が終了する。タイミングTOfの時点で、フレームバッファ103には4つの映像フレームFf、Fg、Fh、Fiが保持されている状態となり、フレームレート制御部10では、許容遅延カウンタ値(3)に基づく許容遅延時間を超えないため、次の映像フレームFgを取得することが可能となる(上述のステップS414の処理でNoの判定となる)。そして、フレームレート制御部10では、許容遅延カウンタ値がデクリメント(上述のステップS419の処理)されて2に変化する。
【0116】
以上のように、フレームレート制御部10で処理が行われた結果、フレームレート制御部10で破棄される映像フレームは、映像フレームFc、Fe、Fh、Flとなり、図7の例と比較すると、時系列的に連続する映像フレームが破棄されることはなくなることになる。
【0117】
(A−3)第1の実施形態の効果
第1の実施形態によれば、以下のような効果を奏することができる。
【0118】
フレームレート制御部10では、図8に示すように連続してフレームが破棄されることなく、現在の出力遅延量と許容遅延量(許容遅延カウンタ値に基づく遅延量)との比較結果に応じて、分散してフレームが破棄されるため、出力される映像フレームに基づく映像に不均等なコマ落ちが起こらず、主観的な品質が向上する。
【0119】
フレームレート制御部10では、現在の出力遅延量と許容遅延カウンタ値に基づく許容遅延量との比較結果に応じて、許容遅延カウンタ値を増減させている。具体的には、フレームレート制御部10では、現在の出力遅延量が許容遅延カウンタ値に基づく許容遅延量を超える場合に、許容遅延カウンタ値の値をインクリメントし、現在の出力遅延量が許容遅延カウンタ値に基づく許容遅延量を下回る場合(ただし、許容遅延カウンタ値が2以上の場合)に、許容遅延カウンタ値の値をデクリメントしている。これにより、フレームレート制御部10では、出力遅延量が急激に変動した場合(例えば、映像処理部20の動作が急に不安定になった場合等)でも、許容遅延カウンタ値に基づいて、徐々に出力遅延を回復させるので、出力フレームレートの急激な変動や設定フレームレートとの乖離を抑制しつつ、出力遅延を回復させることができる。
【0120】
(B)第2の実施形態
次に、本発明によるデータ制御装置及びプログラム、並びに、データ処理装置及びプログラムの第2の実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータ制御装置及びデータ処理装置は、フレームレート制御部及び映像符号化処理装置である。
【0121】
(B−1)第2の実施形態の構成
第2の実施形態の全体構成も、図2を用いて示すことができる。なお、図2において、括弧内の符号は、第2の実施形態でのみ用いられる符号である。
【0122】
そして、第2の実施形態の映像符号化処理装置1Aでは、フレームレート制御部10がフレームレート制御部10Aに置き換わっている点で、第1の実施形態と異なっている。以下では、第2の実施形態について第1の実施形態との差異を中心に説明する。
【0123】
図9は、第2の実施形態のフレームレート制御部10Aの機能的構成について示したブロック図である。
【0124】
第2の実施形態のフレームレート制御部10Aでは、フレームバッファ制御部102がフレームバッファ制御部102Aに置き換わっている点で、第1の実施形態と異なっている。そして、第2の実施形態のフレームバッファ制御部102Aでは、入力フレームレート更新部112が追加されている点で、第1の実施形態と異なっている。また、第2の実施形態のフレームバッファ制御部102Aでは、入力フレーム制御部105、フレームバッファ情報格納部106、出力フレーム制御部107、及び出力フレーム決定部109が、入力フレーム制御部105A、フレームバッファ情報格納部106A、出力フレーム制御部107A、及び出力フレーム決定部109Aに置き換わっている点で第1の実施形態と異なっている。
【0125】
入力フレームレート更新部112は、フレームレート制御部10Aの処理で利用する設定フレームレートを管理する機能を担っている。第1の実施形態のフレームレート制御部10では設定フレームレートは固定値であったが、第2の実施形態のフレームレート制御部10Aでは、適用する設定フレームレートが変動する。そのため、フレームレート制御部10Aでは、入力フレームレート更新部112により、動作を開始したときの初期の設定フレームレートの値(以下、「初期設定フレームレート」と呼ぶ)と、現在の設定フレームレートとを保持している。そして、フレームレート制御部10Aは、保持している設定フレームレートを、出力フレーム制御部107A及び出力フレーム決定部109Aの制御に従って、保持する設定フレームレートを更新する。そして、この実施形態では、入力フレームレート更新部112は、出力フレーム制御部107Aからの設定フレームレートの更新要求を受けると、保持する設定フレームレートを初期値(初期設定フレームレート)へ更新する。また、入力フレームレート更新部112は、出力フレーム決定部109Aからの設定フレームレート更新要求を受けると、保持する設定フレームレートの値を、現在よりも下げるように更新する。
【0126】
第1の実施形態の入力フレーム制御部105は、設定フレームレートに基づいたタイミングで、フレームバッファ103への映像フレームの受入れを行っているが、第2の実施形態の入力フレーム制御部105Aでは、現在の入力フレームレート更新部112で保持されている設定フレームレートに基づいたタイミング(間隔)で、フレームバッファ103への映像フレームの受入れを行う。また、入力フレーム制御部105Aは、入力された映像フレームのフレーム情報として、フレーム保存情報、タイムスタンプ、及び当該映像フレームの受入れ時にフレームレート更新部112から得られる設定フレームレートを、フレームバッファ情報格納部106Aへ記録する。
【0127】
出力フレーム制御部107Aは、上述の通り、入力フレームレート更新部112への制御を行う点で、第1の実施形態と異なっている。出力フレーム制御部107Aは、時間計測部108から得た経過時間と、内部に保持している直前フレーム取得時の経過時間と、出力フレーム決定部109Aの状態に基づいて、出力フレーム間隔を監視する。さらに、出力フレーム間隔を監視した結果、データ取得要求が待たされる状況が発生した場合は、入力フレームレート更新部112へ、設定フレームレートの更新要求を行う。
【0128】
第1の実施形態では、許容遅延量カウンタ110に設定する許容遅延量カウンタ110に上限を設けてはいないが、第2の実施形態の出力フレーム決定部109Aでは、許容遅延カウンタ値の上限値が設定されており、許容遅延カウンタ値が上限値に達した場合にはそれ以上加算(インクリメント)を行わない。そして、出力フレーム決定部109Aは、許容遅延カウンタ値が上限値に達した場合には、入力フレームレート更新部112へ、入力フレームレートの更新を要求する。
【0129】
(B−2)第2の実施形態の動作
次に、以上のような構成を有する第2の実施形態のフレームレート制御部10Aを構成するフレームレート制御部10Aの動作を説明する。
【0130】
フレームレート制御部10Aの、キャプチャデバイスからの映像入力時の動作を、図10を用いて説明する。
【0131】
まず、第1の実施形態と同様に、映像符号化処理装置1Aでは、符号化処理の動作を開始する前に、キャプチャデバイス2、フレームレート制御部10A、映像処理部103に対し各種設定が行われ、フレームレート制御部10Aにも反映されたものとする。また、フレームレート制御部10Aでは、時間計測部108の経過時間、入力フレーム制御部105A内部の直前フレームのタイムスタンプ、及び出力フレーム制御部107A内部に設定されている直前フレームの経過時間が0ヘリセット(初期化)され、許容遅延量カウンタの値も初期値として「1」がセットされたものとする。
【0132】
次に、フレームレート制御部10Aの、キャプチャデバイス2からの映像フレーム入力時の動作を、図10を用いて説明する。
【0133】
まず、フレームレート制御部10Aでは、動作開始の指示を受け、動作を開始したものとする。
【0134】
そして、映像入力部101は、キャプチャデバイス2からの入力(映像フレーム及びタイムスタンプ)があるまで待機する(S901)。
【0135】
次に、映像入力部101はキャプチャデバイスからの入力(映像フレーム及びタイムスタンプ)を受け、受け取ったタイムスタンプを入力フレーム制御部105Aへ入力する(S902)。
【0136】
次に、入力フレーム制御部105Aは、入力フレームレート更新部112から、設定フレームレートの最新の値を得る(S903)。
【0137】
次に、入力フレーム制御部105Aは、現フレームのタイムスタンプと、保持している直前フレームのタイムスタンプとを比較し、入力フレーム間隔を計算する、そして、入力フレーム制御部105Aは、設定フレームレートから、設定フレーム間隔を計算し、設定フレーム間隔と入力フレーム間隔とを比較する(S904)。
【0138】
そして、入力フレーム制御部105Aは、上述のステップS904の処理の結果、入力フレーム間隔が、設定フレーム間隔より短い場合は、フレームバッファ情報格納部106Aから、直前フレームの情報を消去する(S905)。
【0139】
次に、入力フレーム制御部105Aは、フレームバッファ情報格納部106Aを参照し、空き領域から、現フレームを保存する位置(フレーム保存情報)を決定する(S906)。
【0140】
次に、入力フレーム制御部105Aは、フレームバッファ情報格納部106Aへフレーム情報(入力フレームのフレーム保存情報、タイムスタンプ、及び設定フレームレートを含む)を記録する(S907)。
【0141】
次に、入力フレーム制御部105Aは、現フレームのタイムスタンプを取得し、次の入力フレームの処理まで保持しておく(S908)。
【0142】
次に、入力フレーム制御部105Aは、映像入力部101へ、最新に入力された映像フレームのフレーム保存情報を通知する(S909)。
【0143】
次に、映像入力部101は、入力フレーム制御部105Aから得た、フレームバッファ103内部のフレーム保存情報で示される領域に現フレームのデータ(映像フレームのデータ)を保存する(S910)。
【0144】
そして、映像入力部101は、フレームレート制御部10Aへの停止の指示があったか否かを判定し(S911)、停止の指示場合には動作を終了し、停止の指示が無い場合には、上述のステップS901の処理から動作する。
【0145】
次に、フレームレート制御部10Aから映像フレームのデータが出力される時の動作について、図11図14のフローチャートを用いて説明する。
【0146】
まず、フレームレート制御部10Aでは、動作開始の指示を受け、動作を開始したものとする。そして、フレームレート制御部10Aでは、動作開始にともなって時間計測部108による時間計測が開始されるものとする。
【0147】
そして、データ取得部104は、映像処理部103が動作可能かを確認し(S1001)、動作可能であれば、で出力フレーム制御部107Aへフレーム出力要求を行う(S1002)。
【0148】
次に、出力フレーム制御部107Aは、時間計測部108から動作開始からの経過時間を得る(S1003)。
【0149】
次に、出力フレーム制御部107Aは、動作開始からの経過時間と、内部に保持している直前フレームを取得した時の経過時間から、出力フレーム間隔を計算し、設定フレームレートから得られる設定フレーム間隔と比較する(S1004)。そして、出力フレーム制御部107Aは、設定フレーム間隔と出力フレーム間隔を比較した結果、出力フレーム間隔が設定フレーム間隔より短かった場合は、後述するステップS1005から動作し、出力フレーム間隔が設定フレーム間隔より長かった場合は、後述するステップS1008から動作する。
【0150】
上述のステップS1004で、出力フレーム間隔が設定フレーム間隔より短かった場合は、映像処理部103の処理が、設定フレームレートよりも早く符号化処理を完了しているということになるので、出力フレーム制御部107Aは、映像処理部103の処理が完了するまで、上述のステップS1003の処理に戻る処理により、待機状態を継続することになる。ただし、出力フレーム制御部107Aは、待機状態に入ったときにだけ、入力フレームレート更新部112へフレームレート更新要求を通知し、入力フレームレート更新部112は、内部に設定している設定フレームレートを初期値に更新する(S1005〜S1007)。なお、この場合、入力フレームレート更新部112は、必ずしも初期値へ更新する必要はなく、初期値を上限として、現在の設定値より高い値を、設定フレームレートとして設定するようにしてもよい。
【0151】
一方、上述のステップS1004で、出力フレーム間隔が設定フレーム間隔より長かった場合(設定フレーム間隔の時間を経過した場合)には、出力フレーム制御部107Aは、現在の時間計測部108で計時している時間を、フレーム取得時間として取得し、その次の映像フレーム処理時まで保持しておく(S1008)。
【0152】
次に、出力フレーム制御部107Aは、経過時間を出力フレーム決定部109Aへ通知する(S1009)。
【0153】
次に、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aを参照し、現在のフレームバッファ103に保持している映像フレームの数を把握し、把握した映像フレームの数に応じて、その後の動作を決定する(S1010)。
【0154】
上述のステップS1010で保持する映像フレームの数が1と判定された場合、出力フレーム決定部109Aは、後述するステップS1012から動作する。また、上述のステップS1010で保持する映像フレームの数が2と判定された場合、出力フレーム決定部109Aは、後述するステップS1011から動作する。さらに、上述のステップS1010で保持する映像フレームの数が3以上と判定された場合、出力フレーム決定部109Aは、後述するステップS1013から動作する。
【0155】
上述のステップS1010で、保持する映像フレームの数が2と判定された場合、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aに保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報を、フレーバッファ情報部406から消去する(S1011)。
【0156】
そして、上述のステップS1010で保持する映像フレームの数が1と判定された場合、又は、上述のステップS1011の処理の後、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aに記録されている最もタイムスタンプの古い映像フレームのフレーム情報を取得し(S1012)、後述するステップS1026の処理に移行する。
【0157】
一方、上述のステップS1010で、保持する映像フレームの数が3以上と判定された場合、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aに保存しているフレーム情報のうち、最もタイムスタンプの古いものを、フレームバッファ情報格納部106Aから消去する(S1013)。
【0158】
次に、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aに保存されているフレーム情報のうち、最もタイムスタンプの古い映像フレームの情報(フレーム保存情報及びタイムスタンプ)を取得する(S1014)。
【0159】
次に、出力フレーム決定部109Aは、許容遅延量カウンタ110から、許容遅延カウンタ値を取得する(S1015)。
【0160】
次に、出力フレーム決定部109Aは、許容遅延量カウンタ110から得た許容遅延カウンタ値(遅延許容量)と、設定レームレートから得られる設定フレーム間隔から、許容遅延時間を計算する(S1016)。
【0161】
次に、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aから取得したタイムスタンプの時間と時間計測部108の計時する時間とを比較して、現在の出力遅延時間(出力遅延量)を計算し、上述のステップS1016で計算した許容遅延時間と比較する(S1017)。ステップS1017で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部109Aは、後述するステップS1018から動作する。一方、ステップS1017で、出力遅延時間が許容遅延時間を超えていない場合には、出力フレーム決定部109Aは、後述するステップS1024から動作する。
【0162】
上述のステップS1017で、出力遅延時間が許容遅延時間を超えていた場合には、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aから取得したフレーム情報(上述のステップS1011で取得したフレーム情報)を消去する(S1018)。
【0163】
次に、出力フレーム決定部109Aは、出力フレーム決定部109Aは、フレームバッファ情報格納部106Aから、最もタイムスタンプが古い映像フレームのフレーム情報を取得する(S1019)。
【0164】
次に、出力フレーム決定部109Aは、許容遅延量カウンタ110の遅延許容量カウンタ値をインクリメント(1加算)する(S1020)。
【0165】
次に、出力フレーム決定部109Aは、現在の許容遅延カウンタ値(許容遅延量)と、許容遅延カウンタ値に対する上限の閾値とを比較する(S1021)。
【0166】
上述のステップS1021で、現在の許容遅延カウンタ値(許容遅延量)が許容遅延カウンタ値に対する上限の閾値に達した(等しくなった)と判定された場合には、出力フレーム決定部109Aは、入力フレームレート更新部112へ、設定フレームレートの更新要求を通知する(S1022)。
【0167】
そして、設定フレームレートの更新要求を受けると、入力フレームレート更新部112は、設定フレームレートの設定値を現在の値よりも低く設定する(S1023)。
【0168】
この場合、入力フレームレート更新部112は、例えば、初期値の半分のフレームレートとなるように、設定フレームレートを設定するようにしても良い。また、例えば、入力フレームレート更新部112は、一定時間内のフレームバッファ103内のデータ量の増加分から、符号化処理にかかる時間を推定し、再設定する設定フレームレートを決定するようにしてもよい。
【0169】
一方、上述のステップS1017で、出力遅延時間が許容遅延時間を超えていなかった場合には、出力フレーム決定部109Aは、許容遅延量カウンタ110から得た許容遅延カウンタ値(許容遅延量)が2以上であるかを確認する(S1024)。
【0170】
ステップS1024で、許容遅延カウンタ値が2以上だった場合には、出力フレーム決定部109Aは、許容遅延量カウンタ110の許容遅延カウンタ値をデクリメント(1減らす)処理を行い、後述するステップS1026の処理に移行する。
【0171】
一方、上述のステップS1024で、許容遅延カウンタ値が2以上でなかった場合(1であった場合)には、出力フレーム決定部109Aは、そのまま後述するステップS1026の処理に移行する。
【0172】
そして、ステップS1026では、出力フレーム決定部109Aは、出力する映像フレームのフレーム情報が得られたことになるので、出力する映像フレームのフレーム保存情報(保存場所)を出力フレーム制御部107Aへ通知する。
【0173】
次に、出力フレーム制御部107Aは、出力する映像フレームのフレーム保存情報(保存場所)を、データ取得部104へ通知する(S1027)。
【0174】
次に、データ取得部104は、フレームバッファ103から、通知されたフレーム保存情報に対応する映像フレームのデータを取得(コピー)する(S1028)。
【0175】
次に、データ取得部104は、取得した映像フレームのデータを、映像出力部111に供給する(S1029)。
【0176】
次に、映像出力部111は、供給された映像フレームのデータを映像処理部103へ供給する(S1030)。
【0177】
そして、フレームバッファ制御部102Aでは、フレームレート制御部10Aへの停止の指示があったか否かを確認し(S1031)、停止の指示があった場合には動作を終了し、停止の指示が無い場合には、上述のステップS1001の処理から動作する。
【0178】
(B−3)第2の実施形態の効果
第2の実施形態によれば、以下のような効果を奏することができる。
【0179】
第1の実施形態では、突発的に出力遅延量が大きくなった場合(映像処理部20の処理時間が長くなった場合)を想定した構成となっているが、継続して慢性的に出力遅延量が増えていく場合、フレームバッファ103の容量が足りなくなったり、映像処理部20が出力するデータの品質(例えば、リアルタイム性)が損なわれたりする場合がある。そのため、第2の実施形態のフレームレート制御部10Aでは、許容遅延量(許容遅延カウンタ値に基づく遅延量)の上限値を設け、許容遅延量の上限に達した場合、フレームバッファ103へ入力する映像フレームのフレームレートを下げることで、実質的な出力フレームレートの変更を行っている。
【0180】
(C)他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【0181】
(C−1)上記の各実施形態では、フレームレート制御部(データ制御装置)のフレームデータの出力先は、映像処理部(映像フレームデータの符号化を行う装置)であるが、フレームレート制御部(データ制御装置)の出力先は、リアルタイムなデータ処理を行うもの(例えば、暗号化処理等)であれば限定されないものである。
【0182】
また、上記の各実子形態では、フレームレート制御部(データ制御装置)が扱うフレームデータは映像(動画像)を構成する映像フレームデータであるが、その他のリアルタイムデータ(例えば、音声データ等のストリームデータ)の一部を構成するフレームデータとしてもよい。
【0183】
(C−2)上記の各実施形態のフレームレート制御部では、キャプチャデバイスから映像フレームデータごとのタイムスタンプの供給を受けているが、タイムスタンプの供給を受けないようにしてもよい。例えば、フレームレート制御部で、内部のタイマ(例えば、時間計測部の経過時間)に応じたタイムスタンプを付与(映像フレームデータを供給された時の時間をタイムスタンプとして付与)するようにしてもよい。これは、キャプチャデバイス(または、デバイスドライバ)によっては、正しいタイムスタンプを出力しないものもあるため、このようなデバイスがフレームレート制御部に接続された場合でも、内部でタイムスタンプを生成することができれば正常に動作が可能となる。
【0184】
(C−3)第2の実施形態において、入力フレームレート更新部の動作のうち、フレームレートを低く設定する動作(ステップS1022の処理)の例として、フレームレートを半分としているが、現在の設定値より低くなるような設定であれば、具体的な計算方式は限定されないものである。
【符号の説明】
【0185】
1…映像符号化処理装置、10…フレームレート制御部、20…映像処理部、21…映像符号化部、22…送信部、2…キャプチャデバイス、10…フレームレート制御部、101…映像入力部、102…フレームバッファ制御部、103…フレームバッファ、104…データ取得部、105…入力フレーム制御部、106…フレームバッファ情報格納部、107…出力フレーム制御部、108…時間計測部、109…出力フレーム決定部、110…許容遅延量カウンタ、111…映像出力部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14