(57)【要約】  本通信装置としてのデータ送信装置１００は、データパケットを生成するＲＴＰデータパケット作成部１１２と、データパケットの並べ替えを行うデータパケット並べ替え処理部１１５と、並べ替えられたデータパケットおよびデータパケットに適用される行列データに基づいて、データパケットに対する冗長パケットを生成するＦＥＣデータ作成部１１８と、を備える。
2013114496.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを生成するデータパケット生成部と、
前記データパケットの並べ替えを行うデータ並べ替え処理部と、
前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成する冗長パケット生成部と、
を備える通信装置。
【請求項２】
請求項１に記載の通信装置であって、更に、
前記行列データを生成する行列データ生成部を備える通信装置。
【請求項３】
請求項１または２に記載の通信装置であって、
前記データ並べ替え処理部は、前記冗長パケットのパケットサイズの総和に基づいて、前記データパケットの並べ替えを行う通信装置。
【請求項４】
請求項３に記載の通信装置であって、
前記データ並べ替え処理部は、前記冗長パケットのパケットサイズの総和が小さくなるよう、前記データパケットの並べ替えを行う通信装置。
【請求項５】
請求項１ないし４のいずれか１項に記載の通信装置であって、
前記データ並べ替え処理部は、前記行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット長が短くなるよう、前記データパケットを並べ替える通信装置。
【請求項６】
請求項１ないし５のいずれか１項に記載の通信装置であって、更に、
前記行列データの行の並べ替えを行う行列並べ替え処理部を備え、
前記冗長パケット生成部は、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記行列並べ替え処理部により並べ替えられた行列データに基づいて、前記冗長パケットを生成する通信装置。
【請求項７】
請求項６に記載の通信装置であって、
前記行列並べ替え処理部は、前記データ並べ替え処理部によるデータパケットの並べ替えの前に、前記行列データの行の並べ替えを行う通信装置。
【請求項８】
請求項６または７に記載の通信装置であって、
前記行列並べ替え処理部は、前記行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット数が少なくなるよう、前記行列データの行を並べ替える通信装置。
【請求項９】
請求項１ないし８のいずれか１項に記載の通信装置であって、更に、
前記データパケットのヘッダであるデータパケットヘッダを生成するデータパケットヘッダ生成部を備え、
前記データパケットヘッダは、前記データ並べ替え処理部により並べ替えられたデータパケットの並べ替え情報を含む通信装置。
【請求項１０】
請求項１ないし８のいずれか１項に記載の通信装置であって、更に、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記データ並べ替え処理部により並べ替えられたデータパケットの並べ替え情報を含む通信装置。
【請求項１１】
請求項９または１０に記載の通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記行列並べ替え処理部により並べ替えられた行列データの並べ替え情報を含む通信装置。
【請求項１２】
請求項９または１０に記載の通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記正常に受信されないロスまたは非正常パケットのパケット長を復元するためのパケット長情報を含む通信装置。
【請求項１３】
データパケットおよび前記データパケットに対する冗長パケットの少なくとも一方を含むパケットである受信パケットを受信する受信部と、
前記受信パケットに含まれるデータパケットの並べ替え情報に基づいて、前記データパケットを並べ替えるデータ並べ替え処理部と、
前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記受信部により受信された冗長パケットの少なくとも一方と、前記データパケットに適用される行列データと、に基づいて、ロスまたは前記受信部により正常に受信されなかった非正常パケットを復元する復元処理部と、
を備える通信装置。
【請求項１４】
請求項１３に記載の通信装置であって、更に、
前記受信パケットに含まれる前記行列データの並べ替え情報に基づいて、前記行列データの行を並べ替える行列並べ替え処理部を備え、
前記復元処理部は、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記受信部により受信された冗長パケットの少なくとも一方と、前記行列並べ替え処理部により並べ替えられた行列データと、に基づいて、ロスまたは前記受信部により正常に受信されなかった非正常パケットを復元する通信装置。
【請求項１５】
請求項１４に記載の通信装置であって、
前記行列並べ替え処理部は、前記データ並べ替え処理部によるデータパケットの並べ替えの前に、前記行列データの行の並べ替えを行う通信装置。
【請求項１６】
データパケットを生成するステップと、
前記データパケットの並べ替えを行うステップと、
並べ替えられた前記データパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成するステップと、
を有する通信方法。
【請求項１７】
データパケットおよび前記データパケットに対する冗長パケットの少なくとも一方を含むパケットである受信パケットを受信するステップと、
前記受信パケットに含まれるデータパケットの並べ替え情報に基づいて、前記データパケットを並べ替えるステップと、
前記並べ替えられたデータパケットおよび前記受信された冗長パケットの少なくとも一方と、前記データパケットに適用される行列データと、に基づいて、ロスまたは正常に受信されなかった非正常パケットを復元するステップと、
を有する通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置および通信方法に関する。特に、データの誤りを訂正するために付加される冗長パケットのデータ量の削減のための技術に関する。
【背景技術】
【０００２】
従来、データ伝送においては、伝送路におけるパケットロスの発生に対して、データを復元する技術が用いられている。すなわち、あらかじめデータ送信側で復元用の冗長パケットを作成し、オリジナルのデータパケットとあわせて送信する。受信側では、パケットロスが発生した場合に、冗長パケットを用いてオリジナルのデータパケットを復元する。これによりデータ伝送の信頼性が高まる。【０００３】
このようなデータパケットの復元処理に関する技術として、ＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ：前方誤り訂正）を用いたＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）ペイロードフォーマットが、ＲＦＣ５１０９に規定されている（例えば、非特許文献１参照）。【０００４】
また、ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）を用いたＦＥＣスキームが、ＲＦＣ５１７０に規定されている（例えば、非特許文献２参照）。なお、ＬＤＰＣはＦＥＣの１つであり、ＲＦＣ５１７０には、行列を用いた演算方法（アルゴリズム）が記述されている。【０００５】
また、Ｈ．２６４形式の映像データが格納されるＲＴＰペイロードフォーマットが、ＲＦＣ６１８４に規定されている（例えば、非特許文献３参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“Ａｎ  ＲＴＰ  Ｐａｙｌｏａｄ  Ｆｏｒｍａｔ  ｆｏｒ  Ｇｅｎｅｒｉｃ  Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ”，ＩＥＴＦ，ＲＦＣ５１０９
【非特許文献２】“Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ  （ＬＤＰＣ）  Ｓｔａｉｒｃａｓｅ  ａｎｄ  Ｔｒｉａｎｇｌｅ  Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  （ＦＥＣ）  Ｓｃｈｅｍｅｓ”，ＩＥＴＦ，ＲＦＣ５１７０
【非特許文献３】“ＲＴＰ  Ｐａｙｌｏａｄ  Ｆｏｒｍａｔ  ｆｏｒ  Ｈ．２６４  Ｖｉｄｅｏ”，ＩＥＴＦ，ＲＦＣ６１８４
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１〜非特許文献３に示された技術では、冗長パケットのデータ量の削減が困難であった。【０００８】
本開示は、上記事情に鑑みてなされたものであって、冗長パケットのデータ量を削減可能な通信装置および通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本開示の通信装置は、データパケットを生成するデータパケット生成部と、前記データパケットの並べ替えを行う並べ替え処理部と、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成する冗長パケット生成部と、を備える。
【発明の効果】
【００１０】
本開示によれば、冗長パケットのデータ量を削減可能である。
【図面の簡単な説明】
【００１１】
【図１】複数に分割されたオリジナルのデータパケットの構成例を示す模式図
【図２】冗長パケットの作成に用いる行列の構成例を示す模式図
【図３】図２に示した行列の説明に用いる各要素の番号および変数を示す模式図
【図４】従来の方法で図２に示した行列の１行目を用いて冗長パケット（ＦＥＣ１）を作成することを示す模式図
【図５】従来の方法で図２に示した行列の２行目を用いて冗長パケット（ＦＥＣ２）を作成することを示す模式図
【図６】送信側から受信側に送られるパケットを示す模式図
【図７】従来の方法で図２に示した行列の１行目を用いて、受信に失敗したデータパケットを復元することを示す模式図
【図８】本開示の第１の実施形態におけるデータ送信装置の構成例を示すブロック図
【図９】本開示の第１の実施形態におけるデータパケットの並べ替え処理を説明するための模式図
【図１０】図９のＳｔｅｐ２に関する行列とデータパケットとの対応関係を示す模式図
【図１１】本開示の第１の実施形態における冗長パケットを作成する際のデータパケットと行列との関係の具体例を示す模式図
【図１２】本開示の第１の実施形態におけるデータパケットの並べ替え処理の有無に対する冗長パケットの長さの変化例を示す模式図
【図１３】本開示の第１の実施形態におけるＲＴＰヘッダのフォーマットの一例を示す模式図
【図１４】本開示の第１の実施形態におけるＲＴＰヘッダの拡張ヘッダのフォーマットの一例を示す模式図
【図１５】本開示の第１の実施形態におけるＦＥＣヘッダのフォーマットの具体例を示す模式図
【図１６】本開示の第１の実施形態におけるデータ受信装置の構成例を示すブロック図
【図１７】本開示の第１の実施形態におけるパケットの復元処理の具体例を示す模式図
【図１８】本開示の第１の実施形態におけるデータパケットの並べ替え処理の有無によるデータ削減効果の違いに関する第１のシミュレーションの結果を示す模式図
【図１９】本開示の第１の実施形態におけるデータパケットの並べ替え処理の有無によるデータ削減効果の違いに関する第２のシミュレーションの結果を示す模式図
【図２０】本開示の第１の実施形態におけるデータ送信装置による主要な動作例を示すフローチャート
【図２１】本開示の第１の実施形態におけるデータ受信装置による主要な動作例を示すフローチャート
【図２２】本開示の第２の実施形態におけるデータ送信装置の構成例を示すブロック図
【図２３】本開示の第２の実施形態におけるＦＥＣヘッダのフォーマットの第１例を示す模式図
【図２４】本開示の第２の実施形態におけるＦＥＣヘッダのフォーマットの第２例を示す模式図
【図２５】本開示の第２の実施形態におけるデータ受信装置の構成例を示すブロック図
【図２６】本開示の第２の実施形態におけるデータ送信装置による主要な動作例を示すフローチャート
【図２７】本開示の第３の実施形態におけるデータ送信装置の構成例を示すブロック図
【図２８】本開示の第３の実施形態におけるデータ送信装置において行列の並べ替え処理が実施される行列の状態遷移の具体例を示す模式図
【図２９】本開示の第３の実施形態におけるＦＥＣヘッダのフォーマットの具体例を示す模式図
【図３０】本開示の第３の実施形態におけるデータ受信装置の構成例を示すブロック図
【図３１】本開示の第３の実施形態におけるデータパケットの並べ替え処理および行列の並べ替え処理の有無によるデータ削減効果の違いに関するシミュレーションの結果を示す模式図
【図３２】本開示の第３の実施形態におけるデータ送信装置による主要な動作例を示すフローチャート
【図３３】本開示の第３の実施形態におけるデータ受信装置による主要な動作例を示すフローチャート
【図３４】本開示の第４の実施形態におけるデータ送信装置の構成例を示すブロック図
【図３５】本開示の第４の実施形態におけるＦＥＣヘッダのフォーマットの具体例を示す模式図
【図３６】本開示の第４の実施形態におけるデータ受信装置の構成例を示すブロック図
【図３７】本開示の第４の実施形態におけるデータ送信装置による主要な動作例を示すフローチャート
【図３８】本開示の第１の実施形態におけるデータパケットの並べ替え処理の詳細な具体例を示すフローチャート
【図３９】本開示の第３の実施形態における行列の並べ替え処理の詳細な具体例を示すフローチャート
【発明を実施するための形態】
【００１２】
本開示の実施形態について、図面を参照しながら以下に説明する。
【００１３】
（本開示の一形態を得るに至った経緯）
【００１４】
非特許文献１〜非特許文献３に基づく技術の概要について、図１〜図７を用いて以下に簡単に説明する。
【００１５】
図１は送信されるオリジナルのデータパケットの例を示している。Ｄａｔａ１,Ｄａｔａ２,Ｄａｔａ３,Ｄａｔａ４,Ｄａｔａ５,Ｄａｔａ６の６個のデータパケットがある。図１では、各パケットのデータ長が一定ではない場合を想定している。このオリジナルのデータパケットを用いて、冗長パケットを作成する。
【００１６】
図２は、冗長パケットを作成するために用いる行列を示している。行列の各要素は「１」または「０」のどちらかである。この行列を生成するためのルールが、非特許文献３に記載されている。送信側と受信側が同じ行列を持つこと、または生成することで、冗長パケットを用いてオリジナルのデータパケットを復元できる。
【００１７】
図３は、この行列の各要素および構成を説明するための図である。図３に示した行列について、Ａ群とＢ群の行列に分けて説明する。Ｂ群の行列（Ｂ１１、Ｂ１２、・・・、Ｂ６５、Ｂ６６）は、行数と列数の等しい正方行列である。行方向位置を表す変数ｘと列方向位置を表す変数ｙとを用いて、行列の各要素をＢｘｙと表記する場合、図２に示すように、ｘ＝ｙ,ｘ＝ｙ＋１の関係の各要素は１であり、それ以外の要素は０である。
【００１８】
Ａ群の行列（Ａ１１、Ａ１２、・・・、Ａ６５、Ａ６６）は、行数が（Ｎ−ｋ）、列数がｋである。ｋの値はオリジナルのデータパケットの数に等しい。図２の場合は（ｋ＝６）である。Ｎの値は生成する冗長パケットの数に依存する。
【００１９】
図２では、冗長パケットの数をオリジナルのデータパケットと同じ数にした場合を想定しており、（Ｎ＝１２）である。冗長パケットの数は（Ｎ−ｋ）で表され、図２の場合は（Ｎ−ｋ＝６）である。
【００２０】
次に、従来の冗長パケットの作成方法を図４および図５を用いて説明する。
図４では、図２に示す行列の１行目を使って、冗長パケット（ＦＥＣ１）を作成する。Ａ群の行列の各要素Ａｘｙ（ｘ：行方向位置を表す変数，ｙ：列方向位置を表す変数）は、冗長パケットを作成するために使用するオリジナルのデータパケットの識別に用いる情報である。Ａ群の行列の列とオリジナルのデータパケットとが１対１に対応する。
【００２１】
Ａ群の行列の１行目では、Ａ１１，Ａ１３，Ａ１５の各要素が「１」であることから、１列目、３列目、５列目に対応するＤａｔａ１，Ｄａｔａ３，Ｄａｔａ５を用いて冗長パケットを作成する。作成される冗長パケットは、Ｂ群の行列の列に対応する。図２では、要素Ｂ１１が「１」であることから、この行列の１行目から、冗長パケットの１番目をＦＥＣ１として作成する。
【００２２】
ＦＥＣ１のデータ長は、図１において一番データ長の長いＤａｔａ１と同じ長さになる。Ｄａｔａ１，Ｄａｔａ３，Ｄａｔａ５の各データパケットにおいて、同じ位置にあるビットをＸＯＲ（排他的論理和）演算する。その演算結果がＦＥＣ１のデータとなる。
【００２３】
図４の例では、Ｄａｔａ１，Ｄａｔａ３，Ｄａｔａ５はデータ長が互いに異なっている。処理するデータの長さが異なる場合には、データ長を揃えるため、短いデータをゼロパディング（０  ｐａｄｄｉｎｇ）し、一番長いデータ長にそろえてから演算する。つまり、データの無い位置の各ビットは「０」とみなして、ＸＯＲ演算する。
【００２４】
次に、２番目の冗長パケットＦＥＣ２の作成方法を、図５を用いて説明する。
ＦＥＣ２の作成を行う際には、図２の行列の２行目を用いる。この場合、行列のＡ２３，Ａ２４，Ａ２５，Ｂ２１の各要素が「１」であるので、３つのデータパケットＤａｔａ３，Ｄａｔａ４，Ｄａｔａ５、および冗長パケットＦＥＣ１を用いて、ＦＥＣ２の冗長パケットを作成する。
【００２５】
ＦＥＣ２のデータ長は、Ｄａｔａ３，Ｄａｔａ４，Ｄａｔａ５，ＦＥＣ１の中で一番データ長の長いパケットと同じになる。図５の例では、ＦＥＣ１のデータ長が一番長いため、ＦＥＣ２のデータ長はＦＥＣ１と同じになる。
【００２６】
ＦＥＣ２のデータについては、Ｄａｔａ３，Ｄａｔａ４，Ｄａｔａ５，ＦＥＣ１の同じ位置にあるビットをＸＯＲ演算し、作成する。この場合、Ｄａｔａ３，Ｄａｔａ４，Ｄａｔａ５はＦＥＣ１よりデータ長が短いため、データの存在しない位置の各ビットを「０」として、ＸＯＲ演算する。
【００２７】
図２に示した行列は行の数が６である。この各行に対して、上述の処理（図４，図５の処理）と同様の処理をそれぞれ行うことにより、６個の冗長パケット（ＦＥＣ１,ＦＥＣ２,ＦＥＣ３,ＦＥＣ４,ＦＥＣ５,ＦＥＣ６）を作成する。
【００２８】
図６は、送信側の通信装置（以下、単に送信側という）から受信側の通信装置（以下、単に送信側という）に向けたパケットの送信の様子を示している。図６では、オリジナルのデータパケット（Ｄａｔａ１,Ｄａｔａ２,Ｄａｔａ３,Ｄａｔａ４,Ｄａｔａ５,Ｄａｔａ６）と冗長パケット（ＦＥＣ１,ＦＥＣ２,ＦＥＣ３,ＦＥＣ４,ＦＥＣ５,ＦＥＣ６）とが順番に送信される。
【００２９】
受信側は、オリジナルのデータパケットの中で受信できないデータパケットが存在する場合に、冗長パケットを利用して、受信できなかったデータパケットを復元する。従って、受信側はオリジナルのデータパケットを全て受信できているかどうかを確認する。データパケットの受信確認のために、受信側は送信側と同じ行列を生成する。
【００３０】
オリジナルのデータパケットを受信できなかった場合として、Ｄａｔａ３だけを受信できなかった場合を例にして説明する。図２では、Ａ群の行列の３列目が「１」であるものは、Ａ１３，Ａ２３，Ａ３３の各要素である。このため、行列の１行目，２行目，３行目のいずれか一つを用いて、Ｄａｔａ３を復元できる。ここでは、１行目を用いて復元する例を、図７を用いて説明する。
【００３１】
図２の行列の１行目は、冗長パケットの作成時には、Ｄａｔａ１，Ｄａｔａ３，Ｄａｔａ５を用いてＸＯＲ演算し、ＦＥＣ１を作成したことを示している。従って、逆に、Ｄａｔａ１，Ｄａｔａ５，ＦＥＣ１をＸＯＲ演算すれば、Ｄａｔａ３のデータを復元できる。
【００３２】
なお、Ｄａｔａ３を復元するにあたって必要となるＤａｔａ３のデータ長の情報は、冗長パケットのＦＥＣ１に付加されている情報「Ｌｅｎｇｔｈ  Ｒｅｃｏｖｅｒｙ」を用いて算出する。「Ｌｅｎｇｔｈ  Ｒｅｃｏｖｅｒｙ」については非特許文献1に記載されているためここでは簡単な説明にとどめる。
【００３３】
図７の例では、送信側がＤａｔａ１、Ｄａｔａ３、Ｄａｔａ５のデータ長の値をＸＯＲ演算して「Ｌｅｎｇｔｈ  Ｒｅｃｏｖｅｒｙ」の値を算出し、ＦＥＣ１のヘッダに付加する。受信側では、逆に「Ｌｅｎｇｔｈ  Ｒｅｃｏｖｅｒｙ」の値と、Ｄａｔａ１、Ｄａｔａ５のデータ長の情報をＸＯＲ演算し、Ｄａｔａ３のデータ長を算出する。
【００３４】
しかしながら、上述の方法によって通信を行う場合、送信側においてデータパケットに対する冗長パケットを作成して送信し、受信側においてデータパケットの復元を行うと、オリジナルのデータパケットと共に冗長パケットも伝送することになる。
【００３５】
冗長パケットのデータ量が多い場合には、伝送すべき全体のデータ量が増えてしまう。上述の方法では、作成される冗長パケットのパケット長は、オリジナルの複数のデータパケットの中で最長のパケットの長さによって決定される。
【００３６】
例えば、映像データを伝送する場合には、長さが一定でない多数のデータパケットを作成し、これらのデータパケットの中に分割された映像データを格納する。従って、伝送の際に作成される冗長パケット（例えばＦＥＣパケット）の長さは異なることがある。そのために、冗長パケット生成時および復元時のデータ演算量が多くなったり、通信負荷が大きくなったりすることがある。
【００３７】
以下では、冗長パケットのデータ量を削減可能な通信装置および通信方法について説明する。
【００３８】
本実施形態では、データを伝送するためのプロトコルとして、音声や映像をストリーミング再生するためのＲＴＰプロトコルを採用することを主に想定している。ＲＴＰプロトコルのデータパケットは、ＲＴＰデータパケットとも記述する。また、冗長パケットを用いて前方誤り訂正（ＦＥＣ）を行うので、この冗長パケットをＦＥＣパケットとも記述する。ＲＴＰデータパケット以外のデータパケットや、ＦＥＣパケット以外の冗長パケットに対しても、同様に本開示を適用できる。
【００３９】
本実施形態の通信装置は、電話機、テレビ信号の送信機および受信機、ラジオ信号の送信機および受信機、有線放送機器、携帯電話、スマートフォン、タブレット、パソコン、通信機能付きカメラ、通信機能付きビデオカメラ等、様々なデータ通信機器に適用できる。
【００４０】
（第１の実施形態）
本実施形態の通信システムについて、図８〜図２１、および図３８を参照しながら以下に説明する。この通信システムでは、データ送信装置１００とデータ受信装置１５０との間で、所定の通信路を介してデータが通信される。データ送信装置１００およびデータ受信装置１５０は、通信装置の一例である。
【００４１】
（送信側）
データ送信装置１００について説明する。
図８は本開示の第１の実施形態におけるデータ送信装置１００の構成例を示すブロック図である。
【００４２】
図８に示すように、データ送信装置１００は、映像エンコーダ部１１１、ＲＴＰデータパケット作成部１１２、通信路ロス率算出部１１３、行列生成部１１４、データパケット並べ替え処理部１１５、ＲＴＰヘッダ修正部１１６、送信ＲＴＰパケット作成部１１７、ＦＥＣデータ作成部１１８、ＦＥＣヘッダ作成部１１９、送信ＦＥＣパケット作成部１２０、およびパケット送出部１２１を備える。
【００４３】
映像エンコーダ部１１１は、ビデオカメラ等から動画像または静止画像等の映像入力データを受け取り、Ｈ.２６４等で規定されているアルゴリズムに従ってエンコード処理を行う。映像エンコーダ部１１１は、エンコード処理後の映像コーデックデータをＲＴＰデータパケット作成部１１２に渡す。
【００４４】
ＲＴＰデータパケット作成部１１２は、映像エンコーダ部１１１から映像コーデックデータを受け取り、ＲＴＰデータパケットを作成する。例えば、１つのピクチャデータをエンコードして複数個のデータに分割し、その結果を複数個のＲＴＰデータパケットとすることが想定される。
【００４５】
図１の例では、Ｈ.２６４に従ってエンコードし、スライス境界でデータを分割して得られた６個のデータパケットを示している。
【００４６】
また、ＲＴＰデータパケット作成部１１２は、行列生成部１１４に、作成されたデータパケットのパケット数を通知する。この値は、前述の説明におけるｋの値に相当する。また、ＲＴＰデータパケット作成部１１２は、データパケット並べ替え処理部１１５に、パケット数「ｋ」と各データパケットのパケット長を通知する。
【００４７】
また、ＲＴＰデータパケット作成部１１２は、ＲＴＰヘッダを作成し、ＲＴＰヘッダの情報をＲＴＰヘッダ修正部１１６およびＦＥＣヘッダ作成部１１９に通知する。ＲＴＰヘッダ情報は、ＲＴＰデータパケットに付加されるヘッダの情報である。
【００４８】
また、ＲＴＰデータパケット作成部１１２は、送信ＲＴＰパケット作成部１１７にＲＴＰデータパケットを通知する。なお、ＲＴＰデータパケットを通知する代わりに、ＲＴＰデータパケットが保持されている場所を表すポインタ情報を通知しても良い。
【００４９】
通信路ロス率算出部１１３は、通信路のパケットロス（単にロスともいう）率を算出する。具体的には、データ受信装置１５０からロス率の情報を受信する。また、例えばデータ受信装置１５０からの再送要求に基づいて、通信路ロス率算出部１１３がパケットロス情報を自ら算出してもよい。
【００５０】
行列生成部１１４は、ＲＴＰデータパケット作成部１１２からのパケット数の情報および通信路ロス率算出部１１３からのロス率の情報を基に、冗長パケットを作成するための行列を生成する。行列生成部１１４における行列生成のアルゴリズムについては、公知の方法（例えば、非特許文献２に記載されている方法）を採用できる。行列生成部１１４は、次に説明する方法で行列を生成する。
【００５１】
Ｎの値、ｋの値、Ｓｅｅｄの値を送信側と受信側で共有する方法については、様々な方法が考えられる。例えば、冗長パケットのヘッダ情報（ＦＥＣヘッダ情報）として付加する方法がある。またはあらかじめ決めておく方法でもよい。
【００５２】
行列を生成するためには、Ｎの値、ｋの値、Ｓｅｅｄの値を必要とする。オリジナルのデータパケットの数を示すｋの値については、ＲＴＰデータパケット作成部１１２からのデータパケット数ｋを用いる。
【００５３】
行列生成部１１４は、冗長パケット数とデータパケット数とを含めた総パケット数Ｎを、通信路ロス率算出部１１３からのロス率に基づいて算出する。ロス率が高い場合には総パケット数Ｎを大きくすることで、データ受信装置１５０での復元率を高めることができる。ロス率が低い場合には総パケット数Ｎを小さくできる。
【００５４】
冗長パケットの数は「Ｎ−ｋ」で示され、Ｎ≧ｋを満たす。また、総パケット数Ｎはデータ送信装置１００で決定され、データ受信装置１５０に通知される。
【００５５】
Ｓｅｅｄの値は、固定でもよいし、動的に変更されてもよい。行列生成部１１４は、例えば復元率が高くなるようにＳｅｅｄを調整してもよい。Ｓｅｅｄを動的に変更する場合には、総パケット数Ｎと同様、Ｓｅｅｄの値もデータ受信装置１５０に通知される。
【００５６】
行列生成部１１４は、生成された行列データを、データパケット並べ替え処理部１１５およびＦＥＣデータ作成部１１８に通知する。なお、行列データを通知する代わりに、行列データを保存している位置を表すポインタ情報を通知しても良い。
【００５７】
また、行列生成部１１４は、ＦＥＣヘッダ作成部１１９に行列情報を通知する。行列情報には、総パケット数Ｎ、データパケット数ｋ、Ｓｅｅｄの各値が含まれる。
【００５８】
データパケット並べ替え処理部１１５は、行列生成部１１４から行列データの情報を受け取る。また、ＲＴＰデータパケット作成部１１２から、データパケット数ｋと各パケットのパケット長の情報を受け取る。
【００５９】
データパケット並べ替え処理部１１５は、冗長パケットのパケット長（パケットサイズ）の総和に基づいてＲＴＰデータパケットを並べ替えるデータパケットの並べ替え処理を行う。具体的には、冗長パケットのパケット長（パケットサイズ）の総和が小さな値になるように、データパケットの順番を並べ替える。
【００６０】
データパケットの並べ替えのための探索方法については、ヒューリスティックな方法であってもよい。つまり、データパケット並べ替え処理部１１５は、作成される冗長パケットのデータ長をすべての場合に対して算出し、その中からデータ長の総和が一番小さくなるデータパケットの並べる順番を見つけ出してもよい。データパケットの並べ替えに関する具体例については後述する。
【００６１】
データパケット並べ替え処理部１１５は、データパケットの並べ替え処理を実施した結果を含むデータパケットの並べ替え情報を、ＦＥＣデータ作成部１１８およびＲＴＰヘッダ修正部１１６に通知する。
【００６２】
ＦＥＣデータ作成部１１８は、行列データ、ＲＴＰデータパケット、およびデータパケットの並べ替え情報に基づいて、冗長パケット（ＦＥＣパケット）を作成する。また、冗長パケットを作成するために、すでに作成した冗長パケットを利用する場合がある。その場合には、送信ＦＥＣパケット作成部１２０から冗長パケットを受け取り、新たに冗長パケットを作成する。
【００６３】
また、ＦＥＣデータ作成部１１８は、冗長パケットを作成するとき、あわせて「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を算出する。「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の算出方法は、例えば非特許文献１に記載されている。「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」は、パケットロスしたパケットのパケット長を復元するための情報である。つまり、ロスまたは正常に受信されない非正常パケットのパケット長を復元するためのパケット長情報の１つである。
【００６４】
なお、非正常パケットとは、伝送中にロスしたパケットおよび伝送中にデータ誤りを生じたパケットを指す。伝送中にデータ誤りを生じたパケットは、受信側で誤りが発生したことが検出され、誤りを修正できない場合には受信側では伝送中にロスしたパケットと同等に扱われる。
【００６５】
ＦＥＣデータ作成部１１８は、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」を、冗長パケットを作成するパケットの各パケット長の値をＸＯＲ演算処理することにより算出される。
【００６６】
ＦＥＣデータ作成部１１８は、作成した冗長パケットのデータ（冗長パケットデータ）、「Ｌｅｎｇｔｈ  Ｒｅｃｏｖｅｒｙ」の値、および何番目のＦＥＣパケットであるかを示す情報を、送信ＦＥＣパケット作成部１２０に通知する。これらの通知は、保存している先を示すポインタ情報であってもよい。なお、何番目のＦＥＣパケットであるかを示す情報は、図１５の「ＦＥＣ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」に相当する。
【００６７】
ＲＴＰヘッダ修正部１１６は、ＲＴＰデータパケット作成部１１２により作成されたＲＴＰヘッダ情報と、データパケット並べ替え処理部１１５が生成したデータパケットの並べ替え情報を用いて、ＲＴＰヘッダ情報を修正する。この修正されたＲＴＰヘッダ情報を用いることによって、データ受信装置１５０は、パケットロスしたデータパケットを復元できる。
【００６８】
送信ＲＴＰパケット作成部１１７は、ＲＴＰデータパケット作成部１１２からＲＴＰデータパケットを受け取り、ＲＴＰヘッダ修正部１１６から修正されたＲＴＰヘッダ情報（修正ＲＴＰヘッダ情報）を受け取る。また、送信ＲＴＰパケット作成部１１７は、ＲＴＰデータパケットに修正ＲＴＰヘッダ情報が付加されたＲＴＰデータパケットを作成する。
【００６９】
送信ＲＴＰパケット作成部１１７は、作成されたＲＴＰデータパケットをＦＥＣデータ作成部１１８およびパケット送出部１２１に渡す。このとき、ＲＴＰデータパケット自体を渡してもよいが、該当するデータが保持されている位置を示すポインタを渡しても良い。メモリ上のデータを読み書きする処理は時間を要するため、ポインタ操作によって処理するほうが効率的に処理できる。
【００７０】
ＦＥＣヘッダ作成部１１９は、行列生成部１１４から行列情報を受け取り、ＲＴＰデータパケット作成部１１２からＲＴＰヘッダ情報を受け取り、冗長パケットのヘッダ（ＦＥＣヘッダ）を生成する。ＲＴＰヘッダ情報は、ＲＴＰヘッダの順序を識別するためのｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ（図１３参照）を含む。ＦＥＣヘッダ作成部１１９は、作成されたＦＥＣヘッダ情報を、送信ＦＥＣパケット作成部１２０に渡す。なお、ＦＥＣヘッダ情報の代わりに、ＦＥＣヘッダ情報のポインタ情報を渡してもよい。
【００７１】
送信ＦＥＣパケット作成部１２０は、冗長パケットのデータ、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値、および「ＦＥＣ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」の値を、ＦＥＣデータ作成部１１８から受け取る。また、送信ＦＥＣパケット作成部１２０は、ＦＥＣヘッダ情報をＦＥＣヘッダ作成部１１９から受け取る。
【００７２】
送信ＦＥＣパケット作成部１２０は、冗長パケットのデータ、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値、「ＦＥＣ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」の値、およびＦＥＣヘッダ情報を用いて、冗長パケットを作成する。つまり、送信ＦＥＣパケット作成部１２０は、冗長パケット（ＦＥＣパケット）のデータにＦＥＣヘッダ情報が付加された冗長パケット（ＦＥＣパケット）を作成する。
【００７３】
送信ＦＥＣパケット作成部１２０は、作成された冗長パケットをパケット送出部１２１に渡す。なお、冗長パケット自体を渡しても良いが、代わりに冗長パケットの保持されている位置を示すポインタ情報を渡しても良い。
【００７４】
また、送信ＦＥＣパケット作成部１２０により作成した冗長パケットを用いて、さらに冗長パケットを生成する場合がある。その場合には送信ＦＥＣパケット作成部１２０からＦＥＣデータ作成部１１８に冗長パケットのデータを渡す。この受け渡しについては、作成した冗長パケットのデータを保存している位置を表すポインタ情報を渡してもよい。
【００７５】
パケット送出部１２１は、送信ＲＴＰパケット作成部１１７で作成したＲＴＰデータパケットおよび送信ＦＥＣパケット作成部１２０により作成した冗長パケットを通信路へ送出する。
【００７６】
次に、データパケット並べ替え処理部１１５によるデータパケット並べ替え処理の一例について、図９および図１０を用いて説明する。
【００７７】
まず、Ｓｔｅｐ１のように、データパケット並べ替え処理部１１５は、データパケットをデータ長の短い順番に並べる。
【００７８】
続いて、Ｓｔｅｐ２のように、データパケット並べ替え処理部１１５は、行列の要素にあわせて並べ替え処理を行う。図３に示したＡ群の行列の要素Ａｘｙの値を用いて説明する。データパケット並べ替え処理部１１５は、要素Ａｘｙが「１」となるときの各ｙの値に対するｘの最小値を探索する。
【００７９】
なお、行列の各列には必ず「１」となる要素が存在する。パケットロスが発生したときに復元するためには、冗長パケットを作成する際にＸＯＲ演算処理のデータとして使用する必要があるためである。仮に、ある列に「Ａｘｙ＝１」となる要素が存在しない場合には、その列に割り当てられるデータパケットはロスすると復元できない。
【００８０】
続いて、データパケット並べ替え処理部１１５は、探索された最小値のｘの値が小さい順番になるようにＡｘｙを並べ、それぞれに対応する列に、Ｓｔｅｐ１で小さい順に並べたデータパケットを割り当てる。
【００８１】
具体例を用いて説明する。図９は、入力されるデータパケット群ＰＳ１０が図１と同じデータパケット（Ｄａｔａ１〜Ｄａｔａ６）の順番である場合の例を示している。図９では、Ｓｔｅｐ１においてデータパケット群ＰＳ１０をデータ長が小さい順番に並べている。Ｓｔｅｐ１では同じデータ長の場合には、元の順番が先のものを前（図９における上側）に並べる。
【００８２】
Ｓｔｅｐ１の結果として出力されるデータパケット群ＰＳ１１の順番は、（Ｄａｔａ２,Ｄａｔａ４,Ｄａｔａ６,Ｄａｔａ５,Ｄａｔａ３,Ｄａｔａ１）である。
【００８３】
次に、冗長パケット作成用の行列の構成および行列の各要素が図２および図３と同じ場合を想定し、図９のＳｔｅｐ２の処理を詳細に説明する。
【００８４】
Ｓｔｅｐ２では、データパケット並べ替え処理部１１５は、要素Ａｘｙが「１」となるときの各ｙの値に対するｘの最小値を探す。行列の１列目（ｙ＝１）のときはＡ１１が最小（ｘ＝１）である。同様に、Ａ４２，Ａ１３，Ａ２４，Ａ１５，Ａ３６が、行列の２列目，３列目，４列目，５列目，６列目の最小の要素である。
【００８５】
これらの要素をｘの値が小さい順番に並べると、Ａ１１，Ａ１３，Ａ１５，Ａ２４，Ａ３６，Ａ４２の順になる。データパケット並べ替え処理部１１５は、各要素（Ａ１１，Ａ１３，Ａ１５，Ａ２４，Ａ３６，Ａ４２）と、Ｓｔｅｐ１において小さい順番に並べたデータパケット群ＰＳ１１と、を対応付けする。
【００８６】
つまり、図１０に示すように、（Ａ１１, Ｄａｔａ２），（Ａ１３,Ｄａｔａ４）、（Ａ１５,Ｄａｔａ６）,（Ａ２４,Ｄａｔａ５）,（Ａ３６,Ｄａｔａ３）、（Ａ４２,Ｄａｔａ１）の組み合わせになる。この組み合わせを列の順番（yの小さい順番）に並べなおすと、（Ａ１１,Ｄａｔａ２）,（Ａ４２,Ｄａｔａ１）,（Ａ１３,Ｄａｔａ４）,（Ａ２４,Ｄａｔａ５）,（Ａ１５,Ｄａｔａ６）,（Ａ３６,Ｄａｔａ３）の順になる。
【００８７】
つまり、Ｓｔｅｐ２における並べ替えによって、図９に示すデータパケット群Ｐ１２のように、Ｄａｔａ２,Ｄａｔａ１,Ｄａｔａ４,Ｄａｔａ５,Ｄａｔａ６,Ｄａｔａ３の順番になる。
【００８８】
図１０は、データパケット並べ替え処理のＳｔｅｐ２を説明するための図である。データ長の短い順に並べたデータパケット群ＰＳ１１が、図１０中Ｄａｔａ２,Ｄａｔａ４,Ｄａｔａ６,Ｄａｔａ５,Ｄａｔａ３,Ｄａｔａ１である。行列の上位の行から順番に要素が「１」である列を探し、データ長の短いデータを割り当てていく。
【００８９】
具体的には、Ａ１１が「１」であるため、Ｄａｔａ２を１列目に割り当てる。続いて、Ａ１２は「０」のため次に進み、Ａ１３が「１」であるため、Ｄａｔａ４を３列目に割り当てる。続いて、Ａ１４は「０」のため次に進み、Ａ１５が「１」であるため、Ｄａｔａ６を５列目に割り当てる。続いて、Ａ１６は「０」のため次に進み、行列Ａｘｙの１行目は最後まで確認したため、２行目に進む。
【００９０】
２行目では、Ａ２４が「１」であるため、Ｄａｔａ５を４列目に割り当てる。Ａ２３およびＡ２５は「１」であるが、１行目がすでに「１」であるためにデータは割り当てない。
【００９１】
続いて、同様の処理により未割当の列のなかで要素が「１」である列を探索し、Ａ３６が「１」であるため、Ｄａｔａ３を６列目に割り当てる。最後にＡ４２が「１」であるため、Ｄａｔａ１を２列目に割り当てる。
【００９２】
各列に割り当てたデータを列の順番に並べなおすと、Ｄａｔａ２，Ｄａｔａ１，Ｄａｔａ４，Ｄａｔａ５，Ｄａｔａ６，Ｄａｔａ３の順番、つまり図９のデータパケット群ＰＳ１２の順番に並ぶ。
【００９３】
次に、ＦＥＣデータ作成部１１８による冗長パケットの作成処理について説明する。
【００９４】
図１１は、行列とこの行列の各列に割り当てられたデータパケット、さらに行列の１行目を用いて作成される冗長パケットＦＥＣ１の対応関係を示す。図１１の例では、データパケット並べ替え処理の結果（図９のＰＳ１２の順番）から冗長パケットを作成する場合を想定しているので、行列の各列に対応するデータパケットの並び順が、図４の例とは異なっている。図１１の行列は、図２に示した行列と同じである。
【００９５】
行列の１行目を用いた処理については、行列の内容が「１」の各要素に対応する各データパケットＤａｔａ２，Ｄａｔａ４，Ｄａｔａ６を用いて、ＸＯＲ処理を実施する。この結果を用いて、１番目の冗長パケット（ＦＥＣ１）を作成する。図１１の結果を図４の結果と比較すると、冗長パケット（FEC 1）のデータ長を短くできている。データパケットの並べ替えを行わずに冗長パケットを作成すると、図４のように、パケット長の長いＤａｔａ１，Ｄａｔａ３，Ｄａｔａ５から作成されるため、冗長パケットのデータ長も長くなるためである。
【００９６】
図１２は、データパケット並べ替え処理を実施した場合と、データパケット並べ替えを行わなかった場合の冗長パケットのデータ長の比較結果を示す。冗長パケットを作成する行列については、図２と同じ行列を用いている。
【００９７】
図１２を参照すると、データパケットの並べ替え処理により冗長パケット（ＦＥＣ１，ＦＥＣ２,ＦＥＣ３）のデータ長をそれぞれ８７％,７５％,６３％削減でき、６パケットをあわせた総データ量での比較では３８％削減できる。このように、冗長パケットの作成前にデータパケット並べ替え処理を実施することにより、冗長パケットのデータ量を効果的に削減できる。
【００９８】
次に、各パケットのヘッダについて説明する。
図１５はＦＥＣヘッダのフォーマットの一例を示す図である。なお、パケットのヘッダは、パケットの管理に必要な各種の情報を保持する領域を表し、一般的にはパケット本体の先頭部分に付加されてパケット本体と一体化されて伝送される。
【００９９】
ＦＥＣヘッダには、そのパケットが冗長パケットであることを示す情報が含まれる。また、ヘッダ長の情報が含まれる。また、「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の値が含まれる。「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の値は、何番目の冗長パケットであるかを示す情報である。「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の値は、ＦＥＣデータ作成部１１８により決定され、送信ＦＥＣパケット作成部１２０によりヘッダに割り当てられる。
【０１００】
また、ＦＥＣヘッダには、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値が含まれる。「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値は、冗長パケットを作成する際に使用したデータパケットおよび冗長パケットのパケット長の値がＸＯＲ演算された値である。「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値は、ＦＥＣデータ作成部１１８により算出され、送信ＦＥＣパケット作成部１２０によりヘッダに割り当てられる。
【０１０１】
また、ＦＥＣヘッダには、「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」、ｋの値、Ｎの値、Ｓｅｅｄの値が含まれる。これらの値としては、ＦＥＣヘッダ作成部１１９が受け取った各情報がそれぞれヘッダに割り当てられる。
【０１０２】
なお、「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の割り当てを、送信ＦＥＣパケット作成部１２０により行うように実装することも可能である。この場合、ＲＴＰデータパケット作成部１１２からＦＥＣヘッダ作成部１１９へのＲＴＰヘッダ情報の受け渡しを省略できる。
【０１０３】
図１３はＲＴＰヘッダのフォーマットの一例を示す図である。このフォーマットは、「ＩＥＴＦ  ＲＦＣ３５５０“ＲＴＰ：Ａ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｒｅａｌ−Ｔｉｍｅ  Ａｐｐｌｉｃａｔｉｏｎｓ”」に規定されている。
【０１０４】
データ受信装置１５０は、「ｔｉｍｅｓｔａｍｐ」と「ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」とを確認する。１つのピクチャから作成されるパケットは、同じ「ｔｉｍｅｓｔａｍｐ」の値が設定される。また、「Ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」には、インクリメントに増加する整数が設定される。そのため、「ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」をチェックすることにより、パケットロスを検出できる。
【０１０５】
図１４は、ＲＴＰヘッダの拡張ヘッダ（ＲＴＰ拡張ヘッダ：図１３の「ｈｅａｄｅｒ  ｅｘｔｅｎｓｉｏｎ」）の一部のフォーマットの一例を示す図である。ＲＴＰヘッダの拡張ヘッダには、データパケットの並べ替え後の順番を示す情報として、データパケットの並べ替え情報が含まれる。
【０１０６】
例えば、図１２で示した順番にデータが並べ替えられた場合には、Ｄａｔａ１は２番目のデータパケットになるため、ＲＴＰ拡張ヘッダの並べ替え後の順番を示す領域には、ＲＴＰヘッダ修正部１１６が「２」の値をセットする。同様に、Ｄａｔａ２については、ＲＴＰヘッダの拡張ヘッダのデータパケットの並べ替え情報を示す領域に、ＲＴＰヘッダ修正部１１６が「１」の値をセットする。
【０１０７】
なお、「ｄｅｆｉｎｅｄ  ｂｙ  ｐｒｏｆｉｌｅ」の領域には、データパケットの並べ替え情報を示す拡張ヘッダであることを示す情報を設定する。その設定値については、特に限定しない。「Ｒｅｓｅｒｖｅｄ」の領域についても、特に限定しない。ＲＴＰヘッダ修正部１１６は、作成された修正ＲＴＰヘッダ情報を送信ＲＴＰパケット作成部１１７に通知する。
【０１０８】
次に、データ送信装置１００における全体の処理の流れを、図２０に示したフローチャートを参照しながら説明する。
【０１０９】
まず、ＲＴＰデータパケット作成部１１２は、映像エンコーダ部１１１から映像コーデックデータを受け取り、ＲＴＰデータパケットを作成する。このＲＴＰデータパケットの数がｋの値となる（ステップＳ１０１）。
【０１１０】
続いて、行列生成部１１４は、ＲＴＰデータパケット作成部１１２からのデータパケット数ｋと通信路ロス率算出部１１３からのロス率を用いて、冗長パケット数を含めた総パケット数Ｎを決定する（ステップＳ１０２）。
【０１１１】
続いて、行列生成部１１４は、行列生成のためのＳｅｅｄの値を決定する。例えば回復率が高くなるようにＳｅｅｄの値を調整してもよい。行列生成部１１４は、総パケット数Ｎ、データパケット数ｋ、Ｓｅｅｄに基づいて、行列を生成する（ステップＳ１０３）。
【０１１２】
続いて、データパケット並べ替え処理部１１５は、データパケットの並べ替え処理を行う（ステップＳ１０４）。
【０１１３】
続いて、ＲＴＰヘッダ修正部１１６は、データパケット並べ替え処理部１１５から受け取ったデータパケットの並べ替え情報を、ＲＴＰヘッダに付加する（ステップＳ１０５）。これにより、ＲＴＰヘッダが修正される。送信ＲＴＰパケット作成部１１７は、修正されたＲＴＰヘッダとＲＴＰデータパケットとを用いて、送信されるＲＴＰデータパケットを作成する。
【０１１４】
続いて、ＦＥＣヘッダ作成部１１９は、行列生成部１１４からの行列情報と、ＲＴＰデータパケット作成部１１２からのＲＴＰヘッダ情報とに基づいて、ＦＥＣヘッダ情報を作成する（ステップＳ１０６）。
【０１１５】
続いて、ＦＥＣデータ作成部１１８は、行列生成部１１４が生成した行列と、送信ＲＴＰパケット作成部１１７が作成したＲＴＰデータパケットと、データパケット並べ替え処理部１１５が作成したデータパケットの並べ替え情報と、に基づいて、冗長パケットを作成する（ステップＳ１０７）。
【０１１６】
また、ＦＥＣデータ作成部１１８は、冗長パケットの作成に用いたパケットのパケット長の情報に基づいて、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」を算出する。また、ＦＥＣデータ作成部１１８は、ＦＥＣヘッダ情報に含まれる「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」と「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を、送信ＦＥＣパケット作成部１２０に渡す。
【０１１７】
また、送信ＦＥＣパケット作成部１２０は、ＦＥＣヘッダ作成部１１９からのＦＥＣヘッダ情報と、ＦＥＣデータ作成部１１８からの冗長パケットのデータ、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値、および「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」を受け取り、送信される冗長パケットを作成する。
【０１１８】
なお、図２０に示すステップＳ１０６、Ｓ１０７の処理順序は逆にしても良い。
【０１１９】
続いて、パケット送出部１２１が、送信ＲＴＰパケット作成部１１７からのＲＴＰデータパケットと、送信ＦＥＣパケット作成部１２０からの冗長パケットと、を受け取り、データ受信装置に向けて送信する（ステップＳ１０８）。
【０１２０】
図３８は、データパケット並べ替え処理の詳細の一例を示すフローチャートである。
【０１２１】
まず、データパケット並べ替え処理部１１５は、ｋ個のデータパケットをパケット長の短い順番に並べる（ステップＳ１１）。例えば、図１に示した６個のデータパケットを処理する場合は、結果として、Ｄａｔａ２，Ｄａｔａ４，Ｄａｔａ６，Ｄａｔａ５，Ｄａｔａ３，Ｄａｔａ１の順番に並ぶ。
【０１２２】
続いて、データパケット並べ替え処理部１１５は、行列の各要素（Ａｘｙ）について、各ｙに、Ａｘｙが「１」の要素の中で、ｘの値が最小の要素Ａｘｙを抽出する（ステップＳ１２）。
【０１２３】
例えば、図１のデータパケット群を並べ替えた結果と、図２および図３に示した行列を用いる場合には、以下のような結果が得られる。（ｙ，Ａｘｙ）＝（１，Ａ１１），（２，Ａ４２），（３，Ａ１３），（４，Ａ２４），（５，Ａ１５），（６，Ａ３６）
【０１２４】
続いて、データパケット並べ替え処理部１１５は、ステップＳ１２において抽出された各要素Ａｘｙを、ｘが小さい順番に並べ直す（ステップＳ１３）。例えば、結果として、Ａ１１，Ａ１３，Ａ１５，Ａ２４，Ａ３６，Ａ４２の順番に並ぶ。
【０１２５】
続いて、データパケット並べ替え処理部１１５は、ステップＳ１１の結果の各データパケットと、ステップＳ１３の結果の各要素Ａｘｙと、を順番通りに対応付ける（ステップＳ１４）。例えば、以下のような結果が得られる。（Ｄａｔａ２，Ａ１１），（Ｄａｔａ４，Ａ１３），（Ｄａｔａ６，Ａ１５），（Ｄａｔａ５，Ａ２４），（Ｄａｔａ３，Ａ３６），（Ｄａｔａ１，Ａ４２）
【０１２６】
続いて、データパケット並べ替え処理部１１５は、ステップＳ１４において対応付けられた組み合わせを、各要素Ａｘｙのｙを基準とした順番に並べ直す（ステップＳ１５）。例えば、並べ替え後として、以下のような結果が得られる。（Ｄａｔａ２，Ａ１１），（Ｄａｔａ１，Ａ４２），（Ｄａｔａ４，Ａ１３），（Ｄａｔａ５，Ａ２４），（Ｄａｔａ６，Ａ１５），（Ｄａｔａ３，Ａ３６）
【０１２７】
続いて、データパケット並べ替え処理部１１５は、ステップＳ１５の結果得られた（Ｄａｔａ，Ａｘｙ）の組み合わせの順番に合わせて、データパケット群を順番に取り出す（ステップＳ１６）。例えば、取り出すデータパケットの順番は、結果として、Ｄａｔａ２，Ｄａｔａ１，Ｄａｔａ４，Ｄａｔａ５，Ｄａｔａ６，Ｄａｔａ３の順となる。
【０１２８】
このように、データ送信装置１００では、データパケット並べ替え処理部１１５は、行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット長が短くなるよう、前記データパケットを並べ替える。
【０１２９】
データ送信装置１００によれば、冗長パケットのデータ量を削減可能である。従って、冗長パケット作成時のデータ演算量が減少し、データ送信装置１００の処理負荷を低減できる。さらに、通信路（伝送路）に送出されるデータ量も削減されるので、伝送路の帯域を効率的に利用できる。例えば、無線通信のように伝送路の帯域を複数のユーザで共有する場合や、伝送路の帯域が狭い場合であっても、高速かつ誤りの少ない通信を実施できる。
【０１３０】
（受信側）
データ受信装置１５０について説明する。
図１６は、本開示の第１の実施形態におけるデータ受信装置１５０の構成例を示すブロック図である。
【０１３１】
図１６に示すように、データ受信装置１５０は、パケット受信部１５１、ＲＴＰパケット保持部１５２、ＦＥＣパケット保持部１５３、ＲＴＰパケットロス判定部１５４、ロス率算出部１５５、行列生成部１５６、ＦＥＣ復元処理部１５７、映像デコーダ部１５８、および映像表示部１５９を備える。
【０１３２】
パケット受信部１５１は、通信路からパケットを受信し、受信されたパケット（受信パケット）を、ＲＴＰパケット保持部１５２またはＦＥＣパケット保持部１５３に振り分ける。受信パケットは、ＲＴＰデータパケットおよび冗長パケットの少なくとも一方を含む。
【０１３３】
すなわち、パケット受信部１５１は、受信されたＲＴＰデータパケットはＲＴＰパケット保持部１５２に渡し、受信された冗長パケットはＦＥＣパケット保持部１５３に渡す。なお、ＲＴＰデータパケットおよび冗長パケットのデータ受け渡しについては、ポインタ操作により行ってもよい。
【０１３４】
ＲＴＰパケット保持部１５２は、ＲＴＰデータパケットの情報を保持する。ＲＴＰパケット保持部１５２は、パケット受信部１５１からＲＴＰデータパケットを受け取る。また、ＲＴＰパケット保持部１５２は、ＲＴＰデータパケットから映像コーデックデータを得て、これを映像デコーダ部１５８に渡す。また、ＲＴＰパケット保持部１５２は、ＲＴＰデータパケットをＦＥＣ復元処理部１５７に渡す。この受け渡しについては、データを保存しているポインタ情報を渡してもよい。
【０１３５】
また、ＲＴＰパケット保持部１５２は、ＲＴＰヘッダに付加されているデータパケットの並べ替え情報を、ＦＥＣ復元処理部１５７に渡す。また、ＲＴＰパケット保持部１５２は、受信状況つまりパケットロスがあるかどうかの情報を含む受信パケット情報を、ＲＴＰパケットロス判定部１５４に渡す。また、ＲＴＰパケット保持部１５２は、ＦＥＣ復元処理部１５７より復元されたＲＴＰデータパケットを受け取る。
【０１３６】
映像デコーダ部１５８は、ＲＴＰパケット保持部１５２から映像コーデックデータを受け取り、Ｈ.２６４等の規則に従ってデコード処理等を行い、その結果の映像データを映像表示部１５９に渡す。
【０１３７】
映像表示部１５９は、映像デコーダ部１５８からの映像を表示する。
【０１３８】
ＲＴＰパケットロス判定部１５４は、ＲＴＰパケット保持部１５２から受信パケット情報を受け取り、パケットロスが発生しているかどうかを判定する。パケットロスが発生している場合には、行列生成部１５６に行列生成を指示する。また、ＲＴＰパケットロス判定部１５４は、ロス率算出部１５５に、パケットロスが発生しているかどうかの情報を含むロス情報を通知する。
【０１３９】
ロス率算出部１５５は、ＲＴＰパケットロス判定部１５４からロス情報を受け取り、ＦＥＣパケット保持部１５３からロス情報を受け取る。ロス率算出部１５５は、これらのロス情報に基づいて、ロス率を算出し、データ送信装置１００へ通知してもよい。
【０１４０】
ＦＥＣパケット保持部１５３は、冗長パケットの情報を保持する。ＦＥＣパケット保持部１５３は、パケット受信部１５１から冗長パケットのデータを受信する。また、ＦＥＣパケット保持部１５３は、冗長パケットのデータをＦＥＣ復元処理部１５７に通知する。この通知に関しては、冗長パケットのデータを保存しているポインタ情報を通知してもよい。
【０１４１】
また、ＦＥＣパケット保持部１５３は、ヘッダに付加された行列生成のための行列情報を行列生成部１５６に渡す。行列情報は、総パケット数Ｎ、ＲＴＰデータパケット数ｋ、Ｓｅｅｄの値を含む。
【０１４２】
また、ＦＥＣパケット保持部１５３は、冗長パケットのロス情報をロス率算出部１５５に渡す。総パケット数Ｎから冗長パケットの数を推定できるので、受信していない冗長パケットの数、つまり受信に失敗したロスパケットの数を把握できる。
【０１４３】
また、ＦＥＣパケット保持部１５３は、ＦＥＣ復元処理部１５７により復元された冗長パケットを受信する。復元された冗長パケットを保持しておくことによって、再帰的に復元処理を行うことが可能になる。
【０１４４】
行列生成部１５６は、ＦＥＣパケット保持部１５３から行列情報を受け取り、この行列情報に基づいて、行列を生成する。行列生成部１５６は、行列を生成する処理を、ＲＴＰパケットロス判定部１５４から行列生成指示を受信した場合に実行する。
【０１４５】
また、行列生成部１５６は、ＦＥＣ復元処理部１５７に行列データを通知する。この通知に関しては、行列データを保存している位置を示すポインタ情報を通知してもよい。
【０１４６】
なお、行列生成指示は、パケットを受信した都度生成するよう発生するようにしてもよい。また、行列生成指示は用いず、あらかじめデータ送信装置１００との間で同一の行列を共有し、保持するようにしてもよい。ここでは、主に行列を生成する場合を想定している。
【０１４７】
ＦＥＣ復元処理部１５７は、ＲＴＰパケット保持部１５２からＲＴＰデータパケットを受け取り、ＦＥＣパケット保持部１５３から冗長パケットのデータを受け取る。また、ＲＴＰパケット保持部１５２からデータパケットの並べ替え情報を受け取り、行列生成部１５６から行列データを受け取る。
【０１４８】
ＦＥＣ復元処理部１５７は、データパケットの並べ替え情報に基づいて、データパケットを並べ替える。また、ＦＥＣ復元処理部１５７は、受け取った情報に基づいて、ロスしたパケットを復元する。ＦＥＣ復元処理部１５７は、復元されたパケットがＲＴＰデータパケットの場合は、そのパケットをＲＴＰパケット保持部１５２に渡し、冗長パケットの場合は、そのパケットをＦＥＣパケット保持部１５３に渡す。
【０１４９】
次に、パケットの復元処理の詳細について説明する。
【０１５０】
ＦＥＣ復元処理部１５７は、図１４に示したＲＴＰヘッダの拡張ヘッダに含まれるデータパケットの並べ替え情報から、受信していないデータが何番目のパケットであるか識別する。ＦＥＣ復元処理部１５７は、複数のパケットをロスしている場合もあるため、復元可能かどうかを行列データに基づいて判断する。
【０１５１】
図１７は、パケットの復元処理の具体例を示す図である。図１７の例では、データ送信装置１００が、図１１に示したデータパケットの並べ替え後に冗長パケットを作成した場合を想定している。また、データ受信装置１５０が、パケット群ＰＳ２１として、Ｄａｔａ４，Ｄａｔａ５，ＦＥＣ１，ＦＥＣ２を順に受信した場合を想定している。
【０１５２】
ＦＥＣ復元処理部１５７は、Ｄａｔａ４およびＤａｔａ５が３列目および４列目に対応していることを、図１４に示したＲＴＰヘッダの拡張ヘッダに含まれるデータパケットの並べ替え情報から把握する。同様に、ＦＥＣ復元処理部１５７は、行列の５列目に対応するデータパケットを受信していないことも把握する。行列の５列目に対応するデータパケットはまだ復元されていないため、図１７では「Ｄａｔａ？」と表記している。
【０１５３】
また、ＦＥＣ復元処理部１５７は、冗長パケットＦＥＣ１およびＦＥＣ２を受信していることを、図１５に示した冗長パケットのＦＥＣヘッダに基づいて把握する。具体的には、「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」、「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」、ｋの値に基づいて、冗長パケットのＦＥＣ１，ＦＥＣ２であるかどうか判断する。
【０１５４】
ＦＥＣ復元処理部１５７は、行列の５列目に対応するデータパケットのパケット長を、ＦＥＣ２のＦＥＣヘッダに含まれる「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値と、Ｄａｔａ４，Ｄａｔａ５，ＦＥＣ１のパケット長の値と、に基づいて算出する。
【０１５５】
従って、図１７に示すように、ＦＥＣ復元処理部１５７は、算出されたパケット長の範囲で、Ｄａｔａ４，Ｄａｔａ５，ＦＥＣ１，ＦＥＣ２をＸＯＲ演算することにより、ロスしていたパケット（Ｄａｔａ？）を復元する。
【０１５６】
これにより、復元されたパケットがＤａｔａ６であることがわかる。復元されたＲＴＰデータパケットは、ＲＴＰパケット保持部１５２に渡される。
【０１５７】
また、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を用いることで、パケット長に統一性のないパケット群を受信した場合であっても、ロスしたパケットのパケット長を推定できる。従って、データ演算量を削減しつつ、ロスしたパケットを復元できる。
【０１５８】
次に、図２１を用いて、データ受信装置１５０の処理の流れを説明する。
【０１５９】
まず、パケット受信部１５１がパケットを受信する。ＲＴＰデータパケットは、ＲＴＰパケット保持部１５２により保存され、冗長パケットはＦＥＣパケット保持部１５３に保持される。
【０１６０】
ＲＴＰパケットロス判定部１５４は、ＲＴＰパケット保持部１５２から受信パケット情報を受け取り、パケットのロスがあるかどうか判定する（ステップＳ１５１）。ロスがあるかどうかは、図１３に示した「Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」を確認すればよい。ロスが発見された場合には、ＲＴＰパケットロス判定部１５４が行列生成部１５６に行列生成指示を送信することによって復元処理が開始される。つまり、ステップＳ１５２以降の処理に進む。
【０１６１】
ＦＥＣパケット保持部１５３は、行列情報に含まれる総パケット数Ｎ、ＲＴＰデータパケット数ｋ、Ｓｅｅｄの値を、行列生成部１５６に渡す。そして、行列生成部１５６は、行列を生成する（ステップＳ１５２）。
【０１６２】
続いて、ＦＥＣ復元処理部１５７は、ＲＴＰヘッダ情報から、データパケットの並べ替え処理を行っているかどうかを判定する（ステップＳ１５３）。データパケットの並べ替え処理を行っているかどうかは、ＲＴＰヘッダの拡張ヘッダにデータパケットの並べ替え情報が付加されているかどうかで判定できる。データパケットの並べ替え情報の例は、図１４に示しているが、「ｄｅｆｉｎｅｄ  ｂｙ  ｐｒｏｆｉｌｅ」の値によってデータパケットの並べ替え情報を含む拡張ヘッダであるかどうかを判断できる。
【０１６３】
データパケットの並べ替え処理が行われている場合には、ＦＥＣ復元処理部１５７は、データパケットの並べ替え処理を実施する（ステップＳ１５４）。そして、ＦＥＣ復元処理部１５７は、並べ替えられたパケットの復元処理（ステップＳ１５５）を実施する。
【０１６４】
一方、データパケットの並べ替えを行っていない場合には、ＦＥＣ復元処理部１５７は、そのままパケットの復元処理を実施する（ステップＳ１５５）。
【０１６５】
続いて、ＦＥＣ復元処理部１５７は、復元されたパケットを用いて、さらに復元できるパケットがないか確認する（ステップＳ１５６）。ＦＥＣ復元処理部１５７は、復元できるパケットがあれば、復元処理を実施する（ステップＳ１５５）。
【０１６６】
復元処理は、データパケットおよび冗長パケットの両方に対して実施する。復元パケットを復元することによって、再帰的に復元できるパケットが存在する場合もあるためである。
【０１６７】
次に、上述のデータパケット並べ替えによる冗長パケットのデータ削減効果について検証する。
【０１６８】
映像データをエンコードしパケットに分割したときの実データを用いて、どの程度の削減効果があるのか、その結果を図１８（Ａ），（Ｂ）および図１９（Ａ），（Ｂ）に示す。
【０１６９】
図１８（Ａ），（Ｂ）の例では、１３個のデータパケット（ＤＡＴＡ１〜ＤＡＴＡ１３）を処理した結果を示している。図１８（Ａ）には、ＲＴＰデータパケットと冗長パケットのデータに関する情報が示されている。図１８（Ｂ）には、冗長パケットのデータを生成するための行列が示されている。
【０１７０】
図１８（Ａ），（Ｂ）を参照すると、データパケットの並べ替えを行わなかった場合と比較して、並べ替えを行った場合のデータの削減率は、ＦＥＣ１が８８％、ＦＥＣ２が７４％、ＦＥＣ３が４％になっている。また、冗長パケットの総データ量を比較すると１３％の削減効果がある。
【０１７１】
図１９（Ａ），（Ｂ）の例では、１２個のデータパケット（ＤＡＴＡ１〜ＤＡＴＡ１２）を処理した結果を示している。図１９（Ａ）には、ＲＴＰデータパケットと冗長パケットのデータに関する情報が示されている。図１９（Ｂ）には、冗長パケットのデータを生成するための行列が示されている。
【０１７２】
図１９（Ａ），（Ｂ）を参照すると、データの並べ替えを行わなかった場合と比較して、並べ替えを行った場合のデータの削減率は、ＦＥＣ１が７６％、ＦＥＣ２が７３％、ＦＥＣ３が６９％、ＦＥＣ４が１０％、ＦＥＣ５が１％になっている。また、冗長パケットの総データ量を比較すると１９％の削減効果がある。
【０１７３】
このように、データ受信装置１５０では、ＦＥＣ復元処理部１５７が、並べ替え後のデータパケットおよび冗長パケットの少なくとも一方と行列データとに基づいて、パケット受信部１５１により正常に受信されなかった非正常パケットを復元する。非正常パケットとは、ロスしたパケットであり、受信されなかったパケットおよびＣＲＣチェック等によりエラーと判別されたパケットの双方を含む。
【０１７４】
データ受信装置１５０によれば、データパケットおよびデータ量が削減された冗長パケットの少なくとも一方を用いて、データパケットを確実に復元できる。また、冗長パケットのデータ量が削減されているので、データパケットの復元時のデータ演算量が減少し、通信装置の処理負荷を低減できる。
【０１７５】
（第２の実施形態）
第２の実施形態では、データパケットの並べ替え情報をＦＥＣヘッダに格納することを想定している。前述の実施形態と同じ内容については、説明を省略する。
【０１７６】
（送信側）
データ送信装置１００Ｂについて説明する。
図２２は、本開示の第２の実施形態におけるデータ送信装置１００Ｂの構成例を示すブロック図である。図２２において、実質的に第１の実施形態におけるデータ送信装置１００と同じ機能を果たす構成要素については、同じ符号を付けて示してある。
【０１７７】
図２２に示すように、データ送信装置１００Ｂは、図８に示したＲＴＰヘッダ修正部１１６および送信ＲＴＰパケット作成部１１７を備えていない。また、ＦＥＣヘッダ作成部１１９Ｂの機能は、図８のＦＥＣヘッダ作成部１１９の機能とは少し異なっている。
【０１７８】
パケット送出部１２１は、ＲＴＰデータパケット作成部１１２からＲＴＰデータパケットを受け取る。また、ＦＥＣデータ作成部１１８は、ＲＴＰデータパケット作成部１１２からＲＴＰデータパケットを受け取る。
【０１７９】
ＦＥＣヘッダ作成部１１９Ｂは、行列生成部１１４から行列情報を受け取り、ＲＴＰデータパケット作成部１１２からＲＴＰヘッダ情報を受け取り、データパケット並べ替え処理部１１５からデータパケットの並べ替え情報を受け取る。ＦＥＣヘッダ作成部１１９Ｂは、受け取った情報に基づいて、ＦＥＣヘッダを生成する。
【０１８０】
ＦＥＣヘッダ作成部１１９Ｂは、ＦＥＣヘッダにデータパケットの並べ替え情報を追記する。また、ＦＥＣヘッダ作成部１１９Ｂは、作成されたＦＥＣヘッダ情報をパケット送出部１２１に渡す。これはポインタ情報の受け渡しであってもよい。
【０１８１】
次に、ヘッダについて説明する。
図２３は、冗長パケット（ＦＥＣパケット）のヘッダ（ＦＥＣヘッダ）例を示す図である。第１の実施形態のＦＥＣヘッダと異なる点は、Ｓｅｅｄの値に後続する領域に、追加情報としてデータパケットの並べ替え情報が含まれる点である。
【０１８２】
「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」については、ＦＥＣヘッダ作成部１１９Ｂではなく、ＦＥＣデータ作成部１１８が値を決定し、送信ＦＥＣパケット作成部１２０によりＦＥＣヘッダに追記される。なお、ＦＥＣデータ作成部１１８からＦＥＣヘッダ作成部１１９が「ＦＥＣ  Ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の情報を受け取って、ＦＥＣヘッダ作成部１１９がＦＥＣヘッダに追記してもよい。
【０１８３】
「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」については、ＦＥＣヘッダ作成部１１９Ｂではなく、ＦＥＣデータ作成部１１８が値を算出し、送信ＦＥＣパケット作成部１２０によりＦＥＣヘッダに追記される。なお、ＦＥＣデータ作成部１１８からＦＥＣヘッダ作成部１１９が「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の情報を受け取って、ＦＥＣヘッダ作成部１１９がＦＥＣヘッダに追記してもよい。
【０１８４】
「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」、ｋの値、Ｎの値、Ｓｅｅｄの値については、ＦＥＣヘッダ作成部１１９Ｂが受け取った値をそれぞれヘッダに設定する。なお、送信ＦＥＣパケット作成部１２０が「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の設定を行うように実装可能である。この場合、ＲＴＰデータパケット作成部１１２からＦＥＣヘッダ作成部１１９ＢにＲＴＰヘッダ情報を受け渡さなくてもよい。
【０１８５】
図２３に示す例では、ＦＥＣヘッダのＳｅｅｄの値の後に、データパケットの並べ替え情報を保持する領域を割り当ててある。図２３に示す例では、データパケットの並べ替え情報として、「２」、「１」、「４」、「５」、「６」、「３」の６つの数字が書き込んである。
【０１８６】
図２３の例では、図９に示したデータパケットの並べ替えを行った場合の結果としてヘッダに書き込まれる内容を示している。すなわち、図２３のデータパケットの並べ替え情報が、図９における並べ替え後のデータパケットが、Ｄａｔａ２，Ｄａｔａ１，Ｄａｔａ４，Ｄａｔａ５，Ｄａｔａ６，Ｄａｔａ３の順番に並んでいることを示している。
【０１８７】
図２３に示したＦＥＣヘッダに含まれる「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」は、１番目のＲＴＰデータパケットＤａｔａ１の「Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」である。Ｄａｔａ１以外の他のＲＴＰデータパケットの「Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」については、「開始ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」およびデータパケットの並べ替え情報に基づき、ＦＥＣヘッダ作成部１１９Ｂにより容易に算出できる。
【０１８８】
つまり、図２３のように、データパケットの並べ替え情報には、「２」、「１」、「４」、「５」、「６」、「３」の数字の情報をＦＥＣヘッダに付加される。従って、データ受信装置１５０Ｂは、各データパケットの本来の並び順を正しく把握できる。
【０１８９】
ＦＥＣヘッダのフォーマットについては、図２３に示した例の他に、例えば図２４に示す形式を用いても良い。
【０１９０】
図２４に示す例では、データパケットの並べ替え情報として、「２」、「１」、「６」、「３」、「４」、「５」の６つの数字が書き込んである。これらの数字は、並べ替え処理により、並べ替え前のそれぞれのＲＴＰデータパケットが何番目に移動したかを示している。つまり、Ｄａｔａ１が２番目、Ｄａｔａ２が１番目、Ｄａｔａ３が６番目、Ｄａｔａ４が３番目、Ｄａｔａ５が４番目、Ｄａｔａ６が５番目、に並べ替え後に移動することを示している。
【０１９１】
次に、図２６を用いてデータ送信装置１００Ｂの処理の流れを説明する。
なお、前述の実施形態での説明と同様の処理を行う場合には、説明を省略または簡略化する。
【０１９２】
まず、ＲＴＰデータパケット作成部１１２は、映像エンコーダ部１１１から映像コーデックデータを受け取り、ＲＴＰデータパケットを作成する。ＲＴＰデータパケット数がｋの値となる（ステップＳ２０１）。
【０１９３】
続いて、行列生成部１１４は、ＲＴＰデータパケット作成部１１２からのデータパケット数ｋの値と通信路ロス率算出部１１３からのロス率とに基づいて、冗長パケット数を含めた総パケット数Ｎを決定する（ステップＳ２０２）。
【０１９４】
続いて、行列生成部１１４は、行列生成のためのＳｅｅｄの値を決定する。行列生成部１１４は、総パケット数Ｎ、ＲＴＰデータパケット数ｋ、Ｓｅｅｄに基づいて、行列を生成する（ステップＳ２０３）。
【０１９５】
続いて、データパケット並べ替え処理部１１５は、データパケットの並べ替え処理を行う（ステップＳ２０４）。データパケット並べ替え処理部１１５は、冗長パケットのデータ長の総和が小さな値になるように、ＲＴＰデータパケットの順番を並べ替える。
【０１９６】
続いて、ＦＥＣヘッダ作成部１１９Ｂは、行列生成部１１４からの行列情報と、ＲＴＰデータパケット作成部１１２からのＲＴＰヘッダ情報に基づいて、ＦＥＣヘッダ情報を作成する（ステップＳ２０５）。
【０１９７】
続いて、ＦＥＣヘッダ作成部１１９Ｂは、データパケット並べ替え処理部１１５から受け取ったデータパケットの並べ替え情報を、ＦＥＣヘッダに付加する（ステップＳ２０６）。
【０１９８】
続いて、ＦＥＣデータ作成部１１８は、行列生成部１１４が生成した行列と、ＲＴＰデータパケット作成部１１２が作成したＲＴＰデータパケットと、データパケット並べ替え処理部１１５が作成したデータパケットの並べ替え情報と、に基づいて、冗長パケットを作成する（ステップＳ２０７）。
【０１９９】
また、ＦＥＣデータ作成部１１８は、冗長パケットを作成するときに用いたパケットのパケット長の情報に基づいて、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」を算出する。また、ＦＥＣデータ作成部１１８は、ＦＥＣヘッダ情報に含まれる「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」および「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を、送信ＦＥＣパケット作成部１２０に渡す。
【０２００】
送信ＦＥＣパケット作成部１２０は、ＦＥＣヘッダ作成部１１９ＢからのＦＥＣヘッダ情報と、ＦＥＣデータ作成部１１８からの冗長パケットのデータ、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」、「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」と、を受け取る。送信ＦＥＣパケット作成部１２０は、受け取った情報を用いて、送信される冗長パケットを作成する。
【０２０１】
続いて、パケット送出部１２１は、ＲＴＰデータパケット作成部１１２からＲＴＰデータパケットを受け取り、送信ＦＥＣパケット作成部１２０から冗長パケットを受け取る。パケット送出部１２１は、ＲＴＰデータパケットおよび冗長パケットを、データ受信装置１５０Ｂに向けて送信する（ステップＳ２０８）。
【０２０２】
（受信側）
データ受信装置１５０Ｂについて説明する。
図２５は、本開示の第２の実施形態におけるデータ受信装置１５０Ｂの構成例を示すブロック図である。図２５において、実質的に第１の実施形態におけるデータ受信装置１５０と同じ機能を果たす構成要素については、同じ符号を付けて示してある。
【０２０３】
図２５に示すように、データ受信装置１５０Ｂの構成は図１６のデータ受信装置１５０とほぼ同じである。但し、図２５のＲＴＰパケット保持部１５２Ｂの機能およびＦＥＣパケット保持部１５３Ｂの機能が少し変更されている。
【０２０４】
ＲＴＰパケット保持部１５２Ｂは、ＲＴＰデータパケットの情報を保持する。パケット受信部１５１からＲＴＰデータパケットを受け取る。ＲＴＰパケット保持部１５２Ｂは、ＲＴＰデータパケットから映像コーデックデータを得て、これを映像デコーダ部１５８に渡す。
【０２０５】
また、ＲＴＰパケット保持部１５２Ｂは、ＲＴＰデータパケットをＦＥＣ復元処理部１５７に渡す。受け渡しはデータを保存している位置を示すポインタ情報であってもよい。
【０２０６】
また、ＲＴＰパケット保持部１５２Ｂは、受信状況つまりパケットロスがあるかどうかの情報を含む受信パケット情報を、ＲＴＰパケットロス判定部１５４に渡す。また、ＲＴＰパケット保持部１５２Ｂは、ＦＥＣ復元処理部１５７より復元されたＲＴＰデータパケットを受け取る。
【０２０７】
ＦＥＣパケット保持部１５３Ｂは、冗長パケットの情報を保持する。ＦＥＣパケット保持部１５３Ｂは、パケット受信部１５１から冗長パケットのデータを受け取る。また、ＦＥＣパケット保持部１５３Ｂは、冗長パケットのデータをＦＥＣ復元処理部１５７に通知する。この通知は、データを保存している位置を示すポインタ情報であってもよい。
【０２０８】
また、ＦＥＣパケット保持部１５３Ｂは、ＦＥＣヘッダに付加されている行列情報を行列生成部１５６に渡す。また、ＦＥＣパケット保持部１５３Ｂは、冗長パケットのロス情報をロス率算出部１５５に渡す。総パケット数Ｎおよびデータパケット数ｋから受信すべき冗長パケットの数がわかるため、受信していない冗長パケットの数を把握できる。
【０２０９】
また、ＦＥＣパケット保持部１５３Ｂは、ＦＥＣ復元処理部１５７によって復元された冗長パケットを受け取る。復元された冗長パケットを保持しておくことによって、再帰的に復元処理を可能とするためである。
【０２１０】
また、ＦＥＣパケット保持部１５３Ｂは、ＦＥＣヘッダに付加されているデータパケットの並べ替え情報を、ＦＥＣ復元処理部１５７に渡す。
【０２１１】
ＦＥＣ復元処理部１５７は、ＲＴＰパケット保持部１５２ＢからＲＴＰデータパケットを受け取り、ＦＥＣパケット保持部１５３Ｂから冗長パケットのデータを受け取る。また、ＦＥＣ復元処理部１５７からデータパケットの並べ替え情報を受け取り、行列生成部１１４から行列データを受け取る。
【０２１２】
ＦＥＣ復元処理部１５７は、これらの受け取った情報に基づいて、ロスしたパケットを復元する。ＦＥＣ復元処理部１５７は、復元されたパケットがＲＴＰデータパケットの場合はＲＴＰパケット保持部１５２Ｂに渡し、復元されたパケットが冗長パケットの場合はＦＥＣパケット保持部１５３Ｂに渡す。
【０２１３】
データ受信装置１５０Ｂにおいて、上記以外の構成および動作は第１の実施形態と同様である。
【０２１４】
また、データ受信装置１５０Ｂにおける処理の流れについては、第１の実施形態のデータ受信装置１５０における処理の流れ（図２１）と同様であるので、説明は省略する。
【０２１５】
（第３の実施形態）
第３の実施形態では、データパケットの並べ替えとともに、行列を並べ替えることを想定している。また、データパケットの並べ替え情報はＲＴＰヘッダに格納され、行列の並べ替え情報はＦＥＣヘッダに格納されることを想定している。第１の実施形態と同じ内容については、説明を省略する。
【０２１６】
（送信側）
データ送信装置２００について説明する。
図２７は、本開示の第３の実施形態におけるデータ送信装置２００の構成例を示すブロック図である。
【０２１７】
図２７に示すように、データ送信装置２００は、映像エンコーダ部２１１、ＲＴＰデータパケット作成部２１２、通信路ロス率算出部２１３、行列生成部２１４、行列並べ替え処理部２１５、データパケット並べ替え処理部２１６、ＲＴＰヘッダ修正部２１７、送信ＲＴＰパケット作成部２１８、ＦＥＣデータ作成部２１９、ＦＥＣヘッダ作成部２２０、送信ＦＥＣパケット作成部２２１、およびパケット送出部２２２を備える。
【０２１８】
映像エンコーダ部２１１は、図８の映像エンコーダ部１１１と同一である。ＲＴＰデータパケット作成部２１２は、図８のＲＴＰデータパケット作成部１１２と同一である。通信路ロス率算出部２１３は、図８の通信路ロス率算出部１１３と同一である。
【０２１９】
ＦＥＣデータ作成部２１９は、図８のＦＥＣヘッダ作成部１１９と同一である。ＦＥＣデータ作成部２１９は、図８のＦＥＣデータ作成部１１８と同一である。ＲＴＰヘッダ修正部２１７は、図８のＲＴＰヘッダ修正部１１６と同一である。
【０２２０】
送信ＲＴＰパケット作成部２１８は、図８の送信ＲＴＰパケット作成部１１７と同一である。送信ＦＥＣパケット作成部２２１は、図８の送信ＦＥＣパケット作成部１２０と同一である。パケット送出部２２２は、図８のパケット送出部１２１と同一である。
【０２２１】
行列生成部２１４は、ＲＴＰデータパケット作成部２１２からのパケット数ｋの値と通信路ロス率算出部２１３からのロス率の情報とを基に、冗長パケットを作成するための行列を生成する。行列の生成方法は、行列生成部１１４による行列の生成方法と同様である。
【０２２２】
行列生成部２１４は、生成された行列データを行列並べ替え処理部２１５に通知する。この通知に関しては、行列データを保存している位置を示すポインタ情報を通知してもよい。
【０２２３】
行列並べ替え処理部２１５は、行列生成部２１４から行列データを受け取る。行列並べ替え処理部２１５は、行列データに対して行の並べ替えを行う行列の並べ替え処理を実施し、並べ替え後の行列データをＦＥＣデータ作成部２１９に通知する。
【０２２４】
また、行列並べ替え処理部２１５は、ＦＥＣヘッダ作成部２２０に行列情報および行列の並べ替え処理により得られる行列の並べ替え情報を通知する。また、行列並べ替え処理部２１５は、データパケット並べ替え処理部２１６に並べ替え後の行列データを通知する。行列データの通知については、行列データを保存している位置を示すポインタ情報の通知であってもよい。
【０２２５】
なお、図２７では、行列生成部２１４と行列並べ替え処理部２１５とを独立した構成要素として設ける場合を想定しているが、これらの処理部を一体化しても良い。
【０２２６】
データパケット並べ替え処理部２１６は、行列並べ替え処理部２１５から並べ替え後の行列データを受け取り、ＲＴＰデータパケット作成部２１２からデータパケット数ｋと各データパケットのパケット長の情報を受け取る。
【０２２７】
また、データパケット並べ替え処理部２１６は、並べ替え後の行列データに基づいて、データパケットの順番を並べ替える。データパケットの並べ替えの方法は、データパケット並べ替え処理部１１５によるデータパケットの並べ替えの方法と同様である。
【０２２８】
なお、データパケットの並べ替え処理の前に、行列の並べ替え処理が行われる。なお、行列の並べ替え処理の前に、データパケットの並べ替え処理を行うことを排除するわけではない。
【０２２９】
データパケット並べ替え処理部２１６は、データパケットの並べ替え処理を実施した結果としてのデータパケットの並べ替え情報を、ＦＥＣデータ作成部２１９およびＲＴＰヘッダ修正部２１７に通知する。
【０２３０】
ＦＥＣデータ作成部２１９は、並べ替え後の行列データ、ＲＴＰデータパケット、およびデータパケットの並べ替え情報に基づいて、冗長パケットを作成する。また、冗長パケットを作成するために、すでに作成した冗長パケットを利用する場合がある。その場合には、送信ＦＥＣパケット作成部２２１から冗長パケットを受け取り、新たに冗長パケットを作成する。
【０２３１】
また、ＦＥＣデータ作成部２１９は、冗長パケットを作成するとき、あわせて「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を算出する。
【０２３２】
また、ＦＥＣデータ作成部２１９は、作成された冗長パケットのデータ、「Ｌｅｎｇｔｈ  Ｒｅｃｏｖｅｒｙ」の値、および「ＦＥＣ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ」を含むＦＥＣヘッダ情報を、送信ＦＥＣパケット作成部２２１に通知する。この通知は、保存している先を示すポインタ情報であってもよい。
【０２３３】
ＦＥＣヘッダ作成部２２０は、行列並べ替え処理部２１５から行列情報と行列の並べ替え情報とを受け取り、ＲＴＰデータパケット作成部２１２からＲＴＰヘッダ情報を受け取る。ＦＥＣヘッダ作成部２２０は、受け取った情報に基づいて、ＦＥＣヘッダを生成する。
【０２３４】
次に、ヘッダについて説明する。
図２９は、冗長パケットのＦＥＣヘッダの具体例を示す図である。図１５に示したヘッダとの差異は、ＭＳＢ（ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ: 最上位Ｂｉｔ）に、行列の並べ替え処理を行うかどうかを示すフラグＦ１（「Ｍ」と表記されたビット）を用意していることである。これ以外は、図１５に示した内容と同じである。
【０２３５】
なお、図２９は一例であって、行列の並べ替え処理を行ったことを示す情報をＦＥＣヘッダのどこに配置するかを限定するものではない。なお、行列の並べ替え処理を行ったことを示す情報を１ビットで表現すると限定するものではない。なお、行列の並べ替え処理を行ったことを示す情報を付加する位置をＦＥＣヘッダ内に限定するものではない。
【０２３６】
次に、行列並べ替え処理部２１５における行列の並べ替え処理について説明する。
【０２３７】
簡単に説明すると、行列の上にある行ほど冗長パケットのパケット長を削減することができることを利用して、冗長パケットのパケット長を削減できる行を上に移動させるように、行列並べ替え処理部２１５は行の並べ替え処理を行う。
【０２３８】
具体的には、行列並べ替え処理部２１５は、行列の上位に「１」の少ない行を移動させる。次に、行列並べ替え処理部２１５は、上位の行の要素が「１」となっている列は既に対応するデータパケットが割り当てられているとみなし、まだデータパケットの割り当てられていない列だけを取り出す。そして、行列並べ替え処理部２１５は、要素に「１」の数が少ない行を選択する。行列並べ替え処理部２１５は、選択された行を、行列のまだ移動していない行の上位に移動させる。
【０２３９】
全ての列に対してデータパケットの割り当てが終わったとみなせたとき、行列の並べ替え処理が完了する。行列並べ替え処理部２１５は、行列の並べ替え処理をＡ群の行列の各要素（Ａｘｙ）に対して行う。Ｂ群の行列の各要素（Ｂｘｙ）については何もしない。
【０２４０】
図２８を用いて、行列の並べ替え処理の内容を説明する。図２８は、行列の並べ替え処理による行列の状態変化を示している。
【０２４１】
図２８の最初の状態「Ｍ０」は、図１９（Ｂ）の行列と同じである。図２８の各状態において、行列の各行に含まれる「１」の数が、各行の右側に示されている。また、各タイミングにおける行列の並べ替え処理の前の行番号が、行列の左側に示されている。「１」の数が最小である行は９行目（Ｌ９）であるから、Ｌ９を行列の最上位に移動する。移動後の状態を「Ｍ１」と示す。
【０２４２】
「Ｍ１」の状態では、最上位に移動されたＬ９の１１列目と１２列目が「１」であるため、それ以外の列（１列目〜１０列目）に含まれる「１」の数を確認する。１１列目と１２列目に含まれている「１」を除いたときの各行の「１」の数を、行列の右側に示している。「Ｍ１」の状態では、「１」が２個の行が、Ｌ６、Ｌ８、Ｌ１２である。その中で一番上位にあるＬ６を、移動していない行の中の上位に移動する。つまり、Ｌ６を２行目に移動する。Ｌ６の移動後の状態を「Ｍ２」と示す。
【０２４３】
「Ｍ２」の状態では、Ｌ６のうち「１」の列は、４列目と９列目である。４列目と９列目に含まれている「１」も除いたときの各行の「１」の数を、行列の右側に示している。「Ｍ２」の状態では、Ｌ８とＬ１２の「１」の数が１であるため、上位にあるＬ８を移動する。移動後の状態が「Ｍ３」である。
【０２４４】
上記と同様の処理を順次に繰り返すと、「Ｍ１０」の状態で、Ｌ９,Ｌ６,Ｌ８,Ｌ５,Ｌ１２,Ｌ１,Ｌ４,Ｌ７,Ｌ３,Ｌ２,Ｌ１０,Ｌ１１の順番に行の並べ替えが完了する。
【０２４５】
なお、上記で説明した行列の行の並べ替え方法は、一つの例であり、別の方法であってもかまわない。データ送信装置２００側とデータ受信装置２５０側において、同じ処理ができればよい。
【０２４６】
次に、図３２を用いてデータ送信装置２００の処理の流れを説明する。
なお、前述の実施形態の説明と同様の処理を行う場合には、説明を省略または簡略化する。
【０２４７】
まず、ＲＴＰデータパケット作成部２１２は、映像エンコーダ部２１１から映像コーデックデータを受け取り、ＲＴＰデータパケットを作成する。このＲＴＰデータパケット数をｋの値として決定する（ステップＳ３０１）。
【０２４８】
続いて、行列生成部２１４は、ＲＴＰデータパケット作成部２１２からのパケット数ｋの値と通信路ロス率算出部２１３からのロス率とに基づいて、冗長パケット数を含めた総パケット数Ｎを決定する（ステップＳ３０２）。
【０２４９】
続いて、行列生成部２１４は、行列生成のためのＳｅｅｄの値を決定する。行列生成部２１４は、総パケット数Ｎ、データパケット数ｋ、およびＳｅｅｄの値に基づいて、行列を生成する（ステップＳ３０３）。
【０２５０】
続いて、行列並べ替え処理部２１５は、行列の並べ替え処理を行う（ステップＳ３０４）。
【０２５１】
続いて、データパケット並べ替え処理部２１６は、データパケットの並べ替え処理を行う（ステップＳ３０５）。
【０２５２】
続いて、ＲＴＰヘッダ修正部２１７が、データパケット並べ替え処理部２１６から受け取ったデータパケットの並べ替え情報に基づいて、ＲＴＰヘッダの拡張ヘッダにデータパケットの並べ替え情報を付加する（ステップＳ３０６）。データパケットの並べ替え情報を付加するためのＲＴＰヘッダのフォーマットは、図１４に示した例と同じで良い。送信ＲＴＰパケット作成部２１８は、修正されたＲＴＰヘッダとＲＴＰデータパケットを用いて、送信されるＲＴＰデータパケットを生成する。
【０２５３】
続いて、ＦＥＣヘッダ作成部２２０は、行列並べ替え処理部２１５からの行列情報および行列の並べ替え情報と、ＲＴＰデータパケット作成部２１２からのＲＴＰヘッダ情報と、に基づいて、ＦＥＣヘッダ情報を作成する（ステップＳ３０７）。
【０２５４】
続いて、ＦＥＣヘッダ作成部２２０は、ＦＥＣヘッダ情報に行列の並べ替え処理を実施したことを示す情報を設定する（ステップＳ３０８）。具体的には、図２９のヘッダフォーマットにおける「Ｍ」ビットのフラグＦ１を設定する。
【０２５５】
続いて、ＦＥＣデータ作成部２１９は、冗長パケットを作成する（ステップＳ３０９）。
【０２５６】
また、ＦＥＣデータ作成部２１９は、冗長パケットを作成するときに用いたパケットのパケット長の情報に基づいて、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」を算出する。
【０２５７】
また、ＦＥＣデータ作成部２１９は、ＦＥＣヘッダ情報に含まれる「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」と「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を、送信ＦＥＣパケット作成部２２１に渡す。
【０２５８】
送信ＦＥＣパケット作成部２２１は、ＦＥＣヘッダ作成部２２０からのＦＥＣヘッダ情報を受け取る。また、送信ＦＥＣパケット作成部２２１は、ＦＥＣデータ作成部２１９から、冗長パケットのデータ、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」、および「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」の値を受け取る。送信ＦＥＣパケット作成部２２１は、受け取った情報を用いて、送信される冗長パケットを作成する。
【０２５９】
続いて、パケット送出部２２２は、送信ＲＴＰパケット作成部２１８からＲＴＰデータパケットを受け取り、送信ＦＥＣパケット作成部２２１から冗長パケットを受け取る。パケット送出部２２２は、ＲＴＰデータパケットおよびＦＥＣパケットを、データ受信装置２５０に向けて送信する（ステップＳ３１０）。
【０２６０】
次に、行列の並べ替え処理の詳細な手順について説明する。
図３９は、行列並べ替え処理部２１５における行列の並べ替え処理の手順を示す図である。すなわち図３９は、図３２のステップＳ３０４の処理の詳細を示す。
【０２６１】
まず、行列並べ替え処理部２１５は、行列の並べ替え処理中に使用する変数を初期化する。具体的には、「移動完了の行数」の変数を０に初期化し、「移動未実施の行数」の変数を「Ｎ−ｋ」の状態に初期化する（ステップＳ２１）。
【０２６２】
続いて、行列並べ替え処理部２１５は、行列の移動完了行の各行の要素をチェックし、全て「０」である列を抽出する。また、行列並べ替え処理部２１５は、抽出された列に対し、移動未実施の各行に要素が「１」である列の数を計算する（ステップＳ２２）。
【０２６３】
続いて、行列並べ替え処理部２１５は、算出された「１」の数が移動未実施の全ての行において０になったか否かを識別する（ステップＳ２３）。
【０２６４】
移動未実施の全ての行において０でない場合、行列並べ替え処理部２１５は、行列の移動未実施の行の中で、算出された「１」の数が最小である行を抽出する。「１」の数が最小の行が複数ある場合は、上位にある行を抽出する。
【０２６５】
続いて、行列並べ替え処理部２１５は、抽出された行を移動完了の行の最下位に移動する。
【０２６６】
続いて、行列並べ替え処理部２１５は、「移動完了の行数」の値を１加算し、「移動未実施の行数」の値を１減算する（ステップＳ２６）。
【０２６７】
続いて、行列並べ替え処理部２１５は、「移動未実施の行数」の変数を参照し、移動未実施の行数が０か否かを識別する（ステップＳ２７）。「移動未実施の行数」が０でなければステップＳ２２に戻り、「移動未実施の行数」が０の場合は処理を終了する。
【０２６８】
このように、データ送信装置２００では、行列並べ替え処理部２１５が、行列データの各列にデータパケットが割り当てられる場合、行列データの上位行である程、割り当てられるデータパケットのパケット数が少なくなるよう、行列データの行を並べ替える。
【０２６９】
データ送信装置２００によれば、行列の行を所望の順番に並べ替えることで、更に生成される冗長パケットのデータ量を削減可能である。
【０２７０】
（受信側）
データ受信装置２５０について説明する。
図３０は、本開示の第３の実施形態におけるデータ受信装置２５０の構成例を示すブロック図である。
【０２７１】
図３０に示すように、データ受信装置２５０は、パケット受信部２５１、ＲＴＰパケット保持部２５２、ＦＥＣパケット保持部２５３、ＲＴＰパケットロス判定部２５４、ロス率算出部２５５、行列生成部２５６、行列並べ替え処理部２５７、ＦＥＣ復元処理部２５８、映像デコーダ部２５９、および映像表示部２６０を備える。
【０２７２】
パケット受信部２５１は、図１６のパケット受信部１５１と同一である。ＲＴＰパケット保持部２５２は、図１６のＲＴＰパケット保持部１５２と同一である。ＲＴＰパケットロス判定部２５４は、図１６のＲＴＰパケットロス判定部１５４と同一である。ロス率算出部２５５は、図１６のロス率算出部１５５と同一である。映像デコーダ部２５９は、図１６の映像デコーダ部１５８と同一である。
【０２７３】
ＦＥＣパケット保持部２５３は、パケット受信部２５１から冗長パケットのデータを受け取る。また、ＦＥＣパケット保持部２５３は、冗長パケットのデータをＦＥＣ復元処理部２５８に通知する。この通知はデータを保存している位置を示すポインタ情報であってもよい。
【０２７４】
また、ＦＥＣパケット保持部２５３は、ＦＥＣヘッダに含まれる行列情報を行列生成部２５６に渡す。また、ＦＥＣパケット保持部２５３は、冗長パケットのロス情報をロス率算出部２５５に渡す。総パケット数Ｎから冗長パケットの数がわかるため、受信していない冗長パケットの数を把握できる。
【０２７５】
また、ＦＥＣパケット保持部２５３は、ＦＥＣ復元処理部２５８によって復元された冗長パケットを受け取る。復元された冗長パケットを保持しておくことによって、再帰的にＦＥＣ復元処理を可能とするためである。
【０２７６】
また、ＦＥＣパケット保持部２５３は、行列の並べ替え情報を行列並べ替え処理部２５７に通知する。なお、行列生成部２５６と行列並べ替え処理部２５７は１つの処理部にまとめてもよい。この場合には、行列生成部２５６に渡す行列情報に、行列の並べ替え情報を含めてもよい。
【０２７７】
なお、図２９に示したＦＥＣヘッダのフォーマットの例では、行列の並べ替え処理を実施するかどうかを示す１ビットの情報（フラグＦ１）を用いている。なお、この１ビットの情報の代わりに、行列の並べ替え処理の結果をＦＥＣヘッダ内に格納してもよい。つまり行並べ替えの後の行の順番を示す数列情報であってもよい。なお、行並べ替え手順を示す手順情報であってもよい。なお、行並べ替え手順情報そのものではなく、どのような手順であるかを示すインデックス情報であってもよい。
【０２７８】
行列生成部２５６は、ＦＥＣパケット保持部２５３から行列情報を受け取り、この行列情報に基づいて行列を生成する。行列生成部２５６は、行列を生成する処理を、ＲＴＰパケットロス判定部２５４から行列生成指示を受信した場合に実行する。
【０２７９】
行列生成部２５６は、行列並べ替え処理部２５７に生成された行列データを通知する。この通知については、行列データを保存している位置を示すポインタ情報であってもよい。
【０２８０】
行列並べ替え処理部２５７は、行列生成部２５６から行列データを受け取り、ＦＥＣパケット保持部２５３から行列の並べ替え情報を受け取る。行列並べ替え処理部２５７は、行列の並べ替え処理を行うことがＦＥＣヘッダに示されている場合、つまりＦＥＣヘッダにフラグＦ１が含まれている場合、行列の行を並べ替える行列の並べ替え処理を実施する。
【０２８１】
また、行列並べ替え処理部２５７は、並べ替えた後の行列データをＦＥＣ復元処理部２５８に渡す。この受け渡しについては、行列データを保存している位置を示すポインタ情報であってもよい。
【０２８２】
行列並べ替え処理部２５７が実行する行列の並べ替え処理のアルゴリズムは、データ送信装置２００の行列並べ替え処理部２１５が実行する処理（図３９の内容）と同じでよい。
【０２８３】
ＦＥＣ復元処理部２５８は、ＲＴＰパケット保持部２５２からＲＴＰデータパケットを受け取り、ＦＥＣパケット保持部２５３から冗長パケットのデータを受け取る。また、ＦＥＣ復元処理部２５８は、ＲＴＰパケット保持部２５２からデータパケットの並べ替え情報を受け取り、行列並べ替え処理部２５７から並べ替え後の行列データを受け取る。
【０２８４】
ＦＥＣ復元処理部２５８は、データパケットの並べ替え情報に基づいて、データパケットを並べ替える。また、ＦＥＣ復元処理部２５８は、これらの受け取った情報に基づいて、ロスしたパケットを復元する。ＦＥＣ復元処理部２５８は、復元されたパケットがＲＴＰデータパケットの場合は、そのパケットをＲＴＰパケット保持部２５２に渡し、冗長パケットの場合は、そのパケットをＦＥＣパケット保持部２５３に渡す。
【０２８５】
ＦＥＣ復元処理部２５８によるＦＥＣ復元処理は、ＦＥＣ復元処理部１５７によるＦＥＣ復元処理と同じでよい。
【０２８６】
なお、データパケットの並べ替え処理の前に、行列の並べ替え処理が行われる。
【０２８７】
なお、行列生成部２５６と行列並べ替え処理部２５７が一つの処理部にまとまっている場合には、ＦＥＣ復元処理部２５８は、行列生成部２５６から並べ替え後の行列データを受け取ってもよい。
【０２８８】
次に、図３３を用いてデータ受信装置２５０の処理の流れを説明する。なお、前述の実施形態の説明と同様の処理を行う場合には、説明を省略または簡略化する。
【０２８９】
まず、パケット受信部２５１がパケットを受信し、ＲＴＰパケット保持部２５２がＲＴＰデータパケットを保存する。ＲＴＰパケットロス判定部２５４は、ＲＴＰパケット保持部２５２から受信パケット情報を受け取り、受信パケット情報に基づいてＲＴＰデータパケットのパケットロスがあるかどうか判定する（ステップＳ３５１）。ロスが発見された場合には、ＲＴＰパケットロス判定部２５４が行列生成部２５６に行列生成指示を送信することによって復元処理が開始される。つまり、ステップＳ３５２以降の処理に進む。
【０２９０】
まず、ＦＥＣパケット保持部２５３から行列情報に含まれる総パケット数Ｎ、データパケット数ｋ、およびＳｅｅｄの値を、行列生成部２５６に渡す。そして、行列生成部２１４が行列を生成する（ステップＳ３５２）。
【０２９１】
続いて、ＦＥＣパケット保持部２５３は、ＦＥＣヘッダに含まれている情報（例えば図２９のフラグＦ１）から、行列の並べ替え処理を実施するかどうか識別する（ステップＳ３５３）。
【０２９２】
行列の並べ替え処理を実施する場合には、行列並べ替え処理部２５７が実行する（ステップＳ３５４）。行列の並べ替え処理を実施しない場合には、行列をそのままにしておく。
【０２９３】
続いて、ＦＥＣ復元処理部２５８は、ＲＴＰヘッダ情報からデータパケットの並べ替えが行われたかどうかを判定する（ステップＳ３５５）。
【０２９４】
続いて、ＦＥＣ復元処理部２５８は、データパケットの並べ替え処理が行われた場合には、データパケットの並べ替え処理を実施する（ステップＳ３５６）。そして、ＦＥＣ復元処理部２５８は、並べ替えられたデータパケットの復元処理を実施する（ステップＳ３５７）。
【０２９５】
一方、ＦＥＣ復元処理部２５８は、データパケットの並べ替えを行っていない場合には、そのままパケットの復元処理を実施する（ステップＳ３５７）。
【０２９６】
続いて、ＦＥＣ復元処理部２５８は、復元されたパケットを用いて、さらに復元できるパケットがないか確認する（ステップＳ３５８）、ＦＥＣ復元処理部２５８は、復元できるパケットがあれば、復元処理を実施する（ステップＳ３５７）。
【０２９７】
復元処理の対象となるパケットは、データパケットおよび冗長パケットの両方である。冗長パケットを復元することによって、再帰的に復元できるパケットが存在する場合があるためである。
【０２９８】
次に、上述のデータパケットの並べ替え処理および行列の並べ替え処理による冗長パケットのデータ削減効果について検証する。
【０２９９】
映像データをエンコードしパケットに分割したときの実データを用いて、どの程度の削減効果があるのか、その結果を図３１に示す。図３１の例では、１２個のデータパケット（ＤＡＴＡ１〜ＤＡＴＡ１２：図１９に示したデータと同じ）を処理した結果を示している。このシミュレーションにおける行列の並べ替え処理の内容および並べ替え後の行列は、図２８に示した行列と同じである。
【０３００】
図３１では、データパケットの並べ替え処理を実施した結果Ｄ３１Ａと、データパケットの並べ替え処理および行列の並べ替え処理を実施した結果Ｄ３１Ｂと、を区別して示している。
【０３０１】
図３１の結果Ｄ３１Ａは、データパケットの並べ替え処理を行った場合のデータの削減率を示している。つまり削減効果を示している。
【０３０２】
ここでは、ＦＥＣ１：７６％,ＦＥＣ２：７３％,ＦＥＣ３：６９％,ＦＥＣ４：１０％,ＦＥＣ５：１％である。また、冗長パケットの総データ量を比較すると、１９％の削減効果があることが分かる。
【０３０３】
一方、図３１の結果Ｄ３１Ｂは、データパケットの並べ替え処理および行列の並べ替え処理のいずれも行わなかった場合のデータの削減率に対する、行列の並べ替え処理を実施した後にデータパケットの並べ替え処理を行った場合のデータの削減率を示している。つまり削減効果を示している。
【０３０４】
ここでは、ＦＥＣ１：８５％,ＦＥＣ２：７３％,ＦＥＣ３：７３％,ＦＥＣ４：１０％,ＦＥＣ５：１％である。また、冗長パケットの総データ量を比較すると２６％の削減効果があることが分かる。
【０３０５】
つまり、第１の実施形態のように、データパケットの並べ替え処理を行ってから冗長パケットを作成すると、冗長パケットのデータ量を削減できる。さらに、第３の実施形態のように、行列の並べ替え処理とデータパケットの並べ替え処理とを行ってから冗長パケットを作成すると、冗長パケットのデータ量を更に削減できる。
【０３０６】
このように、データ受信装置２５０では、ＦＥＣ復元処理部２５８が、並べ替え後のデータパケットおよび冗長パケットの少なくとも一方と、並べ替え後の行列データと、に基づいて、非正常パケットを復元する。
【０３０７】
データ受信装置２５０によれば、データ送信装置２００側で並べ替えられた所望の順番と同じ順番にデータパケットおよび行列を並べ替えることができる。従って、ロスしたパケットの復元時のデータ量を更に削減可能である。
【０３０８】
（第４の実施形態）
第４の実施形態では、データパケットを並べ替えるとともに、行列を並べ替えることを想定している。また、データパケットの並べ替え情報および行列の並べ替え情報は、ともにＦＥＣヘッダに格納されることを想定している。第１の実施形態〜第３の実施形態と同じ内容については、説明を省略する。
【０３０９】
（送信側）
データ送信装置について説明する。
図３４は、本開示の第４の実施形態におけるデータ送信装置２００Ｂの構成例を示すブロック図である。図３４において、実質的に第３の実施形態におけるデータ送信装置２００と同じ機能を果たす構成要素については、同じ符号を付けて示してある。
【０３１０】
図３４に示すように、データ送信装置２００Ｂは、図２７に示すＲＴＰヘッダ修正部２１７および送信ＲＴＰパケット作成部２１８を備えていない。また、ＦＥＣヘッダ作成部２２０Ｂの機能は、図２７に示すＦＥＣヘッダ作成部２２０の機能とは少し異なっている。
【０３１１】
パケット送出部２２２は、ＲＴＰデータパケット作成部２１２からＲＴＰデータパケットを受け取る。また、ＦＥＣデータ作成部２１９は、ＲＴＰデータパケット作成部２１２からＲＴＰデータパケットを受け取る。
【０３１２】
ＦＥＣヘッダ作成部２２０Ｂは、行列並べ替え処理部２１５から行列情報と行列の並べ替え情報を受け取り、ＲＴＰデータパケット作成部２１２からＲＴＰヘッダ情報を受け取る。また、ＦＥＣヘッダ作成部２２０Ｂは、データパケット並べ替え処理部２１６からデータパケットの並べ替え情報を受け取る。ＦＥＣヘッダ作成部２２０Ｂは、受け取った情報に基づいてＦＥＣヘッダを生成する。
【０３１３】
ＦＥＣヘッダ作成部２２０Ｂは、作成されたＦＥＣヘッダ情報を送信ＦＥＣパケット作成部２２１に渡す。この受け渡しは、ＦＥＣヘッダ情報が存在する位置を示すポインタ情報の受け渡しであってもよい。
【０３１４】
次に、ヘッダについて説明する。
図３５はＦＥＣヘッダの一例を示す図である。
【０３１５】
図３５に示すＦＥＣヘッダには、図２９の例と同様に、行列の並べ替えの有無を表すフラグＦ１を格納する領域が含まれている。また、図３５に示すＦＥＣヘッダには、データパケットの並べ替え情報を格納する領域が含まれている。図３５に示すＦＥＣヘッダに格納されるデータパケットの並べ替え情報は、第２の実施形態で説明したＦＥＣヘッダに格納されるデータパケットの並べ替え情報と同じである。
【０３１６】
次に、図３７を用いてデータ送信装置２００Ｂの処理の流れを説明する。
なお、前述の実施形態の説明と同様の処理を行う場合には、説明を省略または簡略化する。
【０３１７】
まず、ＲＴＰデータパケット作成部２１２は、映像エンコーダ部２１１から映像コーデックデータを受け取り、ＲＴＰデータパケットを作成する。このＲＴＰデータパケット数をｋの値として決定する（ステップＳ４０１）。
【０３１８】
続いて、行列生成部２１４は、ＲＴＰデータパケット作成部２１２からのパケット数ｋの値と通信路ロス率算出部２１３からのロス率とに基づいて、冗長パケット数を含めた総パケット数Ｎを決定する（ステップＳ４０２）。
【０３１９】
続いて、行列生成部２１４は、行列生成のためのＳｅｅｄの値を決定する。そして、行列生成部２１４は、総パケット数Ｎの値、データパケット数ｋ、およびＳｅｅｄの値に基づいて、行列を生成する（ステップＳ４０３）。
【０３２０】
続いて、行列並べ替え処理部２１５は、行列の並べ替え処理を行う（ステップＳ４０４）。
【０３２１】
続いて、データパケット並べ替え処理部２１６は、データパケットの並べ替え処理を行う（ステップＳ４０５）。
【０３２２】
続いて、ＦＥＣヘッダ作成部２２０Ｂは、ＦＥＣヘッダ情報を作成する（ステップＳ４０６）。
【０３２３】
続いて、ＦＥＣヘッダ作成部２２０Ｂは、ＦＥＣヘッダ情報に行列の並べ替え処理を実施したことを示す情報を設定する（ステップＳ４０７）。具体的には、図３５に示したヘッダフォーマットのフラグＦ１（Ｍビット）が設定される。
【０３２４】
続いて、ＦＥＣデータ作成部２１９は、冗長パケットを作成する（ステップＳ４０８）。
【０３２５】
また、ＦＥＣデータ作成部２１９は、冗長パケットを作成するときに用いたパケットのパケット長の情報を用いて「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」を算出する。また、ＦＥＣデータ作成部２１９は、ＦＥＣヘッダ情報に含まれる「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」と「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値を、送信ＦＥＣパケット作成部２２１に渡す。
【０３２６】
送信ＦＥＣパケット作成部２２１は、ＦＥＣヘッダ作成部２２０ＢからのＦＥＣヘッダ情報と、ＦＥＣデータ作成部２１９からの冗長パケットのデータ、「Ｌｅｎｇｔｈ  ｒｅｃｏｖｅｒｙ」の値、および「ＦＥＣ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒ」を受け取る。送信ＦＥＣパケット作成部２２１は、受け取った情報に基づいて、送信される冗長パケットを作成する。
【０３２７】
続いて、パケット送出部２２２が、ＲＴＰデータパケット作成部２１２からＲＴＰデータパケットを受け取り、送信ＦＥＣパケット作成部２２１から冗長パケットを受け取る。パケット送出部２２２は、ＲＴＰデータパケットおよび冗長パケットを、データ受信装置２５０Ｂに向けて送信する（ステップＳ４０９）。
【０３２８】
（受信側）
データ受信装置について説明する。
図３６は、本開示の第４の実施形態におけるデータ受信装置２５０Ｂの構成例を示すブロック図である。図２５において、実質的に第１の実施形態におけるデータ受信装置１５０と同じ機能を果たす構成要素については、同じ符号を付けて示してある。
【０３２９】
図３６に示すように、データ受信装置２５０Ｂの構成は図３０のデータ受信装置２５０とほぼ同じである。但し、ＲＴＰパケット保持部２５２Ｂの機能およびＦＥＣパケット保持部２５３Ｂの機能が少し変更されている。
【０３３０】
ＲＴＰパケット保持部２５２Ｂは、パケット受信部２５１からＲＴＰデータパケットを受け取る。ＲＴＰパケット保持部２５２Ｂは、ＲＴＰデータパケットから映像コーデックデータを得て、これを映像デコーダ部２５９に渡す。
【０３３１】
また、ＲＴＰパケット保持部２５２Ｂは、ＲＴＰデータパケットをＦＥＣ復元処理部２５８に渡す。この受け渡しは、ＲＴＰデータパケットを保存している位置を示すポインタ情報であってもよい。
【０３３２】
また、ＲＴＰパケット保持部２５２Ｂは、受信状況つまりパケットロスがあるかどうかの情報を含む受信パケット情報をＲＴＰパケットロス判定部２５４に渡す。また、ＲＴＰパケット保持部２５２Ｂは、ＦＥＣ復元処理部２５８から復元されたＲＴＰデータパケットを受け取る。
【０３３３】
ＦＥＣパケット保持部２５３Ｂは、パケット受信部２５１から冗長パケットのデータを受信する。また、ＦＥＣパケット保持部２５３Ｂは、冗長パケットのデータをＦＥＣ復元処理部２５８に通知する。この通知はデータを保存している位置を示すポインタ情報であってもよい。
【０３３４】
また、ＦＥＣパケット保持部２５３Ｂは、ＦＥＣヘッダに付加されている行列情報を行列生成部２５６に渡す。また、ＦＥＣパケット保持部２５３Ｂは、冗長パケットのロス情報をロス率算出部２５５に渡す。総パケット数Ｎおよびデータパケット数ｋから受信すべき冗長パケットの数がわかるため、受信していない冗長パケットの数を把握できる。
【０３３５】
また、ＦＥＣパケット保持部２５３Ｂは、ＦＥＣ復元処理部２５８によって復元された冗長パケットを受け取る。復元された冗長パケットを保持しておくことによって、再帰的にＦＥＣ復元処理を可能とするためである。
【０３３６】
また、ＦＥＣパケット保持部２５３Ｂは、ＦＥＣヘッダに付加されているデータパケットの並べ替え情報をＦＥＣ復元処理部２５８に渡す。また、ＦＥＣパケット保持部２５３Ｂは、行列の並べ替え情報を行列並べ替え処理部２５７に通知する。
【０３３７】
次に、データ受信装置２５０Ｂにおける処理の流れについて説明する。
データ受信装置２５０Ｂにおける処理の流れは、既に説明した図３３に示した処理の流れと同様であるので、説明を省略する。
【０３３８】
なお、本開示は、上記実施形態の構成に限られるものではなく、特許請求の範囲によって示した機能、または本実施形態の構成が持つ機能が達成できる構成であればどのようなものであっても適用可能である。
【０３３９】
上記実施形態では、本開示をハードウェアで構成する場合を例にとって説明したが、本開示はハードウェアとの連携においてソフトウェアでも実現することも可能である。
【０３４０】
また、上記実施形態の説明に用いた各機能ブロックは、典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部または全てを含むように１チップ化されてもよい。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０３４１】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。例えば、ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＬＳＩ内部の回路セルの接続、または、設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０３４２】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０３４３】
本開示を詳細にまた特定の実施態様を参照して説明したが、本開示の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
本開示は、2012年1月31日出願の日本特許出願No.2012-019160に基づくものであり、その内容はここに参照として取り込まれる。
【０３４４】
（開示の一態様の概要）
本開示の第１の通信装置は、
データパケットを生成するデータパケット生成部と、
前記データパケットの並べ替えを行うデータ並べ替え処理部と、
前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成する冗長パケット生成部と、
を備える。
【０３４５】
この構成によれば、並べ替えられたデータパケットおよび行列データを用いることで、冗長パケットのデータ量を削減可能である。従って、冗長パケット作成時のデータ演算量が減少し、通信装置の処理負荷を低減できる。さらに、伝送路に送出されるデータ量も削減されるので、伝送路の帯域を効率的に利用できる。
【０３４６】
また、本開示の第２の通信装置は、第１の通信装置であって、
前記行列データを生成する行列データ生成部を備える。
【０３４７】
また、本開示の第３の通信装置は、第１または第２の通信装置であって、
前記データ並べ替え処理部は、前記冗長パケットのパケットサイズの総和に基づいて、前記データパケットの並べ替えを行う。
【０３４８】
また、本開示の第４の通信装置は、第３の通信装置であって、
前記データ並べ替え処理部は、前記冗長パケットのパケットサイズの総和が小さくなるよう、前記データパケットの並べ替えを行う。
【０３４９】
また、本開示の第５の通信装置は、第１ないし第４のいずれか１つの通信装置であって、
前記データ並べ替え処理部は、前記行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット長が短くなるよう、前記データパケットを並べ替える。
【０３５０】
また、本開示の第６の通信装置は、第１ないし第５のいずれか１つの通信装置であって、
前記行列データの行の並べ替えを行う行列並べ替え処理部を備え、
前記冗長パケット生成部は、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記行列並べ替え処理部により並べ替えられた行列データに基づいて、前記冗長パケットを生成する。
【０３５１】
また、本開示の第７の通信装置は、第６の通信装置であって、
前記行列並べ替え処理部は、前記データ並べ替え処理部によるデータパケットの並べ替えの前に、前記行列データの行の並べ替えを行う。
【０３５２】
また、本開示の第８の通信装置は、第６または第７の通信装置であって、
前記行列並べ替え処理部は、前記行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット数が少なくなるよう、前記行列データの行を並べ替える。
【０３５３】
また、本開示の第９の通信装置は、第１ないし第８のいずれか１つの通信装置であって、
前記データパケットのヘッダであるデータパケットヘッダを生成するデータパケットヘッダ生成部を備え、
前記データパケットヘッダは、前記データ並べ替え処理部により並べ替えられたデータパケットの並べ替え情報を含む。
【０３５４】
また、本開示の第１０の通信装置は、第１ないし第８のいずれか１つの通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記データ並べ替え処理部により並べ替えられたデータパケットの並べ替え情報を含む。
【０３５５】
また、本開示の第１１の通信装置は、第９または第１０の通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記行列並べ替え処理部により並べ替えられた行列データの並べ替え情報を含む。
【０３５６】
また、本開示の第１２の通信装置は、第９または第１０の通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記正常に受信されないロスまたは非正常パケットのパケット長を復元するためのパケット長情報を含む。
【０３５７】
また、本開示の第１３の通信装置は、
データパケットおよび前記データパケットに対する冗長パケットの少なくとも一方を含むパケットである受信パケットを受信する受信部と、
前記受信パケットに含まれるデータパケットの並べ替え情報に基づいて、前記データパケットを並べ替えるデータ並べ替え処理部と、
前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記受信部により受信された冗長パケットの少なくとも一方と、前記データパケットに適用される行列データと、に基づいて、ロスまたは前記受信部により正常に受信されなかった非正常パケットを復元する復元処理部と、
を備える。
【０３５８】
この構成によれば、データパケットおよびデータ量が削減された冗長パケットの少なくとも一方を用いて、データパケットを確実に復元できる。また、冗長パケットのデータ量が削減されているので、データパケットの復元時のデータ演算量が減少し、通信装置の処理負荷を低減できる。
【０３５９】
また、本開示の第１４の通信装置は、第１３の通信装置であって、
前記受信パケットに含まれる前記行列データの並べ替え情報に基づいて、前記行列データの行を並べ替える行列並べ替え処理部を備え、
前記復元処理部は、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記受信部により受信された冗長パケットの少なくとも一方と、前記行列並べ替え処理部により並べ替えられた行列データと、に基づいて、ロスまたは前記受信部により正常に受信されなかった非正常パケットを復元する。
【０３６０】
また、本開示の第１５の通信装置は、第１４の通信装置であって、
前記行列並べ替え処理部は、前記データ並べ替え処理部によるデータパケットの並べ替えの前に、前記行列データの行の並べ替えを行う。
【０３６１】
また、本開示の第１６の通信方法は、
データパケットを生成するステップと、
前記データパケットの並べ替えを行うステップと、
並べ替えられた前記データパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成するステップと、
を有する。
【０３６２】
この方法によれば、並べ替えられたデータパケットおよび行列データを用いることで、冗長パケットのデータ量を削減可能である。従って、冗長パケット作成時のデータ演算量が減少し、通信装置の処理負荷を低減できる。さらに、伝送路に送出されるデータ量も削減されるので、伝送路の帯域を効率的に利用できる。
【０３６３】
また、本開示の第１７の通信方法は、
データパケットおよび前記データパケットに対する冗長パケットの少なくとも一方を含むパケットである受信パケットを受信するステップと、
前記受信パケットに含まれるデータパケットの並べ替え情報に基づいて、前記データパケットを並べ替えるステップと、
前記並べ替えられたデータパケットおよび前記受信された冗長パケットの少なくとも一方と、前記データパケットに適用される行列データと、に基づいて、ロスまたは正常に受信されなかった非正常パケットを復元するステップと、
を有する。
【０３６４】
この方法によれば、データパケットおよびデータ量が削減された冗長パケットの少なくとも一方を用いて、データパケットを確実に復元できる。また、冗長パケットのデータ量が削減されているので、データパケットの復元時のデータ演算量が減少し、通信装置の処理負荷を低減できる。
【産業上の利用可能性】
【０３６５】
本開示は、冗長パケットのデータ量を削減可能な通信装置等に有用である。
【符号の説明】
【０３６６】
１００，１００Ｂ，２００，２００Ｂ  データ送信装置
１１１  映像エンコーダ部
１１２  ＲＴＰデータパケット作成部
１１３  通信路ロス率算出部
１１４  行列生成部
１１５  データパケット並べ替え処理部
１１６  ＲＴＰヘッダ修正部
１１７  送信ＲＴＰパケット作成部
１１８  ＦＥＣデータ作成部
１１９，１１９Ｂ  ＦＥＣヘッダ作成部
１２０  送信ＦＥＣパケット作成部
１２１  パケット送出部
１５０，１５０Ｂ，２５０，２５０Ｂ  データ受信装置
１５１  パケット受信部
１５２，１５２Ｂ  ＲＴＰパケット保持部
１５３，１５３Ｂ  ＦＥＣパケット保持部
１５４  ＲＴＰパケットロス判定部
１５５  ロス率算出部
１５６  行列生成部
１５７  ＦＥＣ復元処理部
１５８  映像デコーダ部
１５９  映像表示部
２１１  映像エンコーダ部
２１２  ＲＴＰデータパケット作成部
２１３  通信路ロス率算出部
２１４  行列生成部
２１５  行列並べ替え処理部
２１６  データパケット並べ替え処理部
２１７  ＲＴＰヘッダ修正部
２１８  送信ＲＴＰパケット作成部
２１９  ＦＥＣデータ作成部
２２０，２２０Ｂ  ＦＥＣヘッダ作成部
２２１  送信ＦＥＣパケット作成部
２２２  パケット送出部
２５１  パケット受信部
２５２，２５２Ｂ  ＲＴＰパケット保持部
２５３，２５３Ｂ  ＦＥＣパケット保持部
２５４  ＲＴＰパケットロス判定部
２５５  ロス率算出部
２５６  行列生成部
２５７  行列並べ替え処理部
２５８  ＦＥＣ復元処理部
２５９  映像デコーダ部
２６０  映像表示部
ＰＳ１０，ＰＳ１１，ＰＳ１２  データパケット群
Ｆ１  フラグ
【図１】
2013114496.tif 000003
【図２】
2013114496.tif 000004
【図３】
2013114496.tif 000005
【図４】
2013114496.tif 000006
【図５】
2013114496.tif 000007
【図６】
2013114496.tif 000008
【図７】
2013114496.tif 000009
【図８】
2013114496.tif 000010
【図９】
2013114496.tif 000011
【図１０】
2013114496.tif 000012
【図１１】
2013114496.tif 000013
【図１２】
2013114496.tif 000014
【図１３】
2013114496.tif 000015
【図１４】
2013114496.tif 000016
【図１５】
2013114496.tif 000017
【図１６】
2013114496.tif 000018
【図１７】
2013114496.tif 000019
【図１８】
2013114496.tif 000020
【図１９】
2013114496.tif 000021
【図２０】
2013114496.tif 000022
【図２１】
2013114496.tif 000023
【図２２】
2013114496.tif 000024
【図２３】
2013114496.tif 000025
【図２４】
2013114496.tif 000026
【図２５】
2013114496.tif 000027
【図２６】
2013114496.tif 000028
【図２７】
2013114496.tif 000029
【図２８】
2013114496.tif 000030
【図２９】
2013114496.tif 000031
【図３０】
2013114496.tif 000032
【図３１】
2013114496.tif 000033
【図３２】
2013114496.tif 000034
【図３３】
2013114496.tif 000035
【図３４】
2013114496.tif 000036
【図３５】
2013114496.tif 000037
【図３６】
2013114496.tif 000038
【図３７】
2013114496.tif 000039
【図３８】
2013114496.tif 000040
【図３９】
2013114496.tif 000041
【手続補正書】
【提出日】平成25年5月2日(2013.5.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データパケットを生成するデータパケット生成部と、
前記データパケットの並べ替えを行うデータ並べ替え処理部と、
前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成する冗長パケット生成部と、
を備え、
前記データ並べ替え処理部は、前記冗長パケットのパケットサイズの総和に基づいて、前記データパケットの並べ替えを行う通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記データ並べ替え処理部は、前記冗長パケットのパケットサイズの総和が小さくなるよう、前記データパケットの並べ替えを行う通信装置。
【請求項３】
請求項１または２に記載の通信装置であって、
前記データ並べ替え処理部は、前記行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット長が短くなるよう、前記データパケットを並べ替える通信装置。
【請求項４】
請求項１ないし３のいずれか１項に記載の通信装置であって、更に、
前記行列データの行の並べ替えを行う行列並べ替え処理部を備え、
前記冗長パケット生成部は、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記行列並べ替え処理部により並べ替えられた行列データに基づいて、前記冗長パケットを生成する通信装置。
【請求項５】
請求項４に記載の通信装置であって、
前記行列並べ替え処理部は、前記データ並べ替え処理部によるデータパケットの並べ替えの前に、前記行列データの行の並べ替えを行う通信装置。
【請求項６】
請求項４または５に記載の通信装置であって、
前記行列並べ替え処理部は、前記行列データの各列にデータパケットが割り当てられる場合、前記行列データの上位行である程、割り当てられるデータパケットのパケット数が少なくなるよう、前記行列データの行を並べ替える通信装置。
【請求項７】
請求項１ないし６のいずれか１項に記載の通信装置であって、更に、
前記データパケットのヘッダであるデータパケットヘッダを生成するデータパケットヘッダ生成部を備え、
前記データパケットヘッダは、前記データ並べ替え処理部により並べ替えられたデータパケットの並べ替え情報を含む通信装置。
【請求項８】
請求項１ないし６のいずれか１項に記載の通信装置であって、更に、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記データ並べ替え処理部により並べ替えられたデータパケットの並べ替え情報を含む通信装置。
【請求項９】
請求項７または８に記載の通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記行列並べ替え処理部により並べ替えられた行列データの並べ替え情報を含む通信装置。
【請求項１０】
請求項７または８に記載の通信装置であって、
前記冗長パケットのヘッダである冗長パケットヘッダを生成する冗長パケットヘッダ生成部を備え、
前記冗長パケットヘッダは、前記正常に受信されないロスまたは非正常パケットのパケット長を復元するためのパケット長情報を含む通信装置。
【請求項１１】
データパケットおよび前記データパケットに対する冗長パケットの少なくとも一方を含むパケットである受信パケットを受信する受信部と、
前記受信パケットに含まれるデータパケットの並べ替え情報に基づいて、前記データパケットを並べ替えるデータ並べ替え処理部と、
前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記受信部により受信された冗長パケットの少なくとも一方と、前記データパケットに適用される行列データと、に基づいて、ロスまたは前記受信部により正常に受信されなかった非正常パケットを復元する復元処理部と、
前記受信パケットに含まれる前記行列データの並べ替え情報に基づいて、前記行列データの行を並べ替える行列並べ替え処理部と、
を備え、
前記復元処理部は、前記データ並べ替え処理部により並べ替えられたデータパケットおよび前記受信部により受信された冗長パケットの少なくとも一方と、前記行列並べ替え処理部により並べ替えられた行列データと、に基づいて、ロスまたは前記受信部により正常に受信されなかった非正常パケットを復元する通信装置。
【請求項１２】
請求項１１に記載の通信装置であって、
前記行列並べ替え処理部は、前記データ並べ替え処理部によるデータパケットの並べ替えの前に、前記行列データの行の並べ替えを行う通信装置。
【請求項１３】
データパケットを生成するステップと、
前記データパケットの並べ替えを行うデータ並べ替えステップと、
並べ替えられた前記データパケットおよび前記データパケットに適用される行列データに基づいて、前記データパケットに対する冗長パケットを生成するステップと、
を有し、
前記データ並べ替えステップでは、前記冗長パケットのパケットサイズの総和に基づいて、前記データパケットの並べ替えを行う通信方法。
【請求項１４】
データパケットおよび前記データパケットに対する冗長パケットの少なくとも一方を含むパケットである受信パケットを受信するステップと、
前記受信パケットに含まれるデータパケットの並べ替え情報に基づいて、前記データパケットを並べ替えるステップと、
前記並べ替えられたデータパケットおよび前記受信された冗長パケットの少なくとも一方と、前記データパケットに適用される行列データと、に基づいて、ロスまたは正常に受信されなかった非正常パケットを復元する復元処理ステップと、
前記受信パケットに含まれる前記行列データの並べ替え情報に基づいて、前記行列データの行を並べ替えるステップと、
を有し、
前記復元処理ステップでは、前記並べ替えられたデータパケットおよび前記受信された冗長パケットの少なくとも一方と、前記並べ替えられた行列データと、に基づいて、ロスまたは正常に受信されなかった非正常パケットを復元する通信方法。
【請求項１５】
（削除）
【請求項１６】
（削除）
【請求項１７】
（削除）
【国際調査報告】
2013114496.tif 000042
2013114496.tif 000043
2013114496.tif 000044