(57)【要約】 【課題】損失した信号の復元を効率的に行うことができる通信装置を提供すること。【解決手段】通信装置は、第一の記憶手段と、前記第一の記憶手段より高速にアクセス可能な第二の記憶手段と、外部から受信した信号が損失信号を復元するための第一の信号である場合、当該第一の信号を前記第二の記憶手段へ転送し、前記外部から受信した信号が前記第一の信号とは異なる第二の信号である場合、当該第二の信号を前記第一の記憶手段および前記第二の記憶手段に転送する転送手段と、前記損失信号に関連する前記第一の信号と前記第二の信号とを前記第二の記憶手段から読み出して、前記損失信号を復元する復元手段と、を備え、前記転送手段は、前記復元手段により復元した損失信号を前記第一の記憶手段へ転送する。【選択図】  図３
2019047420.tif 000002
【特許請求の範囲】
【請求項１】
第一の記憶手段と、
前記第一の記憶手段より高速にアクセス可能な第二の記憶手段と、
外部から受信した信号が損失信号を復元するための第一の信号である場合、当該第一の信号を前記第二の記憶手段へ転送し、前記外部から受信した信号が前記第一の信号とは異なる第二の信号である場合、当該第二の信号を前記第一の記憶手段および前記第二の記憶手段に転送する転送手段と、
前記損失信号に関連する前記第一の信号と前記第二の信号とを前記第二の記憶手段から読み出して、前記損失信号を復元する復元手段と、を備え、
前記転送手段は、前記復元手段により復元した損失信号を前記第一の記憶手段へ転送することを特徴とする通信装置。
【請求項２】
前記第二の記憶手段内の記憶領域を解放する第一の解放手段をさらに備え、
前記復元に関して前記第一の信号の対象となっている前記第二の信号の全てを前記通信装置が受信した場合、または、前記第一の信号が損失信号の復元のために前記第二の記憶手段から読み出された場合、前記第一の解放手段は、前記第二の記憶手段内の前記第一の信号の記憶領域を解放することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第二の記憶手段内の記憶領域を解放する第一の解放手段をさらに備え、
受信した前記第二の信号に連続して所定数以上の第二の信号が前記第二の記憶手段に記憶された場合、前記第一の解放手段は、前記第二の記憶手段内の前記第二の信号の記憶領域を解放することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記第二の記憶手段内の記憶領域を解放する第一の解放手段をさらに備え、
前記第二の信号が前記第二の記憶手段に記憶されてから所定の時間が経過した場合、前記第一の解放手段は、前記第二の記憶手段内の前記第二の信号の記憶領域を解放することを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
前記第一の記憶手段内の記憶領域を解放する第二の解放手段と、
所定のアプリケーションを実行する実行手段と、をさらに備え、
前記第一の記憶手段から所定数の前記第二の信号が前記実行手段に渡された後、前記第二の解放手段は、前記第一の記憶手段内の前記所定数の前記第二の信号の記憶領域を解放することを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項６】
前記復元に関して前記第一の信号の対象となっている第二の信号の数が所定数以上である場合、前記転送手段は、前記第一の信号と、当該第一の信号の後に受信した前記第一の信号の対象となっている第二の信号とを、前記第一の記憶手段へ転送することを特徴とする請求項１から５のいずれか１項に記載の通信装置。
【請求項７】
前記転送手段は、受信した信号のヘッダの内容に基づいて、当該信号が前記第一の信号であるか前記第二の信号であるかを判定することを特徴とする請求項１から６のいずれか１項に記載の通信装置。
【請求項８】
前記第二の記憶手段と前記復元手段は１つの回路に設けられ、前記第一の記憶手段は前記１つの回路の外部に設けられていることを特徴とする請求項１から７のいずれか１項に記載の通信装置。
【請求項９】
前記第一の信号と前記第二の信号は、ＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）パケットであることを特徴とする請求項１から８のいずれか１項に記載の通信装置。
【請求項１０】
前記第一の信号はＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）パケットであることを特徴とする請求項１から９のいずれか１項に記載の通信装置。
【請求項１１】
第一の記憶手段と、前記第一の記憶手段より高速にアクセス可能な第二の記憶手段と、損失した信号を復元する復元手段と、を備える通信装置の制御方法であって、
外部から受信した信号が前記損失した信号を復元するための第一の信号である場合、当該第一の信号を前記第二の記憶手段へ転送するステップと、
前記外部から受信した信号が前記第一の信号とは異なる第二の信号である場合、当該第二の信号を前記第一の記憶手段および前記第二の記憶手段に転送するステップと、
前記損失した信号に関連する前記第一の信号と前記第二の信号とを前記第二の記憶手段から読み出して、当該読み出した前記第一の信号と前記第二の信号を用いて、前記復元手段に前記損失した信号を復元させるステップと、
前記復元手段により復元した損失信号を前記第一の記憶手段へ転送するステップと、
を備えることを特徴とする制御方法。
【請求項１２】
コンピュータが読み取り実行することで、前記コンピュータを、請求項１〜１０のいずれか１項に記載の通信装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信装置およびその制御方法に関する。
【背景技術】
【０００２】
音声や映像などのデータストリームをリアルタイムに伝送するための伝送プロトコルとして、Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ（以下、「ＲＴＰ」と称する）がある。
ＲＴＰは、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を基盤とする伝送プロトコルであり、受信側でデータを順序通りに再生することを目的として、ＲＴＰヘッダ内にパケット順序および時間情報を含んでいる。
ＲＴＰパケットにも、他のプロトコルのパケット同様に、ネットワーク上を伝送される際にパケット損失や伝送の遅れが発生する。音声や映像はデータの一部が欠けていても再生が可能であるため、受信側では損失したパケットや伝送が遅れたパケットを無視してデータの再生を行うことが出来る。しかし、パケット損失や伝送の遅れが発生した場合、再生されたデータはノイズや途切れなどを有するので、再生されたデータの品質は低下する。
【０００３】
再生データの品質の低下を防ぐために、ＲＴＰ通信において損失したパケットを復元するための技術として、前方誤り訂正技術（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）と呼ばれる技術が存在する。Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎは、以下、「ＦＥＣ」と称する。ＦＥＣの基本的な演算手法は、例えば、ＲＦＣ２７３３に記載されている。
ＦＥＣにおいて送信機器は、送信するデータをＲＴＰパケットへ分割し、各ＲＴＰパケットをグループ化する。また、送信機器は、各グループに含まれるＲＴＰパケットに基づいて冗長データパケットを生成し、各ＲＴＰパケットを受信機器へ送信すると共に冗長データパケットも受信機器へ送信する。受信機器は、受信したＲＴＰパケットに損失が無いかを検知し、損失を検知した場合には、各グループにおけるＲＴＰパケットと冗長データパケットを用いて、損失したＲＴＰパケットを復元する。
【０００４】
そのため受信機器は、受信したＲＴＰパケットを、再生するためのデータとして受信機器内のメモリに保持すると共に、損失パケットの復元に使用するデータとしても受信機器内のメモリに保持する。
受信したＲＴＰパケットおよび冗長パケットを受信機器内に保持しておく手法として、特許文献１のような手法が提案されている。特許文献１の受信機器は、ＲＴＰのデータパケットと冗長パケットをそれぞれ独立したバッファリング手段に格納し、復元処理に使用する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１３１１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
通信機能を備える組み込み機器においては、受信したパケットは組み込み機器に搭載されているＡＳＩＣの外部メモリに格納されることが一般的である。これは組み込み機器に搭載されるようなＡＳＩＣにおいては、回路面積コストの高いＡＳＩＣの内部メモリを十分に確保出来ないためである。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略である。
ＲＴＰ通信では、損失したパケットを受信機器側で復元することができるが、復元処理を行うためには関連するパケットの全てをＡＳＩＣの外部メモリから読み出す必要がある。しかし、ＡＳＩＣの外部メモリから各パケットを読み出していては、読み出しにかかる時間が長いため復元処理を高速化出来ず、損失したパケットの回復率が上がらない。
本発明は上記した課題を解決するものであり、損失した信号の復元を効率的に行うことができる通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様による通信装置は、第一の記憶手段と、前記第一の記憶手段より高速にアクセス可能な第二の記憶手段と、外部から受信した信号が損失信号を復元するための第一の信号である場合、当該第一の信号を前記第二の記憶手段へ転送し、前記外部から受信した信号が前記第一の信号とは異なる第二の信号である場合、当該第二の信号を前記第一の記憶手段および前記第二の記憶手段に転送する転送手段と、前記損失信号に関連する前記第一の信号と前記第二の信号とを前記第二の記憶手段から読み出して、前記損失信号を復元する復元手段と、を備え、前記転送手段は、前記復元手段により復元した損失信号を前記第一の記憶手段へ転送する。
【発明の効果】
【０００８】
本発明によれば、損失した信号の復元を効率的に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態による通信装置のブロック図。
【図２】ＦＥＣ演算を説明する図。
【図３】パケット受信時のメモリ格納フロー図。
【図４】パケット復元処理のフロー図。
【図５】ローカルメモリの解放フロー図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。実施形態の構成は、本発明が適用される装置の仕様や各種条件（使用条件、使用環境等）によって適宜修正又は変更され得る。
【００１１】
実施形態１
図１は、本実施形態による通信装置１０１のブロック図である。通信装置１０１は、ネットワークを介して外部から送信されてきたメディアパケットを受信して、データ（例えば、音声データ、映像データ）として再生する情報処理装置である。また、通信装置１０１は、ＦＥＣパケットと呼ばれる冗長データを受信し、ネットワーク上で損失したメディアパケット（損失信号）の復元を行うことが出来る。メディアパケットおよびＦＥＣパケットは、例えばＲＴＰに準拠したパケットである。メディアパケットは、例えば、音声情報や映像情報を搬送する再生用パケット（再生用信号）である。ＦＥＣパケットは、メディアパケットを復元するための復元用パケット（復元用信号）である。本実施形態の通信装置１０１は、例えば、通信機能を備える組み込み機器である。組み込み機器は、例えば、プロジェクタである。
【００１２】
（通信装置の構成）
通信装置１０１は、コントローラ１０２とメインメモリ１０３を備える。コントローラ１０２は、通信装置１０１に搭載される制御チップである（例えば、ＬＳＩチップ）。メインメモリ１０３は、通信装置１０１に搭載されるメモリチップである。メインメモリ１０３は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）である。メインメモリ１０３には、コントローラ１０２に内蔵されるＣＰＵ（メインＣＰＵ１０５、サブＣＰＵ１０９）が実行するプログラムが格納されている。メインメモリ１０３は、ネットワークから受信したメディアパケット用バッファメモリとしての役割を担う。
コントローラ１０２は、主処理部１０４と通信処理部１０８を有する。つまり、コントローラ１０２の内部は、２つのドメイン（モジュール）に分かれている。なお、本実施形態では、コントローラ１０２は、２つのドメイン（主処理部１０４と通信処理部１０８）に分かれているが、３つ以上のドメインに分けられた構成を有してもよい。
【００１３】
主処理部１０４は、メインＣＰＵ１０５、メインバス１０６、およびメモリコントローラ１０７を有する。
メインＣＰＵ１０５は、通信装置１０１全体のアプリケーション制御を行う。例えば、通信装置１０１がプロジェクタであれば、メインＣＰＵ１０５は、画像処理や画像出力（再生）に関するアプリケーションを実行・制御する。画像処理や画像出力に関するアプリケーションは、再生用アプリケーションと称することができる。なお、図１においては、画像出力や音声出力のための出力部（例えば、表示部や音響出力部）が省略されている。また、ユーザが操作する操作部や入力部も省略されている。
メインバス１０６は、メインＣＰＵ１０５や通信処理部１０８からメインメモリ１０３へアクセスする際やデータを転送する際に使用される。また、メインバス１０６は、メインＣＰＵ１０５が通信処理部１０８へアクセスする際にも使用される。
メモリコントローラ１０７は、メインバス１０６を介してメインメモリ１０３へアクセスする際の制御（アクセス制御）に使用される。
【００１４】
通信処理部１０８は、サブＣＰＵ１０９、ローカルバス１１０、ローカルメモリ１１１、データ移動部１１２、通信インターフェイス部１１３、およびＦＥＣ処理部１１４を有する。以下において、通信インターフェイスは、「通信Ｉ／Ｆ」と称する。
サブＣＰＵ１０９は通信処理を実行する。サブＣＰＵ１０９は、メインメモリ１０３に格納されたプログラムを内蔵するキャッシュメモリにロードして、プログラムを実行する。また、サブＣＰＵ１０９は、ローカルバス１１０を介して、主処理部１０４および通信処理部１０８内の各ブロックへアクセスすることが可能である。サブＣＰＵ１０９は、ローカルメモリ１１１へのアクセスの方がメインメモリ１０３へのアクセスより高速に実行することが可能である。
【００１５】
ローカルバス１１０は、サブＣＰＵ１０９からローカルメモリ１１１、データ移動部１１２、ＦＥＣ処理部１１４または主処理部１０４へアクセスする際やデータを移動させる際に使用される。
ローカルメモリ１１１は、ネットワークから受信したメディアパケットおよびＦＥＣパケットを格納する。また、ローカルメモリ１１１は、サブＣＰＵ１０９のワークメモリとしても使用される。ローカルメモリ１１１は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）である。ローカルメモリ１１１はコントローラ１０２内に設けられており、コントローラ１０２の外部に設けられたメインメモリ１０３より高速にアクセスすることができる。ローカルメモリ１１１とメインメモリ１０３は、独立した記憶装置である。
【００１６】
データ移動部１１２は、メインメモリ１０３またはローカルメモリ１１１と、通信Ｉ／Ｆ部１１３との間のデータ転送（移動）を実行することが可能である。データ移動部１１２は、メインＣＰＵ１０５またはサブＣＰＵ１０９からの指示により、データ移動を開始する。メインＣＰＵ１０５またはサブＣＰＵ１０９があらかじめデータ移動部１１２に指示しておくことで、通信装置１０１がパケットを受信した際に、データ移動部１１２は当該指示に基づいてデータ移動を実行することが可能である。
また、データ移動部１１２は、通信Ｉ／Ｆ部１１３から読み出したパケット（受信したパケット）の一部を参照し、当該パケットの転送先を変更・設定することが可能である。本実施形態では、受信したパケットがメディアパケットであれば、メインメモリ１０３とローカルメモリ１１１の両方へ並行して書き込みを行う。つまり、本実施形態では、通信装置１０１が受信したパケットがメディアパケットであれば、データ移動部１１２は、当該パケットの転送先をメインメモリ１０３とローカルメモリ１１１にする。受信したパケットがＦＥＣパケットであれば、ローカルメモリ１１１のみへ書き込みを行う。つまり、通信装置１０１が受信したパケットがＦＥＣパケットであれば、データ移動部１１２は、ＦＥＣパケットの転送先をローカルメモリ１１１にする。読み出したパケットの一部を参照するために、データ移動部１１２は内部にパケットを一時的に格納するバッファを有している。
【００１７】
通信Ｉ／Ｆ部１１３は、通信ケーブル１１７を介して通信装置１０１をネットワークに接続する。各種パケットの送受信は全て、通信Ｉ／Ｆ部１１３を介して行われる。通信Ｉ／Ｆ部１１３は、内部にバッファを有し、パケットを一時的に格納することが可能である。
ＦＥＣ処理部１１４は、ＦＥＣ演算部１１５およびＦＥＣテーブル１１６を有する。
ＦＥＣ演算部１１５は、ＦＥＣ演算を実行しネットワーク上で送信中に損失したメディアパケット（損失信号）を復元することが可能である。ＦＥＣ演算は、例えばＸＯＲ演算を用いる。ＸＯＲ演算については図２を用いて後述する。
ＦＥＣ演算部１１５は、メディアパケットの損失が検知されると、復元に必要なメディアパケットおよびＦＥＣパケットをローカルメモリ１１１から読み出し、ＦＥＣ演算を実行する。ＦＥＣ演算部１１５は、復元に必要となる各パケットを、ＦＥＣテーブル１１６の情報に基づいて、ローカルメモリ１１１から読み出す。ＦＥＣ演算の結果得られる復元されたメディアパケットは、ＦＥＣ演算部１１５からメインメモリ１０３へ書き込まれる。
ＦＥＣテーブル１１６には、メディアパケットおよびＦＥＣパケットの受信状態と各パケットのグループ情報と格納されている物理アドレス情報が管理されている。ＦＥＣテーブル１１６内の各情報（パケットの受信状態を含む）は、データ移動部１１２により更新される。メディアパケットの損失は、例えば、サブＣＰＵ１０９がＦＥＣテーブル１１６を参照することにより検知される。
【００１８】
図１に示すデータ移動部１１２、通信Ｉ／Ｆ部１１３、ＦＥＣ処理部１１４（ＦＥＣ演算部１１５、ＦＥＣテーブル１１６）は、ソフトウェア又はハードウェアによって実現される。ソフトウェアによって実現される場合、前述した各部１１２〜１１６の機能を提供するためのプログラムがメインメモリ１０３またはローカルメモリ１１１に記憶される。記憶されたプログラムは適宜ＲＡＭに読み出され、メインＣＰＵ１０５またはサブＣＰＵ１０９が実行することにより、各部の機能が実現される。一方、ハードウェアにより実現される場合、例えば、所定のコンパイラを用いることで、各部の機能を実現するためのプログラムからＦＰＧＡ上に自動的に専用回路を生成すればよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウェアとして実現するようにしてもよい。また、ＡＳＩＣにより実現するようにしてもよい。なお、図１に示した各部の構成は一例であり、複数の部が１つの部を構成するようにしてもよいし、いずれかの部が複数の機能を行う部に分かれてもよい。
【００１９】
（ＦＥＣ演算）
図２を参照して、ＦＥＣ演算について説明する。例えば、ＲＦＣ２７３３においては、ＦＥＣパケットを生成する際には、連続した２４個のメディアパケットを使用する。ＦＥＣパケットは、送信側で生成される。図２（ａ）の例では、Ｎ番目のメディアパケットからＮ＋２３番目のメディアパケットまでの２４個のメディアパケットが使用されている。ＦＥＣパケットの対象パケットの個数が３の場合、２４個のメディアパケットのうち、Ｎ番目とＮ＋８番目とＮ＋１６番目のメディアパケットが１つのグループを作り、ＸＯＲ演算によりＦＥＣパケットＦ０が生成される。同様に、Ｎ＋１番目とＮ＋９番目とＮ＋１７番目のメディアパケットが１つのグループを作り、ＸＯＲ演算によりＦＥＣパケットＦ１が生成される。図２（ａ）の例では、８つのＦＥＣパケットＦ０〜Ｆ７が生成される。このように生成されたＦＥＣパケットが通信装置１０１に送信される。各ＦＥＣパケットのヘッダ（ＦＥＣヘッダ）内には、ＦＥＣパケットの生成に使用された全てのメディアパケットを特定する情報が含まれている。例えば、ＦＥＣパケットＦ０のヘッダには、Ｎ番目とＮ＋８番目とＮ＋１６番目のメディアパケットを特定する情報が含まれている。
通信装置１０１が未受信パケット（損失パケット）を検知すると、ＦＥＣ演算部１１５は、ＦＥＣパケットを用いて損失パケットを復元する。例えば、Ｎ＋１７番目のパケットが損失している場合、ＦＥＣ演算部１１５は、図２（ｂ）に示すように、Ｎ＋１番目およびＮ＋９番目のメディアパケットとＦＥＣパケットＦ１とを用いてＮ＋１７番目のパケットを復元する。ＦＥＣパケットＦ１と、当該ＦＥＣパケットＦ１のグループ内の他のパケット（Ｎ＋１番目とＮ＋９番目メディアパケット）があれば、Ｎ＋１７番目のメディアパケットを復元することができる。このように、ＦＥＣ演算部１１５は、損失パケット（Ｎ＋１７）に関連するメディアパケット（Ｎ＋１とＮ＋９）とＦＥＣパケットＦ１とをローカルメモリ１１１から読み出し、損失パケットを復元する。
【００２０】
（パケット受信時のメモリ格納処理）
図３は、パケット受信時のメモリ格納処理のフロー図を示す。図３のフローは図１に示す通信処理部１０８のサブＣＰＵ１０９および各部１１２〜１１６によって実現される。各部がソフトウェアである場合、例えば、サブＣＰＵ１０９が、そのプログラムを実行することにより、図３のフローが実現される。
通信装置１０１が、通信Ｉ／Ｆ部１１３を介してネットワークからメディアパケットまたはＦＥＣパケットを受信すると、本フローが開始される（Ｓ３０１）。本フローにより、受信したパケットをデータ移動部１１２がどこへ転送・格納するのかが決定される。
通信Ｉ／Ｆ部１１３はパケットを受信すると、サブＣＰＵ１０９へ受信通知を送る。受信通知を受けたサブＣＰＵ１０９は、データ移動部１１２へデータ転送指示を出し、データ移動部１１２がデータ転送を開始する。なお、通信Ｉ／Ｆ部１１３がパケット受信通知を行わず、サブＣＰＵ１０９が受信パケットの有無を一定周期で確認（判定）してもよい。
【００２１】
Ｓ３０２において、データ移動部１１２は、通信Ｉ／Ｆ部１１３から読み出したパケット（受信パケット）にＦＥＣヘッダが含まれているかを判定する。パケットにＦＥＣヘッダが含まれているか否か（ＦＥＣヘッダの有無）により、メディアパケットとＦＥＣパケットの分類を行うことが出来る。パケットにＦＥＣヘッダが含まれている場合は、当該パケットはＦＥＣパケットであり、Ｓ３０３へ進む。パケットにＦＥＣヘッダが含まれていない場合は、当該パケットが未受信のパケットであることを確認した後、Ｓ３０６へ進む。
受信パケットがＦＥＣパケットであった場合は、データ移動部１１２は、当該ＦＥＣパケットが対象としているメディアパケットの受信状態を判定する（Ｓ３０３）。具体的には、データ移動部１１２は、同一ＦＥＣグループで未受信のパケットが存在するかを判定する。各メディアパケットおよびＦＥＣパケットの受信状態は、ＦＥＣテーブル１１６で管理されており、データ移動部１１２はＦＥＣテーブル１１６より受信状態を得ることが出来る。
【００２２】
ＦＥＣパケットが対象としている複数のメディアパケット（図２の例の場合、３つのメディアパケット）の中で、未受信のパケットが存在する場合、Ｓ３０４へ進み、未受信のパケットが存在しない場合Ｓ３０５へ進む。
Ｓ３０４において、未受信のパケットが存在する場合、データ移動部１１２は、受信したＦＥＣパケットをローカルメモリ１１１へ転送することにより、当該ＦＥＣパケットをローカルメモリ１１１に格納する。その後、データ移動部１１２は、ローカルメモリ１１１へ格納したＦＥＣパケットの情報を更新（Ｓ３０９）する。つまり、データ移動部１１２はＦＥＣテーブル１１６を更新する。そして、フローを終了する（Ｓ３１１）。
ＦＥＣパケットが対象としている複数のメディアパケットの中で、未受信のパケットが存在しない場合、サブＣＰＵ１０９は、Ｓ３０５において、受信したＦＥＣパケットを破棄（消去）し、フローを終了する（Ｓ３１１）。復元するべきパケットが存在しない場合は、ＦＥＣパケットを保持しておく必要は無い。
受信パケットがメディアパケットであった場合（Ｓ３０２：Ｎｏ）、サブＣＰＵ１０９は、受信以前に損失パケットとして復元されていないかを判定する（Ｓ３０６）。つまり、サブＣＰＵ１０９は、受信パケットが復元済のパケットであるか否かを判定する。Ｓ３０６の判定結果がＹｅｓの場合、Ｓ３０７へ進む。Ｓ３０６の判定結果がＮｏの場合、Ｓ３０８に進み、サブＣＰＵ１０９はパケットを破棄し、その後、フローを終了する（Ｓ３１１）。
【００２３】
復元されておらず未受信のパケットであった場合には、データ移動部１１２は、メインメモリ１０３およびローカルメモリ１１１へパケットを転送することにより、当該パケットをメインメモリ１０３およびローカルメモリ１１１に格納する（Ｓ３０７）。
その後、Ｓ３１０において、データ移動部１１２は、格納したパケットの情報を更新する。つまり、データ移動部１１２はＦＥＣテーブル１１６を更新する。そして、フローを終了する（Ｓ３１１）。
メインメモリ１０３に格納されたメディアパケットは、シーケンス番号順に揃っているパケットまでメインＣＰＵ１０５が実行するアプリケーションへデータ（メディアデータ）として順次渡される。
未受信のパケットが存在する場合には、以降のパケットをデータとしてメインＣＰＵ１０５へ渡す前に受信待ちもしくはパケットの復元待ちを一定時間行うが、タイムアウトした時点でデータとしてメインＣＰＵ１０５へ渡すことになる。ここでの一定時間は例えば、各メディアパケットのヘッダに含まれるタイムスタンプからデータ再生時刻までの時間として算出される。タイムアウトしたかは、例えば、メインＣＰＵ１０５またはサブＣＰＵ１０９に備えられたタイマを参照することにより、判定される。
【００２４】
メインメモリ１０３からメインＣＰＵ１０５へデータとして渡されたメディアパケットは、メインメモリ１０３に保持しておく必要がない。従って、当該メディアパケットは破棄されるか、当該メディアパケットを格納していたメインメモリ１０３のメモリ領域（記憶領域）は解放状態にされる。解放状態にされるとは、当該メモリ領域に、新たに受信した別のパケットが上書きされ得る状態にされることを言う。メインメモリ１０３のメモリ領域の解放は、メモリコントローラ１０７またはメインＣＰＵ１０５が行う。
Ｓ３０７においてパケットをメインメモリ１０３およびローカルメモリ１１１へ格納する場合、パケットはデータ移動部１１２により同時にメインメモリ１０３およびローカルメモリ１１１へ転送される。この転送の際、ローカルメモリ１１１の方がより高速にアクセス出来るため、ローカルメモリ１１１への転送が先に終了する。そのため、ローカルメモリ１１１への転送完了直後にパケット復元処理を開始することができる。つまり、パケット復元処理とメインメモリ１０３への転送処理を並列化することが可能である。
【００２５】
（パケットの復元処理）
図４にパケット復元実行フロー図を示す。図４のフローは図１に示す通信処理部１０８のサブＣＰＵ１０９および各部１１２〜１１６によって実現される。各部がソフトウェアである場合、例えば、サブＣＰＵ１０９が、そのプログラムを実行することにより、図４のフローが実現される。
通信装置１０１が、メディアパケットまたはＦＥＣパケットを受信し、ＦＥＣテーブル１１６が更新されると本フローが開始される（Ｓ４０１）。
Ｓ４０２において、サブＣＰＵ１０９は、ＦＥＣパケットを受信（更新）したかを判定する。つまり、サブＣＰＵ１０９は、情報が更新された受信パケットがＦＥＣパケットであるかを判定する。情報が更新された受信パケットがメディアパケットである場合、Ｓ４０３へ進む。情報が更新された受信パケットが、ＦＥＣパケットである場合、Ｓ４０４へ進む。
Ｓ４０３において、サブＣＰＵ１０９は、受信パケットしたメディアパケットが属するグループのＦＥＣパケットを受信しているかを判定する。Ｓ４０３の判定結果がＹｅｓの場合、Ｓ４０４へ進む。Ｓ４０３の判定結果がＮｏの場合、復元処理を開始出来ないため、本フローを終了する（Ｓ４０７）。
【００２６】
Ｓ４０４において、サブＣＰＵ１０９は、ＦＥＣパケットを既に受信しているグループ内について、未受信のパケットが一つだけ存在するかどうかを判定する。本実施形態では、複数のメディアパケットが未受信である場合は、復元処理を実施しない。つまり、Ｓ４０４の判定結果がＮｏの場合は、Ｓ４０７へ進み、本フローを終了する。
未受信のパケットが一つだけの場合は、Ｓ４０５へ進み復元処理を実施する。復元処理は、ＦＥＣ演算部１１５により実施される。復元処理では、ＦＥＣグループ内のＦＥＣパケットおよび受信済の各パケットを読み出しＸＯＲ演算処理を実行する（例えば、図２（ｂ）のように）。本実施形態では、ＦＥＣ演算部１１５は復元処理に必要なパケットを全てローカルメモリ１１１から読み出す。よって、復元処理を高速化することが出来る。復元処理に使用したＦＥＣパケットは保持しておく必要が無くなるため、当該ＦＥＣパケットをローカルメモリ１１１から読み出した後、サブＣＰＵ１０９は、ローカルメモリ１１１内の当該ＦＥＣパケットを格納していたメモリ領域を解放する。ローカルメモリ１１１のメモリ領域の解放は、図５を用いて後述する。
【００２７】
Ｓ４０６において、サブＣＰＵ１０９は、ＦＥＣ演算部１１５が復元したパケットをメインメモリ１０３へ格納する。他のメディアパケットは既にメインメモリ１０３に格納されているので、復元したパケットのみをメインメモリ１０３へ格納すればよい。Ｓ４０６の後、Ｓ４０７へ進み、本フローを終了する。
サブＣＰＵ１０９は、受信したメディアパケットと復元したパケットにより連続したデータが揃うと、メインＣＰＵ１０５が実行する再生を行うアプリケーションへ、当該一連のデータを引き渡す。このアプリケーションは、通信装置がプロジェクタの場合には、プロジェクタによる画像・映像再生のアプリケーションである。上記したように、復元処理において各パケットを全てローカルメモリ１１１から読み出すことにより復元処理が高速化されることで、アプリケーションへのデータの引き渡しまでにかかる時間も短縮される。メインＣＰＵ１０５は、アプリケーションを実行する実行部であると言える。
【００２８】
（ローカルメモリ１１１の解放処理）
図５はローカルメモリ１１１の解放フロー図を示す。図５のフローは図１に示す通信処理部１０８のサブＣＰＵ１０９および各部１１２〜１１６によって実現される。各部がソフトウェアである場合、例えば、サブＣＰＵ１０９が、そのプログラムを実行することにより、図５のフローが実現される。
上記したように、ローカルメモリ１１１には、受信したメディアパケットおよびＦＥＣパケットが格納されていく。本実施形態では、コントローラ１０２内のメモリ容量を抑えるために、復元処理に必要の無いパケットは解放していく。つまり、ローカルメモリ１１１内において、復元処理に必要のないパケットのメモリ領域を解放していく。
通信装置１０１がメディアパケットまたはＦＥＣパケットを受信し、ＦＥＣテーブル１１６が更新されると、本フローが開始される（Ｓ５０１）。
【００２９】
まず、Ｓ５０２において、サブＣＰＵ１０９は、連続して所定数以上のメディアパケットが受信出来ているかを判定する。本実施形態では、図２（ａ）に示されるように、連続する２４個のメディアパケットからＦＥＣパケットが生成されているとする。受信したメディアパケットがＮ番目のメディアパケットであるとすると、Ｓ５０２において、サブＣＰＵ１０９は、Ｎ＋２３番目までのメディアパケットを全て受信出来ているかを判定する。Ｓ５０２の判定結果がＹｅｓの場合、Ｓ５０３へ進む。Ｓ５０２の判定結果がＮｏの場合、Ｓ５０４へ進む。つまり、抜けているメディアパケット（未受信のメディアパケット）がある場合は、Ｓ５０４へ進む。
【００３０】
連続する２４個のメディアパケットを全て受信している場合、先頭のメディアパケット（Ｎ番目のメディアパケット）は復元処理に使用されない。従って、Ｓ５０３に進むと、復元処理に使用されることが無くなったＮ番目のメディアパケットについては、ローカルメモリ１１１の該当するメモリ領域を解放する。解放したメモリ領域には、新たに受信した別のパケットが上書きされ得る状態になる。その後、Ｓ５０５へ進む。なお、残りの２３個のメディアパケットは、次に生成される２４個のメディアパケット（Ｎ＋１からＮ+２４のメディアパケットにより、新たな２４個の組が生成される）の複元処理のために使用される。
Ｓ５０４において、サブＣＰＵ１０９は、未受信（未到着）のメディアパケットの復元処理に使用される可能性があり、所定の時間（時刻）を経過したメディアパケットがローカルメモリ１１１内にあるかを判定する。Ｓ５０４の判定結果がＹｅｓの場合、Ｓ５０６へ進む。Ｓ５０４の判定結果がＮｏの場合、Ｓ５０８に進み、本フローを終了する。
【００３１】
ここでの所定の時間とは、例えば、メディアデータのアプリケーションによる再生時刻（開始時刻）である。復元処理にかかる時間やアプリケーションにメディアデータを渡すまでの時間を考慮し、再生時刻に間に合うようにパケットの復元を開始する必要がある。しかし複数のメディアパケットが未受信の場合は復元処理を開始出来ないまま再生時刻を過ぎてしまうこともある。そのようなメディアパケットについては、復元処理が意味を持たなくなる。従って、Ｓ５０６に進んだ場合、サブＣＰＵ１０９は、ローカルメモリ１１１の該当するメモリ領域を解放する。その後、Ｓ５０５へ進む。
【００３２】
メディアパケットの確認（Ｓ５０２〜５０４、Ｓ５０６）に続き、サブＣＰＵ１０９は、Ｓ５０５において、ＦＥＣパケットの確認を行う。詳細には、サブＣＰＵ１０９は、Ｓ５０３またはＳ５０６において解放済のメモリ領域のメディアパケットを対象としているＦＥＣパケットがローカルメモリ１１１に存在しているかを判定する。Ｓ５０５の判定結果がＹｅｓの場合、Ｓ５０７へ進む。Ｓ５０５の判定結果がＹｅｓになる場合とは、保持する必要の無くなったＦＥＣパケットがローカルメモリ１１１に存在している場合である。Ｓ５０５の判定結果がＮｏの場合、Ｓ５０８に進み本フローを終了する。
Ｓ５０７において、サブＣＰＵ１０９は、保持する必要の無くなったＦＥＣパケットのメモリ領域を解放する。その後、Ｓ５０８に進み、本フローを終了する。
【００３３】
（実施形態の効果）
本実施形態では、ローカルメモリ１１１とＦＥＣ処理部１１４（ＦＥＣ演算部１１５）が、１つの回路（チップ）であるコントローラ１０２に設けられている。ローカルメモリ１１１は、ＦＥＣ演算部１１５からアクセスする場合、コントローラ１０２の外部に設けられたメインメモリ１０３よりも高速アクセス可能である。本実施形態では、受信したメディアパケットとＦＥＣパケットを高速アクセス可能なローカルメモリ１１１に格納して、復元処理の際には、ローカルメモリ１１１にアクセスして必要なパケットを取得するので、復元処理を高速で実施できる。復元処理の高速化が可能となると、復元可能なパケット数を増やすことができる。また、不要になったローカルメモリ１１１のメモリ領域は随時解放するので、コントローラ１０２内のメモリ容量を抑えることができる。さらに、メディアパケットはローカルメモリ１１１だけでなくメインメモリ１０３にも格納するため、復元処理が不要なメディアパケットは速やかにメインＣＰＵが実行するアプリケーションへ渡すことができる。
【００３４】
（変形例）
受信したＦＥＣパケットが対象とするメディアパケットの数が所定数以上である場合、当該ＦＥＣパケットおよび当該ＦＥＣパケット以降に受信した当該ＦＥＣパケットが対象とするメディアパケットは、メインメモリ１０３にのみ記憶してもよい。つまり、このようなＦＥＣパケットの場合、ローカルメモリ１１１のメモリ領域を大きく占有する可能性があるので、ローカルメモリ１１１に記憶しないようにしてもよい。この場合、ＦＥＣパケットが対象とするメディアパケットの個数に応じて、当該ＦＥＣパケットの記憶先を選択することになる。
上記した実施形態では、再生用信号としてメディアパケットを用い、復元用信号としてＦＥＣパケットを用いたが、再生用信号および復元用信号はこれらに限定されない。また、上記実施形態では、メディアパケットおよびＦＥＣパケットはＲＴＰに準拠したパケットであるとしたが、ＲＴＰに準拠しないパケット（信号）であってもよい。その場合、復元処理を行う手段としてＦＥＣ演算部以外の手段を採用してもよい。
【００３５】
上記した実施形態では、メインメモリ１０３の例としてＤＲＡＭを挙げ、ローカルメモリ１１１の例としてＳＲＡＭを挙げたが、メインメモリ１０３とローカルメモリ１１１はこれらに限定されない。メインメモリ１０３よりローカルメモリ１１１の方がアクセス速度が高ければ、ＤＲＡＭおよびＳＲＡＭ以外の記憶手段を採用してよい。
上記した実施形態では、通信Ｉ／Ｆ部１１３は、通信ケーブル１１７を介して通信装置１０１をネットワークに接続するとしたが、通信Ｉ／Ｆ部１１３は、無線で通信装置１０１をネットワークに接続してもよい。
上記した実施形態では、Ｓ３０２の判定は、受信パケットにＦＥＣヘッダが含まれているかに基づいて行ったが、受信パケットのヘッダの内容に基づいて当該判定を行ってもよい。
上記した実施形態では、通信装置１０１の例としてプロジェクタを挙げたが、通信装置１０１は、パソコン、タブレット端末、スマートフォン、携帯電話、音楽再生機器、カメラ等であってもよい。
本発明は、ＲＴＰに準拠したパケット以外の信号を受信する通信装置にも適用することができる。
【００３６】
（その他の実施形態）
上記した実施形態では、通信装置１０１を説明したが、本発明はその他の形態でも具現化（実現）することができる。例えば、本発明は、上述した実施形態の１以上の機能を実現するプログラム（コンピュータプログラム）を、ネットワークまたは記録媒体（記憶媒体）を介して、システムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行することによっても実現可能である。この場合、記録媒体から読み出されたプログラム（プログラムコード）自体が実施形態の機能を実現することになる。また、当該プログラムを記録した記録媒体は本発明を構成することができる。
また、コンピュータが読み出したプログラムを実行することにより、実施形態の機能が実現されるだけでなく、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
【符号の説明】
【００３７】
１０１…通信装置、１０３…メインメモリ、１０５…メインＣＰＵ、１０８…通信処理部、１１１…ローカルメモリ、１１２…データ移動部、１１４…ＦＥＣ処理部、１１５…ＦＥＣ演算部
【図１】
2019047420.tif 000003
【図２】
2019047420.tif 000004
【図３】
2019047420.tif 000005
【図４】
2019047420.tif 000006
【図５】
2019047420.tif 000007