(57)【要約】【課題】通信帯域を逼迫させず、且つリアルタイム性を維持した状態での誤り訂正符号を生成することができる生成装置を提供することを課題とする。【解決手段】生成装置は、データパケットに対する誤り訂正符号を生成する生成装置であって、誤り訂正符号の冗長度の範囲を決定する第１の決定部と、誤り訂正符号の生成対象の複数のデータパケットの間隔を示す複数のインタリーブ長の組み合わせを決定する第２の決定部と、第２の決定部により決定された複数のインタリーブ長の組み合わせで、データパケットに対して誤り訂正符号を生成する生成部とを有し、第２の決定部は、複数のインタリーブ長の組み合わせについてデータパケットに対する誤り訂正符号の冗長度の合計が、第１の決定部が決定した冗長度の範囲内となるように、複数のインタリーブ長の組み合わせを決定する。【選択図】図５
2016092640.tif 000002
【特許請求の範囲】
【請求項１】
データパケットに対する誤り訂正符号を生成する生成装置であって、
前記誤り訂正符号の冗長度の範囲を決定する第１の決定部と、
前記誤り訂正符号の生成対象の複数のデータパケットの間隔を示す複数のインタリーブ長の組み合わせを決定する第２の決定部と、
前記第２の決定部により決定された複数のインタリーブ長の組み合わせで、前記データパケットに対して誤り訂正符号を生成する生成部とを有し、
前記第２の決定部は、前記複数のインタリーブ長の組み合わせについて前記データパケットに対する誤り訂正符号の冗長度の合計が、前記第１の決定部が決定した冗長度の範囲内となるように、前記複数のインタリーブ長の組み合わせを決定することを特徴とする生成装置。
【請求項２】
前記第２の決定部は、１以外に共通の約数を持たないインタリーブ長の組み合わせを決定することを特徴とする請求項１記載の生成装置。
【請求項３】
前記第１の決定部は、利用可能通信帯域を基に前記冗長度の範囲を決定することを特徴とする請求項１又は２記載の生成装置。
【請求項４】
さらに、許容遅延時間を基に、前記誤り訂正符号を生成する際に選択可能なデータパケットの数を示すブロック長を決定する第３の決定部を有することを特徴とする請求項１〜３のいずれか１項に記載の生成装置。
【請求項５】
さらに、利用可能メモリ量を基に、前記誤り訂正符号を生成する際に選択可能なデータパケットの数を示すブロック長を決定する第３の決定部を有することを特徴とする請求項１〜３のいずれか１項に記載の生成装置。
【請求項６】
前記第２の決定部は、前記複数のインタリーブ長の組み合わせについて前記データパケットに対する誤り訂正符号の冗長度の合計が、前記第１の決定部が決定した冗長度の範囲内であって、最大の前記インタリーブ長の組み合わせ数を決定し、前記決定したインタリーブ長の組み合わせ数を用いて前記複数のインタリーブ長の組み合わせを決定することを特徴とする請求項１〜５のいずれか１項に記載の生成装置。
【請求項７】
さらに、通信のエラーレートを基に一つの誤り訂正符号が保護する最大データパケット数を決定する最大データパケット数決定部を有し、
前記第２の決定部は、一つの誤り訂正符号が保護するデータパケット数が前記最大データパケット数以内となるように前記複数のインタリーブ長の組み合わせを決定することを特徴とする請求項１〜６のいずれか１項に記載の生成装置。
【請求項８】
前記複数のインタリーブ長のうちの最小のインタリーブ長は、初期値として設定されることを特徴とする請求項１〜７のいずれか１項に記載の生成装置。
【請求項９】
前記複数のインタリーブ長のうちの最小のインタリーブ長は、バーストエラー長であることを特徴とする請求項１〜７のいずれか１項に記載の生成装置。
【請求項１０】
前記複数のインタリーブ長のうちの最小のインタリーブ長は、前記ブロック長に応じた値であることを特徴とする請求項４又は５記載の生成装置。
【請求項１１】
データパケットに対する誤り訂正符号を生成する生成方法であって、
第１の決定部により、前記誤り訂正符号の冗長度の範囲を決定する第１の決定ステップと、
第２の決定部により、前記誤り訂正符号の生成対象の複数のデータパケットの間隔を示す複数のインタリーブ長の組み合わせを決定する第２の決定ステップと、
生成部により、前記第２の決定ステップで決定された複数のインタリーブ長の組み合わせで、前記データパケットに対して誤り訂正符号を生成する生成ステップとを有し、
前記第２の決定ステップでは、前記複数のインタリーブ長の組み合わせについて前記データパケットに対する誤り訂正符号の冗長度の合計が、前記第１の決定ステップで決定された冗長度の範囲内となるように、前記複数のインタリーブ長の組み合わせを決定することを特徴とする生成方法。
【請求項１２】
データパケットに対する誤り訂正符号を生成するためのプログラムであって、
前記誤り訂正符号の冗長度の範囲を決定する第１の決定ステップと、
前記誤り訂正符号の生成対象の複数のデータパケットの間隔を示す複数のインタリーブ長の組み合わせを決定する第２の決定ステップと、
前記第２の決定ステップで決定された複数のインタリーブ長の組み合わせで、前記データパケットに対して誤り訂正符号を生成する生成ステップとをコンピュータに実行させるためのプログラムであって、
前記第２の決定ステップでは、前記複数のインタリーブ長の組み合わせについて前記データパケットに対する誤り訂正符号の冗長度の合計が、前記第１の決定ステップで決定された冗長度の範囲内となるように、前記複数のインタリーブ長の組み合わせを決定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法及びプログラムに関する。
【背景技術】
【０００２】
現在、インターネット等のＩＰ（Internet Protocol）ネットワークを用いたメディア伝送が普及している。特に、ＲＴＰ（A Transport Protocol for Real-Time Applications, RFC3550, IETF）が利用されてきている。ＲＴＰは、カメラ等で撮影した動画像や音声等のメディアデータをネットワーク経由でリアルタイムに送信するプロトコルである。ＲＴＰは、トランスポート層でＴＣＰ（Transmission Control Protocol）に比較して転送速度の速いＵＤＰ（User Datagram Protocol）を使用することを想定している。ＵＤＰは、転送速度は速いが、パケットロス対策や伝送時間保証が無いため、トランスポート層よりも上位層で通信エラー対応をする必要がある。特に、パケットロスが発生すると、伝送データが部分的に欠落し、メディア伝送においては、映像の乱れや、音声途切れといった品質の低下が懸念されるため、これを回復する制御が必要となる。
【０００３】
ＲＴＰにエラー回復能力を付与するものとして、ＲＴＰ−ＦＥＣ（An RTP Payload Format for Generic Forward Error Correction, RFC 5109, IETF）が知られている。ＲＴＰ−ＦＥＣは、前方誤り訂正（FEC: Forward Error Correction）技術を組み込んだものである。ＲＴＰ−ＦＥＣでは、映像や音声といった保護対象データパケットに対して誤り訂正符号による冗長データを生成し、パケット化した誤り訂正符号パケットとしてデータパケットと共に受信装置へ送信する。
【０００４】
誤り訂正符号の生成方式の一つとして、排他的論理和（ＸＯＲ）によるパリティ方式がある。パリティ方式による誤り訂正符号パケットは、生成による計算処理コストは低いが、複数の保護対象データパケットにエラーが発生してしまうと回復できない。そのため、保護対象データパケットのエラー耐性を高めるために、一つの保護対象データパケットを複数の誤り訂正符号パケットで保護する方法がある（例えば、特許文献１参照）。また、インターネットの様に複数パケットの連続したエラー、所謂バーストエラーが発生することのある環境での保護対象データパケットのエラー耐性を高めるために、保護対象データパケットを任意の間隔分空けて選択し、インタリーブする方法がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１６９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、一つの保護対象データパケットを複数の誤り訂正符号パケットで保護すると、誤り訂正符号パケット数が増え、送信データ量が増加するため、通信帯域を圧迫し、エラーレートが上昇してしまう可能性がある。また、保護対象データパケットを任意の間隔分空けてインタリーブすると、誤り訂正符号パケットを生成するために必要となる保護対象データパケットブロックのサイズが大きくなり、遅延が発生してしまう。
【０００７】
本発明の目的は、通信帯域を逼迫させず、且つリアルタイム性を維持した状態での誤り訂正符号を生成することができる生成装置、生成方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明の生成装置は、データパケットに対する誤り訂正符号を生成する生成装置であって、前記誤り訂正符号の冗長度の範囲を決定する第１の決定部と、前記誤り訂正符号の生成対象の複数のデータパケットの間隔を示す複数のインタリーブ長の組み合わせを決定する第２の決定部と、前記第２の決定部により決定された複数のインタリーブ長の組み合わせで、前記データパケットに対して誤り訂正符号を生成する生成部とを有し、前記第２の決定部は、前記複数のインタリーブ長の組み合わせについて前記データパケットに対する誤り訂正符号の冗長度の合計が、前記第１の決定部が決定した冗長度の範囲内となるように、前記複数のインタリーブ長の組み合わせを決定することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、通信帯域を逼迫させず、且つリアルタイム性を維持した状態での誤り訂正符号を生成することができる。
【図面の簡単な説明】
【００１０】
【図１】ハードウェアの構成例を示すブロック図である。
【図２】モジュールの構成例を示すブロック図である。
【図３】インタリーブ長の組み合わせを決定するフローチャートである。
【図４】誤り訂正符号構成と冗長度の対応を示す図である。
【図５】誤り訂正符号の冗長度組み合わせを決定するフローチャートである。
【図６】誤り訂正符号構成と冗長度の対応を示す図である。
【図７】最小インタリーブ長を決定するフローチャートである。
【図８】誤り訂正符号構成と冗長度の対応を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１２】
（第１の実施形態）
本実施形態では、通信システムは、送信装置及び受信装置を有する。送信装置は、カメラ等で撮像した映像・音声などのメディアデータパケット及びメディアデータを保護する誤り訂正符号パケットを生成し、受信装置に対して送信する。送信装置及び受信装置は、それぞれ単一のコンピュータ装置で実現してもよいし、必要に応じた複数のコンピュータ装置に各機能を分散して実現するようにしてもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにＬＡＮ（Local Area Network）等で接続されている。
【００１３】
図１は、本発明の第１の実施形態による送信装置（生成装置）のハードウェア構成の一例を示すブロック図である。ＣＰＵ（Central Processing Unit）１０１は、以下に述べる各部を統括的に制御する。ＲＯＭ（Read Only Memory）１０２は、ＣＰＵ１０１で実行される制御プログラム等を格納している。ＲＡＭ（Random Access Memory）１０３は、ＣＰＵ１０１の主メモリ及びワークエリア等として機能する。ネットワークインタフェース（Ｉ／Ｆ）１０４は、インターネット、公衆無線、又はＬＡＮと接続できるインタフェースである。データ入力部１０５は、カメラやメディアサーバからメディアデータを入力する。エンコーダ部１０６は、データ入力部１０５に入力されたメディアデータを特定の符号化方式、例えばＨ．２６５やＪＰＥＧ等に応じて変換する処理を行う。バス１０７は、各種データの転送経路である。
【００１４】
図２は、ＲＯＭ１０２に記憶されるプログラム２００のモジュール構成を示すブロック図である。ＣＰＵ１０１がプログラム２００の各モジュールを実行することのより、以下の処理が行われる。メディア入力モジュール２０１は、エンコーダ部１０６から特定の符号化方式によりエンコードされたメディアデータを受け取るためのプログラムである。
【００１５】
パケット化モジュール２０２は、メディア入力モジュール２０１から受け取ったメディアデータを通信プロトコルに応じてパケット化を行うプログラムである。また、パケット化モジュール２０２は、誤り訂正符号生成モジュール２０８から受け取った誤り訂正符号についても同様に通信プロトコルに応じてパケット化を行う。リアルタイム性の要求が高い通信システムにおいては、一般的にＲＴＰ／ＵＤＰが利用されるが、これ以外の通信プロトコルでもよいし、独自プロトコルでもよい。また、パリティ方式の誤り訂正符号パケットのパケット化方法は、例えば、前述したＲＴＰ−ＦＥＣやPro-MPEG FEC（Pro-MPEG Code of Practice #3 release 2, Pro-MPEG Forum）等がある。これらの既存プロトコルを利用してもよいし、独自ヘッダを定義してもよい。但し、RFC 5109で定義されるＲＴＰ−ＦＥＣにおいては、後述するブロック長が４８を超える場合は利用することができない。
【００１６】
パケット送信モジュール２０３は、パケット化モジュール２０２から受け取ったパケットをネットワークＩ／Ｆ１０４を介し、所定の通信プロトコルにより受信装置に送信するプログラムである。パケット受信モジュール２０４は、受信装置からネットワークＩ／Ｆ１０４を介してパケットを受信するプログラムである。ここで、受信するパケットは、通信状況を把握するためのレポートパケットや受信装置でのバッファリング時間を通知されるパケット等である。ここで挙げた全てのパケットを受信しなくてもよいし、これ以外のパケットを受信してもよい。
【００１７】
通信状況把握モジュール２０５は、パケット受信モジュール２０４から受け取った受信装置からのレポートパケットや受信装置でのバッファリング時間通知パケット等から通信状況を把握するプログラムである。例えば、通信状況把握モジュール２０５は、レポートパケットから送信装置と受信装置間でのパケット往復時間（RTT: Round Trip Time）やエラーレートを算出し、それらの結果から利用可能通信帯域を測定する。通信帯域の測定方法は、例えば、ＴＦＲＣ（TCP Friendly Rate Control: Protocol Specification, RFC 5348, IETF）があるが、これ以外の方法でもよい。
【００１８】
許容遅延時間算出モジュール２０６は、通信状況把握モジュール２０５から受け取った送信装置と受信装置間の遅延時間情報や受信装置でのバッファリング時間等から許容遅延時間を算出するプログラムである。算出方法は、例えば、通信システムに要求されるリアルタイム性に応じた時間からパケット往復時間／２と受信装置でのバッファリング時間を差し引いた時間を送信装置側での許容遅延時間とする方法が挙げられるが、これ以外の方法でもよい。ジッタや受信装置側でのデコード時間等を考慮してもよい。許容遅延時間の出力値としては、時間ではなく、例えば映像のフレーム数やＭＰＥＧ方式におけるＧＯＰ（Group Of Pictures）数等でもよい。
【００１９】
誤り訂正符号設定モジュール２０７は、通信状況把握モジュール２０５から受け取った通信状況や許容遅延時間算出モジュール２０６から受け取った許容遅延時間から、誤り訂正符号生成のパラメータ設定を決定するプログラムである。具体的な設定方法については後述する。
【００２０】
誤り訂正符号生成モジュール２０８は、パケット化モジュール２０２から受け取ったメディアデータパケットに対して、誤り訂正符号設定モジュール２０７にて設定されたパラメータに応じて誤り訂正符号を生成するプログラムである。一つの誤り訂正符号は、二つ以上のメディアデータに対して排他的論理和（ＸＯＲ）演算処理することにより生成する。誤り訂正符号生成モジュール２０８は、生成した誤り訂正符号をパケット化モジュール２０２に出力する。
【００２１】
図３は、ＣＰＵ１０１が誤り訂正符号設定モジュール２０７を実行することにより誤り訂正符号生成のパラメータ設定を決定する方法の一例を示すフローチャートである。ステップＳ３０１では、誤り訂正符号設定モジュール２０７は、通信状況把握モジュール２０５からエラーレートやパケット往復時間を取得する。次に、ステップＳ３０２では、誤り訂正符号設定モジュール２０７は、許容遅延時間算出モジュール２０６から許容遅延時間、又は許容遅延フレーム数等を取得する。
【００２２】
次に、ステップＳ３０３では、誤り訂正符号設定モジュール（第３の決定部）２０７は、誤り訂正符号を生成する際に選択可能なデータパケットの数を示すブロック長を決定する。具体的には、誤り訂正符号設定モジュール２０７は、ステップＳ３０２にて取得した許容遅延時間、又は許容遅延フレーム数等を基にブロック長を決定する。例えば、許容遅延時間が１００ｍｓｅｃ、映像のフレームレートが３０ｆｐｓであれば、３フレーム分の連続したデータパケット群の範囲がブロック長となる。ブロック長の算出方法は、これ以外の方法でもよい。例えば、誤り訂正符号設定モジュール２０７は、受信装置においてパケットバッファリングに利用可能メモリ量を把握し、利用可能メモリ量に応じてブロック長を算出してもよい。
【００２３】
次に、ステップＳ３０４では、誤り訂正符号設定モジュール（最大データパケット数決定部）２０７は、通信のエラーレートを基に、一つの誤り訂正符号が保護する最大データパケット数を決定（算出）する。保護する最大データパケット数の算出は、必ずしも必要なものではなく、算出しなくてもよい。算出する方法として、保護対象データパケット数に対する誤り訂正符号パケットの割合がステップＳ３０１にて取得したエラーレートよりも下回らないように算出する方法がある。例えば、エラーレートが１％であれば、保護する最大データパケット数は１００を上回らないようにする。
【００２４】
次に、ステップＳ３０５では、誤り訂正符号設定モジュール２０７は、誤り訂正符号パケットが利用できる合計冗長度を算出する。例えば、通信状況把握モジュール２０５が前述したＴＦＲＣにより通信帯域を測定し、誤り訂正符号設定モジュール２０７がその測定結果をステップＳ３０１で取得する。そして、誤り訂正符号設定モジュール２０７は、ステップＳ３０５にて、ステップＳ３０１から取得した通信帯域からデータパケットが利用する通信帯域分を差し引いた帯域を誤り訂正符号パケットが利用できる利用可能通信帯域として算出する。そして、誤り訂正符号設定モジュール（第１の決定部）２０７は、算出した利用可能通信帯域を基に、誤り訂正符号の利用可能冗長度（冗長度の範囲）を決定する。例えば、誤り訂正符号パケットが利用できる利用可能通信帯域が１０Ｍｂｐｓで、データパケットが利用する通信帯域が４０Ｍｂｐｓであった場合、利用可能冗長度は１０（Ｍｂｐｓ）／４０（Ｍｂｐｓ）の２５％となる。
【００２５】
次に、ステップＳ３０６では、誤り訂正符号設定モジュール２０７は、異なるインタリーブ長での誤り訂正符号冗長度を複数パターン算出する。図４に、誤り訂正符号生成におけるブロック長が１００パケットであった場合のインタリーブ長と誤り訂正符号冗長度の対応表を示す。１列目は、インタリーブ長を示しており、誤り訂正符号を生成する際に、保護するデータパケットを何個間隔で選択するかを意味する。２列目は、誤り訂正符号の構成を示しており、数字で表現されているのが保護対象のデータパケットのシーケンス番号であり、「Ｆ」はそれら保護対象のデータパケット群で生成される誤り訂正符号を示す。３列目は、冗長度を示しており、保護対象データパケットのブロックに対する誤り訂正符号の割合を意味する。インタリーブ長を大きくすると、一つの誤り訂正符号が保護するデータパケット数が減り、全体の誤り訂正符号パケット数が増える。誤り訂正符号設定モジュール２０７は、ステップＳ３０４にて保護できる最大データパケット数を算出している場合、保護データパケット数がこれを上回るインタリーブ長を選択することができない。例えば、誤り訂正符号設定モジュール２０７は、最大データパケット数が３０であった場合、インタリーブ長の「２」（保護データパケット数５０）及びインタリーブ長の「３」（保護データパケット数３４又は３３）を選択することができない。すなわち、誤り訂正符号設定モジュール２０７は、一つの誤り訂正符号が保護するデータパケット数が最大データパケット数以内となるように複数のインタリーブ長の組み合わせを決定する。また、インタリーブ長は、素数の値、又は互いに１以外に共通の約数を持たない値である。図４の例では、インタリーブ長は、全て素数で算出しているが、１以外に共通の約数を持たなければよいので、例えば、４は素数ではないが、インタリーブ長の「３」、「４」、「５」のような組み合わせは可能である。本実施形態では、説明の簡素化のため、インタリーブ長は、全て素数となるような組み合わせで説明している。これにより、複数の誤り訂正符号が保護するデータパケットの中における共通データパケットの組み合わせ数を可能な限り少なくする。共通データパケットの組み合わせとは、例えば、図４の例において、インタリーブ長の「２」と「３」の誤り訂正符号構成の中で、データパケットの「１」と「７」の組み合わせである。これは、パリティ方式の誤り訂正符号においては、データパケットの「１」と「７」にエラーが発生してしまうと、インタリーブ長の「２」及び「３」の誤り訂正符号のどちらでも回復できない。共通データパケットの組み合わせを無くす方法もあるが、これについては第２の実施形態にて別途説明する。
【００２６】
次に、ステップＳ３０７では、誤り訂正符号設定モジュール２０７は、合計冗長度を保持しておく変数に、ステップＳ３０６で算出した複数のインタリーブ長の中で最低冗長度となる冗長度を初期値として設定する。図４の例では、インタリーブ長の「２」の冗長度の「２％」が設定される。
【００２７】
次に、ステップＳ３０８では、誤り訂正符号設定モジュール２０７は、現在の合計冗長度とステップＳ３０５にて算出した誤り訂正符号パケットが利用可能冗長度とを比較する。現在の合計冗長度が利用可能冗長度を超えていない場合には、ステップＳ３０９に移行する。現在の合計冗長度が利用可能冗長度を超えている場合には、ステップＳ３１０に移行する。
【００２８】
ステップＳ３０９では、誤り訂正符号設定モジュール２０７は、合計冗長度を保持している変数に、ステップＳ３０６で算出した複数のインタリーブ長において選択していないインタリーブ長の中で最低冗長度となる冗長度を加算する。図４の例では、インタリーブ長の「３」の冗長度の「３％」が加算され、初期値の「２％」と合わせて合計冗長度は「５％」となる。次に、加算する際は、インタリーブ長の「５」の冗長度の「５％」が加算される。その後、ステップＳ３０８の処理に戻る。
【００２９】
ステップＳ３１０では、誤り訂正符号設定モジュール２０７は、冗長度を加算した回数を組み合わせ数ｘとして設定する。例えば、ステップＳ３０５にて算出した誤り訂正符号パケットの利用可能冗長度が２５％であった場合、合計冗長度が利用可能冗長度を超えるパターンは、２（％）＋３（％）＋５（％）＋７（％）＋１１（％）＝２８％となる。この場合、冗長度を加算した回数は４回になるため、組み合わせ数ｘは４となる。すなわち、誤り訂正符号設定モジュール２０７は、複数のインタリーブ長の組み合わせについてデータパケットに対する誤り訂正符号の冗長度の合計が、利用可能冗長度の範囲内であって、最大のインタリーブ長の組み合わせ数ｘを決定する。
【００３０】
次に、ステップＳ３１１では、誤り訂正符号設定モジュール２０７は、ステップＳ３１０で決定した組み合わせ数ｘに基づいて、複数のインタリーブ長の組み合わせを決定する。決定する方法の一例として、図５にインタリーブ長組み合わせ決定方法のフローチャートを示す。
【００３１】
ステップＳ５０１では、誤り訂正符号設定モジュール２０７は、組み合わせ数ｘを要素数とする冗長度組み合わせ配列Ｒ［１・・・ｘ］に最小の冗長度から順番に格納する。例えば、ステップＳ３０５にて算出した誤り訂正符号パケットの利用可能冗長度が２５％であり、インタリーブ長パターンが図４の場合、ｘ＝４、Ｒ［１］＝２（％）、Ｒ［２］＝３（％）、Ｒ［３］＝５（％）、Ｒ［４］＝７（％）が格納される。初期状態での合計冗長度は１７％となる。
【００３２】
次に、ステップＳ５０２では、誤り訂正符号設定モジュール２０７は、冗長度を調整するインデックス番号ｉに組み合わせ数ｘ（＝４）を初期値として設定する。
【００３３】
次に、ステップＳ５０３では、誤り訂正符号設定モジュール２０７は、Ｒ［ｉ］の冗長度を未選択のインタリーブ長の冗長度の中から次に大きい冗長度に変更する。上記の例では、Ｒ［４］＝１１（％）に変更される。
【００３４】
次に、ステップＳ５０４では、誤り訂正符号設定モジュール２０７は、ステップＳ５０３で変更された状態の合計冗長度と利用可能冗長度を比較する。合計冗長度が利用可能冗長度未満である場合にはステップＳ５０３に戻り、合計冗長度が利用可能冗長度以上である場合にはステップＳ５０５に移行する。上記の例では、合計冗長度がＲ［１］（＝２％）＋Ｒ［２］（＝３％）＋Ｒ［３］（＝５％）＋Ｒ［４］（＝１１％）＝２１％となり、利用可能冗長度（＝２５％）未満であるため、ステップＳ５０３に戻る。次に大きい冗長度は１３％なので、Ｒ［４］＝１３（％）に変更され、合計冗長度は２３％となる。この場合、合計冗長度が利用可能冗長度（＝２５％）未満なので、再度ステップＳ５０３に戻り、次に大きい冗長度は１７％なので、Ｒ［４］＝１７（％）に変更され、合計冗長度は２７％となる。この場合、合計冗長度が利用可能冗長度（＝２５％）以上であるため、ステップＳ５０５に進む。
【００３５】
ステップＳ５０５では、誤り訂正符号設定モジュール２０７は、Ｒ［ｉ］の冗長度を一つ変更前に戻す。ここでは、Ｒ［４］が１７％から１３％に戻される。
【００３６】
次に、ステップＳ５０６では、誤り訂正符号設定モジュール２０７は、冗長度調整インデックス番号ｉが１よりも大きいかどうかを比較する。冗長度調整インデックス番号ｉが１よりも大きい場合は、ステップＳ５０７に移行する。冗長度調整インデックス番号ｉが１以下の場合、誤り訂正符号設定モジュール２０７は、現在の冗長度組み合わせ配列Ｒ［１・・・ｘ］を最終的に決定された冗長度、またそれに対応するインタリーブ長の組み合わせとして決定する。
【００３７】
ステップＳ５０７では、誤り訂正符号設定モジュール２０７は、冗長度調整インデックス番号ｉをデクリメントし、ステップＳ５０３に戻る。
【００３８】
上記の例では、続いてＲ［３］＝７（％）に変更され、合計冗長度は２５％となる。この後の冗長度組み合わせ配列Ｒ［１・・・ｘ］は変更が無いため説明は省略する。最終的な冗長度組み合わせ配列として、Ｒ［１］＝２（％）、Ｒ［２］＝３（％）、Ｒ［３］＝７（％）、Ｒ［４］＝１３（％）として決定される。
【００３９】
図５で説明したインタリーブ長組み合わせ決定方法は一例であり、これに限らない。誤り訂正符号パケットの利用可能冗長度が２５％である。図４のインタリーブ長パターンの場合、合計冗長度が２５％となる組み合わせは、Ｒ［１］＝２（％）、Ｒ［２］＝５（％）、Ｒ［３］＝７（％）、Ｒ［４］＝１１（％）となる組み合わせもあるが、こちらを選択するアルゴリズムでも構わない。
【００４０】
以上のように、図３のステップＳ３１１では、誤り訂正符号設定モジュール（第２の決定部）２０７は、誤り訂正符号の生成対象の複数のデータパケットの間隔を示す複数のインタリーブ長の組み合わせを決定する。誤り訂正符号設定モジュール（第２の決定部）２０７は、複数のインタリーブ長の組み合わせについてデータパケットに対する誤り訂正符号の冗長度の合計が、利用可能冗長度の範囲内で最大となるように、複数のインタリーブ長の組み合わせを決定する。誤り訂正符号生成モジュール（生成部）２０８は、誤り訂正符号設定モジュール（第２の決定部）２０７により決定された複数のインタリーブ長の組み合わせで、データパケットに対して誤り訂正符号を生成する。
【００４１】
（第２の実施形態）
第１の実施形態では、インタリーブ長を素数の値、又は互いに１以外に共通の約数を持たない値にすることで、複数の誤り訂正符号が保護するデータパケットの中における共通データパケットの組み合わせ数を可能な限り少なくする方法を説明した。本発明の第２の実施形態では、全ての誤り訂正符号において、保護するデータパケットの中の共通データパケットの組み合わせを無くす方法について説明する。なお、本実施形態は、第１の実施形態におけるハードウェア構成やモジュール構成については共通であるため、説明を省略する。
【００４２】
本実施形態では、第１の実施形態の条件である、インタリーブ長を素数の値、又は互いに１以外に共通の約数を持たない値にすることに加え、最小のインタリーブ長を、そのインタリーブ長の二乗値がブロック長以上になるようにする。これにより、複数の誤り訂正符号パケットが保護するデータパケット群の中における共通データパケットの組み合わせを無くすことができる。
【００４３】
図６は、ブロック長が１００パケットの場合に、最小のインタリーブ長を、そのインタリーブ長の二乗値がブロック長以上になるようにした際のインタリーブ長と誤り訂正符号冗長度の対応を示す。ブロック長が１００パケットの場合の最小のインタリーブ長は、１００の１／２乗の１０となる。１０以降は、１以外に共通の約数を含まないインタリーブ長で冗長度を算出する。例えば、インタリーブ長は、１０、１１、１３、１７、１９、２１等である。
【００４４】
最小のインタリーブ長は、予め設定した初期値を用いてもよいし、通信状況把握モジュール２０５がバーストエラー長を記録しておき、誤り訂正符号設定モジュール２０７がバーストエラー長に応じて動的に最小のインタリーブ長を設定してもよい。一例として、これら全てを併用した場合の最小インタリーブ長決定方法のフローチャートを図７に示す。図７の処理は、図３におけるステップＳ３０６の冗長度算出処理の前処理として実施される。
【００４５】
ステップＳ７０１では、誤り訂正符号設定モジュール２０７は、最小インタリーブ長を保持する変数に予め設定した初期値を設定する。次に、ステップＳ７０２では、誤り訂正符号設定モジュール２０７は、通信状況把握モジュール２０５からバーストエラー長を取得する。バーストエラー長の記録は、記録を保持する期限を設けてもよい。例えば、最後に発生したバーストエラーから一定時間が経過したらその値をリセットしてもよいし、段階的に下げてもよい。
【００４６】
次に、ステップＳ７０３では、誤り訂正符号設定モジュール２０７は、最小インタリーブ長とステップＳ７０２で取得したバーストエラー長を比較する。最小インタリーブ長がバーストエラー長未満である場合にはステップＳ７０４に移行し、最小インタリーブ長がバーストエラー長以上である場合にはステップＳ７０５に移行する。
【００４７】
ステップＳ７０４では、誤り訂正符号設定モジュール２０７は、最小インタリーブ長をバーストエラー長に設定し、ステップＳ７０５に移行する。ステップＳ７０５では、誤り訂正符号設定モジュール２０７は、図３のステップＳ３０３にて算出したブロック長を取得する。
【００４８】
次に、ステップＳ７０６では、誤り訂正符号設定モジュール２０７は、最小インタリーブ長とステップＳ７０５で取得したブロック長の１／２乗値を比較する。最小インタリーブ長がブロック長の１／２乗値未満である場合にはステップＳ７０７に移行し、最小インタリーブ長がブロック長の１／２乗値以上である場合には、最小インタリーブ長を維持し、本処理を終了する。
【００４９】
ステップＳ７０７では、誤り訂正符号設定モジュール２０７は、最小インタリーブ長をブロック長の１／２乗値に設定し、本処理を終了する。
【００５０】
図６の例では、ブロック長が１００と小さいため、最小のインタリーブ長における最小冗長度が１０％と高いが、ブロック長が大きくなると、最小冗長度を低くすることができる。例えば、図８に、ブロック長が１０２４パケットの場合に、最小のインタリーブ長を、そのインタリーブ長の二乗値がブロック長以上になるようにした際のインタリーブ長と誤り訂正符号冗長度の対応を示す。ブロック長が１０２４パケットの場合の最小のインタリーブ長は、１０２４の１／２乗の３２となる。この最小インタリーブ長の冗長度は３．１２５％となり、ブロック長が１００の場合と比較して低い範囲で冗長度の設定が可能となる。第１及び第２の実施形態では、条件に応じてブロック長を制御してもよく、段階的に制御してもよい。例えば、リアルタイム性よりも映像品質を重視するシステム等において、ブロック長を制御、特に意図的に大きくすることで、限られた利用可能通信帯域の中で誤り訂正符号の冗長度を柔軟に制御できるようにしてもよい。また、最小のインタリーブ長における最小冗長度が誤り訂正符号に利用可能な通信帯域で送信できない場合に、ブロック長を大きくしてもよい。
【００５１】
以上、第１及び第２の実施形態を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体（記憶媒体）等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮像装置、ｗｅｂアプリケーション等）から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００５２】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、コンピュータ読取可能であり、実施形態において図に示したフローチャートに対応したプログラムである。
【００５３】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００５４】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【００５５】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【００５６】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続し、そこから本発明のコンピュータプログラムそのもの（又は圧縮され自動インストール機能を含むファイル）をハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００５７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることも可能である。すなわち該ユーザは、その鍵情報を使用することによって暗号化されたプログラムを実行し、コンピュータにインストールさせることができる。
【００５８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００５９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、実行されることによっても、前述した実施形態の機能が実現される。すなわち、該プログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行うことが可能である。
【００６０】
以上のように、上記実施形態は、誤り訂正符号パケットに利用できる通信帯域と受信装置側での許容遅延時間を考慮した範囲内で可能な限り保護対象データパケットのエラー耐性を高める構成で誤り訂正符号パケットを生成する。これにより、通信帯域を逼迫させず、且つリアルタイム性を維持した状態での誤り訂正符号を適用したメディア伝送を可能とする。
【００６１】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６２】
２０５  通信状況把握モジュール、２０６  許容遅延時間算出モジュール、２０７  誤り訂正符号設定モジュール、２０８  誤り訂正符号生成モジュール
【図１】
2016092640.tif 000003
【図２】
2016092640.tif 000004
【図３】
2016092640.tif 000005
【図４】
2016092640.tif 000006
【図５】
2016092640.tif 000007
【図６】
2016092640.tif 000008
【図７】
2016092640.tif 000009
【図８】
2016092640.tif 000010