(57)【特許請求の範囲】
【請求項１】
画像受信装置で画像の再生を行うために、画像データを含む情報データをネットワークを介して送信する画像伝送装置であって、
入来するビデオ信号をＡ／Ｄ変換しデジタル画像データとするＡ／Ｄ変換部と、
前記デジタル画像データをＭＰＥＧ方式で圧縮符号化する符号化手段と、
前記符号化手段により圧縮された圧縮画像データを順次一時蓄積する第１の蓄積手段と、
前記第１の蓄積手段から読み出された１パケット分の前記圧縮画像データを一時蓄積する１パケット分の容量を有するＦＩＦＯメモリコントロール回路と、
前記ＦＩＦＯメモリコントロール回路から出力される１パケット分の圧縮画像データを順次一時蓄積する第２の蓄積手段と、
前記第２の蓄積手段から１パケット分づつ読み出された圧縮画像データを送出用にパケット化して前記ネットワークに送出する送出手段と、
前記第１の蓄積手段を制御するための制御手段と、
を有し、
前記制御手段は、前記第１の蓄積手段の使用状況を前記第１の蓄積手段におけるライトアドレスとリードアドレスの位置とに対応した複数のパターンに基づいて判別し、前記パターンとそのパターンの継続フレーム数とに応じて、前記一時蓄積された圧縮画像データのＢピクチャを削除するか、Ｂピクチャ及びＰピクチャを削除するか、あるいは前記符号化手段の符号化レートを下げて圧縮された圧縮画像データ量を減らして一時蓄積するかの制御を行うようにしたことを特徴とする画像伝送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動画像などの連続するストリームデータを、イーサネットやFast Ethernetなどのネットワークを介してリアルタイム伝送を行う画像伝送装置及び画像伝送方法に関するものである。
【０００２】
【従来の技術】
近年、送信装置（サーバ）側のカメラで撮影した動画像などの映像（連続するストリームデータ）を、イーサネットやFast EthernetなどのLANを介してリアルタイムで伝送し、伝送受信装置（クライアント）で監視するいわゆるネットワークを使用した監視システムが考えられており、主に構内監視などでの需要がある。
【０００３】
このときサーバ側のカメラで撮影した映像を送信する際に、ネットワーク上でパケットの衝突や消失が生じることによって、クライアント側での再生画像が乱れるので、これを回避するためにいくつかの方法が考えられている。
【０００４】
このようなネットワーク画像伝送システムは、図１に示すように、伝送装置（サーバ）１と受信装置（クライアント）３とがイーサネットやFast EthernetなどのLAN２を介して接続されている。そして、サーバ１は、カメラで撮影した映像信号をMPEG圧縮回路５で例えばMPEG１規格にしたがって圧縮し、この圧縮データをイーサネット回路７でパケット化してイーサネット２に伝送する。クライアント３では、このデータをイーサネット２から受信してイーサネット回路８で映像データを取出してMPEG伸張回路９にて伸張し、表示モニタ４に出力して表示することにより、サーバ１で撮影した映像をクライアント３側で確認することができる。
【０００５】
この画像伝送装置１についてさらに詳述すると、例えば図２に示すように、入力ビデオ信号をMPEG1規格で圧縮するMPEG圧縮回路５と、このMPEG圧縮回路５から圧縮データ（エレメンタリーストリーム）がデータバス６を介して入力され、イーサネット（ネットワーク）２に送出するためのイーサネット回路７とからなる。このMPEG圧縮回路５は、主として、アナログ入力ビデオ信号をデジタル信号に変換するA/D変換器１１、このA/D変換器１１から出力されるデジタルビデオ信号をMPEG1規格で圧縮するMPEG1エンコーダLSI１２と、このMPEG1エンコーダLSI１２で圧縮された動画像データを一時蓄積するFIFOメモリ１３と、MPEG圧縮回路５全体を制御するCPU１４と、CPU１４を動作させるために使用するメモリであるDRAM１５とで構成されている。
【０００６】
このような構成の画像伝送装置１において、入力されたビデオ信号は、A/D変換器１１によるA／D変換後、MPEG1エンコーダLSI１２にて圧縮されてエレメンタリーストリームの形で出力される。これを一旦FIFOメモリ１３で保持し、CPU１４の要求にしたがって順次先入れ先出し方式で読み出していく。FIFOメモリ１３から読み出されたデータは、データバス６を介してイーサネット回路７に送出され、ここで、イーサネット・UDP・IP・TCPなどのヘッダ情報が付加された後、イーサネット２上に送出される。
【０００７】
ここで、MPEG1エンコーダLSI１２は、圧縮したデータ（エレメンタリーストリーム）をFIFOメモリ１３に随時書き込んでいくが、このFIFOメモリ１３への書き込み操作は、全てMPEG1エンコーダLSI１２で行われている。一方、FIFOメモリ１３からの読み出し操作は、CPU１４で動作するソフトウェアで行っている。以下に、FIFOメモリ１３に保持されたエレメンタリーストリームを読み出し、イーサネットパケットを生成するまでの従来の動作について、図１３のタイミングチャートを参照しながら説明する。
【０００８】
図１３（A）に示すフレームパルスは、入力ビデオ信号のフレーム周期に同期した信号であり、CPU１４に対して１フレーム期間に１回のハードウェア割り込みを要求する。CPU１４からハードウェア割り込みが発生すると（同図（Ｂ））、割り込み処理ルーチン（Frame ISR）が実行され（同図（C））、ここでFIFOメモリ１３からエレメンタリーストリームの読み出し操作が行われる。そして、ここでは１回のハードウェア割り込みが発生すると、１つのピクチャ（Iピクチャまたは Pピクチャ、Ｂピクチャのいずれか）を構成する全てのデータをFIFOメモリ１３から読み出すことになる。なお、１つのピクチャを構成するデータ量は、フレームごとに異なっているため、MPEG1エンコーダLSI１２では、FIFOメモリ１３に書き込むフレームごとのデータのバイト数を内部レジスタ（FIFO read Register）１２aに書き込んでいる。
【０００９】
ここで、割り込み処理ルーチン（Frame ISR）のプログラム動作について図１４に示すフローチャートも参照しながらさらに説明する。上記したように、入力ビデオ信号のフレーム周期で発生するハードウェア割り込みにより、Frame ISRのフェーズA1（図１３（C）参照）が開始する。Frame ISRの動作は、図１４（A）に示すように、まず、MPEG1エンコーダLSI１２の内部レジスタであるFIFO read Register１２aの内容を読み、現在のフレーム期間内に読み出すべきデータ（１フレーム分のデータ）のバイト数を得る（ステップ１０１）。次に、このバイト数だけFIFOメモリ１３からデータを読み出し、DRAM１５上に確保した領域（領域名：DRAM MPEG area）に書き込む（ステップ１０２）。そして、FIFO read Register１２aに０を書き込む（ステップ１０３）。なお、このFIFO read Register１２aには、次の割り込みが発生するまでに、MPEG1エンコーダLSI１２によって次のフレームで読み出すべきデータ量が書き込まれる。最後にネットワークプロセスをコールし、Frame ISRを終了する（ステップ１０４）。
【００１０】
Frame ISRの呼び出しによりネットワークプロセスのフェーズB1がスタートする（図１３（D）参照）。このネットワークプロセスの動作は、図１４（Ｂ）に示すように、DRAM１５上のDRAM MPEG areaに書き込まれているエレメンタリーストリームからパケットを生成するプロセスであり、この手順について図３も合わせて参照しながら説明する。
【００１１】
まず、DRAM１５上のDRAM MPEG areaに書き込まれているエレメンタリーストリームを1460バイトづつに分割して（最後に読み出すデータは、1460バイト以下の場合がある）読み出し（図３（A））、8バイトのUDPヘッダと20バイトのIPヘッダを付加する（図３（Ｂ）、（C）：ステップ１０５）。そして、このデータをイーサネット回路７のコントローラLSI（図示せず）のデータ領域に書き込み、送信手続きを行う（ステップ１０６）。この後は、イーサネット回路７によるハードウェア処理となる。さらに、このデータに14バイトのイーサネットヘッダが付加されて1502バイトのパケットになり（図３（D））、このパケットがイーサネット２に送信される（図１３（E）参照）。そして、DRAM MPEG areaに書き込まれたデータがまだあるかどうかチェックし（ステップ１０７）、データが残っている場合は（ステップ１０７→Ｙ）、ステップ１０５〜１０７の処理を繰り返す。このように、連続したエレメンタリーストリームをパケット（＝1502バイト）に分割して順次イーサネット２に送出している。そして、DRAM MPEG areaから読み出すデータが無くなった場合には（ステップ１０７→N）、このネットワークプロセスを終了する。
【００１２】
以上、図１４（A）,（Ｂ）を用いて説明した処理は１フレーム期間内に行われる処理である。そして、次のフレームのハードウェア割り込みが発生すると、Frame ISRのフェーズA２がスタートし、同様にステップ１０１からの処理が行われる。このようなソフトウェア処理により、MPEG1エンコーダLSI１２から出力されたエレメンタリーストリームがパケット化されてイーサネット２に送出される。
【００１３】
【発明が解決しようとする課題】
この画像伝送装置１から出力される動画像データを、LANなどの複数のPCが接続されているネットワーク２を介して画像受信装置３に送信する場合、ネットワーク２が混雑してトラフィックが多くなると、ネットワーク２の伝送レートが、送信する画像データの符号化レートよりも低くなってしまう場合がある。そのため、ネットワーク２内でパケットの衝突が発生してデータが失われることがあり、イーサネットレベルで再送が繰り返されるため、データ送出に時間がかかってしまうことになる。そして、結果的に、MPEG圧縮回路５のFIFOメモリ１３やイーサネット回路７のメモリ（図示せず）からのデータ読み出しやTCP（UDP）・IP・イーサネットヘッダを付加する動作に遅れが生じ、正常なイーサネットパケットを送信できなくなってしまうことになる。このため、画像受信装置３で受信したデータには欠落部分があるためこれをデコードしても正常にデコード処理ができず、表示モニタ４で表示する画像が乱れてしまうという課題があった。
【００１４】
この課題について、さらに詳細に説明する。従来の方法におけるプログラム実行タイミングの概略は、図３、図１３及び図１４を用いてすでに説明したように、ハードウェア割り込みが発生すると、Frame ISRが実行される。このFrame ISRでは、FIFOメモリ１３から１フレーム期間に読み出すべきデータ（１つのピクチャを構成するデータ）を全て読み出し、その内容をDRAM１５上のメモリ領域にコピーする。その後、CPU１４によりネットワークプロセスがコールされ、DRAM１５のメモリ領域から1460バイトのデータを読み出し、これにUDPやIP、イーサネットのヘッダを付加して1052バイトのパケットにする。これをイーサネット回路７のメモリで保持し、順次イーサネット２上に送出している。そしてDRAM１５にコピーしたデータがなくなるまでこの一連の処理を繰り返し、１フレーム期間内に複数のパケットを送出するようにしている。
【００１５】
このような画像伝送装置（サーバ）１では、入力画像の符号化レートが高い（＝データ量が多い）場合に、MPEG圧縮回路５のFIFOメモリ１３の読み出し操作が１フレーム期間内に完了しないため、後に続くネットワークプロセスが実行できなくなる。もしくは次のフレーム期間にまたがって実行されるため、次第に遅れが蓄積されていくことになる。
【００１６】
また、ネットワーク２が混雑している場合、パケット衝突によるパケットの再送が頻繁に発生し、送出処理に時間がかかることになる。この結果、１フレーム期間内に処理すべきデータを全て送信することができなくなってしまう。
【００１７】
このように、正常なパケットが送出できなくなると、画像受信装置（クライアント）３では正常なデコード処理ができないため、乱れた画像が表示されてしまうことになる。
【００１８】
また、上記した従来の方法では、３つのメモリ（（１）MPEG圧縮回路５のFIFOメモリ１３、（２）DRAM１５上に確保したメモリ領域、（３）イーサネット回路７のメモリ）のそれぞれがデータを保持しているので、処理の遅れを検出することが非常に困難であり、処理の後れに対応させることも困難であった。
【００１９】
そこで本発明は、この３つのメモリのうち、（２）DRAM１５上に確保したメモリ領域と、（３）イーサネット回路７のメモリの使用量を減らし、全体のメモリ使用量をできるだけ（１）MPEG圧縮回路５のFIFOメモリ１３に集約させることにより、FIFOメモリ１３の使用量を調べれば、FIFOメモリ１３からの読み出し操作やネットワーク２へのデータ送出が１フレーム期間内に完結しているかどうかを判断できるようにする。そして、このFIFOメモリ１３の使用状況に応じてネットワークに送出するデータ量を調節することにより、データの損失を防ぎ、画像受信装置３での良好な画像再生ができる様にすることを目的とする。
【００２０】
【課題を解決するための手段】
上記目的を達成するための手段として、本発明では▲１▼画像伝送装置（サーバ）全体で使用するメモリ量をできるだけMPEG圧縮回路のFIFOメモリに集約させる、▲２▼MPEG圧縮回路のFIFOメモリの使用状況を調べる、▲３▼その使用状況に応じてネットワークに送出するデータ量を調節する、という３つの手段を用いる。そして、この３つの手段を用いた具体的な構成・方法を示す発明として以下に示す画像伝送装置及び画像伝送方法を提供しようとするものである。
【００２１】
１．画像受信装置で画像の再生を行うために、画像データを含む情報データをネットワークを介して送信する画像伝送装置であって、
入来するビデオ信号をＡ／Ｄ変換しデジタル画像データとするＡ／Ｄ変換部と、
前記デジタル画像データをＭＰＥＧ方式で圧縮符号化する符号化手段と、
前記符号化手段により圧縮された圧縮画像データを順次一時蓄積する第１の蓄積手段と、
前記第１の蓄積手段から読み出された１パケット分の前記圧縮画像データを一時蓄積する１パケット分の容量を有するＦＩＦＯメモリコントロール回路と、
前記ＦＩＦＯメモリコントロール回路から出力される１パケット分の圧縮画像データを順次一時蓄積する第２の蓄積手段と、
前記第２の蓄積手段から１パケット分づつ読み出された圧縮画像データを送出用にパケット化して前記ネットワークに送出する送出手段と、
前記第１の蓄積手段を制御するための制御手段と、
を有し、
前記制御手段は、前記第１の蓄積手段の使用状況を前記第１の蓄積手段におけるライトアドレスとリードアドレスの位置とに対応した複数のパターンに基づいて判別し、前記パターンとそのパターンの継続フレーム数とに応じて、前記一時蓄積された圧縮画像データのＢピクチャを削除するか、Ｂピクチャ及びＰピクチャを削除するか、あるいは前記符号化手段の符号化レートを下げて圧縮された圧縮画像データ量を減らして一時蓄積するかの制御を行うようにしたことを特徴とする画像伝送装置。
【００２２】
２．前記制御手段は、さらに前記第１の蓄積手段の蓄積データ量が順次入来されるデータによって書き換えされる前に前記符号化手段により圧縮される前記画像データの圧縮レートを高くするよう制御する機能を有することを特徴とする請求項１記載の画像伝送装置。
【００２３】
３．画像受信装置で画像の再生を行うために、画像データを含む情報データをネットワークを介して送信する画像伝送方法であって、
入来するビデオ信号をＡ／Ｄ変換しデジタル画像データとし、前記デジタル画像データを圧縮符号化して第１の蓄積手段に順次一時蓄積し、この第１の蓄積手段から１パケットデータごとに読み出して第２の蓄積手段に一時蓄積し、この第２の蓄積手段から出力される１パケット分の圧縮画像データを第３の蓄積手段に順次一時蓄積し、前記第３の蓄積手段から１パケット分づつ読み出された圧縮画像データを送出用にパケット化して前記ネットワークに送出する際に、
前記第１の蓄積手段の蓄積データ量が順次入来されるデータによって書き換えされる前に前記第１の蓄積手段からＢピクチャ又はＢピクチャ及びＰピクチャを間引いて出力する制御と前記画像データの圧縮レート高くする制御との少なくとも一方を制御することを特徴とする画像伝送方法。
【００２５】
【発明の実施の形態】
本発明の画像伝送装置及び画像伝送方法の一実施の形態について図面と共に説明する。本発明の画像伝送装置は、図１に示すようなネットワーク画像伝送システムに用いられ、例えば図２に示すような構成を有するものである。ここで、図１及び図２における概略構成は、従来の技術で説明済みであるので、同一部分の説明は省略し、本願特有のプログラム構成及び回路構成である▲１▼画像伝送装置（サーバ）全体で使用するメモリ量をできるだけMPEG圧縮回路のFIFOメモリに集約させる、▲２▼MPEG圧縮回路のFIFOメモリの使用状況を調べる、▲３▼その使用状況に応じてネットワークに送出するデータ量を調節する、という３つの手段を中心に、他の図面も参照しながら、以下に説明する。
【００２６】
まず、▲１▼画像伝送装置（サーバ）１全体で使用するメモリ量をできるだけMPEG圧縮回路５のFIFOメモリ（蓄積手段，第１の蓄積手段）１３に集約させる点について、このプログラム動作を図４に示すタイミングチャートと図５に示すフローチャートを参照しながら説明する。
【００２７】
まず、ハードウェア割り込みが発生する前に、図５（Ｂ）に示すMPEGプロセスのステップ１１６〜１１９が実行される。ここでは、最初にMPEG1エンコーダLSI（符号化手段）１２の初期設定を行う（ステップ１１６）。次に、MPEG1エンコーダLSI１２にアクセスし、圧縮のレートを所定値（例えば1.15Mbps）にセットして、この所定値をDRAM１５上に確保した領域（領域名をbitrateとする）に保存する（ステップ１１７）。そして、MPEG1エンコーダLSI１２によるエンコード（圧縮）を開始し（ステップ１１８）、Frame ISRからのコールを待つ（ステップ１１９）。
【００２８】
ステップ１１８において、エンコードが開始されると、MPEG1エンコーダLSI１２から入力ビデオ信号のフレーム周期に同期したフレームパルスが出力される（図４（A）参照）。そして、この信号によりCPU１４のハードウェア割り込みが発生し（図４（Ｂ）参照）、Frame ISRがコールされてフェーズA1が開始される（図４（C）参照）。
【００２９】
このFrame ISRでは、図５（A）に示すような処理が行われる。まず、MPEG1エンコーダLSI１２内のFIFO read Register１２aの値を読み出し、FIFOメモリ１３から現在読み出すべきデータのバイト数（１つのピクチャを構成するデータ量）を得る（ステップ１１１）。このバイト数が０の場合は（ステップ１１２→Ｙ）、FIFOメモリ１３にデータが保持されていないので、割り込み処理を終了する。しかし、バイト数が０でない場合は（ステップ１１２→Ｎ）、DRAM（第２の蓄積手段）１５上に確保した領域（領域名をFIFO numberとする）にコピーする（ステップ１１３）。そして、FIFO read Register１２aをリセット（０を書き込む）し（ステップ１１４）、MPEGプロセスをコールして、割り込み処理を終了する。以上で、図４（C）に示したフェーズA1が終了する。
【００３０】
そして、Frame ISRからコールされたMPEGプロセスが処理を再開し、図４（D）に示すフェーズB1がスタートする。MPEGプロセスでは、Frame ISRからのコールがあると（ステップ１１９→Ｙ）、MPEG圧縮回路５のFIFOメモリ１３からデータを1460バイト（１パケットで送信するデータ）読み出して、一旦FIFOメモリコントロール回路１６に確保してCPU１４の動作タイミングに合わせてデータバス６に出力し、このデータをDRAM１５上に確保した領域（領域名をDRAM MPEG areaとする）にコピーする（ステップ１２０）。そして、DRAM１５上のFIFO numberに記録されているバイト数の値から1460バイトを引き、その値を再びFIFO numberに書き込む（ステップ１２１）。その後Data Reduceサブルーチンを実行して、イーサネットに送出するデータ量を調節する（ステップ１２２）。なお、このData Reduceサブルーチンの説明については、図１２と共に後で詳細に説明する。
【００３１】
その後、DRAM１５上のDRAM MPEG areaに記憶されている1460バイトのデータを読み出してUDP・IPヘッダを付加する（ステップ１２３）。そして、このデータをイーサネット回路（送出手段）７のコントローラLSIのデータ領域（図示せず）に書き込み、送信手続きを行う（ステップ１２４）。この後は、イーサネット回路７によるハードウェア処理となる。すなわち、このデータに14バイトのイーサネットヘッダが付加されて1502バイトのパケットになり（図３（D）を参照）、このパケットがイーサネット２に送信される（図４（E）を参照）。
【００３２】
そして、DRAM１５のFIFO numberが０かどうかをチェックし（ステップ１２５）、０でない場合は（ステップ１２５→Ｎ）、送信するデータがまだ存在するのでステップ１２０に戻り、フェーズB2をスタートさせる。このフェーズB2はフェーズB1と同様の処理を行うものであり、ステップ１２０〜１２５の処理を繰り返す（図４（D）を参照）。このようにフェーズB3、フェーズB4と、FIFO numberが０になるまで、連続したエレメンタリーストリームをパケット（＝1502バイト）に分割して順次イーサネット２に送出している。そして、DRAM１５のFIFO numberが０になった場合には（ステップ１２５→Ｙ）、FIFOメモリ１３からのデータ読み出しが終了したことになるので、このMPEGプロセスを終了する。そして、次のフレーム期間が始まり（図４（A）を参照）、ハードウェア割り込みが発生すると（図４（Ｂ）を参照）、Frame ISRのフェーズA2がスタートし（図４（C）を参照）、上記した図５のフローで示される処理が実行される。
【００３３】
以上説明したように、本実施の形態では、１パケット分のデータのみをDRAM１５にコピーし、イーサネット回路７からパケット送出してから、次のパケットのデータをDRAM１５にコピーするようにしている。したがって、DRAM１５及びイーサネット回路７に蓄積されるデータ量は１パケット分だけであり、MPEG1エンコーダLSI１２から出力される圧縮画像データのほとんどは、FIFOメモリ１３に溜まるだけである。したがって、FIFOメモリ１３を監視するだけで、パケット送出の処理状況を把握することができる。
【００３４】
すなわち、従来方法では、１フレーム分のデータ全てをFIFOメモリ１３から読み出してDRAM１５に保持してから、1460バイト（ヘッダを含め1502バイト）ごとにパケット化してイーサネットに送出していた。このため、入力画像の圧縮レートが高かったり、ネットワークの混雑などにより１フレーム期間内の処理が間に合わない場合、イーサネットパケットの生成プロセスにしわ寄せが生じ、最悪の場合は１パケットも生成することができなくなってしまうことがあった。しかしながら、本実施の形態では、FIFOメモリ１３のデータ読み出しを1460バイトずつ行うことで、イーサネット２への１パケット（ヘッダを含め1502バイト）単位の送出を優先しているので、１フレーム全てのパケット生成に失敗することを回避することができる。
【００３５】
また、その分FIFOメモリ１３に溜まるデータ量が増えるので、「FIFOメモリ１３の使用状況＝パケットの送出状況」となり、１フレーム期間内の処理が間に合っているかどうかをFIFOメモリ１３を監視することで判別することが可能となる。
【００３６】
次に、FIFOメモリの使用状況の監視方法について以下に説明する。最初に、▲２▼MPEG圧縮回路５のFIFOメモリ１３の使用状況を調べる（FIFOメモリ１３のデータ残量を調べる）ことについて説明する。
【００３７】
MPEG圧縮回路５内のFIFOメモリ１３の周辺主要回路構成のみを図６に示す。本実施の形態では、書き込み操作と読み出し操作を非同期に行うことができるFIFOメモリ１３を使用している。同図において、画像データの流れはMPEG1エンコーダLSI１２から出力された圧縮画像データ（エレメンタリーストリーム）がFIFOメモリ１３の書き込み側に入力される。このFIFOメモリ１３に保持されたデータは、CPU１４の要求にしたがって読み出される。書き込み側の制御は、MPEG1エンコーダLSI１２から出力されるライトクロック（WCLK）とライトイネーブル（WE）、FIFOメモリコントロール回路１６から出力されるライトリセット（WRST）により行い、読み出し側の制御は、CPU１４から出力されるリードクロック（RCLK）とFIFOメモリコントロール回路１６から出力されるリードイネーブル（RE）、リードリセット（RRST）を使用する。そして、書き込み操作は、MPEG1エンコーダLSI１２から出力されるWCLKとWE信号によって行われ、例えば、図７に示すようにWEが"L"レベルのときWCLK入力の立ち上がりに同期して、１サイクルで8ビット（１バイト）づつ書き込まれる。
【００３８】
そして、FIFOメモリ１３に保持されたデータの残量を検出するために、本実施の形態では、FIFOメモリ１３の現在のライトアドレスとリードアドレスを調べ、それらの値を比較することによりFIFOメモリ１３に保持されているデータの残量を求めている。
【００３９】
まず、ライトアドレスは、図６に示すFIFOメモリコントロール回路１６にてWEが"L"レベルのときのWCLK数をカウントすることで求めている。
【００４０】
例えば、２Mビット（256Kワード×8ビット＝262144バイト）の容量のFIFOメモリ１３を使用した場合に、縦軸にデータ幅（１バイト＝8ビット）、横軸にワード数を示すと、メモリ全体のデータ量は図８（A）に示すようになる。そして、書き込み動作は、WCLKの立ち上がりで１バイト（＝8ビット）づつ書き込みが行われるので、図８（Ｂ）に示すように、19ビットカウンタ（ライトアドレスカウンタ）を使用して、１から40000 HEX（＝262144）までカウントすることにより、FIFOメモリ１３に書き込まれたデータのバイト数（ライトアドレス）を数えることができる。そして、同様にして、リードアドレスもFIFOメモリコントロール回路１６にて、REが"L"レベル時のRCLK数をカウントして、FIFOメモリ１３から読み出されたデータのバイト数を数えることができる。
【００４１】
この様にして求めたライトアドレスの値とリードアドレスの値とをCPU１４で定期的に読み出して比較すれば、FIFOメモリ１３に保持されているデータの残量を求めることができる。例えば、ライトアドレスが300HEX（＝768）、リードアドレスが20HEX（＝32）のとき、ライトアドレスからリードアドレスを減算すれば、FIFOメモリ１３に残っているデータ量を知ることができる。この場合、768−32＝736バイトのデータが読み出されないままFIFOメモリ１３に残っていることになる。
【００４２】
そして、前述したように、本実施の形態では、１フレーム期間内のデータ（１つのピクチャを構成するデータ）をFIFOメモリ１３から全て読み出すのではなく、パケット化に必要なバイト数のみを読み出すようにしているため、FIFOメモリ１３に保持されるデータ量は従来よりも多くなる。言い換えると、サーバ１全体の処理の遅れが、このFIFOメモリ１３に集約されることになる。例えば、ネットワーク２の混雑によりパケットがスムーズに送出できない場合、本実施の形態ではパケット送信が最優先されるため、FIFOメモリ１３からのリード動作も遅れることになる。しかしながら、ライト動作はこれとは無関係（非同期）に行われているため、ライトアドレスが40000HEXに到達し再び０アドレスからデータが書き込まれて、やがてリードアドレスを追い越してしまう場合が生じる。これは、FIFOメモリ１３からまだ読み出されていないデータの上に新たなデータを上書きすることになるため、連続したデータが途中で消えてしまい、結果的には、途切れた不連続なデータでパケットを生成して送信し、クライアント３で正常にデコード処理ができずに乱れた画像を表示することになる。
【００４３】
本実施の形態ではこのような状況に対応するため、FIFOメモリ１３を監視して、ライトアドレスがリードアドレスを追い越さないようにイーサネット２に送出するデータ量を調節することにより、画像の乱れを最小限に抑えている。このイーサネット２に送出するデータ量の調整方法（▲３▼その使用状況に応じてネットワークに送出するデータ量を調節する）について以下に説明する。
【００４４】
上記で求めたライトアドレスとリードアドレスとを比較する場合には、１フレーム期間にFIFOメモリ１３から読み出すデータ量（１つのピクチャを構成するデータ量）がピクチャごとに異なり、BやPピクチャに比べ Iピクチャの場合が最もデータ量が多くなることを考慮する必要がある。１フレーム期間におけるIピクチャを構成するデータ量は、本実施の形態で測定の結果、ビットレート1.15Mbpsの場合でおおよそ10000バイト以下であった。これは、１回のハードウェア割り込み（Frame ISR）ごとに、リードアドレスが最大10000バイト更新されることを意味する。そこで本実施の形態では、ライトアドレスとリードアドレスの現在の値のみで比較するのではなく、図９に示すようにライトアドレスとリードアドレスの前後5000バイト幅のウインドを設け、この範囲の値を使用して比較を行うようにする。
【００４５】
ここで、比較を行う際のFIFOメモリ１３の状況とライト／リードアドレスの関係について、いくつかのパターンにわけて図１０と共に説明する。なお、ハードウェア割り込みが発生したとき（Frame ISR実行時）に、FIFO read Registerが０となっている場合は、FIFOメモリ１３からの読み出し操作は行わないため、リードアドレスがライトアドレスを追い越すことはない。したがって、この場合を除いた以下の５パターンの使用状況を判別すればよいことになる。
（１）パターン１
パターン１は、図１０の（パターン１）に示すように、ライトアドレスが常に先行しており、１フレーム期間内に処理が完結する正常な状態のアドレス位置を示している。この場合のFIFOメモリ１３のアドレスの関係は、式１のようになる。なお、Rはread address、Wはwrite addressを示す。
R−5000  ＜  R＋5000  ＜  W−5000  ＜  W＋5000    …（式１）
【００４６】
（２）パターン２
パターン２は、図１０の（パターン２）に示すように、リードアドレスがライトアドレスに近づいてお互いの比較範囲の一部に重なりが生じている状態を示しているが、この場合もリード動作が支障なく行われていることを意味しており、これも正常な状態である。この場合のFIFOメモリ１３のアドレスの関係は、式２のようになる。
R−5000  ＜  W−5000  ＜  R＋5000  ＜  W＋5000    …（式２）
【００４７】
（３）パターン３
パターン３は、図１０の（パターン３）に示すように、ライトアドレスが最終アドレス（262143）に達し、一旦０に戻ってライト動作が続いている状態であり、これも正常な状態である。この場合のFIFOメモリ１３のアドレスの関係は、式３のようになる。
W−5000  ＜  W＋5000  ＜  R−5000  ＜  R＋5000    …（式３）
【００４８】
（４）パターン４
パターン４は、図１０の（パターン４）に示すように、パターン３の状態からライトアドレスがリードアドレスに近づき、お互いの比較範囲の一部に重なりが生じている状態を示している。この時点では、まだFIFOメモリ１３から読み出されてないデータの上に新たなデータが書き込まれるという状態になっていないため、データの連続性は崩れていない（クライアント３における受信画像も乱れていない。）しかしながら、FIFOメモリ１３の読み出し操作が遅れており、このままでは、データの上書きがされてしまう危険な状態になってしまうことがわかる。したがって、この読み出し操作の遅れを取り戻すために、FIFOメモリ１３の読み出し操作を優先させる（例えば、P,Bピクチャを削除するなどしてパケット送出量を少なくする）必要がある（この読み出し操作の優先については後述する）。そして、この場合のFIFOメモリ１３のアドレスの関係は、式４のようになる。
W−5000  ＜  R−5000  ≦  W＋5000  ＜  R＋5000    …（式４）
【００４９】
（５）パターン５
パターン５は、図１０の（パターン５）に示すように、パターン４の状態からさらにFIFOメモリ１３の読み出し操作が遅れ、ライトアドレスがリードアドレスを追い越してしまった状態を示す。この状態においては、読み出されてないデータの上に新たなデータが書き込まれているため、すでにデータの連続性は崩れている。しかしながら、この場合もパケット送出量を少なくして、早急に正常状態に戻す必要がある。この場合のFIFOメモリ１３のアドレスの関係は、式５のようになる。
R−5000  ≦  W−5000  ＜  R＋5000  ≦  W＋5000    …（式５）
【００５０】
次に、上記で導き出したFIFOメモリ１３の使用状況をもとに、イーサネット２に送出するデータ量を調節する手順について説明する。データ量を調節は、FIFO address ISRとData Reduceサブルーチンの２つのプロセスにより行われ、それぞれの動作フローチャートを図１１及び図１２に示す。なお、Data Reduceサブルーチンは、図５（Ｂ）に示して詳細説明済みのMPEGプロセスのステップ１２２において実行されるサブルーチンである。
【００５１】
まず、FIFO address ISRの動作について、図１１を参照しながら説明する。このFIFO address ISRは、CPU１４の持つタイマ機能によって、一定時間ごとに発生するソフトウェア割り込みで実行されるプロセスである。このプロセスでは、FIFOメモリコントロール回路１６で生成されたFIFOメモリ１３のライトアドレスとリードアドレスの値を読み出し、DRAM１５上に確保した領域に保存することを行っている。
【００５２】
まず、FIFOメモリコントロール回路１６で生成されたライトアドレスとリードアドレスを読み出し、それぞれの値をDRAM１５上の領域（領域名をwrite addressとread addressとする）にコピーする（ステップ１３１）。そして、（write address ± 5000）と（read address ± 5000）の値を比較して、上記した各パターン１〜５を判別する（ステップ１３２）。
【００５３】
ここで、あらかじめFIFOメモリ１３の読み出し動作の遅れを示すフラグ（領域名をread lateとする）とパターン情報を保存しておくための領域（領域名をstateとする）をDRAM１５上に確保しておき、パターン１の場合は、read lateに０、stateに１をセットする（ステップ１３３）。同様に、パターン２の場合は、read lateに０、stateに２をセットする（ステップ１３４）。パターン３の場合は、read lateに０、stateに３をセットする（ステップ１３５）。パターン４の場合（読み出し動作が遅れている場合）は、read lateに１、stateに４をセットする（ステップ１３６）。パターン５の場合（リード動作がさらに遅れた場合）、read lateに１、stateに５をセットする（ステップ１３７）。その後、割り込み処理を終了する。
【００５４】
次に、Data Reduceサブルーチンの動作について、図１２に示すフローチャートを参照しながら説明する。このData Reduceサブルーチンでは、FIFO address ISRによって判別され、保存されているパターン情報を読み出して、パターン４と５の場合にパケット送出量を減らし、ここで空いた処理時間をFIFOメモリ１３のリード動作にまわして、１フレーム期間内の処理の遅れを回復させるという動作を行う。
【００５５】
まず、MPEGプロセスでDRAM MPEG areaに保存されたエレメンタリーストリームのヘッダを検索して、picture coding typeを見つけ出し、ピクチャの種類（I,P,B）を判別し（ステップ１４１）、DRAM１５上に確保した領域（領域名をpictureとする）に、Iなら１、Pなら２、Bなら３を書き込む（ステップ１４２）。そして、パターン種別を示すstateを読み出して（ステップ１４３）、このstateが１及び２、３の場合は、１フレーム期間の処理が間に合っているため、通常通りにパケットを送出する。そして、前のフレーム割り込みでパターン５に入った場合に、そのことを記憶しておくために、DRAM１５上にstate５ countの名前で領域を確保しておき、stateが１及び２、３の場合である今回の場合はこれに０を代入しておく（ステップ１４４）。その後サブルーチンの処理を終了し、図５（Ｂ）のMPEGプロセスの続き（図５（Ｂ）のステップ１２３以降）を行う。
【００５６】
ステップ１４３においてstateが４の場合は、FIFOメモリ１３のリード動作に遅れが生じているため、イーサネット２に送出するデータ量を減少させる必要がある。そこで、まずstate５ countの値を読み出してチェックする（ステップ１４５）。
【００５７】
このstate５ countの値が０でない場合は（ステップ１４５→Ｎ）、前のフレーム割り込みでFIFOメモリ１３の状態がパターン５であったことを意味しており、また、現在のフレームではパターン４であるため、パターン５からパターン４に状態が改善したことがわかる。しかしながら、引き続きパターン５の処理を行ってより状態を改善する必要があるため、ステップ１４９の処理に移動する（以降の処理内容は、state５の処理のところで説明する）。
【００５８】
state５ countの値が０の場合は（ステップ１４５→Ｙ）、前のフレームがパターン５以外の状態であったことを示している。この場合のstate４の処理は、I、B、PピクチャのうちBピクチャのデータを削除してデータ量を減らすことを行う。まず、DRAM１５上のpicture領域の値を読んでピクチャの種類を判断し（ステップ１４６）、pictureの値が３でBピクチャを示す場合はパケット生成及び送出をしないため、図５（Ｂ）に示すMPEGプロセスのステップ１２５（パケット送出後の処理）にジャンプする。pictureの値が１または２でI、Pピクチャを示す場合は、通常通りパケット生成・送出を行うため、サブルーチンの処理を終えMPEGプロセスの続き（図５（Ｂ）のステップ１２３）を実行する。
【００５９】
ステップ１４３においてstateが５の場合は、state５ countの値を１だけ更新する（ステップ１４７）。こうすることにより、以降はstate５ countの値を読むことで、パターン５が何フレーム続いたかがわかる。次に、state５ countが１０かどうかチェックする（ステップ１４８）。これはパターン５が１０フレーム続いたかどうかにより、以降の処理を変えるために行っている。
【００６０】
state５ countの値が１０でない場合は（ステップ１４８→Ｎ）、state５における通常処理を行う。ここでは、I、B、PピクチャのうちBとPピクチャのデータを削除してデータ量を減らすことを行う。まず、DRAM１５上のpicture領域の値を読み、pictureの値が２または３でB、Pピクチャを示す場合にはパケット生成及び送出をしないため、図５（Ｂ）に示すMPEGプロセスのステップ１２５（パケット送出後の処理）にジャンプする。pictureの値が１でIピクチャを示す場合は、通常通りパケット生成・送出を行うため、サブルーチンの処理を終えMPEGプロセスの続き（図５（Ｂ）のステップ１２３）を実行する。
【００６１】
state５ countの値 が１０の場合は（ステップ１４８→Ｙ）、パターン５が１０フレーム続いたことを意味している。この場合はFIFOメモリ１３のデータはすでに上書きされて、データの連続性は崩れていると考えられる。また、パターン５の処理（P、Bピクチャを削除する）を１０フレーム期間行っても状態が改善しなかったことも意味しているので、このまま同じ動作を繰り返しても改善が見込めないと考えられる。したがって、state５ countの値 が１０の場合は、入力信号の符号化レートを下げる処理を行うようにする。
【００６２】
まず、ビットレートを設定するため、MPEG1エンコーダLSI１２におけるエンコード処理を一旦ストップさせる（ステップ１５０）。そして、現在の符号化レートを知るために、DRAM１５上のbitrateの値を読み（ステップ１５１）、1.15Mbpsのときは800kbps、800kbpsのときは600kbps、600kbpsのときは400kbps、400kbpsのときは200kbpsをbitrateにセットする（ステップ１５２）。その後、MPEG1エンコーダLSI１２にアクセスし、セットしたbitrateの値をエンコード出力するデータのビットレートに設定する（ステップ１５３）。そして、state５ countを０に戻してから（ステップ１５４）、エンコード処理を再開するため、図５（Ｂ）のMPEGプロセスのステップ１１８へジャンプする。
【００６３】
このようにして、FIFOメモリ１３のデータ残量によってパケット送出量を制御することにより、クライアント３における受信画像の乱れを最小限に抑えることができる。
【００６４】
以上説明した本実施の形態では、FIFOメモリ１３のライトアドレスとリードアドレスの値を比較することによって、リード動作の遅れ（FIFOメモリ１３の使用状況）を検出している。そして、この遅れに応じて、ネットワーク２に送出するデータ量を調節することにより、ネットワーク２上で起こるパケット衝突を回避して、クライアント３における受信画像の乱れを緩和させている。
【００６５】
【発明の効果】
本発明の画像伝送装置及び画像伝送方法は、サーバから送信する画像のデータ量を、伝送路として使用するネットワーク環境に適応した伝送レートに調整することができる。
【００６６】
また、ネットワーク上で起こるパケットの衝突・消失を回避し、受信装置における画像の乱れを緩和させることができるという効果がある。
【図面の簡単な説明】
【図１】本発明の画像伝送装置及び画像伝送方法が使用されるネットワーク画像伝送システムの例を示す構成図である。
【図２】本発明の画像伝送装置の一実施の形態を示す構成図である。
【図３】イーサネットパケットの生成手順を説明するための図である。
【図４】本発明の画像伝送装置及び画像伝送方法の一実施の形態の動作を説明するためのタイミングチャート図である。
【図５】本発明の画像伝送装置及び画像伝送方法の一実施の形態を説明するためのフローチャート図である。
【図６】本発明の画像伝送装置のFIFOメモリの周辺回路の例を示す構成図である。
【図７】  FIFOメモリの書き込み動作を説明するためのタイミングチャート図である。
【図８】  FIFOメモリの書き込みアドレスのカウント動作を説明するための図である。
【図９】  FIFOメモリのアドレス比較の方法を説明するための図である。
【図１０】  FIFOメモリの状態パターンを説明するための図である。
【図１１】  FIFO address ISRの動作を説明するためのフローチャート図である。
【図１２】  Data reduceサブルーチンの動作を説明するためのフローチャート図である。
【図１３】従来の画像伝送装置の動作を説明するためのタイミングチャート図である。
【図１４】従来の画像伝送装置を説明するためのフローチャート図である。
【符号の説明】
１  画像伝送装置
２  イーサネット（ネットワーク）
３  画像受信装置
４  表示モニタ
５  MPEG圧縮回路
６  データバス
７  イーサネット回路（送出手段）
８  イーサネット回路
９  MPEG伸張回路
１１  A/D変換器
１２  MPEG1エンコーダLSI（符号化手段）
１２ａ  内部レジスタ（FIFO read レジスタ）
１３  FIFOメモリ（蓄積手段，第１の蓄積手段）
１４  CPU
１５  DRAM（第２の蓄積手段）
１６  FIFOメモリコントロール回路
【図１】
0003827133.tif 000002
【図２】
0003827133.tif 000003
【図３】
0003827133.tif 000004
【図４】
0003827133.tif 000005
【図５】
0003827133.tif 000006
【図６】
0003827133.tif 000007
【図７】
0003827133.tif 000008
【図８】
0003827133.tif 000009
【図９】
0003827133.tif 000010
【図１０】
0003827133.tif 000011
【図１１】
0003827133.tif 000012
【図１２】
0003827133.tif 000013
【図１３】
0003827133.tif 000014
【図１４】
0003827133.tif 000015