まず、本実施例のデータ配信装置およびデータ配信方法を詳述する前に、図1〜図5を参照して、関連技術としてのデータ配信装置およびデータ配信方法、並びに、その問題点を、監視カメラシステムを例として説明する。
図1は、監視カメラシステムの一例を説明するための図である。図1に示されるように、監視カメラシステムは、例えば、ユーザ400が制御端末300を操作することで、ネットワーク200を介して、監視カメラ100からのデータ配信を受け取る。
ここで、監視カメラ100からのデータとしては、例えば、高画質の動画(Video High),低画質の動画(Video Low),音声(Audio),高画質の静止画(JPEG High),低画質の静止画(JPEG Low)および制御情報(メタデータ)等が含まれる。なお、監視カメラシステムでは、例えば、複数の監視カメラ100からのデータを、それぞれネットワーク200を経由して制御端末300に集約し、それをユーザ400が利用する。
監視カメラ100は、例えば、カメラモジュール110,エンコーダ120,プロセッサ130,メモリ140およびネットワークインタフェース150を含む。カメラモジュール110は、監視カメラ100が設置された周囲(例えば、360°の全周囲)を撮影(さらに、音声を収集)し、エンコーダ120は、カメラモジュール110からの映像(音声)データを符号化する。
メモリ140は、エンコーダ120により符号化されたデータおよび制御情報を格納し、ネットワークインタフェース150は、メモリ140からデータおよび制御情報を読み出し、ネットワーク200を介して、制御端末300に送信(配信)する。ここで、エンコーダ120,メモリ140およびネットワークインタフェース150は、プロセッサ130により制御される。
ネットワークインタフェース150は、DMA(Direct Memory Access)部1,パケット処理部2およびPHY(PHYsical layer)部3を含む。DMA部1は、例えば、エンコーダ120が符号化して格納した画像データや制御情報(メタデータ)等のデータをメモリ140から読み出して、パケット処理部2に転送する。
パケット処理部2は、DMA部1から転送されたデータを受け取り、例えば、イーサネット(登録商標)等のネットワーク規格に従ったフレーム(パケット)を生成して、PHY部3に出力する。PHY部3は、パケット処理部2からのパケットを、実際に送出する信号形式に変換して、ネットワーク200に出力する。
ところで、例えば、ネットワークインタフェース150において、DMA部1,パケット処理部2およびPHY部3は、いずれも送信優先度の判定や送信タイミングの制御を行う機能は有していない。
そのため、監視カメラ100からネットワーク200を介して制御端末300に送られるビデオ,オーディオおよび制御情報等の転送データが、例えば、受信側の制御端末300の処理能力を上回ると、制御端末300でデータの欠落(例えば、図1中のデータDa0)が発生する。
そこで、例えば、送信要求を受けたデータ種別の優先度を判定し、生成したパケットのデータサイズと設定された送信負荷から、同じデータ種別の次パケットの送信時間を算出するディスクリプタ型ネットワークインタフェースが研究/開発されている。
図2は、図1に示す監視カメラシステムにおける、関連技術のディスクリプタ型ネットワークインタフェースの一例を示すブロック図である。
図2に示されるように、ネットワークインタフェース(データ配信装置)150は、DMA部1,パケット処理部2,PHY部3,送信時間管理部41,現在時間検出部42,送信時間比較部43,優先度判定部44および送信タイミング算出部45を含む。ここで、DMA部1は、ディスクリプタ型DMAとして形成される。
上述したように、DMA部1は、例えば、メモリ(データ格納部)140から画像データや制御情報等のデータを読み出してパケット処理部2に転送するもので、送信データバッファ(#0〜#n)11および送信データ情報格納部(#0〜#n)12を含む。
ここで、送信データバッファ11および送信データ情報格納部12は、それぞれのデータ種別毎(例えば、動画データ,音声データ,静止画データ等)に設けられている。
パケット処理部2は、DMA部1から転送されたデータを受け取り、ネットワークの規格に従ったパケットを生成してPHY部3に出力するもので、送信要求検出部21およびパケット生成部22を含む。
図3は、図2に示すネットワークインタフェースの動作の一例を説明するためのフローチャートであり、図2および図3を参照して、関連技術のネットワークインタフェース150を説明する。なお、図1および図2において、各処理(ステップST10〜ST19)は、それぞれ対応するものを示している。
図2および図3に示されるように、データ格納部(メモリ)140が送信データ情報を設定して送信要求を行うと、DMA部1は、データ格納部140から送信要求のあったデータ種別のデータを内部に搭載されているデータ種別毎の送信データバッファ11に転送する。
すなわち、データ格納部140から読み出した送信データを、内部バッファ(送信データバッファ11および送信データ情報格納部12)に格納する(ST1)。そして、送信データバッファ11(内部バッファ)へのデータ格納が完了すると、パケット処理部2に対して送信要求を実施する。
まず、DMA部1は、送信(格納)データサイズ,データ種別およびその他制御情報等の送信データ情報をパケット処理部2に通知し(ST10)、パケット処理部2は、DMA部1から通知された送信要求があるデータ種別を優先度判定部44に通知する(ST11)。
優先度判定部44は、パケット処理部2から通知されたデータ種別の優先度を判定し(ST2)、最も優先度の高い最優先データ種別を、送信時間管理部41およびパケット処理部2に通知する(ST12)。
送信時間管理部41は、通知された最優先データ種別の現パケット送信時間を送信時間比較部43に通知し(ST13)、また、現在時間検出部42は、現在時間を送信時間比較部43および送信タイミング算出部45に出力する(ST13)。
送信時間比較部43は、現パケット送信時間と現在時間を比較し、送信時間に到達しているかどうかを判定し(ST3)、比較結果を優先度判定部44およびパケット処理部2に通知する(ST14)。ここで、送信時間が未達であった場合(ST3:未達)、優先度判定部44に対して優先度判定処理要求を通知し、優先度判定部44は、次の優先度判定処理を実施する。
一方、送信時間に到達していた場合(ST3:到達)、パケット処理部2は、ST12で通知されたデータ種別のパケット生成処理を開始する。パケット処理部2は、ST10で通知された送信データ情報から、送信負荷情報を送信タイミング算出部45に通知する(ST15)。
DMA部1は、通知されたデータ種別に該当する送信データバッファ11から送信データをパケット処理部2に出力する(ST16)。パケット処理部2は、パケット生成処理を行い(ST4)、パケット生成処理中に次パケットの送信タイミングを算出するために、生成パケットデータサイズを送信タイミング算出部45に通知する(ST17)。
送信タイミング算出部45は、ST13で通知された現在時間,ST15で通知された送信負荷およびST17で通知された生成パケットデータサイズから次パケット送信時間を算出し(ST5)、送信時間管理部41に通知する(ST18)。パケット処理部2は、パケット生成処理を終了した後、PHY部3に対して送信データを出力する(ST19)。
図4は、図2に示すネットワークインタフェースにおけるDMA部を説明するための図である。図4に示されるように、DMA部1は、送信データバッファ11(Video用バッファ,Audio用バッファおよびJPEG用バッファ)、並びに、送信データ情報格納部12(制御情報用バッファ)を含む。
メモリ(データ格納部)140には、エンコーダ120により符号化されたデータ(Vide(高画質),Vide(低画質),Audio,JPEG(高画質)およびJPEG(低画質))並びに制御情報(メタデータ)が格納されている。
そして、メモリ140に格納されたデータおよび制御情報が読み出されて、ネットワークインタフェース150におけるDMA部1の送信データバッファ11および送信データ情報格納部12に格納される。
ここで、例えば、参照符号PP1で示されるように、Vide(高画質:高画質の動画データ)とVide(低画質:低画質の動画データ)の同一データ種別でありながら異なる設定のデータ(異なるチャネルのデータ)は、同じ送信データバッファ(11)を共用している。
また、参照符号PP2で示されるように、JPEG(高画質:高画質の静止画データ)とVide(低画質:低画質の静止画データ)の異なるチャネルのデータも、同じ送信データバッファ(11)を共用している。なお、チャネルとは、同一データ種別(例えば、動画データや静止画データ)における異なる設定(例えば、異なる解像度)のデータを示す。
図5は、図2に示すネットワークインタフェースによるデータ送信の様子を模式的に示す図である。図5において、参照符号aは、過去の(前回送信した)低画質の動画(映像:Video)データを示し、bは、前回送信した高画質Videoデータを示す。
また、参照符号c,e,f,hは、これから送信する低画質Videoデータを示し、d,g,i,jは、これから送信する高画質Videoデータを示す。さらに、参照符号I11は、aのデータサイズから算出した送信間隔、I12は、bのデータサイズから算出した送信間隔、そして、I13は、fのデータサイズから算出した送信間隔を示す。ここで、例えば、低画質Videoデータfのサイズが低画質Videoデータaのサイズより大きいと、I13は、I11よりも長くなる。
図5に示されるように、メモリ140には、例えば、エンコーダ120の処理が終わった順番にデータが格納され、すなわち、データは、c,d,e,f,g,h,iの順に格納される。また、DMA部1の内部バッファ(送信データバッファ11)には、例えば、プロセッサから通知される送信要求の順番に従って、メモリ140からデータを読み出して格納される。
すなわち、DMA部1における送信データバッファ11には、メモリ140に格納されたのと同じc,d,e,f,g,h,iの順に格納される。ここで。例えば、参照符号Xgで示されるように、例えば、高画質Videoデータgが低画質Videoデータeと重なり合うと、高画質Videoデータの本来の送信間隔を守ることが困難になる。また、高画質Videoデータの間に低画質Videoデータが大量に格納されていると、高画質Videoデータの送信間隔がフレーム間隔よりも長くなって、再生が停止する虞がある。
すなわち、一般的に、低画質Videoデータの送信ビットレートは、低い値が設定され、逆に、高画質Videoデータの送信ビットレートは、高い値が設定される。そのため、同じデータサイズの場合、低画質Videoデータであれば、送信間隔は長くなり、高画質Videoデータであれば、送信間隔は短くなる。
図2および図3を参照して説明した関連技術のネットワークインタフェースでは、同一のデータ種別で異なるチャネルのデータを送信する場合、データ格納部(メモリ)140やDMA部1では、チャネル毎の優先順位や送信タイミングを認識するのが困難である。
メモリ140では、エンコード処理が終了したデータから、DMA部1に対して送信要求を実施し、DMA部1は、メモリ140に格納された順番でデータを内部の送信データバッファ11に格納する。
図4を参照して説明したように、DMA部1では、データ種別毎のバッファとなっているため、データ種別毎(例えば、動画,音声,静止画等)の送信順は制御可能であるが、バッファを共用しているチャネル間の送信順を制御するのは困難である。
すなわち、図5に示されるような、同じ動画(Video)のデータ種別における高画質Videoと低画質Videoといったチャネル間の送信順を制御するデータのソーティングを行うのは困難となっている。
また、パケット処理部2は、DMA1部における送信データバッファ11に格納された順番にデータを送信するだけであり、送信データバッファ11を共用した場合は、異なるチャネル毎に送信タイミングを制御することは困難である。
そのため、例えば、高画質Videoデータが想定している送信間隔よりも送信間隔が広がって、映像のフレーム間隔よりも広くなると、次のフレームデータが受信されるまで再生画面が停止することになる。
また、例えば、低画質Videoデータは、想定している送信間隔よりも短い間隔で送信されてくるため、受信側(制御端末300)の処理能力を上回るデータ量をバースト的に送信すると、制御端末300でデータの欠落が発生することになる。
以下、データ配信装置およびデータ配信方法の実施例を、添付図面を参照して詳述する。図6は、ネットワークインタフェースの第1実施例を示すブロック図である。
図6に示されるように、第1実施例のネットワークインタフェース(データ配信装置)250は、DMA部1,パケット処理部2,PHY部3,現在時間検出部42,送信時間比較部43,優先度判定部44および送信タイミング算出部45を含む。
さらに、ネットワークインタフェース250は、チャネルIDフィールドを追加した送信時間管理部46,パケットデータサイズ算出部47および処理開始判定部48を含む。ここで、DMA部1は、ディスクリプタ型DMAとして形成される。
前述したように、DMA部1は、例えば、メモリ(データ格納部)140から画像データや制御情報等のデータを読み出してパケット処理部2に転送するもので、送信データバッファ13および送信データ情報格納部14を含む。
ここで、本第1実施例における送信データバッファ13および送信データ情報格納部14は、図2を参照して説明した関連技術における送信データバッファ11および送信データ情報格納部12のように、それぞれのデータ種別に対応する#0〜#nを設けなくてもよい。
パケット処理部2は、DMA部1から転送されたデータを受け取り、ネットワークの規格に従ったパケットを生成してPHY部3に出力するもので、送信要求検出部21およびパケット生成部22を含む。
なお、図6と、前述した図2の比較から明らかなように、パケット生成部22には、パケットデータサイズ算出部47から、1パケットを生成するためのデータサイズが入力される。
すなわち、本第1実施例のネットワークインタフェース250において、送信時間管理部46は、優先度判定部44から通知される最優先データ種別からチャネルIDを選択する機能が追加されている。
また、処理開始判定部48は、送信時間管理部46から通知されるチャネルIDと送信時間比較部43から通知される比較結果に基づいて、通知されたチャネルIDの送信処理を開始するかどうかの判定を行う機能を有する。さらに、処理開始判定部48は、その判定結果とチャネルIDをパケット処理部2に通知し、チャネルIDをパケットデータサイズ算出部47に通知する機能を有する。
パケットデータサイズ算出部47は、処理開始判定部48からのチャネルIDにより1パケットを生成するためのデータサイズを算出する機能を有し、算出した1パケット生成するためのデータサイズとチャネルIDをパケット処理部2に通知する。なお、DMA部1に搭載されるデータ種別毎の送信データバッファ13および送信データ情報格納部14は、1つずつ設けられている。
図7は、図6に示すネットワークインタフェースの動作の一例を説明するためのフローチャートであり、図6および図7を参照して、第1実施例のネットワークインタフェース250を説明する。なお、図6および図7において、各処理(ステップST20〜ST31)は、それぞれ対応するものを示している。
図6および図7に示されるように、データ格納部(メモリ)140が送信データ情報を設定して送信要求を行う。図2および図3を参照して説明した関連技術のネットワークインタフェース150は、DMA部1が送信要求を受けると、データ格納部140から送信要求のあったデータ種別のデータをDMA内1に搭載されたデータ種別毎の送信データバッファ11に転送する。
これに対して、第1実施例のネットワークインタフェース250において、DMA部1は、どのデータ種別の送信要求があったかだけをパケット処理部2に通知する。すなわち、まず、パケット処理部2は、DMA部1から通知された送信要求があるデータ種別を優先度判定部44に通知する(ST20)。
優先度判定部44は、パケット処理部2から通知されたデータ種別の優先度を判定(ST2)し、送信時間管理部46に最優先データ種別を通知する(ST21)。送信時間管理部46は、優先度判定部44から通知された最優先データ種別から、最優先チャネルIDを判定し、処理開始判定部48にチャネルIDを通知し(ST22)、送信時間比較部43に該当チャネルの現パケット送信時間を通知する(ST22)。また、現在時間検出部42は、現在時間を送信時間比較部43と送信タイミング算出部45に通知する(ST22)。
送信時間比較部43は、送信時間管理部46から通知された現パケット送信時間と、現在時間検出部42から通知された現在時間を比較し、送信時間に到達しているかどうかを判定する(ST3)。
そして、送信時間比較部43は、その比較結果を処理開始判定部48と優先度判定部44に通知する(ST23)。送信時間が未達であった場合(ST3:未達)、優先度判定処理(ST2)に戻り、次の最優先データ種別を判定する。
一方、送信時間に到達していた、若しくは、超過していた場合(ST3:到達)、処理開始判定部48は、送信時間管理部46から通知されたチャネルID(ST22)をパケットデータサイズ算出部47とパケット処理部2に通知する(ST24)。さらに、処理開始判定部48は、パケット処理部2に処理開始の判定結果を通知し(ST24)、パケット生成処理開始を要求する。
パケットデータサイズ算出部47は、処理開始判定部48から通知されたチャネルIDから、そのチャネルのデータ種別で1パケット生成するためのデータサイズを算出し(ST6)、DMA部とパケット処理部に通知する(ST25)。さらに、処理開始判定部48から通知されたチャネルIDを、DMA部1に通知する(ST25)。
DMA部1は、パケットデータサイズ算出部47から通知されたデータサイズ分だけをデータ格納部140からDMA部1の内部バッファに格納(送信データバッファ13)に格納する(ST7)。そして、格納したデータサイズとその他の制御情報(送信データ情報格納部14の情報)をパケット処理部2に通知する(ST26)。
パケット処理部2は、送信負荷を送信タイミング算出部45に通知し(ST27)、DMA部1は、送信データをパケット処理部に転送する(ST28)。パケット処理部2は、パケット生成処理を開始し(ST4)、その際、算出した生成パケットデータサイズを送信タイミング算出部45に通知する(ST29)。
送信タイミング算出部45は、現在時間検出部42から通知された現在時間ST23)と、パケット処理部2から通知された送信負荷(ST27)と、パケット処理部2から通知された生成パケットデータサイズ(ST29)から次パケットの送信時間を算出する(ST5)。
さらに、送信タイミング算出部45は、次パケットの送信時間を送信時間管理部46に通知する(ST30)。送信時間管理部46は、送信するチャネルIDの送信時間を送信タイミング算出部45から通知された次パケット送信時間に更新する。そして、パケット処理部2は、生成したパケットの送信データをPHY部3に出力する。
このように、第1実施例のネットワークインタフェースによれば、パケットデータサイズ算出部47は、送信するチャネルIDと1パケットを生成するのためのデータサイズをDMA部1に通知する。
DMA部1は、指定されたチャネルIDのデータを通知されたデータサイズ分だけメモリ(データ格納部)140から取得することにより、DMA部1の内部に設ける送信データバッファ13の数(容量)を増加させることなく、チャネル毎に送信タイミング制御をすることができるようになる。
図8は、図6に示すネットワークインタフェースによるデータ送信の様子を模式的に示す図であり、前述した図5に相当する図である。図8において、参照符号aは、過去の(前回送信した)低画質の動画(映像:Video)データを示し、bは、前回送信した高画質Videoデータを示す。
また、参照符号c,e,f,hは、これから送信する低画質Videoデータを示し、d,g,i,jは、これから送信する高画質Videoデータを示す。さらに、参照符号I21は、aのデータサイズから算出した低画質Videoの送信間隔、I22は、高画質Videoのbのデータサイズから算出した送信間隔、そして、I23は、gのデータサイズから算出した高画質Videoの送信間隔を示す。ここで、I23は、gのデータサイズが大きいので、I22よりも長くなる。
そして、参照符号I24は、eのデータサイズから算出した低画質Videoの送信間隔、I25は、fのデータサイズから算出した低画質Videoの送信間隔を示す。ここで、I24は、eのずらした時間を考慮すると、I24が小さくなってしまい、受信側(制御端末300)の負荷が一時的に大きくなるので、eを送信した時間を新基準時間とし、fの送信時間を定める。また、I25は、fのデータサイズが大きいので、I24よりも長くなる。
図8に示されるように、メモリ140には、例えば、エンコーダ120の処理が終わった順番にデータが格納され、すなわち、データは、c,d,e,f,g,h,iの順に格納される。
しかしながら、本実施例において、DMA部1の内部バッファ(送信データバッファ13)には、例えば、プロセッサから通知される送信要求の順番ではなく、パケット処理部2から通知される順番に従って、メモリ140からデータを読み出して格納される。
すなわち、DMA部1における送信データバッファ13には、メモリ140に格納されたのとは異なり、d,c,g,i,e,j,f,hの順に格納される。ここで。例えば、参照符号Xeで示されるように、例えば、低画質Videoデータeが高画質Videoデータiと送信時間が衝突した場合は、例えば、新た締め定められた優先度に従って処理の順番を決定する。
すなわち、低画質Videoデータeの処理を、高画質Videoデータiの処理を待って行う。これにより、DMA部1の内部に設ける送信データバッファ13の数を増加させることなく、チャネル毎に送信タイミング制御をすることが可能になる。
図9は、関連技術および第1実施例のネットワークインタフェースにおける送信時間管理テーブルを比較して説明するための図である。
ここで、図9(a)は、前述した図2に示す関連技術のネットワークインタフェース150における送信時間管理部41の送信時間管理テーブル(送信時間管理部41)を示す。また、図9(b)は、前述した図6に示す第1実施例のネットワークインタフェース250における送信時間管理テーブル(チャネルIDフィールドを追加した送信時間管理部46)を示す。
図9(a)に示されるように、関連技術の送信時間管理テーブルには、データ種別(Video,Audio,JPEG,制御,…)と、それに対応した次パケット送信時間(Tvideo,Taudio,Tjpeg,Tctrl,…)が格納されるのみである。換言すると、関連技術の送信時間管理テーブルでは、DMA部1の中間バッファ毎(送信データバッファ11のデータ種別毎)に送信時間を管理するだけである。
すなわち、関連技術のネットワークインタフェース150では、優先度判定部44(或いは、テーブルアドレス生成部)から最優先データ種別情報を取得し、該当するデータ種別の次パケット送信時間を送信時間比較部43に出力する。さらに、送信するパケットを生成した後、該当するデータ種別の次パケット送信時間を、送信タイミング算出部45から取得した次パケット送信時間に更新する。
これに対して、図9(b)に示されるように、第1実施例の送信時間管理テーブル(第1送信時間管理テーブル46)には、チャネルIDフィールドが追加されている。ここで、チャネルIDは、例えば、同じデータ種別であっても同じ値が使用されることはない。なお、図9(b)は、単なる例であり、チャネルID毎に送信時間が管理されていれば、様々な変形および変更が可能なのはいうまでもない。
すなわち、本第1実施例のネットワークインタフェース250において、送信時間管理テーブルには、データ種別と、チャネルID(0,1,2,…)と、チャネルIDに対応した次パケット送信時間(Tvideo_0,Tvideo_1,Tvideo_2,…)が格納されている。
そして、本第1実施例のネットワークインタフェース250では、優先度判定部44(或いは、テーブルアドレス生成部)から最優先データ種別情報を取得し、該当するデータ種別に属するチャネルIDの中から最も高いチャネルIDの次パケット送信時間を選択する。さらに、優先度判定部44は、最も高いチャネルIDの次パケット送信時間を送信時間比較部43に出力し、チャネルIDを処理開始判定部48に出力する。
さらに、送信するパケットを生成した後、該当するチャネルIDの次パケット送信時間を、送信タイミング算出部45から取得した次パケット送信時間に更新する。なお、チェナルIDの個数、或いは、どのチャネルIDがどのデータ種別に属するかは、例えば、システムで予め決められている。また、チャネルID間の優先度に関しては、システムにより予め決定することもできるが、同一優先度としてもよい。
図10は、図6に示すネットワークインタフェースにおける処理開始判定部の動作を説明するための図である。図10に示されるように、処理開始判定部48は、送信時間管理テーブル(チャネルIDフィールドを追加した送信時間管理部46)からチャネルIDを取得する。
さらに、処理開始判定部48は、送信時間比較部43から送信時間と現在時間の比較結果(送信時間比較結果)を受け取る。ここで、送信時間比較結果が、現在時間≧次パケット送信時間が成立する場合は、パケット処理部2に対して、チャネルIDと共に、パケット処理開始の判定結果を通知する。
一方、送信時間比較結果が、現在時間<次パケット送信時間が成立する場合は、未だ送信時間に達していないため、送信時間比較部43が優先度判定部44に対して、次の優先度判定を実施する比較結果を通知する。なお、現在時間と次パケット送信時間の比較は、例えば、カウンタを使用し、カウンタ値を比較することにより行うことができる。
図11は、パケットフォーマットの一例を説明するための図であり、一般的なパケットフォーマットの一例を示すものである。図11に示されるように、1つのパケットPFは、例えば、PF1〜PF4を含む。
ここで、PF1は、データ種別に関係なくほぼ固定サイズの部分であり、PF2は、データ種別により大きさが変化する部分である。PF1は、例えば、イーサネット(登録商標)におけるIP(Internet Protocol),TCP(Transmission Control Protocol)/UDP(User Data Protocol)ヘッダおよびRTP(Real-time Transport Protocol)ヘッダを含む。また、PF2は、例えば、データ種別ごとの特殊ヘッダである。
さらに、PF3は、ペイロード(Payload)を示し、例えば、パケットの総サイズのうち、宛先アドレスや発信元アドレスなどの管理情報(ヘッダ情報)を除いたデータのことである。なお、CRC(Cyclic Redundancy Check)は、データ種別に関係なく固定長であり、例えば、データ転送などに伴う誤り検出に使用される。
このように、パケットフォーマットには、データ種別によらず一定サイズのヘッダと、データ種別により異なるサイズのヘッダが存在する。また、1パケットのデータサイズの上限は、システムにより決定されているため、ペイロード部分(PF3)の大きさは、データ種別により変化するのが分かる。
図12は、データ格納部とDMA部の送信データバッファの動作を、関連技術と第1実施例との差異を示しつつ説明するための図である。ところで、例えば、図2を参照して説明した関連技術のように、パケットデータサイズ算出部47が設けられていないと、DMA部1は、データ格納部140から通知されたデータサイズ分だけ、送信データバッファ11(13)にデータを格納する。
そして、送信データサイズ≦ペイロードサイズのとき、データ格納部140に格納されているデータを全て送信してもパケットデータサイズ上限を超えないので、DMA部1の送信データバッファ11(13)に残留データはない。
しかしながら、送信データサイズ>ペイロードサイズのとき、データ格納部140に格納されているデータを全て送信する前にパケットデータサイズ上限に達するため、DMA部1の送信データバッファ11(13)にデータが残留してしまう。
すなわち、DMA部1の送信データバッファ11(13)が空にならないと、次のチャネルのデータを転送することができず、送信タイミングを制御していることから、次の送信時間にならないと、送信データバッファ11(13)から送信データを取得することが困難になる。
このように、データサイズがそのチャネルが属するデータ種別のペイロードデータサイズよりも大きいと、パケット処理部が1パケットを生成する際、DMA部の送信データバッファにデータが残留している状態でパケットデータサイズの上限値に達してしまう。
このように、DMA部1の送信データバッファ11(13)にデータが残留している状態では、データ格納部140に格納されている他のチャネルの送信データを処理することが困難になる。結果として、DMA部1の送信データバッファ11(13)に格納されている残留データが処理され、DMA部1の送信データバッファ11(13)が空になるまでは、完全に送信が止まってしまう。
そして、例えば、この完全に送信が止まってしまう時間が動画の1フレーム時間よりも長い場合、受信側では次のフレームのデータが受信されないことになるので、動画の再生が止まってしまうことになる。すなわち、受信側(制御端末300)においては、期待したタイミングデータが到達しないため、例えば、動画の再生が停止するといった問題が発生することになる。
これに対して、図6を参照して説明したように、本第1実施例のネットワークインタフェース250には、パケットデータサイズ算出部47が設けられている。そして、ペイロードPF3の大きさは、例えば、チャネルIDからデータ種別を判定し、パケットデータサイズ算出部47により算出されるようになっている。
すなわち、本第1実施例において、パケットデータサイズ算出部47は、処理開始判定部48から通知されたチャネルIDによりデータ種別を判定し、1パケットを生成するデータサイズの上限値を算出する。
換言すると、パケットデータサイズ算出部47は、図11におけるペイロードPF3の部分のデータサイズを算出し、その算出結果を、パケット処理部2およびDMA部1に通知する。
このように、本第1実施例によれば、パケットデータサイズ算出部47では、パケット処理部2が1パケットを処理した後に、DMA部1の送信データバッファ13に残留送信データが残らないように制御する。
すなわち、パケットデータサイズ算出部47は、通知されたチャネルIDから1パケットを生成するためのデータサイズを算出し、DMA部1とパケット処理部2に通知する。
これによりDMA部1は、1パケットを生成するためのデータサイズ分だけをDMA部1の送信データバッファ13にデータを格納することができ、1パケット生成後にDMA部1の送信データバッファ13に送信データが残留しないようにすることができる。
ところで、上述した第1実施例では、パケットデータサイズ算出部47がDMA部1に送信すべきチャネルIDを通知するが、例えば、処理の関係でそのチャネルIDの送信データが存在しない場合が考えられる。
その場合、DMA部1は、通知されたチャネルIDの送信データがデータ格納部140に格納されるまで待つことになり、通知されたチャネルIDの送信データがデータ格納部140に格納されるまで送信が止まる虞がある。なお、送信が止まることによる影響は、前述した通りである。
図13は、ネットワークインタフェースの第2実施例を示すブロック図であり、通知されたチャネルIDの送信データがデータ格納部140に格納されるまで送信が止まるのを防止するようにしたものである。
図13と、前述した図6の比較から明らかなように、本第2実施例のネットワークインタフェース350では、DMA部1にチャネルID走査部(第1チャネルID走査部)15が設けられている。チャネルID走査部15は、パケットデータサイズ算出部47から通知されたチャネルIDの送信データが、送信データ情報格納部14に格納された送信データ情報により送信要求されているかどうかを走査(調査)する。
すなわち、チャネルID走査部15は、パケットデータサイズ算出部47からのチャネルIDの通知を受け取り(ST25)、該当チャネルIDが存在するかどうかをDMA部1の送信データ情報格納部14の情報を走査(スキャン)する。さらに、チャネルID走査部15は、走査結果を処理開始判定部48に通知する(ST32)。
処理開始判定部48は、DMA部1のチャネルID走査部15の走査結果から、送信すべきチャネルIDのデータの送信要求があれば、パケット処理部2に対してチャネルIDとパケット生成処理を開始する判定結果を通知する(ST24)。
なお、処理開始判定部48は、チャネルID走査部15の走査結果から、送信するチャネルIDのデータの送信要求がなければ、優先度判定部44に対して次の優先度判定を開始する判定結果を通知する(ST33)。
図14は、図13に示すネットワークインタフェースの変形例を示すブロック図であり、図13におけるDMA部1に設けたチャネルID走査部(第1チャネルID走査部)15を、チャネルID走査部(第2チャネルID走査部)16としたものである。
図14と、上述した図13の比較から明らかなように、本変形例のネットワークインタフェース450において、DMA部1は、データ格納部140から送信要求を通知されると、該当チャネルIDが存在するかどうか、送信データ情報格納部14の情報を走査する。
すなわち、チャネルID走査部16は、送信データ情報格納部14の走査結果を踏まえて送信要求をパケット処理部2に通知すると共に、データ格納部140に格納されている全チャネルID(格納チャネルID)を通知する。
パケット処理部2(パケット生成部22)は、通知された格納チャネルIDを優先度判定部44に通知し(ST20)、優先度判定部44は、通知された格納チャネルIDから最優先データ種別のチャネルIDを選択し、送信時間管理部46に通知する(ST21)。
このように、図13に示すネットワークインタフェース(データ配信装置)の第2実施例、並びに、図14に示すその変形例によれば、通知されたチャネルIDの送信データがデータ格納部に格納されるまで送信が止まるのを防止することが可能になる。
図15は、処理するチャネルIDの数が増加した場合の課題を説明するための図であり、図15(a)は、チャネルIDが#0〜#3のデータを処理する様子を示し、図15(b)は、チャネルIDが#0〜#4のデータを処理する様子を示す。
図15(a)に示されるように、データ#0〜#3が重なり合うことがない状況では、優先度に関わらず、チャネルIDが#0〜#3の全て周期のデータD01〜D31,D02〜D32,D03〜D33は、順番に送信されることになる。
これに対して、図15(b)に示されるように、チャネルIDが#4の優先度が最も低いデータが増えると、例えば、1周期目のD41が2周期目のD02と衝突し、また、2周期目のD42が3周期目のD03と衝突する。
この場合、チャネルIDが#0のデータD02,D03の方が、チャネルIDが#4のデータD41,D42よりも優先度が高いため、データの衝突が生じた個所では、それぞれ優先度の高いデータD02およびD03が送信されることになる。
そして、優先度の低いデータD41およびD42は送信されずに待たされ、高優先度のデータが全てなくなったタイミング、すなわち、本来、データD43を送信するタイミングになって、初めてデータD41を送信することができるようになる。
すなわち、図15(b)に示す例では、処理するチャネルIDの数が増加すると、例えば、優先度の低いチャネルIDのデータ(#4)は送信され難くなり、送信されない虞も生じることになる。
図16は、ネットワークインタフェースの第3実施例の要部を示すブロック図であり、上述した優先度の低いチャネルIDのデータ(#4)は送信されないといった問題を解決するためのものである。
図16に示されるように、第3実施例のネットワークインタフェース550は、優先度判定部44と送信時間管理部46の間に、優先度変更部49を挿入するようになっている。なお、他の構成は、前述した図6に示す第1実施例、或いは、図13に示す第2実施例をそのまま適用することができる。
優先度変更部49は、データ種別とスキップ回数の関係が予め決められているスキップ回数設定テーブル491、および、優先度判定部44からの最優先データ種別とパケット処理部2からのデータ種別を受け取るスキップ回数制御部492を含む。
すなわち、スキップ回数制御部492は、パケット処理部2から送信要求のかけられているデータ種別を取得すると共に、優先度判定部44から最優先データ種別を取得する。そして、スキップ回数設定テーブル491に設定されたデータ種別(Video,Audio,JPEG,制御情報)毎のスキップ回数(Skip_cnt_v,Skip_cnt_a,Skip_cnt_j,Skip_cnt_c)を参照して、スキップ回数制御を行う。
ここで、スキップ回数とは、データ種別毎に最優先データ種別として選択されなかった回数を示す。そして、スキップ回数制御部492は、スキップ回数が予め定められた規定数に達した場合には、優先度判定部44が選択したデータ種別ではなく、スキップ回数が規定数に達したデータ種別を変更後最優先データ種別として、送信時間管理部46に通知する。
これにより、優先度の低いチャネルIDのデータ(#4)であっても、スキップ回数が規定数に達した場合には、送信データとして優先的に出力されることになる。
図17は、ネットワークインタフェースの第4実施例の要部を示すブロック図であり、図16と同様に、前述した優先度の低いチャネルIDのデータ(#4)は送信されないといった問題を解決するためのものである。
図17に示されるように、第4実施例のネットワークインタフェース650において、送信時間管理部46には、送信時間管理テーブル(第2送信時間管理テーブル)461およびチャネルID選択部462が設けられている。
送信時間管理テーブル461は、図9(b)を参照して説明した送信時間管理テーブルにおいて、さらに、次パケット送信時間限界値(Tvideo_0_lim,Tvideo_1_lim,…,Tvideo_13_lim)フィールドが追加されている。
送信時間管理部46には、例えば、送信タイミング算出部45から次パケット送信時間と共に、次パケット送信時間限界値が通知され、この次パケット送信時間限界値により各チャネルの次パケット送信時間限界値のフィールドが更新される。
ここで、次パケット送信時間限界値は、例えば、動画であれば、その時間までに送信をしないと受信側で動画の再生が止まってしまう時間に相当する。また、次パケット送信時間限界値と次パケット送信時間の間には、次パケット送信時間限界値≧次パケット送信時間の関係が成立する。
なお、本第4実施例のネットワークインタフェース650では、例えば、図6に示す第1実施例のネットワークインタフェース250における送信時間比較部43を削除することができる。
そして、送信時間比較部43の代わりとして、チャネルID選択部462をも受け、現在時間と、各チャネルの次パケット送信時間および次パケット送信時間限界値との比較を行い、送信処理を開始するチャネルIDを選択する。
なお、チャネルID選択部462では、現在時間>次パケット送信時間限界値が成立するチャネルが存在する場合、そのチャネルIDを最優先で送信するように制御する。そのため、チャネルID選択部462は、処理開始判定部48に対して、現在時間>次パケット送信時間限界値が成立しているチャネルID、並びに、削除した送信時間比較部43の代わりに比較結果を通知する。
また、例えば、次パケット送信時間限界値に達しているチャネルIDが複数存在する場合は、予めシステムで定められたチャネルIDの優先度に従って、送信するチャネルIDを選択する。
さらに、例えば、現在時間が次パケット送信時間限界値を超過しているチャネルIDは存在しないが、次パケット送信時間を超過しているチャネルIDが存在する場合は、そのチャネルIDおよび比較結果を処理開始判定部48に通知する。
また、現在時間が次パケット送信時間限界値を超過しているチャネルIDは存在しないが、次パケット送信時間を超過しているチャネルIDが複数存在する場合は、予めシステムで定められたチャネルIDの優先度に従って、送信するチャネルIDを選択する。
そして、次パケット送信時間限界値にも次パケット送信時間にも達しているチャネルIDが1つも存在しない場合は、処理開始判定部48に対して、処理を開始しないことを意味する比較結果を通知する。
上述したように、本実施例によれば、例えば、同一データ種別で異なる送信負荷が設定されるような場合でも、受信側が期待するタイミングで期待するデータ種別およびチャネルIDのデータを送信することが可能になる。さらに、受信側(制御端末)は、自身の処理能力を上回るデータを受信することを避けることができ、その結果、データの欠落を防止することができる。
このように、本実施例のネットワークインタフェース(データ配信装置)は、要望される機能に応じて、様々な変形および変更を行うことができる。なお、上述した本実施例のデータ配信装置およびデータ配信方法は、主として監視カメラ等で撮影した動画(Video)、音声(Audio)および静止画(JPEG)等を例として説明したが、本実施例は、様々なデータの配信に対して幅広く適用することが可能である。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
データ格納部からのデータを受け取ってDMA転送を行うDMA部と、前記DMA部からの送信データを受け取ってパケットを生成すると共に、前記パケットのデータ種別を判定するパケット処理部と、を含み、生成された前記パケットをネットワークに送信するデータ配信装置であって、
前記データ種別を受け取って、最も優先度の高い最優先データ種別を判定する優先度判定部と、
前記最優先データ種別を受け取って、各送信データにおけるチャネルを識別するためのチャネルIDと各チャネルの送信時間を管理する送信時間管理部と、
前記送信時間管理部の出力を受け取って、前記パケット処理部が対応するパケット処理を開始するかどうかを判定する処理開始判定部と、を有する、
ことを特徴とするデータ配信装置。
(付記2)
さらに、
現在時間を検出する現在時間検出部と、
前記現在時間と現パケット送信時間を比較する送信時間比較部と、
送信タイミングを算出する送信タイミング算出部と、を有し、
前記送信時間管理部は、前記最優先データ種別から、最優先チャネルIDの現パケット送信時間を前記送信時間比較部に出力すると共に、チャネルIDを前記処理開始判定部に出力し、前記送信タイミング算出部の計算結果に基づいて、該当チャネルIDの現パケット送信時間を更新する、
ことを特徴とする付記1に記載のデータ配信装置。
(付記3)
さらに、
パケットデータのサイズを算出するパケットデータサイズ算出部を有し、
前記処理開始判定部は、前記送信時間比較部からの比較結果、および、前記送信時間管理部からの送信する送信チャネルIDを受け取り、前記送信チャネルIDの送信処理を開始するかどうかを判定し、その判定結果および前記送信チャネルIDを前記パケット処理部に通知し、前記DMA部および前記パケットデータサイズ算出部に送信処理を開始するチャネルIDを通知する、
ことを特徴とする付記2に記載のデータ配信装置。
(付記4)
前記パケットデータサイズ算出部は、前記処理開始判定部から入力される送信チャネルIDから、1パケットを生成するのに要するデータサイズを算出し、その算出結果を前記DMA部および前記パケット処理部に通知する、
ことを特徴とする付記3に記載のデータ配信装置。
(付記5)
前記DMA部は、
前記データ格納部から、前記パケットデータサイズ算出部から通知されたデータサイズ分だけ読み出して格納する送信データバッファと、
前記送信データバッファ格納したデータサイズおよび制御情報を格納する送信データ情報格納部と、を含む、
ことを特徴とする付記3または付記4に記載のデータ配信装置。
(付記6)
前記DMA部は、さらに、
前記パケットデータサイズ算出部から通知されたチャネルIDの送信データが、前記送信データ情報格納部に格納された送信データ情報により送信要求されているかどうかを走査する第1チャネルID走査部を含む、
ことを特徴とする付記5に記載のデータ配信装置。
(付記7)
前記DMA部は、さらに、
前記データ格納部から送信要求を通知されると、該当チャネルIDが存在するかどうか、前記送信データ情報格納部を走査する第2チャネルID走査部を含む、
ことを特徴とする付記5に記載のデータ配信装置。
(付記8)
前記送信時間管理部は、
データ種別、次パケット送信時間およびチャネルIDが対応付けられた第1送信時間管理テーブルを含む、
ことを特徴とする付記1乃至付記7のいずれか1項に記載のデータ配信装置。
(付記9)
前記送信時間管理部は、
データ種別、次パケット送信時間、チャネルIDおよび次パケット送信時間限界値が対応付けられた第2送信時間管理テーブルと、
前記現在時間を受け取り、前記第2送信時間管理テーブルに基づいてチャネルIDを選択するチャネルID選択部と、を含む、
ことを特徴とする付記1乃至付記7のいずれか1項に記載のデータ配信装置。
(付記10)
さらに、
前記優先度判定部と前記送信時間管理部の間に設けられ、データ種別とスキップ回数の関係が予め決められているスキップ回数設定テーブル、並びに、前記優先度判定部からの最優先データ種別と前記パケット処理部からのデータ種別を受け取るスキップ回数制御部を含む、
ことを特徴とする付記1乃至付記7のいずれか1項に記載のデータ配信装置。
(付記11)
前記DMA部は、ディスクリプタ型DMAである、
ことを特徴とする付記1乃至付記10のいずれか1項に記載のデータ配信装置。
(付記12)
さらに、
前記パケット処理部により生成された前記パケットを前記ネットワークに送信するPHY部を有する、
ことを特徴とする付記1乃至付記11のいずれか1項に記載のデータ配信装置。
(付記13)
前記データ格納部に格納されるデータは、カメラで撮影された映像データを含み、前記映像データは、異なるチャネルに相当する、異なる解像度の動画像データまたは静止画像データを含む、
ことを特徴とする付記1乃至付記12のいずれか1項に記載のデータ配信装置。
(付記14)
前記カメラは、複数の監視カメラを含み、
前記データ配信装置は、前記複数のカメラにより得られたデータを、前記ネットワークを介して制御端末に転送するネットワークインタフェースである、
ことを特徴とする付記1乃至付記13のいずれか1項に記載のデータ配信装置。
(付記15)
データ格納部からのデータを受け取ってDMA転送を行うDMA部と、前記DMA部からの送信データを受け取ってパケットを生成すると共に、前記パケットのデータ種別を判定するパケット処理部と、を含み、生成された前記パケットをネットワークに送信するデータ配信方法であって、
前記データ種別を受け取って、最も優先度の高い最優先データ種別を判定し、
前記最優先データ種別を受け取って、各送信データにおけるチャネルを識別するためのチャネルIDと各チャネルの送信時間を管理し、
前記最優先データ種別,前記チャネルIDおよび前記各チャネルの送信時間に基づいて、前記パケット処理部が対応するパケット処理を開始するかどうかを判定する、
ことを特徴とするデータ配信方法。